|
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
Другие статьи номера:
Похожие статьи:
В этот день... 1 января
SibNews #08,
Woot! #01,
Spectrum Magazine #01,
ACNews #25,
Psychoz #14,
ACNews #14,
Last 128 #08,
Last 128 #06,
Last 128 #05,
Last 128 #04,
Last 128 #03,
Last 128 #02,
Last 128 #09,
Last 128 #3.5,
Last 128 #8.025,
Sinclair Club #05,
Last 128 #M!R 01,
Fantadrom #01,
Buzz #20,
Last 128 #01,
DonNews #13,
Nicron #120,
Promised Land #01,
Inferno #01,
Marazm #25,
Ultimathum #01,
Marazm #21,
Hooy Mag #02,
KrNews #11,
Marazm #22,
Marazm #23,
ZX Football 2000 #01,
Codemania #01,
Always #03,
Bugs #02,
IzhNews #08,
Virtual Worlds #01,
Listok #04,
Scenergy #02,
Flash Info #18,
Marazm #16,
Marazm #17,
Zed #01,
Balagan #02,
ZX Format #08,
ZX Power #03,
Shock #01,
Impulse #02,
Deja Vu #03,
ZX Club #08,
ZX Club #06,
Numberology #01,
Marazm #13,
Marazm #12,
Marazm #14,
Gorodok #02,
Zodiac #01,
Marazm #15,
Deja Vu #07,
Marazm #11,
Deja Vu #07,
Playboy #03,
Crazy News #2,
Crazy News #4,
ZX Light #01,
Crazy News #5,
Playboy #02,
ZX News #03,
ZX Review #1-2,
Read Me #02,
Crazy News #3,
Nicron #13,
Read Me #01,
Public Spirit #01,
Faultless #06,
Faultless #05,
ZX Software #01,
Stump #04,
Speccy #07,
Возраждение #0,
Speccy #03,
On-Line #17,
Scene+ #01,
Welcome Press #01,
ZX Konig #04,
Adventurer #01,
Faultless #05,
Faultless #04,
Di Halt #01,
Faultless #01,
Playboy #01,
Crazy News #1,
Faultless #03,
Pioneer #03,
Sinclair Town #02,
ZX Magazine #01,
Eldorado #01,
ZX Magazine #02,
Spectron #01,
ZX News #01,
ZX Konig #02,
200 #W,
Welcome Press #00,
Dune #07,
Subliminal Extacy #01,
Subliminal Extacy #02,
ZX Konig #01,
Subliminal Extacy #00,
Muchomor #01,
Spectrofon #01,
ZX Revija #02,
Outlet #01,
Outlet #1-3