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




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

Похожие статьи:
Enlight'97 - Краткий отчет от ROM Corp.
Лирика - пара произведений искусства.
WANTED - Розыск программ...
Funtop'98 - официальная информация v1.3.
Новости - Arwald защитил диплом и вернулся к своим игровым проектам, Dart Alver из Смоленска выпустил огромную доработку графического редактора Burial Gfx Editor

В этот день...   27 апреля