Есть достаточно интересная и безобидная задача. Реверснуть самописный BIOS древнего советского XT совместимого компа и описать. Есть дамп. Жду предложения о сроках и желаемом вознаграждении. Размер образа 8К P.S. Все кто будет говорить целесообразности этого дела идут в лес. Лично мне это важно. P.S.S Просто прогнать идой- это не работа. мне важно именно описание что это за функции и что и как они делают.
Это писал один человек в Украине. Я его домашний адрес нашел ( был я у него дома, но мне тогда было 15 лет), но вопрос в том, что я там уже не живу, да и прошло 21 год. Я попросил народ сходить узнать живет ли он там, но шансов, если честно, мало.
Описывать все-все функции подряд - скучно и неинтересно. Если же нужно что-то конкретное найти и извлечь, можно взяться.
8k дамп - как то мелковато. Может это не bios", вы уверены ? Во первых какая архитектура, XT" неочём не говорит. Дизасмит значит это ида, но вам нужны коменты по коду, тогда почему вы не привели тот самый дизасм, не показали выполненную работу. Конкретно инфы никакой нет. Как то это всё сомнительно, почему не в комерсе тема ? > Есть достаточно интересная и безобидная задача. Врядле интересная, учитывая что архитектура мертва и забыта. То что вы упомянули безобидная" наводит на некоторые мысли. Получается что это нужно вам не для академических целей. В любом случае новое железо и софт стоит дешевле, чем ресерч этих реликтов.
Black Fregat, Хм точно, а я и не заметил В ленте нет особых выделений по разделам(я даже не замечаю расположение).
Уверен. более того родной биос занимал 2 ППЗУ. Этот занимает одну К573РФ6А. Работа интересна для меня и я готов заплатить за разбор конкретных функций ( в идеале всех), например как обрабатывается IRQ2. безобидная - потому что не связана с ботнентами, взломами бота0ми и хаками P.S. Дамп прилагаю
airman, Приложите полученный стандартными инструментами дизасм, может на досуге будет время покопаться.
airman, Смотрите, ваш дамп открытый идой. Это попавший под курсор кусок. Вы ведь понимаете что анализ работы этого с железом займёт кучу времени ? Это не алгоритмы, а работа с I/O. Хотя в общем можно покапаться и для начала структурировать, например как в этом примере можно в целом выделить работу с таймером по номерам портов, таким образом в общих чертах выделить части кода. Но это займёт много времени.
Именно за работу я готов заплатить. вопрос в стоимости работы. Понятно, что это не 50 баксов. Еще раз повторяю, для меня лично - это важно. Считайте это бзиком, и тд и тп, но я готов заплатить разумные деньги тому кто это сделает. P.S>Например веделить блок который отвечает за IRQ2
Тема пока актуальна. Немного упростим. Нужно вычленить код работы с прерыванием 13h. И выяснить если код поиска дополнительных BIOS
airman, Код (Text): seg000:06F8 loc_6F8: ; CODE XREF: seg000:06C3j seg000:06F8 ; seg000:06CAj seg000:06F8 mov dl, 80h ; 'À' seg000:06FA seg000:06FA loc_6FA: ; CODE XREF: seg000:06B4j seg000:06FA ; seg000:0716j ... seg000:06FA mov cx, 3 seg000:06FD seg000:06FD loc_6FD: ; CODE XREF: seg000:0712j seg000:06FD push cx seg000:06FE mov ah, dh seg000:0700 int 13h ; DISK - seg000:0702 jb short loc_714 seg000:0704 mov bx, 7C00h seg000:0707 mov cx, 1 seg000:070A mov ax, 201h seg000:070D int 13h ; DISK - READ SECTORS INTO MEMORY seg000:070D ; AL = number of sectors to read, CH = track, CL = sector seg000:070D ; DH = head, DL = drive, ES:BX -> buffer to fill seg000:070D ; Return: CF set on error, AH = status, AL = number of sectors read seg000:070F pop cx seg000:0710 jnb short loc_733 seg000:0712 loop loc_6FD В вашем дампе только две сигнатуры i13, это один цикл. В случае успешного чтения: Код (Text): seg000:0733 loc_733: ; CODE XREF: seg000:0710j seg000:0733 cmp word ptr es:7DFEh, 0AA55h ; EBR signature. seg000:073A jnz short loc_714 seg000:073C jmp far ptr 0:7C00h ; wiki: The (legacy) BIOS checks bootable devices for a boot signature, a so called magic number. The boot signature is in a boot sector (sector number 0) and it contains the byte sequence 0x55, 0xAA at byte offsets 510 and 511 respectively. When the BIOS finds such a boot sector, it is loaded into memory at 0x0000:0x7c00 (segment 0, address 0x7c00). (However, some BIOS' load to 0x7c0:0x0000 (segment 0x07c0, offset 0), which resolves to the same physical address, but can be surprising. A good practice is to enforce CS:IP at the very start of your boot sector.) Комент из вики найденной гуглом по константе. Если сигнатура найдена, вызывается некий интерпретатор басик. Иначе проверяются какие то маркеры и выполняется либо новая итерация в том цикле, либо вызывается басик. Больше ничего связанного с i13 нет.
Какая прелесть. Ещё актуально !?!??! Хочу и умею !!! Indy_, по дампу BIOS всё понятно. И архитектура и пр. и ТС нужно найти как работает с аппаратурой int 13h (как минимум), а не где она вызывается. Это же ROM BIOS !!! А вызывается int 13h в ROM BIOS только для выполнения начальной загрузки с дискеты. Это как раз первый приведённый вами участок кода, только он в другом сегменте и с другим смещением на самом деле !!! В ROM BIOS есть место с инициализацией (заполнением данных в таблице прерываний). Оттуда берутся ссылки на процедуры прерываний реализованных в самом ROM BIOS .