KrNews
#08
05 марта 1999 |
|
Auto HDD - Как определить наличие винчестера.
_ Как определить наличие винчестера _ Мы обнаружили этот материал в FIDO, в эхе ZX.SPECTRUM. Материал полезный, а доступ в FIDO имеется далеко не у всех. Материал данной статьи использован при написании загрузчика для этого номера. -------------------------------cut--- --- LaraCroft 3.80 + турбонаддув T 3144A * Origin: ...Altering The Future... (2:5020/689.100) ─ FIDO Echos (2:5063/47.11) ──────────── ─ ZX.SPECTRUM ─ Msg : 3028 of 3160 From : Valerij Kozhevnikoff 2:5020/689.100 Чет 28 янв 99 22:36 To : Alex Letaev Суб 30 янв 99 23:42 Subj : BestView 2.6 на подходе ─ --------------------------------cut----- Вобщем, расскажу маленько про скорпо- вый винт. Порты находятся в трдосе и для их чтения в пзу трдоса по адресу #3FF3 имеются команды IN A,(C) RET Если порт #FFBE содержит не #FF, значит винт есть. Биты 6 и 7 порта #7FBA указы- вают на статус устройств A и B соответс- твенно. Если бит установлен, значит уст- ройство является виртуальным дисководом, и лазить к нему надо строго по #3D13. Ага, а вот тут оно: ======== import file detect ============ Вот тут немножко инфы всякой. Определение наличия винта и статуса дисков. Все нижесказанное справедливо для контроллеров SMUC версий с 1.1 до 1.3. Код версии ПЗУ - 96 и выше. Версия контроллера 1. 3 признана окон- чательной. А версия 1.0 это бета и глю- кодромъ, и в широкую продажу не поступа- ла. К слову, под порты от 1.0 заточена прошивка с кодом 95. А по фирменной до- кументации, с жестким диском может рабо- тать ПЗУ с кодом не ниже 96. Содержимое порта #7FBA в пространстве в/в trdos позволяет быстро узнать статус устройств A и B. По сути своей этот порт является ячейкой памяти на два бита. Предназначен для того, чтобы никуда не лазя быстро узнать что где, и как куда обращаться. Доступен как на запись, так и на чтение. При любом (ручном либо программном) подключении/отключении образов трдосных дискет, теневик всегда приводит значение этого порта, в соответствие с изменив- шимся статусом устройств. Читает его обычно уже сама trdos, ког- да ей оно надо. Биты 6 и 7 определяют статус для A и B соответственно. Если бит установлен, значит устройство подключено к драйверу жесткого диска, и образ дискеты доступен через #3D13 либо через RST 8. Если бит сброшен, значит устройство является реальным дисководом, и доступно стандартными для дисководов средствами. Все остальные биты в настоящее время не используются, и всегда должны быть в единице. Диски C и D не могут быть реальными дисководами -контроллер такого не под- держивает. # оговорка: хоть изначально плата Скорпиона и не поддерживает диско- воды C и D, но при желании и умении они могут быть подключены, что следует иметь ввиду. ; проверка скорповости и наличия винта ; на выходе: флаг C=1 - нет винта CHECKHD DI LD A,(#0008) CP #C3 JR NZ,NO_HDD; сие не скорп LD BC,#1FFD LD A,#02 OUT (C),A ; вкл. теневик LD A,(#00F1) ; взяли код версии LD E,#00 OUT (C),E ; выкл. теневик CP 96 JR C,NO_HDD ; ПЗУ старое LD BC,#FFBE CALL RD_DOS CP #FF JR Z,NO_HDD ; рег.сост.пуст XOR A RET ; винт есть NO_HDD SCF RET ; винта нет ; -------------------------------------- ; сама проверка дисковода ; в переменной DRIVE должен лежать ; номер 0...3 ; на выходе: флаг C=1 - реальный драйв DRIVE EQU #5CF6 ; номер драйва TEST LD A,(DRIVE) AND #3 CP #2 JR NC,OK_HDD ; C и D всегда ; на винте RRA JR C,TEST_B TEST_A LD BC,#7FBA ; проверяем A CALL RD_DOS BIT 6,A JR NZ,OK_HDD ; A на винте SCF RET ; А на дискете TEST_B LD BC,#7FBA ; проверяем B CALL RD_DOS BIT 7,A JR NZ,OK_HDD ; B на винте SCF RET ; B на дискете OK_HDD OR A ; девайс на винте RET RD_DOS LD HL,#3FF3 PUSH HL JP #3D2F WBR, Jason.
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября