WELCOME TO THE ZX-NEWS SITE!

© Михаил Блюм (ZX-Masters), 1996
® ZX-News #17

ПЕРЕХВАТ RESET'А НА 128KB МАШИНАХ

 М 
ногие, поиграв в игру "Double Xinox" и нажав в ней на Reset, пришли в полное недоумение, увидев надпись, подтверждающую ваше решение сбросить программу, причём не на Scorpion'е, а на обыкновенном 128-м!

К моему глубокому удивлению, среди этих многих оказались некоторые программисты и хакеры... Секрет этого "глюка" настолько прост, что мне просто неудобно говорить о нём, но по просьбе редакции газеты я это сделаю.

Как известно, в 128К компьютере имеются две области памяти, отведённые под экран: стандартная - с адреса _#4000_ в основном поле памяти, и дополнительная - с адреса _#C000_ в банке RAM7. Выбирать нужный экран надо через порт _#7FFD_, сбрасывая или устанавливая третий бит. Если бит установить, то будет отображаться второй экран (RAM7), если его сбросить, то стандартный (RAM5).

Теперь о Reset'е. При приходе сигнала reset аппаратно устанавливается стандартный экран, который очищается программой инициализации, расположенной в свою очередь с адреса _#0000_ в ПЗУ в момент отжатия кнопки "RESET".

Таким образом, если использовать в программе только дополнительный экран, а в основной поместить какое угодно сообщение, то при Reset'е оно появится! В DOUBLE XINOX'е, например, сообщение находится в области атрибутов в целях экономии памяти.

              ORG 30000
      START   DI
              LD A,23
              CALL MEMORY
              LD HL,49152
              CALL CLS
              LD HL,16384
              CALL CLS
              LD A,23+8
              CALL MEMORY
              LD HL,TEXT
              LD DE,22528+256
              LD BC,32*7
              LDIR
      LOOP    JR LOOP
      MEMORY  LD BC,32765
              OUT (C),A
              RET
      CLS     LD E,L
              LD D,H
              INC E
              LD BC,6911
              LD (HL),L
              LDIR
              RET
      
              ;12345678901234567890123456789012
      TEXT DM "                                "
           DM " @@@@@  @@@@@  @@@@ @@@@@ @@@@@ "
           DM " @   @  @     @     @       @   "
           DM " @@@@@  @@@@@  @@@  @@@@@   @   "
           DM " @  @   @         @ @       @   "
           DM " @   @  @@@@@ @@@@  @@@@@   @   "
           DM "                                "
      


Copyright © 2001–2013 The ZX-News Site