Описание мониторов м3.5 - м3.6 на Орион-128 - 2кБт

Описание различных мониторов для Ориона вместо штатного (авторского V2.0 объемом 2к)

Конструктор Орион-128, наборы микросхем, кварцы, куплю микросхемы Купить запчасти и платы ЛК Орион-128

Внимание не забываем про: Стандарты ПО, адресов и портов

Монитор прошивается в 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  со своими собственными знакогенераторами).

ОрДос V2.4 Орион 128  CMP/80 авторская cpm/80 2.30

ОР ДОС и CP/M-80 фото экрана

Внимание не забываем про: Стандарты ПО, адресов и портов

Купить конструкторы для сбора ЛК Орион-128 Орион ПРО, куплю микросхемы КР565РУ5В, КР565ру7В, к565ру5г AU, к565ру7г М530, М531, М533 в Au в позолоте, куплю микропроцессоры

 

Полезные и интересные статьи

На предыдущую страницу  На главную страницу  На следующую страницу