@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 D8u1270 IF PEEK(53251)=0 THEN 13301280 CHANGE=-CHANGE:POKE 1791,129-PEEK(1791):POKE 53255,127+77*CHANGE3310 FOR BYTE=39 TO 205T}:POKE PA+768+BYTE,192:NEXT BYTE5440 POKE 704,15:POKE 705,40:POKE 706,40:POKE 707,155450 POKE 53248,128:POKE 53249,0:POKE 53U}250,5:POKE 53255,204:NEXT BYTE5440 POKE 704,15:POKE 705,40:POKE 706,40:POKE 707,155450 POKE 53248,128:POKE 53249,0:POKE 531290 IF CHANGE=1 THEN 14001320 GOTO 14001400 POKE 53278,01430 IF LINE+BOTROW*2<>15+BARLIM OR BARLIM=3 THEN 10001435 POKE W}559,0:POKE 20,01440 IF PEEK(20)=0 THEN 14401450 POKE DLIST+21+BARLIM,22:X=USR(ADR(MOVMEM$),DLIST+31+BARLIM,ADR(DL$),29-10*B X}ARLIM)1460 X=USR(ADR(MOVMEM$),ADR(DL$),DLIST+22+BARLIM,29-10*BARLIM)1470 POKE 559,62:BARLIM=BARLIM+1:GOTO 10003030 DIM MLA Y}NG$(90),INV$(578),DAT$(16),ROW(5),DL$(30)5150 BARLIM=029-10*BARLIM)1470 POKE 559,62:BARLIM=BARLIM+1:GOTO 10003030 DIM MLA 81260 IF PEEK(20)<30 AND PEEK(19)=0 THEN 13301280 CHANGE=-CHANGE:POKE 1791,129-PEEK(1791):POKE 19,0:POKE 20,0:POKE 53255,127+[}77*CHANGE5430 POKE 53278,0:POKE 19,0:POKE 20,00 CHANGE=-CHANGE:POKE 1791,129-PEEK(1791):POKE 19,0:POKE 20,0:POKE 53255,127+04010 SETCOLOR 0,4,14:SETCOLOR 1,4,6:SETCOLOR 2,15,14:SETCOLOR 3,4,10:SETCOLOR 4,7,05440 POKE 704,15:POKE 705,40:POKE 706,40:]}POKE 707,112 0,4,14:SETCOLOR 1,4,6:SETCOLOR 2,15,14:SETCOLOR 3,4,10:SETCOLOR 4,7,05440 POKE 704,15:POKE 705,40:POKE 706,40: 1000 X=USR(ADR(MOVMEM$),ADR(INV$)+SB,MEM1+LINE*24,287)1280 CHANGE=-CHANGE:POKE 1791,129-PEEK(1791):POKE 19,0:POKE 20,0:POKE _}53255,127+77*CHANGE:LINE=LINE+11320 GOTO 10005280 LINE=0 CHANGE=-CHANGE:POKE 1791,129-PEEK(1791):POKE 19,0:POKE 20,0:POKE ;330 INV$(R+C+27,R+C+28)="":INV$(R+C+315,R+C+316)="":EF=21030 INV$(R+C+27,R+C+28)="":INV$(R+C+315,R+C+316)=""1320 GOa}TO 10005280 LINE=-15390 FOR LP=0 TO 4 STEP 2:READ DAT$:INV$(LP*48+27,LP*48+42)=DAT$:INV$(LP*48+363,LP*48+378)=DAT$5400 REAb}D DAT$:INV$(LP*48+75,LP*48+90)=DAT$:INV$(LP*48+315,LP*48+330)=DAT$:NEXT LP8+42)=DAT$:INV$(LP*48+363,LP*48+378)=DAT$5400 REAK320 R=48*INT((PEEK(1696)-38-8*LINE)/16):C=2*INT((PEEK(1692)-SCROLL-COARSE*8-47)/16):R=R*(R>=0)8+363,LP*48+378)=DAT$5400 REA _1040 TMP=R/48:ROW(TMP)=ROW(TMP)-1:IF ROW(TMP)<>0 OR TMP<>BOTROW THEN 10801050 FOR LP=BOTROW TO 0 STEP -1:IF ROW(LP)=0 THEN N$e}EXT LP:GOTO 20001060 POP :BOTROW=LP2000 STOP 3030 DIM MLANG$(90),INV$(578),DAT$(16),ROW(5)5270 SCROLL=0:CHANGE=1:SB=0:EF=$f}0:BOTROW=5:COARSE=0:SAUCER=05420 FOR R=0 TO 5:ROW(R)=8:NEXT R(90),INV$(578),DAT$(16),ROW(5)5270 SCROLL=0:CHANGE=1:SB=0:EF=$?1000 X=USR(ADR(MOVMEM$),ADR(INV$)+SB,MEM1+LINE*24,287-48*(5-BOTROW))NV$(578),DAT$(16),ROW(5)5270 SCROLL=0:CHANGE=1:SB=0:EF=(E1070 X=USR(ADR(MOVMEM$),ADR(""),MEM1+LINE*24+TMP*48+24,23)16),ROW(5)5270 SCROLL=0:CHANGE=1:SB=0:EF=,SqKdX;SAVE#D:KRAZYMZE.M65nX;5-28-88 9:00 P.M.xX;EI LO HIIJ ML MHX;0j} D1X D2X D1Y D2Y GX GX1 COLS" GOLD, TOTL6 P0YP@ P1YPJ LHDT0k} HHD^ GCNTh PXr PY| XHD JHD HS1 HS2 LINES MZNUM COLORWSCN;0l};gr5 a or b VFLG TFLG TIM SCR1 SCR2 TB1 TB2IEI&X;0RANDOM :HPOSP00m}DHPOSP1NHITCLRX MYSETPbX;l PMBv PLR0 PLR1 PLR2 PLR3 MAZE0 0n}GR5A GR5BX;0BEGIN ZHSC;;0 scores STARTQ>PVFLG;;vbi flagQ>$>;;set finalFSLPP0o}FSC19;;scores  PFSC290  IFSLP*Q>5MYSET;;chr set4P> SETPMG;;PMG setupHQ>;;install vbiR $>5VBI\ %>4VB0p}If \pQ>zPTFLG;;title flag CLPLRS;;clear plyrs DEFP0;;define p0Q>PGX;;set ghostQ>;;positions0q}PGX1Q>PTIM;;timerQ>PVFLG;;turn on vbi INTRO;;what it says GAME1;;play 1st game NTRMSS;;inter0r}missionQ>P/;;screen off GAME2;;middle game$ NTRMSS. GAME1;;1st again8 NTRMSSB!START;;do againLX;V0s} GAME1Q>`P/j CLR0;;clear mazet CLRGR5;;clear gr5~ PRPMZE;;prepare maze GENMZ5;;generate it COPYTO5;;0t}to gr 5Q>(;;colorsPQ>ʺPQ>P SETUP;;set up screen CLPLRS;;clear & define DEFP0Q>0u}PTIM;;ghost timer Q>PVFLG;;vbi flags PTFLG(Q>4DL5;;gr5 dlist2P0< Q>5DL5FP1PQ>>;;screen onZP0v}/dQD1X;;dot positionsnPPXxQD1YPPYQ>;;plot color PCOLORQ>4GR5A;;top half PWSCN Q>5GR5A PWS0w}CN PLOT5Q>;;plot color PCOLORQD2X;;dot posPPXQD2YPPYQ>4GR5B;;bottom half PWSCN" Q>5GR0x}5B, PWSCN6 PLOT5@Q>;;ghosties againJPGXTQ>^PGX1hX;rX;move 1st dot,then 2nd|X;STC1Qx;;stick 0y}0R>HST1 !STC2ST1R>;;right?HTRLQD1XR>OFPJ1 LOKR;;look rightEPJ1 ERSD1;;erase dot0z}#D1X SHWD1;;plot it in WAIT;;new position!PJ1&TRLR> ;;left?0HTRU:QD1XDR>NFPJ1X LOKLbEP0{}J1l ERSD1v"D1X SHWD1 WAIT!PJ1 TRUR>HTRDQD1YR>FPJ1 LOKUEPJ1 ERSD1"D1Y0|} SHWD1 WAIT !PJ1 TRDR> HPJ1*QD1Y4R>>FPJ1H LOKDREPJ1\ ERSD1f#D1Yp SHWD1z WAIT 0}}PJ1!STC2X;X;erase top dotX; ERSD1Q> PCOLOR SED1QD1XPPXQD1YPPY Q>4GR5A PWSCN Q>5GR0~}5A PWSCN PHITCLR PLOT5$ :. X;8 X;plot top dotB X;L SHWD1Q>V PCOLOR` !SED1j X;t X;move the 2nd dot~0} X; STC2Qy;;stick 1 R> FPSJ R>;;left HT2L QD2X R>O FPSJ  L2R;;look right EPSJ  ERSD2;;e0}rase dot #D2X L2L SHWD2;;plot dot WAIT !PSJ T2LR> ( HT2U2 QD2X< R>F FPSJP  L2FZ EPSJd ERSD20}n "D2Xx !L2L T2UR> HT2D QD2Y R> FPSJ  L2U EPSJ ERSD2 "D2Y !L2L T2DR> HPSJ QD0}2Y R> FPSJ  L2D" EPSJ, ERSD26 #D2Y@ !L2LJ X;T X;is there a winner^ X;h PSJ WINER?r ENXGME| PHITC0}LR CHKCOL X; QGX;;reset ghosts R>ڮ DFOK DEFP0 FOKQGX1 R> DSOK DEFP1 SOKQ;;chk for R0}>;;select HSSK 7 7 !START& SSK!STC10 X;: NXGME:;;someone wonD X;N X;erase bottom dotX X;b ERSD2QD2Xl 0}PPXv QD2Y PPY Q>4GR5B PWSCN Q>5GR5B PWSCN Q> PCOLOR PLOT5 : X; X;plot bottom dot X;0} SHWD2QD2X PPX QD2Y PPY Q>* PCOLOR4 PHITCLR> PLOT5H :R X;\ X;setup dotsf X;p SETUPQ>z PD1X 0}PD2X Q> PD1Y PD2Y : X; X;display list for gr 5 X; DL5 p=p=p=J GR5A   = = = =   = =0} = =   = = = =   = = = =   = =F TITLE$ J. GR5B8  = = = = B  = = = = L  =0} = = = V  = = = = `  = =Aj DL5tX;~ WAITLQ>HWT1 WAITQ> WT1P WLPQHWLPPM:0}X;X;clear mazeX;CLR0Q>4MAZE0PLO Q>5MAZE0 PHIC03$>;;7.5 pages C02%>(Q>2 C01P@LO7<1F0}HC01P#HIZ0dIC02n:xX; X;prepare maze for generationX;PRPMZEQ>4MAZE0PLO Q>5MAZE0PHI$>;0};23 lines PR2%> Q> PR1P@LO73)>AHPR1QLO,O>P"PLO,QHI6O>@PHIJ0TIPR2^ Q>4M0}AZE0h,r O>4 |PLO Q>5MAZE0 O>5 PHI$>;;3 lines TUN%>Q> TUPP@LO73)>OHTUPQLO0},O>PPLOQHIO>&PHI00:ITUND:NX;XX;generate the middle mazebX;in Antic mode 4lX;vGENMZ4Q0}>4MAZE0} PLOQ>5MAZE0} PHI$>MVUQTB419 PTB190IMVUQ> PMZNUMHSMZX;X;ge0}nerate a maze for gr. 5X; GENMZ5Q>4MAZE0 PLO Q>5MAZE0 *PHI4$>>MVTQTB519H PTB19R0\IM0}VTfQ>p PMZNUMzX;X;the maze generation isX;is done hereX; SMZQ>%>P@LO7;;start of maze GN1QR0}ANDOM;;get rand direct M>;;0-3PXHD;;save itPJHD;;twiceGN3QXHD;;get direct T?;;x 2>;;0=rt, 1= upQLO;0};2=lft, 3=dn,;;find new posOTB19;;2 away from$PJ;;where we are.QHI8 OTB19B PJLQ@J7;;what's thereV0}RMZNUM;;a wall?` HGN2;;nojQXHD;;yes so eraset T?;;it~>QLO,OTB29;;get inbetweenPI;;locationQHI O0}TB29 PIQ>;;zero itP@I7#XHD;;store nextQXHD;;directionP@J7;;in new spotQJ;;reset current 0}PLO;;location toQJ;;new posPHI(!GN1;;again2GN2#XHD;;try next<QXHD;;directionFM>PPXHD;;if same as0}ZRJHD;;old-go backdHGN3;;try this directn%>;;going backx Q@LO7PXHDQ> P@LO7QXHD;;have we comeR>0};;back to begin? HGN4;;no:;;yes-done!GN4#XHD;;try next directQXHD;;and see if itM>;;will workT?>0},QLO OTB19PLO"QHI, OTB196PHI@!GN1JX;TX;tables to got rt,lf,up,dn^X;for gr5 and antic 5hX;r0}TB51 ==`=| ===TB52 === ==P=TB41 === ==P=TB42 ===0} ==(=X;X;plot routine for gr. 5X; PLOT5QPYT?PMLQ>U?PMHTML& UMH;;X40QML:P0}LHDDQMHNPHHDXTMLb UMH;;X8lTMLv UMH;;X16QML,OLHDPMLQMHOHHDPMH QWSCN,OML0}PML QWSCNOMHPMH QPXM> >*QPX4V?>V?H,ROML\PLOfQMHpO>zPHI %COLOR QBMASK0}29 MCOLORS8PLHD QBMASK19%> M@LO7LLHD P@LO7:X;X;copy maze to gr5 screenX;COPYTO5Q>;0};24 lines PLINESPPX;;reset px$Q>. PCOLOR8 Q>4GR5AB PWSCNL Q>5GR5AV PWSCN` Q>4MAZE0jPJt Q>5MAZE0}0~ PJ NLN%> NXYQ@J7 FNEXB'PX QLINESPPY PLOT5 NEXB#PX%PX)>PHNXY #LINES Q0}LINES R> FCDONQJ(,2O>P<PJF QJPO>Z PJd!NLNn CDON%>xMABQGR5A8 PGR5B8QGR5A0}8PGR5B83HMAB:X;X;clear out gr5 screen memryX;CLRGR5Q>5GR5APHI Q>4GR5APLO$>0} L5A%>Q>" L5P@LO7,36HL5@#HIJ0TIL5A^:hX;rCOLORS =U==|BMASK1 ?===BMASK2 =0}0= =X;X;look for wallsX;to see if movement X;is okX; LOKRQD1Y$D1X2LLL MUL80:X; LOK0}LQD1Y$D1X0!LLL& LOKU$D1Y00:AD$D1XN!LLLXX;b LOKD$D1Yl2vA$D1X!LLLX;"X;multiply b0}y 80 for gr5 screenX; MUL80T? PLHD;;x2Q>U?PHHD%> M8ATLHD UHHD;;x161 IM8AQLHD PM0}L*QHHD4PMH>%>H M8BTLHDR UHHD;;x64\1fIM8BpQLHD;;16+64=X80z,OMLPMLQHHDOMHPMH Q>40}MAZE0,OMLPI Q>5MAZE0OMH PIA,OIPI$ QI.O>8 PIB%>LQ@I7VR>`HLO0}Kj;t:~LOK,:X;!X;look routines for 2nd playerX; L2RQD2Y$D2X2 MUL80:X; L2FQD2Y$D0}2X0  MUL80:X;( L2U$D2Y20<AF$D2XP MUL80Z:dX;n L2D$D2Yx2A$D2X MUL80:X;"X;d0}isplay list for antic 4 scrnX;DL4 p=p=p=D MAZE0 ==== ==== ==== =0}=== =F SCRTXT A" DL4,X;6X;see if there's a winner@X;add 100 to winner's scoreJX;TWINER?QD10}X^R>MhFMZ1rQD2X|R>MFMZ2,: MZ1#FSC1 AHUN1;: MZ2#FSC2 AHUN2;:X;X;set up0} for middle maze X; PRPMID CLR0 Q>4MAZE0& PLO0 Q>5MAZE0: PHID $>N PMA%>X Q>b PMCP@LO7l 3v )>'0} HPMC QLO , O>( PLO QHI O> PHI 0 IPMA : X; X;setup player graphics!X; !SETPMGQ>>;;sing0}le line res!P/ !Q>*!Po4!Q>f;;colors>!PH!Q>&R!P\!Q>f!Pp!Pz!Q>! PHPOSP0! PHPOSP1!PHP0}OSP0!Q>;;width!Pж!P !P !P !Q>!P! Q>5PMB!P!:"X;""X;put player at random vertical"0}X;position on screen within$"X;a certain range."X;8"DEFP1 CLRP1;;does bottomB"QRANDOM;;ghostL"M>V",`"O>Gj" PP10}YPt"$>~"?"P1LQPDF19" PPLR18" PPLR1d8"3" PPLR18" PPLR1d8"3"2"(> "HP1L" %P1YP"Q># PPLR30}8 # PPLR38# PPLR3h8# PPLR3i8(#Q>2# PPLR3 8<# PPLR3 8F# PPLR3n8P# PPLR3o8Z#:d#X;n#X;place top0} ghost on screenx#X;#DEFP0 CLRP0# QRANDOM#M>#,#O> # PP0YP#$># %P0YP#P0LQPDF19# PPLR08# PPLR00}d8#3# PPLR08$ PPLR0d8$3$2"$(> ,$HP0L6$Q>@$ %P0YPJ$ PPLR28T$ PPLR28^$ PPLR2h8h$ PPLR2i8r$Q0}>|$ PPLR2 8$ PPLR2 8$ PPLR2n8$ PPLR2o8$:$X;$X;erase players 0 & 2$X;$ CLRP0$>$Q>$ %P0YP$0}C0LPPLR08$ PPLR28$ PPLR0d8% PPLR2d8%3%0&%IC0L0%::%X;D%X;erase players 1 & 3N%X;X% CLRP1$>b%Q>l% %0}P1YPv%C1LPPLR18% PPLR1d8% PPLR38% PPLR3d8%3%0%IC1L%:%X;%X;the ghosties%X;%PDF1 =>=k=%0} =c==% ===&X; &X;move the ghosts&X; &MGHOST#GX*&#GX14&QGX>& PHPOSP0H&PHPOSP0R&QGX1\& PH0}POSP1f&PHPOSP1p&:z&X;&X;clear out all plyrs&X;&CLPLRS$>&A&CP1PPLR09& PPLR19& PPLR29& PPLR39&2&0}HCP1&:&X;&X;chekc for collisions'X;send anyone hit back to'X;beginning of maze'X;$'CHKCOLQ.' PCOLS8'M>0}B'FKBL'FIR ERSD1V'Q>`'PD1Xj'Q> t'PD1Y~' SHWD1':' KBQCOLS'M>' FTRP1'SCD ERSD2'Q>'PD2X'0}Q> 'PD2Y' SHWD2':'X;( TRP1Q ( PCOLS(M>(FKC((!FIR2( KCQCOLS<(M>F(HSCDP(:Z(X;d(!X;the vertic0}al blank interruptn(X;make some sounds,move thex(X;ghosts, & change their(X;luminance(X;(VBIQVFLG;;off or( HVVV;;0}on(Q>;;no sound(PҾ(P(FNOV(VVV MGHOST( #GCNT(QGCNT;;for luminance(M>;;changes in( >;;color) &G0}CNT) QVP19)P") QVP29,)P6)QTFLG;;title flag@)FNOCHK;;don't chk forJ) CHKCOL;;collisionsT)X;^)NOCHK"TIM;;0}on titleh)QTIM;;screenr)HNOV|)#NTX)QNTX)M>;;play notes)PNTX)>)Q>)PTIM) QNOTE9)P)Q>)P0})NOV!b;;xit)X;)X;the middle maze*X;*GAME2Q>4DL4;;new*P0;;display list&* Q>5DL40*P1:* STOPAL;;no ghos0}tsD*Q>;;screen colrsN*PX*Q>b*Pl*Q>Dv*P* PRPMID;;prepare middle* GENMZ4;;maze & generate* PUTGLD;0};fill w/gold*Q>>*P/;;screen on* COLLECT;;go for gold!*:*X;*X;fill the maze with gold*X;*PUTGLDQ>4MAZE00}*PLO* Q>5MAZE0+PHI +Q>+ PGOLD + PGOLD*+$>4+ GLLQLO>+,H+O>(R+PLO\+QHIf+O>p+PHIz+%>+ GLPQ0}@LO7+HGNY+ Q>;;gold+ P@LO7+ #GOLD+ QGOLD+HGNY+ #GOLD+GNY3+)>&+HGLP+0+IGLL, QGOLD,;,S0}>$, PGOLD., QGOLD8,S>B, PGOLDL,:V,X;`,X;here's where we fight overj,X;the gold coinst,X;~,COLLECTQ>;;s0}taring pos.,PD1X,Q> ,PD1Y, MCH1;;show man,Q>%;;2nd man,PD2X,Q> ,PD2Y, MCH2;;show him,Q>;;zero 0}scores,$>,SCCPSCR19-0 -ISCC-$>;;screen scores-Q>(-SCFPSCRTXT 92-PSCRTXT9<-0F-ISCFP-X;Z-CS0}1 MCH1;;show 1st mand-Qx;;stick 0n-R>x-FCS2-R>-HCTL;;move right?- CLR;;chk 4 wall,etc-ECS2- CHGLD1;;0}chk for gold- PCHR1-#D1X-CGEN MCH1;;show move- WAITL;;delay-!CS2;;plyr 2-X;-CTLR> ;;left?-HCTU. C0}LF.ECS2. CHGLD1". PCHR1,."D1X6. !CGEN@.X;J.CTUR>;;upT.HCTD^. CLUh.ECS2r. CHGLD1|. PCHR1."D1Y. !0}CGEN.CTDR> ;;down?.HCS2. CLD.ECS2. CHGLD1. PCHR1.#D1Y. !CGEN.X;.CS2 MCH2;;repeat for.Qy;;20}nd palyr/R>/ FMWIN/R>&/HELF0/ C2R:/ EMWIND/ CHGLD2N/ PCH2X/#D2Xb/EGEN MCH2l/ WAITLv/ !MWIN/X;/ 0}ELFR> /HELU/ C2L/ EMWIN/ CHGLD2/ PCH2/"D2X/ !EGEN/X;/ ELUR>/HELD/ C2U0 EMWIN 0 CHGLD20 0} PCH2 0"D2Y*0 !EGEN40X;>0 ELDR> H0 HMWINR0 C2D\0 EMWINf0 CHGLD2p0 PCH2z0#D2Y0 !EGEN00X;has anyone won0}?0X;0MWINQSCR1;;get sum0,0 OSCR20 PTOTL0 QSCR10 OSCR20 PTOTL0RGOLD;;does sum =0HFLIP;;tot0}al gold?1 QTOTL1 RGOLD1 HFLIP$1:;;somebody won.1X;81FLIPQ;;select?B1R>L1HFFPV17`17j1!START;;yes,start o0}vrt1 FFP!CS1~1X;1X;chk for walls1X;1 CLRQD1Y1$D1X121CLLL MUL401%>1Q@I71R>1 FWALL1GG,1:20} WALL; 2:2X;2 CLFQD1Y(2$D1X220<2 !CLLLF2X;P2 CLU%D1YZ21d2Cn2$D1Xx2 !CLLL2X;2 CLD%D1Y232C2$D1X0}2 !CLLL2X;2X;chks for wall for man 22X;2 C2RQD2Y2$D2X222 !CLLL3X;3 C2LQD2Y3$D2X"30,3 !CLLL63X;@3 0}C2U%D2YJ31T3C^3$D2Xh3 !CLLLr3X;|3 C2D%D2Y333C3$D2X3 !CLLL3X;3X;zero out top3X;3PCHR1QD1Y3$D1X0}3 MUL403%>3Q>3P@I74:4X;4X;zero out bot man&4X;04 PCH2QD2Y:4$D2XD4 MUL40N4%>X4Cb4P@I7l4:v4X0};4X;show top man4X;4 MCH1QD1Y4$D1X4 MUL404%>4Q>4P@I74:4X;4X;show bot man4X;4 MCH2QD2Y5$0}D2X 5 MUL405%> 5Q> *5P@I745:>5X;H5 X;mult x 40 to get screen posR5X;\5 MUL40T?f5PLHDp5Q>z5U?5PHHD5 T0}LHD;;x45UHHD5 TLHD;;x85UHHD5QLHD5PML5QHHD5PMH5 TLHD;;x165UHHD5 TLHD;;325UHHD6QLHD6,6OML0}$6PML.6QHHD86OMHB6PMHL6 Q>4MAZE0V6,`6OMLj6PIt6 Q>5MAZE0~6OMH6 PI6A6,6OI6PI6 QI6O>6 0}PI6:6X;6X;is it gold we are moving6X;onto- for top man7X; 7CHGLD1R>;;gold?7 FGD1;;yes7:(7GD1 BELL;;s0}ounds27#SCR1;;inc. score<7HDGAF7 #SCR1P7DGA$>;;show scoreZ7#SCRTXT 9d7QSCRTXT 9n7 DGCR>x7DFST7Q>0}7PSCRTXT 9707GFST7#SCRTXT 97QSCRTXT 97!DGC7X;7FST ADDH1;;add 1 to hi7$>;;scores7 #FSC197 0}QFSC197 FSRR>8DDGB8Q>8 PFSC19"80,8GDGB68 #FSC19@8 QFSC19J8!FSRT8DGB:^8X;h8X;do same for bottom manr80}X;|8CHGLD2R>8FEG18:8 EG1 BELL8 #SCR28HEGA8 #SCR28 EGA$>8#SCRTXT98QSCRTXT98 EGCR>80}DFSU8Q>8PSCRTXT9909GFSU9#SCRTXT9&9QSCRTXT909!EGC:9X;D9FSU ADDH2N9$>X9 #FSC29b9 QFSC29l0}9 FSVR>v9DEGB9Q>9 PFSC29909GEGB9 #FSC299 QFSC299!FSV9EGB:9X;9X;intermission time9X;show curre0}nt scores9X;9NTRMSSQ>4ILST:P0 : Q>5ILST:P1 : STOPAL*: SS1Q4:HSS2>: RR1QH:FRR1R::\: SS2Qf:H0}SS1p: RR2Qz:FRR2:::X;:X;stop vbi & remove players:X;:STOPALQ>: PVFLG:$>:STPPHPOSP09:0:ISTP0}:::X;:X;intermission display list;X;;ILST p=p=p=p; p=p=G$; PS1.; p=p=p=G8; PS2B; p=p=p=GL; 0} FIRMSV; A`; ILSTj;X;t;X;misc. data & tables~;X;;VP1 D=D=J=J;VP2 $=$=*=*;"TITLE A rAy 0} A;#SCRTXT A scores 1:000 2:000 A;PS1 A SCORE 1: A;FSC1 A000 A;PS2 A SCORE 2: A;FSC2 A000 A0};"FIRMS A A;X;;X;bell sound for middle maze;X;< BELLQ> <P<$><&(< WAIT2<Q><<0}PF<:P<X;Z<X;frequencies for belld<X;n< NTX x<NOTE ===<X;4INTL<P0< Q>5INTL<P1< CCCQGX<R><DIIA< DEFP0< IIAQGX1<R>=DIIB= DEFP1= IIBQ"=R>0},=HIIC6=:@= IICR>J=HCCCT= ZHSC^=!CCCh=X;r=X;zero out high scores|=X;= ZHSCQ>=$>=IILPHSC19= PHSC20}9=0=IIIL=:=X;=X;introduction display list=X;=INTL p=p=p= p=G= INTIL> > p=p=F> CREDIT&>0} p=p=p=p=F0> PST:> p=FD> PRSRESN> p=p=p=p=FX> HISCb> Al> INTLv>X;>X;screen data>X;>!INTIL A 0} r A> A K y A>"CREDIT A ٠٠ A>PST A start play A>"PRSRES A 0} option scores A>HISC A 1: A>HSC1 A00000 2: A>HSC2 A00000 A>X;> X;add 1 to high score top man>X;? ADD0}H1$> ?AA1#HSC19? QHSC19 ?R>*?DAAE4?Q>>? PHSC19H?0R?IAA1\? QHSC19f?AAE:p?X;z?X;add 100 to top man?X;0}? AHUN1$>?!AA1?X;?X;add 100 to bottom man?X;? AHUN2$>?!BB1?X;? X;add 1 to high score bot man?X;? A0}DDH2$>?BB1#HSC29@ QHSC29@R>@DBBE$@Q>.@ PHSC298@0B@IBB1L@BBE:V@X;`@X;the characer setj@X;t@ MYSET0}~@ ===@ ===@ 8=8=8=8@ 8==8=@ f=f=f=@ ===@ =f==f@ f==f=@ 0}=>=`=<@ =|==@ =f=l=@ 0=f=F=@ ===A === A =(==A ==(=A =(=0}=i(A (=(=A=A2A ====C x==0}<=6C >=f=f=&C =s=c=c0C n=c=c=:C <=f==DC ===|NC =s=c=cXC c=c=c=bC =f=`=x0}lC `=c=f=|vC =f=`=xC `=`=`=`C <=f==C ==f=D |=f=f=fHD l=`=`=RD |===\D ===1}fD =s=f=lpD f=f=c=zD :=f=`=/ 3 3xLw1Og 4b U15} p1 2LR1 J 4E U1Ƙ p1 2LR1- 4( U1ƚ p1 2LR1  4 U1 p1 2Lw1 3`5}LY1ybOX 5S 2 %2 2L1 ; )56 2ƙL1$ 25 2ƛL1  <5 2L1 g5' 65}ڐ 36ڐ 5hhL0L0` 3` 3` `pppJ F:J 5 } AE2M`` AiPii iO5 }iPi`}33 ) uuů& u…uÅ檥5 }L,3檥)ūз`檥) uuL,3`PP( *&&5 }&eeee)JJei49441` 3樤P殥5 }iPiLC4``U?0  4`L4ʊL4芦L4 *&5}&eeeeeiɀ8`` 4` 4`ʊ 4`芦 4`pppD5}F:AF5MM `: <8`: <8` 2'i(i`>/of&ЍЍЩ5}Ѝ Ѝ Ѝ ЩЩ` 6 )iG6dșd ꤤhi no` y6 )i 6dșd5} hi no`dd`dd`>kc来ЍХЍ`5}`Ѕ) U1 p1`) 2 %2`Ѕ)L6)` ҍ@ 6槥):: 6Ƶ5}";";)";#;ҩLbF051 {:D 5 2 7>/ 7`i(i 查5}&٥8` ]9% k9:: ]9xV 8M 9 B9 ]9 2Lk8  93 9 B9ƘL&85} 9 9 B9ƚL&8  9 9 B9L&8 k9yV 9M : P9 k9 2L8  (93 : P9ƙL8 09 : P9ƛL8  99 : 5}P9L8eeŠş`hhL0L 8 y9`8`L8L8ȘL8L8L8L8ȘL5}8 y9` y9` y9` y9 ` *&&&&eeeeei5}`` ;淢:::0 ::L9 ;:::0 ::L9`` ;湢:::0 ::L": <5}:::0 ::LB:`0:1 {:```ppppppG:pppG:pppG:A:DDJJ$$**r!y5}scores3#/2%3#/2%Ң 2`c0;15} 36ڐ 5` U;L1;;;`ppppG;ppF;ppppF;pF;ppppF;Ac;r+y5}startplayoptionscores;; ;;`L;L!<;;5};`PQ888888fffffff>`<|fl0fF(((i((AAf<x<6>ffsccncc:AV,!67@$,.067@,.<6-@H6-@T6-A<xAY9*} A `1AY@4FI:, Be^(>:A%,>:AS,u(Not enough memory!xFn A@/69+}-F:A`,%F:Aa,$AV>6-F:@,M6-F:@,]6-%$AVnF:,&@2Pn A@/6-F:A`,%F:9,}Aa,$AV>6-F:@,M6-F:@,]6-%$AVnF:,&@2Z36-?:C:,<<%Av,36-?:C:,<<%Av9-},d#@@E:5AR@G-@@W( ֠i-@@(by Stephen9.} W. Miller@@nn((Load(View"(PIXAV+(Save4(Quit@6-@L6-@R6-d@w9/}n Ax5 6-5A@APAA A@#@@# A` +AR90}@B@@D:*.*E(H(T6-`6-@1@17@<@,0 AW91} A(7@<@,4062I( 7@<@,W6-%@ APa B@4(92} Return to menuB6-%@N6-@X A^"a$?@1@@D:*.*?-@93}3@37@<@,0062A< @ B(6-@<-@@*794}<,4 6-&@*6-@v !67@<@,.D:;67@,.7@<,Q67B:,%@,..v67B:,%95}@,.7@<@,6.load A"@6-6-"@6-6-"@$96} @@"cAI@'AP@3AR?ASQAVcAW@097},]6-?:C:,,#-@0)@N68,-&P:'@,$@R ]@6O-@#6-98}@7-@@8, I6-8,O6-@# 68,-@68,-# JTQ8,"*8@,"@99}*8@,"@*8@,"@T$Tz@@-AYe6-?:C:,<8,<8@,<9:}8@,<8@,,wAY@4z$^6.view AhO"@&AaP:'AV,EA`&F:Aa9;},$AVO ArO"@&AaP:'AV,EA`&F:Aa,$AVO A|"@$VA9<}@'A @9A@VF:B2y,@A$n@@($(Replace,(9=}Add9(SubtractA(ANDH(ORP(EOR\6-@h6-@n6-7 A6-&@!6--6.PIXAV7 A9>}!"@6-6-!6-!"@6-6-!6-"@$6. PIXAV onto A"@9?}6-"@6-"@$kk(cI'll turn off the screen to make it quicker, but it'll still take a9@}bout one and a half minutes.(Pressto begin. F:B2y,@A O#67A<A,.>:A49A},/"@O67A<A,.>:@$,/"@/67A<A,.>:@V,&O#67A <A ,.>:A49B},/"@O67A <A ,.>:A,0/"@/67A <A ,.>:A),:/"@/67A <A 9C},.>:@7,D/"@/67A <A ,.>:@,N/"@/67A <A ,.>:@i,XG#67A!<9D}A!,.>:A4,'G67A!<A!,.>:A,bV@@-AYA6-?:C:,<<<,SA9E}Y@4V$lm A @*ARD(Type the filename: Q@cAR@m B9F}v)B:, @)67B:,%@,. 77@<@,0D:767@<@,.D:67B:,%@,.69G}.save A"@6-6-"@6-6-"@$ @@9H}cAI@'AP@3AR?ASQAVcAW@0f6-?:C:,,"*@9I}5*@@H*@@[*@@f@$:(Really quit? (Y/N):@@9J}K:,)@,@:Y,*@:N,AP@"@:N,$$AAU$6-?:B, | 9K}6-@@(0@@ N(Press: to move upf(to move down|(to choose669L}-F:@,$Af@6@@ $-@ %$*@@1*6-F:B2y,4V"@-@ 9M}%0*@@2V6-%@$+ ,&+&@,$+",>g"@-@-Afd(>:@(,>:9N}@(,>:@(,7@<@,g$Hb"@-@ %0*@@2b6-&@$+!@,%+&@9O},$+"@,R$-@ %$*@@1\6-@ f,F:B2y,"*"6-&@, App Az9P}q@@ 9(Press: to  screen 1W( to  screen 2q(for main menu6-F:B2y9Q},"@A P%"@6-@% A P%"@6-@% A P A >@9R}@;(>:@(,>:@(,>:@(,>$/-@#"/6-A"@6-@A9S}"@6-@e"@6-Ad"@6-@9-@@%6-5-9T}%@9""67<,.>:,"@67<,.>:,"@67<,.>:,"@%A59U}$"@67<,.>:,.b 6-%$ "06-&B$P:'B,6X6-F:A,%F:A,$AVb A9V}8   B$L, +()(Error in line !,V PIXAV`""104,104,104,133,212,104,2840j!!133,207,9W}133,89,104,133,7414t!!206,133,88,104,133,209,3547~ 104,133,208,169,0,133,591484,169,0,133,85,169,77531,1339X},218,169,0,133,2015203,133,205,32,0,6,2092133,204,230,85,32,0,4596,198,84,32,0,6,6466198,85,32,0,6,199Y}8,970885,32,0,6,230,84,804732,0,6,230,84,32,69260,6,230,85,32,0,66186,230,85,32,0,6,8887198,85,9Z}198,84,162,0,3176!!165,203,56,229,205,144,37243,232,208,249,24,101,1245 205,70,205,144,2,230,238 205,197,9[}205,144,1,232,9459""134,203,165,203,234,234,8143(234,41,3,133,203,169,68462 0,208,156,208,150,165,5218<212,9\}240,8,165,208,133,726F88,165,209,133,89,169,750P0,133,218,165,203,32,931Z15,6,165,212,240,8,9518d!!165,206,9]}133,88,165,207,3779n133,89,230,85,165,85,170x!!201,160,208,211,230,84,7435!!165,84,201,192,208,205,754496,09^},0,0,0,0,7376 CLEAR""104,104,133,204,104,133,2845""203,104,133,206,104,133,8250205,162,0,169,0,129,99599_}""203,165,203,197,205,208,5461 7,165,204,197,206,208,77031,96,230,203,208,235,3335230,204,184,80,230,0,60689`} CSWITCH""104,104,104,133,203,104,2795""104,133,204,104,104,133,7408""205,104,104,133,206,169,43530,139a}3,85,133,84,169,33591,133,218,32,15,6,880" 170,213,203,240,9,169,3344,0,133,218,181,203,32,463615,6,230,89b}5,165,85,7004@ 201,160,144,227,169,0,5954J133,85,230,84,165,84,4832T201,192,144,215,96,0,3237^ PAGE 6h9c}32,15,6,192,0,208,2096r7,24,101,203,133,203,7079|230,205,96,41,3,133,401!!215,165,85,201,160,176,1496!!112,9d}165,84,201,192,176,5834106,160,0,162,8,169,27840,133,214,169,0,133,7226213,6,213,38,214,144,772613,249e},165,213,101,84,1217 133,213,165,214,105,0,7255""133,214,202,208,234,165,351985,74,74,24,101,213,20 133,29f}13,169,0,101,214,2615 133,214,24,165,88,101,8889!!213,133,213,165,89,101,9605 214,133,214,165,85,41,913339g},133,216,56,169,3,7684!!133,217,229,216,133,216,7676,216,166,216,240,5,4722& 6,217,202,208,251,165,37090 219q}B%DOS SYSB*)DUP SYSBSGDW1 LSTBVGDW10 LSTBZGDW2 LSTB\GDW3 LSTB^GDW4 LSTB`GDW5 LSTBcGDW6 LSTBdGDW7 LSTBgGDW8 LSTBhGDW9 LSTBiKRAZYMZEM65BKRAZYMZEOBJBK"PIXELAVGBASB?vPIXELAVGM65BAUNIVERT BASB UNIVERT M658,240,18,165,217,49,1631: 213,166,216,240,32,74,1323D!!202,208,252,240,26,160,7040N1,208,22,165,215,166,440X9r}216,240,4,10,202,208,9726b!!252,133,215,165,217,73,1596l255,49,213,5,215,145,549v213,96,0,0,0,0,463 CIO9s}104,162,16,76,86,228,2578%F:BU', @4"+@c%$A +@VAYA6-F:A`,%F:Aa,$A9t}V6F:,"@y@x,6-%@6 A`F:,"@@*F:,@e 6-%@* A9u}`$ D:PIXAVNW.BAS,6-%@6 A`F:,"@@*F:,@e 6-%@* A8!vdEInX;x!X; !X; | PIXAV Utilities |!X; | by |!X; | =w}Stephen W. Miller |!X; | July, 1987 |!X; | for |!X; |ANALOG Computing Magazine|!X=x}; X;X; **************X; System equatesX; **************X; X; ScreenX; ROWCR=y}ST COLCRSU" SAVMSCX,X;6X; *****************@X; Program variablesJX; *****************TX;^X; PIXAV vari=z}ableshX;rAVG;;AVG. of pixels|CENTER;;value of CENTERNUMPIX;;NUM. of PIXelsSCRN1L;;SCReeN 1 addrLo={}SCRN1H;;SCReeN 1 addrHiSCRN2L;;SCReeN 2 addrLoSCRN2H;;SCReeN 2 addrHiMODE;;1 or 2 scr MODEX;=|}X; PLTLOC variablesX;ADRL;;scr data ADdRLoADRH;;scr data ADdRHiCOLR;;pixel COLoRCOUNT;;shifts=}} to COUNTMASK;;scrn data MASKCMD;;CoMmanDX;&X; PLTLOC constants0X;:LOC;;LOCateDPLOT;;PLOTN=~}X;XX; CLEAR variablesbX;lBEGL;;BEGin addrLovBEGH;;BEGin addrHiFINL;;FINish addrLoFINH;;FINish a=}ddrHiX;X; CSWITCH variablesX;NEW0;;New val for 0sNEW1;;New val for 1sNEW2;;New val for 2sNE=}W3;;Nes val for 3sX; X; ***** X; PIXAV X; *****X; X; This routine, called from!X; BASIC, takes the average=} of CX; the values of each available 0784 ; pixel in a 3 x 3 square*X; and modifies the center4X; pixel's value with t=}hat>X; average. This process isH$X; repeated on every pixel in theRX; 160 x 192 ANTIC mode E\X; display.fX;pXz=}X;X; Get parametersX;7;;Satisfy BASIC77 PMODE7 PSCRN1HPSAVMSC7 PSCRN1L PSAVMSC7=} PSCRN2H7 PSCRN2L$X;.X; Main Loop8X;BQ>;;Init loopLPROWCRS;;Top edgeVYLOOPQ>;;Init loop`PCOLCRS;=};Left edgejXLOOPQ>LOC;;Set up fortPCMD;;9 LOCates~Q>;;Get readyPAVG;;to averagePNUMPIX;;and sumX; X; =}LOCatesX; LOCADD;;Center center PCENTER#COLCRS;;Center right LOCADD"ROWCRS;;Upper right LOCADD"=}COLCRS;;Upper center LOCADD "COLCRS;;Upper left LOCADD#ROWCRS;;Center left( LOCADD2#ROWCRS;;Lower left<=} LOCADDF#COLCRS;;Lower centerP LOCADDZ#COLCRS;;Lower rightd LOCADDn"COLCRS;;Back tox"ROWCRS;;the center=}X;X; AVG=INT(AVG/NUMPIX+0.5)X;$>;;0 to quotientQAVG;;Get sum;;;Subtract prep!NXTSUBSNUMPIX;;Subt. divi=}sorDROUND;;Round if done2;;else countHNXTSUB;;and keep goingROUND,;;Add prepONUMPIX;;Fix rollunderVNUM=}PIX;;Divide by 2DCOMP;;Round down#NUMPIX;;or up!COMPRNUMPIX;;remainder-sum/2"DFINDQU;;Down if < 0,2;;or up i=}f > 06FINDQU&AVG;;Store result@X;JX; Do operation on AVGTX;^QAVG;;get AVGh4;;Dor 4;;the|4;;operationM>=};;Cut off all butPAVG;;2 LSBsQ>;;Fail BBX & BBYBBXHXLOOP;;Needed to beBBYHYLOOP;;relocateableX;X; PL=}OT resultsX;QMODE;;See if we needFNOFLP1;;to flip screensQSCRN2L;;If yes,PSAVMSC;;thenQSCRN2H;;doP=}SAVMSC;;it NOFLP1Q>PLOT;;Setup to PLOTPCMD&QAVG;;Color to PLOT0 PLTLOC;;Do it:QMODE;;See if we needDFN=}OFLP2;;to flip backNQSCRN1L;;If yes,XPSAVMSC;;thenbQSCRN1H;;dolPSAVMSC;;itvX;X; Loop managementX;N=}OFLP2#COLCRS;;Move rightQCOLCRS;;See if we areR>;;at right edgeHBBX;;If no, continue#ROWCRS;;If yes, go dow=}nQROWCRS;;See if we areR>;;at bottom edgeHBBY;;If no, continue:;;If yes, done!X; X; ***** X; CLEAR  X=}; *****X; X; This routine, called from*X; BASIC, sets all memory4 X; locations in the specified>"X; boundaries, incl=}usive, to 0.HX;RW\X;fX; Get parameterspX;z7;;Satisfy BASIC7 PBEGH7 PBEGL7 PFINH7 PFINL=}$>;;Indir nonindexX;X; Main loopX;CLOOPQ>;;Erase P@BEGL6;;location QBEGL;;See if we're RFINL;;at=} the end$ HCCONT;;If not, cont. QBEGH;;See if we're8 RFINH;;really doneB HCCONT;;If not, contL :;;Done!V CCONT#BE=}GL;;Move on` HCLOOP;;Repeat if notj "X; ;on page boundt #BEGH;;If so, INC page~ /;;Unconditional JCLOOP=};;branch X; X; ******* X; CSWITCH X; ******* X; X; This routine, called from X; BASIC, replaces each pixel "X;=} value in the 160 x 192 ANTIC X; mode E display with a X; specified pixel value, X; depending on the original X; valu=}e of the pixel. X; W X;( X; Get parameters2 X;< 7;;Satisfy BASICF 7P 7Z PNEW0;;New val for 0sd 7n 7x PNEW=}1;;New val for 1s 7 7 PNEW2;;New val for 2s 7 7 PNEW3;;New val for 3s Q>;;Start at PCOLCRS;;upper PRO=}WCRS;;right X; X; Main loop X; CSLOOPQ>LOC;;LOCate PCMD;;Do  PLTLOC;;it >;;Use result as" RNEW09;;index t=}o table, FNOPLOT;;If same, skip6 Q>PLOT;;else PLOT@ PCMDJ QNEW09;;color to useT  PLTLOC;;Do it^ NOPLOT#COLCRS;;M=}ove righth QCOLCRS;;See if we arer R>;;off right edge| DCSLOOP;;If no, repeat Q>;;else return to PCOLCRS;;left =}edge #ROWCRS;;and move down QROWCRS;;See if we are R>;;off bottom edge DCSLOOP;;If no, repeat :;;else done! =}X; X; ****** X; LOCADD X; ****** X; X; This routine, called from X; PIXAV, adds the value of a X; specified pix=}el to AVG and $X; increments NUMPIX, but only if& X; the pixel is within the0 X; boundaries.: X;D N X;X X; Do jobb=} X;l LOCADDv  PLTLOC;;LOCate )>;;See if legal HLOCADQ;;If no, then RTS ,;;If yes, then OAVG;;update AVG P=}AVG #NUMPIX;;and NUMPIX LOCADQ:;;Go back X; X; ****** X; PLTLOC X; ****** X; X; This routine, called from =}X; PIXAV and CSWITCH, either X; returns the value of a #X; specified pixel through the A #X; register or changes the val=}ue* !X; of a specified pixel to the4 X; value in the A register,> $X; depending on the value in CMD.H X;R X; Prelim fixing=} and checking\ X;f PLTLOCp M>;;Zero top 6 bitsz PCOLR;;Keep it QCOLCRS;;Get Column R>;;Out of bounds? EABOR=}T;;If yes, abort QROWCRS;;else get row R>;;Out of bounds? EABORT;;If yes, abort %>;;Indir, nonindex X; X; A=}DR=40*row+col/4+SAVMSC X; $>;;8 bit factor Q>(;;Bytes PADRH;;per lineQ>;;ClearPADRL;;productMULTTAD=}RL;;Move ADR pair$UADRH;;as one big byte.DNOADD;;Cont if bit clr8,;;Neaten upBQADRL;;AddLOROWCRS;;otherVPADR=}L;;factor` QADRH;;toj O>;;thetPADRH;;product~NOADD0;;Count bitsHMULT;;Cont if moreQCOLCRS;;Divide V?;;co=}lumnV?;;by four ,;;Add OADRL;;it PADRL;;to Q>;;theOADRH;;screenPADRH;;address ,;;AddQSAVMSC;;SAV=}MSC OADRL;;to PADRL;;theQSAVMSC;;screenOADRH;;address(PADRH;;also2X;<#X; Get # of bits to shift things=}FX; (COUNT=(col MOD 4)*2)PX;ZQCOLCRS;;Get columndM>;;Clear top bitsnPCOUNT;;Keep itx;;;Subtract prepQ>;;=}Max shift/2PMASK;;Also bot 2 bitsSCOUNT;;SubtractPCOUNT;;itTCOUNT;;Times 2X;X; Adjust MASKX;$COU=}NT;;# of shiftsFMASKLQ;;Skip it if noneMASKLTMASK;;Move left0;;Count shiftsHMASKL;;Cont if more MASKLQQCM=}D;;PLOT or LOCate?FPLT;;If 0, then PLOTX;"X; Do LOCate,X;6QMASK;;Keep only@M@ADRL7;;needed bitsJ$COUNT;;N=}owTFPLTLOQ;;move^LOCRV?;;ith 0;;backrHLOCR;;over|FPLTLOQ;;Done!X; X; AbortX;ABORT%>;;Flag error=}HPLTLOQ;;Done!X; X; Do PLOTX;PLTQCOLR;;Get pixel color$COUNT;;MoveFCOLRLQ;;itCOLRLT?;;into 0;;cor=}rectHCOLRL;;positionCOLRLQPCOLR;;Keep itQMASK;;Get mask&N>;;A=NOT(MASK)0M@ADRL7;;Clear 2 bits:LCOLR;;F=}ill 2 bitsDP@ADRL7;;Put it backNPLTLOQ:;;Done!QMASK;;Get mask&N>;;A=NOT(MASK)0M@ADRL7;;Clear 2 bits:LCOLR;;F<4fg? 4 DCOUNPARSWORHELWAIBLANKTABLETEMPFRUNITSTOUNITSFACTORAFLAFRNUINDETYPTEMRESULBhA}ADAAAA'((  *A >  @@@C1SA}`@@@h@@@97xt $$****************************** $$*A} UNIVERT * $$* by W. Frasz and R. Brockway* $$* *$$* COPYRIGHT A}1989 *$$* BY ANALOG COMPUTING *$$******************************2S +A @1AA}@HS6-F:A`,%AV$F:Aa,<%@@q+%@@?%@'@S%@(@eA}j%@)F:A`,%@0F:Aa,FZ-@!(univert3-@@Z("Š̠A}Π͠PU-@@+(brought to you by=-@@U(Biff & The BitfreakZ*-@@!*((LOA}ADING TABLES)d?6-AD6-A'6-A36-A?6-AnL;@@,>6.' A} L(39 SPACES)xII;A ,;@0,;@ ,;@ ,9<@,;@,7 #A!-A}A%"3A6%7  #AP-"-7B:,%@,.-7B:,%@,., G #A`A}-!"268<,-C68<@,-G $ $(Don't forget your lunch.)N (}-@A}'(univert9-@#K( *** HELP ***N(8-@@8(Enter first letter of units: @A}%-@@!%( ()36-6-'6-@36-@6-%@7<,4AA}6-%@7<,0,Ap"06-%@")-@@!-(0$, AP6 6.@*67B:,%A}@,.7<,*6-%@J7<,0,A T - (^%"@6-@ % Ah'6-@6-%A}@' A,,*** "FROM" STRING PARSE SUBROUTINE ***$6-6-@$6-B:,"AA}"Ap(7<,0 6-%@( A0! A!6-A:7@<,,6.7%@<,$4HELPA}6-@$6-@$!!** START OF WORK SCREEN ***K (}-@'(univert9-@@K(A} Instructions:p(( Values to be converted should beA(entered in the form:S-@@p(number followed by uniA}ts+(((For example, 27.5 square feet+(.(( If uncertain of units, type HELP+(.(&Q-@@'A@A}dM(!Enter next value to be converted:Q(0@ :N-@@!"@F( Number then unA}its, please.J N D"@   N++6-?:A6<%@AdAU$gg104,104,133,213,104,133,212,104,133,204,104,133,203,104,133,206,104,133,205,104,104,13A}3,208,169,1ii133,207,160,0,177,205,209,203,208,11,200,177,203,201,44,240,38,196,208,48,239,165,207,197,212,208,5ii169A},0,133,212,96,200,177,203,201,44,208,249,200,152,24,101,203,133,203,144,2,230,204,230,207,24,144dd203,196,208,240,16,200,A}196,208,208,7,136,177,205,201,83,240,4,160,0,240,202,165,207,133,212,96 ACREANGSTROM BUSHEL CARATCA}CCENTIGRAMCENTILITERCENTIMETERCLCM CORD CU CM CU FT CU IN CU KM CA}U M CU MI CU MM CU YDCUBIC CENTIMETERCUBIC DECAMETERCUBIC DECIMETERCUBIC FEETCUBA}IC FOOTCUBIC INCHCUBIC INCHESCUBIC KILOMETERCUBIC METERCUBIC MICRONCUBIC MILECUBIC A}MILLIMETERCUBIC YARD CUBIT CUP DAYDECAGRAMDECALITERDECAMETERDECIGRAMDECILIA}TERDECIMETER DEGREE FATHOM FEET FL OZFLUID OUNCE FOOTFORTNIGHTFT FURLONA}GG GAL GALLONGR GRAM HECTAREHECTOGRAMHECTOLITERHECTOMETER HOURHRA}HUNDREDWEIGHT HWTIMPERIAL GALLONIMPERIAL QUARTIN INCH INCHESKGKILOGRAMA}KILOLITERKILOMETERKMLLB LEAGUELIGHTYEAR LITERM METERMIMICROGA}RAMMICROLITER MICRONMICROSECOND MILEMILLIGRAMMILLILITERMILLIMETERMILLISECONDA} MIN MINUTEMLMMNANOSECONDNAUTICAL MILE OUNCEOZ PECKPENNYWEIGHTPICOA}SECOND PINT POUNDPT PWTQT QUART RADIAN ROD SEC SECOND SECTION SA}Q CM SQ FT SQ IN SQ KM SQ M SQ MI SQ MM SQ YDSQUARE CENTIMETERSQUARE DECAMETERA}SQUARE DECIMETERSQUARE FEETSQUARE FOOTSQUARE INCHSQUARE INCHESSQUARE KILOMETERSQUARA}E METER SQUARE MICRON SQUARE MILE SQUARE MILLIMETER SQUARE YARD STATUTE MILE STONETABLESPA}OON TBLSP TBSPTEASPOON TONTOWNSHIP TSP YARDYD YEARp2,40468564E3q1,1A}.E-10r3,3.52383E-2s4,200E-3t 3,1.E-6u 4,.01v 3,1.E-5w 1,.01x 3,.01y 1,.01z3,3.624576{A} 3,1.E-6|3,2.8317E-2}3,1.6387064E-5~ 3,1.E9 3,13,4.168182E9 3,1.E-93,.76456 3,1.EA}-6 3,1.E3 3,1.E-33,.0283173,.0283173,1.638706E-53,1.638706E-5 3,1.E9 3,13,1A}.E-183,4.168182E9 3,1.E-93,.76456 1,.45723,2.3658E-45,8.6400E4 4,10 3,.01 1,A}10 4,.1 3,1.E-4 1,.1 6,11,1.8288 1,.30483,2.957373E-53,2.957373E-5 1,.3048A}5,1.2096E6 1,.30481,201.168 4,13,3.7854E-33,3.7854E-3 4,1 4,1 2,1.E4 4,100A} 3,.1 1,100 5,3600 5,36004,4.535924E44,4.535924E43,4.546E-33,1.1366E-3 1,.02A}54 1,.0254 1,.0254 4,1000 4,1000 3,1 1,1000 1,1000 3,1.E-34,453.592371,5.A}55977E31,9.4597E15 3,1.E-3 1,1 1,11,1.609344E3 4,1.E-6 3,1.E-9 1,1.E-6 5,1.E-6A}1,1.609344E3 4,1.E-3 3,1.E-6 1,1.E-3 5,1.E-3 5,60 5,60 3,1.E-6 1,1.E-3 5,1A}.E-91,1.8533E34,28.34954,28.34953,8.809E-3 4,1.5555,1.E-123,4.732E-44,453.5923A}73,4.732E-4 4,1.5553,9.46326E-43,9.46326E-46,57.29571,5.0292 5,1 5,12,2.59A}0E6 2,1.E-42,.0929032,6.4516E-4 2,1.E6 2,12,2.58999E6 2,1.E-62,.836127 2,1.EA}-4 2,100 2,.012,.0929032,.0929032,6.4516E-42,6.4516E-4 2,1.E6 2,12,1.E-12A}2,2.58999E6 2,1.E-62,.8361271,1.609344E3 4,63503,1.479E-53,1.479E-53,1.479E-5A}3,4.928E-64,9.07185E52,9.32396E73,4.928E-6 1,.9144 1,.91445,3.1536E7D:UNIVERTN.BAA}S3,4.928E-64,9.07185E52,9.32396E73,4.928E-6 1,.9144 1,.91445,3.1536E7D:UNIVERTN.BA@ ASEARCH SUBROUTINEA%X;* CONVERSION SEARCH SUBROUTINE *X;A BASIC USR ROUTINE(AX;INDEX=USR(ADR(SUBR),COUNT,ADR(TE}ABLE),ADR(UNITS),LEN(UNITS$))2X;<X;Variable length recordsF"X;Records terminated with commaPX;Checks for trailing "S"ZE}X;dnTBLL;;TABLE ADDRESS LOxTBLH;; HI BYTEUNITSL;;UNITS STRING LOUNITSH;; HI BYTERECNUME};;RECORD NUM INDEXNCHARS;;CHARS IN STRINGCOUNTL;;RECORD COUNT LOCOUNTH;; HI BYTEX;77PCOUNE}TH;;FETCH ARGUMENTS7;; FROM STACK PCOUNTL7 PTBLH7 PTBLL"7, PUNITSH67@ PUNITSLJ7;;(IGNORE HI BYTE)E}T7^ PNCHARShQ>r PRECNUM|LOOP1%>;;USE Y AS INDEXLOOP2Q@UNITSL7R@TBLL7;;COMPARE CHARSHSE1;;NO MATCHE}, DONE?3;;CHARACTERS MATCH Q@TBLL7R> ,;';END OF RECORD?FSE2;; YES, COMP LEN)NCHARS;; NO, ALL TRIED?GLOOPE}2;; NOSE1QRECNUMRCOUNTL;;LAST RECORD?HLOOP3;; NO, NEXT RECORDQ>;; YES, COUNT=0PCOUNTL;; NO MATCH:;;E}RETURN TO BASICLOOP33;;INC CHARACTER INDEX& Q@TBLL70R> ,;';FIND NEXT COMMA: HLOOP3?3DCN,XOTBLL;;ADVANCE POE}INTERbPTBLL;; TO NEXT RECORDvD ;;IF PAGE CROSSED#TBLH;; INCREMENT HI #RECNUM, DLOOP1SE2)NCHARS;;LENF}GTHS EQUAL?FEXIT;; YES.3;;LONGER BY 1? )NCHARS HSE3;; NO 1;; YES Q@UNITSL7R> S;';LAST CHAR AN S?FEXIF}T;; YES.SE3%>;;RESET INDEX FSE1;;GO SEE IF DONEEXITQRECNUM;;MATCH FOUND PCOUNTL;;PASS REC COUNT*:;; AS RETF}URN ARG.SE3%>;;RESET INDEX FSE1;;GO SEE IF DONEEXITQRECNUM;;MATCH FOUND PCOUNTL;;PASS REC COUNT*:;; AS RETD