Adventurer #07
31 января 1998

Обмен опытом - Обработка ошибок TR DOS.

     (C) REAL SOFTWARE/NHG'1997,г.Брест
     (C) Музыка: Andrew Fer/PhF


    Обработка дисковых ошибок  TR-DOS


     Если  в вашей программе не требуется
делать подробную обработку ошибок с выва-
ливающемся меню с выбором RIA , но вы хо-
тите  избежать очистки экрана и появления
подлой  надписи TR-DOS "disk error", то в
этом  вам  поможет разработанная мною ко-
роткая  процедурка, которая блокирует все
попытки  TR-DOS  напечатать  сообщение об
ошибке,  она, в  этом  случае, без всяких
последствий вернет управление программе с
кодом  ошибки в регистре A (копия систем-
ной переменной #5D0F(23823)). Если же вам
нужно обрабатывать RIA ,то на данную про-
цедурку  без особых проблем вы можете на-
весить драйвер обработки ошибок,например,
такой  ,  как опубликован в газете ECHO 3
(автор  VfNG ). На  случай, если у вас не
найдется  этой  газетки,  я  привожу этот
драйвер, сразу  подключенный к моей прог-
раммке,  мной  в него было внесено только
определение  типа  ошибки  DISK ERROR или
READ ONLY .

     Вместо #3D13 вызываете TR-DOS  oбра-
ботка ошибок без меню RIA :
TRDOS  PUSH   HL
       LD     HL,(23613) ; Сохр. ERR_SP
       LD     (ERR+1),HL
       LD     HL,ERR
       EX     (SP),HL
       LD     (23613),SP
       EX     AF,AF'
       XOR    A
       LD     (23823),A
       LD     (23824),A
       LD     (23570),A
       EX     AF,AF'
       JP     15635
ERR    LD     HL,0
       LD     (23613),HL ; восст. ERR_SP
       LD     A,6
       LD     (23570),A
       LD     A,(23823)
       AND    A
TRD1   RET Z
       PUSH   AF
       LD     IX,W1 ; окно ERROR !
       CALL   OPWIN ; открыть окно
       POP    AF
       RET

     Примечание: если вы используете бей-
сиковские  каналы для печати символов или
для  каких либо других целей, то вставьте
в процедуру обработки ошибок перед откры-
тием  окна с сообщением об ошибке инициа-
лизацию нужного канала. Например: LD A,2:
CALL 5633 .
     Кстати  ,  один из способов быстрого
взлома  программ,  это открывание защелки
дисковода во время загрузки, и сохранение
по  MAGIC 'у или вход в монитор, а дальше
просто  нужно найти LOADER .Так что, если
вы  хотите  нормально защитить программу,
то подвешивайте ту или иную процедуру об-
работки ошибок.

     С обработкой RIA: 
TRDOS  PUSH   HL
       LD     HL,(23613) ; Сохр. ERR_SP
       LD     (ERR+1),HL
       LD     HL,DDRIV ; Уст. драйв.
       LD     (#5CC3),HL
       LD     HL,ERR
       EX     (SP),HL
       LD     (23613),SP
       EX     AF,AF'
       LD     A,#C3
       LD     (#5CC2),A
       XOR    A
       LD     (23823),A
       LD     (23824),A
       EX     AF,AF'
       JP     15635
ERR    LD     HL,0
       LD     (23613),HL ; восст. ERR_SP
       LD     A,#C9 ; восст. RET
       LD     (#5CC2),A
       LD     A,(23823)
       AND    A
TRD1   RET    Z
       CP     6
       PUSH   AF
       LD     IX,W1 ; окно NO DISK
       JR     Z,NODISK
       LD     IX,W2 ;окно BREAK
NODISK CALL   OPWIN ; открыть окно
       POP    AF
       RET

     Обработка RIA


DDRIV  EX      (SP),HL
       PUSH    AF
       LD      A,H
       CP      13
       JR      Z,ERROR
       POP     AF
       EX      (SP),HL
       RET
ERROR  ; В системной переменной
       ; #5CF4 (23796) текущие дор/сект
       LD      IX,W3 ; таблица окна
       CALL    OPWIN ; открыть окно
       ............  ; напечатать
       ............  ; текущую дор/сект
       POP     HL
       POP     HL
       LD      A,L
       POP     HL
       POP     HL
       POP     HL
       CP      #D8
       LD      HL,TX23 ; DISK ERROR
       JR      NZ,ERROR0
       LD      HL,TX24 ; READ ONLY
ERROR0 CALL    WRITE ; Печать
       XOR     A
       LD      (23560),A
       LD      IX,GORM2 ; таблица меню
       CALL    GRMNU ; выбор пункта
       LD      A,(IX+2) ; номер пункта
       DEC     A
       LD      C,"R"
       JR      Z,ERROR1
       DEC     A
       LD      C,"A"
       JR      Z,ERROR1
       LD      C,"I"
ERROR1 LD      A,C
       LD      HL,#3F7E
       EX      (SP),HL
       JP      #3D2F




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

Похожие статьи:
Интерфейс - Немного о DOMEN OS.
Красота - Что не сделаешь что бы стать красивой.
От редакции - Конкурс на лучший драйвер Kempston-Mouse.

В этот день...   22 октября