10MODE 1 20PROC_set_colour(1,2,2,1) 30PROC_circle 31GOTO 10000 40END 50 60DEFPROC_circle 70DIMP%63:FORI%=0TO15:READP%!(I%*4):NEXT:FORQ%=0TO2STEP2:R%=1023*-SGN(Q%<2):F%=512:G%=R%:MOVE511,R%:MOVE511,R%:FORS%=0TO1:FORA%=0TO63:IFS%THENZ%=P%?(63-A%)ELSEZ%=P%?A% 80X%=Z%DIV16:Y%=Z%MOD16:Y%=Y%+(16*((Y%AND8)<>0)):Z%=X%:X%=(1-S%)*X%-S%*Y%:Y%=(1-S%)*Y%-S%*Z%:G%=G%+Y%*SGN((Q%>1)+.5):F%=F%+X%*SGN((Q%=1ORQ%=2)+.5):PLOT 85,1024-F%,G%:PLOT85,F%,G%:NEXT,, 90DATA &60606F60,&606F6070,&6F606F7F,&6F6F6F7F,&6F6F7E6F,&6E6E6F6E,&6E6E6F6E,&6E6E6D6E,&6D6E6D5E,&5D6D6E5D,&5D6D5D6D,&6D5D5C6D,&5C5C5D5C,&5C4C6C5D,&5C5C5C5C,&4C5B5C4C 100ENDPROC 110 120DEFPROC_set_colour(Colour1,Colour2,Colour3,Colour4) 130 VDU 18,0,64 140 150 pair0 = (Colour1 AND 2) OR ((Colour2 AND 2) DIV 2) 160 pair0 = pair0 * 4 + pair0 170 pair1 = ((Colour1 AND 1)*2) OR (Colour2 AND 1) 180 pair1 = pair1 * 4 + pair1 190 pair2 = (Colour3 AND 2) OR ((Colour4 AND 2) DIV 2) 200 pair2 = pair2 * 4 + pair2 210 pair3 = ((Colour3 AND 1)*2) OR (Colour4 AND 1) 220 pair3 = pair3 * 4 + pair3 230 240 VDU pair0*16 OR pair1 250 VDU pair2*16 OR pair3 260 VDU pair0*16 OR pair1 270 VDU pair2*16 OR pair3 280ENDPROC 10000VDU 5 10020ON ERROR GOTO 10110 10030FOR X=0 TO 39 10040 PROCscroll(X,0) 10041 PROCwipe 10090NEXT 10100PROCscroll(0,0) 10110PROCmove(0,0) 10120END 10130DEFPROCscroll(I,J) 10140I=I MOD 80:J=J MOD 32 10150Xbase = I:Ybase = J 10160I=&3000-(I*8*2)-(J*640) 10170IF I<&3000 THEN I=I+&5000 10180IF I>=&8000 THEN I=I-&5000 10190*FX19 10200VDU 23;12,I DIV 2048;0;0;0 10210VDU 23;13,I MOD 2048 DIV 8;0;0;0 10220ENDPROC 10230DEFFNjoyleft 10240=(ADVAL(1) DIV 64) < 256 10250DEFFNjoyright 10260=(ADVAL(1) DIV 64) >512+256 10270DEFFNjoydown 10280=(ADVAL(2) DIV 64) < 256 10290DEFFNjoyup 10300=(ADVAL(2) DIV 64) >512+256 10400DEFPROCwipe 10410 MOVE 1280-(1280 DIV 40),0 10420 MOVE 1280-(1280 DIV 40),1023 10430 PLOT 80,1280,0 10450 PLOT 80,1280,1023 10460ENDPROC