|
Описание мониторов м3.5 - м3.6 на Орион-128
- 2кБт
Описание различных мониторов для Ориона вместо
штатного (авторского V2.0 объемом 2к)
Внимание не забываем про:
Стандарты
ПО, адресов и портов
Монитор прошивается в 2716 или к573рф2 (5)
Прошивка
монитор 3.5
Прошивка
монитор 3.6
Версии Монитора v3.5 RK (M35zrkh), v3.5 MS7007 (M35zmsh), доработаны
для первичной загрузки не с
FDD (дисковода),
а с HDD (жесткого
диска или CompactFlash). Поддерживается схема подключения IDE к
параллельному порту 8255 (580ВВ55), используется штатный порт F500, что,
понятно, исключает работу с ORDOS. Казалось бы и не жалко, но если
кому-то нужно грузиться с порта F600 под
ORDOS -
используйте утилиту HddF600$.ord (ее можно прошить в
ROM-DISK), которая
использует загрузчик, полностью аналогичный Мониторам
M35ZRKH.BIN и
M35ZMSD.BIN.
Код этих версий Монитора содержится в файлах M35ZRKH.BIN и M35ZMSD.BIN
соответственно. В этих версиях Монитора по сбросу/включению питания
начинается загрузка с Мастер-IDE
устройства: Монитор прочитывает первый 512-байтный сектор HDD в ОЗУ
первой (считая с нуля) страницы на адрес 0, проверяет наличие кодов
AA55h (MBR flag) и C3h (JMP) по адресам (от начала бутсектора) 1FEh, 0h
соответственно, если все ОК - передает управление по адресу 1:0000h
(если коды не совпадают, прерывает загрузку с кодом ошибки 00C3).
В версиях Монитора v3.5 RK (M35zrkh), v3.5 MS7007 (M35zmsh) существует
дополнительная точка входа с адресом 0F834h - это подпрограмма чтения
512-байтного сектора с HDD (Master или Slave IDE).
Входные параметры п\п чтения 512-байтного сектора: в регистре HL
передается адрес ПОСЛЕДНЕГО (!) байта структуры { int16 BufferAddress;
long32 LBA_address; }
в регистре E передается код операции (ide_cmd_read=20h, ide_cmd_id=0ECh,
ide_cmd_write=30h) соответственно для чтения сектора, получения
информации о
приводе (identify) или только позиционирования с проверкой готовности (E=ide_cmd_write)
для последующей записи сектора уже не монитором, а программой
пользователя.
в регистре D передается маркер IDE устройства: 0=Master, 10h=Slave, SDC=любое
значение Числа типов int16 (16 бит), long32 (32 бит) в ОЗУ хранятся в
нотации
little-endian (байты размещаются в памяти от младшего к старшему).
Подпрограмма считывает сектор, с номером указанным в LBA_address
(CHS-нотация не поддерживается) и помещает его по адресу, указанному в
BufferAddress в текущей странице ОЗУ (состояние портов 0F9h, 0FBh не
изменяется и не учитывается).
Выход п\п чтения 512-байтного сектора:
Подпрограмма возвращает рег.А=0 и во флаговом регистре установленный
флаг Z, если чтение выполнилось успешно; рег.А=код ошибки и во флаговом
регистре установленный флаг NZ если произошла ошибка. Коды ошибок: 0FFh
- устройство занято (device busy) 0FEh - нет такого устройства на шине (device
not present) 001h..0C2h, 0C4h..0FCh - коды ошибок по спецификации ATA
(такие, как их возвращает IDE-устройство)
П\п использует (не сохраняет) все регистры основного набора,
дополнительный набор регистров (AF',BC',DE',HL',IX, IY) не
используется. При выходе из подпрограммы 0F834h при успешном завершении,
регистры содержат: A=код завершения (0=успешно, иначе - код ошибки)
Если успешно: B=0,
{ 25.02.2010 } С=drv_sign (0=IDE_MASTER, 10h=IDE_SLAVE; 1=SDC, 3=SDHC),
DE=базовый адрес ППА контроллера IDE (0F500h или 0F600h), HL=BufferAddress+512,
Пример использования п\п чтения 512-байтного сектора:
;
; считать с HDD сектор с LBA-номером 123456 (1E240h)
; в буфер с адресом BufferAddress
;
ide_cmd_read equ 20h
;
ld hl, addr
ld d, 0 ; 0=Master_IDE
ld e, ide_cmd_read
call 0F834h
jr nz, error ; goto if was a read error
read_ok: ; else do something
error: ret
;
defw BufferAddress
defb 040h ;
defb 0E2h
defb 001h
addr: defb 000h
;
BufferAddress: defs 512, 0
;
Подпрограммы для работы с IDE большие (а для SD-card еще больше),
существенно больше загрузчика с Floppy, поэтому пришлось
пожертвовать русскими буквами знакогенератора (т.к. все равно
никто не пользуется KOI7 - как в
ORDOS, так и в
CP/M-80
используются загружаемые драйвера KOI8 со своими собственными
знакогенераторами).
ОР ДОС и CP/M-80 фото экрана
Внимание не забываем про:
Стандарты
ПО, адресов и портов
Купить конструкторы для сбора ЛК Орион-128 Орион ПРО, куплю
микросхемы КР565РУ5В,
КР565ру7В, к565ру5г AU, к565ру7г М530,
М531, М533 в Au
в позолоте, куплю микропроцессоры
Полезные и интересные статьи
На предыдущую страницу
На главную страницу На следующую
страницу
|
|