@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@W!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `8  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D8:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D8:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED236 FREE SECTORS COPYING---D1:JA281986.PICl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 128ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8u;More Fun With Bounce;by Joel Gluck;for Analog ComputingBYTE ARRAY xx(256),yy(256),xd(256),yd(256)BYTE xc,yc,hidden,cmoT}de,TIME=20,RANDOM=53770,CONSOL=53279,CURSC=708,CH=764,NEWCOL=710,dist=[0],audball=[0]CARD num=[0],curspeed=[1500],ballspeed=U}[900]CARD ARRAY linept(48);******************************************************PROC gr5init()CARD scrn=88BYTE line,BAV}LLCOL=709,WALLCOL=710Graphics(5)FOR line=0 TO 47 DO linept(line)=scrn+20*lineODBALLCOL=$0CWALLCOL=$94RETURN;W}*************************************************************** PROC plot5(BYTE x,y,col)BYTE POINTER pixelBYTX}E ARRAY colfil= [0 85 170 255], mask= [63 207 243 252], mask2= [192 48 12 3]pixel = linept(y)+(x RSH Y}2)pixel^ = pixel^ & mask(x & 3) % (colfil(col) & mask2(x & 3))RETURN;************************************Z}************************************BYTE FUNC locate5(BYTE x,y)BYTE POINTER pixelBYTE ARRAY mask= [192 48 12 3]pixel = [}linept(y)+(x RSH 2)RETURN((pixel^ & mask(x & 3)) RSH (((x & 3) XOR 3) LSH 1));*************************************\}***********************************************PROC hline(BYTE y,c)BYTE iFOR i = 0 TO 79 DO plot5(i,y,c)ODRETUR]}N;********************************************************************PROC vline(BYTE x,c)BYTE iFOR i = 0 TO 47 DO ^} plot5(x,i,c)ODRETURN;************************************************************PROC pauz(CARD p)CARD iFOR i=1 _}TO p DOOD RETURN;************************************************************PROC f16(BYTE x,y)BYTE g,a,bg=Locate(x,`}y)IF g=32 THEN RETURNFIg==+128NEWCOL=15b=yDO color=0 Plot(x,b) b==-1 color=g a}Plot(x,b) IF b=2 THEN EXIT FI Sound(0,b,8,8) pauz(700+x*50)ODa=xDO colorb}=0 Plot (a,b) a==+1 color=g Plot(a,b) IF a=19 THEN EXIT FI Soc}und(0,a,8,8) pauz(700+x*50)ODcolor=0Plot(a,b)SndRst()RETURN;***************************************************d}************************PROC colburst(BYTE x,y)BYTE g,c,ag=Locate(x,y)IF g=32 THEN RETURNFIg=g+128NEWCOL=(Rane}d(16) LSH 4) % 10color=ga=x-1IF a>13 THEN a=0FIPlot(x,a)DrawTo(x,y)FOR c=0 TO 15 DO Sound (0,0,4,15-c) f} pauz (400)ODcolor=0Plot(x,0)DrawTo(x,y)SndRst()RETURN;*********************************************************g}********************PROC dropkick(BYTE x,y)BYTE g,h,a,bg=Locate(x,y)IF g=32 THEN RETURNFIg==+128NEWCOL=152b=h}yDO color=0 Plot(x,b) b==+1 color=g Plot(x,b) IF b=23 THEN EXIT i} FI Sound (0,b+10+(x LSH 1),10,8) Sound (1,b+20+(x LSH 1),10,8) pauz(400)ODSndRst()h=0NEWCOL=159j}a=xDO color=h Plot (a,b) h=Locate(a+1,b-1) a==+1 b==-1 color=g Plot(a,b) k} IF a=18 OR b=1 THEN EXIT FI Sound(0,a-x,8,(b RSH 1)) pauz(800)ODcolor=0Plot(a,b)l}SndRst()RETURN;***************************************************************PROC foo()BYTE vFOR v=0 TO 15 DO m} Sound(0,255,10,15-v) Sound(1,0,8,8-(v RSH 1)) pauz(500)OD SndRst()RETURN;********************************n}**************************************PROC intro()BYTE xGraphics(17)CURSC=$08Position(0,10)PrintD(6,"MORE FUN WITH")o}Position(0,12)PrintD(6,"B O U N C E !")Position(0,14)PrintD(6,"BY JOEL GLUCK")pauz(65000)pauz(65000)pauz(65000)FOR x=0p} TO 12 DO f16(12-x,10)ODFOR x=0 TO 12 DO colburst(x,12)ODFOR x=0 TO 12 DO dropkick(12-x,14)ODCURSCq}=$48Position(14,1)PrintD(6,"ANALOG")foo()Position(11,3)PrintD(6,"COMPUTING")foo()Position(12,5)PrintD(6,"FEBRUARY")fr}oo()Position(16,7)PrintD(6,"1985")foo()pauz(65000)pauz(65000)pauz(65000)RETURN;*************************************s}******************************PROC drawdoc()BYTE CURS=752CURS=1PutE()Print("Use joystick and ")PrintE(" to draw/t}erase.")Print("Hit for balls, ")PrintE(" clrs balls; ")PrintE("- clrs screen.")Print("Press to Bounce!"u})RETURN;*****************************************************************************PROC clearscrn()BYTE a,b,g FOR v}b=1 TO 19 DO FOR a=1 TO 78 DO g=locate5(a,b) IF (g=2 OR CH>28) AND g>1 THEN w} plot5(a,b,0) Sound(0,b,6,4) IF CH=28 THEN x} pauz(300) FI FI g=locate5(a,39-b) IF (g=2 OR CH>28) y}AND g>1 THEN plot5(a,39-b,0) Sound(0,b,6,4) IF CH=28 THEz}N pauz(300) FI FI OD Sound(0,0,0,0)ODIF {}CH>28 OR hidden=2 THEN hidden=0FIRETURN;************************************************************PROC movecur|}sor(BYTE bflag)BYTE g,STIK=632,TRIG=644,volBYTE ARRAY v=[2 2 2 0 2 1 1 1 0 2 0 0 0 1 1 1 1 2 1 0 1 1]INT cxd,cydIF STIK}}<15 OR bflag=1 THEN cxd=v((STIK-5) LSH 1)-1 cyd=v(((STIK-5) LSH 1) % 1)-1 IF bflag=1 THEN ~} cxd=2 FI g=hidden IF TRIG THEN vol=4 ELSE vol=10 g=}cmode*3 FI Sound(0,(xc+yc)*cmode,8+(cmode LSH 1),vol-(cmode LSH 1)) plot5(xc,yc,g) xc==+cxd } yc==+cyd IF xc<1 THEN xc=78 FI IF xc>78 THEN xc=1 FI IF y}c<1 THEN yc=38 FI IF yc>38 THEN yc=1 FI hidden=locate5(xc,yc) } plot5(xc,yc,1)FIRETURN;******************************************************************************PROC audlayball}()BYTE i,j,k FOR j=0 TO 2 DO FOR i=j*50 TO j*50+20 DO Sound(0,i,10,15-j*6) pauz(100)} ODODSound(0,0,0,0)RETURNBYTE FUNC number()BYTE n,vv=CHOpen(2,"K:",4,1)n=GetD(2)Close(2)CH=vIF n>47 AND n}<58 THEN RETURN(57-n)ELSE RETURN(99)FI;********************************************************************}************PROC audcmode()BYTE nFOR n=1 TO 50 DO IF cmode THEN Sound(0,100-n*10,10,4) ELSE} Sound(1,150-n*10,10,4) Sound(0,5-n,8,6) FI pauz(2000) SndRst() pau}z(1000)ODRETURN;**********************************************************************PROC cursor()BYTE nIF CH<>255 }THEN IF CH=33 THEN cmode==XOR 1 audcmode() ELSEIF CH=28 OR CH=156 THEN } clearscrn() ELSEIF CH=21 THEN hidden=2 plot5(xc,yc,2) movecursor(1)} audlayball() ELSE n=number() IF n<99 THEN curspeed}=n*500 FI FI CH=255FImovecursor(0)RETURN;**************************************************}****************PROC bouncedoc()CARD nPutE()n=numIF n=1 THEN PrintE("1 ball is bouncing.")ELSE PrintC(n}) PrintE(" balls are bouncing.")FIPrintE("Hit digits for speed.")Print(", changes sound focus, ")PrintE(" n}udges ball.")Print("Press to Draw again.")RETURN;*****************************************************************}*****PROC process(BYTE a,b)BYTE gg=locate5(a,b)IF g=2 THEN IF num<200 THEN xx(num)=a } yy(num)=b num==+1 ELSE plot5(a,b,0) FIELSEIF g=0 THEN plot5(a,b,1)FI}RETURN;******************************************************************************PROC ballinit()BYTE a,bCURSC=$44}num=0FOR b=1 TO 19 DO FOR a=1 TO 78 DO process(a,b) process(a,39-b) ODODFOR a=}0 TO num DO xd(a)=Rand(2) LSH 1 yd(a)=Rand(2) LSH 1ODRETURN;***********************************************}*************************PROC moveball(BYTE n)BYTE g,pa,pbg=locate5(xx(n)+xd(n)-1,yy(n)+yd(n)-1)IF g<2 THEN plot}5(xx(n),yy(n),0) xx(n)=xx(n)+xd(n)-1 yy(n)=yy(n)+yd(n)-1 plot5(xx(n),yy(n),2) IF n=audball THEN } dist==+1 FI RETURNELSE pb=locate5(xx(n),yy(n)+yd(n)-1) pa=locate5(xx(n)+xd(n)-1,yy}(n)) IF n=audball THEN IF dist THEN Sound(0,170-((38-dist) LSH 2),10,8) } Sound(1,((38-dist) LSH 2),10,8) FI dist=0 TIME=0 FI } IF pa>1 THEN xd(n)=2-xd(n) IF pb>1 THEN yd(n)=2-yd(n) } RETURN ELSE plot5(xx(n),yy(n),0) yy(n)=yy(n)+yd(n)-1 } plot5(xx(n),yy(n),2) RETURN FI ELSEIF pb>1 THEN } yd(n)=2-yd(n) plot5(xx(n),yy(n),0) xx(n)=xx(n)+xd(n)-1 plot5(xx(n),yy(n),2) } RETURN ELSEIF Rand(2) THEN xd(n)=2-xd(n) ELSE yd(n)=2-yd(n) } RETURN FIFIRETURN;*****************************************************************PROC cleanup()BYTE a},bFOR b=1 TO 19 DO FOR a=1 TO 78 DO IF locate5(a,b)=1 THEN plot5(a,b,0) } FI IF locate5(a,39-b)=1 THEN plot5(a,39-b,0) FI OD } ODRETURN;***********************************************************************PROC bounce()CARD iBYTE nb}allinit()bouncedoc()audball=0dist=0IF num THEN DO FOR i=0 TO num-1 DO moveball(i) } IF CH<>255 THEN IF CH=62 THEN audball==+1 IF audball=num THEN } audball=0 FI dist=0 ELSEIF CH=35 THEN xd(aud}ball)=2-xd(audball) ELSE n=number() IF n<99 THEN }ballspeed=n*n*100 FI FI CH=255 FI IF CONSOL=5 THEN} EXIT FI OD pauz(ballspeed) IF TIME THEN SndRst() } FI UNTIL CONSOL=5 OD SndRst()FIcleanup()RETURN;**********************************************}*********************************PROC MFWB()intro() gr5init()hline(0,3)hline(39,3)vline(0,3)vline(79,3)DO }drawdoc() xc=39 yc=19 hidden=locate5(xc,yc) cmode=1 plot5(xc,yc,1) DO } cursor() CURSC=TIME pauz(curspeed) Sound(0,0,0,0) pauz(curspeed}) UNTIL CONSOL=6 OD plot5(xc,yc,hidden) CH=255 bounce()ODRETURN;**************}**********************************************************;THATS ALL FOLKSH=255 bounce()ODRETURN;**************M; SPLASH4;------------------------------------; Gr7plus ; Paul Chabot ;MODULEBYTE ARRAY mask=[64 16 4 1]CARD ARRAY }adrow(160)PROC Clor(BYTE c)mask(3)=c:mask(2)=c LSH 2mask(1)=c LSH 4:mask(0)=c LSH 6RETURNPROC Dot(BYTE x,y)BYTE xb,xr }BYTE ARRAY row ,premask=[63 207 243 252]xb=x RSH 2:xr=x AND 3:row=adrow(y)row(xb)==& premask(xr) % mask(xr)RETURNPROC } BLine(BYTE x1,y1,x2,y2)BYTE x,y,xf,yf,iINT a,b,t,dx,dyDot(x1,y1):Dot(x2,y2) IF x2>x1 THEN dx=x2-x1:xf=0ELSE dx=x1-x2 }:xf=1 FIIF y2>y1 THEN dy=y2-y1:yf=0ELSE dy=y1-y2:yf=1 FIIF dx<2 AND dy<2 THEN RETURN FIx=x1:y=y1IF dx>dy THEN a=dy+dy:t= }a-dx:b=t-dx FOR i=2 TO dx DO IF xf=0 THEN x==+1 ELSE x==-1 FI IF t<0 THEN t==+a ELSE t==+b IF yf=0 THEN }y==+1 ELSE y==-1 FI FI Dot(x,y) ODELSE a=dx+dx:t=a-dy:b=t-dy FOR i=2 TO dy DO IF yf=0 THEN y==+1 ELSE y==-1 FI } IF t<0 THEN t==+a ELSE t==+b IF xf=0 THEN x==+1 ELSE x==-1 FI FI Dot(x,y) OD FIRETURNPROC Gr7plus()BY }TE iBYTE ARRAY dlCARD sa=88,dlist=560Graphics(8):adrow(0)=saFOR i=1 TO 159 DO adrow(i)=adrow(i-1)+40ODdl=dlist:dl(3)= }78:dl(99)=78FOR i=6 TO 98 DO dl(i)=14 ODFOR i=102 TO 166 DO dl(i)=14 ODRETURN;------------------------------------; COLO }R SPLASH;MODULEBYTE cur=752,key=764,trow=656,tcol=657 ,x,y,s,c,i,jBYTE ARRAY creg=708 ,dfault=[54 26 194 0 80]PROC }Splash()FOR i=0 TO 159 STEP s DO BLine(x,y,i,0):BLine(x,y,i,159) BLine(x,y,0,i):BLine(x,y,159,i)ODRETURNPROC IncStep }()s==+1:IF s>16 THEN s=1 FItrow=1:tcol=26:PrintB(s):Print(" ")RETURNPROC IncColor()i=c:c==+1IF c>3 THEN c=0:i=4 FIClo }r(c):i=creg(i) trow=1:tcol=37:PrintB(c):Print(" ")trow=2:tcol=36:PrintB(i RSH 4):Print(" ")trow=3:tcol=36:PrintB(i & 14):P }rint(" ")RETURNPROC IncHue()IF c=0 THEN i=4 ELSE i=c-1 FIj=creg(i) RSH 4:j==+1IF j>15 THEN j=0 FItrow=2:tcol=36:PrintB }(j):Print(" ")creg(i)=(j LSH 4)+(creg(i) & 14)RETURNPROC IncLum()IF c=0 THEN i=4 ELSE i=c-1 FIj=creg(i) & 14:j==+2IF j }>15 THEN j=0 FItrow=3:tcol=36:PrintB(j):Print(" ")creg(i)=(creg(i) & 240)+jRETURNPROC Joystick()BYTE st,kDO trow=1:tco }l=9 PrintC(x):Print(" , "):PrintB(y):Print(" ") WHILE Stick(0)=15 DO IF Strig(0)=0 THEN Splash() FI IF key<255 TH }EN k=key:key=255 IF k=62 THEN IncStep() ;S ELSEIF k=18 THEN IncColor() ;C ELSEIF k=57 THEN IncHue() } ;H ELSEIF k=0 THEN IncLum() ;L ELSEIF k=35 THEN RETURN ;N FI FI OD st=Stick(0) IF st=7 }AND x<159 THEN x==+1 ELSEIF st=11 AND x>0 THEN x==-1 ELSEIF st=13 AND y<159 THEN y==+1 ELSEIF st=14 AND y>0 THEN y==-1 } FIODRETURNPROC Setup()Gr7plus():cur=1FOR i=0 TO 4 DO creg(i)=dfault(i) ODPrintE("󠠠ӠР̠ӠȠ }")PrintE("CENTER 80 , 60 [S]tep 7 [C]OLOR")PrintE(" [joystick] [H]ue")Print("[trig]-SPLASH [N]ew Scre }en [L]um")x=80:y=60:s=7:c=0:IncColor()RETURNPROC OpenScene()Setup():x=20:y=20:s=9:Splash()IncColor():x=50:y=110:s=7:Spl }ash()IncColor():x=120:y=60:s=9:Splash()IncColor():x=80:y=130:s=9:Splash()IncColor():x=140:y=130:s=7:Splash()RETURNPROC }Main()OpenScene():Joystick()DO Setup():Joystick() ODRETURNs=9:Splash()IncColor():x=140:y=130:s=7:Splash()RETURNPROC ?; SPLASH 3;------------------------------------; Gr8; Paul Chabot;MODULEBYTE ARRAY mask=[128 64 32 16 8 4 2 1]CARD A}RRAY adrow(160)PROC Clor(BYTE c)BYTE iFOR i=0 TO 7 DO mask(7-i)=c:c==LSH 1ODRETURNPROC Dot(CARD x,BYTE y)BYTE xb,}xrBYTE ARRAY row ,premask=[127 191 223 239 247 251 253 254]xb=x RSH 3:xr=x AND 7:row=adrow(y)row(xb)==& premask(xr) % ma}sk(xr)RETURNPROC BLine(CARD x1,BYTE y1,CARD x2,BYTE y2)BYTE y,xf,yf,jCARD x,iINT a,b,t,dx,dyDot(x1,y1):Dot(x2,y2) }IF x2>x1 THEN dx=x2-x1:xf=0ELSE dx=x1-x2:xf=1 FIIF y2>y1 THEN dy=y2-y1:yf=0ELSE dy=y1-y2:yf=1 FIIF dx<2 AND dy<2 THEN RET}URN FIx=x1:y=y1IF dx>dy THEN a=dy+dy:t=a-dx:b=t-dx FOR i=2 TO dx DO IF xf=0 THEN x==+1 ELSE x==-1 FI IF t<0 THEN} t==+a ELSE t==+b IF yf=0 THEN y==+1 ELSE y==-1 FI FI Dot(x,y) ODELSE a=dx+dx:t=a-dy:b=t-dy FOR j=2 TO dy }DO IF yf=0 THEN y==+1 ELSE y==-1 FI IF t<0 THEN t==+a ELSE t==+b IF xf=0 THEN x==+1 ELSE x==-1 FI FI Do}t(x,y) OD FIRETURNPROC Gr8()BYTE bor=710,iCARD sa=88Graphics(8):bor=18:adrow(0)=saFOR i=1 TO 159 DO adrow(i)=adro}w(i-1)+40ODRETURN;------------------------------------; Variant of SPLASH;MODULEBYTE c1=709,c2=710,bor=712,cur=752 ,}key=764,trow=656,tcol=657,y,sCARD xPROC Setup()Gr8():c2=0:c1=14:cur=1:x=120:y=60:s=7bor=16*Rand(16)+2PrintE("Ү}ӠР̠ӠȠ")PrintE("CENTER 120 , 60 STEP 7 ")PrintE(" [joystick] [S] ")RETURNPROC Splash()CAR}D ibor=16*Rand(16)+2FOR i=0 TO 319 STEP s DO BLine(x,y,i,0):BLine(x,y,i,159)ODFOR i=0 TO 159 STEP s DO BLine(x,y,0,i)}:BLine(x,y,319,i)ODRETURNPROC IncStep()s==+1:bor=16*Rand(16)+2IF s>16 THEN s=1 FItrow=1:tcol=25:PrintB(s):Print(" ")R}ETURNPROC Joystick()BYTE sttrow=3:tcol=2Print("[trigger] - SPLASH ")DO trow=1:tcol=9:st=Stick(0) PrintC(x):Prin}t(" , "):PrintB(y):Print(" ") WHILE Stick(0)=15 DO IF Strig(0)=0 THEN RETURN FI IF key<255 THEN key=255:IncStep() }FI OD st=Stick(0) IF st=7 AND x<319 THEN x==+1 ELSEIF st=11 AND x>0 THEN x==-1 ELSEIF st=13 AND y<159 THEN y==+1 EL}SEIF st=14 AND y>0 THEN y==-1 FIODRETURNPROC Main()DO key=255:Setup() DO Joystick():Splash() trow=3:tcol=2 P}rint("[A]-Another [C]-Clear") WHILE key=255 DO OD IF key=18 THEN EXIT FI key=255 ODODRETURNol=2 Ps; SPLASH 3;------------------------------------; Gr8; Paul Chabot;MODULEBYTE ARRAY mask=[128 64 32 16 8 4 2 1]CARD A}RRAY adrow(160)PROC Clor(BYTE c)BYTE iFOR i=0 TO 7 DO mask(7-i)=c:c==LSH 1ODRETURNPROC Dot(CARD x,BYTE y)BYTE xb,}xrBYTE ARRAY row ,premask=[127 191 223 239 247 251 253 254]xb=x RSH 3:xr=x AND 7:row=adrow(y)row(xb)==& premask(xr) % ma}sk(xr)RETURNPROC BLine(CARD x1,BYTE y1,CARD x2,BYTE y2)BYTE y,xf,yf,jCARD x,iINT a,b,t,dx,dyDot(x1,y1):Dot(x2,y2) }IF x2>x1 THEN dx=x2-x1:xf=0ELSE dx=x1-x2:xf=1 FIIF y2>y1 THEN dy=y2-y1:yf=0ELSE dy=y1-y2:yf=1 FIIF dx<2 AND dy<2 THEN RET}URN FIx=x1:y=y1IF dx>dy THEN a=dy+dy:t=a-dx:b=t-dx FOR i=2 TO dx DO IF xf=0 THEN x==+1 ELSE x==-1 FI IF t<0 THEN} t==+a ELSE t==+b IF yf=0 THEN y==+1 ELSE y==-1 FI FI Dot(x,y) ODELSE a=dx+dx:t=a-dy:b=t-dy FOR j=2 TO dy }DO IF yf=0 THEN y==+1 ELSE y==-1 FI IF t<0 THEN t==+a ELSE t==+b IF xf=0 THEN x==+1 ELSE x==-1 FI FI Do}t(x,y) OD FIRETURNPROC Gr8()BYTE bor=710,iCARD sa=88Graphics(8):bor=18:adrow(0)=saFOR i=1 TO 159 DO adrow(i)=adro}w(i-1)+40ODRETURN;------------------------------------; Variant of SPLASH;MODULEBYTE c1=709,c2=710,bor=712,cur=752 ,}key=764,trow=656,tcol=657,y,sCARD xPROC Setup()Gr8():c2=0:c1=14:cur=1:x=120:y=60:s=7bor=16*Rand(16)+2PrintE("Ү}ӠР̠ӠȠ")PrintE("CENTER 120 , 60 STEP 7 ")PrintE(" [joystick] [S] ")RETURNPROC Splash()CAR}D ibor=16*Rand(16)+2FOR i=0 TO 319 STEP s DO BLine(x,y,i,0):BLine(x,y,i,159)ODFOR i=0 TO 159 STEP s DO BLine(x,y,0,i)}:BLine(x,y,319,i)ODRETURNPROC IncStep()s==+1:bor=16*Rand(16)+2IF s>16 THEN s=1 FItrow=1:tcol=25:PrintB(s):Print(" ")R}ETURNPROC Joystick()BYTE sttrow=3:tcol=2Print("[trigger] - SPLASH ")DO trow=1:tcol=9:st=Stick(0) PrintC(x):Prin}t(" , "):PrintB(y):Print(" ") WHILE Stick(0)=15 DO IF Strig(0)=0 THEN RETURN FI IF key<255 THEN key=255:IncStep() }FI OD st=Stick(0) IF st=7 AND x<319 THEN x==+1 ELSEIF st=11 AND x>0 THEN x==-1 ELSEIF st=13 AND y<159 THEN y==+1 EL}SEIF st=14 AND y>0 THEN y==-1 FIODRETURNPROC Main()DO key=255:Setup() DO Joystick():Splash() trow=3:tcol=2 P}rint("[A]-Another [C]-Clear") WHILE key=255 DO OD IF key=18 THEN EXIT FI key=255 ODODRETURNol=2 Ps; splash4 with front-end ; by Phil Murray 04/14/86;------------------------------------; Gr7plus ; Paul Chabot} ; splash4 with front-end ; by Phil Murray 04/14/86;------------------------------------; Gr7plus ; Paul Cha}bot ;MODULEBYTE ARRAY mask=[64 16 4 1]CARD ARRAY adrow(160)PROC Clor(BYTE c)mask(3)=c:mask(2)=c LSH 2mask(1)=c LSH 4}:mask(0)=c LSH 6RETURNPROC Dot(BYTE x,y)BYTE xb,xrBYTE ARRAY row ,premask=[63 207 243 252]xb=x RSH 2:xr=x AND 3:row=a}drow(y)row(xb)==& premask(xr) % mask(xr)RETURNPROC BLine(BYTE x1,y1,x2,y2)BYTE x,y,xf,yf,iINT a,b,t,dx,dyDot(x1,y1):Do}t(x2,y2) IF x2>x1 THEN dx=x2-x1:xf=0ELSE dx=x1-x2:xf=1 FIIF y2>y1 THEN dy=y2-y1:yf=0ELSE dy=y1-y2:yf=1 FIIF dx<2 AND }dy<2 THEN RETURN FIx=x1:y=y1IF dx>dy THEN a=dy+dy:t=a-dx:b=t-dx FOR i=2 TO dx DO IF xf=0 THEN x==+1 ELSE x==-1 FI } IF t<0 THEN t==+a ELSE t==+b IF yf=0 THEN y==+1 ELSE y==-1 FI FI Dot(x,y) ODELSE a=dx+dx:t=a-dy:b=t-dy F}OR i=2 TO dy DO IF yIRETURNPROC Gr7plus()BYTE iBYTE ARRAY dlCARD sa=88,dlist=560Graphics(8):adrow(0)=saFOR i=1 TO} 159 DO adrow(i)=adrow(i-1)+40ODdl=dlist:dl(3)=78:dl(99)=78FOR i=6 TO 98 DO dl(i)=14 ODFOR i=102 TO 166 DO dl(i)=14 OD}RETURN;------------------------------------; experimental code by Phil Murray; adapted from SPLASH4;; This program wi}ll draw a line; from the location chosen by the; first trigger pressing to the ; location chosen by the second; trigger p}ressing.;;------------------------------------ MODULEBYTE cur=752,key=764, x,y,s,c,i,j,trow=656,tcol=657,; new fiel}ds -PRM- startx=[0],starty=[0], endx=[0], endy=[0], xmax=[159],ymax=[159] BYTE ARRAY creg=708 ,dfault=[54 26} 194 0 80]PROC pauz(CARD n)CARD i FOR i=0 TO n*2 DO ODRETURN PROC Jstick(); taken from Splash4BYTE st DO t}row=1 tcol=1 Print("Row/Column: ") PrintC(x) Print(" / ") PrintB(y) Print(" ") WHILE Stick(0)=15 DO; this bl}inks the cursor Clor(1) Dot(x,y) Pauz(100) Clor(0) Dot(x,y) IF Strig(0)=0 THEN IF startx=0 THEN; this is for t}he first trigger press startx=x starty=y Clor(c) Dot(x,y) trow=2 tcol=1 Print("Positioning for end of} line ") pauz(5000) ELSE; this is for the second trigger press endx=x endy=y Clor(c) Bline}(startx, starty,endx,endy) startx=0 starty=0 endx=0 endy=0 trow=2 tcol=1 Print(" } ") pauz(5000) FI FI OD st=Stick(0) IF st=7 AND x0 TH}EN x==-1 ELSEIF st=13 AND y0 THEN y==-1 FI; this blinks the cursor and clicks the} keyboard Clor(1) Dot(x,y) Pauz(100) Clor(0) Dot(x,y) POKE(53279,8) POKE(53279,0) IF startx>0 THEN Clor(c) Dot(start}x, starty) FIODRETURNPROC Setup()Gr7plus():cur=1FOR i=0 TO 4 DO creg(i)=dfault(i) ODPrintE("ҷӠ}")RETURNPROC Main()x=xmax/2 y=ymax/2C=2 Clor(c)DO Setup():Jstick() ODRETURNntE("ҷӠ`; ================; = Air Hockey =; = by =; = Chris Page =; ================; Copyright (c) 1985 ANALOG C }omputing; Special Thanks to:; David Sullivan & David BeckerDEFINE OPTION="3",SELECT="5",START="6", NONE="7",LEFT="96 }",RIGHT="60", TOP="56",BOT="144"BYTE NINDEX,VOLUME,FRICTION=[1], BOUNCE=[90],WIN=[10],PLAYERS=[2], HUE,LUM,OPT,PUCK }XD,PUCKYD,HITFLAG, SERVER,GAMEOVER,SERVEIT,SDMCTL=559, CONSOL=53279,CHACT=755,WSYNC=54282, VCOUNT=54283,CRSINH=752, C }OLOR0=53270,COLOR1=53271, COLOR2=53272,COLOR3=53273, COLOR4=53274,RTCLOK=20, DMACTL=54272,LMARGN=82,RMARGN=83, CHBAS= }756,PMBASE=54279, HITCLR=53278,P2PL=53262, GRACTL=53277,GPRIOR=623, RANDOM=53770,COLPM0=53266, COLPM1=53267,CH=764,RA}MTOP=106, AUDCTL=53768,ATRACT=77,KEYBYTE ARRAY DLIST,SCRMEM,RAMFONT,PMMEM($800), BAR(0)=[$FF$FF], PUCK(0)=[$60$F0$F}0$F0$F0$F0$F0$60], TTOP(0)=['Q'R'R'R'R'R'R'''''R 'R'R'R'R'R'E], TMID(0)=['R'T'T'T'T'T'T'T'T'T'T'T } 'T'T'T'T'T'R], TBOT(0)=['Z'R'R'R'R'R'R'''''R 'R'R'R'R'R'C], NOTE(0)=[243 243 217 243 204 243 } 193 204], YTOP(0)=[6 80],YBOT(0)=[62 144], SCORE(2),PDLX(2),PDLY(2),OSTIK(2), ROMSET($400)=$E000,HPOSP(4)=53248, HPO}SM(4)=53252,PCOLR(4)=704CARD PUCKXV,PUCKYV,PUCKX,PUCKY, MAXV=[500],DLISTL=560,SAVMSC=88, XITVBV=$E462; --- Miscell}aneous Procedures ---PROC SETVBV=$E45C(BYTE CMD,VBIHI, VBILO)PROC VBI(); VBI to play music SOUND(0,}NOTE(NINDEX),10,VOLUME) SOUND(1,NOTE(NINDEX)-2,10,VOLUME) VOLUME==-1 IF VOLUME=0 THEN VOLUME=15 NINDEX==+1 }IF NINDEX=8 THEN NINDEX=0 FI FI; JMP XITVBV [$4C XITVBV]RETURNPROC INITVBI(); Initialize music VBI NIND}EX=0 VOLUME=15 SNDRST() ; set deferred vbi vector SETVBV(7,VBI RSH 8,VBI)RETURNPROC DEBOUNCE()CARD I; Debounce c}onsole keys FOR I=0 TO 5000 DO DO UNTIL CONSOL=NONE OD ODRETURN; --- Title Screen ---PROC INITTITLE()}BYTE I; Initialize title screen GRAPHICS(0) GPRIOR=17 GRACTL=0 SDMCTL=0 CRSINH=1 HUE=0 DLIST=DLISTL DO }UNTIL VCOUNT=0 OD FOR I=3 TO 5 DO DLIST(I+7)=DLIST(I) OD SETBLOCK(DLIST,10,$70) FOR I=13 TO 25 STEP 2 DO DL}IST(I)=0 OD SETBLOCK(DLIST+27,2,$70) SETCOLOR(1,0,14) SETCOLOR(2,0,8) POSITION(11,0) PRINT("Air Hockey") POSITI}ON(1,1) PRINT("By: Chris Page") POSITION(29,1) PRINT("Thanks: D.S. and D.B.") POSITION(17,2) PRINT( "June 30, 19}84 - August 9, 1985") POSITION(7,4) PRINT("Copyright (c) 1984") POSITION(34,5) PRINT("Press ") SDMCTL=33RETU}RNPROC TITLECOLORS()BYTE I; Mid-screen color changes HUE==+2 IF HUE&2 THEN CHACT==+1&3 FI FOR I=0 TO 30 DO } DO WSYNC=0 COLOR4=VCOUNT LSH 1+HUE IF VCOUNT=48 THEN COLOR1=0 FI UNTIL VCOUNT&128 } OD ODRETURNPROC TITLE(); Display title screen INITTITLE() INITVBI() DO TITLECOLORS() UNTIL CONSOL=STAR }T OD SDMCTL=0RETURN; --- Game Options ---PROC INITOPTIONS(); Initialize procedure OPTIONS() GRAPHICS(17) SDMCT!}L=0 GRACTL=0 DO UNTIL VCOUNT=0 OD DEBOUNCE() SCRMEM=SAVMSC DLIST=DLISTL DLIST(3)==+1 SETCOLOR(0,3,14) S"}ETCOLOR(2,0,14) PRINTDE(6," GAME OPTIONS") POSITION(0,2) PRINTD(6," - NEXT OPTION") PRINTDE(6," - CHOO#}SE") PRINTDE(6," - PLAY GAME") POSITION(3,6) PRINTD(6,"FRICTION: O") IF FRICTION THEN PRINTD(6,"N") ELSE$} PRINTD(6,"FF") FI POSITION(3,8) PRINTD(6,"VELOCITY: ") PRINTBD(6,MAXV/100) POSITION(3,10) PRINTD(6,"BOUNCE :%} ") PRINTBD(6,BOUNCE/10) POSITION(3,12) PRINTD(6,"WIN AT : ") PRINTBD(6,WIN) POSITION(3,14) PRINTD(6,"PLAYERS : &}") PRINTBD(6,PLAYERS) SDMCTL=34 OPT=0RETURNPROC OPTIONCOLORS(BYTE OPT); Mid-screen color changes; OPT=option line'} to hi-light DO WSYNC=0 UNTIL VCOUNT=15 OD LUM=0 WSYNC=0 DO WSYNC=0 COLOR0=LUM&$0F%$20 LUM==+2(} UNTIL VCOUNT=25 OD WSYNC=0 COLOR0=0 COLOR4=6 DO WSYNC=0 UNTIL VCOUNT=40 OD COLOR0=$F8 OPT==LSH 3+)}41 DO WSYNC=0 UNTIL VCOUNT=OPT OD COLOR0=$FE DO WSYNC=0 UNTIL VCOUNT=OPT+8 OD COLOR0=$F8RETURN*}PROC OPTIONS()CARD I; Get game options from player(s) INITOPTIONS() DO FOR I=0 TO 10 DO OPTIONCOLORS(OPT) +} UNTIL CONSOL=START OD IF CONSOL=OPTION THEN OPT==+1 IF OPT=5 THEN OPT=0 FI FI I,}F CONSOL=SELECT THEN IF OPT=0 THEN FRICTION==!1 IF FRICTION THEN SCRMEM(134)=46 SCR-}MEM(135)=0 ELSE SCRMEM(134)=38 SCRMEM(135)=38 FI ELSEIF OPT=1 THEN IF MAXV=.}900 THEN SCRMEM(173)==-7 MAXV=200 ELSE SCRMEM(173)==+1 MAXV==+100 FI/} ELSEIF OPT=2 THEN IF BOUNCE=90 THEN SCRMEM(213)==-9 BOUNCE=0 ELSE SCRMEM(0}213)==+1 BOUNCE==+10 FI ELSEIF OPT=3 THEN IF WIN=90 THEN SCRMEM(253)==-8 1}WIN=10 ELSE SCRMEM(253)==+1 WIN==+10 FI ELSE IF PLAYERS=2 THEN SC2}RMEM(293)==-1 PLAYERS=1 ELSE SCRMEM(293)==+1 PLAYERS=2 FI FI FI U3}NTIL CONSOL=START OD SDMCTL=0 SNDRST()RETURN; --- Play Air Hockey ---PROC MAKEFONT()BYTE ICARD J; Change chara4}cter setBYTE ARRAY CDAT(8)=[$55$55$55$55$54$54$50$40], EDAT(8)=[$40$50$54$54$55$55$55$55], QDAT(8)=[$01$05$15$15$55$55}5$55$55], RDAT(8)=[$55$55$55$55$55$55$55$55], SDAT(8)=[$FF$FF$FF$FF$FF$FF$FF$FF], TDAT(8)=[$AA$AA$2A$AA$AA$AA$A2$AA], 6} ZDAT(8)=[$55$55$55$55$15$15$05$01] RAMFONT=(RAMTOP-8)*$100 MOVEBLOCK(RAMFONT,ROMSET,$400) ZERO(RAMFONT+536,192) CHB7}AS=RAMTOP-8 SDMCTL=61 FOR I=0 TO 7 DO FOR J=0 TO 3000 DO OD RAMFONT(536+I)=CDAT(I) RAMFONT(552+I)=EDAT(I) 8} RAMFONT(648+I)=QDAT(I) RAMFONT(656+I)=RDAT(I) RAMFONT(664+I)=SDAT(I) RAMFONT(672+I)=TDAT(I) RAMFONT(720+I)=Z9}DAT(I) ODRETURNPROC POSPLAYER(CARD PLAYER BYTE X,Y,LENGTH BYTE ARRAY SHAPE); Position Pl:}ayer HPOSP(PLAYER)=X+LEFT PLAYER==*$100+$400 MOVEBLOCK(PMMEM+PLAYER+Y+TOP, SHAPE,LENGTH)RETURNPROC POSP;}DL(BYTE PADDLE,X,Y); Position paddle POSPLAYER(PADDLE,X,Y,2,BAR)RETURNPROC POSPUCK(CARD X,Y); Position puck X==/100<} Y==/100 POSPLAYER(2,X,Y,8,PUCK)RETURNPROC ERASEPDL(CARD PADDLE BYTE Y); Erase paddle PADDLE==*$100+$400 ZERO(P=}MMEM+PADDLE+Y+TOP,2)RETURNPROC ERASEPUCK(CARD Y); Erase puck Y==/100+TOP ZERO(PMMEM+$600+Y,8)RETURNPROC ERASEALL>}(); Clear Player memory ERASEPDL(0,PDLY(0)) ERASEPDL(1,PDLY(1)) ERASEPUCK(PUCKY)RETURNPROC INITPMG(); Initialize ?}PMG PMMEM=(RAMTOP-16)*$100 Zero(PMMEM,$800) PCOLR(0)=$76 PCOLR(1)=$76 PCOLR(2)=$36 PMBASE=RAMTOP-16 GRACTL=3RE@}TURNPROC INITPLAY()CARD I; Initialize game GRAPHICS(0) SDMCTL=0 DO UNTIL VCOUNT=0 OD SETVBV(7,$E4,$62) SA}NDRST() DEBOUNCE() INITPMG() SCRMEM=SAVMSC SCORE(0)=0 SCORE(1)=0 OSTIK(0)=15 OSTIK(1)=15 SERVER=0 GAMEOVER=B}0 CRSINH=1 DLIST=DLISTL DLIST(2)=DLIST(3)+4 DLIST(3)=DLIST(4) DLIST(4)=DLIST(5) DLIST(5)=$30 DLIST(7)=$30 SETC}BLOCK(DLIST+8,21,4) SETCOLOR(0,3,6) SETCOLOR(1,0,14) SETCOLOR(2,0,4) SETCOLOR(3,2,14) SETCOLOR(4,0,6) POSITION(3,D}0) PRINTE("air hockey") SAVMSC==+16 POSITION(0,0) PRINTF( " One : 00 | Win : %B | Two : 00", win) MOVEBLOCK(SE}CRMEM+55,TTOP,18) FOR I=87 TO 663 STEP 32 DO MOVEBLOCK(SCRMEM+I,TMID,18) OD MOVEBLOCK(SCRMEM+695,TBOT,18) MAKEFONF}T() SOUND(3,0,0,3) KEY=0 CH=$FFRETURNPROC SERVE(BYTE PLAYER)CARD I; Initialize positions ERASEALL() PDLX(0)=2G}8 PDLX(1)=28 PDLY(0)=YTOP(0) PDLY(1)=YBOT(1) PUCKX=3000 PUCKY=4000+6800*PLAYER PUCKXV=0 PUCKYV=0 POSPDL(0,PDLH}X(0),PDLY(0)) POSPDL(1,PDLX(1),PDLY(1)) POSPUCK(PUCKX,PUCKY) HITCLR=0 HITFLAG=0 VOLUME=0RETURNPROC MOVEPADDLE(BI}YTE P)BYTE STIK; Move paddle ERASEPDL(P,PDLY(P)) STIK=STICK(P) ; move puck 2 for one player game IF PLAYERS=P THENJ} STIK=$F IF PDLX(1)+2PUCKY/100 THEN STIK==-1 ELSE STIK==-2 IF RAND(2) THEN STIK==+1L} FI FI FI ; save stick position OSTIK(P)=STIK ; move paddle verticaly IF (STIK&1)=0 THEN PDLY(P)==-2M} IF PDLY(P)YBOT(P) THENN} PDLY(P)=YBOT(P) FI FI ; move paddle horizontaly IF (STIK&8)=0 THEN PDLX(P)==+2 IF PDLX(P)>RIGHT-4 THO}EN PDLX(P)=RIGHT-4 FI ELSEIF (STIK&4)=0 THEN PDLX(P)==-2 IF PDLX(P)>240 THEN PDLX(P)=0 FI FIP} POSPDL(P,PDLX(P),PDLY(P))RETURNPROC REVERSEPX(); Reverse horizontal puck direction VOLUME=14 PUCKXD==!1 IF PUCKXQ}V<(90-BOUNCE) THEN PUCKXV=0 ELSE PUCKXV==-(90-BOUNCE) FIRETURNPROC REVERSEPY(); Reverse vertical puck directR}ion VOLUME=14 PUCKYD==!1 IF PUCKYV<(90-BOUNCE) THEN PUCKYV=0 ELSE PUCKYV==-(90-BOUNCE) FIRETURNPROC MOVS}EPUCK()BYTE PADDLE,XDIF,YDIF,STIK,ABOVECARD ARRAY XVELOC(0)=[400 140 100 80 40 0 40 80 100 140 400]; MT}ove the puck ERASEPUCK(PUCKY); check for paddle collisions PADDLE=0 IF PUCKY/100>70 THEN PADDLE=1 FI STIK=OSTIU}K(PADDLE) IF P2PL THEN IF HITFLAG=0 THEN VOLUME=14 ; new x velocity & direction XDIF=PUCKX/100+3-PDLX(PV}ADDLE) PUCKXV=XVELOC(XDIF) PUCKXD=0 IF XDIF>5 THEN PUCKXD=1 FI ; new y velocity & directiW}on YDIF=PUCKY/100-PDLY(PADDLE) ABOVE=0 IF PADDLE THEN IF PUCKY/100200 THEN PUCKYD==!1 FI]} ELSE PUCKYV==+200 FI ELSEIF PUCKYD=0 AND (STIK&3)=2 THEN IF^} ABOVE=0 THEN PUCKYV==-200 IF PUCKYV>200 THEN PUCKYD==!1 FI ELSE_} PUCKYV==+200 FI ELSEIF PUCKYD=1 AND (STIK&3)=2 THEN IF ABOVE THEN `} PUCKYD==!1 PUCKYV==+200 FI ELSEIF PUCKYD=0 AND (STIK&3)=1 THEN a} IF ABOVE=0 THEN PUCKYD==!1 PUCKYV==+200 FI FI FI FI HITFLAG=1 ELSEb} HITFLAG=0 FI HITCLR=0; move horizontaly IF PUCKXV>MAXV THEN PUCKXV=MAXV FI IF PUCKXD THEN PUCKX==+PUCc}KXV ELSE PUCKX==-PUCKXV FI; check boundaries IF PUCKX>24000 THEN REVERSEPX() PUCKX=0 ELSEIF PUCKX>RIGHT*d}100 THEN REVERSEPX() PUCKX=RIGHT*100 FI IF PUCKYV>MAXV THEN PUCKYV=MAXV FI; move verticaly IF PUCKYD THEe}N PUCKY==+PUCKYV ELSE PUCKY==-PUCKYV FI; check boundaries IF PUCKY>24000 THEN REVERSEPY() PUCKY=0 ELf}SEIF PUCKY>BOT*100 THEN REVERSEPY() PUCKY=BOT*100 FI; handle friction IF PUCKXV THEN PUCKXV==-FRICTION FIg} IF PUCKYV THEN PUCKYV==-FRICTION FI; fading collision sound IF VOLUME THEN VOLUME==-2 SOUND(0,10,8,VOLUME)q}b%DOS SYSb*)DUP SYSb\SMFBOUNCEACTbSPLASH4 ACTbSPLASH ACTbSPLASH3 ACTbSPLSHPRMACTbsAIRHOCK ACTb|DEMNBRDSACTbuSNEAK ACTbDuMENU ACTbPULSE ACTbDISK CAT SOUND(1,10,10,VOLUME) ELSE SOUND(0,0,0,0) SOUND(1,0,0,0) FI POSPUCK(PUCKX,PUCKY)RETURNPROC GOAL(BYTE Pr}LAYER)BYTE ICARD J; Inc score, check for a winner SNDRST() ERASEPUCK(PUCKY) VOLUME=0 SERVEIT=1 SERVER=PLAYER Ss}CORE(PLAYER)==+1 IF SCORE(PLAYER)=WIN THEN GAMEOVER=1 FI; flash score FOR I=0 TO 5 DO SETBLOCK(SCRMEM+23+22*PLt}AYER,2,0) FOR J=0 TO 5000 DO OD SCRMEM(23+22*PLAYER)= 16+SCORE(PLAYER)/10 SCRMEM(24+22*PLAYER)= u} 16+SCORE(PLAYER) MOD 10 SOUND(0,20,10,8) FOR J=0 TO 5000 DO OD SOUND(0,0,0,0) OD; cheering IF GAMEOVER=v}0 THEN FOR I=0 TO 30 DO FOR J=0 TO 1000 DO OD SOUND(0,10,8,I RSH 1) OD FOR J=0 TO 40000 DO OD FORw} I=0 TO 30 DO FOR J=0 TO 1000 DO OD SOUND(0,10,8,15-I RSH 1) OD FI SNDRST() SOUND(3,0,0,3)RETURNPROx}C MOVEALL(); Move paddles and puck; keep attract mode at bay ATRACT=0; check for goal IF PUCKX>2400 AND PUCKX<3700 THEy}N IF PUCKY=0 THEN GOAL(1) ELSEIF PUCKY=BOT*100 THEN GOAL(0) FI FI IF GAMEOVER=0 THEN MOVEPUCKz}() MOVEPADDLE(0) MOVEPADDLE(1) FIRETURNPROC ENDGAME()BYTE ICARD J,K; Cheer profusly and end game SNDRST(){} FOR I=0 TO 30 DO FOR J=0 TO 1000 DO OD SOUND(0,10,8,I RSH 1) OD FOR J=0 TO 200 DO FOR K=0 TO 500 DO OD |}IF RAND(130)=0 THEN FOR I=0 TO 15 DO FOR K=0 TO 1200 DO OD SOUND(1,30-I,10,I) OD FOR I=0 TO}} 15 DO FOR K=0 TO 1200 DO OD SOUND(1,15+I,10,15-I) OD FI OD FOR I=0 TO 30 DO FOR J=0 TO 100~}0 DO OD SOUND(0,10,8,15-I RSH 1) OD FOR J=0 TO 40000 DO ODRETURNPROC PLAY(); Play Air Hockey INITPLAY() SERV}E(SERVER) DO DO UNTIL VCOUNT=100 OD IF CH<>$FF THEN KEY=GETD(1) FI IF KEY=32 OR SERVEIT=1 T}HEN SERVE(SERVER) KEY=0 CH=$FF SERVEIT=0 FI MOVEALL() UNTIL GAMEOVER=1 OR KEY=27 OR } CONSOL=6 OD IF KEY<>27 AND CONSOL<>6 THEN ENDGAME() FI SNDRST()RETURN; --- Main Procedure ---PROC MAIN}() LMARGN=0 CLOSE(1) OPEN(1,"K:",4,0) DO TITLE() WHILE CONSOL=6 DO OPTIONS() PLAY() OD UN}TIL KEY=27 OD CLOSE(1) GRAPHICS(0) GRACTL=0RETURN WHILE CONSOL=6 DO OPTIONS() PLAY() OD UN<;******************;* *;* Demon Birds *;* by *;* Dan Bullok *;* *;****!}**************;Data For Player 0BYTE ARRAY p0=[12 12 12 12 4 12 14 30 29 45 13 0 0 0 0 0 0 0 0 102 12 12 12 12 4 12 14!} 14 13 30 12 0 0 0 0 0 0 0 2 50 12 12 12 12 4 12 14 14 14 30 12 0 0 0 0 0 4 4 0 24 12 12 12 12 4 12 12 12 14 14 28 0 0 !}0 0 0 0 0 48 6 48 48 48 48 32 48 112 120 184 180 176 0 0 0 0 0 0 0 0 102 48 48 48 48 32 48 112 112 176 120 48 0 0 0 0!} 0 0 0 64 76 48 48 48 48 32 48 112 112 112 120 48 0 0 0 0 0 32 32 0 24 48 48 48 48 32 48 48 48 112 112 56 0 0 0 0 0 0 0!} 12 96];Data For Player 1BYTE ARRAY p1=[0 0 0 0 4 12 14 30 29 13 12 12 28 28 20 50 34 34 34 102 0 0 0 0 4 12 14 14 13 !}14 8 12 12 12 28 24 20 20 18 50 0 0 0 0 4 12 14 14 14 14 8 12 12 28 28 8 12 12 8 24 0 0 0 0 4 12 12 12 14 14 12 12 12 !} 12 12 20 20 18 50 6 0 0 0 0 32 48 112 120 184 176 48 48 56 56 40 76 68 68 68 102 0 0 0 0 32 48 112 112 176 112 16 48 4!}8 48 56 24 40 40 72 76 0 0 0 0 32 48 112 112 112 112 16 48 48 56 56 16 48 48 16 24 0 0 0 0 32 48 48 48 112 112 48 48 48!} 48 48 40 40 72 76 96];Meteor DataBYTE ARRAY ball=[60 126 255 255 255 255 126 60], ball2(8),coordstore(30);!}Character SetBYTE ARRAY chset= [0 0 0 0 0 0 0 0 0 32 32 160 168 168 170 170 170 170 170 170 170 170 1!}70 170 0 128 128 128 162 170 170 170 128 128 128 136 136 168 170 170 0 0 0 0 0 0 170 170 0 0 2 34!} 42 170 170 170 0 2 2 2 34 42 42 170 0 0 0 2 2 34 42 170 0 5 85 1 1 1 0 0 20 9!}2 85 64 64 64 64 0 0 1 1 1 5 85 0 0 64 64 64 84 92 85 0 0 20 53 85 1 1 1 1 0 0 !} 80 85 64 64 64 0 0 1 1 1 21 53 85 0 0 0 64 64 64 80 85 0 0 252 254 102 102 102 254 252 0 !} 0 0 60 102 124 96 56 14 0 0 254 255 219 219 219 3 0 0 63 102 102 102 60 0 0 0 220 102 102 102 246!} 7 252 254 102 126 102 254 252 0 24 0 56 24 24 24 62 0 0 0 223 96 96 96 240 0 14 12 252 204 204 204 !}119 0 0 0 62 96 60 6 252 0 0 195 60 60 60 195 0 0],chset2= [15 31 63 120 120 120 124 127 248 252!} 252 28 28 28 28 220 127 124 124 126 126 126 126 60 220 28 28 28 28 20 20 8 126 126 127 127 121 121 124 124!} 8 28 28 28 156 156 220 220 126 126 127 127 127 127 127 62 252 124 124 60 60 20 20 8 96 112 112 112 112 112 !}112 120 0 0 0 0 0 0 0 0 120 124 124 126 126 127 127 63 0 0 0 0 0 248 236 248 63 127 127 120 !}112 112 112 120 248 252 252 28 28 28 28 28 120 124 124 126 126 127 127 63 28 28 28 28 28 244 244 248 63 127!} 127 120 112 112 112 121 248 252 252 0 0 0 0 248 120 124 124 126 126 127 127 63 252 124 28 28 28 244 244 248!}];Notes for songBYTE ARRAY notes= [243 243 162 182 162 182 193 243],notes1= [162 96 108 121 108 121 128 162],dur=[10!} 10 30 6 6 6 10 20],increase=[2 0];y-positions of birdsBYTE ARRAY strafey= [10 11 12 13 14 15 16 17 18 19 19 19 19 1!}8 17 16 15 14 13 12 11 10 11 12 11 10 11 11 10 10 10 10 10 10 10 10 10 10 10 10 07 08 10 12 14 16 17 17 18 18 18 18 !}18 17 16 15 15 14 14 13 13 13 13 14 14 14 15 15 14 13 12 12 11 10 10 10 09 08 08 08 14 14 14 15 15 15 16 16 17 18!} 18 18 18 18 18 18 18 18 19 19 20 20 20 20 20 20 19 19 19 18 18 17 17 16 15 15 14 14 14 14 12 12 13 14 15 16 18 19 1!}9 20 20 19 19 18 16 15 14 13 12 12 13 13 14 15 16 17 18 18 18 18 18 18 18 16 15 14 13 12 12 12 14 14 14 14 15 16 !}16 17 18 18 19 19 19 19 19 18 18 17 17 17 17 17 17 18 18 19 19 19 19 19 18 17 17 16 16 15 15 14 14 14 14 14 15 16 16!} 16 17 17 18 18 18 19 19 19 20 20 19 19 19 19 18 18 17 17 16 16 16 15 15 15 15 15 15 14 14 14 14 14 14 14]BYTE ARR!}AY flapinc=[1 0], bexist(10)BYTE bcount,char1,char2,dieflag,bx, by,fallx,fally,fallflag,bflap;Miscellaneous variable!}sBYTE a,b,c,d,e,x=[100],y=[154], ctr=[0],dir,fx,fy,fireflag,df, mx=[10],my=[10],chad,men=[4], memory,gflag=[1!}];Hardware registersBYTE vcount=54283,colpf0=53270, colpf1=53271,colpf2=53272, colpf3=53273,wsync=54282, ch!}base=54281,random=53770, consol=53279,rtclock=20,ch=764CARD pmbase,ac,bc,cc,vdslst=512, dli1vec,score=[0],energy=!}[50]PROC Dli2();Changes color of text window to red[72 169 68 141 10212 141 24 208 169 0 141 23 208]vdslst=dli1vec[1!}04 64]RETURNPROC Dli1();Changes color of ground to Brown[72 169 20 141 10212 141 23 208]vdslst=Dli2[104 64]RETURN!}INT FUNC DeltaX();Returns Delta-X value of stick(0)BYTE aaINT xxaa=Stick(0)IF aa>12 THEN xx=0ELSEIF aa<8 THEN xx=1!} dir=80ELSE xx=-1 dir=0FIRETURN(xx)PROC Center(CARD cnum BYTE basx,basy);right-justifies numberIF cnum<1!}0 THEN Position(basx,basy) PrintD(6,"0")ELSEIF cnum<100 THEN Position(basx-1,basy) PrintD(6,"0")ELSEIF cnum<1000 TH!}EN Position(basx-2,basy) PrintD(6,"0")ELSE Position(basx-3,basy) PrintD(6," ")FIPrintCD(6,cnum)RETURNPROC Dela!}y(CARD cnt);Delay LoopCARD cnntFOR cnnt=1 TO cnt DO ODRETURNPROC PMove(CARD pm,add BYTE plr,px,py,pix);M!}oves Player;Variables passed:;pm: address of pmbase;add: address of source image;plr: # of player to move 0-3;px: x-!}position of player;py: y-position of player;pix: number of bytes to movepx==+48py==+32 ;add screen margin offsetsac=p!}m+1024+plr*256 ;add work spaceZero(ac+py-5,pix+10) ;clear area outMoveBlock(ac+py,add,pix)Poke(53248+plr,px)RETURNPROC!} BirdPos (BYTE xpos,ypos,char1,char2);Puts Two bytes, char1 & char2;AT xpos, ypos on screenCARD scmem=88ac=scmem+!}xpos+(ypos*40)Poke(ac,char1)Poke(ac+1,char2)RETURNPROC Song()FOR a=0 TO 7 DO ;eight notes in song b=notes(a) c=du!}r(a) d=10 e=notes1(a) FOR ac=1 TO c*40 DO IF ac MOD 100=0 THEN d==-1 ;decrement volume FI Sound(0,b,1!}0,d) Sound(1,e,10,d) OD Sound(0,0,0,0) Sound(1,0,0,0)ODRETURNPROC Init();Initialize chset,pmg & playfieldPo!}ke(106,memory) ;reset top of memoryGraphics(0)Poke(559,0) ;turn ANTIC off;Display Listac=PeekC(560)FOR a=6 TO 24 DO Po!}ke(ac+a,4) ;IR Mode 4ODPoke(ac+25,164) ;DLI & VSCROLL onPoke(ac+26,164)Poke(ac+27,34) ;VSCROLL SetPoke(ac+28,34);colors!}Poke(706,30)Poke(707,14)Poke(708,68)Poke(709,12)Poke(710,128)Poke(712,128)Poke(752,1) ;cursor offPoke(82,0) ;Left mar!}gin-0;Character Seta=Peek(106)-8chad=aPoke(106,a)Poke(756,a)FOR ac=0 TO 1023 DO b=Peek(57344+ac) Poke(a*256+ac,b)O!}DMoveBlock(a*256+512,chset,224)MoveBlock(a*256+776,chset2,160);Player missile graphicsa==-16Poke(106,a)Poke(54279,a)Po!}ke(53277,3)Poke(623,52)pmbase=a*256Zero(pmbase,2048);PlayfieldPosition(14,0)Print(" ");above is CTRL-Q R S T!} U V W X Y ZPosition(0,21)Print("")Print("");above is CTRL B B D 23-E's F B BPos!}ition(0,22)Print(" SCORE: 000000")PrintE(" MEN: 00")Print(" ENERGY: 00000")Center(score,13,22)Center(energy!},14,23)Position(31,22)Print("0")PrintC(men);DLI'sdli1vec=Dli1vdslst=Dli1Poke(54286,192)Poke(559,62)FOR e=0 TO 19 DO !};reset x & y values coordstore(e)=0 ODFOR e=20 TO 29 DO ;random wing flaps coordstore(e)=Rand(2) ODfallflag=0 ;disable !}meteorRETURNPROC CntFire();Continue firingcc=PeekC(88)bc=fy*40+fxSound(0,fy+fy+180,10,fy/2)Poke(cc+bc,0) ;Erase Fir!}eball;Check for Illegal coordinatesIF fx=2 OR fx=37 OR fy=2 THEN fireflag=0 Sound(0,0,0,0) RETURNFI;Increment posit!}ionsfx==+dffy==-1cc=PeekC(88)bc=fy*40+fxc=Peek(cc+bc) ;Object under fireballPoke(cc+bc,219) ;fireball characterDelay(3!}00)IF c THEN ;check what under fireball FOR e=0 TO 5 DO ;Which bird hit? IF bexist(e)=1 THEN a=coordstore(e) !} b=coordstore(10+e) IF afx-2 AND fy=b THEN bexist(e)=0 BirdPos(a,b,0,0) P!}Move(pmbase,ball2,3,fx*4, fy*8,8);put explosion Delay(200) FI FI OD Sound(0,150,8,10) D!}elay(3000) ;Clear player 3 area Zero(pmbase+fy*8+1824,8) energy==+2 fireflag=0 Sound(0,0,0,0) score==+1 ;increase!} score Poke(cc+bc,0)FIPoke(cc+bc,0)RETURNPROC Title();Prints out title pageGraphics(17)Poke(559,0);turn ANTIC off!};Display listac=PeekC(560)Poke(ac+13,7)Poke(ac+15,4)Poke(ac+13,7)Poke(756,chad+2)Position(3,2)PrintD(6,"ABEFABIJMNQR"!})Position(3,3)PrintD(6,"CDGHCDKLOPST")Position(5,5)PrintD(6,"PRESENTS")Position(4,8)PrintD(6,"12345 6789:")Position(3,!}15)PrintD(6,"BY DAN BULLOK")Position(0,18)PrintD(6," press start")Position(5,10)PrintD(6," ")!}PrintD(6," ");above=space INVERSE CTRL-I J 4spaces;CTRL-K L 4spaces CTRL-I J 4spaces;CTRL-K L 4spaces CTRL-I J 2spaces!};PMG stuffPoke(53277,3)Poke(623,32)Poke(704,28)Poke(705,128)Poke(708,12)Poke(709,92)Poke(712,134)PMove(pmbase,p0,0,11!}9,131,20)PMove(pmbase,p1,1,119,131,20)Poke(559,62);Turn ANTIC back onWHILE consol#6 DO colpf3=random ;flash start wsyn!}c=0 ;wait for sync ;scroll colors in Demon Birds colpf2=128-vcount+(rtclock RSH 3) IF vcount=34 THEN chbase=chad !} colpf0=26 ELSEIF vcount=41 THEN chbase=chad+2 ELSEIF vcount=58 THEN chbase=chad colpf0=68 ELSEIF vcount=6!}5 THEN colpf0=168 FIODRETURNPROC GameOver();Game Over messageSndRst()gflag=1Poke(106,memory)Poke(623,4)Poke!}(53277,0)Graphics(17)Poke(559,0)Poke(708,14)Poke(709,70)Poke(710,128)Poke(711,0)Poke(712,136)ac=PeekC(560)Poke(ac+9,!}7) ;Graphics(2) at line 4Position(5,4)PrintDE(6,"game over")Position(4,10)PrintDE(6,"final SCORE:")Position(7,12)PrintD!}(6,"000000")Center(score,10,12)Position(4,18)PrintDE(6,"press start")Poke(559,34)WHILE consol#6 DO wsync=0 colpf3=vc!}ount+rtclock/2ODRETURNPROC NewMan();Materialize New WizardZero(pmbase,2048)Poke(704,78) Poke(705,78)FOR a=0 TO 100 !}STEP 2 DO FOR b=0 TO 7 DO ball2(b)=ball(b)&random Sound(1,a+a,8,a/10) OD PMove(pmbase,ball2,0,a,y,8) PMove(pm!}base,ball2,1,200-a,y,8)ODZero(pmbase,2048) ;clear pm areab=10;materialize manFOR a=0 TO 20 STEP 2 DO b=10-a/2 PMove(!}pmbase,p0+b,0,100,y+b,a) PMove(pmbase,p1+b,1,100,y+b,a) Poke(704,30-a/10) Poke(705,140-a/2) FOR c=0 TO 100+a*6 DO !} d=255-c Sound(1,d,10,10-a/2) ODODSound(1,0,0,0)Poke(704,28)Poke(705,130)x=100y=154fireflag=0rtclock=0RETURN!}PROC Die();Death of wizard;Puts player data in missile area;and blows player apart into 4 piecesBYTE ARRAY image(20)P!}oke(704,14)Poke(705,14);spins player aroundFOR a=0 TO 15 DO PMove(pmbase,p0+40,0,x,y,20) PMove(pmbase,p1+40,1,x,y,20)!} Delay(1000) PMove(pmbase,p0+120,0,x,y,20) PMove(pmbase,p1+120,1,x,y,20) Delay(1000-a*30) Sound(0,155-a*10,10,a)OD!}SndRst()Zero(pmbase,2048)FOR a=0 TO 20 DO image(a)=p0(a)%p1(a) ODFOR a=0 TO 20 DO image(a)=image(a) RSH 1 ODMoveBlo!}ck(pmbase+800+y,image,20)Poke(711,14);blows player apartFOR a=0 TO 100 DO Poke(53254,x-a+48) Poke(53253,x-a/2+48) Po!}ke(53252,x+a/2+48) Poke(53255,x+a+48) Sound(0,a/3,8,a/12) Delay(a)ODSndRst()RETURNPROC Move();move wizardctr==!}+20 ;image counterIF ctr=80 THEN ctr=0 ;reset counter if too bigFIx=x+DeltaX()IF x<10 THEN x=10ELSEIF x>142 THEN x=142!} FIIF DeltaX()=0 THEN ctr==-20 ;if player is not moving Delay(250) IF ctr>60 THEN ctr=60 FI ;If player stood still t!}oo long, ;Make him sink in the mud IF rtclock>80 THEN Birdpos(x/4-1,21,0,0) Birdpos(x/4+1,21,0,0) SndRst() !} FOR c=0 TO 24 DO PMove(pmbase,p0,0,x,y+c,26-c) PMove(pmbase,p1,1,x,y+c,26-c) Delay(3000) Sound(0,c!}+150,10,5) OD Sound(0,0,0,0) dieflag=1 FIELSE Poke(20,0) PMove(pmbase,p0+ctr+dir,0,x,y,20) PMove(pmbase,!}p1+ctr+dir,1,x,y,20)FIIF ctr=40 AND DeltaX()#0 THEN ;click feet Poke(53279,0) Poke(53279,8)ELSE Delay(250)FIIF f!}ireflag THEN CntFire()ELSEIF STrig(0)=0 THEN fireflag=1 fx=x/4+1 fy=20 df=DeltaX() energy==-1ELSE Delay(300)!}FIRETURNPROC GetReady()Graphics(18)Position(5,5)PrintD(6,"GET ready")Poke(623,4) ;players behind playfieldsPoke(532!}77,0)FOR ac=1 TO 20000 DO wsync=0 colpf0=128-vcount+rtclock RSH 2 colpf1=vcount+rtclock RSH 2ODRETURNPROC MainLoo!}p() BYTE mcount,lum;Infinite LoopDO ;7 player moves to one bird move FOR mcount=1 TO 7 DO IF random<10 AND fallf!}lag=0 THEN fallx=Rand(140)+10 ;drop meteor fally=10 fallflag=1 ELSEIF fallflag THEN fally==+5 !} fallx==+Rand(5)-2 FOR b=0 TO 7 DO ;random ball ball2(b)=ball(b)&random OD PMove(pmbase,ball2,2,fallx,!} fally,8) Sound(0,fally,8,fally/10) IF fally>170 THEN ;hit bottom? fallflag=0 Zero(pmb!}ase+1536,256) Sound(0,0,0,0) FI FI Poke(53278,1) ;hitclr Move() Poke(711,random) ;flash bird ey!}es ;kill wizard IF energy=65535 OR Peek(53252)=1 OR dieflag#0 OR Peek(53262)#0 THEN men==-1 !}energy=20 SndRst() ;Turn birds off FOR e=0 TO 5 DO bexist(e)=0 BirdPos(coordstore(e), !} coordstore(e+10),0,0) OD IF men=0 OR men>10 THEN gflag=0 EXIT ELSE IF di!}eflag THEN dieflag=0 ELSE Die() FI rtclock=0 GetReady() Init() !} Newman() Poke(20,0) FI FI OD IF gflag=0 THEN EXIT FI ;Shake earth e=Rand(4) Poke(5427!}7,e) b=Rand(10) Sound(1,50+b*20,8,e+3) y=154-e PMove(pmbase,p0+ctr+dir,0,x,y,20) PMove(pmbase,p1+ctr+dir,1,x,y,20)!} ;If a bird isn't on screen, ;put it there if random<30 FOR e=0 TO 5 DO IF bexist(e)=0 AND random<30 THEN bexi!}st(e)=1 IF e MOD 2=0 THEN coordstore(e)=0 ELSE coordstore(e)=39 FI FI OD ;Center sc!}ore and energy Center(score,13,22) Center(energy,14,23) Position(31,22) Print("0") PrintC(men) ;Start Key ends th!}e game ;Option Key stops the program ;Any key pauses game IF consol=6 THEN EXIT ELSEIF consol=3 THEN Poke(106!},memory) Graphics(0) Break() ELSEIF ch#255 THEN ch=255 WHILE ch=255 DO OD ch=255 rtclock=0 !}FI ;Move all 6 birds FOR bcount=0 TO 5 DO bx=coordstore(bcount) by=coordstore(10+bcount) BirdPos(bx,by,0,0) !} IF bexist(bcount)=1 THEN bflap=coordstore(20+bcount) char1=201+bflap+bflap+4* (bcount MOD 2) !} char2=char1+1 bflap=flapinc(bflap) coordstore(20+bcount)=bflap bx==+increase(bcount MOD 2)-1 IF bx=4!}0 THEN bx=0 FI IF bx=255 THEN bx=39 FI coordstore(bcount)=bx by=strafey(bcount*!}40+bx) by=by coordstore(10+bcount)=by BirdPos(bx,by,char1,char2) FI ODODRETURNPROC Game()memor!}y=Peek(106) ;Get top of memoryDO ;reset variables Men=4 Score=0 Energy=50 Init() Title() ;Title screen Init()!} Song() Newman() Mainloop() ;play song when game is over Graphics(17) Poke(712,134) Poke(623,4) Poke(53277,0)!} Song() GameOver()ODRETURN33333333333333333333333333333333333333333333333333333333333333333333333333333 DO OD !} ch=255 rtclock=0 FI ;Move all 6 birds FOR bcount=0 TO 5 DO bx=coordstore(bcount) by=coordstore DO OD q; Sneak Attack by David PlotkinMODULEBYTE ChrBase=756,Max,Bkgrnd=710, Fate=53770,Level=[1],CursIn=752, Stick=632,Ps&},Loud=[0],Indx=[0], DownL=[0],DownR=[0],Loud1=[0], Snd1=$D208,Snd2=$D20F,Freq=[169], Wsync=$D40A,Colbk=$D018, Nmien=$&}D40E,Hard=[15], Consol=53279CARD Scrn=88,RamSet,HiMem=$2E5, Score=[0],Comp=[300],Sdlst=560, Vdslst=512CARD ARRAY &}Linept(24)BYTE ARRAY Charset,Chopperstatus(30), Chopperx(30),Choppery(30), Expx(60),Expy(60),ExpStatus(60), TrStatu&}s(30),Trx(30),Try(30), MisStatus(30),Misx(30),Misy(30), Ll(20),Rr(20),Dlist, ShapeTable(0)= [254 16 124 71 127 1&}2 62 0 127 8 62 226 254 24 126 0 96 96 48 48 24 60 231 255 24 24 24 24 24 60 231 255 &} 6 6 12 12 24 60 231 255 128 85 17 66 24 170 91 131 60 126 255 255 195 66 36 24 60 36 24 2&}55 60 24 36 102 0 0 0 0 0 0 0 0 60 36 24 255 60 24 36 102 60 36 219 255 60 24 36&} 102 60 60 24 60 60 24 24 28 60 60 24 60 60 60 102 195]PROC Download();Step back HiMem and move t& }he;character set into RAMCARD IndexBYTE Val RamSet=(HiMem-$400)&$FC00 ChrBase=RamSet RSH 8 HiMem=RamSet FOR Index=& }0 TO 1023 DO Val=Peek(57344+Index) Poke(RamSet+Index,Val) OD Charset=RamSetRETURNPROC Dlint();the display li& }st interrupt routine [$48 $8A $48 $98 $48] Wsync=1 Colbk=50 [$68 $A8 $68 $AA $68 $40]PROC ScoreLine();set up the & }dli Dlist=Sdlst Vdslst=Dlint Dlist(27)=130 Nmien=$C0RETURNPROC Update();print score and level Position(1,23) & } Print("Score: ") Position(8,23) PrintC(Score) Position(18,23) Print("Level: ") Position(25,23) PrintB(Level)RET&}URNPROC Title()BYTE colpf0=53270,colpf1=53271, colpf2=53273,colpf3=53273, rtclock=20,vcount=54283 Graphics(18&}) Position(3,4) PrintD(6,"SNEAK ATTACK") Position(8,5) PrintD(6,"BY") Position(3,7) PrintD(6,"david plotkin") P&}osition(3,9) PrintD(6," ") WHILE Consol<>6 DO colpf3=Fate Wsync=0 colpf0=128-vcount+rtclock RSH 2 &} colpf1=vcount+rtclock RSH 2 ODRETURNPROC Gr0Init();Set up the address of each screen;line and initializeCARD xx &} Graphics(0) CursIn=1 Print(" ") FOR xx=0 TO 23 DO Linept(xx)=Scrn+(40*xx) OD FOR xx=0 TO 29 DO Chopperstat&}us(xx)=0 Chopperx(xx)=0 Choppery(xx)=0 Misx(xx)=0 Misy(xx)=0 MisStatus(xx)=0 TrStatus(xx)=0 OD FO&}R xx=0 TO 59 DO ExpStatus(xx)=0 OD FOR xx=0 TO 19 DO Ll(xx)=0 Rr(xx)=0 OD Bkgrnd=0 Update()RETURNPR&}OC Plot0(BYTE x,y,ch);Plot a char at location x,yBYTE ARRAY line line=Linept(y) line(x)=chRETURNBYTE FUNC Locate0(B&}YTE x,y);Returns the value of the char at x,yBYTE ARRAY line line=Linept(y)RETURN(line(x))PROC Noise();the explosion&} noises IF Loud=0 AND Loud1=0 AND Freq=169 THEN RETURN FI IF Loud THEN Loud==-2 Sound(0,90,8,Lo&}ud) FI IF Loud1 THEN Loud1==-2 Sound(1,150,8,Loud1) FI IF Freq<168 THEN Freq==+8 Sound(2,Freq,10,4) &} ELSE Freq=169 Sound(2,0,0,0) FIRETURNPROC HitChute(BYTE wh);see which chute was hit by missile whBYTE lp F&}OR lp=0 TO 29 DO IF Misx(wh)=Trx(lp) AND (Misy(wh)=Try(lp) OR Misy(wh)=Try(lp)+1) THEN TrStatus(&}lp)=2 Plot0(Trx(lp),Try(lp),0) Plot0(Trx(lp),Try(lp)+1,10) Plot0(Trx(lp),Try(lp)+2,0) EXIT FI O&}D IF Try(lp) LSH 3 < Freq THEN Freq=Try(lp) LSH 3 FIRETURNPROC HitMan(BYTE wh);see which man was hit by missile &}whBYTE lp FOR lp=0 TO 29 DO IF Misx(wh)=Trx(lp) AND (Misy(wh)=Try(lp)+1 OR Misy(wh)=Try(lp)+2) THEN&} TrStatus(lp)=3 Plot0(Trx(lp),Try(lp)+1,6) Plot0(Trx(lp),Try(lp),0) Plot0(Trx(lp),Try(lp)+2,0) FI&} OD Loud1=12RETURNPROC ExplodeChopper(BYTE lp);explosions in place of Chopper lpBYTE lq FOR lq=0 TO 59 STEP 2 DO & };find empty IF ExpStatus(lq)=0 THEN ExpStatus(lq)=1 ExpStatus(lq+1)=1 Expx(lq)=Chopperx(lp) Expx(&!}lq+1)=Chopperx(lp)+1 Expy(lq)=Choppery(lp) Expy(lq+1)=Choppery(lp) Chopperstatus(lp)=0 Plot0(Expx(lq)&"},Expy(lq),6) Plot0(Expx(lq+1),Expy(lq+1),6) EXIT FI ODRETURNPROC HitChopper(BYTE wh);which chopper was &#}hit by missile whBYTE lp FOR lp=0 TO 29 DO IF Misy(wh)=Choppery(lp) AND (Misx(wh)=Chopperx(lp) OR Misx(&$}wh)=Chopperx(lp)+1) THEN ExplodeChopper(lp) EXIT FI OD Loud=12RETURNPROC MissileHit(BYTE wh);see if m&%}issile wh hit anythingBYTE dum dum=Locate0(Misx(wh),Misy(wh)) IF dum=0 THEN Plot0(Misx(wh),Misy(wh),84) RETURN &&} FI MisStatus(wh)=0 IF dum=1 OR dum=2 THEN HitChopper(wh) Score==+1 ELSEIF (dum=7 AND Indx<6 OR dum=8&'} AND Indx>3) THEN HitChute(wh) Score==+2 ELSEIF (dum=8 AND Indx<4 OR dum=9 AND Indx>1) THEN HitMan(wh&(}) Score==+1 FIRETURNPROC Modify();Modify the RAM character setCARD xx FOR xx=0 TO 103 DO Charset(xx+8)=Shap&)}eTable(xx) ODRETURNPROC LaunchTrooper(BYTE wh);drop a paratrooper from chopper whBYTE lp IF Fate>240-(Level LSH 1) &*}THEN FOR lp=0 TO 29 DO ;find MT trooper IF TrStatus(lp)=0 THEN ;got one TrStatus(lp)=1 Trx(lp)=Chop&+}perx(wh) IF Trx(lp)=0 THEN Trx(lp)=1 FI Try(lp)=Choppery(wh)+1 Plot0(Trx(lp),Try(lp&,}),7) Plot0(Trx(lp),Try(lp)+1,8) Plot0(Trx(lp),Try(lp)+2,9) EXIT FI OD FIRETURNPROC Er&-}aseChopper(BYTE wh);erase chopper number wh Plot0(Chopperx(wh),Choppery(wh),0) Plot0(Chopperx(wh)+1,Choppery(wh),0) Ch&.}opperstatus(wh)=0 Chopperx(wh)=0 Choppery(wh)=0RETURNPROC DrawChopper(BYTE wh);draw chopper number wh Plot0(Choppe&/}rx(wh),Choppery(wh),1) Plot0(Chopperx(wh)+1,Choppery(wh),2)RETURNPROC ClearScreen();clear the screenBYTE lp FOR lp=&0}0 TO 29 DO IF Chopperstatus(lp) THEN EraseChopper(lp) FI IF TrStatus(lp) THEN TrStatus(lp)=0 &1}Plot0(Trx(lp),Try(lp),0) Plot0(Trx(lp),Try(lp)+1,0) Plot0(Trx(lp),Try(lp)+2,0) FI IF MisStatus(lp)=1 THEN&2} MisStatus(lp)=0 Plot0(Misx(lp),Misy(lp),0) FI OD FOR lp=0 TO 59 STEP 2 DO IF ExpStatus(lp)=1 THEN &3} ExpStatus(lp)=0 ExpStatus(lp+1)=0 Plot0(Expx(lp),Expy(lp),0) Plot0(Expx(lp+1),Expy(lp+1),0) FI OD&4}RETURNPROC MoveChopper();move the choppersBYTE lp,ps=[0] FOR lp=0 TO 29 DO IF Chopperstatus(lp)=1 THEN ;right &5} IF Chopperx(lp)=38 THEN EraseChopper(lp) ELSE Plot0(Chopperx(lp), Choppery(lp),0) &6} Chopperx(lp)==+1 DrawChopper(lp) LaunchTrooper(lp) FI FI IF Chopperstatus(lp)=2 THEN ;left&7} IF Chopperx(lp)=0 THEN EraseChopper(lp) ELSE Plot0(Chopperx(lp)+1, Choppery(lp),0)&8} Chopperx(lp)==-1 DrawChopper(lp) LaunchTrooper(lp) FI FI OD IF ps=0 THEN Charset(8)&9}=56 Charset(16)=28 ps=1 ELSE ps=0 Charset(8)=254 Charset(16)=127 FIRETURNPROC LaunchChopper();De&:}cide whether to send off a new;chopper, which side, how high upBYTE lp IF Fate>230-(Level LSH 1) THEN FOR lp=0 TO 29 &;}DO ;find MT chopper IF Chopperstatus(lp)=0 THEN Choppery(lp)=Rand(Hard) IF Fate>128 THEN Chop&<}perx(lp)=38 ;right side Chopperstatus(lp)=2 ELSE Chopperx(lp)=0 ;left side Chopperstatu&=}s(lp)=1 FI DrawChopper(lp) EXIT FI OD FIRETURNPROC DrawBase();draw the baseBYTE lp&>} FOR lp=19 TO 21 DO Plot0(lp,22,128) OD Plot0(20,21,4)RETURNPROC AimGun();read the joystick and move the base &?} IF Stick=11 THEN Ps=3 ELSEIF Stick=7 THEN Ps=5 ELSE Ps=4 FI Plot0(20,21,Ps)RETURNPROC Shoot();send &@}off a bulletBYTE trig=644,lp,flg=[0] IF trig=1 OR flg=0 THEN flg=1 RETURN FI FOR lp=0 TO 29 DO ;find empty sho&A}t IF MisStatus(lp)=0 THEN ;got one MisStatus(lp)=1 Misy(lp)=20 IF Ps=3 THEN Misx(lp)=19 E&B}LSEIF Ps=5 THEN Misx(lp)=21 ELSE Misx(lp)=20 FI MissileHit(lp) EXIT FI OD flg&C}=0RETURNPROC MoveShots();move the fired bulletsBYTE lp FOR lp=0 TO 29 DO ;for each shot IF MisStatus(lp)=1 THEN &D} Plot0(Misx(lp),Misy(lp),0) IF Stick=11 THEN Misx(lp)==-1 ELSEIF Stick=7 THEN Misx(lp)==+1 &E} ELSE Misy(lp)==-1 FI IF (Misx(lp)<>39 AND Misy(lp)<>255 AND Misx(lp)<>0) THEN &F} MissileHit(lp) ELSE MisStatus(lp)=0 FI FI ODRETURNPROC MoveExplosions();move the explosio&G}nsBYTE lp FOR lp=0 TO 59 STEP 2 DO IF ExpStatus(lp)=1 THEN Plot0(Expx(lp),Expy(lp),0) Plot0(Expx(lp+1),Exp&H}y(lp+1),0) Expy(lp)==+1 Expy(lp+1)==+1 Expx(lp)==-1 Expx(lp+1)==+1 IF Expy(lp)<>22 AND Expx(lp)&I}<>0 AND Expx(lp+1)<>39 THEN Plot0(Expx(lp),Expy(lp),6) Plot0(Expx(lp+1),Expy(lp+1),6) ELSE &J} ExpStatus(lp)=0 ExpStatus(lp+1)=0 FI FI ODRETURNPROC BaseExplode();explode the baseBYTE ARRAY &K}endx(0)=[16 24 17 23 20], endy(0)=[22 22 19 19 17]BYTE lp,time=20 color=38 FOR lp=0 TO 4 DO Plot(20,22) &L} DrawTo(endx(lp),endy(lp)) OD FOR lp=0 TO 16 DO Sound(0,Fate,8,16-lp) Sound(1,Fate,8,16-lp) time=0 DO &M} UNTIL time=15 OD OD SndRst() color=32 FOR lp=0 TO 4 DO Plot(20,22) DrawTo(endx(lp),endy(lp)) ODRE&N}TURNPROC EndRight();move the troopers from the right;to the baseBYTE lp,lq,nn,time=20 FOR lp=0 TO 19 DO IF Rr(lp)&O}=1 THEN lq=21+lp WHILE lq>20 DO IF nn=12 THEN nn=13 ELSE nn=12 FI &P} Plot0(lq,22,nn) time=0 DO UNTIL time=10 OD Plot0(lq,22,0) lq==-1 &Q} OD Plot0(21,22,11) FI OD FOR lp=0 TO 3 DO Plot0(21,22-lp,11) time=0 DO UNTIL time=10 OD&R} OD BaseExplode()RETURNPROC EndLeft();Move the troopers from the left to;the baseBYTE lp,lq,lc,nn,time=20 FOR lp=&S}0 TO 19 DO lq=19-lp IF Ll(lq)=1 THEN FOR lc=lq TO 19 DO IF nn=12 THEN nn=13 ELSE &T} nn=12 FI Plot0(lc,22,nn) time=0 DO UNTIL time=10 OD Plot0(lc,&U}22,0) OD Plot0(19,22,11) FI OD FOR lp=0 TO 3 DO Plot0(19,22-lp,11) time=0 DO UNTIL time&V}=10 OD OD BaseExplode()RETURNPROC EndPrint();print the end of game message and;test for new gameBYTE trig=644,&W}lp Position(10,7) Print("Game Over...Final Score:") Position(15,8) PrintC(Score) Position(15,9) Print("FINAL LEVE&X}L :") PrintB(Level) Position(10,20) Print("Press to play again") DO UNTIL trig=0 OD DownL=0 DownR=0 &Y}Put(125) FOR lp=0 TO 19 DO Ll(lp)=0 Rr(lp)=0 OD Score=0 Level=1 DrawBase() Update() Hard=15RETURNPR&Z}OC GameOverTwo();game over when four troopers downBYTE lp SndRst() ClearScreen() Loud=0 Loud1=0 Freq=169 FOR lp&[}=0 TO 19 DO IF Ll(lp)=1 THEN Plot0(lp,22,11) FI IF Rr(lp)=1 THEN Plot0(lp+21,22,11) FI OD IF &\}DownL=4 THEN EndLeft() ELSE EndRight() FI EndPrint()RETURNPROC GameOverOne();game over when trooper lands &]}on baseBYTE lp SndRst() ClearScreen() Loud=0 Loud1=0 Freq=169 FOR lp=0 TO 19 DO IF Ll(lp)=1 THEN Plot0&^}(lp,22,11) FI IF Rr(lp)=1 THEN Plot0(lp+21,22,11) FI OD BaseExplode() EndPrint()RETURNPROC Troope&_}rDown(BYTE wh);redraw trooper wh at bottom of screenBYTE cc TrStatus(wh)=0 cc=Trx(wh) Plot0(Trx(wh),Try(wh),0) ;erase&`} chute Plot0(Trx(wh),Try(wh)+1,11) ;replace IF Trx(wh)<20 AND Ll(cc)=0 THEN Ll(cc)=1 DownL==+1 ELSEIF Trx(wh)>2&a}0 AND Rr(cc-21)=0 THEN Rr(cc-21)=1 DownR==+1 ELSEIF Trx(wh)=20 THEN GameOverOne() FI IF DownL=4 OR&b} DownR=4 THEN GameOverTwo() FIRETURNPROC TrooperFall();make trooper fall when chute hitBYTE lp,qq,cc FOR lp=0 T&c}O 29 DO IF TrStatus(lp)=2 THEN Plot0(Trx(lp),Try(lp)+1,0) Try(lp)==+1 IF Try(lp)=21 THEN cc=Trx&d}(lp) IF Trx(lp)<20 AND Ll(cc)=1 THEN DownL==-1 Ll(cc)=0 ELSEIF Trx(lp)>20 AND &e} Rr(cc-21)=1 THEN Rr(cc-21)=0 DownR==-1 FI FI IF (Try(lp)<22 AND Trx(lp)<>20) &f} OR (Try(lp)<20 AND Trx(lp)=20) THEN Plot0(Trx(lp),Try(lp)+1,10) ELSE TrStatus(lp)=0 &g} FI FI ODRETURNPROC MoveTroopers();move paratroopers down screenBYTE lp,qqBYTE ARRAY Trooper(0)= [60 126 &h}255 255 195 66 36 24 60 36 24 255 60 24 36 102 0 0 0 0 0 0 0 0] FOR lp=0 TO Indx DO &i}Charset(56+lp)=0 OD MoveBlock(Charset+56+Indx+1, Trooper,16) Indx==+1 IF Indx<8 THEN RETURN FI In&j}dx=0 FOR lp=0 TO 29 DO IF TrStatus(lp)=1 THEN Plot0(Trx(lp),Try(lp),0) Try(lp)==+1 IF Try(lp)=21 THEN&k} TrooperDown(lp) FI FI IF TrStatus(lp)=3 THEN TrStatus(lp)=0 Plot0(Trx(lp),Try(lp)+1,0) &l} FI OD MoveBlock(Charset+56,Trooper,24) FOR lp=0 TO 29 DO IF TrStatus(lp)=1 THEN Plot0(Trx(lp),Try(lp),7) &m} Plot0(Trx(lp),Try(lp)+1,8) Plot0(Trx(lp),Try(lp)+2,9) FI ODRETURNPROC NewLevel();go to higher levelBYTE &n}lp,time=20 Level==+1 IF Level>100 THEN Level=100 FI SndRst() Loud=0 Loud1=0 Freq=169 Comp==+300 FOR lp=&o}10 TO 150 STEP 10 DO Sound(0,lp,10,4) Sound(1,lp+10,10,4) time=0 DO UNTIL time=2 OD OD Position&p}(25,23) PrintB(Level) IF Level>8 THEN Hard=19 FI SndRst()RETURNPROC Main()BYTE time=20,lp,ch=764 Title() &q} Gr0Init() Snd1=0 Snd2=3 Download() Modify() DrawBase() ScoreLine() DO LaunchChopper() MoveChopper() &r} MoveExplosions() Noise() TrooperFall() MoveTroopers() Position(8,23) PrintC(Score) IF Score>Comp TH&s}EN NewLevel() FI time=0 FOR lp=2 TO 6 STEP 2 DO AimGun() Shoot() MoveShots() DO &t} UNTIL time=lp OD OD ODRETURN=2 TO 6 STEP 2 DO AimGun() Shoot() MoveShots() DO $0;ACTION! BINARY LOADER, APRIL 1984;WARREN K. SMALL 71076,407;NOTE!!! REQUIRES ATARI DOS 2.0SSET $E=$5000 SET $491=$*v}5000DEFINE DISPLAY_OFF="0", DISPLAY_ON="34", BOOT="1" BYTE KEY=764, COLDST=580, FILE_COUNT=[0], *w} CHOICE,ROW,COLCHAR ARRAY FILE_NAME(25), LOAD_NAME(15)BYTE ARRAY FILES(120), LOGO=[$00$00$00$00$00$*x}00$00$00$00$00$00$00$00$03$F0$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$0F$F0$00$00$00$00$00$0*y}0$00$00$00$00$00$00$00$00$00$00$00$00$00$00$07$FF$FF$FF$FF$FF$C0$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$0*z}F$FF$FF$FF$FF$FF$FF$F0$00$00$00$00$00$00$07$D9$80$00$00$00$00$00$00$00$00$F8$0F$FF$FF$FF$FF$FF$FF$FF$FE$00$00$00$00$00$03$1F*{}$80$00$00$00$00$00$00$00$0F$F8$00$00$00$0F$F8$01$FF$FF$FF$FC$00$00$00$00$03$19$80$00$00$00$00$00$00$00$7F$F0$00$00$00$3F$C0*|}$00$01$FF$FF$FF$F0$00$00$00$03$19$80$00$00$00$00$00$00$07$FF$F0$00$00$00$FF$00$7E$00$00$FF$FF$F8$00$00$00$00$00$00$00$00$00*}}$00$00$00$7F$FF$E0$00$00$03$FC$01$FF$80$00$00$3F$F0$00$00$00$00$07$E0$00$00$00$00$00$03$FF$FF$C0$7E$00$07$F8$00$FE$00$00$00$*~}00$00$00$00$00$00$3F$E0$00$00$00$00$00$0F$FF$FF$81$FF$80$1F$E0$00$00$01$F8$00$00$00$00$00$00$00$FF$C0$00$00$00$00$00$3F$F8$*}FF$07$FF$80$7F$80$3E$00$1F$FC$03$FF$C0$00$00$00$03$FF$80$00$00$00$00$00$FF$E1$FE$1F$FF$80$FF$00$FE$00$FF$FC$7F$FF$E0$00$00$0*}0$1F$FF$00$00$00$00$00$03$FF$87$FC$3F$1F$83$FC$01$FC$07$F0$FF$FF$FF$E7$F0$00$00$7F$FC$00$00$00$00$00$0F$FE$0F$F0$FC$06$07$F*}8$03$F8$3F$C0$FF$FF$FF$FF$FC$00$03$FF$F0$00$00$00$00$00$3F$F8$3F$E1$F8$00$1F$F0$0F$E0$FF$03$FF$C1$FF$FF$FE$00$0F$FF$80$00$0*}0$00$00$00$FF$FF$FF$C7$E0$00$3F$C0$3F$81$FC$0F$F8$07$FF$FF$FC$00$3F$FC$00$00$00$00$0F$FF$FF$FF$FF$8F$C0$00$7F$80$7F$03$F8$3F*}$80$1F$FE$3F$F8$00$FF$E0$00$00$00$00$1F$FF$FF$FF$FF$1F$00$00$FF$01$FE$0F$C0$FE$00$7F$F0$7F$F0$03$FF$00$00$00$00$00$3F$FF$FF*}$FF$FE$3E$01$C1$FE$03$F8$1F$83$F8$01$FF$C1$FF$C0$1F$FC$00$00$00$00$00$00$3F$F0$0F$F8$7C$07$C3$FC$0F$F0$3F$87$E0$03$FF$03$FF$*}00$FF$F0$00$00$00$00$00$00$FF$C0$1F$F0$7C$3F$87$F8$1F$E0$7F$FF$80$0F$FC$0F$FE$01$FF$80$00$00$00$00$00$03$FF$00$3F$E0$7F$FE$*}0F$F0$3F$80$FF$FC$00$3F$F0$3F$F8$0F$FE$00$00$00$00$00$00$0F$FC$00$3F$C0$7F$F8$0F$80$3F$00$FF$F0$00$7F$C0$7F$E0$1F$F8$00$00$0*}0$00$00$00$3F$F0$00$3F$80$3F$E0$00$00$3E$00$FF$80$00$FF$00$FF$80$FF$C0$00$00$00$00$00$00$FF$C0$00$1F$00$00$00$00$00$00$00$F*}C$00$00$7E$01$FE$00$FF$00$00$00$00$00$00$03$FF$00$00$00$00$00$00$00$00$00$00$00$00$00$00$01$F0$00$F0$00$00$00$00$00$00$0F$F*}E$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$1C$00$00$00$00$00$00$00$1F$F8$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00*}$00$7F$00$00$00$00$00$00$00$3F$E0$00$00$00$00$01$FF$FF$FF$FF$FF$FF$C0$00$00$00$00$FF$00$00$00$00$00$00$00$7F$80$00$00$00$03*}$FF$FF$FF$FF$FF$FF$FF$FF$F0$00$00$00$FE$00$00$00$00$00$00$00$FF$00$00$00$0F$FF$FF$FF$FF$FF$FF$FF$FF$FF$FF$FC$00$00$1C$00$00$*}00$00$00$00$00$FC$00$00$03$FF$FF$F0$00$00$00$00$0F$FF$FF$FF$FF$FF$00$00$00$00$00$00$00$00$00$00$00$01$FF$FF$F0$00$00$00$00$*}00$00$00$00$0F$FF$FF$F0$00$00$00$00$00$00$00$00$00$00$0F$FF$E0$00$00$00$00$00$00$00$00$00$00$00$FF$FC$00$00$00$00$00$00$00$*}00$00$00$0F$F8$00$00$00$00$00$00$00$00$00$00$00$00$00$FF$00$00$00$00$00$00$00];--------------------------PROC PLOT_CHAR(*}BYTE CH) ;PLOT LETTERS ON GR.8 SCREENBYTE CHBASE=756CARD OFFSET,INC,SCREEN=88BYTE POINTER BIT_MAP,CHARSET,SCR CHARSET=CH*}BASE*256 CH==&127 ;MASK INVERSE VIDEO IF CH>31 AND CH<96 THEN OFFSET=(CH-32)*8 ELSEIF CH>=0 AND CH<32 THE*}N OFFSET=(CH+64)*8 ELSE OFFSET=CH*8 FI BIT_MAP=CHARSET+OFFSET FOR INC=0 TO 7 DO SCR=SCREE*}N+COL+(ROW+INC)*40 SCR^=BIT_MAP^ BIT_MAP==+1 ODRETURN ;END PLOT_CHAR() ;----------------------*}-------- PROC CONVERT_NAME() ;INSERTS PERIOD BETWEEN FILENAME & EXTENSION BYTE INC=[14] WHILE INC>11 DO *} LOAD_NAME(INC)=LOAD_NAME(INC-1) INC==-1 OD LOAD_NAME(11)='. LOAD_NAME(0)=14RETURN ;END CONVE*}RT_NAME();------------------------------PROC LOAD_FILE() LOAD_NAME(0)=2 LOAD_NAME(1)='D LOAD_NAME(2)=': SASSIGN(LOA*}D_NAME,FILES+CHOICE*12,3,13) CONVERT_NAME() CLOSE(1) OPEN(1,LOAD_NAME,4,0) [$4C $15C8] ;ATARI DOS 2.0S *} ;BINARY LOAD ROUTINERETURN ;END LOAD_FILE();------------------------------PROC READ_DIRECTORY()BYTE LOCK,NEXT ZERO(*}FILES,120) CLOSE(3) OPEN(3,"D:*.*",6,0) DO LOCK=GETD(3) NEXT=GETD(3) INPUTMD(3,FILE_NAME,18) *} FILE_NAME(0)=11 IF LOCK='* THEN SCOPY(FILES+FILE_COUNT*12,FILE_NAME) FILE_COUNT==+1 *} IF FILE_COUNT>9 THEN EXIT FI ELSEIF FILE_NAME(1)>='0 AND FILE_NAME(1)<='9 THEN *} EXIT FI OD CLOSE(3)RETURN ;END READ_DIRECTORY();------------------------------PROC DISPLAY_*}CHOICE() BYTE POSCHAR ARRAY LOAD="loading =>" COL=2 ROW=80+CHOICE*8 FOR POS=1 TO LOAD(0) DO PLOT_*}CHAR(LOAD(POS)) COL==+1 ODRETURN ;END DISPLAY_CHOICE() ;------------------------------ PROC DISPLAY_FI*}LES()BYTE FILENUM,POSCHAR ARRAY TITLE="disk directory", PROMPT="select" ROW=64 COL=12 FOR POS=1 TO TITLE(0) *} DO PLOT_CHAR(TITLE(POS)) COL==+1 OD ROW=80 FOR FILENUM=0 TO FILE_COUNT-1 *} DO COL=13 PLOT_CHAR(FILENUM+48) COL==+2 FOR POS=FILENUM*12+1 TO FILENUM*12+11 *} DO PLOT_CHAR(FILES(POS)) COL==+1 OD ROW==+8 *} IF ROW>152 THEN EXIT FI OD COL=16 ROW=176 FOR POS=1 TO PROMPT(0) DO *} PLOT_CHAR(PROMPT(POS)) COL==+1 ODRETURN ;END DISPLAY_FILES();------------------------------PROC *}SCROLL_COLORS() BYTE WSYNC=54282, VCOUNT=54283, COLR=53274, COUNTER,CHANGECOLR=[0*}], INCCOLR, CURSOR=752 OPEN(3,"K:",4,0) KEY=255 DO WHILE KEY=255 DO *} FOR COUNTER=1 TO 10 DO INCCOLR=CHANGECOLR DO *} WSYNC=0 COLR=INCCOLR INCCOLR==-1 UNTIL VCOUNT&128 *} OD OD CHANGECOLR==+1 OD CHOICE=GETD(3) IF CHOICE>47 AND CHOICE M*}OVEBLOCK($7308,A,8) ;a MOVEBLOCK($7318,CDE,24) ;cde MOVEBLOCK($7338,G,8) ;g MOVEBLOCK($7348,I,8) *} ;i MOVEBLOCK($7358,KL,16) ;kl MOVEBLOCK($7370,NO,16) ;no MOVEBLOCK($7390,RST,24) ;rst MOVEBLO*}CK($73C8,Y,8) ;yRETURN ;END CHAR_SET();------------------------------PROC PLOT_LOGO()BYTE LINE,BYTCARD START,*}NEXTLYN,SCREEN=88BYTE POINTER SCR START=12*40+7 ;OFFSET TO START OF LOGO DATA NEXTLYN=40 ;INC TO NEXT LINE FOR LI*}NE=0 TO 35 DO FOR BYT=0 TO 25 DO IF LOGO(LINE*26+BYT)<>0 THEN SCR=SCREEN+START*}+BYT SCR^=LOGO(LINE*26+BYT)&$55 FI OD START==+NEXTLYN ODRETURN ;END PLOT*}_LOGO();------------------------------PROC MAIN()BYTE DMA=559 DEVICE=0 POKEC($9B,$600) COLDST=BOOT ;COLDSTART ON R*}ESET GRAPHICS(24) DMA=DISPLAY_OFF CHAR_SET() COLOR=1 SETCOLOR(1,1,0) SETCOLOR(2,1,12) SETCOLOR(4,8,5)READ_DIRECTORY()*}PLOT_LOGO()DISPLAY_FILES() DMA=DISPLAY_ONDO SCROLL_COLORS() DISPLAY_CHOICE() LOAD_FILE()OD4,8,5)READ_DIRECTORY()(f; pulse - by joel gluck - analog#26BYTE ARRAY x(192),y(192),c(192)BYTE num=[10]INT ARRAY Xd(192)CARD ARRAY linept(192).}PROC pauz(CARD n)CARD iFOR i=0 TO n+nDO ODRETURNPROC intro()BYTE i,COLOR1=709Graphics(0)Poke(710,0)Poke(752,1)Pr.}int(" ")pauz(30000)Position(17,9)Print("pulse")pauz(30000)Position(13,11)Print("by Joel Gluck")pauz(30000)Position(9,.}13)Print("from ANALOG COMPUTING")pauz(60000)FOR i=0 TO 15 DO COLOR1=15-i pauz(2000)ODRETURNPROC gr10ini.}t()CARD line,reg,col,lum,scrn=88BYTE ARRAY gtiacol(8)=705Graphics(10)Poke (704,0)FOR reg=0 TO 7 DO col=Rand(16).} lum=Rand(9)+4 gtiacol(reg)=col*16+lumODFOR line = 0 TO 191 DO linept(line)=scrn+40*lineODRETURNP.}ROC plot10(BYTE x,y,col)BYTE POINTER pixelBYTE ARRAY colfil= [0 17 34 51 68 85 102 119 136 0 0 0 0 0 0 .}0], mask= [15 240], mask2= [240 15]pixel=linept(y)+(x RSH 1)pixel^=pixel^ & mask(x & 1) % (colfil(col.}) & mask2(x & 1))RETURNBYTE FUNC locate10(BYTE x,y)BYTE POINTER pixelBYTE ARRAY mask= [240 15]pixel= linept(y).}+(x RSH 1)RETURN((pixel^ & mask(x & 1)) RSH (((x &1) XOR 1) LSH 2))PROC drawline(BYTE a,b,c,)BYTE iFOR i=a TO 79.}-a DO plot10(i,b,c) plot10(i,191-b,c)ODRETURNPROC init()BYTE i,j,sgr10init()FOR i=0 TO num-1 DO .} x(i)=Rand(40) DO y(i)=Rand(96) s=0 IF i=0 THEN EXIT FI FO.}R j=0 TO I=1 DO IF y(i)=y(j) THEN s=1 EXIT FI .} OD UNTIL s=0ODc(i)=(i MOD 8)+1drawline(x(i),y(i),c(i)) xd(i)=(Rand(2)*2-1)*(Rand(3)+1)ODRETURNPROC s.}queeze(BYTE n)BYTE a,iINT dd=xd(n)IF d<0 THEN d=-1ELSE d=1FIFOR i=1 TO (xd(n)/d) DO a=x(n)+d .} IF a>39 THEN xd(n)=-xd(n) EXIT FI IF d>0 THEN plot10(x(n),y(n),0) .} plot10(79-x(n),y(n),0) plot10(x(n),191-y(n),0) plot10(79-x(n),191-y(n),0) ELSE plot.}10(x(n),y(n),c(n)) plot10(79-x(n),y(n),c(n)) plot10(x(n),191-y(n),c(n)) plot10(79-x(n),191-y(n),c(.}n)) FI x(n)=a plot10(x(n),y(n),c(n)) plot10(79-x(n),y(n),c(n)) plot10(x(n),191-y(n),c(n)).} plot10(79-x(n),191-y(n),c(n))ODRETURNPROC pulse()BYTE i,CH=764,AT=77,MS=19,LS=20intro()DO num=Rand(6)+.}5 init() CH=255 AT=77 LS=0 MS=0 DO FOR i=0 TO num-1 DO squeeze(.}i) OD UNTIL CH<>255 OR MS=4 OD UNTIL CH=12OD CH=255Graphics(0)RETURN squeeze(,rD:DISK.CATD209E.BAS LEARN THE SHAPES EDUC 9/87 077*207AUTORUN.SYS 0