Добрый день! Смотрю загрузчик ms-dos 1.25. Никак не могу найти документацию по портам ввода/вывода первого контролера прерываний (20h-3Fh). Там используются порты 30h,32h,34h. Может быть кто-нибудь кинет ссылочку. Заранее спасибо.
GastiX Не знаю где что ты выкопрал. Но у Ральфа Брауне нет портов 30h,32h, 34h В первом контролере прерывания используется два порта 20h,21h хотя зарезервированно чуть больше.
Действительно нет. Я скачал документацию. Увидел "PORT 0020-003F - PIC 1 - PROGRAMMABLE INTERRUPT CONTROLLER (8259A)" и подумав, что там все это описано ниже написал ответ. Тема попрежднему открыта.
Как это нету? MS_DOS 1.25 ну вот например здесь: 000:7С14 mov al,0D0h out 30h,al или здесь: 000:7С3B out 32h,al mov al,0F1h out 34h,al Там все через порты... с 4ым - понятно ... а вот 30h,32h,34h - нет
GastiX Ну ты блин даешь это данные а не код. В начале 0000h:7с00h jmp +3c он прыгает на адресс 0000h:7c3eh cli Между этим диапозоном распологаются данные которые описывают формат дискеты. Причем у разных версий дос разные. Можешь посмотреть Александр Фролов, Григорий Фролов Библиотека системного программиста\Том 1. Операционная система MS-DOS (Книга 3) Глава 2. Логическая структура диска в DOS Дальше порты тоже неиспользуются только одни прерывания. Которые считывают корневой каталог проверяют наличие IO.SYS и MSDOS.SYS и загружают первый файл.
Та да, бинарник в иду скармливать не думая сейчас уже не круто( Если это бут сектор то он скорее всего себя есчё и перемещает по ближе к 0х500, т.е не тыкая носом дизассемблер в нужные места и в ручную не правя этот же бинарик в хексе ничего осмысленного не получишь.
Не знаю, что я скачал за версию(написано было MS-Dos 1.25), но там никто никуда не прыгает. Вот начало MBR: xor ax, ax mov ds, ax mov es, ax mov ss, ax mov sp, 200h cld mov di, 400h mov cx, 8 mov bl, 0Ch mov al, 0D0h out 30h, al P.S. Да, я имел ввиду MBR, а не boot record. Понятно, что в boot record прыжок через BIOS Parameter Block в самом начале.
GastiX В сети мне удалось найти две копию MS-DOS 1.25 от Corona Data System и от Zenith Data Systems. Первая запустилась вторая пока нет. Тестирую на Borch. MBR - он только в жестких дисках, пока не понял но жесткий он не видит. Откуда ты его выкопал? Что касается boot record, то он на флопи. То на они оказались разными, но никто порты ввод вывода не использует
Я запускал в эмуляторе SIMH. Все работает. http://www.schorn.ch/cpm/intro.php. Там же можно скачать и MS-Dos 125 для этого эмулятора. MBR вытаскивал Win-Hexом. Кстати, пробовал сегодня менять значения, которые пишутся по этим портам. Эффект каждый раз отличается. mov al, 0D0h - в оригинале out 30h,al 0 - при загрузке MS-DOS какой-то набор символов "7wN7" и висит. 50h - пишет сообщение HALT instruction, PCX:00407 (db 08Fh) A0h - пишет: WD179x[0]:[0x0024C] Error: Command 0x88 ignored because controller is BUSY. B0h - пишет: WD179x[0]:[0x00217] WRITE_RECS not implemented и полюс ко всему еще и тоже сообщение, что при A0h C0h, FFh - загрузка выполняется И еще одна интересная вешь: у этого кода нет в конце magic number. Меня терзают сомнения по поводу того загрузчик ли это вообще С другой стороны он грузится до IO.SYS MSDOS.SYS и COMMAND.COM Что это за фигня вообще такая?!
GastiX Вот теперь ясно что ты работаешь не с IBM PC, а с Altair 8800. Вот и ищи на него документацию.