Код:
ORG 60000
; Çàäàíèå ïîñòîÿííûõ àòðèáóòîâ ýêðàíà
LD A,7
LD (23693),A
XOR A
CALL 8859
CALL 3435
LD A,2
CALL 5633
; Ââîä ñèìâîëîâ UDG - òðè «ïóëåâûå îòâåðñòèÿ»
LD HL,UDG
LD (23675),HL
; Îñíîâíàÿ ÷àñòü ïðîãðàììû
CALL MISH ;ðèñîâàíèå ìèøåíè
MAIN CALL WAIT ;îæèäàíèå íàæàòèÿ ëþáîé êëàâèøè
CP " "
RET Z
LD A,22
RST 16
LD E,20 ;çàäàíèå äèàïàçîíà äëÿ êîîðäèíàòû Y
CALL RND
RST 16
LD E,30 ;çàäàíèå äèàïàçîíà äëÿ êîîðäèíàòû X
CALL RND
RST 16
LD A,16
RST 16
LD A,6
RST 16
LD E,3 ;çàäàíèå íîìåðà «ïóëåâîãî îòâåðñòèÿ»
CALL RND
ADD A,144 ;âû÷èñëåíèå êîäà ñïðàéòà
RST 16
CALL SND ;çâóêîâîé ñèãíàë
JR MAIN
; Ïîäïðîãðàììà âûâîäà íà ýêðàí ìèøåíè
MISH LD C,20
CALL CIRC
LD C,40
CALL CIRC
LD C,60
CALL CIRC
LD C,80
CALL CIRC
LD DE,TEXT
LD BC,LENTXT
JP 8252
; Ïîäïðîãðàììà ðèñîâàíèÿ îêðóæíîñòåé
CIRC EXX
PUSH HL
EXX
PUSH BC
LD A,120
CALL 11560
LD A,90
CALL 11560
POP BC
LD B,0
CALL 11563
CALL 9005
EXX
POP HL
EXX
RET
; Ïîäïðîãðàììà îñòàíîâêè ñ÷åòà
WAIT XOR A
LD (23560),A
WAIT1 LD A,(23560)
AND A
JR Z,WAIT1
RET
; Ïîäïðîãðàììû
RND CALL RND255
LD L,A
LD H,0
LD D,H
CALL 12457
LD A,H
RET
RND255 PUSH BC
PUSH DE
PUSH HL
; Ðåãèñòðîâàÿ ïàðà HL çàãðóæàåòñÿ çíà÷åíèåì èç ñ÷åò÷èêà «ñëó÷àéíûõ» ÷èñåë
; (ýòî ìîæåò áûòü, íàïðèìåð, ñèñòåìíàÿ ïåðåìåííàÿ 23670/23671,
; êîòîðàÿ èñïîëüçóåòñÿ Áåéñèêîì äëÿ òåõ æå öåëåé)
LD HL,(ADDR)
LD DE,7 ;äàëüøå ñëåäóåò ðàñ÷åò î÷åðåäíîãî
; çíà÷åíèÿ ñ÷åò÷èêà
ADD HL,DE
LD E,L
LD D,H
ADD HL,HL
ADD HL,HL
LD C,L
LD B,H
ADD HL,HL
ADD HL,BC
ADD HL,DE
LD (ADDR),HL ;ñîõðàíåíèå çíà÷åíèÿ ñ÷åò÷èêà «ñëó÷àéíûõ»
; ÷èñåë äëÿ ïîñëåäóþùèõ ðàñ÷åòîâ
LD A,H ;ðåãèñòð A çàãðóæàåòñÿ çíà÷åíèåì
; ñòàðøåãî áàéòà ñ÷åò÷èêà
POP HL
POP DE
POP BC
RET
ADDR DEFW 0
SND LD B,80
LD HL,150
LD DE,1
SND1 PUSH BC
PUSH DE
PUSH HL
CALL 949
POP HL
POP DE
POP BC
DEC HL ;èëè INC HL
DJNZ SND1
RET
; Äàííûå äëÿ ìèøåíè
TEXT DEFB 22,10,14
DEFM "10"
DEFB 22,10,18
DEFM "8"
DEFB 22,10,21
DEFM "6"
DEFB 22,10,23
DEFM "4"
DEFB 22,10,11
DEFM "8"
DEFB 22,10,8
DEFM "6"
DEFB 22,10,6
DEFM "4"
LENTXT EQU $-TEXT
; Äàííûå äëÿ «ïóëåâûõ îòâåðñòèé»
UDG DEFB 4,20,62,60,127,60,40,8
DEFB 9,95,252,63,126,44,8,8
DEFB 16,48,244,63,28,56,28,8
0:0 Errors found at pass 1