@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'4dEIn$X;-------------------------------xX;X;Super Command ProcessorX;X;by: Bryan SchappelX;X;If the tT}yped line does not X;contain a command, then the$X;filename entered will be loadedX;as a binary file.X;$X;-------U}------------------------X;X;*** Commands ***X;X;ERA [fname] = delete file"X;REN [f1,f2] = rename f1 to f2X;PV}RO [fname] = lock file"X;UNP [fname] = unlock file,#X;DIR [Dn:] = directory of D#:6!X;RUN [adr] = run at address@X;W}COPY = copy a FileJX;CAR = enter CartT"X;TYPE = read BATCH file^X;KILL = KILL BBK CPhX;rX}NUMCOM ;;# OF COMMANDS|IOCB5;;Adr of IOCB5MYBUF;;I/O BufferZIOCB ;;Zpage IOCBX;X;Zero Page VarY}iablesX;SL;;Load adr loSH;;Load adr hiSTL;;start adr loSTH;;start adr hiBLL;;lengZ}th loBLH;;length hiBAL;;buffer byte 1BAH;;buffer byte 2XSAV;;save locLNPOS;;CP line pos&[}LENSAV;;COPY length0COUNT;;counter:X;DX;OS EquatesNX;XCIOVV;;CIO VectorbICCOMB;;CIO CommandlIC\}BALD;;CIO buffer lovICBAHE;;CIO buffer hiICBLLH;;CIO length loICBLHI;;CIO length hiAUX1J;;CIO a]}ux 1AUX2K;;CIO aux 2RUNAD;;run addressEOL;;end of lineFR0;;FP numberTRAMSZ;;cart in?B^}OOT? ;;boot flagDOSVEC ;;DOS VectorDOSINI ;;init vecWARMST;;warm st flagMEMLO;;lo mem pntrIN_}ITAD;;init addr HATABS;;Handler TableSHFLOK;;Caps toggle IFP;;Int to FP*FASC;;FP to ASC4I`}NBUFF;;FP pntr>EDITRV;;E: Handler TabHX;RX;BUMP Macro\X;f BUMP p# z H@BUMP #  @BUMPa}X;X;PRINT MacroX; PRINT  Q>4  %>5  EPRINTX;ORIGIN| ORIGINX;X;This routine attemb}pts to$X;Binary Load a file..!X;If the file is not Binary an8X;Error #181 is given.BX;L X;ENTER:V!X;MYBUF=Filename tc}o load minus`X; a .COM extension.jX; Load is on IOCB #1tX;~LOADIT%> 'COUNT 'RUNAD 'RUNAD d}FINDFILE%> FINDARG Q>4COM %>5COM ADD_EXT CLOSE1X; SET_OPN SET_DEV  SET_4ILOAD_MAINe}GO_ERR!IOERROR(NO_BIN%>2 HGO_ERR<X;FX;Main load LoopPX;ZLOAD_MAIN READ2d$BALn2x HNO_BIN$BAHf}2 HNO_BIN SET_DESTX;GET_FILQ>4EPRDN PINITAD Q>5EPRDNPINITAD READ2$BAL2 HNOT_FF$g}BAH2 HNOT_FF" READ2,NOT_FFQBAL6PSTL@QBAHJPSTHT $COUNT^ HPASS2h #COUNTrPADDRESS|QSTL Ph}ADDRESSPASS2 READ2QBAL;SSTLPBLLQBAHSSTHPBLHBUMP BLL GET_DATA GJSTART JINITi} !GET_FILX;JINIT!@INITAD:&JSTART CLOSE10 QRUNAD:>D LRUNADN FLOAD_GOX &ADDRESSb QRUNADlPADDj}RESSvLOAD_GO!@ADDRESS:X;X;Get DATA from fileX;GET_DATAQSTLPSLQSTHPSHX;GET_REC$>Qk}>CALL_CIOPICCOM9QSL PICBAL9QSH  PICBAH9QBLL  PICBLL9*QBLH4 PICBLH9> !CIOVHX;RX;Read 2 byl}tes from file\X;fREAD2Q>4BALpPSLzQ>PSHPBLHQ>PBLL HGET_RECX;X;Set AUX1 to 4X; SETm}_4Q> PAUX19 !CIOVX;X;E: Print Routine X; X;ENTER: X;A=LSB of string$ X;Y=MSB of string. X;8 X;EXIT:B n}X;A=zeroL X;V EPRINTPFR0` 'FR0j EPL%>t Q@FR07~ FEPRDN EPUT #FR0 HEPL #FR0 HEPL EPRDN:o} X; X;E: Put Byte Routine X; X;ENTER: X;A=character to print X; EPUT? QEDITRV 5 QEDITRV( 52 C< p}:F X;P X;E: Input RoutineZ X;d EINPUT$>n Q>@x PSHFLOK X; X;Get a 64 byte line in MYBUF X; X;ENTER: X;X=q}IOCB Index ($10,$20,...) X; INP_MYBQ> PSL PBLH Q>@ PBLL Q> PSH !CALL_CIO X; X;Get a Hex # frr}om MYBUF" X;, X;ENTER:6 X;Y=offset into MYBUF where@ X; the Hex # startsJ X;T X;EXIT:^ X;FR0,FR0+1 = binary numberh s}X;r X;| GRAB_HEXQ> PCOUNT PFR0 PFR0 G4LOOPQMYBUF8 R>EOL FHEX_OUT R> HTESTIT HEX_OUTQCOUt}NT FHEX_BAD HEX_GOOD, : HEX_BAD; : X; TESTIT$>& G4SCANRHEXDIG90 FGOTG4D: 0D IG4SCANN GHEX_BADX u}X;b GOTG4DTFR0l UFR0v TFR0 UFR0 TFR0 UFR0 TFR0 UFR0 A LFR0 PFR0 #COUNT 3 Qv}COUNT R> EHEX_BAD DG4LOOP X; X;Close IOCB #1 X;* CLOSE1$>4 HCLOSEIT> X;H X;Close IOCB #2R X;\ CLOSw}E2$> f X;p X;Close Any IOCBz X; X;ENTER: X;X=IOCB Index ($10,$20,...) X; X;EXIT: X;X=IOCB Index X; CLOSEITx}A 5 Q> PICCOM9 CIOV 7 >:X; X;CP's PROMPT + INPUT Routine$X;.INPUTPRINT PROMPT8 EINPUTB Iy}INPUTLVL IOERRORV !INPUT`INPUTLVQMYBUFj R>EOLt FINPUT~:X;X;########################X;X;Start of Cz}ommandsX;X;########################X;X;Enter CartX;GOCARTQTRAMSZ HTRY_CART Q>4NOCART %>5NOCART {} !EPRINTTRY_CART!@:X;( X;Kill CP2X;<KILL UNHOOKF PWARMSTP GOCARTZ !@DOSVEC:dX;nX;Un-Hook OS Patc|}hesxX;UNHOOKQ> PDOSVEC CP_HIQ>PDOSVEC QRESET PDOSINI QRESETPDOSINI %INDEX Q}}>4EDITRV PHATABS8 Q>5EDITRVPHATABS8OLD_MLQ> PMEMLOOLD_MHQ>" PMEMLO,Q>6 PSETFLAG@:J~}X;TX;Erase a File^X;h ERASEQ>!r HDOXIO|X;X;Lock a FileX;PROTECTQ># HDOXIOX;X;Unlock a File}X;UNPROTECTQ>$ HDOXIOX;X;Rename a FileX;RENAME FINDFILE %LNPOS FINDARG $XSAV&Q> ,0 PFNAME}9:REN_LPQMYBUF8DPFNAME9N2X3b R>EOLl HREN_LPvQ> 5 HXIO_ENTX;X;Perform an XIOX; X;ENTER:}X;A=XIO Number"X;Y=Offset to Filename in MYBUFX; DOXIO5 FINDFILEXIO_ENT CLOSE17 PICCOM9  SET_DEV} PAUX19  CIOV* GIOERROR4:>X;HX;Set ICBAL/H to DEVICERX;\ X;ENTER:fX;X=IOCB IndexpX;zSET_DEVQ>4DEVICE} PICBAL9 Q>5DEVICE PICBAH9Q> PAUX29:X;X;Handle I/O errorX; X;ENTER:X;Y=I/O Error #X; X;}EXIT:X;Channel #1 is closedX;IOERROR'FR0$IO_ERRQ>. PFR08 CLOSE1B IFPL FASCV%>` IOERR3j Q}@INBUFF7t PERBUF8~ IIOERRM> PERBUF8 Q>EOLPERBUF8Q>PERBUF8 Q>4ERTXT %>5ERTXT !EPRI}NTX;#X;This will grab a filename fromX;MYBUF and put it in theX;device buffer. X; X;ENTER:"X;Y=Offset to Fil}ename in MYBUF(X;2FINDFILEQDEFDEV< PDEVICEFQDEFDEVPPDEVICEZX;d FIND1$>nQMYBUF8xR> :FX2}QMYBUF8R> : HFIND2QMYBUF8PDEVICE QMYBUF8 PDEVICE333 HFIND2X;X2QMYBUF8 P}DEVICE3"3,X;6FIND2QMYBUF8@ PFNAME9J R>EOLT FFIND3^R> h FFIND3r3|2(>  HFIND2FIND3Q>EOL} PFNAME9Q>PFNAME9 &XSAV:X;#X;This handles the 'RUN' commandX;MEMRUNQMYBUF8 R>EOL FRUN_}ITX;PULL_IT GRAB_HEX& EBAD_RUN0QFR0: PADDRESSD QFR0NPADDRESSXRUN_IT!@ADDRESS:bBAD_RUN%>l}MEM_ERR!IOERRORvX;X;Get disk DirectoryX;DIRECTQ> HDIR_GOX;X;Get a TYPE of a FileX; TYPEQ>}DIR_GOPDIR_COM FINDFILEQDEVICE R>EOL HOPEN_DIR$> CP_DIRQDIRNAM9PDEVICE9 0* ICP_DIR4}X;>OPEN_DIR CLOSE1H SET_OPNR SET_DEV\DIR_COMQ>f PAUX19p CIOVz GMEM_ERRX; DIROK$> INP_MYB} GDIRDONE%>DIRCK1QMYBUF8 R>EOL FDIRCK23 HDIRCK1DIRCK2Q>PMYBUF8PRINT MYBUF !DIRO}KDIRDONE!CLOSE1X;$X;Set Destroy Flag.X;8SET_DESTQ>B PWARMSTL:VX;`X;Add File ExtensionjX;t X;ENTER}:~X;A=LSB of extensionX;Y=MSB of extensionX;ADD_EXTPFR0 'FR0$>%>X; EXT_SCAN2 QFNAME9}R> . FEXT_RTS R>EOL HEXT_SCAN EXT_ADDQ@FR07 PFNAME92(12 IEXT_ADD< EXT_RTS:FX;PX;This is where RE}SET comesZX;d RESET n UNHOOKxX;HOOKUP$> CLOSEIT SET_OPN Q>4EDEV PICBAL Q>5EDEV PICBAH} &AUX2Q>  PAUX1 CIOVX; HOOK1-%EDITRV$EDITRV3" HNO_UPX,26NO_UPX'EGET@ &EGET}J%>TX;^FIND_EQHATABS8hR> Er FGOT_E|333)>! DFIND_EX; GOT_E3 'INDEXQ>4NEW_E.HAN PH}ATABS8Q>5NEW_E.HANPHATABS8X;$>P CLOSEIT%>COPY_EQEDITRV8&PNEW_E.HAN80 QIOCB58:PBAT_IOC}B8D1N ICOPY_EXX;bQ>4BAT_GET lPNEW_E.HANvQ>5BAT_GET PNEW_E.HANX;SKIP_BATQSETFLAG H}INIT_RTS #SETFLAG QDOSINI PRESETQDOSINI PRESET Q>4RESET PDOSINI Q>5RESETPDOSINIX;}  QDOSVECPUNHOOK QDOSVEC* PCP_HI4 Q>4GO_CP> PDOSVECH Q>5GO_CPRPDOSVEC\X;f QMEMLOpPOLD_}MLz QMEMLOPOLD_MHQ>4PROGEND PMEMLOQ>5PROGEND PMEMLO INIT_RTS:X;X;COMMAND PROCESSOR E}NTRYX;GO_CP HOOK1Q> PWARMSTX; MAIN- INPUT;;get line QMYBUF$R> *;;Batch?. HNO_BAT8 !BATCHB}X;LNO_BATR> ;V FMAIN`%>j FINDFILEtQDEVICE~ R>EOL HNO_REM QDEVICE PDEFDEVQDEVICEPDEFD}EV !MAINX;NO_REMQ>4COMTABPFR0 Q>5COMTAB PFR0$> COMLP%> COMCKQMYBUF8 R@FR07 HTR}YNEXT(32)>< HCOMCKFX;P QCOMADRL9ZPCOMJSRd QCOMADRH9nPCOMJSRx FINDARGCOMJSR  !MAINX;}TRYNEXTQFR0,O>PFR0 DTRY_NH #FR0 TRY_NH2 (>NUMCOM HCOMLP LOADIT !MAINX;X;Find }an Argument on Line"X;, X;ENTER:6X;Y=Offset to start search@X;J X;EXIT:TX;Y=1st char of argument^X;hFINDARGQM}YBUF8rR> | FNEXTARG R>EOL FNEXTARG3 HFINDARGNEXTARGQMYBUF8R>  HFOUNDARG3 HNEXTARGFOUND}ARG'LNPOS:X;X;Handle a BATCH File X; BATCH%> Q> & PMYBUF0 FINDARG: FINDFILED Q>4BATN %>5BATX } ADD_EXTb BAT_GOQ> l BAT_CIOv X; Q>4DEVICE PICBALB Q>5DEVICE PICBAHB Q> PAUX1B Q> BAT_CIO} IBAT_MAIN Q> 'FR0 BAT_CIO IO_ERR!BAT_MAIN!MAIN !BAT_9BQ>EOL! HBAT_XIT !X;*!BAT_GETQBAT_IOCB4!} IBAT_PROC>!BAT_NORM$>H!%>R! EGET!\!X;f!BAT_PROCQ>p! PICBLLBz! PICBLHB!Q>! BAT_CIO! GBAT_NORM!Q}BAT_ZIO!5! EPUT!7!BAT_XIT$>!%>!:!X;!X;Perform BATCH CIO!X;"BAT_CIOPICCOMB" BAT_SWAP"$>P}$" CIOV."PBAT_ZIO8" IBAT_SWAPB"CL"5V"$>P`" CLOSEITj"7t"?~"X;"X;Swap IOCB Blocks"X;" BAT_SWAPC"5"%>}"BAT_SLPQZIOCB8"5" QBAT_ZIO8" PZIOCB8"7" PBAT_ZIO8" QIOCB58#5 #QBAT_IOCB8# PIOCB58#7(#PBAT_IOCB82}#1<# IBAT_SLPF#7P#?Z#:d#X;n#X;Set COPY IOCBx#X;# X;ENTER:#X;X=IOCB Index#X;A=CIO Command#X;# X;EXIT:#!X;CIO }set for I/O of 12K block# X;at $3000#X;#SET_CPYPICCOM9#Q># PICBLL9# PICBAL9#Q>0$ PICBLH9$ PICBAH9$:"$}X;,$X;Set ICCOM for Open6$X;@$ X;ENTER:J$X;X=IOCB IndexT$X;^$SET_OPNQ>h$ PICCOM9r$:|$X;$X;Copy I/O Error$X;$} X;ENTER:$X;Y=CIO Error #$X;$ X;EXIT:$"X;Channels #1 and #2 are closed$X;$CPY_IOR IOERROR$ !CLOSE2$X;$X;Han}dle COPY Verb$X;%COPY FINDFILE% CLOSE1% SET_DEV&% SET_OPN0% SET_4:% GCPY_IORD%PRINT DEVICEN% %LNPOSX% }FINDARGb% FINDFILEl% CLOSE2v% SET_DEV% SET_OPN%Q>% PAUX19% CIOV% GCPY_IOR%X;% SET_DEST%COPY.2$>}%Q>% SET_CPY% CIOV%GEOF%Q>& PCOUNT & HSAVLEN&X; & EOFQ>*& PCOUNT4&X;>&SAVLENQICBLL9H& PLENSAV}R& QICBLH9\&PLENSAVf&$> p&Q> z& SET_CPY& QLENSAV& PICBLL9&QLENSAV& PICBLH9& CIOV& QCOUNT& HCOP}Y.2& CLOSE1& !CLOSE2&X;&X;Program Text/Buffers&X;&NOCART ANo CartA=EOL='PROMPT EOL'DEFDEV AD1:A=}'DIRNAM A*.*A=EOL$'EDEV AE:A=EOL.'ERTXT AError- A8'ERBUF A A=EOL=B'HEXDIG A0123456789AL' AABCDEFAV'}COM EOL=AMOC.A`'BAT EOL=ATAB.Aj'X;t'X;Command Tables~'X;'COMTAB AERAPROUNPRENA' ADIRCOPRUNA' ACARTYPKILA'}X;'COMADRL 4ERASE' 4PROTECT' 4UNPROTECT' 4RENAME' 4DIRECT' 4COPY' 4MEMRUN' 4GOCART( 4TYPE ( 4K}ILL(X;(COMADRH 5ERASE(( 5PROTECT2( 5UNPROTECT<( 5RENAMEF( 5DIRECTP( 5COPYZ( 5MEMRUNd( 5GOCARTn( 5TYPEx(} 5KILL(X;(ADDRESS EPRDN;;RUN Addr(DEVICE AD1:A(X;( X;Buffers(X;(FNAME AAUTORUN.BATA( EOL=((}INDEX;;HATABS Index(SETFLAG;;set up?(X;(X;Wedge/Handler Space)X;)X;For Batch Processing)X;")BAT_ZIO;;}Zpage IOCB,)NEW_E.HAN;;E: Handler6)BAT_IOCB;;IOCB #5 Copy@)ICCOMBBAT_IOCBJ)ICBALBBAT_IOCBT)ICBAHB}BAT_IOCB^)ICBLLBBAT_IOCBh)ICBLHBBAT_IOCB r)AUX1BBAT_IOCB |)X;) PROGEND )T_LENGTHPROGENDORIGI}N)X;)X;Entry Point to Start CP)X;) ENTRY$>) &SETFLAG) &WARMST)2) &BOOT?) HOOKUP)PRINT CREDITS) C}LOSE2* SET_OPN* SET_DEV* SET_4&*60* CLOSE2:*8D* IHAV_BATN* QTRAMSZX* HG_CARTb* !@DOSVEC:l*G_CART!@:v*}HAV_BATPRINT PROMPT*PRINT FNAME*7*7* !BAT_GO*X;*CREDITS }=EOL* ABBK CP - (C) 1987 A* AANALOG Compu}tingA=EOL* Aby: Bryan SchappelA* EOL=*X;*X;Set Run Address*X;+ RUNAD + ENTRY+I + A* AANALOG Compui|#  !y#  " J VL Q v Q Q܅إ݅٦ ⍶#؍# Q }8؅ڥم +0 Ll   ##l#؅֥مעB֝DםEڝH۝ILV܅ׅ֩۩҅Ԅՠ w }`HH`@օ۩@کL7ԅչɛ`8`i#0&&&&ՊԅȥԐŢ H B V }h`Q# a  Lɛ`H#Lal # l ##`!(#$$  !ީ, }##ɛ HH  hB J V0`D#EK`ԩ  ؠȱd#)d#e#f#]#LaR##S##: }:###ȹ#ɛ  쩛##`ɛ  ԍ#Ս#l#Lp #ɛ V## }  " J V0̢ 0ɛ aLy L`Ԅբ轺#. ɛԝ#` #  "ZD#EK J } VجR"S"E!Ȍ##P ##G#"##=# $ (v ! } CH $`  *L"; #ɛ#R##S#L}!ԩ#բ#!#! ! L}!i }Ԑ |L}! ɛ `  ! ~# p"###$ p" p" L}!##L }$$ p"0#H wh`# "P V# HP hH H# h#H#h#h`BHD0IE`B` L   }  "J V0䩷# a !    "J V0  " V0HI "HI V LNo Cart }D1:*.*E:Error- 0123456789ABCDEFMOC.TAB.ERAPROUNPRENDIRCOPRUNCARTYPKILRVZ^H* L "  vD1:AUTORUN.BAT $$ }# S$ a  " J V ( l lQ# a# ahhL"}BBK CP - (C) 1987 ANALOG Computingby: Bryan Schappel } $ S$ a  " J V ( l lQ# a# ahhL"}BBK CP - (C) 1987 ANALOG Computingby: Bryan Schappel  ;----------------------------------- ;SOURCE CODE LINK FILE ;----------------------------------- ;CHARACTER DATA ;BALL}OON CDATA: DB 60,126,255,255,251,243,126 DB 24 ;STRING1 STRING: DB 24,24,48,48,96,192,96,48 ;STRING2 DB 24,48,2}4,48,24,48,96,48 ;STRING3 DB 24,12,24,12,24,12,6,12 ;STRING4 DB 24,12,12,12,6,3,6,12 MDATA: DB 24,36,24,126,153},60,36,102 ;PLAYER MISSILE DATA ;PLAYER 0 ;CLOWN FACING FORWARD PDATA: DB 0,24,36,24,126,231,189,165 DB 60,60,102,0 } ;PLAYER 1 CLOWN'S LEGS LDATA: DB 0,102,102,0 ;CLOWN FALLING (UPPER BODY PORTION) FDATA: DB 0,24,165,153,255,102,60,3}6 DB 60,60,102,0 FLAG: DB 1 RCOUNT: DB 1,0 TEMP: DB 5,0 SPOINT: DB 8BCOUNT: DB 3PEMPB: DB 3 OFLAG: DB 128 BC}OLOR: DB 1,65,1,193 CX0: DB 65CY0: DB 108PY2: DB 130PY3: DB 130PX2: DB 45PX3: DB 180 BNUMB: DB 100DNUMB: DB 10 DO}LCOR: DB 0,0,0,0,80,88,96,104,112 DB 120,128,136,144,152,160,168,176 DB 0,0,0 DRMAX: DB 13 PD2: DB 0PD3: DB 1EXPAN2:} DB 10EXPAN3: DB 10EXS2: DB 10EXS3: DB 10PS2: DB 255PS3: DB 255PERMP: DB 255,255LEVEL: DB 17LPOINT: DB 22MPOINT: }DB 32MEN: DB 3PFORM: DB 3 ;CORDINATES FOR JUMP ;SHORT JUMP RIGHT JCORDN: DB 4,1,2,8,0,2,4,2,2 ;SHORT JUMP LEFT} DB 4,1,1,8,0,1,4,2,1 ;LONG JUMP RIGHT DB 12,1,2,8,0,2,12,2,2 ;LONG JUMP LEFT DB 12,1,1,8,0,1,12,2,1 ;ALL ME}SSAGES ARE STORED IN ;INTERNAL FORM ;TOP LINE,SCORE LEVEL TLINE: DB 0,0,51,35,47,50,37,26,0,0 DB 0,0,0,0,0,0,44,37,54},37,44,0,0,0 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;PRINT" LEVEL # COMPLETED CLINE: DB 0,0,0,0,0,0,10,10,10,10,0 DB 44,37},54,37,44,0,0,0,35,47,45,48 DB 44,37,52,37,36,0,10,10,10,10,0,0 DB 0,0,0,0,0 ;DATA PATTERN FOR DOLLAR DOLLAR: DB 24,24},60,102,48,24 DB 12,102,60,24,24 ;TITLE SCREEN CRED: DB 0,0,0,0,35,50,33 DB 58,57,0,35,44,47,55,46,128 DB 128 DB 0,0},0,0,0,0,0,42 DB 53,45,48,37,50,128 ; DB 128 DB 0,0,0,0,0,0,0,0,0,34,57,128 DB 128 DB 0,0,0,0,34,50,33,36,0,52 DB 41,4}5,45,41,46,51,128 ;PRINT,GAME OVER OVER: DB 0,0,0,0,0,39 DB 33,45,37,0,47,54,37,50 ;PRINT"PRESS FIREBUTTON TO START"} MESS2: DB 0,0,0,0,0,48,50,37,51,51 DB 0,52,40,37,0,38,41,50,37,34,53 DB 52,52,47,46,0,52,47,0,51,52,33 DB 50,52 TART"x ;---------------------------------- ;SOURCE CODE: CRAZY CLOWN JUMPER ;---------------------------------- ;MAIN FILE ;---}------------------------------- ;WRITTEN FOR THE MACRO ASSEMBLER ;---------------------------------- ORG $4000 OPEN: =} $03CLOSE: = $0CGETREC: = $05PUTREC: = $09EOL: = $9BICCOM: = $342ICSTA: = $343ICBAL: = $344ICBAH: = $345ICPTL: = $34}6ICPTH: = $347ICBLL: = $348ICBLH: = $349AUX1: = $34AAUX2: = $34BCIOV: = $E456 ;MISC. EQUATES RAMSET: = $5000ROMSE}T: = 57344SCREEN: = 132VSCROL: = $D405SETVBV: = $E45CXITVBV: = $E462DLIST: = 560COLOR0: = 708COLOR1: = COLOR0+1COLOR2}: = COLOR1+1COLOR3: = COLOR2+1COLOR4: = COLOR3+1BX: = 135TAILAD: = 137RANDOM: = $D20ASTICK0: = 632STRIG0: = 644WORKP:} = 128 ;PLAYER-MISSILE EQUATES PMBASE: = $6000PMI: = PMBASE+768PM0: = PMBASE+1024PM1: = PM0+256PM2: = PM1+256PM3: =} PM2+256 ;HORIZONAL POSITION REGISTERS HPOSP0: = 53248HPOSP1: = 53249HPOSP2: = 53250HPOSP3: = 53251 ;HORIZONTAL MI}SSILE POS. REGISTERS HPOSM0: = 53252 ;COLLSION REGISTERS ;PLAYER COLLSION WITH PLAYFEID P0PF: = 53252P1PF: = 53253} ;PLAYER COLLSION WITH OTHER PLAYERP0PL: = 53260P1PL: = 53261 ;MISSILE COLLISION WITH PLAYERM0PL: = 53256M1PL: = 5325}7M2PL: = 53258M3PL: = 53259 ;MISSILE COLLISION WITH PLAYFIELDM0PF: = 53248M1PF: = 53249M2PF: = 53250M3PF: = 53251H}ITCLR: = 53278PAD0: = 139PAD1: = 141 ;SOUND EQUATESAUDF1: = $D200AUDC1: = $D201AUDF2: = $D202AUDC2: = $D203AUDCTL:} = $D208SKCTL: = $D20F LAB15: INCLUDE D:PAGESIX.LNK ;MAIN SET UP JSR CLOSIO JSR GRAPH ;PUT ZEROS IN ZERO PAGE } LDX #143 LDA #0ZAPL: STA 0,X INX BNE ZAPL JSR CHAR JSR LINKVBI ;SET SCREEN COLORS ;BACKGROUND LDA #10 STA} COLOR4 ;UPPERCASE LDA #130 STA COLOR0 ;INVERSE UPPERCASE LDA #10 STA COLOR2 ;LOWERCASE LDA #64+4 STA CO}LOR1 ;INVERSE LOWERCASE LDA #240+8 STA COLOR3 LDY #2 LDA #0 STA (88),Y JSR PMINT JSR XSTART JSR CORZ JSR }BOARD ;SET ENABLE FIFTH PLAYER LDA #16 STA 623 ;SET UP FOR SOUND LDA #0 STA AUDCTL LDA #3 STA SKCTL ;SET A}DDRESS OF TAIL CHAR LDA #16;LOW RAMSET STA TAILAD LDA #HIGH RAMSET STA TAILAD+1 LDA #9 STA GFLAG5 ;PRINT ZERO TO} SCORE JSR PSCOR QQQ: LDA #0 JSR XMOVE ;MAIN TESTING ROUTINE ;TEST CLOWN TO WHAT ITS STANDING ON ;IS A JUMP IN P}ROGRESS? ;IF SO, GO TO MAIN JUMP ROUTNE ;IF NOT, CONTINUE LOOP ;IS IT ON A PLATFORM? ;IF IT IS, GO TEST JOYSTICK ;IF NOT}, GO TEST FOR BALLOONS ;ALSO,CHECK FOR DOLLAR MAINT: LDA CRITP BEQ MAIN3 DEC GFLAG5 BNE MAIN3 LDA #9 STA GFLAG5 } JSR MPLM ;CHECK FOR DOLLOR MAIN3: LDA DMARK BEQ MAIN4 JSR CDOLL MAIN4: LDA MCOLL1 BEQ MAIN5 JSR ADOLL MAIN5: }LDA PCOLL1 BEQ BALTEST;GO TEST BALLOON CMP #4 BNE MAIN1 LDA #0 JMP PLATMAIN1: CMP #8 BNE MAIN2 LDA #1 JMP PLAT MAI}N2: BNE FALL ;IS HE ON A BALLOON? ;IF SO MOVE HIM UP AT THE SAME RATE ;AS THE BALLOONS ;IF NOT HE FALLS BALTEST: LDA }COLL1 BEQ FALL BNE ONBALL ;CLOWN FALLING, IF CFALL REACHES ;60, THEN NOTHING CAN STOP IT FALL: INC CFALL JSR NDELA}Y LDA #2 JSR YMOVE LDA CFALL CMP #60 BEQ CDEAD BNE MAINT CDEAD: LDA #0 STA AUDF1 STA AUDC1 STA TFLAG5 JSR FDE}AD JMP QQQ ;CLOWN IS STANDING ON A BALLOON. ;TEST TO SEE IF SOUND IS IN PROGRESS ;IF NOT,TEST FALL DURATION.IF FALL ;I}S LONGER THEN 12 THEN START SOUND. ;MOVE HIM UP ONE AT SAME RATE AS ;THE BALLOONS, THEN SET CFALL TO ;ZERO AND GO TEST TH}E JOYSTICK. ;IS STANDING ON A TAIL? ONBALL: LDA COLL1 CMP #4 BEQ FALL LDA TFLAG5 BNE ON1 LDA CFALL CMP #5 BCC O}N1 ;SET UP FOR SOUND EFFECT JSR XSOU1 ON1: LDA TFLAG2 BEQ ST LDA #3 JSR YMOVE LDA #0 STA CFALL STA TFLAG2 }LDA CY0 CMP #41 BCC FALL ;TEST FIRE BUTTON IF ITS PRESSED, GO ;TO JUMP JOYSTICK ROUTINE. IF NOT, ;TEST STICK FOR NORMA}L LEFT OR RIGHT ;MOVEMENT. ;IF STICK IS NOT MOVED GO TO MAIN ;TESTING ROUTINE ST: LDA CRITP BEQ STJ1 ;CHECK TO SEE IF }PLATFORM IS MOVING LDA PCOLL1 BEQ STJ1 LDA #1 JSR YMOVE LDA #0 STA CFALL STJ1: LDA STRIG0 BEQ JUMPST; PRESSED GO }TO ROUTINE ;TEST STICK FOR NORMAL MOVEMENT STJ: LDA STICK0 CMP #15 BNE ST9 JMP MAINT ST9: CMP #7 BNE ST1 ;MOVE} CLOWN RIGHT ;IF CLOWN IS ON BALLOON MOVE UP JSR NDELAY LDA COLL1 BEQ ST10 LDA #3 JSR YMOVE ST10: LDA CX0 CMP }#205 BEQ ST2 LDA #2 JSR XMOVE JMP MAINT ST1: CMP #11 BNE ST2 ;MOVE CLOWN LEFT JSR NDELAY LDA COLL1 BEQ ST1}1 LDA #3 JSR YMOVE ST11: LDA CX0 CMP #45 BEQ ST2 LDA #1 JSR XMOVEST2: JMP MAINT ;TEST JOYSTICK FOR THE DIRECT}ION ;IS CLOWN IS TO JUMP IN. JUMPST: LDA STICK0 CMP #11 BNE JST1 ;SHORT JUMP LEFT LDA #32 STA JPOINT;SET POINTER TO} 16 LDA #9 STA GPOINT BNE RJUMP JST1: CMP #7 BNE JST2 ;SHORT JUMP RIGHT LDA #0 STA JPOINT;SET POINTER TO 0 STA GP}OINT BEQ RJUMP JST2: CMP #10 BNE JST3 ;JUMP HIGH LEFT LDA #128 STA JPOINT LDA #27 STA GPOINT BNE RJUMP JST3: }CMP #6 BNE JST4 ;JUMP HIGH RIGHT LDA #64 STA JPOINT LDA #18 STA GPOINT BNE RJUMP JST4: JMP MAINT ;DELAY MOVE }MOVEMENT OF CLOWN ;CHECK DOLLAR SIGN NDELAY: LDX #0 LDY #0 DEL2: INY BNE DEL2 LDA DMARK BEQ DEL3 STX TEMP11+1  }JSR CDOLL LDX TEMP11+1 DEL3: LDA CRITP BEQ DEL4 STX TEMP11+1 JSR MPLM LDX TEMP11+1 DEL4: INX CPX #9 BNE DEL2 RTS } ;ADD 20 TO SCREEN ADDRESS ADD20: CLC LDA SCREEN ADC #20 STA SCREEN LDA SCREEN+1 ADC #0 STA SCREEN+1 RTS ;CLOWN } IS JUMPING ;GET LENGTH RJUMP: LDA #3 STA JMAXRJP1: LDY GPOINT LDA JCORDN,Y STA TJUMP INY ;GET Y CORDINATE LDA } JCORDN,Y STA TJUMP+1 INY ;GET X CORDINATE LDA JCORDN,Y STA TJUMP+2 RJ: LDA CRITP BEQ RJ7 JSR MPLM RJ7: LDA DM }ARK BEQ RJ8 JSR CDOLL ;DO Y CORDINATE RJ8: LDA TJUMP+1 JSR YMOVE ;STOP CLOWN FROM JUMPING OUT OF ;BOUNDS LDA C}X0 CMP #45 BNE RJ11 JMP FALL RJ11: LDA CX0 CMP #205 BNE RJ12 JMP FALL ;DO X CORDINATE RJ12: LDA TJUMP+2 JSR XM}OVE ;CHECK FOR COLLISION LDA PCOLL1 BEQ RJ1 CMP #4 BNE RJ4 LDA #0 JMP PLATRJ4: CMP #8 BNE RJ2 LDA #1 JMP PLAT} ;CHECK FOR BALLOON RJ1: LDA COLL1 BEQ RJ2 LDA TFLAG5 BNE RJ9 JSR XSOU1 RJ9: JMP ONBALL RJ2: LDA MCOLL1 BEQ} RJ10 JSR ADOLL RJ10: DEC TJUMP BNE RJ INC GPOINT INC GPOINT INC GPOINT DEC JMAX BNE RJP1 JMP MAINT ;SET U}P FOR SOUND EFFECT ;CLOWN HITTING BALLOON XSOU1: LDA #1 STA TFLAG5 LDA #180 STA AUDF1 LDA #160+15 STA AUDC1 STA SOUN}D1+1 LDA #15 STA SOUND1 RTS ;SET UP FOR SOUND EFFECT ;CLOWN HITTING DOLLAR SIGN XSOU2: LDA #1 STA TFLAG4 LDA #250} STA SOUND2 STA AUDF2 LDA #224+15 STA AUDC2 RTS ;CLOWN HAS HIT DOLLAR SIGN DO IT ADOLL: JSR XSOU2 JSR DKILL ;DO }SCORE LDA #100 STA TEMP14 LDA #0 STA TEMP14+1 STA MCOLL1 JSR DCON RTS XSTART: LDA #1 STA TFLAG6 LDA #0 STA TF}LAG9 STA TFLAG7 ;SCROLL UP TITLE XST1: LDA FLAG10 BEQ XST1 LDA #0 STA FLAG10 ;SCROLL UP SPACES LDA #1 STA T}FLAG9XST2: LDA FLAG10 BEQ XST2 ;WAIT FOR FIRE BUTTON TO BE PRESSED LDA #1 STA TFLAG7 LDA #0 STA TFLAG6 ;SET COL}OR2 LDA #44 STA COLOR2 ;PRINT THE MESSAGE" PRESS THE ;FIREBUTTON TO START." XST5: LDY #0XST3: LDA MESS2,Y STA (8}8),Y INY CPY #34 BNE XST3 ;WAIT FOR THE FIREBUTTON TO BE PRESS XST4: LDA STRIG0 BNE XST4 LDA #0 STA TFLAG7 STA TF}LAG1 JSR BOARD JSR PSCOR RTS ;START GAME OVER SEQUENCE ;KILL DOLLAR SIGN GAMEO: JSR DKILL LDA #1 STA TFLAG1 ;}WAIT FOR BALLOONS TO GET CLEAR GA4: LDA RCOUNT CMP #1 BNE GA4 LDA #1 STA TFLAG6 STA TFLAG9 LDA #0 STA TPOINT STA }TCOUNT ;SCROLL UP THREE FOR SPACES GA1: LDA TCOUNT CMP #4 BNE GA1 ;PRINT"GAME OVER" LDA #1 STA GFLAG1GA2: LDA }TCOUNT CMP #5 BNE GA2 ;PRINT MORE SPACES LDA #0 STA GFLAG1GA3: LDA TCOUNT CMP #23 BNE GA3 LDA #0 STA TFLAG6 }STA TFLAG9 LDA #1 STA TFLAG7 LDY #0 ;SET VALUES BACK TO DEFAULT LDA #3 STA PEMPB STA MEN LDA #130 STA PY2 STA P}Y3 ;SET PLATFORM BACK TO DEFAULT POS. LDA #180 STA PX3 LDA #LOW PM2 STA WORKP LDA #HIGH PM2 STA WORKP+1 LDX #2 } JSR CRA2 LDA #1 STA GFLAG3 STA PD3 JSR PDR1 LDA #17 STA LEVEL LDA #32 STA MPOINT LDA #0 STA CRITP STA MARK2 ST!}A MARK3 STA PD2 LDA #100 STA BNUMB LDA #255 STA PERMP STA PERMP+1 LDA #10 STA DNUMB ;SET SCORE BACK TO ZERO LDA"} #0 STA SCORE STA SCORE+1 STA SCORE+2 JMP XST5 LAB8: INCLUDE D:LEVEL.LNK LAB: INCLUDE D:LINK1.LNK ;GENERAL PURPO#}SE ERASE ROUTINECRASE: LDA #LOW PM0 STA WORKP LDA #HIGH PM0 STA WORKP+1 LDX #2CRA2: LDY #0 LDA #0CRA1: STA (WORKP),$}Y INY BNE CRA1 INC WORKP+1 DEX BNE CRA1 RTSLAB4: INCLUDE D:VBILINK.LNKLAB9: INCLUDE D:VBISUB.LNKLAB5: INCLUDE D:DOL%}LAR.LNKLAB6: INCLUDE D:FALLING.LNKLAB7: INCLUDE D:SCORE.LNKLAB4: INCLUDE D:PLATFORM.LNKLAB2: INCLUDE D:PMINT.LNKLAB3: IN&}CLUDE D:BDATA.LNKDE D:FALLING.LNKLAB7: INCLUDE D:SCORE.LNKLAB4: INCLUDE D:PLATFORM.LNKLAB2: INCLUDE D:PMINT.LNKLAB3: IN@L D D D E  DX J mB K CoҩҩP I iE Ư GI (}G YBLPCLPC" A D<гҍ҅ [HL^@إ  3B DK)  )}DHxLc@ A DK$ iELc@  A DK- iELc@x © \…P ©*}B @©4Lc@ G GI `ii`ä̹KȹKȹKХ GI G DK-L@K+}L@ iELPCLPC  3BL@ YBХЈLc@ҩ҅`ҩ` HB Hd ,}H`,LX" C I` HKȅǥ-}KKKKKf EK JK KąKdKKK KLB;KL@.}KL@;KL@ť$KKκK C D􅘩 HKL@ LX(κKKX HƠK/}KX(KKXKXK`K*` ΍K iD` iD` iD` iD΍KKK C` iD i0}D` iD`8KKK8KKKi K`` B V``B JKDDE V`S:P1}P:KbKP`e2`K Ki ΔKTKi ȑKi 2}ȑK)'#`ΓKKЍ KKЍХ` A ЅЅ`d3}` F \01ȑ&XY`LGΌKMKKʥLG A Aʍ A4}ii A५R^1Ƚ>Lɀ ȥLGǥ|L5}·KLdGKKIKL GKIK( ͙K6 )K( ͚KK6} 4HğмɩKɠiΉK;KˠBKKiΆK8KXYư7})҅LGҍ҅8 Lb䥓Ƶ(c` Kc I`cЄ3L8} `KzK ҩ A D樥ҭKKXμKνKK ҍ҅ BAK8K KŅK9}-K E J Kҍ҅`&eeeeiجKȵH)JJJJ Xh) ȑX嬋KX:}X`ζKVfKKK%KKKKi J JLIΕKK2KŬK I JηK`KKgK#K;}KKKi J MJ`ΖKK2KǬK I MJ`K`ȑ`δK`KKKK.<}`ΗKKεK`KKΘKKɳ`KKة`ԩЩ>/cde=}FfK恬K`KjK jKЍЍЍ`KЍЭKЭKЩ Ѝ Щv>}`<~~00``0000`0      $~<$f$~罥<?@ABCDEFGHII}%%*******************************%%* ULTIMATE GRAPHICS *%%* FILE CONVERTOR *%%* bJ}y Lee Brilliant, M.D. *%%* *%%* Copyright 1989 *%%* by ANALOG COMPK}UTING *%%******************************* A  ,,*** 10-500 BASIC SUBROUTINES FOR SPEED7<,4@`L}67,.7<,6-%@#6-%@(3"A)6-@)6-%@3 B2 @ <[+67M}$@2%@<$@2%B:,,.96-%@[AU+(+F:AU,,,$@F3"A(6-)6-%@3N} BP6-@"$Z @5d] 6.6-*-@@$4 B@Y67B:,%@,.7@O}<A(,] n'-@B:,"'' APxc7<%@,4'6-%@56-%@WAU+(+F:AUP},,,$@cESC-CNTL> J6-P:'A(,$6-&$A(26-%@5$JS&B OF 1ST GRAPHICM6-@:7,,6Q}-%@)!A(56-@C6-%@M B$,H!6-?:C:,!6-?:C:,$,,*** 500-900 CURSOR CONTROL SUBROUTINES)S}@"AU$"@''' A""@26-(+," A !@'* @2&@'T}%AAAAAA A0A@APA`ApA AP=!U}%!@H* @Q=6-+&@H,$@ A&@"66-?:A`<<<%@R<%@,@ A'V}$6-?:A`<<<<,$ AX!6-&@Y$Z A96-%@[$\!6-&W}@]$^ A16-%@_$b!6-&@c$l%@ 6-%@m$vX}!6-&@x$%@ 6-%@$&@!6-&@$ A6-Y}%@$&@!6-&@$ A6-%@$#" B0 # A^Z} B006($}USE  TO MOVE FRAME. USE ^(#TO GO BACK, TO SAVE GRAPHIC,S'(AND Š TO TOGGLE WIN[}DOW.3"@S(1 & 2 SELECT CURSOR LINES. A ?-(@ *-9(@?6-\}*)@41"@()"@E'6-&@1 A`>1"@))"@a'6-%@1 A`H"AU]}AR A\  6-f !6-p Az 6-+&%@,'@ $DIMENSION VARIABLES^}##@@K:hh;@,;A),;@,;Av,;@I,;@Q,;AC,;@C_},;@D,;A9,;A,ZZ6.Phh̍hˍhhhhhh͠ˍi(˥i`}cc67@,.P˭̭  `˪&L  L+L+bb67Aa,.Oa} Ls L+`   `FF6.:AW,C67A'<A',.>:AU,h56.+hhhhh͠`ͱj̐h6.,hhq}B%DOS SYSB*)DUP SYSBkSBBKCP M65BBBKCP OBJBBDATA LNKBHCLOWN AMAB'CLOWN OBJBzBCONVERT1BASB CONVERT2BASBDOLLAR LNKBFALLING LNKBiINVADERSBASBKLEVEL LNKB_LINK1 LNKB vPAGESIX LNKBPLATFORMLNKBPMINT LNKBSCORE LNKBVBILINK LNK"VBISUB LNKhhh͠`ͱ*˘̈#@@S:E6-F:A`,%AV$F:Aa,Y%@@r}pr%@F:%@,%@F:%@,M%@@)A;A @M@s}JAR@J(>:A%,% ULTIMATE GRAPHICS @(ԠϠĠ͠ (@( 1)MICt}ROPAINTER(62 SECTOR);( ( 2)GRAPHICS 8 SCREEN#(;( 3)PRINT SHOP ICON2(( 4)NEWSROOM(2(ԠϠu}ϠC(&( 1)MICROPAINTER(62 SECTOR))(C( 2)GRAPHICS 8 SCREEN2(( 3)PRINT SHOP ICON!(2( 4)NEWSROOM$v}A@ B0.C6-@6-@'6-@36-@ = AC6-8=6-@6-@'6w}-@36-@= ABAG[ (}3(%YOU CAN'T USE THE SAME FORMAT AS = B0G B0Q Ax}[ AL 6-TA@$'AR@-(}T("INSERT SOURCE DISK. PRESS ANY KEY.)@y}7'B1B1B3B57GET DIRECTORYF?AR B%(};(ENTER FILE NAME:?x4z}AGET FILE NAME''A A A@AP B00 B#(}ENTER SAVE FILE NAME:#{}4A 7-(%}INSERT ˠ DISK & PRESS ANY KEY.7 B0i)@:(%PRESS Π TO FORMAT & SAVE |}FILE,M(à TO QUIT.Z)@f"@'i%AUA0T B"(}FORMATTING DISKJAT@}}D:T B0 @''A`ApAA +@A?(@ YOU HA~}VE FINISHEDY(@ USINGd(@}(@ the(@T#(@ B(@} TAR@,,($PRESS RETURN FOR ANOTHER CONVERSION.)@"AU% }APMICROPAINTER GET! 6.D:67@,.!6.J B*@@4 B0 J(@}>:A%,4cA@*AF:@,?AF:@,QAcA@0>/6-?:C:h}0 V`,,"@, B/$ ##GR.8 GET SAME AS MICROPAINTER PS GETA,67B:,%@,. 2(}}A( A!-@$@2@247<%@,47'A A@P& AAp'& B/}/6-@:7%@,,%AV$@:7%@,,o-@AyA&) B@C67,.7@<A&,k6-@:7A'},,%AV$@:7A(,,o Y B@'67,.7@<@h,9AU@C B0 Y(@>:A%,%%6}-F:@,%AV$F:@,V-@Ar@D6-?:C:,:A%,O B3 A6- A#6-- A36-Q6-%AV$!6-%@-!A(96}-@G6-%@Q BH-@@(67@,.967Av,.H67@,.M B A}6-' A-6-7 A=6-G AM6-b 6-P:+&,'@,%@06-&%@86-$b6-C:,%@}@$+&@,%P:'@,m A/6-F:Ax,%AV$F:Ay,>6-F:A&,Y6-&P:'@,$@m"}AQ%.-@*6-?:C:,67@,.`6-F:@},%AV$F:@,p6-$@@%36 -$6-?:C:,<%-}Aq@>6-?:C:,<%6.7<%A}&,X67A',.>:%@,i67A(,.N  BP6-%@ X $(#NEWSROOM PUT)# A*#I"}@6-'6-36-@?6-@RI A0-#P!6-?:C:,:@`,d67@,.>:,|67@,.>:,67@<@,.#V6}-@ BP%6-@`667@,.G67A),.V67@,.#[67@,.>:%@,767@,.>:}%@,C"@O6-@[6-@#T67@,.>:,'67@,.>:,667@,.@ BPT A%A}#k-A%A(*67@,.;67A),.J67@,.S6.7,a6-%@k BP# #$}'D67@,.#67A),.267@,.DAp@'D 6-C:,#AsP:'AV,DAr&P:'AV},$AV$'YAyP:'AV,;Ax&P:'AV,$AVMAi@Y6-?:C:,,.'F:Aq,"@}$3'2 +/(DISK ERROR NUMBER F:Aq,28'/%AU+(+F:AU,,,$@/ BB'Ap@ B}*+@+F:A,"A6B10+(ERROR F:A,&\+l@#F:A,"Ap)(}K(FIL}E NOT FOUND! PRESS ٠U B0b)@l APf+T (}3(ERROR F:A,. PRESS ٠.= B0J)}@T AP+S' B00F(}ERROR F:A,. CORRECT AND PRESS ANY KEY.S)@+A`Ap}$,4 +1(FORMATTING ERROR. USE NEW DISK.42%2A@@96-@#@[2AP}@@o6-@#@2-@A $2. (}+(USE  &  T}HEN PRESS .$2D+@%@%@2/AAA @D$2<+@%@2'A}9A @<$,3DOS DIRECTORY-3 B0@@D:*.*BA@TAu}fAv@xAwAx@Ay(}634@47@<@ ,4FREEB}10@3'(7@<@,' B1J3-@ B*A@-$3PRINT SHOP DIRECTORY3Q (}} (6-Aa" BQ7@<@,4PRINT SHOP:CLK!B3P3o (}#(NOT A PRINT SHOP DISKK(#INSERT PRINT S}HOP GRAPHICS DISK ANDo(PRESS OR TO GO BACK.4 B04$)@$"AUB34"@''} A4 B3 &4u67@,. %67Av,. 467@,.F-@@_(Ǡ٠k6-}u B04!-AbA! B@:4P-@@2:6.7%@ <%@ ,P4X)4xB3}?4 B4D4QC67$@2%@<$@2%@2,.7%@<%@2,Q6-%@X4M  AU@}/AU@AAR@M6-b4 (}-@1-@@%(7@2$+%,%@<}@2$+%,%@, 7@2$+%@%,%@<@2$+%@%,%@,l4 v4kA@?(%}PR}ESS  &  FOR MORE TITLES, àk('TO GO BACK, & Π TO CHOOSE TITLE.4)@4."@'!A@$}$'. A4"AU$4!!"@a)"@EB44!! @()!@)B4@4Q"@()"@E}'!%@$56-%@$GA@$Q B44O"@))"@a%!36-&@$EA@$}O B44 B4@4DIRECTORY FOR NEWSROOM4J6-@ BJ7@<@,4SSI CLIP NEWSROOMB6}4n (}"(NOT A NEWSROOM DISK!J(#INSERT A NEWSROOM CLIP ART DISK ANDn(PRESS OR TO GO BACK.4 B04}$)@$"AUB54"@'' A4 B5  5e67@,. %67Av,. 467@,.}:(}L-@@e(Ǡ٠*5}6-@:7@(,,!6--6-@96-@2C @ UAU}@gAR@s6-} B4D:CONVERT1.BAS}}}RRS$:EORFN1FN2CALLROWROWCOLCOLLBYTRBYTWIDSTARSHIFLBUFFNFLASHIFT!} !} A> --%")@(, :6-%@@> !!"$@!}%@@P(+-$@%@!,'/+ 2,/5; 6--)6-?:C:,:AU,&&;@,;@,;@,s(>:A%!},"-@@C(USE DEVICE ID AND EXTENTERS.U-@@o(ENTER LOAD FILENAME:s$( (ENTER SAVE FI!}LENAME:$Y6-@GA7@<@,4BN)7@<@,4BNM6-@Y6-@1 @@!}$(-@@$)@( .S)@)@*)@7)@;G6-@S6-!}A98"-@)@" B-6-P:'@,%6-P:'@,-6-&Lw+@%@'A!}9A @C@q6-F:@,%AV$F:@,%@@$%w6-V$D:CONVERT2.BASA l ;----------------------------------- ;SOURCE CODE LINK FILE ;----------------------------------- ;MOVE DOLLAR SIGN ROUT%}INE ;FIRST TEST,IS IT ON BALLOON ;IF IT IS NOT ,DON'T MOVE ;IF IT IS, MOVE DOLLAR SIGNCDOLL: LDA TEMP10+1 BEQ DEXIT %}DEC DOLLY LDA DOLLY CMP #40 BNE DOLMO ;DOLLAR SIGN HAS REACHED ITS LIMIT DKILL: LDA #0 STA DMARK LDA #LOW PMI STA %}WORKP LDA #HIGH PMI STA WORKP+1 LDY #0 TYADK1: STA (WORKP),Y INY BNE DK1DEXIT: RTS ;MOVE DOLLAR SIGN DOLMO: LDA %}#13 STA DRMAX LDY DOLLY LDA #LOW PMI STA WORKP LDA #HIGH PMI STA WORKP+1 JSR PLMU LDA #0 STA TEMP10+1 RTS ;DRA%}W DOLLOR DRAD: LDA #LOW PMI STA WORKP LDA #HIGH PMI STA WORKP+1 ;REDRAW LDY #208;DOLLAR Y CORDINATE STY DOLLY L%}DX #0DRAD1: LDA DOLLAR,X STA (WORKP),Y INY INX CPX #11 BNE DRAD1 ;SET X CORDINATE LDY DOLLX LDX #4DRAD2: TYA S%}TA 53251,X INY INY DEX BNE DRAD2 RTSY INX CPX #11 BNE DRAD1 ;SET X CORDINATE LDY DOLLX LDX #4DRAD2: TYA S$, ;----------------------------------- ;SOURCE CODE LINK FILE ;----------------------------------- ;CLOWN WILL FALL TO BO)}TTOM OF SCREEN ;DRAW FALLING IMAGE FDEAD: LDY CY0 LDX #0FD1: LDA FDATA,X STA (PAD0),Y INY INX CPX #12 BNE FD1 ;S)}ET DISTORTION & VOLUME LDA #160+15 STA AUDC1 ;MOVE CLOWN TO BOTTOM OF SCREEN LDA #0 STA TFLAG8 FD2: JSR NDELAY )}LDA #2 JSR YMOVE INC TFLAG8 LDA TFLAG8 STA AUDF1 LDA CY0 CMP #250 BNE FD2 ;CLOWN HAS REACHED BOTTOM SUBTRACT ;)}ONE MAN FROM SCREEN LDA #0 LDY MPOINT STA (88),Y DEC MPOINT DEC MEN LDA MEN CMP #255 BNE FD3 ;GAME OVER MARKER )}FD4: LDA #0 STA AUDF1 STA AUDC1 STA MCOLL1 JSR GAMEO ;INIT. FOR DEFAULT SETUP OF CLOWN FD3: LDA #65 STA CX0 SEC )}LDA PY2 SBC #12 STA CY0 LDA #0 STA COMP STA CFALL LDA #3 STA PFORM STA EXD2 LDA #45 STA PX2 JSR CRASE JSR D)}RC JSR CORZ ;KILL SOUND LDA #0 STA AUDC1 STA AUDF1 STA MCOLL1 RTS STA EXD2 LDA #45 STA PX2 JSR CRASE JSR D(O34MISCLRPSCORTMBARLIMEMYLINSCROLCOARSINVESCORESCRSCRBBASEPAUSMOVMEMSMEMBOTROPROWLF-}FFCHANGSAUCEDLISDLVBLOFFHISCORMLANGDATMEMCLRBYTDAPCCMESELEVEXXD-} -}@ !"#-}$%&'()*+,-./0123-}4567 INVADERS.BAS(C) 1984 ROBIN SHERERZ A0X)6-?:C:,<%Ah<AU-}<AR,;A XF:A,AUA0Au@ -@6@<2@@-}@XAA%$@tAA%$@-@@  [%2@-}7AIA@[A@?B2I'B2P56-%@0? AP-}06-F:B2H,0 @)"@A%%2@`?6-F:A,&@G%@$+H:-},!?P,&@`6-F:A,&AX&@$k&@P:+%A $,'AV,O@% $&AV-}$F:@,a@@k#6-&@#6-$+,_,&@'/%@%@-,;/-}%@I,%@_/&@%@"7,&@$+,7/%@$+,,g -@U@P6-}@>2@@@U&B d2@g$6"AP@;6-@H$P:+F:A-},&@8&@$+,,'@,s6-@$P:+F:A,&&$@&@U,'@,6-$+,JS%67%%@(-}<%%@),.G67%%A<%%A,.S6-@T6-%@&P:'@,^[ 6.=:,@$@-}6@@M-@&B:,[(@h!! A)"@ArA6-@6-%@-}1-@ &A(@|p-@@4-@6@P2@@@T X l-}-@@p e -AP@P6@%<2@@@@ b2@e$-}X)6-?:C:,<%Ah<AU<AC,;A!XF:A,AUApAdAU;)6-?:C:,<%-}Ah<AU<AR,;Aw-AAP@J2@@P:+AP&,'@ ,sA-}A%P:+AP&,'@ ,w 96-&@"/B2H9 A @@!@-}-@A-@&Q(@ cB2HA(uAA(A@Ad-}$j?6-F:A,&@G%@$+H:,!?P,&@`6-F:A,&AY&@$j A`>>6-?:C:,>6-?:C:,>15,16,31,24,63,28,106,.}22,106,22,255,31,255,31,56,28,16,8 1-@9A-%Ah%A1 G A`+@$! Ap3AY.}GAV%@0@@70@@@Q0@@@k0@@. }@0@@36-6-@'6-36-IAY;6-?:C:,<%A.!}h<AU<A@,I6-%@6-?:C:,,M%6-F:A`,%F:Aa,$AV1?%@M%@."}%@@c6-F:%@,%@DA%@F:%@,%+!AU,c%@&AV$+!AU,.#}O-@@ %%@") =-@$@PK%@O --6-F:@,%F:@,$AV%A.$}S%@!@x0%@#P:'AV,S%@"&P:'AV,$AVe%@1@x:%@3P:+%A.%} ,'AV,e%@2%A &F:%@3,$AVe%@A@x:%@CP:+%A@,'AV,e%@B.&}%A@&F:%@C,$AV+%@Q@"+%@R@"M%@SAP)A;A.'}@MBBAY%@TA+%@U@pB%@VF:@,Y%@WF:@,E.(}%@X@e.%@YF:A`,E%@`F:Aa, % @6-% AQ)6-&@!@ .)})6-@96-%@-@5%@ %@"9 (::6-?:C:,<%@1%@$}(@1(By Craig Patchett & YouA-@"@#( HI SCORE:=-@7&B:=:,,@A(.-@.?}.(PRESS start TO BEGIN=-@"@ =(#(C) 1983 Educational Software, Inc.AY@4 F:B2y,.@}@Aa$XR F:@,&A(=@F:@,&A(RB7tF:@,b$Hq!6.h_.A} \b \`!$};MOVE PLATFORM TWO FIRST ;CHECK ITS SPEED, HAS IT REACHED ;ZERO YET MPLM: DEC PS2 BNE PLM6 ;GO DO PLATFORM THREE PL>}M1: LDA #LOW PM2 STA WORKP LDA #HIGH PM2 STA WORKP+1 ;SET SPEED BACK UP LDA PERMP STA PS2 ;FIND ITS DIRECTION >}PLMA: LDA PD2 BEQ PLUP ;MOVE IT DOWN ;CHECK TO SEE IF IT NEEDS TO REVERSE ;DIRECTION INC PY2 LDA PY2 CMP #200 B>}NE PLM2 LDA #0 STA PD2 BEQ PLMA PLM2: CLC LDA PY2 ADC #3 TAY JSR PLMD ;CHECK EXPAND FLAG LDA MARK2 BEQ EXPL1>} JSR EXRR EXPL1: JMP PLM6 ;CHECK TO SEE IF NEEDS TO REVERSE ;ITS DIRECTIONPLUP: DEC PY2 LDA PY2 CMP #50 BNE PLM3>} LDA #1 STA PD2 BNE PLMA PLM3: LDY PY2 JSR PLMU LDA MARK2 BEQ PLM6 JSR EXRR ;MOVE PLATFORM THREE ;CHECK ITS SP>}EED PLM6: DEC PS3 BEQ PLM7 RTS ;SET SPEED BACK UP PLM7: LDA PERMP+1 STA PS3 LDA #LOW PM3 STA WORKP LDA #HIGH P>}M3 STA WORKP+1 PLM8: LDA PD3 BEQ PLUP3 ;MOVE PLATFORM THREE DOWN INC PY3 LDA PY3 CMP #200 BNE PLM10 LDA #0 STA>} PD3 BEQ PLM8 PLM10: CLC LDA PY3 ADC #3 TAY JSR PLMD LDA MARK3 BEQ PLM15 JSR EXRR2 PLM15: RTS ;MOVE PLATFORM>} UP PLUP3: DEC PY3 LDA PY3 CMP #50 BNE PLM9 LDA #1 STA PD3 BNE PLM8 PLM9: LDY PY3 JSR PLMU LDA MARK3 BEQ PLM16>} JSR EXRR2 PLM16: RTS ;PHYSICAL MOVE PLATFORM ROUTINE ;MOVE UP Y-REGISTER CONTAINS ;PLATFORM Y-CORDINATE PLMU: LDX >}DRMAXPMU1: LDA (WORKP),Y DEY STA (WORKP),Y INY INY DEX BNE PMU1 RTS ;MOVE PLATFROM DOWN ;Y-REGISTER CONTAINS Y-CO>}RDINATE PLMD: LDX #6 DEYPMD1: LDA (WORKP),Y INY STA (WORKP),Y DEY DEY DEX BNE PMD1 RTS ;EXPAND OR CONTRACT PLAT>}FORM TWO ;CHECK ITS DIRECTION ;ON A 0 DECREASE EXPANSION ON A ;ONE INCREASE EXPANSION EXRR: DEC EXS2 BEQ EL8 RTS EL>}8: LDA EXPAN2 STA EXS2 EL2: LDA EXD2 BEQ EXDE ;INCREASE EXPANSION INC PX2 LDA PX2 CMP #46 BNE EL1 ;EXPANSION >}IS DONE FLIP DIRECTION LDA #0 STA EXD2 BEQ EL2 ;DO EXPANSION EL1: STA HPOSP2 RTS ;DECREASE PLATFORM TWO EXDE:>} DEC PX2 LDA PX2 CMP #19 ;DO DECREASE BNE EL1 ;IF DONE FLIP DIRECTION LDA #1 STA EXD2 BNE EL2 ;DO DECRESE>} ;EL4: STA HPOSP2 ; RTS ;EXPAND OR CONTRACT PLATFORM THREE EXRR2: DEC EXS3 BEQ ER1 RTS ;SET SPEED BACK UP ER1>}: LDA EXPAN3 STA EXS3 ;FIND ITS DIRECTION ;ON A 1 EXPAND, ON A 0 DECREASE ER2: LDA EXD3 BEQ EXDE2 ;INCREASE EXPANS>}ION DEC PX3 LDA PX3 CMP #179 BNE ER3 ;DONE, FLIP DIRECTION LDA #0 STA EXD3 BEQ ER2 ;DO EXPANSION ER3: STA >}HPOSP3 RTS ;DECREASE PLATFORM EXDE2: INC PX3 LDA PX3 CMP #201 ;DO DECREASE BNE ER3 ;DONE, FLIP DIRECTION >}LDA #1 STA EXD3 BNE ER2 TFORM EXDE2: INC PX3 LDA PX3 CMP #201 ;DO DECREASE BNE ER3 ;DONE, FLIP DIRECTION < ;---------------------------------- ;SOURCE CODE LINK FILE ;---------------------------------- ;SET UP ALL PLAYERS ON SB}CREEN PMINT: LDA #HIGH PMBASE STA 54279 ;ENABLE PM GRAPHICS LDA #3 STA 53277 ;SET FOR SINGLE LINE RES. LDA #6B}2 STA 559 ;CLEAR OUT PM ALL PM MEMORY LDA #LOW PMI STA WORKP LDA #HIGH PMI STA WORKP+1 LDY #0 LDX #6 TYACL1: STB}A (WORKP),Y INY BNE CL1 INC WORKP+1 DEX BNE CL1 ;SET UP CLOWN ;SET PLAYER 0 ADDRESS IN ZERO PAGE LDA #LOW PM0 STB}A PAD0 LDA #HIGH PM0 STA PAD0+1 ;SET PLAYER 1 ADDRESS IN ZER0 PAGE LDA #LOW PM1 STA PAD1 LDA #HIGH PM1 STA PAD1+1B} ;SET THE CLOWN'S COLOR LDA #64+6 STA 704 ;SET CLOWN'S LEGS COLOR LDA #128+4 STA 705 ;DRAW BOTH PLATFORMS PB}DR1: LDA #LOW PM2 STA WORKP LDA #HIGH PM2 STA WORKP+1 ;INCREMENT MSB TO GET TO PLAYER 2 LDY PY2 LDX #3 LDA #255DRB}1: STA (WORKP),Y INY DEX BNE DR1 ;DO PLAYER THREE INC WORKP+1 LDY PY3 LDX #3DR2: STA (WORKP),Y INY DEX BNE DR2B} LDA GFLAG3 BEQ DRC RTS ;DRAW CLOWN DRC: LDY CY0 LDX #0 DR3: LDA PDATA,X STA (PAD0),Y INY INX CPX #12 BNE DB}R3 DEY DEY ;DO LEGS DR4: LDA PDATA,X STA (PAD1),Y INY INX CPX #16 BNE DR4 ;SET ALL CORDINATES TO ZERO LDAB} #0 STA HPOSP0 STA HPOSP1 STA HPOSP2 STA HPOSP3 RTS ;SET HORIZONTAL POSITIONS OF CLOWN ;AND PLATFORMS.ALSO,SET PLATFB}ORMS ;SIZE CORZ: LDA CX0 STA HPOSP0 STA HPOSP1 ;SET HORIZONTAL POSITIONS OF PLAYER ;TWO & THREE ;TWO LDA PX2 B}STA HPOSP2 ;THREE LDA PX3 STA HPOSP3 ;EXPAND PLATFORMS TO MAXIMUM SIZE LDA #3 STA 53258 STA 53259 ;SET COB}LOR OF PLAYERS LDA #112+6 STA 706;PLAYER TWO STA 707;PLAYER THREE RTS LDA #3 STA 53258 STA 53259 ;SET CO@P ;----------------------------------- ;SOURCE CODE LINK FILE ;----------------------------------- ;CONVERT INTEGER TO DECF}IMAL ;TWO BYTE FORMATDCON: LDA #0 STA TEMP13 STA TEMP13+1 LDX #15 CLCDCON1: ASL TEMP14 ROL TEMP14+1 SED LDA TEF}MP13 ADC TEMP13 STA TEMP13 LDA TEMP13+1 ADC TEMP13+1 STA TEMP13+1 CLD DEX BPL DCON1 ;SCORING ROUTINE ;TEMP13 & F}TEMP13+1 CONTAIN SCORE ;ADDED TO SCORE BYTES CLC SED ;LOWEST BYTE LDA TEMP13 ADC SCORE+2 STA SCORE+2 ;MIDDLE F}BYTE LDA SCORE+1 ADC TEMP13+1 STA SCORE+1 ;HI BYTE LDA SCORE ADC #0 STA SCORE CLD ;PRINT SCORE TO SCREEN F}PSCOR: LDY SPOINT DEY LDX #0 PS1: INY LDA SCORE,X PHA AND #240 LSR A LSR A LSR A LSR A ORA #16 STA (88),Y ;LF}OW BYTE PLA AND #15 ORA #16 INY STA (88),Y INX CPX #3 BNE PS1 ;SURPRESS ZERO LDY SPOINT LDX #3PRX2: LDA (88F}),Y CMP #16 BNE PRX3 LDA #0 STA (88),Y INY DEX BNE PRX2 PRX3: RTS URPRESS ZERO LDY SPOINT LDX #3PRX2: LDA (88DM ;---------------------------------- ;SOURCE CODE LINK FILE ;---------------------------------- ;LINK VBI STAGE TWO & SEJ}T ;BIT 5 OF DISLIST LINES THAT ;ARE TO BE SCROLLED VERTICALY LINKVBI: LDY #LOW ADDR LDX #HIGH ADDR LDA #7 JSR SETVBV J} ;SET DISPLAY LIST BIT 5 LDA DLIST STA WORKP LDA DLIST+1 STA WORKP+1 ;DO IT LDY #6 LDA #0 STA (WORKP),Y INY STJ}A (WORKP),Y LDY #8 LDA #38DL1: STA (WORKP),Y INY CPY #29 BNE DL1 ;RESET SCREEN ADDRESS LDA 88 STA SCREEN LDA 89J} STA SCREEN+1 RTS #38DL1: STA (WORKP),Y INY CPY #29 BNE DL1 ;RESET SCREEN ADDRESS LDA 88 STA SCREEN LDA 89H ;----------------------------------- ;SOURCE CODE LINK FILE ;----------------------------------- ;VBI SUBROUTINE, TO BEN} PREFORMED ;EVERY 1/60 OF A SECOND ADDR: LDA TFLAG7 BEQ XADR JMP SEXIT XADR: DEC BCOUNT BNE EXIT LDA #0 STA 77 N} LDA PEMPB STA BCOUNT LDA #1 STA TEMP10+1 STA TFLAG2 INC COUNT LDA COUNT CMP #8 BEQ COARSE ;DO FINE SCROLL N}STA VSCROLEXIT: JMP XSOUND ;DO COARSE SCROLL WITH WRAP ;ERASE TOP ROW OF BYTES COARSE: JSR ADD20 JSR ADD20 LDA SCRN}EEN STA BX LDA SCREEN+1 STA BX+1 ;SET SCREEN ONE LOWER THAN BX ;SET COUNT & VSCROL TO ZERO LDA #0 STA COUNT STAN} VSCROL JSR ADD20 LDY #0 LDX #0 ;MOVE REST OF SCREEN UP BY ONE SV2: LDA (SCREEN),Y STA (BX),Y INY CPY #20 BNE SN}V2 ;ADD 20 TO BX CLC LDA BX ADC #20 STA BX LDA BX+1 ADC #0 STA BX+1 ;ADD 20 TO SCREEN JSR ADD20 LDY #0 N}INX CPX #22 BNE SV2 ;CHECK FOR TITLE SCREEN ;IF COUNTER EQUALS ZERO, THEN ;PICK RANDOM BALLOONS,PUT THEM IN ;SBULL1,PN}UT THEIR TAILS IN SBUFF2 ;AND PUT A SPACE IN SBUFF3. ;IF COUNTER DOESN'T EQUAL ZERO ;PUT NEXT SBUFF LINE AT BOTTOM OF ;SCN}REEN. LDA GFLAG1 BEQ XAD BNE GAM1XAD: LDA TFLAG6 BEQ XADR1 LDA TFLAG9 BNE XZERO ;SCROLL UP TITLE LDY #0XADN}R2: LDX TPOINT LDA CRED,X CMP #128 BEQ XOUT STA (BX),Y INY INC TPOINT BNE XADR2 XOUT: CPY #0 BNE XOUT1 LDA #0 TN}AYXOUT2: STA (BX),Y INY CPY #20 BNE XOUT2 XOUT1: INC TCOUNT INC TPOINT LDA TCOUNT CMP #7;NUMBER OF LINES TO SCROLL N}BNE XADR3 LDA #1 STA FLAG10 XADR3: JMP PT2 ;PRINT ZEROS XZERO: LDY #0 LDA #0XZ1: STA (BX),Y INY CPY #20 BNE XN}Z1 INC TCOUNT LDA TCOUNT CMP #20 BNE XADR3 LDA #1 STA FLAG10 BNE XADR3 ;GAME OVER SUB GAM1: LDY #0GAM2: LDA OVN}ER,Y STA (BX),Y INY CPY #14 BNE GAM2 INC TCOUNT BNE XADR3 XADR1: DEC RCOUNT BEQ SHD1 JMP RAN3 ;FIND OUT IF BALN}LOON START OUT ;ON AN ODD OR EVEN NUMBER SHD1: LDA OFLAG BPL RAN8 ;EVEN NUMBER LDA #4 STA BMIN LDA #16 STA BMAN}X LDA OFLAG EOR #128 STA OFLAG JMP RAN9 ;ODD NUMBER RAN8: LDA #5 STA BMIN LDA #17 STA BMAX LDA OFLAG EON}R #128 STA OFLAG ;CLEAR OUT SBUFF1-3 RAN9: LDX #0 LDA #0G1: STA SBUFF1,X INX CPX #40 BNE G1 ;PICK RANDOM BALLOON}NS FOR SBUFF1 LDY BMINRAN1: LDA RANDOM CMP BNUMB BCS RAN2 ;PICKED A BALLOON, PICK ITS COLOR LDA RANDOM AND #3 TN}AX LDA BCOLOR,X STA SBUFF1,Y ;PUT ITS TAIL IN SBUFF2 LDA #130 STA SBUFF2,Y ;PUT A SPACE IN SBUFF3 LDA #0 STA N}SBUFF3,Y ;CHECK TO IF DOLLOAR SIGN SHOULD BE ;PUT ON SCREEN LDA DMARK BNE RAN2 LDA TFLAG1 BNE RAN2 ;CHECK RANDN}OM LDA RANDOM CMP DNUMB BCS RAN2 ;PUT DOLLAR SIGN ON SCREEN ;FIND X CORDINATE LDA DOLCOR,Y STA DOLLX LDA #1 STN}A DMARK STY TEMP10 JSR DRAD LDY TEMP10 ;IF NO BALLOON PUT A SPACE THERE RAN2: INY INY CPY BMAX BNE RAN1 ;DONE,TN}HE SET BPOINT BACK TO ZERO ;AND SET RCOUNT TO 3 LDA #0 STA BPOINT LDA #3 STA RCOUNT ;DISPLAY NEXT SBUFF LINE RANN}3: LDX BPOINT LDY #0SV3: LDA SBUFF1,X STA (BX),Y INY INX CPY #20 BNE SV3 ;INCREMENT BPOINT BY 20 CLC LDA BPOINTN} ADC #20 STA BPOINT ;CHECK TO SEE IF TEMP=0 ;IF IT DOES, THEN PUT NEW IMAGE DEC TEMP BNE PT2 LDA #5 STA TEMP N} ;PUT NEW IMAGE IN STRING LDX COUNT+1 LDY #0PT1: LDA STRING,X STA (TAILAD),Y INX INY CPY #8 BNE PT1 ;INCREASE STN}RING ADDRESS BY 8 LDA FLAG CMP #0 BEQ LEFT ;RIGHT, ADD 8 TO COUNT+1 LDA COUNT+1 CMP #24 BEQ PT4 CLC ADC #8 STN}A COUNT+1 BPL PT2PT4: DEC FLAG BEQ PT2 ;LEFT, SUBTRACT 8 FROM COUNT+1 LEFT: LDA COUNT+1 BEQ PT3 SEC SBC #8 STA CON}UNT+1 BPL PT2PT3: INC FLAG ;RESET SCREEN ADDRESS PT2: LDA 88 STA SCREEN LDA 89 STA SCREEN+1 ;DO SOUND EFFECT.CLON}WN HITTING ;BALLOON XSOUND: LDA TFLAG5 BEQ XS1 DEC SOUND1 BEQ SOFF LDA SOUND1+1 AND #240 ORA SOUND1 STA AUDC1 N}STA SOUND1+1 JMP XS1 SOFF: LDA #0 STA AUDF1 STA AUDC1 STA TFLAG5 ;DO SOUND EFFECT CLOWN HITTING ;DOLLAR SIGN XS1:N} LDA TFLAG4 BEQ SEXIT SEC LDA SOUND2 SBC #10 STA SOUND2 STA AUDF2 BNE SEXIT LDA #0 STA TFLAG4 STA AUDC2SEXIT:N} JMP XITVBV BEQ SEXIT SEC LDA SOUND2 SBC #10 STA SOUND2 STA AUDF2 BNE SEXIT LDA #0 STA TFLAG4 STA AUDC2SEXIT:L ,