Следующая программа выводит на экран рисунок случайным образом, используя
предыдущий RND-генератор. Выход из программы осуществляется по нажатию клавиши
SPACE.
10 ORG 40000
20 BEGIN LD HL,(TEMP) ;вычисление случайного числа
30 LD C,16
40 S1 LD A,H
50 ADD HL,HL
60 AND 255
70 JP PE,S2
80 INC HL
90 S2 DEC C
100 JR NZ,S1
110 LD (TEMP),HL
120 LD A,H ;взяли старший байт числа
130 AND #1F ;обнулили старшие три бита
140 OR #40 ;получили адрес экранной области
150 CP #5C ;адрес выходит за область экрана ?
160 JR NC,BEGIN ;если да, то вычислить новый адрес
170 LD H,A ;запомнить полученный адрес
180 LD BC,#4000 ;смещение для загруженного экрана
190 PUSH HL ;сохранили адрес экрана
200 ADD HL,BC ;получили адрес загруженного экрана
210 LD A,(HL) ;взяли байт
220 POP HL ;восстановили адрес
230 LD (HL),A ;занесли байт в экран
240 LD A,#7F ;проверка на нажатие SPACE
250 IN A,(#FE)
260 RRA
270 RET NC
280 JR BEGIN
290 TEMP DEFB 1,0
Необходимо загрузить адрес в память и поставить смещение в строке 180 на
число, которое получается следующим образом:
адрес загруженного экрана - 16384
9C40: 2A 6D 9C 0E 10 7C 29 E6 :B8
9C48: FF EA 4D 9C 23 0D 20 F5 :FB
9C50: 22 6D 9C 7C E6 1F F6 40 :CE
9C58: FE 5C 30 E4 67 01 00 40 :0A
9C60: E5 09 7E E1 77 3E 7F DB :58
9C68: FE 1F D0 18 D3 01 00 00 :DD