dlinyj: (Default)
Наверное у многих читателей моего ЖЖ сложилось ложное представление, что я коллекционер старого железа, который только и делает что его ремонтирует и моет. Да, я занимаюсь этим эпизодически, стал писать об этом, потому что народ интересует текучка.

Однако, есть по настоящему интересные и зубодробительные штуки, например, как отлаживать код BIOS и реализовать свой "пошаговый" отладчик.


Суровая аппаратная отладка кода BIOS

К сожалению, я не разработчик материнской платы, у меня нет её схемотехники, а также отсутствует отладочные инструменты. У меня стояла задача запустить BIOS схожей архитектуры на этом железе (зачем и почему, пока рассказывать не буду). Без всяких отладок, прошивка вела себя странно, она и не зависала с ошибкой, но и не загружалась. И мне хотелось понять, на каком же этапе она отваливается.

Сама прошивка BIOS у меня была открыта в IDA Pro, задача была понять в каком же месте кода происходит отвал. Конечно, бесценно знать состояние регистров, месторасположение, реализовать пошаговую отладку, но мне пока не хотелось сильно влезать паяльником в плату и пока морально не готов сильно перепахивать код основного BIOS.

Решение пришло само собой: нужно узнать адрес, где же происходит всякое нехорошее. А адрес можно узнать с помощью логического анализатора, который будет установлен на микросхему BIOS, точно на ножки адреса. Read more... )
dlinyj: (Default)
Открытий чудных нам таит попытка заменит жёсткий диск на CF.

Имею в хозяйстве жменю таких вот карточек, от фотоаппарата и различных проектов. Уже ни фотика, ни проектов, а карточки кочуют вместе со мной.



Основной действующей флешкой для моих опытов была и есть 16 метровая тестовая карточка от фотика. Она прекрасно определяется в BIOS, с ней легко работать. Но вот с остальными какие-то приколы. Read more... )
dlinyj: (Default)
Поскольку множества ЖЖ и телеги не везде пересекаются, поэтому продублирую сюда.



Народ, вопросик. Имеется древняя прекрасная 386-я материнская плата. Состояние будто бы вчера из магазина принесли. Но вот беда, сдохла и вытекла батарейка BIOS. Заказал её, поменял на плате. В одной дырке (земляной), немного погрызло в самом отверстии, но вроде всё котачит и звонится. На плюсовом полюсе всё отлично. Напряжение идёт до диода. Дальше не измерял.

Но вот беда: BIOS не сохраняет свои значения и не идут часы. Что может быть не так, что мог упустить? Напряжение на батарее есть.

Пост скорее поговорить и выслушать умные советы.
dlinyj: (Default)
Догадываюсь, что немного уже надоел темой. Но специально для всех тех, кто принимает активное участие в этом проекте пишу данный пост. Остальным терпения и благодарю за понимание.

Это продолжение большой саги и являются третьей частью. Часть первая "Видеопамять тютю..." и часть вторая "Решение проблемы с видеокартой".


Коммандир Нортон в режиме VGA!


Говорю сразу спасибо всем участникам. Мне советовали попробовать поиграться с int 10h чтобы проверить все режимы. Но, на мой взгляд - это путь без понимания проблемы, и хотелось бы найти более элегантное решение. Поэтому я начал читать документацию на чипы видеокарты Cirrus Logic CL-GD610/620-C.



Когда в третьем часу третьей бессонной ночи поймал себя на том, что уже прикидываю архитектуру драйвера, понял что иду куда-то не туда. Начал думать, что хорошо было бы найти ПО, если уж не для моей видяшки, то хотя бы для аналогичной и попробовать работать с ними.Закрутило завертело )
dlinyj: (Default)
Решение проблемы с видеокартой оказалось нетривиальным. Многие были правы и неправы одновременно. Я даже купил себе охлаждающую жижу, чтобы поморозить микросхемы. Но всё оказалось куда интереснее. Сходу выражаю большую благодарность [livejournal.com profile] arush_damage за ссылку на документацию по этому адаптеру, она мне очень сильно помогла.
Начнём с того, что не смотря на то что текстовый режим глючит, если в автозагрузку поставить запуск графической игры, то она успешно работает(!), значит проблема точно не в ОЗУ.


Принц Персии работает в этом диком режиме.


Так... А если подключить внешний монитор к разъёму VGA? Представляете, о чудо, с внешним монитором, без изменения настроек и прочего-прочего, всё работает без каких либо артефактов.


Работа с внешним монитором.


Тут со всем стало непонятно, что же с карточкой не так и как заставить работать встроенный монитор в текстовом режиме? Пошёл путём хождения по детским грабелькам.Read more... )
dlinyj: (Default)

С детства любимый Norton Commander когда побилась видеопамять...


Мне тут досталась одна занятная железка на базе 386 компа со встроенным чёрно-белым монитором. На тот момент просто космические технологии. Главной особенностью её является специфическая видеокарта, без документации и схем, к которой напрямую шлейфом подключается LCD-экран.
И в процессе оживления выяснилась одна неприятная особенность, что есть какие-то проблемы с текстовым выводом, но они странные.

Главный прикол заключается в том, что в меню обычного BIOS всё корректно работает и отображается, более того, если загрузится в мою демку Stillalive-os, о которой писал ранее, то тоже всё работает. Но стоит выйти из главного BIOS и начать загрузку, тут же видяха превращается в тыкву. Работает на разных материнских платах.Read more... )

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

Когда я ковырялся с 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, для корректной работы здесь пришлось прилично попотеть. Тезисно, пришлось дополнительно копировать код программы (не элегантно, но работает).





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



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

Разработка BIOS на языках высокого уровня.

Буду рад вашим комментариям по теме.
dlinyj: (Default)
Я пообещал, что буду делать заметки на полях по этому проекту.

При попытке запустить ROM BASIC на 386 плате, я понял что сам ROM успешно подхватился, и куда-то случился переход, но всё остальное почему-то не работало.
При этом в qemu с SeaBIOS всё работало отлично. Было понятно, что проблема в инициализации BIOS, передача управлению кода и т.п. Идей, как отладить это на аппаратной платформе у меня не было. Даже подключая логический анализатор, я всё равно не мог добиться выполнения по шагам.

Стало понятно, что надо брать родной BIOS материнской платы. Изначально планировал просто считать биос программатором. Благо, это обычная ПЗУ в DIP.


Материнская плата


Но, потом подумал, что может найду сразу готовый бинарник. И решил погуглить по материнке, и да, он таки есть. Вот что удалось найти по этой мамке. У меня установлен BIOS AMI, его и буду пробовать.Попытки завести BIOS )
dlinyj: (Default)
Тот уникальный случай, когда я пишу пост в ЖЖ сильно позже, чем вышел пост на хабре. В телеге вышел вовремя. Прошу понять, простить и полюбить, в командировке, было просто не до того. Исправляюсь, пишу с сапсановского вайфая.



Хотели ли вы когда-нибудь написать свой BIOS? А BIOS вместе со встроенным BASIC? А вообще представляете как работает BIOS и как писать свои модули расширения? Уже давно у людей витает в воздухе идея сделать свой ROM BASIC и поиграться с ним, но вот прям рабочих и живых решений, по крайне мере в рунете я не встречал. В чатике давно муссируется тема, как это сделать. И сложнее всего было не проболтаться, что я знаю как это делать и уже есть готовое решение.
И вот, настал счастливый миг, когда могу явить это решение широкой публике. Подробности в моей статье:



Буду рад вашим комментариям, лайкам, дополнениям.

January 2026

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

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

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