dlinyj: (Default)
[personal profile] dlinyj
У меня скопилось достаточно большое количество законченных и не описанных проектов. Сил закончить их нашёл, а пороха написать полноценную объёмную статью уже найти не могу. Поэтому, чтобы материал окончательно не пропал, буду делать некоторые заметки на полях, под названием "Проекты в стол".

Когда я ковырялся с BIOS, мне хотелось найти подходящий пример, чтобы проиллюстрировать свою статью Разработка BIOS на языках высокого уровня. Надо было, чтобы это был BIOS, проект был разработан на GCC и т.п. В результате я нашёл прекрасный проект польского студента техникума maniekx86, необыкновенно талантливого парня. Проект был демки в виде небольшой операционной системы для дискетки "Portal ending "Still Alive" as operating system", проще говоря демка из игры Portal. Там были ошибки, проект изначально был как монолитный си-файл, и работал только на дискетках. В результате, взял этот проект, склонировал и переписал, так чтобы он работал в BIOS, при этом раскидал это всё по раздельным файлам. Как оказалось, maniekx86 не тестировал его на реальном железе, и мы ещё исправляли возникшие ошибки и проблемы вживую. Не всё было доведено до идеала, но лучшее - враг хорошего, проект работает и теперь в виде BIOS.

Результатом есть благодарность в README.md проекта: Special thanks to @dlinyj for helping and testing! и куча моих коммитов в истории этого прекрасного проекта. Ну, а для вас снял ещё в марте месяце два крутых демо, которые вы можете лицезреть сегодня.

1. Still Alive on 386 DX in BIOS ROM
Демка на старом железе, на 386 процессоре. Видно, что процессор не вытягивает копирование таких больших областей памяти и там требуется оптимизация, однако демка звучит и показывает. Внимание: может быть громкий звук.



2. Still Alive on Pentium 4 in BIOS ROM
Тут мощности процессора хватает, чтобы всё просто летало. Но в силу особенностей реализации железа инициализации BIOS, для корректной работы здесь пришлось прилично попотеть. Тезисно, пришлось дополнительно копировать код программы (не элегантно, но работает).





Подробно описать проделанную работу что-то не хватает пороха, её было реально очень много. Но, главный посыл мой в том, что не бойтесь вливаться в чужие проекты, это реально очень круто и прикольно.

Date: 2024-01-15 11:49 am (UTC)
From: [identity profile] zhbert.livejournal.com
> У меня скопилось достаточно большое количество законченных и не описанных проектов. Сил закончить их нашёл

Какая знакомая ситуация. Я уже лет 10 вынашиваю мысль доделать таки одну софтину, которую я запланировал еще году в 2010. Но руки все не доходя, то одно, то другое...

Date: 2024-01-16 12:29 am (UTC)
From: [identity profile] dixi.livejournal.com

А что за хитрая плата в слот воткнута первом ролике?

Date: 2024-01-16 06:34 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Ничего хитрого. Плата п ПЗУ ROM BIOS, откуда программа и стартует. Попозже ссылку найду, если нужно.

Date: 2024-01-16 03:14 pm (UTC)
From: [identity profile] dixi.livejournal.com

А, понял, логично.


Никогда просто не сталкивался с биосами на внешних платах.


Date: 2024-01-16 03:32 pm (UTC)
From: [identity profile] dlinyj.livejournal.com

>>Никогда просто не сталкивался с биосами на внешних платах.



Разве? А как же видеокарта, контроллер дисков, сетевая карта?




Вот, например сетевая карта с BIOS. Практически в каждой плате расширения PCI есть BIOS

Date: 2024-01-16 04:13 pm (UTC)
From: [identity profile] dixi.livejournal.com

Если быть точным, то я не видел платы биоса _без_ собственно какого-нибудь контроллера : )


А так да, lanboot на старых сетевых картах, мы как-то в общаге даже экспериментировали с загрузкой доса по сети.


(У нас в общаге миэт в 90-ъ была довольно крупная сеть на коаксиальном эзернете)


И еще как-то раз довелось вызывать особым образом биос RLE контроллера (не помню точно, что ли из досовского дебаггера?), чтобы переформатировать на низком уровне MFM-диск. В результате из 80-мб диска получился 120-мб, невероятная роскошь.



Позже на безымянной S3 Trio 64 V+ переписывали биос от Diamond, типа он лучше оптимизирован. И правда, по тестам какие-то небольшие прибавления были.

Date: 2024-01-16 04:19 pm (UTC)
From: [identity profile] dlinyj.livejournal.com

Прикольные развлечения. Я порой думаю шрифты переписать на видеокарте.


А так, БИОС платка достаточно примитивная, можно на коленке сделать. Вот моя вариация:





Это правда для DiskOnChip делалась, но вполне успешно и обычную EEPROM можно вставить, как на этом фото. Подробности https://habr.com/ru/companies/timeweb/articles/716662/

Date: 2024-01-16 11:43 pm (UTC)
From: [identity profile] dixi.livejournal.com

Класс.


А я все свое старое железо раздал, чет не было ни сил ни времени им заниматься.


В итоге не помню уже сколько времени живу на ноутбуках, единственный условный десктоп у меня был — NAS на атоме.

Date: 2024-01-17 11:40 pm (UTC)
From: [identity profile] arush-damage.livejournal.com

Прикольно.


Только непонятно что значит "Видно, что процессор не вытягивает копирование таких больших областей памяти и там требуется оптимизация".


Каких областей памяти?


Такого плана демки на 8088 работали без проблем ЕМНИП.

Date: 2024-01-18 08:13 am (UTC)
From: [identity profile] dlinyj.livejournal.com

Вопрос реализации. У maniekx86 идёт вывод текста в графическом режиме через прерывание видеокарты int 13h, при этом из стандартных наборов шрифтов. Когда мы дизассемблировали это место, оказалось что оно выполняется очень долго, там идёт поиск мест и копирование построчно каждого символа. Поэтому это очень долгая тема. Если заготовить графические фреймы заранее, то можно сделать чтобы это было почти мгновенно, особенно если сделать видимую-невидимую область.



Либо хотя бы функцию вывода шрифтов реализовать свою, а не из BIOS видеокарты. Мы потратили месяц ковыряний с этой темой, но потом подумали что...

January 2026

S M T W T F S
    123
456 78910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 22nd, 2026 06:31 am
Powered by Dreamwidth Studios