;********************************›;* ĆĻĶŠÕŌÅ ĒĮĶÅÓ ­­ ČÉÄÄÅĪ ĶĮŚÅ *›;* FROM 1ST BOOK OF ATARI GAMES *›;* ACTION! Translation by *›;* Stephen S. MacKenzie *›;********************************›SET $000E=$3000›SET $0491=$3000›INCLUDE "D:SYSLIB.ACT"›INCLUDE "D:SYSIO.ACT"›INCLUDE "D:SYSGR.ACT"›INCLUDE "D:SYSMISC.ACT"›MODULE›DEFINE ENDFOR="OD",ENDWHILE="OD"›BYTE ARRAY data=[ 3 56 124 174 174 254 186 68 56› 4 56 124 234 234 254 186 68 56› 5 56 84 214 254 254 186 68 56› 6 56 124 254 214 214 186 68 56› 1 255 255 255 255 255 255 255 255› 127 16 24 28 30 30 28 24 16 0]›INT ARRAY adim(4),dir(4)›INT a,b,chset,ppos,sc,sec,tpos,zp›CARD w,sensitivity›BYTE chr,dp,i,j,st,x,device=$B7››BYTE FUNC read()› dp==+1› RETURN(data(DP))››PROC setupchset()› chset=(Peek(106)-8)*256› FOR i=0 TO 7 DO Poke(chset+i,0) ENDFOR› dp=$FF› DO i=read()› IF i=0 THEN RETURN FI› FOR j=0 TO 7 DO› x=read()› Poke(chset+i*8+j,x)› ENDFOR› OD› RETURN››PROC setupscreen()› Graphics(17)› Poke(756,chset RSH 8)› sc=PeekC(88)› SetColor(2,0,0)› a=sc+21› FOR i=1 TO 21 DO PrintDE(6,"”””””””””””””””””””") ENDFOR› Poke(a,5)› DO j=Rand(4)› x=j› DO b=a+adim(j)› WHILE Peek(b)=129 DO› Poke(b,j+1)› Poke(a+adim(j)/2,0)› a=b› j=Rand(4)› x=j› b=a+adim(j)› ENDWHILE› IF j<3 THEN j==+1 ELSE j=0 FI› UNTIL j=x OD› j=Peek(a)› Poke(a,0)› IF J<5 THEN a=a-adim(j-1) FI› UNTIL J>=5 OD› RETURN››PROC main()› device=0› adim(0)=2› adim(1)=-40› adim(2)=-2› adim(3)=40› dir(0)=20› dir(1)=21› dir(2)=19› dir(3)=1› Print("Sensitivity (500=High/6000=Low)? ")› sensitivity=InputC()› DO Graphics(17)› setupchset()› setupscreen()› ppos=sc+230› Poke(ppos,5)› Poke(20,0)› Poke(19,0)› DO› FOR i=0 TO 3 DO› zp=ppos+dir(i)› IF Peek(zp)=129 THEN Poke(zp,65) FI› zp=ppos-dir(i)› IF Peek(zp)=129 THEN Poke(zp,65) FI› ENDFOR› st=Stick(0)› tpos=ppos› IF st=13 THEN› tpos==+20› chr=6› ELSEIF st=14 THEN› tpos==-20› chr=5› ELSEIF st=7 THEN› tpos==+1› chr=4› ELSEIF st=11 THEN› tpos==-1› chr=3› ELSE chr=5› FI› IF STrig(0)=0 THEN ;User "peek" at maze via "Fire"› SetColor(2,0,14)› FOR w=1 TO 60000 DO ENDFOR› SetColor(2,0,0)› FOR w=1 TO 60000 DO ENDFOR› WHILE STrig(0)=0 DO ENDWHILE› FI› IF Peek(tpos)=0 THEN› Poke(ppos,0)› Poke(tpos,chr)› ppos=tpos› FI› FOR w=0 TO sensitivity DO ENDFOR› UNTIL ppos=sc+21 OD› FOR i=1 TO 50 DO› FOR j=0 TO 3 DO› w=Peek(53770)› Poke(708+j,w)› ENDFOR› ENDFOR› Graphics(18)› PrintDE(6,"łļõ äéä éō")› sec=(Peek(19)*256+Peek(20))/60› PrintD(6,"IN ")› PrintID(6,sec)› PrintDE(6," SECONDS.")› PrintDE(6,"")› PrintDE(6,"press ĘÉŅÅ to")› PrintDE(6,"play again")› WHILE STrig(0)<>0 DO› w=Peek(53770)› Poke(711,w)› ENDWHILE› OD› RETURN››HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH