Frog from Antic Vol. 6 #10 February 1988#
Frog is a game from the Antic magazine, published in February 1988
ATR Image#
Reference#
Source Code#
; FROG
; BY GREG KNAUSS
; (c)1987, ANTIC PUBLISHING
BYTE TIME,SEC,PIC,JMP,SCR,DEL,FLY,FS,
PM,DX,DY,EX,EY,OY,S,T,W,U,D,M
BYTE ARRAY FY(4)
INT DIR,TN,OX
INT ARRAY FD(4)
CARD DRB,CH,DL,X,Y,I,J,K
CARD ARRAY FX(4)
PROC PLRVBI()
[162 3 189 244 6 240 89 56 221 240 6
240 83 141 254 6 106 141 255 6 142
253 6 24 169 0 109 253 6 24 109 252
6 133 204 133 206 189 240 6 133 203
173 254 6 133 205 189 248 6 170 232
46 255 6 144 16 168 177 203 145 205
169 0 145 203 136 202 208 244 76 87
6 160 0 177 203 145 205 169 0 145
203 200 202 208 244 174 253 6 173
254 6 157 240 6 189 236 6 240 48 133
203 24 138 141 253 6 109 235 6 133
204 24 173 253 6 109 252 6 133 206
189 240 6 133 205 189 248 6 170 160
0 177 203 145 205 200 202 208 248
174 253 6 169 0 157 236 6 202 48 3
76 2 6 76 98 228 0 0]
PROC MYVBI()
TIME==+1 [76 $E45F]
PROC DLI()
[72 238 0 5 173 0 5 141 10 212 201 1
208 12 169 99 141 9 212 169 198 141 23
208 104 64 201 2 208 7 169 40 141 26
208 104 64 201 3 208 15 169 130 141
26 208 141 24 208 169 9 141 25 208
104 64 169 224 141 9 212 169 15 141
23 208 169 0 141 0 5 104 64]
PROC DLIST()
[112 112 112 66 0 0 5 5 7 6 130 5
5 5 132 132 5 5 4 132 2 65]
PROC FROG1()
[0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 54 108 255 227
126 128 252 252 238 118 54 59
108 216 254 130 198 252 0 252
220 204 238 102 116 160 208 240
240 240 240 224 224 224 224 192
128 192 224 192 128 0 0 0
0 128 192 192 192 224 224 224
224 240 240 240 240 240 240 240
248 248 248 248 192 54 108 255
193 99 190 128 206 198 231 198
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 240 124 126
255 199 187 127 127 119 250 124
0 0 128 128 128 64 224 224
224 96 96 240 240 240 240 240
240 240 120 120 120 56 188 188
140 156 188 156 8 0 0 0
128 196 238 223 158 188 184 184
56 120 120 248 240 240 240 240
240 224 224 224 224 224 192 64
64 192 128 128 128 0 0 0]
PROC FROG2()
[0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 15 62 126
255 227 221 254 254 238 95 62
0 0 1 1 1 2 7 7
7 6 6 15 15 15 15 15
15 15 30 30 30 28 61 61
49 57 61 57 16 0 0 0
1 35 119 251 121 61 29 29
28 30 30 31 15 15 15 15
15 7 7 7 7 7 3 2
2 3 1 1 1 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 108 54 255 199
126 1 63 63 119 110 108 220
54 27 127 65 99 63 0 63
59 51 119 102 46 5 11 15
15 15 15 7 7 7 7 3
1 3 7 3 1 0 0 0
0 1 3 3 3 7 7 7
7 15 15 15 15 15 15 15
31 31 31 31 3 108 54 255
131 198 125 1 115 99 231 99]
PROC TOUNGE()
[0 255 127 63 31 15 7 3 1 0
128 192 224 240 248 252 254 255]
PROC DRAGON()
[66 165 153 126 24 0 0 0
0 0 0 24 126 153 165 66]
PROC CHRS()
[0 0 0 0 0 0 0 0
0 0 10 42 10 0 0 0
0 0 0 0 0 0 0 0
0 42 170 170 170 170 0 0
2 170 85 170 170 170 170 0
170 165 90 170 170 170 170 0
170 85 170 170 170 169 170 170
170 85 170 169 150 106 170 170
165 90 165 90 170 170 170 170
85 89 169 169 170 170 170 170
85 165 170 170 106 106 106 170
90 85 165 170 170 170 170 170
170 85 90 165 170 170 170 170
170 85 170 90 165 170 170 170
170 170 85 170 90 165 170 170
170 170 85 170 170 106 170 170
170 170 90 165 170 170 170 170
170 170 170 85 170 170 170 170
170 170 170 85 170 170 170 170
170 170 170 170 85 170 170 170
170 170 170 170 85 170 170 170
170 170 170 170 90 170 170 160
170 170 170 170 170 170 170 0
0 170 170 170 170 170 160 0
0 0 170 170 170 160 0 0
0 0 0 128 0 0 0 0
16 156 216 156 216 156 16 16
16 16 16 16 0 0 0 0
16 16 16 16 16 16 0 0
16 16 16 16 16 16 16 16]
PROC FLIES()
[3 12 48 192]
PROC CLRS()
[66 202 202 4 196 15 134 0 134]
PROC PAUSE()
SNDRST() POSITION(15,0)
PRINT("* Paused *") POKE(764,255)
WHILE PEEK(764)=255 DO OD
POSITION(15,0) PRINT(" ")
POKE(764,255) RETURN
PROC SHOOT()
T==+TN IF T=10 OR T=95 THEN TN=-TN FI
IF T=50 THEN TN=0 FI POKE(53248,X+OX)
POKE(1780,Y+OY) POKE(1772,T/5)
IF TN<>0 THEN FOR M=0 TO 3 DO
IF PEEK(53256+M)=1 THEN FX(M)=3000
SOUND(1,50,10,10) SCR==+1
POSITION(9,14) PRINTC(SCR)
SOUND(1,0,0,0) FI OD IF PEEK(53263)=1
THEN SOUND(1,100,10,10) DY=0SEC==+30
SCR==+5 POKE(53251,0) POSITION(9,14)
PRINTC(SCR) SOUND(1,0,0,0) FI FI
POKE(53278,0) RETURN
PROC PLACE()
SHOOT() OX=-28 IF DIR=1 THEN OX=11 FI
OY=23 IF PIC MOD 3=1 THEN OY=4 FI
IF PIC MOD 3=2 THEN OY=25 FI RETURN
PROC MOVE()
POKE(16,112) POKE(53774,112)
IF PEEK(764)=33 THEN PAUSE() FI
POKE(53250,X) POKE(53249,X+8)
POKE(1782,Y) POKE(1781,Y)
IF STRIG(0)=0 AND TN=0 AND JMP=2
THEN TN=DIR T=50 PLACE() FI
IF DY<4 THEN FOR DEL=1 TO 50 DO OD FI
IF DX>3 AND DY>3 THEN DX==+1
IF DX>EX THEN DX==-2 FI DY==+1
IF DY>EY THEN DY==-2 FI
IF EX=DX OR EY=DY THEN
EX=RAND(240)+10 EY=RAND(70)+20 FI
POKE(53251,DX) POKE(1783,DY)
POKE(1775,(DX MOD 2)*8+1) FI
IF SEC MOD 20=0 THEN DX=250+RAND(2)*10
DY=5 EX=RAND(255) EY=RAND(100)+50 FI
IF SEC MOD 20=15 AND DX>3 AND DY>3
THEN EX=125+RAND(10) EY=0 FI
IF TIME>58 AND SEC>0 THEN TIME=0
SEC==-1 POSITION(35,14) PRINTB(SEC)
PRINT(" ") FI
SHOOT() FLY==+1 IF FLY=4 THEN FLY=0
FI FX(FLY)==+FD(FLY)*FS
IF FX(FLY)>2450 OR FD(FLY)=0 THEN
FOR M=0 TO 1 DO U=PEEK(FLIES+FLY)
D=FY(FLY) W=PEEK(DRB+768+D+M)-U
POKE(DRB+768+D+M,W) OD FD(FLY)=1
IF RAND(10)>5 THEN FD(FLY)=-1 FI
FX(FLY)=RAND(400) IF FD(FLY)=-1 THEN
FX(FLY)=2150+RAND(400) FI
FY(FLY)=50+RAND(100) FOR M=0 TO 1 DO
U=PEEK(FLIES+FLY) D=FY(FLY)
W=PEEK(DRB+768+D+M)+U
POKE(DRB+768+D+M,W) OD FI
D=FX(FLY)/10 POKE(53252+FLY,D)
RETURN
PROC ANIMATE()
POKE(1773,PIC*32+1)
POKE(1774,PIC*32+1) RETURN
PROC SPLASH()
T=50 TN=0 FOR I=0 TO 31 DO Y==+1
POKE(1785,32-I) POKE(1786,32-I)
MOVE() OD X=0 MOVE() POKEC(548,$E462)
I=SEC DO SEC==-1 POSITION(35,14)
PRINTB(SEC) PRINT(" ")
SOUND(0,200,10,10) FOR DEL=1 TO 5 DO
MOVE() OD SOUND(0,0,0,0)
FOR DEL=1 TO 5 DO MOVE() OD
IF SEC=I-30 OR SEC=0 THEN EXIT FI OD
POKEC(548,PLRVBI) PIC=1 X=50 DIR=1
JMP=2 FOR I=1 TO 32 DO Y==-1
POKE(1785,I) POKE(1786,I) ANIMATE()
MOVE() OD PIC=0 RETURN
PROC SETUP()
DO GRAPHICS(0) POKE(559,0)
POKE(752,1) DL=PEEKC(88)
POKE(16,112) POKE(53774,112)
POKEC(DLIST+4,DL) FOR I=0 TO 1 DO
POKE(82,I*34+1) POSITION(I*34+1,5)
PRINTE(": :") PRINTE("= :=")
PRINTE("=:==") PRINTE("====")
PRINTE("====") PRINTE("====")
PRINTE("<=;<") OD POSITION(8,11)
PRINT("!#$%&'()*+,-./0123456789")
POSITION(2,14) PRINT("Score: 0")
POSITION(29,14) PRINT("Time: 120")
CH=(PEEK(106)-8)*256
MOVEBLOCK(CH,CHRS,1024)
POKE(DLI+15,CH/256)
MOVEBLOCK(1536,PLRVBI,160)
PM=PEEK(106)-24 DRB=PM*256+1
POKE(1788,PM+4) POKE(53277,3)
POKE(54279,PM) POKE(1771,PM-1)
POKE(53256,3) POKE(623,17)
MOVEBLOCK(DRB-256,TOUNGE,20)
MOVEBLOCK(DRB,FROG1,192)
MOVEBLOCK(DRB+256,FROG2,192)
MOVEBLOCK(DRB+512,DRAGON,16)
ZERO(DRB+768,1280)
MOVEBLOCK(704,CLRS,9)
T=50 SETBLOCK(1773,3,1)
POKE(1784,1) POKE(1785,32)
POKE(1786,32) POKE(1787,8)
POKE(1280,0) POKEC(548,PLRVBI)
POKEC(546,MYVBI) POKEC(560,DLIST)
POKEC(512,DLI) POKE(54286,192)
FOR I=0 TO 3 DO FX(I)=0 FY(I)=0
FD(I)=0 OD SEC=121 SCR=0 FS=5 FLY=0
DY=0 X=120 Y=160 DIR=1 PIC=0 TN=0
ANIMATE() MOVE() POSITION(8,3)
PRINT("FROG") POSITION(13,4)
PRINT("By Greg Knauss") POSITION(7,0)
PRINT("(c)1987 Antic Publishing")
POKE(559,62) WHILE PEEK(53279)<>6 AND
STRIG(0)=1 DO OD POSITION(8,3)
PRINT(" ") POSITION(13,4)
PRINT(" ") POSITION(7,0)
PRINT(" ")
DO IF SEC=0 THEN EXIT FI
JMP=0 S=STICK(0)
IF S=7 THEN PIC=1 DIR=1 JMP=1 FI
IF S=11 THEN PIC=4 DIR=-1 JMP=1 FI
IF S=14 THEN JMP=2 FI
IF S=13 THEN DIR=-DIR PIC=3-PIC FI
IF X<80 OR X>167 THEN SPLASH() FI
IF JMP=1 THEN ANIMATE() PLACE()
FOR I=0 TO 9 DO X==+DIR Y==-1 MOVE()
SOUND(0,Y-90,10,4) OD FOR I=0 TO 9 DO
X==+DIR Y==+1 MOVE()
SOUND(0,Y-90,10,4) OD PIC==-1 PLACE()
SOUND(0,0,0,0) FI
IF JMP=2 THEN PIC==+1 ANIMATE()
PLACE() FOR I=0 TO 126 DO
SOUND(0,Y,10,6-I/20) IF I MOD 9=0 THEN
X==+DIR FI Y==-1 MOVE() OD PIC==+1
ANIMATE() PLACE() SOUND(0,0,0,0)
FOR I=0 TO 126 DO IF I MOD 9=0 THEN
X==+DIR FI Y==+1 MOVE() OD PIC==-2
PLACE() FI IF S<>15 AND X>79
AND X<168 THEN FOR I=1 TO 70 DO
ANIMATE() MOVE() OD FI IF S=15 THEN
ANIMATE() MOVE() FI FS=SCR/2+5
POKE(77,0) FOR DEL=1 TO 20 DO OD OD
POSITION(5,3) PRINT("GAME OVER!")
POSITION(9,14) PRINTB(SCR)
FOR I=1 TO 500 DO MOVE() OD
POSITION(10,0)
PRINT("Press the trigger...")
WHILE STRIG(0)=1 DO MOVE() OD OD