ZXNet эхоконференция «code.zx»


тема: Error: No Drive !



от: 500:812/22.01
кому: All
дата: 07 May 1998
▒ ▒▒▒┌┐▒ ▒▒ ▒▒ ▒ ┌┐▒ ┌┐┌┐▒└┘▒▒ ┌──┐┌┐▒┌┐▒ ┌┘└┐▒ │└┘│┌──┐▒ │┌┐│││▒││▒ └┐┌┘▒ │┌┐│└┐┌┘▒ ▒ │└┘│││▒││▒ └┘▒ ││││┌┘└┐┌─┐▒│┌┐││└┐│└┐▒ ┌┐▒ └┘└┘└──┘└┐│▒└┘└┘└─┘└─┘ └┘ └┘ Я подумал и решил: просто необходимо определять наличие дисковода, при обра- щении к нему ! Ведь каждая программа может обломать и сказать "NO DISK". A диск то на месте, просто нет дисковода... А посему вот программа, которую я рекомендую вставлять куда только возможно. Конечно если там есть обращение к диску минуя #3D13. Явные недостатки : портятся 2 системные переменные в TR-DOS'е и при нажатии на BREAK вызывается RST #08, в связи с чем требуется наличие бейсика или его части. Возможны проблемы с прерываниями - я не знаю, будут ли они на входе точно выклю- ченными, если были выключены на входе. Также я не могу гарантировать отсутствие глюков в определении дисковода на особо тормозных дисководах. И на неисправных. Определение происходит по активному уровню сигнала интерфейса TRK00. Для этого головка выдвигается на 0 дорожку и читается регистр состояния микрокон- троллера. Если уровень пассивный, значит либо вообще нет дисковода, либо у него неисправен датчик, либо не двигается головка. ;--------------------------------------- ;(C) FK0 1998 ; ОПРЕДЕЛЕHИЕ HАЛИЧИЯ ДИСКОВОДА ; HА ВЫХОДЕ : ; Z - HЕТ ДИСКОВОДА ; CY - HАЖАТ BREAK DRVDET LD HL,(#5C3D) ; Перехват BREAK'а PUSH HL LD (END+1),SP LD HL,ERR_SP LD (#5C3D),HL LD A,#D8 LD (#5CD8),A ; Прерывание **** LD C,#1F CALL OUTDOS LD A,#08 ; Восстановление CALL OUTDOS LD D,0 PUSH DE CALL POSIT ; Ждет окончания POP DE ; передвижения CALL POSIT ; головки и LD A,(#5CCD) ; читается регистр AND #04 ; состояния. JR END ; TRK00 = 2 bit OUTDOS LD HL,#2A53 ; Вывод в порт JR DOS1 POSIT LD HL,#2740 ; Позиционирование DOS1 PUSH HL JP #3D2F DS 12 ; Для прерывания ERR_SP DW $+2 ; IM 1 и для RST #08 SCF ; на скорпионе END LD SP,0 POP HL LD (#5C3D),HL PUSH AF LD C,#FF ; Остановка диска XOR A CALL OUTDOS LD B,0 ; Пауза **** DJNZ $ LD A,#3C CALL OUTDOS LD C,#3F XOR A CALL OUTDOS POP AF RET ;--------------------------------------- **** Прерывание микроконтроллера возможно и не необходимо. **** Пауза возможно излишне большая. Все проверено - работает даже на тормознутом TEAK'е ! P.S. Писать уже лень, но я додумался, что BREAK можно перехватить проще - через #5CC2. Hадо конечно проверить. -+- ZXASM_3.0

от: 500:812/08.14
кому: Kirill Frolov
дата: 09 May 1998
Hi, Kirill ! KF> Я подумал и решил: просто необходимо KF> определять наличие дисковода, при обра- KF> А посему вот программа, которую я KF> рекомендую вставлять куда только возможно. да вот незадача - нигде нет выбора дисковода. он будет проверять тот, котрый выбирался последним. KF> Также я не могу гарантировать отсутствие KF> глюков в определении дисковода на особо KF> тормозных дисководах. будет работать на любых. KF> LD C,#FF ; Остановка диска KF> XOR A KF> CALL OUTDOS KF> LD B,0 ; Пауза **** KF> DJNZ $ KF> LD A,#3C KF> CALL OUTDOS а вот так диск останавливать - нехорошо. лучше использовать команду #20 - шаг с поднятой головой. дисковод вырубается сразу и не успевает шагнуть. KF> P.S. Писать уже лень, но я додумался, KF> что BREAK можно перехватить проще - KF> через #5CC2. Hадо конечно проверить. и проще, и лучше. Всего хорошего. Дмитрий aka -=LD=- / X-TRADE GROUP. -+- SMM version 1.08

от: 500:812/06.13
кому: Kirill Frolov
дата: 10 May 1998
Hello, Kirill! 07-05-98 в 18:17:00 Kirill Frolov => All: ===============cut================= SEA_DRV OR #3C CALL TO_PRFF CALL SEA_INI BIT 2,A JR NZ,SEA_DR1 LD A,#40 CALL TO_PR3F CALL SEA_INI BIT 2,A JR NZ,SEA_DR1 ;---------------------- ;---------------------- SEA_INI LD A,#08 CALL TO_PR1F LD IX,#3EF5 ;WAITING OF INTRQ CALL TO_DOS JP FR_PR1F ===============cut================= Мой вариант. С наилучшими пожеланиями, Олег aka Ruiner. -+- Брысь-Edit v6.06




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Лит.Страничка - Стихотворение М.Милюкова "Встречая Новый год".
Poke's
Разберемся - Подробный отчет о прохождении игры ЗВЕЗДНОЕ НАСЛЕДИЕ - 1.
DUCK NEWS - Эмулятор IBM для Спектрума.
Обмен опытом - настрока 5.25 дисководов.

В этот день...   8 мая