@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 D8u6dX;SAVE#D:DMPT3.M65nX;--------------------xX;X;Memory disassemblerX;X; by: Bryan SchappelX;X;-------T}-------------X;DISAMEM%>;;zero Y'HXDC;;in hex 'BYTES GETBYT;;get opcodeID.1;;error?!D_OVER;;yes!U}X;D.1POP;;save op%>;;zero YFNDOPROPCODE8;;is op in"FHAVOP;;the opcode, 3;;table?6)>;;151 yet?@HFNV}DOP;;no.JX;THAVOP'Y2;;save Y^ ZBUF;;clear bufferhQADDR;;copy addrrPFR0;;to FP| QADDR PFR0$>;;pW}os. 23 COPYNUM;;copy it ZFR;;clear FPQOP;;get opPFR0;;in FP$>;;pos 28 COPYNUM;;copy itQ> ; PIBX}UF%Y2;;get Y)>;;legal instr?HN151;;yes.X;%>;;copy 8 charsCP.BQPOINTB8;;get char&PIBUF8;;put iY}n buffer01;;decrease index:ICP.B;;and loopD ZFR;;zap FR0N%OP;;get the byteX'FR0;;put in FR0b BIN2HEX;;make iZ}t hexlQ>;;force 1 bytev PNBYTE$>;;posit 8 SOME;;copy number!AEOL1;;and add EOL.X;N151$OFFSET8;;MNE[} offset%>;;copy out theADMNEQMNE9;;Mnemonic andPIBUF8;;put in 2;;buffer.3)>;;3 chars?HADMNE;;n\}o. PNBYTE%Y2;;restore Y QITYPE8;;get Itype?;;transfer to Y QNBTAB8;;get # bytes for*PNBYTE;;this instr.4]}C;;restore Acc.>T?;;times 2H ?;;in YRQDCOMT8;;look up the\PDJSR;;routine addrfQDCOMT8;;an put inpPDJSR^};;JSRz$NBYTE;;get # bytes 0;;sub 1.FDJSR;;if 0, skip! GETBYT;;get next oneGD_OVER;;oops, error.PDTEMP;;_}save byte$NBYTE;;get count again 0;;sub 2.0FDJSR;;if 0, skip GETBYT;;get 3rd byteGD_OVER;;oops, error.`}PDTEMP;;save this byteX;DJSR ;;go command!AEOL1%>';;now insertAEOL3QIBUF8;;the EOL$R> ;;charactera}. HAEOL281B IAEOL3LAEOL2Q>EOLV PIBUF8`Q>j PIBUF8tQADDR;;now add the~,;;number ofONBYTE;;byteb} to thePADDR;;adr pointerDAE1;;to get next#ADDR;;instr addr.AE1:;;bye.X;X;Disassembly OverX;!Dc}_OVER ANY_LEFT;;send extra.#SFLAG;;set swap flag SEND_OUT;;write buffer$>;;slam IOCB #1 CLOSE $> ;;slam d}IOCB #2 CLOSE PRINT ALL.DONE;;done mess.( GET_RET;;get a return2!INTRO;;goto intro.<X;FX;Immediate ModePe}X;ZIMMED LOBYTE;;insert LSBdQ> #;;a '#'nPIBUF;;in bufferx ZFR;;zap FR0QDTEMP;;get bytePFR0;;into FR0f}$>;;and add to the!COPYNUM;;output.X;NUMBRQ>;;zero MSB PDTEMPNUMBR2QDTEMP;;put in FR0PFR0 Qg}DTEMP PFR0NUMBR3$>;;# in pos. 6Q>4LAB;;point to thePINDR;;label table Q>5LAB PINDR"QLABELSh}?;;want labels?,HGO_OUT;;nope.6X;@X;This is the Location LabelJ!X;search algorithm. The labelT X;data are stored asi} follows:^X;h X;hi nybble-byte 1 loc lengthr"X;lo nybble-byte 1 label length|!X;location hi,location lo, andX;the labj}el name.X;LAB_SRCH%>;;zero indexQ@INDR7;;get a byte.HN_FF;;<>0 then cont. GO_OUT!COPYNUM;;just numberk}X;N_FF5;;save byteM>;;get label lenPTMP1;;save it.7;;get byte backV?;;shift it downV?V?V?PADDl}_ON;;save it&#ADD_ON;;add one.03;;move up 2: 3;;bytes.DQ@INDR7;;get addr loNPLOC_S;;save it.X,;;add on locationm}bOADD_ON;;length & save.l PLOC_Ev1;;down indexQ@INDR7;;get addr hiPLOC_S;;saveO>;;add carryPLOC_En};;and store.X;QDTEMP;;instr hiRLOC_S;;equal to lochi?HN.TST;;no.QDTEMP;;test lo RLOC_SFD_CPo};;exact match!X;"N.TSTQDTEMP;;now we see ifRLOC_E;;the instr addr FTST.L;;is in the rangeEGO_UP;;of tp}he location TST.LQDTEMP* RLOC_E4 EGO_UP>X;HQDTEMP;;test hiR RLOC_S\DGO_OUT;;not in rangefQDTEMP;;tq}est lop RLOC_SzDGO_OUT;;not in rangeD_CP;;;calc actualSLOC_S;;offset for thePADD_ON;;+x add on.X; 0;;por}sit 5%>;;start at pos 2C_CP3;;up Y 2;;up XQ@INDR7;;get label namePIBUF9;;from the tableIC_CP;;and inses}rt intoM>;;disa line. PIBUF9 QADD_ON;;exact match? HPLUS;;no. :;;so long.$ X;. PLUSQ> +;;put in a '+'8 Pt}IBUF9B 2L 2V  ZFR;;zap FR0` QADD_ON;;make offset toj PFR0;;a decimal #t #HXDC~  COPYNUM;;insert number "HXDu}C;;force hex :;;and leave. X; GO_UPQINDR;;get the label ,;;pointer and OTMP1;;add on the len PINDR;;of the lav}bel so QINDR;;we can search O>;;more. PINDR !LAB_SRCH;;loop! X; X;Zero page X; ZPAG LOBYTE;;do Lw}SB !NUMBR;;add arg( X;2 X;Zero page,X< X;F ZPAGX LOBYTE;;LSBP  NUMBR;;add argZ ADDX2%>;;just ,Xd ADDX2;;up Xx}n ADDX3QCOMMAX8;;copy thex PIBUF9;;,X into 0;;the buffer 1 IADDX3 :;;done. X; X;Absolute X; ABSOL y}LOBYTE;;LSB  HIBYTE;;MSB !NUMBR2;;add arg X; X;Absolute ,X X; ABSOLX ABSOL;;set up absol !ADDX2;;copy in ,z}X X;" X;Absolute ,Y, X;6 ABSOLY ABSOL;;do absol@ ACYQ>,;;a commaJ PIBUF9;;in bufT Q> Y;;a Y^ PIBUF9;;in {}bufh :;;doner X;| X;Indirect X X; INDXQ>;;no MSB PDTEMP  LOBYTE;;do LSB  OPENP;;add open '(' 2;;up X|} %>;;3 bytes HADDX;;copy ',X)' X; X;Indirect Y X; INDYQ>;;no MSB PDTEMP  LOBYTE;;do LSB  OPENP;;}}left ( %>;;copy in the& ADDYQCOMMAY8;;'),Y'0 PIBUF9: 2D 1N IADDYX :;;doneb X;l X;Accumulator Modev X; ~}ACCUMQ> A;;an 'A' PIBUF;;in buffer :;;done X; X;Branch instructions X; RELA LOBYTE;;put LSB #NBYTE;;make} 3 byte  ZFR;;zero FR0 QDTEMP;;get operand INOBACK;;not inverse M>;;mask inverse N>;;flip it ,;;add a 1 }O> PDINS;;save it !TOFP;;done* NOBACKPDINS4 TOFPQDTEMP;;operand> IFORWARD;;bran forwardH QADDR;;now s}ubtractR ;;;from addr\ SDINS;;to find outf PFR0;;where thisp QADDR;;branch goes.z S> PFR0 !BACK;;don}e. FORWARD,;;add # to OADDR;;addr to calc PFR0;;forward branch QADDR O> PFR0 BACKQ>;;now add a }2 ,;;to skip the OFR0;;instruction PDTEMP;;address PFR0 QFR0O> PDTEMP$ PFR0. NUMBR3;;add }number8"NBYTE;;make 2 bytesBX;LX;Implied ModeVX;`IMP:;;do nothingjX;tX;Indirect instructions~X;INDI LO}BYTE;;copy in LSB HIBYTE;;and MSB OPENP;;do open (Q> );;and addPIBUF9;;closing one :;;leave.X;X;Zer}o page ,YX;ZPAGY LOBYTE;;do LSB NUMBR;;add arg!ACY;;copy ,YX; X;Insert LSBX;LOBYTE ZFR;;zero FR0}(QDTEMP;;do lobyte2PFR0<$>;;at pos. 10F!COPYNUM;;do it!PX;ZX;Insert MSBdX;nHIBYTE ZFR;;no FR0xQDTEM}P;;hibytePFR0;;in FP$>";;at pos. 14!COPYNUM;;copy it.X;X;Add Open (X;OPENPQ> (;;open (PIBUF};;in buffer!NUMBR2;;add numberX;X;Copy number to stringX; COPYNUM0&CNTLO;;save XQHXDC;;hex/dec?F}INHEX;;have Hex." IFP;;to FP, FASC;;to ASC6$CNTLO;;get index@%>;;and copyJCNLOOP3;;the numberT2^ Q@INBUFF}7h PIBUF9r ICNLOOP|M>;;mask bit 7 PIBUF9 :;;leaveX;INHEX BIN2HEX;;make hex$CNTLO;;get pos 2;;up it}.(>FALL;;if 25 do all(>;;is X => 30?DARG;;yes.!SOMEQLBUFF;;no. just copyPIBUF9;;the LSB part2};;of the HexQLBUFF;;number. PIBUF9 :;;bye.&ARGQ> $;;install a '$'0 PIBUF9: 2;;up XDQNBYTE;;Get # of byte}sNR>;;is it 2?XFSOME;;no.bALL%>;;no. copy itlALOOPQLBUFF8;;all to bufv PIBUF923)>;;done yet?H}ALOOP;;nope. 0;;dec X:;;so long.X;X;Binary to hexadecimalX;BIN2HEX%>;;buf indx=0$>;;do 2 numsNX}TBYT&X1;;save itQ>;;get HI bits MFR09 V?;;divide by 16V? V?*V?4>;;to index>QHXTAB9;;get charHPLBUFF}8;;and saveR3;;up buf index\$X1;;get X backfQ>;;now LO bitsp MFR09z>QHXTAB9;;get char andPLBUFF8;;put in} buffer3;;up buf indx$X1;;get X0;;down by oneINXTBYT;;done?:;;yes. bye.X;X;Fill buffer with blanksX};ZBUFQ> ;;space$>';;do 40 spacesZLOOPPIBUF9;;in buf0;;down countIZLOOP;;go again :;;bye.$X;. X;Zero} FR08X;B ZFRQ>LPFR0V PFR0`:jX;tX;Open Input File~X;OPENIN$>;;slam IOCB #1 CLOSEQTYPE;;get} disa typeFO_FILE;;if 0, then file UP.READ;;read 1st sector6;;save statusQ>;;default size PSECBYTESQS.}SIZE;;get actualR>;;is 128 bytes?FO.SO;;yes.QDSBUF;;get data bytePSECBYTES;;count. O.SO8;;pull status}GINERR;;oops, error.:;;so long.(O_FILE$>;;IOCB #12Q>;;open command< PICCOM9FQ>4SRCFILE;;point to thePP}ICBAL9;;source file-ZQ>5SRCFILE;;name.d PICBAH9nQ>;;read only.x PAUX19Q> PAUX29PBYTCNT;;zero byte cnt}PBYTCNT CIOV;;open it!GINERR;;oops. GET.TWO;;get file headerGINERR;;empty file! CHKFF;;is it binary}?HCIO.B;;no!%>;;signal good:CIO.B%>;;not binary fileX;X;Input errorX;"INERR)>;;EOF?,HPI;;n}o, show error6Q>;;kill instr@ PBYTESJ!D_OVER;;and exit.T PI F_ERR^PRINT IN_P;;print INPUThPRINT IBUFr}PRINT ALL.DONE | GET_RET !D_OVERX;X;Open Output fileX;OPENOUT$> ;;close #2 CLOSE$> Q>;;}open command PICCOM9Q>4DSTFILE;;point toPICBAL9;;the dest'nQ>5DSTFILE;;filename. PICBAH9Q>;;write only} PAUX19Q>;;no lines.& PLINES0 PAUX29:Q>4BIGBUF;;point to theDPBUFPNT;;start of theNQ>5BIGBUF;;buffer.X}PBUFPNTbQDSTFILE;;is destn tolR> E;;the screen?vHC.CIO;;no, call cio%>;;show good.:C.CIO!CIOV;;open }it!X;X;Close IOCBX;CLOSEQ> ;;close command PICCOM9!CIOV;;slam!X;X;CIO get byte routineX;CIO}GET$>;;on ch #1Q>;;get bytes  PICCOM9Q>;;no length says PICBLL9;;put byte in the*PICBLH9;;accumulator.4}!CIOV;;get it!>X;HX;Get byte routineRX;\GETBYTQTYPE;;get type.fFG_FILE;;if 0, from filep$GETPTR;;get indexz}(SECBYTES;;at end?FNX.SEC;;yes.QDSBUF9;;get byte.#GETPTR;;bump pointer.%>;;signal good. :;;bye.X;}NX.SECQ>;;start on byte 1 PGETPTRQS.SIZE;;trace links?R>}HF.SEC;;no.QDSBUF};;get the link M>;;hi}PSECH;;get the linkQDSBUF~;;loPSECL;;at EOF?$ LSECH.HC.READ;;no.8S.EOF%>;;signal error.B:L C.READ }UP.READ;;grab sectorV6;;save status`QDSBUF;;get # datajPSECBYTES;;bytes.tQDSBUF;;get data byte~8;;pull status}:;;and leave.X;F.SEC#SECL;;sec=sec+1 HFS.1 #SECHFS.1 UP.READ;;grab sector6;;save statusQDSBUF;;g}et data8;;pull status:;;and leave.X; UP.READQSECCNT;;any sectorsLSECCNT;;left? FS.EOF;;no! Done.QS}ECCNT;;subtract 1;;;from the sector(S>;;count.2 PSECCNT<QSECCNTFS>PPSECCNTZ!READIT;;read sector.d}X;nG_FILEQBYTCNT;;any bytesxLBYTCNT;;left?FHEADERS;;no, get moreQBYTCNT;;subtract 1;;;from the count}S> PBYTCNTQBYTCNTS>PBYTCNT#BYTES;;up byte count!CIOGET;;get the byteX;X;Send remaining} instr bytesX;ANY_LEFTQBYTES;;any extra?FN.LF;;no.%>;;bad opcode." HAVOP;;format .BYTE, PRINT.IT;;send} it out.6QDTEMP;;prepare next@POPJ"BYTES;;down countTHANY_LEFT;;and loop^N.LF:;;bye.hH_ERR!INERR;;input er}rorrX;|X;Pull file headersX;!HEADERS ANY_LEFT;;send extra GET.TWO;;grab 2 moreGH_ERR;;oops.%>;;copy m}essageC.STQSTEN8;;to buffer PIBUF81 IC.ST CHKFF;;are they $FF's?HNOT.FF;;no. GET.TWO;;get 2 more}GH_ERR;;oops.NOT.FFQHXL;;save the loadPADDR;;address andPFR0;;convert it to&QHXH;;hex for the0PADDR;;o}utput file.: PFR0D BIN2HEX;;make hex.N$>;;copy it inX ALLb GET.TWO;;grab 2 morelGH_ERR;;oops.vQHXL;;m}ake this #PFR0;;into hex for;;;output also.SADDR;;We also calcPBYTCNT;;the length ofQHXH;;the segment. P}FR0 SADDRPBYTCNT#BYTCNT;;add 1 to theHN.OV;;segment len.#BYTCNTN.OV BIN2HEX;;make hex}$>;;pos 16 ALL;;copy it  PUTCR;;line feed7;;pull return 7* PRINT.IT;;print it4!DISAMEM;;go again.>X;H}X;Grab two file bytesRX;\GET.TWO CIOGETf GG2ERRpPHXLz CIOGETPHXH G2ERR:X;X;Print The outputX;} PRINT.ITPRINT IBUF;;to E:%>;;wait 5 jiffies 'RTCLOKWT_LPQRTCLOKR> DWT_LPQDSTFILE;;to E: only?}R> EHPR.LP;;no. :;;yes.PR.LPQIBUF8;;move iobuf to$P@BUFPNT7;;big buffer. R>EOL8 FPR.DNB3L HPR.LPVPR}.DN3;;now we add Y+1`C;;to the pointerj,;;so we are readytOBUFPNT;;next time~ PBUFPNTQBUFPNTO>PBUFPN}T #LINESQLINES;;get line countR>;;200 lines?HSND.LV;;no.X;X;Send the buffer outX;SEND_OUTQLI}NES;;any lines?HSND.IT;;yes.SND.LV:;;so long. SND.ITQ> ;;put bytes$>  PICCOM9(Q>4BIGBUF;;from bigbuf2 }PICBAL9< Q>5BIGBUFF PICBAH9PQBUFPNT;;calc the lenZ;;;of the bufferd S>4BIGBUFn PICBLL9xQBUFPNT S>5BIGB}UF PICBLH9Q>4BIGBUF;;reset thePBUFPNT;;pointers. PLINES Q>5BIGBUFPBUFPNT TEST_DRV;;test drives}HSND.OUT;;not equalPRINT INS_DST;;ask for GET_RET;;disk swap.$> SND.OUT CIOV;;write outGOUT_ERR;;oops}. TEST_DRV;;swap again?HSND.OV;;no."QSFLAG;;test flag,HSND.OV;;no swap!6PRINT INS_SRC;;prompt it@ GET_R}ETJSND.OV%>;;signal good.T:^X;hX;Test srcdrv vs. dstdrvrX;|TEST_DRVQDESDRV;;get destRSRCDRV;;is = source}? :;;bye.X;X;Output error handlerX;OUT_ERR F_ERR;;format err#PRINT OUTP;;print OUTPUT$> ;;close #2} CLOSEPRINT IBUF;;print err#PRINT ALL.DONE  GET_RET;;get return!INTRO;;so long. X; X;Get a RETUR}N X;& GET_RET GETKEY;;get key0 R>EOL;;is it EOL?: HGET_RET;;no.D $> N :X X;b X;Check if HXL/HXH=$FFl X;v CHK}FFQHXL;;get byte 1 R>;;is it $FF? HCHKLV;;no. RHXH;;is #2=#1? CHKLV::X X;b X;Check if HXL/HXH=$FFl X;v CHKRdX;SAVE#D:DMPT4.M65n!X;----------------------------xX; Disk Master part 4X; X;These are the mnemonics forX;t }he disassembler. They are"X;arranged here in alphabetical X;order.!X;----------------------------X;MNE AADCANDA }SLBCCBCSA ABEQBITBMIBNEBPLA ABRKBVCBVSCLCCLDA ACLICLVCMPCPXCPYA ADECDEXDEYEORINCA AINXINYJMPJSRLDAA A }LDXLDYLSRNOPORAA APHAPHPPLAPLPROLA ARORRTIRTSSBCSECA" ASEDSEISTASTXSTYA, ATAXTAYTSXTXATXSA6 ATYAA@X;J X;O }pcodesTX;^ OPCODEh i=e=u=m;;ADCr }=y=a=q| )=%=5=-;;AND ==9=!=1  ===;;ASL  ;; }BCC ;;BCS ;;BEQ $=,;;BIT 0;;BMI ;;BNE ;;BPL ;;BRK P;;BVC p;;BVS ;;CLC ;;C }LD X;;CLI& ;;CLV0 ===;;CMP: ===D ==;;CPXN ==;;CPYX ===;;DECb ;;DEXl } ;;DEYv I=E=U=M;;EOR ]=Y=A=Q ===;;INC ;;INX ;;INY L=l;;JMP  ;;JSR === };;LDA === ===;;LDX  ===;;LDY  J=F=V=N;;LSR ^  ;;NOP  === } ;;ORA  ===* H;;PHA4 ;;PHP> h;;PLAH (;;PLPR *=&=6=.;;ROL\ >f j=f=v=n;;RORp ~z @;; }RTI `;;RTS ===;;SBC === 8;;SEC ;;SED x;;SEI ==;;STA === == };;STX ==;;STY ;;TAX ;;TAY ;;TSX ;;TXA ;;TXS ;;TYA$X;. X;Offsets into Mnemonic tabl }e8X;B OFFSETL =======;;ADCV =======;;AND` ====;;ASLj  ;;BCCt  ;;BCS }~ ;;BEQ =;;BIT ;;BMI ;;BNE ;;BPL ;;BRK !;;BVC $;;BVS ';;CLC *;;CLD -;;CLI } 0;;CLV 3=3=3=3;;CMP 3=3=3=3  6=6=6;;CPX 9=9=9;;CPY <=<=<=<;;DEC( ?;;DEX2 B;;DEY< }E=E=E=E;;EORF E=E=E=EP H=H=H=H;;INCZ K;;INXd N;;INYn Q=Q;;JMPx T;;JSR W=W=W=W;;LDA W= }W=W=W Z=Z=Z=Z=Z;;LDX ]=]=]=]=];;LDY `=`=`=`=`;;LSR c;;NOP f=f=f=f;;ORA f=f=f=f } i;;PHA l;;PHP o;;PLA r;;PLP u=u=u=u;;ROL u x=x=x=x;;ROR x" {;;RTI, ~;;RTS6 = }==;;SBC@ ===J ;;SECT ;;SED^ ;;SEIh ===;;STAr ==| ==;;STX ==;;STY } ;;TAX ;;TAY ;;TSX ;;TXA ;;TXS ;;TYAX;X;Instruction TypesX;X; 0 = ImmediateX; 1 }= Zero pageX; 2 = Zero page,XX; 3 = AbsoluteX; 4 = Absolute,XX; 5 = Absolute,Y&X; 6 = Indirect,X0X; 7 = Indir }ect,Y:X; 8 = AccumulatorDX; 9 = RelativeNX;10 = ImpliedXX;11 = IndirectbX;12 = Zero page,YlX;v ITYPE == }=====;;ADC =======;;AND ====;;ASL  ;;BCC  ;;BCS  ;;BEQ =;;BIT }  ;;BMI  ;;BNE  ;;BPL  ;;BRK  ;;BVC  ;;BVS  ;;CLC   ;;CLD  ;;CLI   ;;CLV* ==== }===;;CMP4 ==;;CPX> ==;;CPYH ===;;DECR  ;;DEX\  ;;DEYf =======;;EORp } ===;;INCz  ;;INX  ;;INY = ;;JMP ;;JSR =======;;LDA == ==;;LDX  }====;;LDY ====;;LSR  ;;NOP =======;;ORA  ;;PHA  ;;PHP  ;;PLA  ;; }PLP  ====;;ROL  ====;;ROR  ;;RTI$  ;;RTS. =======;;SBC8  ;;SECB  ;;SED }L  ;;SEIV  ======;;STA`  = =;;STXj  ==;;STYt  ;;TAX~  ;;TAY  ;;TSX  ;;TXA  ; };TXS  ;;TYA X; X;Disassembler JMP Tables X; DCOMT IMMED;;2 bytes  ZPAG;;2 bytes  ZPAGX;;2 bytes  ABSOL };;3 bytes  ABSOLX;;3 bytes  ABSOLY;;3 bytes  INDX;;2 bytes  INDY;;2 bytes  ACCUM;;1 bytes(  RELA;;2 bytes2  } IMP;;1 bytes<  INDI;;3 bytesF  ZPAGY;;2 bytesP NBTAB ======Z  =====d X;n COMMAX A,X)Ax } COMMAY AY,)A POINTB A .BYTE $A STEN A *=$ A  A;END=$ A=EOL=EOL= X; INS_DST EOL=AInsert desA }  At'n, RETURNA=EOL= X; INS_SRC EOL=AInsert souA  Arce, RETURNA=EOL= X; ALL.DONE EOL=ACompletedA  } A, RETURNA=EOL= X; OUTP EOL=AOUTPUT A= IN_P EOL=AINPUT A=A=EOL= X; ALL.DONE EOL=ACompletedA  N"dX;SAVE#D:DMPT5.M65nX;--------------------------xX;X;System Equates/Labels X;Consistent with MAPPING THEX;A}TARI from Compute! books.X;X;Data storage technique by:X;Bryan SchappelX;X;--------------------------X;}LAB===ACASINIA ===ATRAMSZA ===AWARMSTA== =ABOOT?A== =ADOSVECA== =AD}OSINIA ===APOKMSKA" ===ABRKKEYA,)===ARTCLOKA6 == =AICHIDZA@ ==!=AICDNOZAJ =}="=AICCOMZAT ==#=AICSTAZA^ ==$=AICBALZAh ==%=AICBAHZAr ==&=AICPTLZA| =='=AICPTHZA} ==(=AICBLLZA ==)=AICBLHZA ==*=AICAX1ZA ==+=AICAX2ZA ==A=ASOUNDRA ==B=ACR}ITICA ==M=AATRACTA ==R=ALMARGNA ==S=ARMARGNA ==T=AROWCRSA==U=ACOLCRSA==}X=ASAVMSCA ==j=ARAMTOPAV===AFR0AV===AFREAV===AFR1A&V===AFR2A0===A}FRXA:===AEEXPAD===ANSIGNAN===AESIGNAX ===AFCHRFLGAb===ADIGRTAl===A}CIXAv===AINBUFFA ===ARADFLGA===AFLPTRA===AFPTR2A===AVDSLSTA===}AVBREAKA===AVKEYBDA=="=AVVBLKIA==$=AVVBLKDA ==+=ASRTIMRA ==/=ASDMCTLA}==0=ASDLSTLA ==2=ASSKCTLA==4=ALPENHA==5=ALPENVA ==6=ABRKKYA ==D=ACOLDSTA } ==o=AGPRIORA*y==p=APADDL0A49==x=ASTICK0A>y==|=APTRIG0AH9===ASTRIG0AR ===AES}CFLGA\===ATABMAPAf ===AINVFLGAp ===ASHFLOKAz ===ABOTSCRA ===APCOLR0A ==}=APCOLR1A ===APCOLR2A ===APCOLR3A ===ACOLOR0A ===ACOLOR1A ===ACOLOR2A} ===ACOLOR3A ===ACOLOR4A===ARUNADA===AINITADA ===ARAMSIZA===AMEMT}OPA===AMEMLOA9===ADVSTATA ===ACRSINHA$===ACH1A.===ACHACTA8===ACH}BASAB ===AATACHRAL===ACHAV ===ADSPFLGA` ===ASSFLAGAj ===ADDEVICAt===A}DUNITA~ ===ADCOMNDA ===ADSTATSA===ADBUFLOA ===ADTIMLOA===ADBYTLOA=}= =ADAUX1A)===AHATABSA==@=AICHIDA==A=AICDNOA==B=AICCOMA==C=AICSTAA=}=D=AICBALA==E=AICBAHA==F=AICPTLA ==G=AICPTHA==H=AICBLLA==I=AICBLHA(}==J=AICAX1A2==K=AICAX2A< ===APRNBUFAF ===ACASBUFAP===ALBUFFAZ ===AHPOSP0Ad} ===AHPOSP1An ===AHPOSP2Ax ===AHPOSP3A ===AHPOSM0A ===AHPOSM1A ===AHP}OSM2A ===AHPOSM3A ===ASIZEP0A == =ASIZEP1A == =ASIZEP2A == =ASIZEP3A==} =ASIZEMA ===ACOLPM0A ===ACOLPM1A ===ACOLPM2A ===ACOLPM3A ===ACOLPF0A} ===ACOLPF1A ===ACOLPF2A" ===ACOLPF3A,===ACOLBKA6===APRIORA@ ===AGRACTL}AJ ===AHITCLRAT ===ACONSOLA^===AAUDF1Ah===AAUDC1Ar===AAUDF2A|===AAU}DC2A===AAUDF3A===AAUDC3A===AAUDF4A===AAUDC4A ===AAUDCTLA == =A}RANDOMA===AIRQENA===ASKCTLA===APORTAA===APORTBA===APACTLA===}APBCTLA ===ADMACTLA ===ACHACTLA===ADLISTLA ===AHSCROLA& ===AVSCROLA0 =}==APMBASEA: == =ACHBASEAD== =AWSYNCAN == =AVCOUNTAX== =APENHAb== =APENVAl}===ANMIENAv===AAFPA===AFASCA===AIFPA===AFPIA==D=AZFR0A==F}=AZF1A==`=AFSUBA==f=AFADDA===AFMULA==(=AFDIVA ==@=APLYEVLA===AF}LD0RA===AFLD0PA===AFLD1RA===AFLD1PA ===AFST0RA===AFST0PA ===A }FMOVEA*===AEXPA4===AEXP10A>===ALOGAH===ALOG10AR ===AEDITRVA\ ===ASC }RENVAf == =AKEYBDVAp ==0=APRINTVAz ==@=ACASETVA ==P=ADISKIVA ==S=ADSKINVA== }V=ACIOVA==Y=ASIOVA ==\=ASETVBVA ==_=ASYSVBVA ==b=AXITVBVA ==t=AWARMSVA = }=w=ACOLDSVA Y=ASIOVA ==\=ASETVBVA ==_=ASYSVBVA ==b=AXITVBVA ==t=AWARMSVA =X;SAVE#D:GRAPHICS.M65 X;X; GRAPHICS gX;(-X; ENTRY: A-REG CONTAINS GRAPHICS MODE 'G'2(X; EXIT: Y-REG HAS COM}PLETION STATUS<X;FSNAME AS:A==P GRAFIXZ5;;SAVE 'G'd$>;;FILE 6n Q>CCLOSEx PICCOM9% CIO;;FIRST WE M}UST CLOSE FILE #6(X;WE IGNORE ANY ERRORS FROM THE CLOSEX;$>;;AGAIN, FILE 6"Q>COPN;;WE WILL OPEN THIS FILE P}ICCOM9 Q>4SNAME'PICBADR9;;WE USE THE FILE NAME "S:" Q>5SNAME"PICBADR9;;BY POINTING AT ITX; X;ALL IS SET }UP FOR OPEN, NOW)X;WE TELL CIO (& S:) WHAT KIND OF OPENX;!7;;OUR SAVED 'G' GRAPHICS MODEPICAUX29;;IS GIVEN TO 'S:'}"/X; (NOTE THAT S: IGNORES UPPER BITS OF AUX2),"M>;;NOW WE GET THE UPPER BITS6N>;;AND FLIP BIT 4@)X; (S: EXPECTS THI}S BIT TO BE INVERTEDJ%X;FROM WHAT NORMAL BASIC USAGE IS)T*L> ;;ALLOW READ & WRITE ACCESS FOR CIO^PICAUX19;;FOR CIO AND }S:h CIO;;OPEN S:r :;:GRAPHICS MODE 'G' NOW OPEN|GRAPHICS    AGRAPHICS LENA  Q Q> } GRAFIX :;:GRAPHICS MODE 'G' NOW OPEN|GRAPHICS    AGRAPHICS LENA  Q Q> )AIOMAC.LIB -- OSS system I/O macrosAA Support MacrosA 10IOCB2 AYou must include SYSEQU.M65 ahead of th}is!!AX;$6X; These macros are called by the actual I/O macros.9X; to perform the rudimentary register load functions.}8X;BX;LX; MACRO: @CHVX;`6X; Loads IOCB number (parameter 1) into X register.jX;t 7 then a memory location1X; is assumed to} contain the channel number.X; @CH   Q T?T?T?T?>  $> (X;2X;<X; MAC}RO: @CVFX;P:X; Loads Constant or Value into accumultor (A-register)ZX;d+X; If value of parameter 1 is 0-255, @CVn+X; }assumes it's an (immediate) constant.xX;'X; Otherwise the value is assumed to+X; be a memory location (non-zero page).}X;X;X; @CV   Q> Q X;X;X;X;"X; MACRO: @FL,X;65X; @FL is used to e}stablish a filespec (file name)@X;J-X; If a literal string is passed, @FL willT'X; generate the string in line, jump^&X;} around it, and place its addressh/X; in the IOCB pointed to by the X-register.rX;|(X; If a non-zero page label is passed }*X; the MACRO assumes it to be the label.X; of a valid filespec and uses it instead.X;X;X; @FL   !} !   @F = Q>4@F PICBADR9 Q>5@FPICBADR9 Q>4  PICBADR9& Q>5 0PICBADR9:D"}NA XIO macroAXX;bX; MACRO: XIOlX;v/X; FORM: XIO cmd,ch[,aux1,aux2][,filespec]X;%X; ch is given as in the#} @CH macro3X; cmd, aux1, aux2 are given as in the @CV macro+X; filespec is given as in the @FL macroX;5X; performs f$}amiliar XIO operations with/for OS/A+X;/X; If aux1 is given, aux2 must also be given8X; If aux1 and aux2 are omitted, %}they are set to zero1X; If the filespec is omitted, "S:" is assumedX; XIO  3 % AXIO: wrong number o&}f argumentsA  @CH   @CV *PICCOM9;; COMMAND4  > @CV H PICAUX19R @CV \ PICAUX29fp'}Q>z PICAUX19 PICAUX29 3 @FL AS:A @@IO @FL @@@IO: CIOA (} OPEN macroAX; X; MACRO: OPEN X; (X; FORM: OPEN ch,aux1,aux2,filespec$ X;. %X; ch is given as in the @CH macro8 1)}X; aux1 and aux2 are given as in the @CV macroB +X; filespec is given as in the @FL macroL X;V 1X; will attempt to open the *}given file name on` /X; the given channel, using the open "modes"j X; specified by aux1 and aux2t X;~ OPEN   &+} AOPEN: wrong number of argumentsA    XIO COPN= = = =   XIO COPN= = = =    ,} A BGET and BPUT macrosA X; X; MACROS: BGET and BPUT X; X; FORM: BGET ch,buf,len X; BPUT ch,buf,le-}n( X;2 %X; ch is given as in the @CH macro< .X; len is ALWAYS assumed to be an immediateF 1X; and actual value...never a m.}emory addressP /X; buf must be the address of an appropriateZ X; buffer in memoryd X;n +X; puts or gets length bytes to/f/}rom thex 0X; specified buffer, uses binary read/write X; X; X; first: a common macro X; @GP @CH  Q> 0} PICCOM9 Q>4  PICBADR9 Q>5  PICBADR9 Q>4  PICBLEN9 Q>5  PICBLEN9"  CIO, 6 X;@ B1}GET J  T ' ABGET: wrong number of parametersA^ h @GP = = =CGBINRr |  X; BPUT   ' AB2}PUT: wrong number of parametersA  @GP = = =CPBINR   X; A PRINT macroA X; X; MACRO: PRINT 3}X; (X; FORM: PRINT ch[,buffer[,length]] X; !X; ch is as given in @CH macro& (X; if no buffer, prints just a RETURN0 %X;4} if no length given, 255 assumed: X;D 8X; used to print text. To print text without RETURN,N -X; length must be given. See5} OS/A+ manualX X;b 2X; EXCEPTION: second parameter may be a literall .X; string (e.g., PRINT 0,"test"), in whichv -X; case6} the length (if given) is ignored. X; PRINT  3  ( APRINT: wrong number of parametersA    7}  !   @IO = @GP =@IO= =CPTXTR    @GP = ==CPTXTR  @GP = 8}= =CPTXTR  * 4 ! > @IO H @GP =@IO==CPTXTRR \ f p X;z A INPUT macroA X; X; MACRO:9} INPUT X; X; FORM: INPUT ch,buf,len X; %X; ch is given as in the @CH macro )X; buf MUST be a proper buffer address:} 6X; len may be omitted, in which case 255 is assumed X; ,X; gets a line of text input to the given 'X; buffer, maximu;}m of length bytes X; INPUT  3 ( AINPUT: wrong number of parametersA$  .@GP = ==<}CGTXTR8B@GP = = =CGTXTRLV`jA CLOSE macroAtX;~X; MACRO: CLOSEX;X; FORM: CLOSE ch=}X;%X; ch is given as in the @CH macroX;X; closes channel chX; CLOSE   ( ACLOSE: wrong number of par>}ametersA @CH  Q>CCLOSE  PICCOM9 CIO(2X;<-X;;;;;;;;;;; END OF IOMAC.LIB ;;;;;;;;;;;;FX; of parvfNFEI $X; MAZERUNNER by Matt Fruin 12/86STICK0x HPOS( PCLR2 EHPOS< EPCLRF RND @}PVVBLKI"ZCONSOLd L1n VALUEx NEWDIRς SPACESЌ L2̖ PLOC1ˠ PLOC2̪ PMLOʹ PA}MHIξ L3 L4 HALF YG1 YG2 FB FLAG LINE MVYET? CHAR"ENEMLO,B}ENEMHI6ENEMASK @ DIR0JMVCTER@TENEMNUMP^ PLRLO`h PLRHIbr PLRYd| PLRXf PLDC}IRhPLMVCTERjPLRNUMl DIR2m DIR3n ENLOp ENHIt ENYx ENX| EDIREMVD}CTER ENNUM FP? NOMV CLR LMT& WTR0 FLASH: MASKD KILL?N PY?E}XPARALYZCNTbMOVPLR?lCOLRCTvCAUGHTREADY? TMP1CLRLIST TMTMSCREENF}XN ICCOMB ICBALD ICBAHE ICAX1J ICAX2K CIOVV SAVMSCXSDMCTL/SDLSTL0 G}ENCNT1ENCNT2ENCNT1 ENEMSPDENCNT1*P1SPDENCNT14P2SPDENCNT1>POSCNTRHPOSLOPOSCNH}TRRPOSHIPOSCNTR\LOVALPOSCNTRfHIVALPOSCNTRpMOVCNTRPOSCNTRzP1SPDCNTP2SPDCNTI}ENEMSCNT SOUND LOUDSOUNDLP1SOUNDLP2X;`RESETQ>STARTP Q>STARTJ}P Q>P $START SCREENLIST.Q>@8PL2BQ>LPL1V$>` CLS1%>jCLS2P@L17t3~ HCLS2#L22K}(> HCLS1Q>SPL1$>`Q> PICCOM9Q> PICBAH9Q> PICBAL9 Q>  PICAX19Q>( PICAX2L}92 CIOV<Q>F PSAVMSCPQ>@ZPSAVMSCdQ>n PSDMCTLxQ> PSDLSTLQ>PSDLSTLQ>. PSDMCTLM}Q>PQ>PQ>PQ>DP TITLE BORDER DOCHOICES" PUTBLIPS,Q>a6PLMT@ Q>TN}RUJPVVBLKIT Q>TRU^PVVBLKIh !SETUP2rX;| TITLE%>'L1Q>@PL2LP1QMESSAGE8 P@L17O}3)>HLP1:X;BORDERQ>PYG1PYG2Q>PL3Q>@&PL40$>: TOP VERTD0NITOPX$>WbP}MIDDLE SIDESl0v IMIDDLE BOTTOMROW BOTTOMROW$>BOTTOM VERT0 IBOTTOM !DOMAZEBOTTOMROW%>Q} SIDE3Q>LLP4P@L373)>  HLLP4Q>  P@L37* !ADD404 VERT%>>Q>HLOOP3P@L37R3\)>fR} HLOOP3pQ>z P@L37 ADD40: SIDES%> SIDE3Q>LOOP4P@L373)> HLOOP4 SIDE ADD40S},Q>( OL3 DJ1 #L4$ J1PL3. :8 SIDEQ>B P@L37L 3V Q>` P@L37j :t DOMAZEQRND~ M>? PL3 ; ST}> EDOMAZE PP2QRND M>> PL4 ; S>0 EPP2 Q> PL1 PL2 , QL4 PL1( TL12 TL1< OL1F PLU}1P $>Z LOOP5TL1d UL2n 0x HLOOP5 , QL1 OL3 DJ2 #L2 J2PL1 , QL1 O> DJ3 #L2 J3PLV}1 , QL2 O>@ PL2" %>, Q@L176 M>@@ HDOMAZEJ Q>T PFLAG^ WALLQRNDh M>r W?| DLORR W? DDN W}"L2 %>` FILLED? #L2 QFB HFILLED "L2 !PLOTUP DN%> FILLED? QFB HFILLED !PLOTDOWN LOX}RRW?& DLT0 %>: FILLED?D QFBN FPLOTRIGHTX !FILLEDb LT"L2l %>v FILLED? #L2 QFB FPLOTLEFT !FIY}LLED FILLED?Q@L17 M>@ PFB QFLAG HJ4 : J4QFB FJ5 !DONE3 J5Q> PFB : FILLED2* (>4 HZ}WALL> !DOMAZEH PLOTUPQ>PR %>\ P@L17f %>p P@L17z %> P@L17 %>` P@L17 !DONE PLOTDOWNQ>P %>[}P P@L17 %>x P@L17 %> P@L17 %> P@L17 !DONEPLOTRIGHT%> Q@L17$L>U. P@L178%>(B P@L17\}LQ>PV%>)` P@L17j%>t P@L17~ !DONEPLOTLEFT%>'Q>U P@L17%>"L2 P@L17 DONE,#YG1H]}J6#YG2 J6QYG1R>  HDONE2QYG2R>( HDONE22:< DONE37F7P DONE2,ZCdOL1nDJ7x#L2 J7PL^}1$> &FLAG !WALLX;DOCHOICES$> &LINE0GETLOCQLIST9PL12 QLIST9PL2 %LINEJ81_})>"FJ12, PLUS406!J8@ J9QLIST9JR>THJ10^#L2hJ10,rOL1|DJ11#L2 J11PL1 J12%> 'CHA`}RJ132 QLIST9,U?U? OLINE? QBYTES8 %CHAR)> FJ14 P@L17&30 'CHAR:!J13D J14(>Na}HJ9X #LINEb QLINElR>vFOUT$> !GETLOC OUT$> J15QLTS9 PPOSCNTR90IJ15$>J16QLTS29b} PENCNT190IJ16:PLUS40QL1 ,O>( DJ17*#L24 J17PL1>:HX;RPUTBLIPS%>\PB2QBLIPS8fPLc}1pQBLIPS8zPL2QBLIPS8 P@L171IPB2:X;CHANGEQNOMV HLEAVE"WTR ILEAVEQ>PWTRd} QCONSOLR> FOPTIONR>$ FSELECT.R>8 FSTARTEDBQL FSTARTEDVQ` FSTARTEDjLEAVE DOSOUNDt e}LV2!_~STARTEDQREADY?HLV2!SETUPGAMEOPTION$> QMOVCNTR9R> FNOBLACKQ> !STORCOLNOBLACKf}Q>STORCOLP QPOSCNTRT? NEWPOS Q>%> P@L17( #POSCNTR2 QPOSCNTR<R>F HPLUS5PQ>Z PPOg}SCNTRd PLUS5,nT?x NEWPOSQ>%> P@L17 !LEAVE NEWPOS> QPOSLO9PL1 QPOSHI9PL2:SELECTq}B%DOS SYSB*)DUP SYSBqSDMPT3 M65B#DMPT4 M65B&DMPT5 M65B GRAPHICSM65B)IOMAC LIBB?MAZERUNRM65B%MAZERUNROBJBMENU SYSB$SYSEQU M65QPOSCNTR>;S> EISIT2 CHANGELOC"Q>, P@L176 #MOVCNTR9@ QMOVCNTR9JR>T HNOT3^Q>h PMOVCNTRr}9rNOT3 CHANGELOC|Q>< P@L17 !LEAVECHANGELOCQPOSCNTR FNNOT1Q> NNOT1, OMOVCNTR9? QLOVAL8s}PL1 QHIVAL8PL2%>: ISIT2S> EISIT3& #ENCNT20 QENCNT2:R> D HADD1N #ENCNT1XQ>b PENCNT2lt}ENEMINCQPOSCNTRvT? NEWPOS"L1"L1 QENCNT1 DOCHARADD1QENCNT2R> HNOTYET QENCNT1R>u} HNOTYETQ> PENCNT1 PENCNT2  !ENEMINCNOTYETQPOSCNTR T?* NEWPOS4"L1> QENCNT2H DOCHARR !LEAVE\v} DOCHART?fT?pO>mz DOCHAR2>%>J18QBYTES9 P@L17 ADD40TOYC,O>(?2)>HJ18: ISITw}3S> EISIT4OR5 QPOSCNTRT? NEWPOS$"L1."L18 #ENEMSPDB QENEMSPDLR>V HNOT5`Q>j PENEMSPDtNOx}T5 DOCHAR~ !LEAVEISIT4OR5S> EITS6 QPOSCNTRT? NEWPOS"L1 QPOSCNTRM>> #P1SPD9 QP1SPD9y}R> HNOTOVER Q> PP1SPD9NOTOVER DOCHAR( !LEAVE2ITS6QPOSCNTR<T?F NEWPOSP"L1Z"L1d"L1nQz}LMTxN>TPLMT DOCHAR2 !LEAVEX;STOPPEDQ>VRTWAIT PVVBLKIQ>VRTWAITPVVBLKIWAIT3 WAI{}T SETUPQ>PFP? QMOVCNTR HSETUP2#FP?Q> PMASK"SETUP2Q>,PWTR6Q>CHANGE@ PVVBLKIJQ>CH|}ANGETPVVBLKI^Q>h PNOMVrQ>|P ENSETUPQ> PKILL? PKILL?PPY? PPY? PENEMSCN}}T PMVYET? PP1SPDCNT PP2SPDCNTSYNCHQMVYET? FSYNCH PNOMVQ>P SETUPPLS&Q>0 PSOUND:Q>~}D PLOUDNQ>XPbQ>lPvQ> PSOUNDLP1 PSOUNDLP2Q> PDIR3 PDIR3WAIT4 WAITQ> P}READY?Q>$> UYP90IUYQ> P BORDER  INITPLS*Q>4P> SCREENCLRHQ>RP\Q>}VRTBLNKf PVVBLKIpQ>VRTBLNKzPVVBLKI "READY?SYNCH2QMVYET? FSYNCH2 QSOUND FSOUNDRQ>P}Q>PSOUNDRQR>FGHJ !STOPPEDGHJQKILL? FPLRLP QKILL?$ FPLRLP. !SETUP8 WAITQ}BR>L HWAITV:` PLRLP$>jPLRLP2QPLRX9tR>~ HMOVPL QCAUGHT9 HMOVPLQ> PSOUNDQ> PSOUND}LP1Q> PSOUNDLP2 !SETUP MOVPL0 IPLRLP2 "MVYET?$> MOV?QKILL?9 HNXTPL QPY?9( FMOVYET?2 I}SPYD?< QMOVPLR?F FNXTPLP !GOMOVZMOVYET?#P1SPDCNT9dQP1SPDCNT9n RP1SPD9x HNXTPL GOMOVQ> &PLRNUMPP1}SPDCNT9 J32 NXTPL0 IMOV?MVNEMY?#ENEMSCNT QENEMSCNT RENEMSPDFGOMOVENEM !SYNCH2GOMOVENEMQ> }PENEMSCNT QMOVCNTR FPLAMOV BEGIN" !SYNCH2,PLAMOV MVNEM6 !SYNCH2@X;JBEGIN#ENEMNUMT $ENEMNUM^(>h}HJ19r$>| &ENEMNUM: J19QDIR9R> FBEGIN QENEMLO9PL1 QENEMHI9PL2 UMVCTER9 UMVCTER9 }EPICKDIR MVENEM EXITQL1 PENEMLO9 QL2 PENEMHI9& !BEGIN0 PICKDIRQDIR9: R>D FJ21N M>X FJ20b Q>}@l PMVCTER9v %> CLEAR %>( CLEAR Q> PDIR9 !BEGIN J20"L2 %>  CHECKVERT #L2 %>  }CHECKHORIZ2 %>! CHECKHORIZ2 !%>P! CHECKVERT2 ! QSPACES*!R>4!HJ21>! QDIR9H!N>R! !DIROK2\! J21QRNDf!M}>p! PNEWDIRz! QDIR9!R>!FDIRPICKED! QNEWDIR! NDIR9!FDIRPICKED!M>!FJ21!DIRPICKEDQNEWDIR!W?!DL}EFTORRIGHT!W?!DCHECKDOWN!%>""L2" CHECKVERT"#L2$" QSPACES."FJ218" !DIROK3B"CHECKDOWN%>PL" CHECKVERT}V" QSPACES`"FJ21j" !DIROK3t"LEFTORRIGHTW?~"DCHECKLEFT"%>" CHECKHORIZ" QSPACES"FJ21" !DIROK3"CHECKLEF}T%>" CHECKHORIZ" QSPACES"FJ21"DIROK3QNEWDIR"DIROK2PDIR9" DIROKQ># PMVCTER9 # MVENEM# !EXIT#MVE}NEMQDIR9(#W?2#DJ23<#W?F#DJ22P#%>(Z# CLEARd#"L2n#%>x# PLOT1# !DONMOV# J22%># CLEAR#%>P# PLOT1}#%>(# !DONMOV# J23%># CLEAR#%>(# CLEAR# QDIR9#W?$W?$DJ27$,"$ WENEMASK9,$ WENEMASK96$EJ25@$ }J24%>J$ PLOT1T$%>(^$ PLOT1h$:r$J25QENEMASK9|$FJ26$%>$ PLOT1$%>($ PLOT1$%>$Q>$ PLOT2$%}>)$Q>$ PLOT2$:$ J26%>$ DONMOV%Q>% PENEMASK9%!J24&%J27UENEMASK90%EJ29:% UENEMASK9D% J28%>N%} PLOT1X%%>(b% PLOT1l%:v%J29,% UENEMASK9% QENEMASK9%FJ30% J28%"L2%%>%Q>% PLOT2%#L2%Q>}%%>'% PLOT2%:& J30%> &"L2& DONMOV &Q> *& PENEMASK94&!J28>& DONMOVCH&,R&OL1\&DJ31f&#L2p& J31PL1}z&:&CLEARQENEMASK9&N>& M@L17& P@L17&:&PLOT1QENEMASK9&PLOT2L@L17& P@L17&:&X;&INITPLSQ>x&P}&,'O>' PPMHI'Q>$' PPLRNUM.'Q>8'PB'$>L'Q>V'CLRLOOPP9`'0j' ICLRLOOPt'Q>~'P'Q>'P}'MKM:'X;'MOVPLS#PLRNUM' QPLRNUM'R>'HJ32'Q>' PPLRNUM':'J32QPLRNUM(>(FJ33(Q>(( J33PP}MLO<( QPLRLO9F( PPLOC1P( QPLRHI9Z( PPLOC2d(UPLMVCTER9n(UPLMVCTER9x(EPLPICKDIR( MVPLS(PLEXITQMOVCNTR( HPLEX}T2( CAPTENEMY?( $PLRNUM( PLEXT2:(PLPICKDIRQ>( PFLAG( PPLDIR9( QSTICK09(TRANSDIRPDIR2(R> ( FCHEKDIR}) #PLDIR9)R> ) FCHEKDIR") #PLDIR9,)R>6) FCHEKDIR@) #PLDIR9J)R>T) FCHEKDIR^)Q>h) PPLDIR9r) QDIR2|) LDIR}39)R>) FGOEXIT2) #FLAG) QDIR2)N>) NDIR39) !TRANSDIR)GOEXITQFLAG) FNOMOV)Q>) PPLDIR9) "FLAG) }QDIR39* !TRANSDIR*NOMOVQSOUND* HGOEXIT2&*Q>0* PSOUND:*GOEXIT2Q>@D*PPLMVCTER9N* !PLEXITX*CHEKDIRQ>b*P}Ml* QPLDIR9v*W?*DPLLEFTORRIGHT*W?*DPLCHECKDOWN*PLCHECKUP%>ب* "PLOC2* CHECKVERT* #PLOC2* QSPACES* FGO}EXIT* "PLRHI9*%>`* ADJUSTL* !PLDIROK+PLCHECKDOWN%>P + CHECKVERT+ QSPACES + FGOEXIT*+%>4+ ADJUSTL>+ !}PLDIROKH+PLLEFTORRIGHTW?R+DPLCHECKLEFT\+PLCHECKRIGHT%>f+ CHECKHORIZp+ QSPACESz+ FGOEXIT+ ADJUSTL+ !PLDIROK+}PLCHECKLEFT%>+ CHECKHORIZ+ QSPACES+ FGOEXIT+ "PLRHI9+%>+ ADJUSTL+PLDIROKQDIR2+ PDIR39+Q>+PPL}MVCTER9, MVPLS, !PLEXIT,MVPLS%PLRY9$,Q>., EMIDDLE8, QPLDIR9B,W?L,DRIGHTORLEFTV,W?`, DDOWNj, UP"PLRY9t, }!YCHANGE~,DOWN#PLRY9,YCHANGE%PLRY9, !NEWDRAW,RIGHTORLEFTW?, DLEFT,RIGHT#PLRX9, !CHANGEX,LEFT"PLRX9,}CHANGEXQPLRX9, PHPOS9,:, ADJUSTLC,,- OPLRLO9 -DJ36- #PLRHI9-J36PPLRLO9(-:2-X;<-TRANSFERQHALFF-N>}P- PHALFZ- #PMHId->n-Q>x- PPMLO-LOOOOOP4 SWITCH-2-Q>- PPMLO- SWITCH- "PMHI-:- SWITCHA-N>->}- QENY9-?-Q>. P@PMLO7. EMIDDLE. P@PMLO7".3,. P@PMLO76.A@.N>J.>T.M>^.?h. QENX9r. PEHPOS8|.A. NMA}SK.>. QCLR9. PEPCLR8.A. NMASK.>. QENY9.?. NEWDRAW.:.NEWDRAWQ>. P@PMLO7/Q>/ EMIDDLE/Q>&}/ P@PMLO70/::/ EMIDDLE3D/ P@PMLO7N/3X/ P@PMLO7b/3l/:v/X;/MVNEM#ENNUM/ QENNUM/R>/ HNOT1/Q>/ PENNUM}/!CAPTENEMY?/ NOT1>/ QENLO9/PL1/ QENHI9/PL20 UEMVCTER9 0 UEMVCTER90 EEPICKDIR 0 MVFOUR*0 !MVNEM40EPIC}KDIR"L2>0%>H0 CHECKVERTR0#L2\0%>f0 CHECKHORIZ2p0%>z0 CHECKHORIZ20%>P0 CHECKVERT20 QSPACES0R>0}HJ370 QEDIR90N>0 PVALUE0!J380 J37QRND0M>0 PVALUE0 NEDIR91FJ381M>1FJ37$1J38QVALUE.1W?81D}ELEFTORRIGHTB1W?L1DECHECKDOWNV1%>`1"L2j1 CHECKVERTt1#L2~1 QSPACES1FJ371%>`1 "ENHI91 EADJUSTL1!DIR}PICKED21ECHECKDOWN%>P1 CHECKVERT1 QSPACES1FJ371%>1 EADJUSTL1!DIRPICKED22ELEFTORRIGHTW? 2DECHECKLEF}T2%>2 CHECKHORIZ(2 QSPACES22FJ37<2%>F2 EADJUSTLP2!DIRPICKED2Z2ECHECKLEFT%>d2 CHECKHORIZn2 QSPACESx2F}J372%>2 "ENHI92 EADJUSTL2DIRPICKED2QVALUE2DIRPICKED3PEDIR92DIRPICKDQ>2 PEMVCTER92 MVFOUR2 !MVNE}M2CHECKVERTQ>2 PSPACES2CHECKVERT2Q@L172M>3 HJUUMP033 #SPACES3 JUUMP03:"3CHECKHORIZQ>,3 PSPACES63C}HECKHORIZ2Q@L17@3M>PJ3 HJUUMP04T3 #SPACES^3 JUUMP04:h3MVFOURQEDIR9r3W?|3DERIGHTORLEFT3W?3 DEDOWN3 EUP"ENY9}3:3EDOWN#ENY93:3ERIGHTORLEFTW?3 DELEFT3ERIGHT#ENX93:3ELEFT"ENX93:3 EADJUSTLC4,4 OENLO94DJ39}&4 #ENHI904J39PENLO9:4:D4X;N4SETUPGAMEQ>X4PMb4PFP?l4 PMASKv4 DOBOXES4 QMOVCNTR4HJ404Q>4 PCAUGHT4}PCAUGHT4Q>4P4 Q>DLI4P4 Q>DLI4 P4 !DONSETUP5 J40Q>@ 5P5Q> 5 PCAUGHT*5PCAU}GHT45 QENCNT1>5 FNO10H5Q> R5NO10OENCNT2\5>f50p5Q>z5 STORDIR05 GDONSETUP5 PDIR95 !STORDIR5DONSETUPQ>}5 PMVYET?5$>5Q>5 J41PTM9505IJ415Q>5P5!_6X;6VRTBLNKQ6R>$6FJ42.6Q>START86P}uB6Q>STARTL6PvV6 !VCTRSET`6 J42Q>j6 PMVYET?t6QMOVCNTR~6FJ446 QFLASH6FJ436 "FLASH6!J446 J43Q}>6P6QMOVCNTR6R>6FJ446QRND6M>6HJ447Q> 7 PFLASH7Q>7P(7J44QMOVCNTR27HCHECKPLFLD}<7 TRANSFERF7 !ENDVRTP7CHECKPLFLD$>Z7 J45Q9d7 FNXTPLRn7 QMOVCNTRx7R>7FPY7 QKILL?97HNXTPLRGGO7Q>7} PKILL?97Q>7 PSOUND7Q>7 PSOUNDLP27Q>7 PSOUNDLP17NXTPLRGGO!NXTPLR7 PYQPY?98R>8 FNXTPLR8Q>"}8 PSOUNDLP1,8Q>68 PSOUNDLP2@8Q>J8 PSOUNDT8Q>^8 PPY?9h8 NXTPLR2r8(>|8HJ458ENDVRTQ>8PК8 TIMERCLR}8!_8X;8ISPYD?Q>8 PMOVPLR?8#PARALYZCNT98QPARALYZCNT98 RPY?98HBYE8 VPY?98Q>9PPARALYZCNT99 QP}Y?99R>&9HJ4609 "PY?9:9J46#MOVPLR?D9BYE:N9X;X9DOBOXESQ>b9PL1l9Q>Cv9PL29$>9J47 DOBOX909HJ47}929J48 ADD240TOL929(>9HJ489J49 DOBOX909HJ499$>:J50QCLRLIST29 : PCLRLIST9:0 :IJ50*::4: }DOBOX%>>: QMOVCNTRH: HPLOTBOXR:Q>\:PLOTBOXM>f: P@L17p:%>(z: P@L17:%>P: P@L17:ADD240TOL,:Q>:OL1}:DJ51:#L2: J51PL1:::X;:DLI5:C:5; %COLRCT; QCLRLIST8;P $;P.;38;)>B;HJ52L;%>V;J52'CO}LRCT`;7j;?t;7~;9;X;;SETUPPLS$>0;J53QDATALIST9;P`9;0;IJ53;:;X;;SCREENLIST%>;J54QDLISTDATA8};P8;3<)> <HJ54<C< J55P8(<32<)>j<<HJ55F<Q>AP<P8Z<3d<Q>n<P8x<3<Q>?<P8<%><}$>< J56Q><P8<P)8<C<,<O><?<0<HJ56=:=X;=ENSETUP$>"= J57Q>h,=P96=Q>O@=P9J=Q>} T=P 9^=Q>h=P09r=Q>@|=P@9=Q>=PP9=0=IJ57=:=X;=SCREENCLR%>=Q>= J58Px8=Py8=P}z8=P{8=3>HJ58>Q>>Pz&>Pz0>Pz:>PzD>Q>(N>PX>Pb>:l>X;v>TIMERCLR$>> J59#TM9>QTM9}>R> >HJ60>Q>>PTM9>0>(>>HJ59> J60$>> J61QTM9>,>U??U? ?O>m?? ?J62QBYTES8*?PTMSCREEN9}4? TIADD40TOX>?3H?AR?;\?S>f?DJ62p?Az?M>?>?0?(>?HJ61?$>? J63QTM9?R> ? HBYETM?0?HJ63}?QLMT?R>a? HBYETM@Q>@ PKILL?@ PKILL?$@Q>.@ PSOUND8@Q>B@ PSOUNDLP2L@Q>(V@ PSOUNDLP1`@BYETM!DOS}OUNDt@TIADD40TOXA~@O>(@>@:@X;@CAPTENEMY?$>@ J65%>@J66QPLRX9@ NENX8@M>@ HEXITLOOP@ QPLRY9@ N}ENY8@M>A HEXITLOOP A 'TMP1ACA(>(AFJ672A,FAJ67?PA QCLRLIST8ZA FBLANKdAQ>nA PCLRLIST8xA "CAUGH}T9AQ>A PSOUNDLP1AQ>A PSOUNDLP2AQ>A PSOUNDABLANK%TMP1A EXITLOOP1AIJ66A0AFJ65A:AX;BDOSOU}NDQSOUNDB FBYESOUNDBR>"B FSOUND2,BR>6B FSOUND3@BR>JB FSOUND4TBR>^BHK8hB !SOUND5rB K8R>|BHK9B !SO}UND6B K9$LOUDB0B &LOUDBQ>BPBAB,BO>BPB(>B HBYESOUNDB &SOUNDCQ>C PLOUDC BYESOUND:&}CSOUND2Q> 0C J71:C QSOUNDLP2DCS>NC ECONTSND2XC $SOUNDLP1bC0lCGBYESOUND2vC &SOUNDLP1CQ>CCONTSND2PSOUNDL}P2C:CBYESOUND2Q>C PSOUNDC:CSOUND3Q>C J71C QSOUNDLP2C,CO> C DCONTSND2C $SOUNDLP1D0 D0D GEND}SOUND D &SOUNDLP1*DQ>4D PSOUNDLP2>D:HDENDSOUNDQ>RDP\D!BYESOUND2fDSOUND4Q>@pD J71zD QSOUNDLP2D;DS> }D ECONTSND2D $SOUNDLP1D0DGBYESOUND2D &SOUNDLP1DQ>D PSOUNDLP2D:DSOUND5Q>D J71D QSOUNDLP2E,EO>} EDJ68$E $SOUNDLP1.E08EGBYESOUND2BE &SOUNDLP1LEAVET?`EJ68PSOUNDLP2jE:tESOUND6Q>n~EP҈E QSOUNDLP1EP}E $SOUNDLP2E2E(>EPE!BYESOUND2F J69Q>< F PSOUNDLP1F$>FJ7}0&SOUNDLP2(F:2FJ71,PAUSVCTRF PVVBLKIFQ>PAUSVCTR}FPVVBLKIFQ>FPFQ>FPFPAUSVCTRQ>FPF QMOVCNTRFHWYF TRANSFERF WYQGR>GFGDG}Q>"GP,GQ>VRTBLNK6G PVVBLKI@GQ>VRTBLNKJGPVVBLKITGQ>^GPhGQMOVCNTRrGHGD|GQ>GPG GD}!_GX;G TRUQFP?G FTRU2G TRANSFERG TRU2!bGX;GVRTWAITQMOVCNTRG HVRTWAIT3G TRANSFERGVRTWAIT3 DOSOU}NDG!_HX;H)LIST =A=,=-=.=/=0=%===H! =========&H! ===== ====0H! }= =3=4=5=====:H! =&='=(=)=*=+===%DH! == =======NH! ===== ===}=XH! == =======bH! == =====%==lH! ======%===vH! == ====}=%==H! == ======%=H! == ======%=H! = = = =1=2=%===H! == = =}==%===HX;H$BYTES =0====0===̼H ====0=0=0=I 0==0===<==HI =<= ===== RI == =====\I = =}0=fI ======= pI =0==0====0zI ===== ==̄I ====3=3=3=3I  = = }=====I  =3=?=3=<=?=3=0I ==3=3====I =======I' ==== = = ==}===IX;IbMESSAGE ===<=<===?==?==?==<=<=<=<=<=<=?==?===0====I$ ==}====3====I] ===?==<=<===?==<=<=<=<=?=<=?=<=?==<=<==<=====I! =}====3====If ===3==?==?==<==?==<=<=<==<==<==?===<=0=======}I ==3=<===Jf ===0= =<=<=?==?==<=<=?==<=<=<=<=?==<=<=========}=J =<=3=<===JX;$J$CLRLIST2 h=F==v=h=F==v.J80˅υe˅ˢ&eΐ̅i!}̅i@̠)@Чϭ )j!j̠` ḁGLa a9Lbj  a\La̠ ḁeLa)@Υ`LQb`!}L*aPؑˠabˠ`L=bPPˠxˠȑˠL=b Uˠ(˩P)ˠL=b'Uˠ̑ѥ `hheː̅ˢL!}aʽnn̤͈ bLvbneː̅ˠn**eͨqo ȄLbͥLib-qKq`i(!}̅`Pq˹Sq̹Vbcqˈ`# e  mL_LjLAc nc!} ncL#c˽`89 c c@>@ f˝̝Le0A)@!}@ g( g0Le̠ Vj̠ gj gjP Zj0ILf )Ͻ0 ]0)jj Vj̥LfP VjLfj  !}cjLf cjϝ0@ fL f0j!jfg( g̠ gLg gP g(Lg g( g0jj?~ ~  g( g`  g!}( g g) g` g Lg> >  g( g`>   Yg̠ g̩' g` g LYgeː̅` I1ˑ` ˑ!}`xiΩlТʍ`llghl`lͽ`˽b>j>j h 6ml`ϝhxm Th!} MhFh?hmn(ϭmI]nLh hϽnLh@jLhMhj,j Vj̥b` iLhP Vj!}刻 iLhj cj iLh cjb imnjhi hLhd ihjjdLhddLwijfLiff`}`!}b``IΪ >i詀 >i`Ix iȑ͊I)|ЊMMx wi`ͩ i`ȑȑ`!}L6mp˽t>> pjLi̠ Vj̠ gj gjP Zj ijILi )])j,j Vj̥۠`t jLFjP !}VjǠ jLFjj cj jLFj cjt jϝ pjLiб)`б)P`j jx`x`j|`|`}p!}tp`M kԩlLj@ԩjk mʩ00LjL_ "}u`vLxn(LEk )  #iLk>Lk"}и lL_^`˩klC̢ k l kp`"})ˠ(ˠPeː̅`HH ԍhh@0p`` q jAȩȩ?)i`"}hO 0@@P`xyz{zzzz(Ѝ`lm **imqoXN 1m"}8韐)ޢ !a(Lmi(`fY|)5dYx)+i"}`96StL!nL=nʎҊi` jnmn 0 `` jni "}0 `Lm@ jn8 Į0Ž` jni 0 `nҭҮ<<Lm<"}`mҭ`"n#ҩ #i"k#ЭL_no #iLb #i mL_A,-./0"}%  345&'()*+%    %% % % %" } 12% %00000<< ?<0?.-@@!K(USE