@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@P!( 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`  `1  ɐ     `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.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1: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 ALLOWED736 FREE SECTORS COPYING---D1:DIRECK.COMl# 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- 138ɛ+,' 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; ================; = Air Hockey =; = by =; = Chris Page =; ================; Copyright (c) 1985 ANALOG CT}omputing; Special Thanks to:; David Sullivan & David BeckerDEFINE OPTION="3",SELECT="5",START="6", NONE="7",LEFT="96U}",RIGHT="60", TOP="56",BOT="144"BYTE NINDEX,VOLUME,FRICTION=[1], BOUNCE=[90],WIN=[10],PLAYERS=[2], HUE,LUM,OPT,PUCKV}XD,PUCKYD,HITFLAG, SERVER,GAMEOVER,SERVEIT,SDMCTL=559, CONSOL=53279,CHACT=755,WSYNC=54282, VCOUNT=54283,CRSINH=752, CW}OLOR0=53270,COLOR1=53271, COLOR2=53272,COLOR3=53273, COLOR4=53274,RTCLOK=20, DMACTL=54272,LMARGN=82,RMARGN=83, CHBAS=X}756,PMBASE=54279, HITCLR=53278,P2PL=53262, GRACTL=53277,GPRIOR=623, RANDOM=53770,COLPM0=53266, COLPM1=53267,CH=764,RAY}MTOP=106, AUDCTL=53768,ATRACT=77,KEYBYTE ARRAY DLIST,SCRMEM,RAMFONT,PMMEM($800), BAR(0)=[$FF$FF], PUCK(0)=[$60$F0$FZ}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 NINDa}EX=0 VOLUME=15 SNDRST() ; set deferred vbi vector SETVBV(7,VBI RSH 8,VBI)RETURNPROC DEBOUNCE()CARD I; Debounce cb}onsole keys FOR I=0 TO 5000 DO DO UNTIL CONSOL=NONE OD ODRETURN; --- Title Screen ---PROC INITTITLE()c}BYTE I; Initialize title screen GRAPHICS(0) GPRIOR=17 GRACTL=0 SDMCTL=0 CRSINH=1 HUE=0 DLIST=DLISTL DO d}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 DLe}IST(I)=0 OD SETBLOCK(DLIST+27,2,$70) SETCOLOR(1,0,14) SETCOLOR(2,0,8) POSITION(11,0) PRINT("Air Hockey") POSITIf}ON(1,1) PRINT("By: Chris Page") POSITION(29,1) PRINT("Thanks: D.S. and D.B.") POSITION(17,2) PRINT( "June 30, 19g}84 - August 9, 1985") POSITION(7,4) PRINT("Copyright (c) 1984") POSITION(34,5) PRINT("Press ") SDMCTL=33RETUh}RNPROC TITLECOLORS()BYTE I; Mid-screen color changes HUE==+2 IF HUE&2 THEN CHACT==+1&3 FI FOR I=0 TO 30 DO i} DO WSYNC=0 COLOR4=VCOUNT LSH 1+HUE IF VCOUNT=48 THEN COLOR1=0 FI UNTIL VCOUNT&128 j} OD ODRETURNPROC TITLE(); Display title screen INITTITLE() INITVBI() DO TITLECOLORS() UNTIL CONSOL=STARk}T OD SDMCTL=0RETURN; --- Game Options ---PROC INITOPTIONS(); Initialize procedure OPTIONS() GRAPHICS(17) SDMCTl}L=0 GRACTL=0 DO UNTIL VCOUNT=0 OD DEBOUNCE() SCRMEM=SAVMSC DLIST=DLISTL DLIST(3)==+1 SETCOLOR(0,3,14) Sm}ETCOLOR(2,0,14) PRINTDE(6," GAME OPTIONS") POSITION(0,2) PRINTD(6," - NEXT OPTION") PRINTDE(6," - CHOOn}SE") PRINTDE(6," - PLAY GAME") POSITION(3,6) PRINTD(6,"FRICTION: O") IF FRICTION THEN PRINTD(6,"N") ELSEo} PRINTD(6,"FF") FI POSITION(3,8) PRINTD(6,"VELOCITY: ") PRINTBD(6,MAXV/100) POSITION(3,10) PRINTD(6,"BOUNCE :p} ") PRINTBD(6,BOUNCE/10) POSITION(3,12) PRINTD(6,"WIN AT : ") PRINTBD(6,WIN) POSITION(3,14) PRINTD(6,"PLAYERS : q}") PRINTBD(6,PLAYERS) SDMCTL=34 OPT=0RETURNPROC OPTIONCOLORS(BYTE OPT); Mid-screen color changes; OPT=option liner} to hi-light DO WSYNC=0 UNTIL VCOUNT=15 OD LUM=0 WSYNC=0 DO WSYNC=0 COLOR0=LUM&$0F%$20 LUM==+2s} UNTIL VCOUNT=25 OD WSYNC=0 COLOR0=0 COLOR4=6 DO WSYNC=0 UNTIL VCOUNT=40 OD COLOR0=$F8 OPT==LSH 3+t}41 DO WSYNC=0 UNTIL VCOUNT=OPT OD COLOR0=$FE DO WSYNC=0 UNTIL VCOUNT=OPT+8 OD COLOR0=$F8RETURNu}PROC OPTIONS()CARD I; Get game options from player(s) INITOPTIONS() DO FOR I=0 TO 10 DO OPTIONCOLORS(OPT) v} UNTIL CONSOL=START OD IF CONSOL=OPTION THEN OPT==+1 IF OPT=5 THEN OPT=0 FI FI Iw}F CONSOL=SELECT THEN IF OPT=0 THEN FRICTION==!1 IF FRICTION THEN SCRMEM(134)=46 SCRx}MEM(135)=0 ELSE SCRMEM(134)=38 SCRMEM(135)=38 FI ELSEIF OPT=1 THEN IF MAXV=y}900 THEN SCRMEM(173)==-7 MAXV=200 ELSE SCRMEM(173)==+1 MAXV==+100 FIz} ELSEIF OPT=2 THEN IF BOUNCE=90 THEN SCRMEM(213)==-9 BOUNCE=0 ELSE SCRMEM({}213)==+1 BOUNCE==+10 FI ELSEIF OPT=3 THEN IF WIN=90 THEN SCRMEM(253)==-8 |}WIN=10 ELSE SCRMEM(253)==+1 WIN==+10 FI ELSE IF PLAYERS=2 THEN SC}}RMEM(293)==-1 PLAYERS=1 ELSE SCRMEM(293)==+1 PLAYERS=2 FI FI FI U~}NTIL CONSOL=START OD SDMCTL=0 SNDRST()RETURN; --- Play Air Hockey ---PROC MAKEFONT()BYTE ICARD J; Change chara}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$5}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], } ZDAT(8)=[$55$55$55$55$15$15$05$01] RAMFONT=(RAMTOP-8)*$100 MOVEBLOCK(RAMFONT,ROMSET,$400) ZERO(RAMFONT+536,192) CHB}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) } RAMFONT(648+I)=QDAT(I) RAMFONT(656+I)=RDAT(I) RAMFONT(664+I)=SDAT(I) RAMFONT(672+I)=TDAT(I) RAMFONT(720+I)=Z}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) S}NDRST() DEBOUNCE() INITPMG() SCRMEM=SAVMSC SCORE(0)=0 SCORE(1)=0 OSTIK(0)=15 OSTIK(1)=15 SERVER=0 GAMEOVER=}0 CRSINH=1 DLIST=DLISTL DLIST(2)=DLIST(3)+4 DLIST(3)=DLIST(4) DLIST(4)=DLIST(5) DLIST(5)=$30 DLIST(7)=$30 SET}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,}0) PRINTE("air hockey") SAVMSC==+16 POSITION(0,0) PRINTF( " One : 00 | Win : %B | Two : 00", win) MOVEBLOCK(S}CRMEM+55,TTOP,18) FOR I=87 TO 663 STEP 32 DO MOVEBLOCK(SCRMEM+I,TMID,18) OD MOVEBLOCK(SCRMEM+695,TBOT,18) MAKEFON}T() SOUND(3,0,0,3) KEY=0 CH=$FFRETURNPROC SERVE(BYTE PLAYER)CARD I; Initialize positions ERASEALL() PDLX(0)=2}8 PDLX(1)=28 PDLY(0)=YTOP(0) PDLY(1)=YBOT(1) PUCKX=3000 PUCKY=4000+6800*PLAYER PUCKXV=0 PUCKYV=0 POSPDL(0,PDL}X(0),PDLY(0)) POSPDL(1,PDLX(1),PDLY(1)) POSPUCK(PUCKX,PUCKY) HITCLR=0 HITFLAG=0 VOLUME=0RETURNPROC MOVEPADDLE(B}YTE P)BYTE STIK; Move paddle ERASEPDL(P,PDLY(P)) STIK=STICK(P) ; move puck 2 for one player game IF PLAYERS=P THEN} STIK=$F IF PDLX(1)+2PUCKY/100 THEN STIK==-1 ELSE STIK==-2 IF RAND(2) THEN STIK==+1} FI FI FI ; save stick position OSTIK(P)=STIK ; move paddle verticaly IF (STIK&1)=0 THEN PDLY(P)==-2} IF PDLY(P)YBOT(P) THEN} PDLY(P)=YBOT(P) FI FI ; move paddle horizontaly IF (STIK&8)=0 THEN PDLX(P)==+2 IF PDLX(P)>RIGHT-4 TH}EN PDLX(P)=RIGHT-4 FI ELSEIF (STIK&4)=0 THEN PDLX(P)==-2 IF PDLX(P)>240 THEN PDLX(P)=0 FI FI} POSPDL(P,PDLX(P),PDLY(P))RETURNPROC REVERSEPX(); Reverse horizontal puck direction VOLUME=14 PUCKXD==!1 IF PUCKX}V<(90-BOUNCE) THEN PUCKXV=0 ELSE PUCKXV==-(90-BOUNCE) FIRETURNPROC REVERSEPY(); Reverse vertical puck direct}ion VOLUME=14 PUCKYD==!1 IF PUCKYV<(90-BOUNCE) THEN PUCKYV=0 ELSE PUCKYV==-(90-BOUNCE) FIRETURNPROC MOV}EPUCK()BYTE PADDLE,XDIF,YDIF,STIK,ABOVECARD ARRAY XVELOC(0)=[400 140 100 80 40 0 40 80 100 140 400]; M}ove the puck ERASEPUCK(PUCKY); check for paddle collisions PADDLE=0 IF PUCKY/100>70 THEN PADDLE=1 FI STIK=OSTI}K(PADDLE) IF P2PL THEN IF HITFLAG=0 THEN VOLUME=14 ; new x velocity & direction XDIF=PUCKX/100+3-PDLX(P}ADDLE) PUCKXV=XVELOC(XDIF) PUCKXD=0 IF XDIF>5 THEN PUCKXD=1 FI ; new y velocity & directi}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 } IF ABOVE=0 THEN PUCKYD==!1 PUCKYV==+200 FI FI FI FI HITFLAG=1 ELSE} HITFLAG=0 FI HITCLR=0; move horizontaly IF PUCKXV>MAXV THEN PUCKXV=MAXV FI IF PUCKXD THEN PUCKX==+PUC}KXV ELSE PUCKX==-PUCKXV FI; check boundaries IF PUCKX>24000 THEN REVERSEPX() PUCKX=0 ELSEIF PUCKX>RIGHT*}100 THEN REVERSEPX() PUCKX=RIGHT*100 FI IF PUCKYV>MAXV THEN PUCKYV=MAXV FI; move verticaly IF PUCKYD THE}N PUCKY==+PUCKYV ELSE PUCKY==-PUCKYV FI; check boundaries IF PUCKY>24000 THEN REVERSEPY() PUCKY=0 EL}SEIF PUCKY>BOT*100 THEN REVERSEPY() PUCKY=BOT*100 FI; handle friction IF PUCKXV THEN PUCKXV==-FRICTION FI} IF PUCKYV THEN PUCKYV==-FRICTION FI; fading collision sound IF VOLUME THEN VOLUME==-2 SOUND(0,10,8,VOLUME)} SOUND(1,10,10,VOLUME) ELSE SOUND(0,0,0,0) SOUND(1,0,0,0) FI POSPUCK(PUCKX,PUCKY)RETURNPROC GOAL(BYTE P}LAYER)BYTE ICARD J; Inc score, check for a winner SNDRST() ERASEPUCK(PUCKY) VOLUME=0 SERVEIT=1 SERVER=PLAYER S}CORE(PLAYER)==+1 IF SCORE(PLAYER)=WIN THEN GAMEOVER=1 FI; flash score FOR I=0 TO 5 DO SETBLOCK(SCRMEM+23+22*PL}AYER,2,0) FOR J=0 TO 5000 DO OD SCRMEM(23+22*PLAYER)= 16+SCORE(PLAYER)/10 SCRMEM(24+22*PLAYER)= } 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=}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 FOR} 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)RETURNPRO}C MOVEALL(); Move paddles and puck; keep attract mode at bay ATRACT=0; check for goal IF PUCKX>2400 AND PUCKX<3700 THE}N IF PUCKY=0 THEN GOAL(1) ELSEIF PUCKY=BOT*100 THEN GOAL(0) FI FI IF GAMEOVER=0 THEN MOVEPUCK}() 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<@+d?+0@<(" BACKUP 130XE by Wi }lliam W. Tan?(nR-AAd"!% F6-AV$+F:AE,%@,R6-B@x='(INSERT SOURCE DISK, }PRESS START36-@= A@L(/($INSERT DESTINATION DISK, PRESS START;6-@E A@I+L F:B2y, }@A@+"@+AT@D:AS26-?:A<<@<A <,@-@V }A%%@$6-?:A<<A!%A%$<A%<Bc, $[[104,104,104,141,2,3,104,141,11,3,104,141, }10,3,104,133,204,104,133,203,104,141,5,3,104``141,4,3,32,83,228,173,4,3,24,105,128,141,4,3,173,5,3,105,0,141,5,3,238,10,3 },208,3,238,11,3''198,203,208,224,198,204,16,220,96 D:BACKUP.BAS,24,105,128,141,4,3,173,5,3,105,0,141,5,3,238,10,3 K./YOLYNEZOLZNEQMODEMODECNXYYB2y@@@@@}A @ @H @ @Ab@A@B@d%%************************}*******%%* COLOR ALIGNMENT GENERATOR *%%* (C) 1983 BY DON LEE 2/15,83 *%%* SEATTLE, WA. 98155 *%%*}******************************%%* (C) 1985 ANALOG COMPUTING *%%******************************* 96-B2y}6-@!6--6-@36-96- 5+0@#0@5AR@ AA]-@@}3(COLOR ALIGNMENT GENERATORE-@@]((C) 1983 BY DON LEE:-@@:( DISPLAY MODE DISPLA}Y CONTENT(;-@@ ;(!____________ ________________29-@@9(1 by 1 HORIZONTAL LINES}<7-@@7(3 by 3 VERTICAL LINESF4-@@4(5 by 5 DOT PATTERNP%-@!@}%( CROSS-HATCHU$-@!@$( COLOR BARSW$-@!@$( GRAY SCALEX$-@!@$( SOUND TE}STZh-@ -( PRESS FOR MODEL( PRESS FOR CONTENTh( PRESS Ԡ TO BEGINk7-@(>}:@,)-@7(>:@,n 6-F:,s"@A0x"@A@}"@AR A})6-%@"@)6-@@w@-@( "-@0(>:@,66-@ AE})6-%@"@)6-@@w6-@( "-@0(>:@,66--A}  A********************* WHAT DO YOU WANT *********************@w}'"@6-@'6-@H'"@6-@T'6-@2'"@6-@'6-@}"@A"@A"@A"@A"@A!"@}A@"@A# A*************** SOUND TEST ***************G "}6-A!+2@@9-A= G A;6-2@--A1 ; A}********************* THREE COLOR BARS ********************* +@ AA9A@f}'A A09AA1 @,@@1/@@ ',@@'/@@ } 1 @,@ @1/@ @  ',@@'/@@  1 @,@1@1/}@1@ ',@2@'/@2@ -A (F:,"@A( @ A},-*********************.* 1 BY 1 COLOR BARS */*********************06G (}AR@-}-@@ G(PRESS FOR COLOR7.-@@!.(PRESS FOR MENU;M-A@@%A}1ACAdAUM AP=F:,"@@@ F:Ad,"AUAE J A^E-}@@#3( E-@@#_ "(BLACK`"@(RUSTa"@2(} RED-ORANGEb "@H ( DARK-ORANGEc"@d(REDd""@"( DARK-LAVENDERe "@ ( CO}BALT-BLUEf%"A%(ULTRAMARINE-BLUEg "A( ( MEDIUM BLUEh"AD( DARK-BLUEi"A`}( BLUE-GREYj "Av ( OLIVE-GREENk!"A!( MEDIUM-GREENl"A( DARK-GREENm!"A$}!( ORANGE-GREENn"A@(ORANGEo$********************* HORIZONTAL LINES ***********}**********! +@# AA! AU-A F:,"@@ A#$****}*********************%* HORIZONTAL SUBROUTINE *&*************************'+-@0G @,}/AY# 5,@G/AY@:$?@******************A* VERTICAL LINES *B*****}*************C]! +@# AA! AUb A ************************ VERTICAL SUBROUTI}NE ************************-AYA @,/@# /,AYA/AY@}$************************ CROSS-HATCH PATTERN ************************+ +@# AA}! AU+ AU A **************** DOT PATTERN ****************# +@#$} AA%-AY*-@/Q ,,AY %,@) 5 @G,AY@Q A} 2,AY@ A RS***********************T* RAINBOW KEY PATTERN *U********************}***V +@ AAG6-@6-!6-A5-@@9G-@%@!@y}A  ,%/%% 6-%%@ % A ******************* PLAYER-MISSILE *}******************X6-F:A,&@&BBy46-AV$FAY@FXB2w@!-B2H}B2U! '-B2VB2`#@' !-AA! #-AA$%#} E-AA A(/-%@=%AUA E $******************* COLOR BAR }MENU *******************9"@A:"@AU;t (}-@@ =(PRESS } FOR NTSC PATTERNO-@@t( PRESS FOR RAINBOW PATTERN=-A >cF:,"@(}*-@}@G(ONE MOMENT PLEASE.......U-AY c A0CF:,"@A!0HF:,"@@M } A!RI:, APA!@W A \n (}-@@=(Sorry...You don't have enoughO-@@}n(memory for this pattern...a-A  A!  ******************* * NTSC COLOR BARS * }*******************  ! +@ AA! A AA'AAF9A@fKA}@]AA0oA AA@  ***************** * DISPLAY SETUP * *****}************  3-@/B2H%@R%$@!3  '-B2VB2`#@'  %-@}%-@@ =,@%%$@=/@%%$@@#   -A  F:,@}A0E !-B2HB2U!  !AY@4!B2w @  ************** * G}RAY SCALE * ************** h (}-@@8(ONE MOMENT PLEASE.......F-AJ T+@^ }AAh A+-@@'A%%+  A0********************** BREAK KEY DI}SABLE ********************** D6-F:@,!A',6-&A(8@DB7t$D:C}OLORBAR.BAS********************* D6-F:@,!A',6-&A(8@DB7t$D:C EG&[&MAXMAXDLIEXTDINSATCMPLASIBFLSDLILSTPARMNXPDNUDTSTLAINADNEPMPMBOTESKTLLL}PLLLLCSUKKKKKK @  } @ } !"#$%&'()* }+,-./0123456dW6-A%6-@r'6 }-@36-@?6-@K6-@W6-@n`+AA(+A @7@I-@@ }`(Initializing...x__;,;,;,;@,;,;,;,;@ ,9,;@ ,;@@,;AP,}}9A,K:6.B6- 6-6-AP#AP A@6. A@6. A@}6. A@6. A@6. A@6. 6-%E 6-6-6.!B:,%B(Fatal error }- too many DLIs!E&K 6-%!@A(%Too many steps!!! Re-do this DLI.K Ap (}((( }((( ɠ((( ǠǠ**(" }&&( DLI Number , Step :$$(A. Change a memory location$$(B. Add to a memory location}##(C. Increment a memory loc.##(D. Decrement a memory loc."%%(E. Wait for horizontal sync.,(6-@ }AP("6A1> 6-"@467B:,%,.7@<@,> A6!A@@- "#(}Deposit }result in:- A@J##(}Select letter to change:T A^(A. A screen colorh(B. The character set}r(C. A player position|(D. Some other locationG6-@ AP# APGAAA A}@.$(}Select a color to change:. A(A. Player/missle 0(B. Player/missle 1(C. Player/mi}ssle 2(D. Player/missle 3( E. Color 1**("F. Color 2 (Gr. 0&8 luminance)++(#G. Color 3 (Gr. 0&8} background)""(H. Color 4 / Fifth player''(I. Background (Gr. 0&8 border)(6-@  AP("6A}6-B2e% A6-BB A'(}Select Pm to move:' A( A. Player 0( B. Pl}ayer 1&( C. Player 20( D. Player 3:( E. Missile 0D( F. Missile 1N( G. Missile 2X( H. Miss}ile 3b(6-@ AP("6A g6-B2G% AlA@v'((Value of constant' AP}((Memory location3 6- A 4X) A&3 A 4*"@6-$7<,4-}6.7,6-< B)@:,!@G*@:, @X26-A:,< A 7<,0$A B 6--B:,(6-@}:7,,&@H4!@ B6-&@6-$@% 6-AV& A $' 6- A  }6-' A B2HA0(0(%Can't INC/DEC a Hardware register!/(/($HINT: INC/DEC a memory!} location, and ++(# then change the hardware register**(" to the value stored in memory on "( the next step.""} A@*2!BsC((Can't change ROM!2 A4!A> "(}Add: APH( }Change to#}:R& A (A. A constant&6-\8&(B. The value in another memory8( locationf4 "*.(C. The value $}of the last step46-p AP"6A0u "6-6A Az"A 01!B2e* B2u%}*"' A1 A P 6- A # )!AU&(F(Value out of range (0-255).P A L 6-B:, 67%,&}.>:Ai,467%@,.>:,B6-&AL A P86-@ A 6-%6-/ A86-B:,367%,.>'}:As,%67%,.>:,367%,.>:,A2((Add this to which"6-, A 26-K((Clear carr(}y?Y!)((>:,4@xK67B:,%,.>:@$,G((inary or BC?B#)*(>:,G67B:,%,.7%+"@h,,)}L 6- A6-B:,067%,.>:A ,>67%,.>:,L67%,.>:,, 6- A6-B:,,67%,.7<,*}67%,.>:,67%,.>:,5 6-B:,67,.>:&,'67%,.B5"A " 68,-6-%"!A " 68,-+}6-%""A  68,-68&,-6-%( }Select: A((( A. Add another step to this DLI,}(B. Do another DLI (C. Save this DLI & Quit$(D. Re-do this DLI.(E. Re-do all DLIs3(X. List DLI-}s entered8. 6-6-%+ , AP."6A ="AB"ApL " %V67B:,%,.".}AP`8 6-B:,67%,.'67%,.>:&,867%,.>:B:,,j67%,.t67B:,,.AB A`~% "67,.7/}@,% A67B:,%,.67B:,%,. A ;(#(Filename to list DLI to- A1; A@30}7<,0:*7<,0:!6.*6.D:367,.BB @ ##(11000 DIM DLI$(B:1},)M-P:+B:,&,'@@,-6-$@@%;6-%@9D!B:,M6-B:,1(B%% DLI$!1((2})-)(=>:@4,7<,>:@4,- -( 11095 RETURN-( 11100 DATA # -(,8, 3}#( O (( NEW and then?(ENTER >:@4,>:@4,L( to use.O0@@'-((# Stp 4})0$$(}Choose a color:$ A((A. Black/White2(B. Brown/Yellow<( C. OrangeF( D. Red/Oran5}geP( E. Red/PinkZ( F. Purpled(G. Purple-Bluen(H. Bluex(I. Blue( J. Light Blue( K. Tur6}quoise( L. Green-Blue(M. Green(N. Yellow-Green(O. Orange-Green(P. Brown/Yellow(6-@7} AP("6A6-@$+&,&(}Select Luminance:& A(A. 0 Very dark( B. 2 8} .( C. 4 .( D. 6 .(E. 8 ( F. 10 .( G. 12 ."(H. 14 Very light,(9}6-@ AP("6A66-%%&$h7(-(Error - F:A, . Try again.7 Ar( Your cho:}ice? B|DA!A@d()3"@:X,:6-6D A&#6-&@d# )!A` (>;}:, $'6-P:'AV,$6-&$AV'$''(}Select type of Display List:""(A. Standard BASIC GRAPHICS++(<}#B. Custom (self-made) Display List! 6- AP!&A "A!4( A 0(Which GRAPHICS mod=}e (0-31)4P5+ )!@1,)"@)+!@$* @(,F( Bad Mode!P A '#A"%"'6-+ >}A ,_ (2(#Enter 'T0' to put DLI change on top\(%of text window,'T1' for next line,etc_(;(.(#Enter first ?}mode line to be changed1(;68,-6 -(by DLI #F A e6-A:, !<(Lowest line = !@}F A B 6-%"6- "6-6-%$+!,C8&,9(&DLIs must be entered top to bottom!CA} A B  68,- $% A %7<,0T)(A E6-A:7,, )!;(Text lines range from 0-3!EB} A B6-%  6-%& A U%( Bad input! A B4<(/($Enter byte of DLIST to put each DLI:C}2(<68,-6> -(DLI #H A! R 68,- ( B\$23,999,99919,25,999D}9,15,99919,25,99939,45,99939,45,99979,85,99979,85,999159,167,94191,999,94191,E}999,94191,999,9419,25,9999,15,999159,167,94159,167,9423,999,99911,999,99923,9F}99,99947,999,99947,999,99995,999,99995,999,999191,999,9423,999,99911,999,9991G}91,999,94191,999,94 Change,2 Add PEEK,3 Increment,1 Decrement,1 Wait for next line,0  6-%H} @"$ &([More])6-#(&$( ,( }Dli so far:6- 6-&6-,6-2 0 6-%((Dli #I}:&6-%0 A%7 + 6-%6-@:7,,+"@eA&< 3"@f()(RTI; Press a key:0)3$A #A%J}%@ $"F (  (A&K , 6-8,6-% A', A&P 9 (to 6-8,6-%#K}/(PEEK 9 A&PR &"6A(above & A&PU (%A Z  A&_ C( A%(( PlaL}ce result in 16-8,96-%C A' ( A% A& ! #A' ! B2HA'  "(A'M} "*"6A'  )!A' / 6-&6-B:,!67%,. /67%,.=:,  ( $  ( $ N}53248,53251,H. pos. Player !!53252,53255,H. pos. Missile 53266,53269,Color Player 53270,53274,PF color 5428O}1,-1,Character set 0,0,x 6-6.""6A@067B:,%,.>:, 6-% A@,"%)P}(Data error in line ,& 6-%$++72,173,0,1,238,0,1,141,10,212,-1,5848104,64,-1,5173141,141,238,206Q},-1,5736216,248,-1,5479201,32,208,-1,5461169,0,141,0,1,-1,5336'AY#B"'%%6-F:A`R},%AV$F:Aa,$'( -"$%F:%,%A(( .'B6-P:C:,'AV,*6-C:,&$AV6ABAS}8'6BBA!AV3AY@46$ D:DLIMAKER.2AV,*6-C:,&$AV6ABAM0;MCHSE$$6-?:AG<@<@<,V +A1AR@U}CAYP(>:A%,S(V(())(! 2))(! |& & & & & & & & & & & & & & &|V}<))(! |  |F))(! |&| |&|P))(! | | | |ZW}))(! |&| A LITTLE ANIMATION |&|d))(! | | | |n))(! |&| CAN REALLY SPICE |&|x))X}(! | | | |))(! |&| UP A SCREEN! |&|))(! | | | |))(Y}! |&| |&|))(! |  |))(! |& & & & & & & & & & & & & & &|;)(! Z} ;AY@4--@A -AY1$6-?:AG<@<@[}<,1(>:A%,--(%--(%|(((((((((((((((((((((((((((((((((((|--(%|(\}(|--(%|(|''''''''''''''''|(|--(%|(|'''''''''''''''|(|--(]}%|(|''|(|--(%|(|'|'''''''''''''''''''''''''|'|(|--(%|(|'|' '|^}'|(|"--(%|(|'|' COMBINING ARTIFACTING '|'|(|,--(%|(|'|'WITH MULTIPLE CHARACTER'|'|(|6--(%|(|'|' SETS CAN YIE_}LD '|'|(|@--(%|(|'|' SOME STRANGE EFFECTS '|'|(|J--(%|(|'|' '|'|(|T--(%|(|'|'''''''`}''''''''''''''''''|'|(|^--(%|(|''|(|h--(%|(|''''''''''''''''|(|r--(%|(|a}'''''''''''''''|(||--(%|((|--(%|(((((((((((((((((((((((((((((((((((|b}?-(%?AY@4-@A v +@AY1Ac}R@CAAfUAAv6-?:AG<@<@<,a-@@2(@$ $ $ $ d}$ $ $ $D-@@a(@z z z z z z z za-@@2(@ D-@@a(e}@ >(,(! SOME SIMPLE FOUR-FRAME ANIMATION>AY@4-@A 1 +@f}AY1AR@$$6-?:AG<@<@<,-@8(@#############g}######< P-@@"\-}(@################### [-@@.(@ נԠq}B%DOS SYSB*)DUP SYSBsSAIRHOCK ACTBBACKUP BASB:COLORBARBASBMDLIMAKERBASB"TDYNAMIC1BASB DYNAMIC2LSTB FRACTALSBASB_INCOMINGBASB$PSFCONV BASBPSFLOAD BAS@-@@[(@ ΠD-@@2(@ŠǿDAY@47-@r}A -AY7 @ y!!******* FONT 1 DATA *******"y##3,0,126,102,102,102,102,126,0,y 4,56,56,s}16,56,84,186,40,406y5,0,0,0,135,252,48,48,0@y6,0,0,0,24,60,24,0,0Jy%%7,84,170,254,170,170,254,170,84Ty''8,170,170t},170,170,170,170,170,170^y49,0,0,90,184,60,36,36,0hy 56,36,36,60,52,44,60,36,36ry 58,0,126,66,90,90,66,126,0|y-u}1y!!******* FONT 2 DATA *******y3,63,51,51,51,51,63,0,0y 4,56,56,16,254,16,56,68,68y5,0,0,0,135,252,0,0,0yv}6,0,0,60,126,126,126,60,0y!!7,42,85,127,85,85,127,85,42y8,85,85,85,85,85,85,85,85y49,0,0,219,60,60,36,66,0yw} 56,0,102,60,44,52,60,102,0y((58,255,129,189,165,165,189,129,255y-1y!!******* FONT 3 DATA *******y##3,153,153x},153,153,159,0,0,159z""4,186,186,84,56,16,56,68,130z5,0,48,48,183,252,0,0,0z%%6,60,126,255,255,255,255,126,60:z y}49,0,129,90,60,60,165,66,0Dz56,0,0,255,52,44,255,0,0Nz 58,0,126,66,90,90,66,126,0Xz-1bz!!******* FONT 4 DATA **z}*****lz##3,204,204,204,207,0,0,207,204vz 4,56,56,16,254,16,56,68,68z5,0,0,0,135,252,0,0,0z!!6,0,60,126,126,126,1{}26,60,0z##49,129,129,90,60,189,165,66,0z 56,0,102,60,44,52,60,102,0z((58,255,129,189,165,165,189,129,255z-1z|}!!******* FONT 5 DATA *******z&&3,102,102,231,0,0,231,102,102,-1z!!******* FONT 6 DATA *******z""3,51,243,0,0,243,5}}1,51,51,-1z!!******* FONT 7 DATA *******{&&3,249,0,0,249,153,153,153,153,-1 {!!******* FONT 8 DATA *******{&&3,0,0~},252,204,204,204,204,252,-1 D:LISTING104,252,-1,153,153,153,153,-1 {!!******* FONT 8 DATA *******{&&3,0,0>10 NUMSETS=8:GOSUB 3000030000 FOR X=0 TO 85:READ A:POKE 1547+X,A:NEXT X30010 DATA 104,104,104,141,8,6,104,104,141,10,6,160,}0,104,153,0,6,200,204,8,6,240,5,24,10530020 DATA 4,208,242,104,169,0,141,9,6,133,20,169,7,162,6,160,57,32,92,228,96,72,138,7}2,16530030 DATA 20,205,10,6,208,24,169,0,133,20,174,9,6,189,0,6,141,244,2,232,236,8,6,208,230040 DATA 162,0,142,9,6,104,170},104,76,98,22830050 REM * 86 BYTES30060 REM ******* LOAD CHAR SETS*******30070 POKE 106,PEEK(106)-NUMSETS*4-1:GRAPHICS 0:C}HSET=(PEEK(106)+1)*256:? "ONE MOMENT"30080 CHI=CHSET/25630090 DIM XFR$(28):RESTORE 30100:FOR N=1 TO 28:READ ML:XFR$(N,N)=CH}R$(ML):NEXT N30100 DATA 104,169,0,133,205,168,169,224,133,206,177,205,145,203,200,20830110 DATA 249,230,204,230,206,165,206},201,228,208,239,9630120 FOR X=0 TO NUMSETS-1:POKE 203,0:POKE 204,CHI+X*4:XFR=USR(ADR(XFR$)):NEXT X30130 RESTORE 30180:FOR }X=0 TO NUMSETS-130140 READ A:IF A=-1 THEN NEXT X:RETURN 30150 FOR Z=0 TO 7:READ J:POKE CHSET+(1024*X)+A*8+Z,J:NEXT Z30160 }GOTO 30140ETS-130140 READ A:IF A=-1 THEN NEXT X:RETURN 30150 FOR Z=0 TO 7:READ J:POKE CHSET+(1024*X)+A*8+Z,J:NEXT Z30160  CCSTTLLA`@4#PA %TA ?x#?Vu@@g >Dt!P @@!} @y 8 #% ?Cs 6-A`6-@6-?P APLOT X,Y(+6-$+&?P,%!6-&$+ !}@`2 ,<$d A`n1 +@$'0@1@x%-@@! A@% ! !} @@ A`! A0FUNCTION OF X,YX,Y TIMES L5 6-6-6-$&$'6-$%$56-@&!}SQUARE ROOT OF X,YK 6-6-M:$%$,06-M:O:+&,'@,,86-&D K6-666-M:O:+%,'@,,#6-!}%/ 66-6 6-6&H:, ?P6-6&6-6-6-@&6-'@-6-'@!}$GET VALUES4 (} (FABULOUS FRACTIONS4(By Alex Leavens,)(!Exclusively for ANALOG Computing.,!}("((( Please input values for X and Y.,.+(#X and Y do not have to be integers..(@(Please enter X,YJ6!}-$%$T6-@$'^6-6@$'h"(How big is the window"r6-+%,'|Q&(O.K.! Screen will go!} black...9(Please wait...M-@AQ $ D:FRAC.BAS"r6-+%,'|Q&(O.K.! Screen will go M12//DSDATHEXLINDATLIDDBYTPASCHKSUTOTAIN@%} *** INCOMING ***I @ 1(MAKE CASSETTE (0), OR DISK (1)5%}I!@@ C BC0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0,10,11,12,13,14,15(r;@,9@",/-%}@"3"<68,-@ L6-A V#A` A r( CHECKING DATA286-%@(LINE:!"8B:,@%}A <F%6-F:A,%F:A,$AV+C(LINE  MISSING!FFq-@@@56-@:7<,,&@%}H[6-@:7%@<%@,,&@Hq6-8,$@%8,P."@*@ $". @PZ% 6-%%}!A %6-&Ad  ""@Pn A x F:A,@A "Ap(%}A`*@A$)*@@<*@A%O*@@b*@A!u*@@T%}@<-@@#**@. 9@<(Ag+("INSERT DISK WITH DOS, PRESS %}RETURN8;@,<g@@ D:AUTORUN.SYS*@AU)*@AU<*@%}O*@@Db*@Au*@@a A{((READY CASSETTE AND PRESS RETURNH@@%}A(C:R#A0f-@@@j"w*@{ M(( WRITING FILE#6-@/6-A 9#A%}C A M @P(BAD DATA: LINE ``0,36,216,43,255,43,169,0,141,47,2,169,60,141,2,211,169,0,141,231,2,133,1%}4,169,56,141,232,2//133,15,169,121,133,10,169,54,133,11,24,96dd0000000000696E636F6D696E674141000000000000000000000048%}634900111918150000000000000000627900,532dd00636F6E7261640074617467650000F3E5ECE5E3F400696E697469616C006C6576656C707265737%}300F3F4E1F2,897ddF400746F00626567696E00686967680073636F72651A0000000C00000000000000000067616D6500006F766572,733dd0000%}00000000696E636F6D696E670000000000000000004100707070C6D13C4D00600D0D0D0D0D0D0D0D0D0D0D,769dd0D8D0D0D0D0D0D0D0D0D0D0D0D0D0%}D8D0D0D0D0D0D0D0D0D0D0D0D0D0D8D0D0D0D0D0D0D0D0D0D0D0D0D0D8D0D,866cc0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D%}0D0D41A02CA9008580A9608581A200A5809D,81$ddFD40A5819D5341E8E056F010A5801869288580A581690085814C0B2D60A90048209C2D68A0279180%}8810FB60A2,118.dd55202B2DCA10FAA253A9FF202D2DE8A9FF202D2D60A206A9009D01D2CACA10F960A27FA9009D805D9D005E9D80,2988cc5E9D0%}05F9D805FCA10EE60BE5940209C2DB91D402918AA980AA8A906858C18BD173D9180C8BD373D9180986927,87BddA8E8C68CD0EC60BDFD408580BD53418%}58160A683209C2DA582484A4AA8682903AAB1806020A72D3DCA2D918060,680Ldd030C30C0FCF3CF3F3FCFF3FC20A72D3DCA2D1DDA2D91806040100401%}C0300C0320A72D3DDE2D488A4903AA68CA,352Vdd30054A4A4CEE2D6020E22DC9029043A8A5824A4A4AAAA58338E906DD6D40B02FC003D01BA9019D1D4%}0A5974A4A,102`dd9D45409D3140A905205F33A90985C94C3E2E205530A5828584A5838585A90720AC2EA9006020CE2DA90160C6A0,595jddF00160%}A5A185A0A20F868EBDAD3FF045BDBD3F8582BDCD3F858320B92DA68EBDDD3F1865879DDD3FBDBD3F6586,583tddC9A0B02B9DBD3F8582BDED3F1865899%}DED3FBDCD3F6588C955B0149DCD3F858320F72DA68E9DAD3FC68EA68E10,597~ccB060A9009DAD3FF0F2858CA68ABDAD3DF005200C2FA68AAD0AD2259E%}9D6D3FA5849DED3DA5859D2D3E20062F9D,26dd6D3E20062F9DAD3EA9009DED3E9D2D3F20062F259D9DAD3DE68AA58A293F858AAAC68CD0BBA90F85A9%}A903859E,132ddA907859CA93F859D60AD0AD2059C60BDED3D8582BD2D3E858320B92D60C69AF00160A59B859AA23F8696BDAD3D,761ddF023200%}C2FA696DEAD3DF019BD6D3E187DED3E9DED3EBD6D3F2901D00BBDED3DE9004C572F4C912FBDED3D6900,840ddC9A0B03F9DED3D8582BDAD3E187D2D3F%}9D2D3FBD6D3F2902D008BD2D3EE9004C7E2FBD2D3E6900C955B0189D2D,591dd3E858320F72DD005A6969DAD3DC696A696300A4C272FA9009DAD3DF0F%}06099165E99245E99325E99405E609996,740dd5E99A45E99B25E99C05E6099165F99245F99325F99405F6099965F99A45F99B25F99C05F60A599C599%}F0FC60A2,655cc08A90095C4CA10FB60868D8A0AA8BD5940AA209C2DA9009180C8918088A68DFE5940BD5940DD6D409045BD1D40,74dd2908D01D%}205530BD6D40DD8140F038BD6D401869059D6D409D59402055304C5230BD6D404838E9059D6D40A918,355dd9D1D40203A34A68D68DD8140D007C94DF%}003200E34A48D20732DA68D60868FA9109D1D408AA820732DA68FA900,994dd9D1D408A0A0A0A1869038584BD59401869038585A90A20AC2EA906205F%}33A90C85C4A68F60A90085A885AAA213,200ddBD1D402901F038E6A8BD1D402908D009BD5940C5AA900285AADE3140D021BD45409D3140BD5940C591D%}011A909,179dd9D1D40A5979D45409D3140A90585CA20E72FCA10BEA5AA85C660A90085A4A5B6C902D004A207D006A5924A0901,300ddAA869020%}C631A690BDA140DD9740D028A5B5F02420BD31B01FA5B6F073C902F017BDBF4038E930C990B00DA592,328 cc4A4AAABDDD40F006CA10F84CAF31A490B%}9A53DD96D40B0F348204432681869149DED40A9009DF1409DF54095BC,27ddAD0AD229031869029DE9409DE540A490B9BF401869049DE14038EDC7402%}907F009A9002A4901A8B9583D9DF940,936ddFEDD40A90585CBD033BDBF4038E9284A4A4AAAE014B025BD1D402901D01EA490B9A53DDD6D40B0149D59%}40A597,363(dd4A9D45409D3140A9019D1D4020E72FC6903005A6904CEF30A5A485A560AD0AD20D0AD2C59560BDC940F053E6A4,7572ddDE9740D02%}1BDA1409D97408A2901A8B9583D187DBF409DBF40D00BA5B6C902F055A9009DC940A5B6C902F04ABD,457<ddD3401045BDBF4038E9288584BDA53D8585%}A9009DBF409DC940A91920AC2EA906205F3360A5B5F021A599290FD0,633Fdd1B20BD31B016AD0AD2290F18658B9D97409DA1404A4A9DD340FEC94060B%}DED40A888205F32205F32205F32205F,242Pdd32205F32205F32205F3260B9805D3DC62D99805DC860B9805D1DC22D99805D60C6B1F00160A5B085B185%}B1A900,285Zdd85AAA20386B2BDDD40D0034C3A33B5BC290EF030BDE14038E92D4A4A4AAAE014B014BD6D40DD8140F00F186905,456ddd9D6D409D5%}9402055304C28338AA820B533A91985CBD063B5BC2901D043FEF140BDF140187DF5409DF540901AFE,922nddED40BDED40A8C5AA900285AA205F32BDED%}40186904A8206A32DEE540D041BDE9409DE540BDF940187DE140C930,766xdd9004C9CA9029BDE14038E92D8584BDED4038E9148585A91420AC2EA9052%}05F33A900A6B29DE1409D04D09DDD40,205dd95BC9DE140C6B23005A6B24C8732A5AA85C660A5C105C0F02CF8A5C138E90185C1A5C0E90085C04C6B33%}F81865,367ddC185C1A5C0690085C0A001A204B9C000209333CA8810F6D860E692A592290F85920A0A0A0A85BB8DC802A492B9,739ddA533A2134%}8290F209E33684A4A4A4A09509DD13CCA600102030405060708091011121314151698203334F02DB9,653dd8140CDAB3D902548AA209C2D6838E90699%}8140996D40AA980AA8A20518BDE9339180C89180986927A8CA10F160,939ddC3C3FFC3C3FFA205AD0AD2291FC914B0F7A8B96D40C94DD0EF8E093420B%}533A200CA10E460A90685AD85C560A2,996dd13A000BD8140C94DF008C8DD6D40F0028888CA10EE881004A90185B760C909F002C90A608A203334D0F9%}86B786,325cc93A90085B58DC740A901859EA907859CA9FF859DA94F8584A9508585A9204CAC2EA90285B68593A90085B520DD,24dd2F20502DA2%}7F9D805DCA10FA8DC740A904859BA91385B9A6B9BD6D40C94DF01618690385858A0A0A0A69038584,926ddA901859EA90320AC2EC6B910DD302A204B3%}4A9808599D028AD0AD2297F18691085828584AD0AD2293F85838585,770dd20E22DC902B0E4A91020AC2EAD0AD20901859920D62FAD1FD0C907D01620%}1A2FA59910EFAD0AD20D0AD24AB0BE,691dd4AB0894AB0AFA90A859B204B34204B34204038A97885AB8D7736A5C0C5C2901CA5C1C5C3901685C3A5C08%}5C2A2,357cc05BDD13C9D712CCA10F7A9648D77364C0437A90085B5A90120FD39A5922901208A38A5B60A0A0AA8A207B9FF35,98dd9D962CC8CA1%}0F6A98C8D7736200F3620DD2F20502DA980859920D62FA599F00B0A0A0A490FF0F285C6D0EE85C6,447dd200F36A692BD7B3D8595BD6B3D858BBD5B3D%}859B859A8A4AAABD8B3D8597BD933D85B085B18A4AAABD9F3D8591,200cc8A4AAABDA33D85A185A0A900A2139D1D40CA10FAA2039DDD409DE140CA10F%}7A20F9DAD3FCA10FAA23F9DAD3DCA,24dd10FAA2079DC9409DBF409DD340CA10F4A2078A18690605BB49F09DB540CA10F2A900858A859360737265707%}06F,477"dd686373656C747475687320D62FA5A2490685A2AAA005BD6D3699E42CE88810F6A5A2F01AA207AD0AD2297F1869,760,dd379DBF40AD0A%}D2290F090A9DB540CA10E860ADE52CC5AB900A200E34A9008DE52CF017A21320D62FEEE52C8A29,7196dd010A0A0A8D01D28E00D2CA10EB600D0D0D0D0%}D0D6A004D2C0046A9008D2F028D08D2A24C9580CA10FB2065E420,473@dd012D203A2D205C2D206B3320FB39208C33201A3A20F92EA95085ABA905859F%}A9018593A9698D0002A9398D0102,275JccA9A08D3002A92C8D3102A95C8D07D4A9038D1DD0A9118D6F02A23AA035A906205CE4A205BD113D9D615ECA1%}0F7,18TddA9C08D0ED4A9008DC402A9CE8DC502A9428DC602A92E8D2F02A9008D7736A90085B785B885B520502D20DD2FA9,175^dd348DC702A207A%}D0AD2290F09039DC9409D97409DA140CA10EDA902208A38200F36A207BD54399D975DCA10F7A9,862hdd008599AD0AD2297F18693AA203189DE1406902%}CA10F88D1ED020D62FAD1FD02902D017A93C8DE52CA900859920,592rdd7B33A91085C8AD1FD02902F0F9AD1FD029012D8402F00FA599297FD0CF20443%}64C59374C0437A90085C085C120,378|dd6B33200F36AD1FD04A90FA203A2DA97D8DC740A9068594A900A2079D975DCA10FAA92E8DC702A213A94D9D6D%}40,327dd9D8140CA10F7A947A2019D76409D8A40CA10F720EF33203635A90185B5AD1FD0C907F008A93C8D77364C043720,231ddD93020472E201%}A2FA5B6D009208A30205D384C1338207432A5B8F0034C6434A5B5D0CDA2031DDD40CA10FA05A8,761cc05A4D0BFA90A859B85A18593204038201534A5%}B7D006207B334CDD374C643420472E201A2FA900A20F1DAD3FCA,42dd10FAA23F1DAD3DCA10FAC900D0E460C6AFD028A91785AFA5AE186901290385AE%}AAA000BD4C3920A22FBD503920,189ddAF2FBD443920BC2FBD483920C92F6085B6A8BEB138A000BDCC3820A22FBDD83820AF2FBDB43820BC2FBDC0382%}0,318ddC92FE8C8C00C90E260003060070000C0FF3F070100000001FF2078E4E2E2E2E2FC7811FEFF041E27474747473F,195dd1E887FE0000003%}FFFCE08000000080E0F0F0F8FC7E7FFFFFFFFC7B000000000000F8E4FEFF1FEC000000000000,551dd1F277FFFF837070F0F1F3F7EFEFFFFFF3FDE000%}00000000C1F1F0F3FFE0000003078FDFFFFFEFFFFEC0000000C,216dd1E5FFFFF7FFFFF3700000000000030F8F8F0FC7F0004060301711C06C38EC360%}382080C0603C7EFFFFFFFF7E3C,391ddA203BD00D015BC95BCCA10F660488A489848D8A698A000B904D01905D02901F00EDED140BD9F4085CC38E9029%}D,882dd9F40E8C8C8C00490E1205C39A59818690205BB8D0AD48D1AD08D1ED0A698A000BDB5409912D09913D0BDBF4099,508dd00D0186908C899%}00D0E8C8C00490E48698E006A5B32A290385B3490385B4A203A5B30A0A05B385B3CA10F58D0A,700ddD48D0CD0A20318BDE14065B49D04D0CA10F568A%}868AA6840A90048A205A900202E3ACA202E3A202E3ACA68202E,338cc3A60ADDB3C495A8DDB3CADDE3C494E8DDE3C60DEDA3CBDDA3C290FC90A600950%}9DDA3CCA60D8A900859885B3E6,16cc99A5B5F03DC694D039A9068594A20520233A902EA909202E3A20123ACA20233A9020A909202E3A20233A9016A9%},64dd05202E3ACA20233A900BA90085B520FB39A93085C8A5992903D044AD78024A4A4903AABD573D1865A3C90BB032,450&dd85A3AA0A0A0A0A09%}088DBD40BDA53C8587BDB03C8586BDBB3C8589BDC63C85888A0A0AA8A203B9E53C9D5D5EC8,6720ccCA10F63053C69FD04FA905859FA593F00CA5B6C90%}2D04120D9304C1C3BAD8402D036854DA20FBDAD3FF008CA10,71:ddF88EBD403025ADC74049018DC74038E92C9DBD3FA94D9DCD3FA9009DDD3F9DED3FF%}EAD3FA91085C7204833A203,520DddA5B81D08D0CA10FA290185B8205C398D1ED0A5992903F013A5C7F009C6C7A5C78D00D209208D01D24C623BA5A9,8%}07NddF0F68DC40209408D01D2AD0AD2291F1869288D00D2C6A9A5C5F039A5992901D03FA5AC09A08D03D2C6AC1034C6,195XddAD100AA90085C585A%}C85ADF01AA6ADBD993B8D02D2A205C93CD002A20A86ACD0123C483C485B79A5C6F0058D02,432bddD2A9A88D03D2A5B638E902F043A5CCF00E8D04D2A9%}A88D05D2A90085CCF034A5A5F02DA5B6F014A5A54809C08D,713ldd05D2680A0A0A1869788D04D2D018E6A7A5A7290F85A7AABD853C8D04D2A5A5187D9%}53C8D05D2A9008D07D2A5CA,828vccF00FAABD7E3C8D06D2BD783C8D07D2C6CAA5C9F00C8D06D2AABD6E3C8D07D2C6C9A5C4F00FAABD643C8D06D2BD,5%}4dd5A3C8D07D2C6C4A5CBF00D0A0A0A8D06D2A9A68D07D2C6CBA5C8F010A9508D06D2C6C8A5C8290F09A08D07D24C,707dd5FE4A3A4A5A7A9A8A7%}A6A8AA0406090B0F0C110D130E0C0A08060504030202014547494B4D4F0A0E12161A1E0A,444dd0B0C0D0E0D0C0B0A090807060708090302010003020%}10002010002020001001F234C80BE004280B4DDE1FFFFFF,659ddFFFF000000000000BE804C231F001F234C80BEFFFFFFFFFFFFFFFFFFFFFF00004C00%}005000000000005A00004E,218dd0000000000F8F8000078F040003870600038707020383870703838383838381C1C381C1C08381C0C003C1E0400,75%}2dd3E3E0000387C7CFEFEFE0000022A022800000F3F302A0228000000000000000000000000220A02280000000080,452ddA880280000F0FC0CA8%}802800000000000000000000000088A08028000000FF0100465A41505050504650505A50,293cc28461E32461E411E322D28231E1915120E0B08050A1%}41E1E282832323C3C4646505A646EFFC0B0A09070503023,92dd1E19140F0A0503BF3F1F1414222C36120B08081616242432320000000000000000000%}000000000000000000000,918* 4545 BYTESD:INCOMING.BAS0503BF3F1F1414222C36120B08081616242432320000000000000000000$BWXP/=SECTOADDRESDIRHLSTSBUFFERADADNUMBEIOCADRHADRLNUMHNUMLNAFAA@)}A  )} PRINT SHOP IMAGE CON)}VERTER (PICTURE LOADER/CONVERTER)BY MIKE MCCUEN(2(C) 1985 ANALOG COMPUTING<d A A)}INITi ATITLE/MENUn A@KEYPRESSs ASET UP OPTIONSx A READ DIRECTORY} A0)}PRINT DIRECTORY! A!GET SCREEN NUMBER AINSTRUCTIONS AALOAD SCREEN! AB!)}WAIT START/OPTION ADCHECK FILENAME APSAVE SCREEN  ' %INSTRUCTIONS F)}OR LOAD+A( INSTRUCTIONS:(**("After the picture loads, the back-**("ground will turn red. Th)}is is the**("prompt for you to insert a DOS 2.0,,($disk in the drive and press START to ++(#save the screen. The )}filename will**("be the same as the one used on the(Print Shop disk..(.(#If the screen is the wrong one, you)}**("can abort the save by pressing the$--(%OPTION key when the screen turns red.)0(&(PRESS RETURN TO CONTINUE...)}0 A@.$LGET SCREEN # TO LOADQ?%( ;(SCREEN # TO LOAD?V# !(()}# A[%` 6-8,6-%@`e$33CLEAR SCREEN TO DISPLAY OPTIONSG+)}A-(DIRECTORY OF SCREENS:G( $SET UP TITLE PAGE/MENU%+A%@)}@*(*( PRINT SHOP IMAGE CONVERTER#( VER. 1.0(!!( BY MIKE MCCUEN-''( *} (C) 1985 ANALOG COMPUTING23(3('700('|ԠҠԠРˠĠ|*}<00('|ӠŠΠٮ|A00('F$xINITIALIZE VARIA*}BLESY1;@ ,;A$,;A,9@,96.J67A,.Y67@,.+ 6. 67A$,. +6*}7@,.$SET UP DISK I/O CALL%-A6A@"!% 104,32,83,228,96$READ THE DI*}RECTORY;Ap@'Ai@;-AbAeHAyP:'AV,HAxP:+'AV&P:'AV*},,$AV, 6-C:,%+&Ab,$A($6-P:'AV,$6-&$AVArAs6-?:A6*}, $ ""PRINT DIRECTORY, STORE NAMES " 6-"-@B:,@2 ))7%@<%@,0PAA0@ `;*}(%@)7<%@,START:@:7%@,,I6-%@`68,-@:7%@,, h 6.D:(67@,.7<%@*},9-@B:,E@:7,,"^6.7@<&@,h A00   &&67$@&@<$@,.   6* }- $WAIT FOR RETURN KEYI@@K:*)@5@IAUA@$##SET UP* } RESIDENT DISK HANDLER,""READ SECTORS AND LOAD SCREEN1 +@$A@1A Ad"%* }%6-F:@,%AV$F:@,, 6-6-6'Ap@'Ai@; -<F:Ad,"@(%* }@HAyP:'AV,HAxP:+'AV&P:'AV,,$AV,E 6-%J$6-P:'AV,$6-&$AVO* }ArAsTJ6-?:A6, 6-%A&$ 80@@JA @Y$hWAIT FOR START OR *}OPTIONrF:B2y,"@$w!F:B2y,"@'!%| ABERROR DETECTED?+A*(ER*}ROR #F:A,-(?( Restarting...-A '%0 CHECK FOR A VALID FILENAME5&&6.7$@&@*}<$@,:)-@B:,)7<,4 AD ?   $D6.7@<&@,$* SAVE SCREEN TO FILENAME*}* SELECTED AT BEGINNING@@R6-F:A,$AV<6-F:@,%AV$F:@,B6-R6*}-&%@<6-A2%@+%@@<6-P:'AV,P6-&$AV!%@/%@@6-P*}:'AV,P6-&AV$%@%@ b6-?:C:hhhLV,<@,*@b3 LOWER-CASE H, INVERS*}E *, L, V, INVERSE LOWER-CASE D$D:PIC2b6-?:C:hhhLV,<@,*@b3 LOWER-CASE H, INVERS(4'(xkRADADNUMBEIOCADRHADRLNUMHNUML.} * LOAD A GRAPHICS 8* SCREEN USING CIO] +@$A1A ]@@.}D:FILENAME.EXTR6-F:A,$AV<6-F:@,%AV$F:@,B6-R6-&%@<6-A2%@.}+%@@<6-P:'AV,P6-&$AV!%@/%@@6-P:'AV,P6-&AV$.}%@%@ b6-?:C:hhhLV,<@,*@b3 LOWER-CASE H, INVERSE *, L, V, INVERSE LOWER-CASE .}D$ D:LOADER.BASb6-?:C:hhhLV,<@,*@b3 LOWER-CASE H, INVERSE *, L, V, INVERSE LOWER-CASE ,