Classic Computer Magazine Archive PROGRAM LISTING: 88-02/REARDOOR.ACT


; REAR DOOR
; BY GREG KNAUSS
; (c)1987, ANTIC PUBLISHING

BYTE IT,KEY,KILL,ALN,MEN,LVL
BYTE ARRAY LOCK(3)
CARD PM,I,J,WAIT,SCR

PROC DL()              
�����������
[112 112 70 0 0 7 130 5 5 5 5 5 5 5
133 2 2 2 2 2 65 DL]

PROC DLI()
���������������������
[72 238 0 5 173 0 5 141 10 212 201 2
240 17 169 0 141 9 212 169 42 141 23
208 169 15 141 24 208 104 64 169 224
141 9 212 169 15 141 23 208 169 0 141
24 208 141 0 5 104 64]
                     
PROC CHR()
���������������������������
���������
[85 85 85 85 85 85 85 85
0 0 0 0 0 0 0 0
85 85 85 85 84 84 84 84
85 85 85 0 0 63 63 63
85 85 85 0 0 252 252 252
85 85 85 85 21 21 21 21
85 85 84 80 64 64 0 0
84 80 0 0 0 0 0 0
0 0 0 0 0 21 31 31
0 0 0 0 0 84 100 68
21 5 0 0 0 0 0 0
85 85 21 5 1 1 0 0
0 0 0 0 64 64 64 106
0 0 0 16 16 16 16 160
21 28 19 21 0 0 0 0
84 196 52 84 0 0 0 0
0 0 0 4 4 4 4 10
0 0 0 0 1 1 1 169
106 106 90 85 85 85 85 85
111 159 160 80 64 64 64 64
250 250 0 0 0 0 1 1
175 175 0 0 0 0 64 64
249 246 10 5 1 1 1 1
169 169 165 85 85 85 85 85
85 105 170 170 170 170 170 170
85 85 149 170 170 170 170 170
64 0 0 0 0 0 0 0
1 1 2 10 10 10 10 10
64 64 64 160 160 160 160 160
1 0 0 0 0 0 0 0
85 86 170 170 170 170 170 170
89 170 170 170 170 170 170 170
170 170 170 170 170 170 170 170
170 175 191 191 170 170 170 170
0 255 255 255 170 170 170 170
10 10 250 250 170 170 170 170
160 160 175 175 170 170 170 170
0 255 255 255 170 170 170 170
170 250 254 254 170 170 170 170
85 85 85 85 85 85 87 87
85 85 85 85 85 255 255 239
85 85 85 85 85 253 255 239
85 85 85 87 87 95 95 95
87 119 253 253 253 255 255 255
251 255 255 247 247 127 127 102
191 255 253 125 125 247 247 103
85 117 253 255 255 255 255 255
85 85 85 85 85 213 213 213
95 95 95 95 95 87 87 87
247 247 215 215 247 245 245 253
221 255 255 255 255 255 255 255
223 255 255 255 255 253 253 253
127 127 95 95 127 127 127 255
213 213 213 213 213 85 85 85
87 85 85 85 85 85 85 85
213 221 253 85 87 87 95 95
255 127 127 255 255 253 245 245
253 245 245 253 255 255 127 127
95 221 253 85 85 85 213 213
85 105 170 170 170 170 170 170
85 85 149 170 170 170 170 170
95 127 191 191 255 255 255 255
245 245 234 234 234 170 170 170
127 127 95 175 175 171 171 171
213 245 245 250 254 254 254 254
85 86 170 170 170 170 170 170
89 170 170 170 170 170 170 170
171 191 186 171 170 170 170 170
255 255 254 250 170 170 170 170
170 234 170 170 170 170 170 170
171 175 170 170 170 170 170 170
255 255 254 191 170 170 170 170
170 250 186 170 170 170 170 170
255 255 255 255 255 255 255 255
0 0 0 0 255 255 255 255
255 255 255 255 0 0 0 0
0 0 0 0 15 63 255 255
0 0 0 0 240 252 255 255
255 255 63 15 0 0 0 0
255 255 252 240 0 0 0 0
0 48 240 48 48 48 252 0
0 252 12 252 192 192 252 0
0 252 12 60 12 12 252 0]

PROC BULLET()
������������������宠
[0 60 126 126 255 255 255 255
255 255 255 255 126 126 60 0
0 0 60 126 126 255 255 255
255 255 255 126 126 60 0 0
0 0 0 60 126 126 255 255
255 255 126 126 60 0 0 0
0 0 0 0 60 126 126 126
126 126 60 0 0 0 0 0
0 0 0 0 0 60 126 126
126 126 60 0 0 0 0 0
0 0 0 0 0 0 24 60
60 24 0 0 0 0 0 0
0 0 0 0 0 0 0 60
60 0 0 0 0 0 0 0
0 0 0 0 0 0 0 24
24 0 0 0 0 0 0 0
170 200 73 90 114 52 155 60
109 152 61 116 82 90 145 137]

PROC CLD()
����������
FOR J=0 TO 95 DO FOR I=0 TO 2 DO
POKE(PM+1096+I*256+J,255) OD OD
RETURN

PROC OPD()
���������
FOR J=0 TO 96 DO FOR I=0 TO 2 DO
POKE(PM+1192+I*256-J,0) OD OD
RETURN

PROC GOODGUY()
��������������宠
PRINTE("!!#$%&!!") PRINTE("!'()*+,!")
PRINTE("!-./012!") PRINTE("!345678!")
PRINTE("9:;<=>?@") PRINTE("ABCDEFGA")
RETURN

PROC GUYS()
������������������������
IT=RAND(3) IF LVL>6 THEN IT=RAND(4) FI
FOR J=0 TO 2 DO
POKE(82,4+J*12) POSITION(4+J*12,3)
IF J=IT OR LVL=0 THEN IF LVL<3 THEN
PRINTE("!!���!!!") PRINTE("!������!")
PRINTE("!������!") PRINTE("!�����!!")
PRINTE("\]�߀�") PRINTE("A������A")
ELSEIF LVL>2 AND LVL<5 THEN
PRINTE("!!����!!") PRINTE("!������!")
PRINTE("!������!") PRINTE("!������!")
PRINTE("9������@") PRINTE("A������A")
ELSEIF LVL>4 THEN GOODGUY() I=RAND(3)
POSITION(4+J*12,I*2+4)
IF I=0 THEN PRINT("!!����!!")
ELSEIF I=1 THEN PRINT("!������!")
ELSE PRINT("A������A") FI FI
ELSE GOODGUY() FI OD RETURN

PROC SETUP()
GRAPHICS(0) POKE(559,0) POKE(752,1)
SETBLOCK(704,4,6) POKE(708,0)
POKE(709,4) POKE(710,8) POKE(711,180)
POKE(712,8)

PM=PEEKC(88) POKEC(DL+3,PM)
PM=(PEEK(106)-8)*256 ZERO(PM,1024)
MOVEBLOCK(PM+8,CHR,1024)
POKE(DLI+15,PM/256)
PM=(PEEK(106)-24)*256
POKE(54279,PM/256) POKE(53277,3)
ZERO(PM,2048) POKE(623,1)
SETBLOCK(53256,3,3) FOR I=0 TO 2 DO
POKE(53248+I,64+I*48) OD

���������
POSITION(26,0) PRINT("REARDOOR")
POSITION(7,1)
PRINT("(c) 1987 Antic Publishing")
FOR J=0 TO 2 DO POKE(82,3+J*12)
POSITION(3+J*12,2)
PRINTE("
")
PRINTE("
        
")
PRINTE("
        
")
PRINTE("
        
")
PRINTE("
        
")
PRINTE("
        
")
PRINTE("
        
")
PRINTE("") OD
POSITION(2,3) PRINT("")
POSITION(14,3) PRINT("")
POSITION(26,3) PRINT("")
POKE(82,0) POSITION(0,10)
PRINT("�������������ծӮӮ������������������")
PRINT("")
PRINT("|����������������������󠠠���������|")
PRINT("| Score:                      Level: 1 |")
PRINT("")
POSITION(9,13) PRINTC(SCR) RETURN

PROC LOCKS()
����������������������������
POSITION(2,1) PRINT("Please enter ")
PRINT("the key to open lock #")
FOR I=0 TO 2 DO POSITION(37,1)
PRINTC(I+1) POKE(764,255)
WHILE PEEK(764)=255 DO OD
LOCK(I)=PEEK(764) FOR J=0 TO 150
DO SOUND(0,20,10,15-J/10) OD OD
SNDRST() POSITION(2,1)
PRINT("     Copyright 1987 ")
PRINT("Antic Publishing") RETURN

PROC GAME()
����������宠
SCR=0 LOCK(0)=31 LOCK(1)=30 LOCK(2)=26
DO SETUP() ALN=0 MEN=0 LVL=1 SCR=0
CLD() POKE(1280,0) POKEC(512,DLI) 
POKEC(560,DL) POKE(54286,192)
POKE(559,62)

�������������������������
WHILE PEEK(53279)<>6 DO
IF PEEK(53279)=5 THEN LVL==+1
IF LVL=6 THEN LVL=1 FI
POSITION(37,13) PRINTB(LVL)
FOR I=1 TO 10000 DO OD FI
IF PEEK(53279)=3 THEN LOCKS() FI OD

POSITION(1,1) PRINT("Men on board: 0")
PRINT("     Aliens on board: 0")
POSITION(9,13) PRINT("0   ")
POSITION(1,12)
PRINT("������Ǻ�������")
PRINT("�������������򮠠���")

���������
WAIT=200
DO GUYS() OPD() POKE(764,255)
SOUND(0,WAIT,10,4)
SOUND(1,WAIT+2,10,4)
POKE(16,112) POKE(53774,112)
FOR I=1 TO WAIT*100-LVL*250 DO KILL=5

�����������������������
KEY=PEEK(764) IF KEY=LOCK(0) OR
KEY=LOCK(1) OR KEY=LOCK(2) THEN
IF KEY=LOCK(0) THEN J=76 KILL=0
ELSEIF KEY=LOCK(1) THEN J=124 KILL=1
ELSE KEY=LOCK(2) J=172 KILL=2 FI

�����������
MOVEBLOCK(PM+1892,BULLET,16)
POKE(53251,J) SNDRST()
FOR I=1 TO 160 DO IF I MOD 18=0 THEN
MOVEBLOCK(PM+1892,
BULLET+(I/16)*16-16,16) FI
SOUND(0,I+50,8,15-I/11) OD
POKE(707,76) SNDRST()

��������
IF KILL=IT THEN FOR I=1 TO 100 DO
SOUND(0,100-I,2,10-I/10)
SOUND(1,I,2,10-I/10)
OD MEN==+2 SCR==+LVL EXIT FI

������������
IF KILL<>5 AND KILL<>IT THEN
FOR I=1 TO 10000 DO OD
IF IT<>3 THEN ALN==+1 MEN==+1
ELSE MEN==+2 FI SCR==-10*LVL
IF SCR>5000 THEN SCR=0 FI EXIT FI FI
OD

��������������������������
CLD() POKE(707,6) POKE(53251,0)
ZERO(PM+1892,16)

��������������������������
�������䮠
IF KEY=255 AND IT<>3 THEN ALN==+1
MEN==+2 FI
IF KEY=255 AND IT=3 THEN MEN==+3 FI

���������殠
POSITION(15,1) PRINTB(MEN)
POSITION(38,1) PRINTB(ALN)
POSITION(9,13) PRINTC(SCR)
PRINT(" ")

����������根����������������䮠
IF ALN>8 THEN EXIT FI

�������������������������쮠
IF WAIT>85-LVL*5 THEN WAIT==-5
ELSE WAIT=200 LVL==+1
SNDRST() SOUND(0,100,10,2)
FOR I=1 TO 10000 DO OD SNDRST()
POSITION(15,1) PRINT("0  ")
SCR==+MEN MEN=0 POSITION(9,13)
PRINTC(SCR) POSITION(1,12)
PRINT("��������������䮠")
PRINT("���������������")
FOR I=1 TO 10000 DO OD POKE(764,255)
WHILE PEEK(764)=255 DO OD

������������������
POSITION(1,12)
PRINT("������Ǻ�")
PRINT("����������������������������")
POSITION(11,12) IF LVL=2 THEN
PRINT("���������������������")
ELSEIF LVL=3 THEN
PRINT("��������������������")
ELSEIF LVL=4 THEN
pRINT("��������������������")
ELSEIF LVL=5 THEN
PRINT("�����������������������")
ELSEIF LVL=6 THEN
PRINT("�������������������")
ELSEIF LVL=7 THEN
PRINT("�����������������")
ELSEIF LVL=8 THEN
PRINT("�����������")
ELSEIF LVL=9 THEN
PRINT("������������������")
ELSEIF LVL>9 THEN
PRINT("�����������") FI FI
POSITION(37,13) PRINTB(LVL) OD

�����������������������
SOUND(0,WAIT-5,10,4)
SOUND(1,WAIT-3,10,4)
LVL=0 GUYS() OPD()

�����������������������䮠
SNDRST() SOUND(1,200,8,2)
FOR J=1 TO 6 DO SOUND(0,200,10,10)
FOR I=1 TO 200 DO IT=RAND(4)+3
POKE(DL,IT*16) OD SOUND(0,0,0,0)
FOR I=1 TO 200 DO IT=RAND(4)+3
POKE(DL,IT*16) OD OD
FOR I=1 TO 600 DO IT=RAND(4)+3
POKE(DL,IT*16)
SOUND(0,250-I/3,8,I/46+2)
SOUND(1,252-I/3,2,I/46+2) OD

�����
GRAPHICS(19) POKE(DL,112)
FOR I=1 TO 1500 DO
J=RAND(16)*16 IT=J+(15-I/100)
POKE(54282,0) POKE(53274,IT)
FOR MEN=0 TO 2 DO ALN=RAND(255)
POKE(53248+MEN,ALN)
POKE(53266+MEN,256-IT) OD
SOUND(0,100,8,15-I/100)
SOUND(1,150,8,15-I/100) OD

���������������������宠
OD


Back to previous page