|
Deja Vu
#01
30 июня 1997 |
|
Coding - Описание программы AntiRST8 (для ZS256).

(C)1997 Cardinal/PLAYGEAR Co. Описание программы ANTIRST8. ────────────────────────────────────────── * * * Информация, о которой пойдет речь далее, наверняка, заинтересует владельцев компью- тера Scorpion. Все владельцы SCORP'а час- тенько сталкиваются с такой проблемой, что некоторые программы блокируют теневой мо- нитор по RST #08: DEFB #85 и этим самым препятствуют просмотр их изнутри. Но это было раньше, а теперь все изменится! Прог- рамма, которую я вам предлагаю, решит ваши проблемы. Сразу скажу, что она есть в при- ложении этого журнала под именем ANTIRST8.B длиной всего в один сектор. Позже я расскажу о ней подробно, а сейчас объясню, как она работает. Запустите файл ANTIRST8.B из приложения журнала DEJA VU и смотрите на экран. Спустя секунду будет произведена инициализация TR DOS, и если бордюр будет черный, то все в порядке, ес- ли же он стал синим, то произошла одна из ошибок: 1) у вас не Scorpion. 2) у вас Scorpion, но ПЗУ-шка скорее всего очень старой версии.(?...) 3) у вас Scorpion, но перед запуском этой программки вы случайно (или спецом) отключили порт #1FFD. 4) ???! Если у вас все прошло хорошо, тогда сме- ло запускайте программу, которая блокирует Monitor по RST 8. Потом как бы случайно жмите на Magic и тащитесь, монитор больше не заблокирован! Надо сказать, что ANTIRST8 не спасет теневик от полной очистки восьмой страницы ОЗУ. Программа ANTIRST8 резидентно находится в памяти и не уничтожается даже по кнопке RESET. А теперь я расскажу подробнее о том, как работает ANTIRST8. Говоря простым языком моя программа перехватыватывает Magic или RST #08, подправляет переменную монитора по адресу #C063, (в этой переменной нахо- дится 0, если монитор не заблокирован или любое другое значение, если он заблокиро- ван) и делается возврат в монитор. Вот ее листинг. ------------------------------------------ ORG 25000 RESID EQU #C008 DI LD SP,#7FFF LD DE,#1210 CALL BANKS ;подключаем ПЗУ теневого монитора и уста- ;навливаем восьмую страницу памяти ;------------------ LD HL,PROGA LD DE,RESID LD BC,7 LDIR ;перекидываем резидент в восьмую страницу ;памяти по адресу указанному в метке RESID ;------------------ LD IX,#0000 LD BC,#4000 LOOP_1 LD A,#ED CP (IX+0) JR NZ,LOOP_2 CP (IX+4) JR NZ,LOOP_2 LD A,#73 CP (IX+1) JR NZ,LOOP_2 CP (IX+5) JR NZ,LOOP_2 LD A,#31 CP (IX+8) JR NZ,LOOP_2 LD A,#4B CP (IX+12) JR Z,INSTALL LOOP_2 INC IX DEC BC LD A,B OR C JR NZ,LOOP_1 ;эта подпрограммка ищет в ПЗУ монитора ;примерно такой кусок программы: ;LD (#NNNN),SP ;LD (#MMMM),SP ;LD SP,#YYYY ;LD BC,(#XXXX) ;LD A,C ;OR B ;JR NZ,#LLLL ;CALL ..... ;это нужно для того, чтобы узнать адрес, ;который находится в ячейке #XXXX, и на ;который переходит теневик, если он не ра- ;вен 0. кстати, по адресу #LLLL находится ;примерно такая подпрограмма: ;PUSH BC ;DEC BC ;LD A,B ;OR C ;JR NZ,$-3 ;RET ;отсюда мы видим, что на стек кладется ад- ;рес взятый из ячейки #XXXX, затем закру- ;чивается цикл пока BC не обнулится и вы- ;ход по адресу на стеке ;------------------ INC A OUT (#FE),A JR EXIT ;ошибка, кусок не найден ;------------------ INSTALL LD IY,RESID PUSH IX POP HL LD BC,19 ADD HL,BC LD (IY+#05),L LD (IY+#06),H PUSH IY POP BC LD L,(IX+13) LD H,(IX+14) LD (HL),C INC HL LD (HL),B ;инсталлируем резидент и устанавливаем ад- ;рес перехода при нажатии на Magic на ад- ;рес, где будет находиться резидент ;------------------ EXIT LD DE,#0010 CALL BANKS LD IY,#5C3A LD HL,#2758 EXX LD SP,65000 LD HL,0 PUSH HL JP #3D2F ;выход в TR DOS ;------------------ BANKS LD BC,#1FFD OUT (C),D LD B,#7F OUT (C),E RET ;RAMDRIVE ;------------------ PROGA XOR A LD (#C063),A JP 0 ;резидент, который запускается после нажа- ;тия на Magic, вместо адреса 0 инсталлятор ;занесет адрес возврата в монитор ;----------------------------------------- Вот я в двух словах и объяснил принцип работы ANTIRST8. Добавлю только, что полу- чить ПЗУ монитора можно такой программкой. ;------------------ DI LD A,2 OUT (#FD),A LD HL,0 LD DE,#8000 LD BC,#4000 LDIR XOR A OUT (#FD),A EI RET ;по адресу #8000 будет находиться ПЗУ мо- ;нитора ;----------------------------------------- Если вы хотите узнать больше информации по Скорпиону, пишите, спрашивайте. Так же буду рад принять от вас любую информацию. Мой адрес: 650056 г.Кемерово пр.Ленина д.117Б, кв.37 Латышеву Денису Ивановичу. Просьба вкладывать чистый конверт. END...
Другие статьи номера:
Похожие статьи:
В этот день... 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