@L|}6CD l0C)HCC WhL/h `CmCDiD`  R@W1  Y0@R !L` D  C D     )16CS S)  C)D1 p p 0 C9DI pCDL~CiCDiD` D  C D     )16CS S)  C)D1 p p }0 C9DI pCDL~CiCDiD` DD˙` d J)L !}D L(( LL()  L| L( S LH 0p n  } CY?  q  L L  ` )} `A! d߰")-݆ "  $G@LLL&0") $G% }H0 3S8`G ȱG ȱG   Gȭ Gȭ GG}GHiH8(()) G$H% `(0 })8` d)L ݆ & LGȘ ݆LL d  ! LL d)N>Q  HH) }  hyhyB q L> Lm JJ  Ln*` dB%' }8  H H` 1 { LL   !L     Hh SY?  q  1L }  !? S   q 1 L   Ll  Lg E`L   !L)  q 1L}) `L0AM݊L݉ ML  N݆LLLNLMLHG!@}1F GȱGLLEEȩÑEȑEEȑE Ed E7EȩE  q} L !,0,0SGɛ L 1 !L EHEh W G gLLSROTCES EERF } G) *Gȩ GȽG GȌd q q G`  8   0G  `D}CEDC0X:Ȣ Y ȱC* ? 0.. , 0%n ?A[ 0 : L`L  `, 0`Y}`piH n0)բY? 08`0 }  0$L GGȽG L `8L`L}8`  05G)݁,G)ȱGȱGHh0})Hh` B! 8`8iiiLE`}E8FEh( l0`ɃLL L8^~jj8jHi hEEEiEȱEiE` dTE} H8EEȱEEȩEh J E8   . m  i`LI!)E1FR}1LJ舩9GIH`LJJ`HGHh l`} S gL   8 rii `дCDCG W  }C  Lq` X٨`DOS SYS IIIIIIIIIIIIIIIC`0 ߩ0}}} HE |||||DOS DOSDOS SYS }}}}CDOS SYS} 0`BDELV !B }`LVUQ   ]   TU J ]L!T  #      TU  } L ? .  t`GBJ V~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI   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;DELV䌚 !B y`@ʆ 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 V (` 9 V⪍ ઍ  -'}LLu DEHILV 9 .l 9 .l  `` s$B VBH(}I|DE V BLV nB,DE J V* \*` B V BLVDEHI BLVL)}1 3u H232435; 1 ;  hh@2 e1i1LHҍ 00) 08 109hh@ Ҡ2e*}1i1232435ޥ<<8}45 GOTO 1701030 DATA 27A9209D0001CA10FAA99B8D260160ADF006850AADF106850BADF206850CADF306850D4C74E440015780000130,596uO)=JXJYPP@@ j +@%9@,9@-},9-@@?"H68,-Q68,-U jREAD JOYSTICK DATA771,1,1,-1,1,0,0,0,-1,1,-1,-1,-1,0,0,0,0,1,0,-1,.}0,0.6-@@6-@ .INITIAL POSITION(6 @,"6-R:,6"@@@2( ,(/}ERASE OLD POSITION<$6-%8,6-%8,$MOVE DOTF+!@y6-+SCREEN LIMITSP 6-@y0}Z!@96-d 6-@9n @@ D:G4MOVE.BAS j +@%9@,9@W********************* ** NO-FRILLS CURSOR ** FOR B 2}ASIC-XL ** TOM HUDSON ** ANALOG COMPUTING ** ********************* s-A 3}VAd"!% :AF:@,OAF:@,a@s@@)&(}PRESS 4} TO INSTALL CURSOR)``169,1,133,13,169,0,133,12,169,0,141,7,212,169,1,141,111,2,162,1,160,35,169,7,32,92,228,169]]58 5},141,47,2,76,0,0,216,169,2,141,29,208,169,1,141,240,2,169,58,141,47,2,169,0,170,157,0``6,202,208,250,165,85,10,10,24,105, 6}48,141,2,208,165,84,10,10,10,24,105,39,168,169,240,153,0VV6,238,109,1,173,109,1,74,74,74,41,1,208,4,169,15,208,2,169,0,14 7}1,194,2,76,98,228D:ALTCURXL.BAS******************* ** NO-FRILLS CURSOR ** FOR B ( u'@@D:AMAC;-@@H)@L _*@A9}r*@@4u D:AMACFIX.BAS@D:AMAC;-@@H)@L _*@A.+,2HDATHEXLINDATLIDDBYTPASCHKSUTOTA@;} *** MICRODOS XL ***990,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0,10,11,12,13,14,15r;@<},9@",/-@"3"<68,-@ L6-A V#A` Ar( CHECKING DATA(86-%@(LINE=}:!"8B:,@AP2F%6-F:A,%F:A,$AV+C(LINE  MISSING!F<e-@@>}@36-@:7,,&@HO6-@:7%@,,&@He6-8,$@%8,F."@*@ $". @@P?}% 6-%!A %6-&AZ  ""@@d APn F:A,@APx@@}Z+("INSERT DISK WITH DOS, PRESS RETURN/Z@@ D:AUTORUN.SYSM(( WRITING FILE#6-@A}/6-A 9#AC AM @@(BAD DATA: LINE ccFFFF2F022F0200C03FD13FA040A900AA9D0040E8D0FAEEC73B}F88D0F160E202E302C03F0057FB57800300070607,78ddA91B850AA907850BAD1807F00218604C77E4010000AD00078D0803D003EE0903A9008D18078C}5418D04038544A9,577dd048D05038545AD19078D0A03AD1A078D0B03A9318D0003A9018D0103A9528D020320D907AD02048DE002AD0304,708ccD}8DE102200108A200B144C9FFD01420BF07B144C9FFD00620BF074C8207A9FF8546E8B144954620BF07E8E004D0,17ddF4A5468D9C07A5478D9D07B900E}048DFFFF20BF07AD9D07C549B00AEE9C07D0EBEE9D07D0E6AD9C07C54890EF20,908ddFA074C6607C8C443B00160A07DB14429038D0B03C8B1448D0A0F}30D0B03F0368A4820ED0730FBAC000788B14485,213$dd4368AAA00060A9408D0303A9078D06034C59E49848FC57F758200C0868A8A90B8DE202A9088DG}E302606CE20220,691.dd0C086CE002A9FF8543A9698D0A03A9018D0B03A9048D0503A9008D04038548A90A8549A94E8546A971854720ED,8568dd0H}7304DEE0A03A2008644A000B144F04030302920F02CE643A003B1448148E648C8C005D0F5B14438E9208146E6,818Bdd46D002E647C8C010D0EEA54618I}691D85469002E647A5441869108544CD0007F0B0D0BAB9486199C40288D0F7A9,362LddE88D3002A9608D3102A92C8D0002A9618D0102A9308DF402A9FJ}08D0ED4A900854485478548A9098D05D4A543F0,175Vdd09A024A260A907205CE4A9218D2F02A547F0FCA5480AAABD000A8D1907BD010A8D1A07A900AAK}A0A09D0020E8D0,737`ddFAEEEE5888D0F4F858FD58EE18074C74E40060FB60FFFF2F022F02000B604C61A200BD00E09D0030E8D0F7EE12,559jdd6L}0EE0F60AD0F60C9E2D0EA60A544D04AAD1FD06A6A902A6A9018AD78026A90126A901EAC8402F006AD1FD06AB0,941tdd40E647D03CA548C543B036E648M}A228A00098F00CA548F029C648A2D8A0FFA90A854986458446A9008D1FD0E644,591~ccA649BDD4603021E6498D05D4C9099004A9008544A5142903D00N}BADC40218690109088DC4024C62E4290F48ADF0,45dd601865458DF060ADF16065468DF160ADFB601865458DFB60ADFC6065468DFC60ADFE601865458O}DFE60ADFF6065,187dd468DFF60684C7960F0010203040506070809080706050403020100F9707070470E615073007033333333333392,993dd00P}D64AFC60F761717340713333333333331270461C6141E8600000EDE9E3F2EFE4EFF30000F8EC0000F5F000E4,487ddEFF7EE00E6E9F2E5000048AD0BDQ}4C940B004A904D008AD48618D19D0A9028D0AD48D04D46840680D852880E202,868ccE3020B600831D6313F33337F737373007E66667F67677F007F67R}676063637F007E66667777777F007F60607F70,77dd707F007F60607F707070007F63606F67677F007373737F737373007F1C1C1C1C1C7F000C0C0C0ES}0E6E7E006666,579dd6C7F676767003030307070707E00677F7F776767670067777F6F676767007F63636767677F007F63637F707070,832dd007T}F63636767677F077E66667F777777007F607F0373737F007F1C1C1C1C1C1C0067F861536267676767677F00,690dd676767676F3E1C006767676F7F7FU}67007373733E676767006767677F1C1C1C007F666C1837677FAA70BB700823,586dd090037212C34002C2F322400111918140403050380080A030B03DV}002E202E302ED07E002E10215080064FB64A0,224dd05B9486199C40288D0F7A9FF8D3002A9658D3102A002A200BD00E09D0040E8D0F7EE1B64EE1E64W}88D0ECA2D0BD,119dd56619D0741CAD0F7A9408DF402A9218D2F02AD1FD06A902D6AB0F7ADD665C934D004A931D0031869018DD6658D,545ddE06X}58DEC65291709808D5370A9008514A932C514D0FCF0CDA217A9009DA071CAD0FA2083644C4064A230A0D5A9,247 dd6520CC65A92420C165A92120C165Y}A0DFA96520CC65A903A00820C1653030A9009D4403A9609D4503A9549D4803,872ddA9029D4903A90B20C1653015A90C20C165300EA0EBA96520CC65AZ}92020C16510034C8865A9018D0A03A9008D0B,926cc038D0403A9638D0503A9528D02032053E410034C8865AD0F638DFC64F7651957AD10638D1A57AD[}0E63C902F011,94(ddA205BDC2719D8971CA10F7A980A27DD00FA205BDC8719D8971CA10F7A900A2FD8D00578EC657A9578D0203A957,8742dd8D05\}032053E43048AD04031869808D04039003EE0503EE0A03AD0A03C904D0E3A9D08D0A03A9028D0B03AD0057,658<dd8D0803D003EE0903A9808D0303A90]}78D06032059E4300CA207BDD5719DA471CA10F7609848A90CA23020C16568,174Fdd85D4A90085D520AAD920E6D8A0FFC8B1F338E92099AA71B1F310F3^}297F38E92099AA71A206BDCE719DA271CA10,653PddF7609D4203989D4A032056E4609D4503989D4403600044313A442A2E5359539B44313A54454D502_}E544D509B44,491Zdd313A54454D502E544D502C44F8654F664F532E5359539B70707046246650473266504740665042007002020202,885ddd0202`}0202020202027046A07141FF650000000000A1AEA1ACAFA70000000000EDE9E3F2EFE4EFF30000F8EC0000,159ndd0000E3F2E5E1F4EFF200000000000a}0705F708080808080808080A9AEB3A5B2B480A6AFB2ADA1B4B4A5A4808080,249xdd80808080808080808080808080808080A4A9B3AB8080A9AEB4AF80b}808080808080808080808080808080808080,366dd80808080A4B2A9B6A58083918080808080808080808080808C70937080B3A5ACA5A3B480C570DA7c}0342F002328,280cc212E2725002429332B00243229362500030C71127180B3B4A1B2B48043715B71342F003732293425002C2F2124,95dd25320d}02F2E342F002429332B80719F71808080808080808080B3A9AEA7ACA580A4A5AEB3A9B4B9808080808080,348dd808080C271DC71B3A9AEA7ACA5A4AFe}B5A2ACA5E5F2F2EFF2808D8D00E4EFEEE5008DE002E10200640000000000,649D:MICRODOS.BASWC>d$X; BY WALT LORD (C)nX;x'X;--- OPERATING SYSTEM CONSTANTS ---'X;--- AND ADDRESSES ---g}X;ICCOMB;;I/O COMMANDICBADRD;;BUFFER ADDRICBLENH;;BUFFER LENGTHICAUX1J;;AUX 1X;X;VECTOR TAh}BLEX;DSKINVS;;DISK HANDLERCIOVV;;CIO HANDLERSIOVY;;SIO HANDLERSETVBV\;;SET VBI ADDRESSXITVi}BVb;;EXIT VBIWARMSVt;;WARM STARTCOLDSVw;;COLD START"DOSVEC ;;RUN DOS,INITADR;;DOS LOAD/INIT6Gj}OADR;;DOS LOAD/GO@ VDSLST;;DISPLAY LIST NMIJX;TX;SIO COMMAND BLOCK (DCB)^X;hDDEVICr DUNIT|DCOk}MNDDSTATSDBUFLODBUFHIDTIMLODBYTLODBYTHI  DAUX1  DAUX2 X;"l}RTCLKL;;LOWER BYTE OF CLOCKSOUNDRA;;QUIET I/O FLAG*SDMCTL/;;SHADOW SCREEN CONTROL REG.+SDLSTL0;;CONTAINm}S DISPLAY LIST ADDR.STICK0x;;STICK 0 SHADOWSTRIG0;;TRIG 0 SHADOWCOLORS;;COLOR 0 SHADOW&$CHBAS;;Cn}HAR SET ADDR HI BYTE0 CHRORG;;OS CHAR SET ADDR:"CONSOL;;CONSOLE BUTTON REGDHSCROL;;HORZ SCROLL REGNVSCRo}OL;;VERT SCROLL REGX(WSYNC ;;CAUSES WAIT FOR VERT SYNCb!VCOUNT ;;VERT LINE COUNTERlNMIEN;;NMI ENABLE REGp}vX;X;FLOATING POINT LOCATIONSX;FASC;;FLOAT->ASCIIIFP;;INT->FLOATFR0;;FLOAT VARIBLE!INBUFFq};;OUTPUT BUFFER PNTRX;)X;--- PROGRAM VARIBLES, CONSTANTS, ---)X;--- AND ADDRESSES ---X;%X;"BASE" r}IS THE DIFFERENCE BETWEEN&X;THE ASSEMBLED ADDRESS AND THE RUN&X;ADDRESS. USED BECAUSE MICRODOS XL$X;WILL OCCUPY THE LOCs}ATION OF DOS X;DURING OPERATION.X;  BASEP*X;4LOADADR;;LOAD ADDR>DIRTAB ;;DIRECTORY TBLHDSPDATpt};;DISPLAY DATAR*MAGLNDSPDATJ;;MAGNIFIED LINE ADDR\0STRTLNMAGLN;;START OF DIPLAY FILE NAMESf!BUFFER;;INPUTu} BUFFER ADDRp CHSET1;;CHARSET LOAD ADDRz%TOPDOS2@;;LOMEM OF ATARI DOS 2 TOPOSS ;;LOMEM OF OSS DOS$CHSTADRv}0;;ADDR OF NEW CHARSET"SECBUFc;;TEMP SECTOR BUFFER!DNSYFLc;;DISK DENSITY FLAG!DOSLNKc;;LINKS TO DOS FILEw}X;'X;ZERO PAGE VARIBLES USED BY CREATORX;C"FILNUM ;;# FILES DISPLAYEDMOVFL ;;SCROLLING FLAGMOVx}CNT ;;DATA ADDR INC#INPFL ;;INPUT ACCEPTED FLAG'PROPTR ;;PROGRAM SELECTION PNTRVSCRL ;;VSCROL PNTRy}X;$+X;ZERO PAGE VARIBLES USED BY MICRODOS XL.X;8CB#ENDBUF ;;END OF BUFFER PNTRL!BFPNTR ;;POINTS TO BUFFEz}RV%MOVLOC ;;TEMP START MOVE ADDR`#ENDPTR ;;TEMP END MOVE ADDRjX;tX;*** PROGRAM START ***~X;X;TURN OFF SC{}REENX; SDMCTL X;?X;X;CLEAR MEMORYX;CLRMEM%>@ CLR1Q>>CLR2PTOPDOS29 2 HCLR|}2 #CLR2(12 HCLR1<:FX;P INITADRZ CLRMEMdX;n"X;SECTORS #1-3 (BOOT) AND #$2D0xX;LOADADRBASE!S}}ECLG BASE;;# BYTES/SECTOR  ;;LOAD 3 SECTORS LOADADR;;LOAD ADDR SETVEC;;INIT ADDRSETVEC BASEQ>4~}GETFILE;;SET DOSVECPDOSVEC;;TO GETFILEQ>5GETFILEPDOSVECQRSTFLG;;DOS RUNNING?FRESET;;YES, BRANCH,}:X;")RESET!COLDSV;;RESET PRESSED, RE-BOOT,X;6RSTFLG BASE@ ;;DOS RUN FLAGJSECLNK BASET ;;SECTOR L}INK TO FILE^X;hX;*** GET FILE ROUTINE ***rX;|GETFILE BASEQSECLG;;SET TO CORRECTPDBYTLO;;DENSITY FOR READ} HCONT0 #DBYTHI CONT0Q>PRSTFLG;;SET TO DOS RUNNINGPSOUNDR;;QUIET LOADX;X;SETUP DCBX; PDBUFLO }PBFPNTR Q>5BUFFER PDBUFHIPBFPNTR QSECLNK& PDAUX10QSECLNK: PDAUX2DQ>1N PDDEVICXQ>b PDUNI}TlQ> Rv PDCOMND PREFILL;;PRE-FILL BUFFERQBUFFER;;STORE LOAD ADDRPGOADR;;FOR GO ADDRQBUFFER PGOAD}R! RTRNST;;SET INITADR TO "RTS"X;X;GET LOAD ADDRESS ROUTINEX;GETADR BASE$> Q@BFPNTR7R> H}MOVADR  INCPTR Q@BFPNTR7 R>* HCONT14 INCPTR>!MOVADRBASEHX;R CONT1Q>\ PMOVLOCf2pX;z#X;MOVE L}OAD ADDRESS INTO PROGRAMX;MOVADRQ@BFPNTR7 PMOVLOC9 INCPTR2(> HMOVADR QMOVLOC PMOVPTRQMOVL}OCPMOVPTRX;X;MOVE DATA X; MOVERQBUFFER8 MOVPTR BASE$ P. INCPTR8 QMOVPTRB RENDPTR}L ETSTADRV CONT4#MOVPTR` HMOVERj #MOVPTRt HMOVER~ TSTADRQMOVPTR RENDPTR DCONT4 ' JPINIT;;END OF S}UBFILE, INITIALIZE !GETADR;;GET NEXT SUBFILE X; $X;ROUTINE TO INCREMENT THE Y REG. "X;IF END OF BUFFER, FILL BUFFER }X; INCPTR BASE 3 )ENDBUF EFLLBUF : X; #BUFFLEN ;;#BYTES/SECTOR - 3 FLLBUF%>};;GET SECTOR LINKS( }Q@BFPNTR72 M>< PDAUX2F 3P Q@BFPNTR7Z PDAUX1d LDAUX2n FRUNIT;;EOF? JUMP THRU GOADRx PREFILL BASE A 5 }CONT5 GETSEC;;GET SECTOR GCONT5;;ERROR, TRY AGAIN !%SECLG;;GET # BYTES IN SECTOR 1 Q@BFPNTR7 (PENDBUF;;STORE I}N END OF BUFFER PNTR 7 > %> : X; X;GET SECTOR ROUTINE X; GETSEC BASE" Q>@, PDSTATS6 Q>@ PDTIML}OJ !SIOVT X;^ X;JUMP THRU INIT ADDRESSh X;r JPINIT BASE| C 5 JINI 7 ? X; X;RESET INIT ADDRESS TO "RT}S" X; RTRNST BASE Q>4RTRN PINITADR Q>5RTRNBASE PINITADR RTRN: X; JINI BASE !@INITADR}:& X;0 X;INITIALIZE THEN RUN: X;D RUNIT JININ !@GOADR:X X;b X;*** MAINLINE ***l X;v MAINLN BASE Q>;;INIT }# OF FILES PFILNUM Q>i;;SET UP DCB PDAUX1 Q> PDAUX2 Q>5BUFFER PDBUFHI Q> PDBUFLO PENDPTR;;SET} DIRECTORY Q>5DIRTAB;;TABLE PNTR PENDPTR Q>4STRTLN;;SET SCREEN PNTR PMOVLOC Q>5STRTLN PMOVLOC* CONT}10 GETSEC;;GET SECTOR4 GENDDIR;;ERROR, GOTO END> #DAUX1;;INCREMENT SECTOR #H $>;;RESET BUFFER PNTRR &BFPNTR\ CONT}11%>f Q@BFPNTR7p FENDDIR;;ZERO? END.z GNEXDIR;;IF - THEN LOCKED M> ;;IF NOT LOCKED NEXT FNEXDIR;;DIRECTORY #}FILNUM;;FOUND, INC COUNT %> )CONT101Q@BFPNTR7;;STORE SECTOR PNTRS P@ENDPTR6 #ENDPTR 3 )> HCONT101 "CO}NT12Q@BFPNTR7;;DISPLAY NAME ; S> ;;CONVERT TO SCREEN DATA P@MOVLOC6 #MOVLOC HCONT13$#MOVLOC. CONT1338})>B HCONT12LQMOVLOC;;INC TO NEXT LINEV,`O>j PMOVLOCt DNEXDIR~#MOVLOC-NEXDIRQBFPNTR;;SET UP FOR NE}XT DIRECTORY,O> PBFPNTR RSECLGFCONT10;;END OF SECTORHCONT11;;NOT END, CONTINUEX;%ENDDIRQNEWCOL8;};STORE NEW COLORS PCOLORS81 HENDDIRQ>4DSPLST;;STORE NEW DL  PSDLSTL Q>5DSPLSTPSDLSTL(Q>4DSPLI;;PO}INT TO DLI2 PVDSLST< Q>5DSPLIFPVDSLSTPQ>0;;SET TO NEWZPCHBAS;;CHARACTER SETdQ>;;TURN ON DLIn PNMIENxQ}>;;CLEAR FLAGS PMOVFL PINPFL PPROPTRQ> ;;SET VSCROL PVSCROLQFILNUM;;ANY LOCKED FILES?FCONT14;;NO, B}RANCH %>4VBI;;INSTALL DEFERRED VBI $>5VBIQ> SETVBV$CONT14Q>!;;SET SCREEN TO NARROW PSDMCTL"GETINPTQ}INPFL;;WAIT FOR INPUTFGETINPT;;THRU DEF. VBIQPROPTR;;GET FILE PNTR"T?;;MULTIPLY * 2,>6"QDIRTAB9;;POINT INTO DIR}ECTORY@PSECLNK;;TABLE AND STOREJQDIRTAB9;;SECTOR LINKSTPSECLNK^Q>h>r%>|LOOP5PTOPOSS92 HLOO}P5 #LOOP51 HLOOP5#RSTFLG;;SET TO DOS DONE!WARMSV;;WARM STARTX;X;"DOS.SYS" FILEX;` =};;BINARY LOAD HEADER SDMCTL=SDMCTL ;;TURN OFF SCREEN MOVCHS=ENDDOSX;&$X;*** MOVE O.S. CHARACTER SET ***0}X;:MOVCHS$>DMV0QCHRORG9N PCHSTADR9X2bHMV0l #MV0v #MV0 QMV0R>;;TOP OF UPPER CASE?HMV0};;NO, CONTINUE :;;RETURNX;X;*** DEFERED VBI ***X;VBIQMOVFL;;SCROLLING?HCONTMV;;YES, CONTINUEQCONSOL;;}READ CONSOLW?W?DDOWN;;SELECT PRESSED?W? DUP;;OPTION PRESSEDQSTICK0;;READ STICK0 W?* DUP;;UP?4W?>D}DOWN;;DOWN?H%STRIG0;;STICK TRIGGERRFFOUND;;PRESSED?\QCONSOL;;START PRESSED?fW?pEEXIT;;NOTHING EXITzX;X;SE}LECTION IS MADEX;FOUND#INPFL;;SET FLAGHEXIT;;EXITX;X;SCROLL UPX; UPQPROPTR;;END OF PROGRAMS? RFIL}NUM EEXIT#PROPTR;;NO, INC POINTER$>(;;INC DSPDAT BY 40%>C;;SCROLL UP VALUES FSETMOVX;$X;SCROLL DOW}N.X;8!DOWNQPROPTR;;TOP OF PROGRAMSBFEXIT;;YES, EXITL"PROPTR;;DEC POINTERV$>(;;INC DSPDAT BY -40`%>jQ> ;};SCROLL DOWN VALUEStX;~X;STORE VALUES START SCROLLX;SETMOVPVSCRL &MOVCNT'MOVCNTQ>;;CLICK SPEAKER} PCONSOL#MOVFL;;SET MOVE FLAG"CONTMV$VSCRL;;GET NEXT VSCROLQSCRVAL9;;VALUEGINCDSP;;NEG? INC DSPDAT%STORE#}VSCRL;;POINT TO NEXT VALUEPVSCROL;;STORE INTO VSCROLR> ;;EQUALS 9? DEXIT;;NO, EXITQ>;;SET DONE SCROLL PMO}VFL(X;2#X;ROTATE COLOR AND EXIT DEF. VBI<X;FEXITQRTCLKLPM>Z HGONEd QCOLORSn,xO>L> PCOLORSG}ONE!XITVBVX;$X;INCREMENT DISPLAY DATA POINTERSX;%INCDSPM>;;MASK OFF VSCROL VALUE5;;STORE ITQDSPTR1;;TOP }OF WINDOW PNTR, OMOVCNT PDSPTR1QDSPTR1OMOVCNTPDSPTR1 QDSPTR2;;MAGNIFIED LINE PNTR",, OMO}VCNT6 PDSPTR2@QDSPTR2JOMOVCNTTPDSPTR2^&QDSPTR3;;BELOW MAGNIFIED LINE PNTRh,r OMOVCNT| PDSPTR3Q}DSPTR3OMOVCNTPDSPTR37;;RESTORE VSCROL VALUE!STORE;;GO STORE ITX;X;VSCROL VALUE TABLEX;(S}CRVAL ========= ! =========X;X;*** DISPLAY LIST ***X;DSPLST p=p=p=G} HEADLN P=s&DSPTR1 DSPDAT0 3=3=3=3=3=3=: =DDSPTR2 MAGLNN sXDSPTR3 DSPDAT@b 3=3}=3=3=3=3=l p=Fv FOOTLN A DSPLSTX;X;HEADING LINEX;HEADLN A A =AmicrodosA A A} =AxlAX;X;FOOTER LINEX;FOOTLN A A =AupA  A A =AdownA  A A* =AfireA4 A A>X};HX;DISPLAY LIST INTERRUPTRX;\ DSPLI5f QVCOUNTpR>@;;VCOUNT>=64z ED1;;YES.Q>;;SET HSCROL TO 4HD2X;"}D1QNEWCOL;;STORE FOOTER COLORP;;IN REGISTERQ>;;SET HSCROL TO 2D2PWSYNC;;- WSYNC - PHSCROL79X;}X;NEW COLORSX;NEWCOL h= ==( ENDDOS X;$ INITADR=INITADR. MOVCHS8X;BX;LX;CUSTOM CHARACTER }SETVX;` CHSET=CHSETjX;t"CHRSET ?=3=3==s=s=s=~ ~=f=f==g=g== =g=g=`=c=c== }~=f=f=w=w=w== =`=`==p=p== =`=`==p=p=p= =c=`=o=g=g== s=s=s==s=s}=s= =======  = = ===n=~==f f=l==g=g=g= 0=0=0=p=p=p=~= g==}=w=g=g=g= g=w==o=g=g=g= =c=c=g=g=g==  =c=c==p=p=p= =c=c=g=g=g==} ~=f=f==w=w=w=( =`===s=s==2 ========g< g=g=g=g=g==F g=g=g=g=o}=>==P g=g=g=o===g=Z s=s=s=>=g=g=g=d g=g=g=====n =f=l==7=g=xX; }p=p A(C) WALT LORD 1984AX;"X;LOAD SIO DCB FOR SECTOR #$2D0X; DBUFLO=DBUFHI  DAUX1=DAUX2} X; INITADR=INITADR GETSECX; GOADR=GOADR MAINLNX;"DOSLEN `,X;6 X;CREATOR PROGR}AM THAT WRITES@X;MICRODOS XL ONTO A DISKJX;Td^CREATE%>h"CR0QNEWCOL8;;STORE NEW COLORSr PCOLORS8|1HCR}0Q>4MNUDSPL;;STORE NEW DL PSDLSTLQ>5MNUDSPLPSDLSTL%> CR05$>!CR1QCHRORG9;;MOVE OS CHARSET P}TOPDOS292HCR1 #CR1 #CR11 HCR05$>&!CR2QCHRSET9;;MOVE CHARSET0PA9:0DHCR2NQ>@;;S}ET TO NEW CHARSETX PCHBASbQ>!;;NARROW SCREENl PSDMCTLvCRLOOPQCONSOL;;GET CONSOLW?;;START PRESSED?DWRITE;;YE}S,WRITE LOADERW?;;SELECT PRESSED? ECRLOOP"QSYSNAME;;GET CURRENT DISK# R> 4;;#=4?HCR42;;NO, SKIPQ> 1;;RES}ET TO 1 HCR43X;CR42,;;INCREMENT #O>%CR43PSYSNAME;;# IN REQ. NAMESPTMPNAME PRENAMEM>;;}MAKE SCREEN BYTE L>;;INVERSE VIDEO*PDRVMSG;;DISPLAY IT4 Q>;;WAIT FOR BUTTON RELEASE> PRTCLKLHQ>2RCR45RRTCL}KL\ HCR45f FCRLOOPpX;zWRITE$>;;CLEAR ERRMSGQ>CR5PERRLN90HCR5 WRITLDR !CRLOOPX;X;WRIT}E LOADER ON DISKX;"WRITLDR$>0;;SET TO CHANNEL #3%>4SYSNAME;;POINT TOQ>5SYSNAME;;"D:D*.SYS" STORADR;;STORE }POINTERQ>$;;LOAD UNLOCK COMMAND EXCCIO;;EXECUTE CIO COMMANDQ>!;;LOAD DELETE COMMAND$ EXCCIO;;EXECUTE CIO COMMA}ND.%>4TMPNAME;;POINT TO8Q>5TMPNAME;;"D:TEMP.TMP"B STORADR;;STORE PNTRSLQ>;;LOAD OPEN COMMANDV%>;;SET TO OUTP}UT` EXCCIO;;EXECUTE COMMANDj GERRJMP;;BRANCH IF CIO ERRORtQ>;;SET BUFFER ADDR~ PICBADR9Q>`PICBADR9Q>}4DOSLEN;;BUFFER LENGTH PICBLEN9 Q>5DOSLENPICBLEN9Q> ;;LOAD PUT CHAR COMMAND EXCCIO;;EXECUTE COMMAND G}ERRJMP;;BRANCH IF CIO ERRORQ> ;;LOAD CLOSE COMMAND EXCCIO;;EXECUTE COMMAND GERRJMP;;BRANCH IF CIO ERROR%>4REN}AME;;POINT TO #Q>5RENAME;;"D:TEMP.TMP,DOS.SYS" STORADR;;STORE PNTRSQ> ;;LOAD RENAME COMMAND( EXCCIO;;EXECUTE COM}MAND2IGOODCIO;;BRANCH IF CIO OK<)ERRJMP!ERRPRS;;JUMP TO ERROR ROUTINEFX;P GOODCIOQ>;;READ 1ST SECTORZ PDAUX1d}Q>n PDAUX2x PDBUFLO Q>5SECBUF PDBUFHIQ> R PDCOMND DSKINVIC0 !ERRPRSX; C0QDOSLNK;;DOS SECT}OR LINKSPSECLNKBASEQDOSLNKPSECLNKBASEQDNSYFL;;GET DENSITY FLAGR>;;DOUBLE DENSITY?FDBLDENS;};YES, BRANCH$>""CR4QSNGMSG9;;SET "SINGLE" MSG, PDENSMSG960@ICR4JQ>;;SET SINGLE VALUEST$>}^ HSTRDNSh}X;r!DBLDENS$>;;SET "DOUBLE" MSG|CR3QDBLMSG9 PDENSMSG90ICR3Q>;;SET DOUBLE VALUES$>,STRDNSPSECL}GBASE;;STORE SECTOR LENGTH!&BUFFLEN;;BYTES/SECTOR OFFSETQ> W;;WRITE 1ST SECTOR PDCOMNDQ>W PDBUFHIWRSEC }DSKINV GERRPRS #QDBUFLO;;ADVANCE TO NEXT SECTOR , O>& PDBUFLO0 DINSCT: #DBUFHID INSCT#DAUX1N QDAUX1X }R>b HWRSECl Q>;;WRITE SECTOR $2D0v PDAUX1 Q> PDAUX2 $QSECLGBASE;;IN DESIRED DENSITY PDBYTLO HC1 #}DBYTHI C1Q> PDSTATS Q> PDTIMLO SIOV GERRPRS $>!#C05QDONEMSG9;;PRINT "- DONE -" !PERRMSG9!}0 !IC05*!:4!X;>!X;PROCESS ERROR ROUTINEH!X;R!ERRPRSC;;STORE ERROR NUMBER\!5f!Q> ;;LOAD CLOSE COMMANDp!$>0;;SET }TO CHANNEL #3z! EXCCIO;;EXECUTE COMMAND!7;;RESTORE ERROR NUMBER!PFR0;;PROCESS ERROR!Q>! PFR0! IFP;;CONVERT} TO! FASC;;FLOAT.PNT->ASCII!%>!C153!Q@INBUFF7;;CONVERT ASCII!;;;TO SCREEN VALUES!S> ! PERRNUM8! Q@INBUF}F7"IC15"M>";$"S> ." PERRNUM88"$>B" C2QERRLTR9;;PRINT "ERROR -"L" PERRMSG9V"0`"IC2j":t"X;~"!EXCCIOPIC}COM9;;STORE COMMAND"C"PICAUX19;;STORE AUX BYTE" CIOV;;DO CIO":"X;"&STORADRPICBADR9;;STORE ADDRESS"C" PI}CBADR9":" "X;"X;FILE NAMES#X; #SYSNAME AD1:D*.SYSA=#TMPNAME AD1:TEMP.TMPA=#$RENAME AD1:TEMP.TMP,DOS}.SYSA=(#X;2#X;MENU DISPLAY LIST<#X;F#MNUDSPL p=p=p=FP# ANLHDGZ# P=Gd# MCRHDGn# P=Gx# CRTLN# P=B# } DSPDAT#' ===========# p=F# ERRLN# A# MNUDSPL#X;#X;HEADING LINES#X;#ANLHDG A} A# =AANALOGA# A A$MCRHDG A A$ =AmicrodosA$ A A"$ =AxlA,$CRTLN A A6$ =AcreatorA}@$ A AJ$X;T$X;DISPLAY DATA^$X;h$ DSPDATr$ =A INSERT FA|$ =AORMATTED A$ =A }DISK A$ =AINTO A$ =A DRIVE #A$DRVMSG =A1 A$X;$ ,$ =A SELECT }A$X;$ 1$ ATO CHANGE DISK DRIVE #A$X;$ 1$ =A START A%X;% 0% ATO WRITE LOADER ONTO DISKA&%X;0}% $:% =A AD%DENSMSG =ASINGLE AN% =ADENSITY AX%X;b%ERRLN l%ERRMSG v%ERRNUM} %X;% X;MESSAGES%X;%SNGMSG =ASINGLEA%DBLMSG =ADOUBLEA%ERRLTR =Aerror -A%DONEMSG =A-A% A} A% =AdoneA% A A% =A-A%X;% GOADR& CREATE &EM CONSTANTS ---'X;--- AND ADDRESSES ---D< R ALOAANNUALRATNUMBEROFYEARNUMBEROFPOINTMONTHLYINTERESTRATNUMBEROFPAYMENTPOINTSPAIFACTORMONTHLYPAYMENCO}SDEBTOTALAMORTIZATIOTOTALINTERESYEARLYINTERESYEARLYAMORTIZATIOMONTHLYINTERESMONTHLYAMORTIZATIOTOTALCOS} }d##*****************************n##* *x##* HOME MORTGAGE CA}LCULATOR *##* *##* WRITTEN JULY 1984 *##* *##* I}NPUT:LOAN AMOUNT-$ *##* INTEREST RATE-% *##* LENGTH OF LOAN-YRS *##* LOAN POINTS-% } *##* *##* OUTPUT:MONTHLY PAYMENT *##* POINTS PAID-$ *##* } TOTAL COST *##* INTEREST BY YEAR *##* AMORTIZATION BY YR *##* TOTAL INTEREST }*##* TOTAL AMORTIZATION *##* *"##*****************************,;@,6} +@%! HARDCOPY OR DISPLAY (H/D)%J##@@E:T6 4H@6@@}P:^%! AMOUNT OF MORTGAGE......%h5 4H5 @AMOUNT OF MORTGAGE = $r3! ANNUAL PERCENTAG}E RATE..%36-'A|< 4H< @ANNUAL PERCENTAGE RATE = $A%! LENGTH OF LOAN IN YEARS.%}4 4H4 @LENGTH OF LOAN IN YEARS= 3! NUMBER OF POINTS........%36-'A< 4H< @}NUMBER OF POINTS = $AΠӠ6-'@6-$@ -$٠}6-+@%,#6-$++$,'+&@,,6-P:+%>P,$A,6-'A̠Ԡ6-+}$,%9 @9 @MONTHLY PAYMENT WOULD BE :$&.. @POINTS PAID WOULD BE :$0.. @}TOTAL COST WOULD BE :$DԠΠN 6-X6-b6-l@ @@ @}$YEAR INTEREST AMORTIZATION v-@!6-"@!6-6--@@} 6-+$,6-P:+%>P,$A,6-'A 6-& 6-& 6-% 6-%  @} 6-% 6-%   6-% / @ @/ @TOTALS:*!! @INTEREST }$4!! @AMORTIZATION $>!! @COST $H@ & CALCULATE ANY MORE (Y/N)...*24Y=@}@%D:MORTGAGE.BASUMBEROFYEARNUMBEROFPOINTMONTHLYINTERESTRATNUMBEROFPAYMENTPOINTSPAIFACTORMONTHLYPAYMENCO;******************;* *;* Demon Birds *;* by *;* Dan Bullok *;* *;**** }**************;Data For Player 0BYTE ARRAY p0=[12 12 12 12 4 12 14 30 29 45 13 0 0 0 0 0 0 0 0 102 12 12 12 12 4 12 14 } 14 13 30 12 0 0 0 0 0 0 0 2 50 12 12 12 12 4 12 14 14 14 30 12 0 0 0 0 0 4 4 0 24 12 12 12 12 4 12 12 12 14 14 28 0 0 }0 0 0 0 0 48 6 48 48 48 48 32 48 112 120 184 180 176 0 0 0 0 0 0 0 0 102 48 48 48 48 32 48 112 112 176 120 48 0 0 0 0!} 0 0 0 64 76 48 48 48 48 32 48 112 112 112 120 48 0 0 0 0 0 32 32 0 24 48 48 48 48 32 48 48 48 112 112 56 0 0 0 0 0 0 0!} 12 96];Data For Player 1BYTE ARRAY p1=[0 0 0 0 4 12 14 30 29 13 12 12 28 28 20 50 34 34 34 102 0 0 0 0 4 12 14 14 13 !}14 8 12 12 12 28 24 20 20 18 50 0 0 0 0 4 12 14 14 14 14 8 12 12 28 28 8 12 12 8 24 0 0 0 0 4 12 12 12 14 14 12 12 12 !} 12 12 20 20 18 50 6 0 0 0 0 32 48 112 120 184 176 48 48 56 56 40 76 68 68 68 102 0 0 0 0 32 48 112 112 176 112 16 48 4!}8 48 56 24 40 40 72 76 0 0 0 0 32 48 112 112 112 112 16 48 48 56 56 16 48 48 16 24 0 0 0 0 32 48 48 48 112 112 48 48 48!} 48 48 40 40 72 76 96];Meteor DataBYTE ARRAY ball=[60 126 255 255 255 255 126 60], ball2(8),coordstore(30);!}Character SetBYTE ARRAY chset= [0 0 0 0 0 0 0 0 0 32 32 160 168 168 170 170 170 170 170 170 170 170 1!}70 170 0 128 128 128 162 170 170 170 128 128 128 136 136 168 170 170 0 0 0 0 0 0 170 170 0 0 2 34!} 42 170 170 170 0 2 2 2 34 42 42 170 0 0 0 2 2 34 42 170 0 5 85 1 1 1 0 0 20 9! }2 85 64 64 64 64 0 0 1 1 1 5 85 0 0 64 64 64 84 92 85 0 0 20 53 85 1 1 1 1 0 0 ! } 80 85 64 64 64 0 0 1 1 1 21 53 85 0 0 0 64 64 64 80 85 0 0 252 254 102 102 102 254 252 0 ! } 0 0 60 102 124 96 56 14 0 0 254 255 219 219 219 3 0 0 63 102 102 102 60 0 0 0 220 102 102 102 246! } 7 252 254 102 126 102 254 252 0 24 0 56 24 24 24 62 0 0 0 223 96 96 96 240 0 14 12 252 204 204 204 ! }119 0 0 0 62 96 60 6 252 0 0 195 60 60 60 195 0 0],chset2= [15 31 63 120 120 120 124 127 248 252!} 252 28 28 28 28 220 127 124 124 126 126 126 126 60 220 28 28 28 28 20 20 8 126 126 127 127 121 121 124 124!} 8 28 28 28 156 156 220 220 126 126 127 127 127 127 127 62 252 124 124 60 60 20 20 8 96 112 112 112 112 112 !}112 120 0 0 0 0 0 0 0 0 120 124 124 126 126 127 127 63 0 0 0 0 0 248 236 248 63 127 127 120 !}112 112 112 120 248 252 252 28 28 28 28 28 120 124 124 126 126 127 127 63 28 28 28 28 28 244 244 248 63 127!} 127 120 112 112 112 121 248 252 252 0 0 0 0 248 120 124 124 126 126 127 127 63 252 124 28 28 28 244 244 248!}];Notes for songBYTE ARRAY notes= [243 243 162 182 162 182 193 243],notes1= [162 96 108 121 108 121 128 162],dur=[10!} 10 30 6 6 6 10 20],increase=[2 0];y-positions of birdsBYTE ARRAY strafey= [10 11 12 13 14 15 16 17 18 19 19 19 19 1!}8 17 16 15 14 13 12 11 10 11 12 11 10 11 11 10 10 10 10 10 10 10 10 10 10 10 10 07 08 10 12 14 16 17 17 18 18 18 18 !}18 17 16 15 15 14 14 13 13 13 13 14 14 14 15 15 14 13 12 12 11 10 10 10 09 08 08 08 14 14 14 15 15 15 16 16 17 18!} 18 18 18 18 18 18 18 18 19 19 20 20 20 20 20 20 19 19 19 18 18 17 17 16 15 15 14 14 14 14 12 12 13 14 15 16 18 19 1!}9 20 20 19 19 18 16 15 14 13 12 12 13 13 14 15 16 17 18 18 18 18 18 18 18 16 15 14 13 12 12 12 14 14 14 14 15 16 !}16 17 18 18 19 19 19 19 19 18 18 17 17 17 17 17 17 18 18 19 19 19 19 19 18 17 17 16 16 15 15 14 14 14 14 14 15 16 16!} 16 17 17 18 18 18 19 19 19 20 20 19 19 19 19 18 18 17 17 16 16 16 15 15 15 15 15 15 14 14 14 14 14 14 14]BYTE ARR!}AY flapinc=[1 0], bexist(10)BYTE bcount,char1,char2,dieflag,bx, by,fallx,fally,fallflag,bflap;Miscellaneous variable!}sBYTE a,b,c,d,e,x=[100],y=[154], ctr=[0],dir,fx,fy,fireflag,df, mx=[10],my=[10],chad,men=[4], memory,gflag=[1!}];Hardware registersBYTE vcount=54283,colpf0=53270, colpf1=53271,colpf2=53272, colpf3=53273,wsync=54282, ch!}base=54281,random=53770, consol=53279,rtclock=20,ch=764CARD pmbase,ac,bc,cc,vdslst=512, dli1vec,score=[0],energy=!}[50]PROC Dli2();Changes color of text window to red[72 169 68 141 10212 141 24 208 169 0 141 23 208]vdslst=dli1vec[1! }04 64]RETURNPROC Dli1();Changes color of ground to Brown[72 169 20 141 10212 141 23 208]vdslst=Dli2[104 64]RETURN!!}INT FUNC DeltaX();Returns Delta-X value of stick(0)BYTE aaINT xxaa=Stick(0)IF aa>12 THEN xx=0ELSEIF aa<8 THEN xx=1!"} dir=80ELSE xx=-1 dir=0FIRETURN(xx)PROC Center(CARD cnum BYTE basx,basy);right-justifies numberIF cnum<1!#}0 THEN Position(basx,basy) PrintD(6,"0")ELSEIF cnum<100 THEN Position(basx-1,basy) PrintD(6,"0")ELSEIF cnum<1000 TH!$}EN Position(basx-2,basy) PrintD(6,"0")ELSE Position(basx-3,basy) PrintD(6," ")FIPrintCD(6,cnum)RETURNPROC Dela!%}y(CARD cnt);Delay LoopCARD cnntFOR cnnt=1 TO cnt DO ODRETURNPROC PMove(CARD pm,add BYTE plr,px,py,pix);M!&}oves Player;Variables passed:;pm: address of pmbase;add: address of source image;plr: # of player to move 0-3;px: x-!'}position of player;py: y-position of player;pix: number of bytes to movepx==+48py==+32 ;add screen margin offsetsac=p!(}m+1024+plr*256 ;add work spaceZero(ac+py-5,pix+10) ;clear area outMoveBlock(ac+py,add,pix)Poke(53248+plr,px)RETURNPROC!)} BirdPos (BYTE xpos,ypos,char1,char2);Puts Two bytes, char1 & char2;AT xpos, ypos on screenCARD scmem=88ac=scmem+!*}xpos+(ypos*40)Poke(ac,char1)Poke(ac+1,char2)RETURNPROC Song()FOR a=0 TO 7 DO ;eight notes in song b=notes(a) c=du!+}r(a) d=10 e=notes1(a) FOR ac=1 TO c*40 DO IF ac MOD 100=0 THEN d==-1 ;decrement volume FI Sound(0,b,1!,}0,d) Sound(1,e,10,d) OD Sound(0,0,0,0) Sound(1,0,0,0)ODRETURNPROC Init();Initialize chset,pmg & playfieldPo!-}ke(106,memory) ;reset top of memoryGraphics(0)Poke(559,0) ;turn ANTIC off;Display Listac=PeekC(560)FOR a=6 TO 24 DO Po!.}ke(ac+a,4) ;IR Mode 4ODPoke(ac+25,164) ;DLI & VSCROLL onPoke(ac+26,164)Poke(ac+27,34) ;VSCROLL SetPoke(ac+28,34);colors!/}Poke(706,30)Poke(707,14)Poke(708,68)Poke(709,12)Poke(710,128)Poke(712,128)Poke(752,1) ;cursor offPoke(82,0) ;Left mar!0}gin-0;Character Seta=Peek(106)-8chad=aPoke(106,a)Poke(756,a)FOR ac=0 TO 1023 DO b=Peek(57344+ac) Poke(a*256+ac,b)O!1}DMoveBlock(a*256+512,chset,224)MoveBlock(a*256+776,chset2,160);Player missile graphicsa==-16Poke(106,a)Poke(54279,a)Po!2}ke(53277,3)Poke(623,52)pmbase=a*256Zero(pmbase,2048);PlayfieldPosition(14,0)Print(" ");above is CTRL-Q R S T!3} U V W X Y ZPosition(0,21)Print("")Print("");above is CTRL B B D 23-E's F B BPos!4}ition(0,22)Print(" SCORE: 000000")PrintE(" MEN: 00")Print(" ENERGY: 00000")Center(score,13,22)Center(energy!5},14,23)Position(31,22)Print("0")PrintC(men);DLI'sdli1vec=Dli1vdslst=Dli1Poke(54286,192)Poke(559,62)FOR e=0 TO 19 DO !6};reset x & y values coordstore(e)=0 ODFOR e=20 TO 29 DO ;random wing flaps coordstore(e)=Rand(2) ODfallflag=0 ;disable !7}meteorRETURNPROC CntFire();Continue firingcc=PeekC(88)bc=fy*40+fxSound(0,fy+fy+180,10,fy/2)Poke(cc+bc,0) ;Erase Fir!8}eball;Check for Illegal coordinatesIF fx=2 OR fx=37 OR fy=2 THEN fireflag=0 Sound(0,0,0,0) RETURNFI;Increment posit!9}ionsfx==+dffy==-1cc=PeekC(88)bc=fy*40+fxc=Peek(cc+bc) ;Object under fireballPoke(cc+bc,219) ;fireball characterDelay(3!:}00)IF c THEN ;check what under fireball FOR e=0 TO 5 DO ;Which bird hit? IF bexist(e)=1 THEN a=coordstore(e) !;} b=coordstore(10+e) IF afx-2 AND fy=b THEN bexist(e)=0 BirdPos(a,b,0,0) P!<}Move(pmbase,ball2,3,fx*4, fy*8,8);put explosion Delay(200) FI FI OD Sound(0,150,8,10) D!=}elay(3000) ;Clear player 3 area Zero(pmbase+fy*8+1824,8) energy==+2 fireflag=0 Sound(0,0,0,0) score==+1 ;increase!>} score Poke(cc+bc,0)FIPoke(cc+bc,0)RETURNPROC Title();Prints out title pageGraphics(17)Poke(559,0);turn ANTIC off!?};Display listac=PeekC(560)Poke(ac+13,7)Poke(ac+15,4)Poke(ac+13,7)Poke(756,chad+2)Position(3,2)PrintD(6,"ABEFABIJMNQR"!@})Position(3,3)PrintD(6,"CDGHCDKLOPST")Position(5,5)PrintD(6,"PRESENTS")Position(4,8)PrintD(6," ")Position(3,!A}15)PrintD(6,"BY DAN BULLOK")Position(0,18)PrintD(6," press ")Position(5,10)PrintD(6," ")!B}PrintD(6,"");above=space INVERSE CTRL-I J 4spaces;CTRL-K L 4spaces CTRL-I J 4spaces;CTRL-K L 4spaces CTRL-I J 2spaces!C};PMG stuffPoke(53277,3)Poke(623,32)Poke(704,28)Poke(705,128)Poke(708,12)Poke(709,92)Poke(712,134)PMove(pmbase,p0,0,11!D}9,131,20)PMove(pmbase,p1,1,119,131,20)Poke(559,62);Turn ANTIC back onWHILE consol#6 DO colpf3=random ;flash start wsyn!E}c=0 ;wait for sync ;scroll colors in Demon Birds colpf2=128-vcount+(rtclock RSH 3) IF vcount=34 THEN chbase=chad !F} colpf0=26 ELSEIF vcount=41 THEN chbase=chad+2 ELSEIF vcount=58 THEN chbase=chad colpf0=68 ELSEIF vcount=6!G}5 THEN colpf0=168 FIODRETURNPROC GameOver();Game Over messageSndRst()gflag=1Poke(106,memory)Poke(623,4)Poke!H}(53277,0)Graphics(17)Poke(559,0)Poke(708,14)Poke(709,70)Poke(710,128)Poke(711,0)Poke(712,136)ac=PeekC(560)Poke(ac+9,!I}7) ;Graphics(2) at line 4Position(5,4)PrintDE(6,"")Position(4,10)PrintDE(6,"final ź")Position(7,12)PrintD!J}(6,"000000")Center(score,10,12)Position(4,18)PrintDE(6,"press ")Poke(559,34)WHILE consol#6 DO wsync=0 colpf3=vc!K}ount+rtclock/2ODRETURNPROC NewMan();Materialize New WizardZero(pmbase,2048)Poke(704,78) Poke(705,78)FOR a=0 TO 100 !L}STEP 2 DO FOR b=0 TO 7 DO ball2(b)=ball(b)&random Sound(1,a+a,8,a/10) OD PMove(pmbase,ball2,0,a,y,8) PMove(pm!M}base,ball2,1,200-a,y,8)ODZero(pmbase,2048) ;clear pm areab=10;materialize manFOR a=0 TO 20 STEP 2 DO b=10-a/2 PMove(!N}pmbase,p0+b,0,100,y+b,a) PMove(pmbase,p1+b,1,100,y+b,a) Poke(704,30-a/10) Poke(705,140-a/2) FOR c=0 TO 100+a*6 DO !O} d=255-c Sound(1,d,10,10-a/2) ODODSound(1,0,0,0)Poke(704,28)Poke(705,130)x=100y=154fireflag=0rtclock=0RETURN!P}PROC Die();Death of wizard;Puts player data in missile area;and blows player apart into 4 piecesBYTE ARRAY image(20)P!Q}oke(704,14)Poke(705,14);spins player aroundFOR a=0 TO 15 DO PMove(pmbase,p0+40,0,x,y,20) PMove(pmbase,p1+40,1,x,y,20)!R} Delay(1000) PMove(pmbase,p0+120,0,x,y,20) PMove(pmbase,p1+120,1,x,y,20) Delay(1000-a*30) Sound(0,155-a*10,10,a)OD!S}SndRst()Zero(pmbase,2048)FOR a=0 TO 20 DO image(a)=p0(a)%p1(a) ODFOR a=0 TO 20 DO image(a)=image(a) RSH 1 ODMoveBlo!T}ck(pmbase+800+y,image,20)Poke(711,14);blows player apartFOR a=0 TO 100 DO Poke(53254,x-a+48) Poke(53253,x-a/2+48) Po!U}ke(53252,x+a/2+48) Poke(53255,x+a+48) Sound(0,a/3,8,a/12) Delay(a)ODSndRst()RETURNPROC Move();move wizardctr==!V}+20 ;image counterIF ctr=80 THEN ctr=0 ;reset counter if too bigFIx=x+DeltaX()IF x<10 THEN x=10ELSEIF x>142 THEN x=142!W} FIIF DeltaX()=0 THEN ctr==-20 ;if player is not moving Delay(250) IF ctr>60 THEN ctr=60 FI ;If player stood still t!X}oo long, ;Make him sink in the mud IF rtclock>80 THEN Birdpos(x/4-1,21,0,0) Birdpos(x/4+1,21,0,0) SndRst() !Y} FOR c=0 TO 24 DO PMove(pmbase,p0,0,x,y+c,26-c) PMove(pmbase,p1,1,x,y+c,26-c) Delay(3000) Sound(0,c!Z}+150,10,5) OD Sound(0,0,0,0) dieflag=1 FIELSE Poke(20,0) PMove(pmbase,p0+ctr+dir,0,x,y,20) PMove(pmbase,![}p1+ctr+dir,1,x,y,20)FIIF ctr=40 AND DeltaX()#0 THEN ;click feet Poke(53279,0) Poke(53279,8)ELSE Delay(250)FIIF f!\}ireflag THEN CntFire()ELSEIF STrig(0)=0 THEN fireflag=1 fx=x/4+1 fy=20 df=DeltaX() energy==-1ELSE Delay(300)!]}FIRETURNPROC GetReady()Graphics(18)Position(5,5)PrintD(6,"GET ready")Poke(623,4) ;players behind playfieldsPoke(532!^}77,0)FOR ac=1 TO 20000 DO wsync=0 colpf0=128-vcount+rtclock RSH 2 colpf1=vcount+rtclock RSH 2ODRETURNPROC MainLoo!_}p() BYTE mcount,lum;Infinite LoopDO ;7 player moves to one bird move FOR mcount=1 TO 7 DO IF random<10 AND fallf!`}lag=0 THEN fallx=Rand(140)+10 ;drop meteor fally=10 fallflag=1 ELSEIF fallflag THEN fally==+5 !a} fallx==+Rand(5)-2 FOR b=0 TO 7 DO ;random ball ball2(b)=ball(b)&random OD PMove(pmbase,ball2,2,fallx,!b} fally,8) Sound(0,fally,8,fally/10) IF fally>170 THEN ;hit bottom? fallflag=0 Zero(pmb!c}ase+1536,256) Sound(0,0,0,0) FI FI Poke(53278,1) ;hitclr Move() Poke(711,random) ;flash bird ey!d}es ;kill wizard IF energy=65535 OR Peek(53252)=1 OR dieflag#0 OR Peek(53262)#0 THEN men==-1 !e}energy=20 SndRst() ;Turn birds off FOR e=0 TO 5 DO bexist(e)=0 BirdPos(coordstore(e), !f} coordstore(e+10),0,0) OD IF men=0 OR men>10 THEN gflag=0 EXIT ELSE IF di!g}eflag THEN dieflag=0 ELSE Die() FI rtclock=0 GetReady() Init() !q}B'DOS SYSB+UNICKFIXLSTB,G4MOVE BASB1ALTCURXLBASB8AMACFIX BASB,:MICRODOSBASBfMICRODOSASMBMORTGAGEBASB{BIRDS ACTBCCHECK1 BASB9CHECK2 BASBBOOT1 ASMBBOOT2 BASB BOOT3 ASMBBOOT4 BASBTWOGUN ASM Newman() Poke(20,0) FI FI OD IF gflag=0 THEN EXIT FI ;Shake earth e=Rand(4) Poke(5427!r}7,e) b=Rand(10) Sound(1,50+b*20,8,e+3) y=154-e PMove(pmbase,p0+ctr+dir,0,x,y,20) PMove(pmbase,p1+ctr+dir,1,x,y,20)!s} ;If a bird isn't on screen, ;put it there if random<30 FOR e=0 TO 5 DO IF bexist(e)=0 AND random<30 THEN bexi!t}st(e)=1 IF e MOD 2=0 THEN coordstore(e)=0 ELSE coordstore(e)=39 FI FI OD ;Center sc!u}ore and energy Center(score,13,22) Center(energy,14,23) Position(31,22) Print("0") PrintC(men) ;Start Key ends th!v}e game ;Option Key stops the program ;Any key pauses game IF consol=6 THEN EXIT ELSEIF consol=3 THEN Poke(106!w},memory) Graphics(0) Break() ELSEIF ch#255 THEN ch=255 WHILE ch=255 DO OD ch=255 rtclock=0 !x}FI ;Move all 6 birds FOR bcount=0 TO 5 DO bx=coordstore(bcount) by=coordstore(10+bcount) BirdPos(bx,by,0,0) !y} IF bexist(bcount)=1 THEN bflap=coordstore(20+bcount) char1=201+bflap+bflap+4* (bcount MOD 2) !z} char2=char1+1 bflap=flapinc(bflap) coordstore(20+bcount)=bflap bx==+increase(bcount MOD 2)-1 IF bx=4!{}0 THEN bx=0 FI IF bx=255 THEN bx=39 FI coordstore(bcount)=bx by=strafey(bcount*!|}40+bx) by=by coordstore(10+bcount)=by BirdPos(bx,by,char1,char2) FI ODODRETURNPROC Game()memor!}}y=Peek(106) ;Get top of memoryDO ;reset variables Men=4 Score=0 Energy=50 Init() Title() ;Title screen Init()!~} Song() Newman() Mainloop() ;play song when game is over Graphics(17) Poke(712,134) Poke(623,4) Poke(53277,0)!} Song() GameOver()ODRETURN ;play song when game is over Graphics(17) Poke(712,134) Poke(623,4) Poke(53277,0) !k,!@!KKKTEMPINLCOROKKKSNDIDATEFIRSTMOSNDKLASTMOFIRSTCCHNUMLASTCADOLFORMAAMOUNTLOAMNHIA%}MNPAYEE1BPRNDISBRPKMONTMONTHFILECHECKKAMNPAYEECMEMODEDEPAMNCHECCHAMND%} %} !"#%}$%&'()*+,-./012%}3 AD6-F:@,!A',6-&A(8@DB7t2$FAK:#AdA%}U5A@dAAP&6-F:Ad,&"AU@Z55"@9)"@`)"A)"A$@%}d )$x" 6-6."AdAU. AR"AU+AR.$"A&Ap%} 6-%!$- -%&(>:,#67<,.>:,- A0+ !(>:A&,6-&$(+6. !6.7<,%} A0/-B:,7<,0. ,67,..00/$$ B:,"$67%<%@",.00B:,"%67%<%,.%}0$82@P@'-@ + 528$82A@'-@%+ 528$,?%}AR-@ !('6-36-@ 96-?-6G -@'@#(5-@#@G( %}@ 46.00J 6.T.-B:,.7<,20)7<,39Ap^$ 6-A:,$!@Aph$ -%}( -($ Ar  -(  A|  -@ ( 6-'-@#@'( %}  46.12 6..-B:,.7<,20)7<,39AP( 6-A:,( )!@AP%} -( -($  -(  A.-@'("6-@'(6-.6-- -@"@%}-() 46.ANY6-6) A@B:, AP 6.+ -+7<,20)7<,3%}9AP 6-A:, - ( A`&   -(  Ap0-@'(6-:- -@"%}@-( D. 46.ANY$6-A. A0NB:, A@X 6.b+ -+7<,2%}0)7<,39A@l 6-A:, A@v - ($   -(  A`@-@ @(%}(6-@ 46-@:6-@-3  6--@"@3(# 46.0.00# A0%}5-B:,6.7,5+20)39,*0.A` 4.6- B:,!%A`  6.6-A:,%} )!AA`) -( -() Ap#  -( # A`(-@ @(%}(6-@ - -@"@-( & 46.9999.99& A@ ;-B:,;+7<,20%})7<,39,*7<,0.A*7<,4.6-4 B:,!%A> H 6.6-A:,R!AA%}f( -( !-%(($p#  -( # ApF-@ @((6-@ 46-@%}@6-@F-, -@#@,(  46.ANY) 6.-(7@#,"-%}&()$+ A Ap! A`+ A a-@ @"(7@,4-@ @A(7@,M-@%}a(ALL ENTRIES OK? "@:Y,A@:N,A `S-@ ( "-@ )( 5-@'>(%} J-@'S( -@ @"(7@1,4-@ @A(7@1,S-@ @`(7@#,l%}-@y(7@, A @-@(7@,K-@"@)( DO YOU WANT ;-@$@K( %}A PRINTOUT?" "@:Y,6-" A@@:N,A 5 +@ #AAD5A@@ %}-!(ƬԠ٠Ŭ'-@(ՠȠϠ$G-@'(ŠȬ3-@G( ΠOP%}TION.-A 85+ AA`)AR/6-56-B8 -5('ȣԠŠ%}Š8(L A@VT 3 3T3B CH# AMNT PAYEE MEMO DATE`UR3F------%}----------------------------------------------------------------U3j Bt -~@ @67<,.0667%}@ <@ ,.=:,@ Ap67<@ ,.=:," 4END " A!F:B2y,"%}! A`I A'6-A:7@5<@A,,56-A:7<,,? BI A0"6A@ A%} )!A )!A,6.7@<@4,,4ANYAp##B:,!B:,)7>3  CREDITS TOTALING $1-@ @#1(M=MENU S=SEARCH AGAIN %}"@:S,Ap@:M,A`F +@ -,( please insert2-F( program disk=-@$(%} Ӡ٠( 2 AP=%D:MENU(K:)(%D:MENU  AP%D:MENU1-@"%}-(PRESS ANY KEY TO CONTINUE1 )-@"-( ) AA +@-'( ͠3-@%}A(ԠQ-@(Š52A@C-AG Q2"-A  A%},6-@6-@'6-@36-@?6-@K6-@W6-@c6-@;@,;@c%},;,;@,;,;,6AA;,;@ ,;@ ,;@7,;@c,;@!,@# 6. 67@7,.#67,%}.J6. D:MONTH .DATT36-A 6-A'6-A`36-A^6-@06-@phN +@ -%},( please insert8-@N(your data diskrI-@$( into drive #10-@"E( Ӡ٠%}I |5 A& D:MONTH01.DAT+5 B! 6-6-6-6-!6-A+AY A6-F:A`%},%AV$F:Aa,%@#5 -% #AF5AU@EAAF!AR3A%}AH?@B(E(W-(%W(%W-(%|D%}ATE ||CHECK # |W(%W-(%|FROM: ||FROM: |W(%}%| TO: || TO: |--(%--(%%}--(%--(%|AMOUNT ||PAYEE |--(%%}--(%|FROM:$ ||> |--(%| TO:$ || |--(%%}--(%&+@!AY@4+ A @0T +@%} -@ 3(ˠҡ?-@T( PRESS ANY KEY:C2AP@'-A+ 529%} C ADK +@ --(search aborted9-@K( ӠN-@(͠X %}"@:M,Ab"@:S,Apl AvK+@-+( ӠӠ7-@K( microc%}heckY-@@'( ˡ=2A@K-AO Y2-A  A@%} D:CHECK1.BASTEMPINLCOROKKKSNDIDATEFIRSTMOSNDKLASTMOFIRSTCCHNUMLASTCADOLFORMAAMOUNTLOAMNHIA$NNNNNNNNNNN1N1N1N1N1N1N1N1N2TEMPMONTHFILECHECKCHECKNUMDATEPAYEEAMOUNTCMONTHDATB)}MEMOTEMPFILEBALANCEDIFEBALUCAMNTUCDAMNTINDEUNCAUCAMNUCDEUCDAMNDOLFORMABRKDISNDSTARSVDEBAMONTCOUNOLD)}AMOUNDI )})} !"#$%&'()*+,-)}./0123456789:;< )}6-6-@'6-@36-@?6-@K6-@W6-@c6-@o6-@{6-@ 6)}-@6-@6-@6-@6-@6-@6-@6-@6-@  A222)}A!-Au% /22$<-@ $PAK:#AdAU5A@dAA)}Z&6-F:Ad,&"AU@d5"@9)"@`+AdAU5 @n )$8 6-F:)},!A'&6-&A(,8B7t$/-B:,7<,0. ,67,..00/$ B:,"67%,.00)}B:,"%67%,.0$Š;,;@c,;,;,00;@!,;,;,;Ac,;@9)},33;@!,;,;,;,;,;,;,;,&67,. 67@9,.&67,.Q 6-6-6-6-!6)}--6-A`96-A0E6-@PK6-Q6-B+ -&( please insert,-B(your data diskI -)}( into drive #1*-@"?( Ӡ٠I @+ AP& D:MONTH01.DAT+" + '['6)}-F:A`,%F:Aa,$AV%/%7%C@O@[AR,G( A-=(ENDING BALAN)}CE AG6-6C A-@8"( .-@&?( WHICH MONTHC@ )!AJ6)}. D:MONTH .DATT.  67<,.0$67<,.=:,. A`^67<,.=:,h@r 4)}ENDA|8 6-%.67$@c&@b<$@c,.8 Ap;+ AY;6-F:A`,%AV$F:Aa)},%'&@p-%%#' EAA -AA9AEAAF)}AG*AR-*(C P=-@"#(* N)-=(M E6 -)}6((=-@!=(()AY@4)}-)(MONTH #: " (0( ϠӠҠӠȠ: A 6-6-6-&&6.7$@c&@b)}<$@c,L6.7<,6.7<,*6.7<@4,A6.7@5<@A,L6.7<,& -7<,0  & A@)}* 6.67&<,.*67<&,.7<&,1 -1(  $ 7<, 7<,&% 6-%6-%% *)}A0 6-: &!6-D -(=>NK:)X%%"*+@:N,*@:E,,Ab"@:)}C,Al"@:*,A v"@:M,A "@:P,AP"@:N,A"@:E,A )} A# 6-6-%!@"#6-!&$%6-) -( -(=>)B2y6-&%$ )}A$ 6-1$"@:*,A@F -(*<67$@c&@b<$@c&@b,.*F AF -()} <67$@c&@b<$@c&@b,. F A -&$%-( # 6-%6-$%#"A)} !6-6-6-  6- A(  A AY*( 6.67<,.TMP(4)}3 -/(7$@c&@b<$@c,3 >(ENDH@36.7,RF+ AY()}(F(XIO 32,#N1,N0,N0,>:@4,,\'( ((CONT-$AB'&fABp1"@:N,6-6-)} 6-'6.1 Az"@:E,A  1"@:M,A 0&&6.7$@c&@!<$@c,+ -!()} MEMO:  + A3 -(7,36.7$@c&@b<$@c,L6.7<,6.7<,*6.7<@4,A)}6.7@5<@A,L6.7<,& -7<,0  & A p* 6.67&<,.*67<&,.7<&,; -1()}  $ 7<, 7<,; A6+ -'(SCANNING MONTH--6(#6. D:MONTH .DAT)} 6-6- 6-.  67<,.0$67<,.=:,. A@67<,.=:, -($ )}4ENDA. 6-% 7<,4*A`897<,4DEP 6-%/6-%A:7@5,,9 A`B) 6-%)}6-%A:7@5,,) A`L 6-% AV-! D:BALANCE.DAT(-` 6-%&j) 6.=:,)} 6.6.=:,# )6.t 6.=:, 6.~/+ AR#A/A P -)(ENDING BALANCE )}------------5-@0;($L-@8&B:,P( 6.=:,+ -+(- OUTSTANDING CHECKS ()?-@$%B:=)}:,,@'&(-* ;-@8&B:,?() -)(SUBTOTAL ------------------<-@1(&6.=:&,*)} 6-@0<($!-@8&B:,(!6.=:,) -)(+ OUTSTANDING DEP. ()?-@"%B:=:,,@')}&(-* ;-@8&B:,?(,-@1((6.=:&%,, *-@0($&-@8&B:,*() -)})(YOUR BALANCE SHOULD BE ----> -)(YOUR BALANCE IS -----------:-@8&B:,>( -@1()}6-&A:,6 -)(DIFFERENCE ----------------26.=:,6 (*-@0($&-@8&B:,*(2AP<)}& -(Ԡӡ&#AF0 ""62&20 APP< "6-@@ $-.2)}2 < ApZ! 22!2d -  APnSS121,47,40,121,47,40,-1,-1,-1,162,47,40,162)},47,40,121,53,45,121,60,47,-1,-1,-1xJJ162,60,47,162,60,47,121,64,50,121,60,47,-1,-1,-1,162,60,47,162,60,47JJ121,60,47,)}121,64,50,162,60,47,162,60,47,121,64,50,121,60,47,-1,-1,-1AA162,60,47,162,60,47,121,64,50,121,60,47,162,47,40,162,47,40)}AA121,60,47,121,47,40,162,53,45,162,53,45,162,53,45,162,53,4566162,64,53,162,64,53,162,64,53,162,64,53,-2,-2,-2 )} -(٠6-+&B:,,'"-@!"( T=TRY AGAIN-@"(M=MENU"K:))}""@:M,A0<"@:T,6-6- 6-&6-,6-26-< A A@+ -&()} please insert,-@( program disk= -( Ӡ٠( @2 Ap=%D:MENUC + -)})( ӠӠ/-C( microcheck; -( ˡ --A1 ; A`"9+ -%()} ͠+-9(Ԡ,9 -(Š +-A/ 9 A0 D:CHECK2.BASMONTHDATB(q0100 POKEL = $CB0110 POKEH = $CC0120 *= $06000130 CLD ;CLEAR DECIMAL0140 PLA ;DISCARD #ARGS-}0150 PLA ;PULL POKE HI0160 STA POKEH ;AND SAVE IT0170 PLA ;PULL POKE LO0180 STA POKEL -};AND SAVE IT0190 LDY #1 ;POINT Y TO HI0200 PLA ;PULL VALUE HI0210 STA (POKEL),Y ;POKE HI VAL0220-} DEY ;POINT Y TO LO0230 PLA ;PULL VALUE LO0240 STA (POKEL),Y ;POKE LO VAL0250 RTS .};ALL DONE! ;POINT Y TO LO0230 PLA ;PULL VALUE LO0240 STA (POKEL),Y ;POKE LO VAL0250 RTS , %&ngzDPOKADDRESDATLTESHTESTESTDAT 2}1-A6AS"!% 16-A6- @ )(ENTER ADDRESS TO DPOKE-4 @0&(ENTER DATA TO D2}POKE*4 B(6-?:<<,2 @ dJJ216,104,104,133,204,104,133,203,160,1,104,145,203,136,104,145,203,962} D:BOOT2.BASPOKADDRESDATLTESHTESTESTDAT 00100 STRADL = $CB0110 STRADH = $CC0120 STRLEL = $CD0130 STRLEH = $CE0140 *= $06000150 CLD 0160 PLA 6} ;DISCARD # ARGS0170 PLA ;PULL ADDR HI0180 STA STRADH ;AND SAVE IT0190 PLA ;PULL ADDR LO02006} STA STRADL ;AND SAVE IT0210 PLA ;PULL LENGTH HI0220 STA STRLEH ;AND SAVE IT0230 PLA ;PU6}LL LENGTH LO0240 STA STRLEL ;AND SAVE IT0250 INVLP LDA STRLEL ;GET LENGTH LO0260 ORA STRLEH ;MIX W/HI BYTE0270 6 } BNE FLIPIT ;IT'S NON-ZERO!0280 RTS ;ALL DONE!0290 FLIPIT LDA STRLEL ;DECREMENT THE0300 SEC ;L6 }ENGTH COUNTER0310 SBC #1 ;BY 10320 STA STRLEL ;AND PUT IT0330 LDA STRLEH ;BACK!0340 SBC #00350 6 } STA STRLEH0360 LDY #0 ;READY Y REG.0370 LDA (STRADL),Y ;GET BYTE0380 EOR #$80 ;FLIP HI BIT0390 6 }STA (STRADL),Y ;PUT BACK!0400 LDA STRADL ;NOW ADD 1...0410 CLC ;TO STRING...0420 ADC #1 ;ADDRESS6 }...0430 STA STRADL ;POINTER0440 LDA STRADH0450 ADC #00460 STA STRADH0470 JMP INVLP ;AND LOOP BACK6}!.0430 STA STRADL ;POINTER0440 LDA STRADH0450 ADC #00460 STA STRADH0470 JMP INVLP ;AND LOOP BACK4  2AFLI 1-A6A"!% 16-A6%;@ :},%6.THIS IS A TEST6-?:};random byteHPOSP0 EQU $D000 ;horizontalM0PF EQU $D000 ;collisionsM0PL EQU $D008P0PF EQU $D004 ORG $80>} ;Page zeroVBIDO DS 1 ;vertical blank shakeWINNER DS 1 ;starts glowLOOT DS 1 ;where loot isENABLE DS 1 ;VBI allow>}anceDOCPU DS 1 ;game over flagTIMER DS 1 ;inc'ed every VBISND1 DS 1 ;firing soundSND2 DS 1 ;ricochetSND3 DS>} 1 ;fwooopDOHOME DS 1 ;flag for little musicVOLUME DS 1 ;taps note volumeVOL2 DS 1 ;footstep volumeSUSTAI DS 1 ;tun>}e volumeTEMP DS 1 ;workNOLOOT DS 1 ;countdownCOUNT DS 1 ;counterONOFF DS 1 ;foot switchSTEPTM DS 1 ;time for ne>}xt stepSTEP DS 1 ;step pointerPICTUR DS 1 ;framePIC DS 2 ;Page zero PM pointCHANGE DS 2 ;where to change colorN>}EWCOL DS 2 ;what color to changeDEAD DS 2 ;dead flagAMMOS DS 2 ;bulletsAMMOS2 DS 2 ;for displayingPLPF2 DS 2NOC>}OL DS 2 ;after a collisionNOMOVE DS 2 ;after a shotMISSLF DS 2 ;1 = shootingPRESSF DS 2 ;1 = aimingHORIZ DS 2 ;cow>}boy positionVERT DS 2HORIZ2 DS 2 ;previouslyVERT2 DS 2DIRX DS 2 ;aim directionDIRY DS 2SHORIZ DS 2 ;shot p>}ositionSHVERT DS 2SHDIRX DS 2 ;shot directionSHDIRY DS 2SCORE DS 2 ;BCD player score ASSERT * < $100 ;page >}zero!PMHORZ = $30 ;For screenPMVERT = $28 ;offsetsPMTITL = PMVERT+$30 ;for title pageAMMO = 1 ;character codes>}CACTUS = 2ROCK = 3CHAMMO = 4 ;bullets characterGRAVE = 9 ;gravestoneHOMES = 74 ;length of songCHRSET EQU> } $3000 ;memory spacePMAREA EQU $3800DISP EQU PMAREA ;screen memoryMIS EQU PMAREA+$180PL0 EQU PMAREA+$200PL1 >!} EQU PMAREA+$280PL2 EQU PMAREA+$300PL3 EQU PMAREA+$380PLAREA EQU DISP+20 ;play area ORG $2000INIT >"} JSR $E465 ;init sound JSR PMCLR ;clear buffer JSR CLDISP ;clear screen LDA #LOW DLIST STA $>#}230 LDA #HIGH DLIST STA $231 LDA #$2E STA $22F ;P/M LDA #HIGH PMAREA STA $D40>$}7 LDA #3 STA $D01D ;GRACTL LDA #0 STA $D00C ;SIZEM LDA #$18 STA $26F ;PRIOR >%} LDA #0 STA $D208 ;init LDA #$06 ;light grey STA $2C6 ;rocks LDA #$AA STA $2C7 >&};bullets LDX #0MOVEIT LDA $E000,X ;move ROM set STA CHRSET,X LDA $E100,X STA CHRSET+$100,>'}X INX BNE MOVEIT LDA #HIGH CHRSET STA 756 ;point to new one LDX #$48 ;move 9 characte>(}rsNEWCHR LDA NEWSET,X ;and copy new STA CHRSET+8,X DEX BPL NEWCHR LDA #0 LDX #$7F>)}CLPZER STA $80,X ;zero variables DEX BPL CLPZER LDX #7ZHORIZ STA HPOSP0,X ;horizontals DEX>*} BPL ZHORIZ LDA #0 STA ENABLE ;Not yet LDX #HIGH VBLANK ;Set up LDY #LOW VBLANK ;NMI>+} LDA #6 JSR $E45C LDX #18 ;19 charactersPRINT LDA CHRS,X LDY CHRPOS,X STA DISP,Y >,};put to screen DEX BPL PRINT LDX #$F LDY #PMTITLDOMAN LDA THEMAN,X STA PL0,Y >-} DEY STA PL0,Y DEY DEX BPL DOMAN LDX #$7 LDY #PMTITLDOCAC LDA NEWSET+8,>.}X ;display dudes STA PL1,Y STA PL1+1,Y STA PL1+2,Y STA PL1+3,Y LDA NEWSET+$10,X >/} STA PL2,Y STA PL2+1,Y STA PL2+2,Y STA PL2+3,Y DEY DEY DEY DEY >0} DEX BPL DOCAC LDA #3 STA $D008 ;x4 width STA $D009 STA $D00A LDA #$36 ;r>1}ed cowboy STA $2C0 LDA #$C2 ;green cactus STA $2C1 LDA #$06 ;grey rocks STA $2C2 >2} LDA #$78 ;horizontals STA $D000 LDA #$A8 STA $D001 LDA #$48 STA $D002 LDA>3} #HOMES ;set it up... STA HOMEON LDA #1 ;and STA DURAT2 LDA #1 ;start the tune... STA>4} DOHOME LDX #32AGAIN LDA $2C4 ;switch $2C4 & $2C5 PHA LDA $2C5 STA $2C4 PLA >5} STA $2C5 LDA #16 ;quarter of a second STA TIMERTWAITA LDA TIMER BNE TWAITA DEX B>6}NE AGAIN JSR PMCLR ;clear PM title LDA #7 ;glow title STA WINNERSTART LDA #0 STA ENABLE >7} LDX #7NOSNDS STA $D200,X DEX BPL NOSNDS LDA RANDOM ORA #1 ;at least one STA N>8}OLOOT ;set up timer LDA #0 STA $D008 STA $D009 sta ONOFF STA PIC STA TAPS >9} STA VOL2 STA VOLUME STA STEPTM STA STEP LDA #2 ;Sound freq' STA $D200 ;AUDF1 >:} LDA #$AA STA $D203 ;sound ctrl 2 LDA #$FF STA SND1 STA SND2 STA SND3 LD>;}X #19PRESS LDA PRESSM,X ;write message STA DISP+220,X DEX BPL PRESS LDX WINNERDOWN LD><}A $14 ;Glow ORA #7 STA $2C0,X CPX #2 BCS DOGAME AND #$F0 ORA #$A STA >=}$2C4,XDOGAME LDA CONSOL AND #1 ;START? BNE DOWN JSR PMCLR JSR CLDISPUP LDA CONSOL >>} AND #1 ;Let go yet? BEQ UP LDA #$F2 ;brown STA $2C8 LDA #$BA ;color of loot ST>?}A $2C7 LDX #1 ;Set up gameSETUP LDA #$1A ;fleshy STA $2C0,X ;COLPM0 LDA TCOLOR,X ORA #4 >@} STA $2C4,X ;COLPF0 LDA THORIZ,X STA HORIZ,X STA HORIZ2,x ;old LDA #$30 STA VERT>A},X STA VERT2,X ;old LDA #0 STA NOMOVE,X STA DEAD,X STA NOCOL,X STA SCORE,X >B} STA MISSLF,X STA PRESSF,X ;etc... LDA #3 ;give him some! STA AMMOS,X DEX BPL SE>C}TUP STA $D01E ;HITCLR LDA #1 ;Now it can STA ENABLE LDA #0 STA DOCPU STA VOLU>D}ME ;quiet!* CPU moves the random gun, checks* for it's collision, and does colorCPU PROC LDA VBIDO ;wait for>E} VBI BEQ CPU LDA DOCPU ;end game? BEQ :CPU.2 JMP START ;do it again!:CPU.2 LDA #0 S>F}TA VBIDO LDX #1setvp LDA VERT,X CLC ADC #30 ;where to change STA CHANGE,X LDA TCOL>G}OR,X ORA #6 STA NEWCOL,X LDA ONOFF ;alternate BEQ SETVP3 ;natural color LDA NOMOVE,X>H} BEQ SETVP2 LDA #4 STA NEWCOL,X ;darken him!SETVP2 LDA AMMOS,X CMP #2 BCS SETVP3 >I} LDA #$CA ;embarassment STA NEWCOL,XSETVP3 DEX BPL SETVPKERNEL LDX #1 LDA $D40B STA $>J}D40A ;WSYNCCKVP CMP CHANGE,X ;time to change? BNE nochan PHA LDA NEWCOL,X ;get new color >K}STA $D012,X PLAnochan DEX BPL CKVP CMP #$70 BCC KERNEL LDX #1:CPU1 LDA P0PF,X ;>L}have we run into AND MISHIT,X ;a cactus? PHA ;hold on to CMP PLPF2,X BEQ :CPU1.2 BCC >M}:CPU1.2 LDA DEAD,X ;O.K. if dead... BNE :CPU1.2 LDA NOCOL,X ;or already hit BNE :CPU1.2 >N} LDA #45 ;.75 seconds STA NOMOVE,X ;stop there LDA #$10 ;start boing STA SND3:CPU1.2 PLA S>O}TA PLPF2,X ;remember it LDA P0PF,X AND #8 ;got the loot? BEQ :CPU3 LDA #$10 STA SND3 >P};boing LDY LOOT LDA GOTIT,X ;make a cactus STA PLAREA,Y STA $D01E ;HITCLR LDA RANDOM>Q} AND #3 ORA #1 CLC ADC AMMOS,X STA AMMOS,Xloottm LDA RANDOM ;wait a little >R} ORA #$40 ;not zero STA NOLOOT:CPU3 LDA NOLOOT ;waiting? BNE lootdn LDA RANDOM ;chance it >S} BNE :CPU3.1 LDY LOOT ;erase old one LDA #0 STA DISP+20,y BEQ LOOTTM LOOTDN DEC NOLOOT>T} BNE :CPU3.1:CPU2 JSR RANDY ;hide loot BEQ DOLOOT AND #$3F ;remove color CMP #CACTUS >U} BEQ DOLOOT CMP #LOOT ;the loot? BEQ :CPU2 LDA #0 ;erase it STA PLAREA,Y BEQ :CPU2 >V};now try againDOLOOT STY LOOT ;use this value LDA #AMMO OR $C0 ;PF3 STA PLAREA,Y LDA #$10 S>W}TA SND3 ;boing:CPU3.1 DEX BMI RECPU JMP :CPU1RECPU JMP CPU SUBTTL 'Subroutines'RANDY LDA RAN>X}DOM ;find a random CMP #200 ;byte on screen BCS RANDY TAY ;and get its contents LDA PLAREA,Y>Y} RTS * Multiply by 20 for screen plottingMULT20 ASL A ;*2 ASL A ;*4 STA TEMP >Z} ASL A ;*8 ASL A ;*16 CLC ADC TEMP ;*20 RTS* Finds screen location from a misslePMDISP>[} CLC ;offset is on A ADC SHVERT,X ;get horizontal LSR A LSR A LSR A ;/8 JSR MULT20 ;>\}times 20 STA TEMP ;hold LDA SHORIZ,X CLC ADC #1 LSR A LSR A LSR A ;/8>]} CLC ADC TEMP ;add on to TAY ;and put in Y RTSCLDISP LDX #240 ;Clear screen LDA #0>^}CLEAR STA DISP-1,X DEX BNE CLEAR RTSPMCLR LDX #$7F ;clear out P/M LDA #0ZPLYR STA M>_}IS,X STA PL0,X STA PL1,X STA PL2,X STA PL3,X DEX BPL ZPLYR RTS >`} SUBTTL 'The Vertical Blank'* Vertical BLANK does everything elseVBLANK PROC LDA #1 ;VBI call flag STA>a} VBIDO DEC TIMER LDA DOHOME ;Home on the range BEQ CKENAB DEC DURAT2 ;count it down>b} LDA DURAT2 BNE DONOTE INC HOMEON ;next note LDA HOMEON CMP #HOMES ;done yet? >c}BCC NEWDUR LDA #1 ;yes, start again STA HOMEONNEWDUR TAX ;note getter LDA DURAT2,X STA DURA>d}T2 LDA #$A ;start volume STA SUSTAIDONOTE LDX HOMEON LDA HOMEON,X ;play the note ST>e}A $D206 LDA TIMER ;decrease volume? AND #1 BNE CKENAB DEC SUSTAI ;a little softer LDA>f} SUSTAI BMI CKENAB ;not too much! ORA #$A0 ;adjust sound STA $D207CKENAB LDA ENABLE ;should we? >g} BNE :L1 JMP LOOP6:L1 DEC STEPTM BPL DOSNDS LDA #$1F ;wait for next STA STEPTM >h} LDA STEP ;take a step! EOR #$10 STA STEP LDA ONOFF EOR #1 STA ONOFFNEWAMO LDA RA>i}NDOM ORA #6 CMP $2C7 BEQ NEWAMO STA $2C7 ;new ammo color LDA SND1 ;not during a shot!>j} BPL DOSNDS LDA NOMOVE ;if not moving... AND NOMOVE+1 BNE DOSNDS LDX ONOFF LD>k}A FEET,X ;make footsteps STA $D200 LDA #8 STA VOL2DOSNDS LDA VOL2 BEQ DOSND1 DEC VO>l}L2 LDA SND1 BPL DOSNDS LDA VOL2 ORA #$80 ;decrease volume STA $D201 BMI CKSND>m}2DOSND1 LDA SND1 ;gunshot BMI CKSND2 DEC SND1 AND #$F STA $D201CKSND2 LDA SND2 BM>n}I CKSND3 DEC SND2 LDX SND2 LDA CONT2,X STA $D203 LDA FREQ2,X STA $D202CKSND3>o} LDA SND3 ;boing BMI CKTAPS DEC SND3 LDX SND3 TXA ;use pointer as volume ORA #$40 >p} STA $D205 ;AUDC3 LDA FREQ3,X STA $D204 ;AUDF3CKTAPS LDY TAPS BNE DOTAPS LDA VOLUME ;o>q}f last note? BPL TAPS2 LDA #1 ;we're done! STA DOHOME BNE LOOPDOTAPS LDA #0 ;reset flag >r} STA DOHOME DEC DURAT ;note length BPL TAPS2 LDA DURAT,Y STA DURAT LDA TAPS,Y ;ne>s}w note STA $D206 ;AUDF4 LDA #$10 ;new volume STA VOLUME DEC TAPS ;next noteTAPS2 LDA TIMER>t} AND #1 BNE LOOP DEC VOLUME LDA VOLUME ORA #$A0 STA $D207LOOP LDX #1LOOP>u}1 LDA DEAD,X ;6 feet under? BEQ ALIVE1 LDA #1 ;elongate him STA $D008,X DEC DEAD,X ;and dec>v}rement BNE ALIVE1 LDA #$40 STA NOCOL,X LDA #0 ;back to normal STA $D008,XALIVE1 LDA>w} NOCOL,X BEQ DECMOV DEC NOCOL,XDECMOV LDA NOMOVE,X ;movement? BEQ SHOAMM DEC NOMOVE,X >x} BNE SHOAMM LDA #$20 STA NOCOL,XSHOAMM LDY WHERE2,X ;get posit' LDA #5 STA COUNT >y}LDA AMMOS,X ;replicate STA AMMOS2,XSHOAM1 LDA AMMOS2,X ;ammo left CMP #4 BCS SHOAM2 ;full four? >z} CLC ;partial ADC #CHAMMO OR $80 STA DISP,Y LDA #0 ;no more STA AMMOS2,X BEQ SHOA>{}M3SHOAM2 LDA #CHAMMO+4 OR $80 STA DISP,Y LDA AMMOS2,X SEC SBC #4 STA AMMOS2,XSHOAM>|}3 INY ;go right one DEC COUNT BNE SHOAM1 LDA $D00C,X AND MISHIT,X ;other guy? BEQ sa>}}fety LDA HORIZ2,X ;move back! STA HORIZ,X LDA VERT2,X STA VERT,X JMP GETSTKsafety L>~}DA HORIZ,X ;safe place! STA HORIZ2,X LDA VERT,X STA VERT2,XGETSTK LDY $278,X ;Y is STICK LD>}A TDIRX,Y STA DIRX,X ;hold direction CLC ADC HORIZ,X ;new HORIZ CMP #$98 ;off of screen? >} BCS CKVERT STA TEMP ;no...could use LDA PRESSF,X ;unless aiming ORA NOMOVE,X BNE CKVERT >} LDA TEMP STA HORIZ,X ;update it CKVERT LDA TDIRY,Y ;same for VERT STA DIRY,X CLC >} ADC VERT,X CMP #$40 BCS CKPRES STA TEMP LDA PRESSF,X ORA NOMOVE,X BNE CK>}PRES LDA TEMP STA VERT,X* Joystick fire button code:* test for ammos then* if not strig then set PRES>}SF* if strig and PRESSF then fireCKPRES LDA PRESSF,X ;already? BEQ CKBUTT LDA $284,X ;letting go? >} BEQ CKBUTT LDA DIRX,X ORA DIRY,X BNE FIRE ;any direction?NOFLIP STA 77 ;stop attract S>}TA PRESSF,X ;not pressing BEQ CKBUTTFIRE LDA AMMOS,X ;any bullets? BEQ NOFLIP LDA DEAD,X ;if dead>} ORA NOMOVE,X ;or immobile... BNE CKBUTT ;don't shoot! DEC AMMOS,X ;use a bullet LDA #1 ;he's>} shooting STA MISSLF,X LDA #0 STA PRESSF,X LDA #$18 ;fire sound STA SND1 LDA >}HORIZ,X ;make a bullet CLC ADC #3 ;center it STA SHORIZ,X LDA VERT,X STA SHVERT,X >} LDA DIRX,X ASL A ;4 times as fast ASL A STA SHDIRX,X LDA DIRY,X ASL A ;twice as >}fast STA SHDIRY,X JMP LOOP2CKBUTT LDA $284,X ;now button? BNE LOOP2 LDA MISSLF,X ;or shoot?>} BNE LOOP2 LDA #1 STA PRESSF,X ;pressed...LOOP2 LDA M0PL,X AND MISHIT,X ;player hit? >} BEQ MOVEM LDA #0 ;stop shooting STA MISSLF,X LDA #$F ;offset JSR PMDISP ;find where >} LDA #GRAVE OR $80 STA DISP,Y ;put on screen LDY OPPON,X LDA DEAD,Y ;already dead? BEQ KILLE>}M LDA #$A0 ;slow shooter STA NOMOVE,x BNE MOVEM ;JMPkillem LDA #0 ;play taps STA DURAT >} LDA #6 STA TAPS LDA #$B0 ;kill him STA DEAD,Y LDA #$A8 STA NOMOVE,Y SED >} LDA SCORE,X CLC ADC #1 ;Give him 1 point CLD STA SCORE,X PHA ;And display his >}score LDY WHERE,X AND #$F ORA COLSCO,X STA DISP,Y PLA LSR A LSR A >} LSR A LSR A ORA COLSCO,X STA DISP-1,Y AND #$F CMP #1 ;20 points wins BCC>} MOVEM STX WINNER LDY OPPON,X LDA #0 ;darken loser STA $2C0,Y LDA #0 STA ENAB>}LE LDA #1 STA DOCPU JMP LOOP4 ;Remember whoMOVEM LDA HORIZ,X CLC ADC #PMHORZ ;Sma>}ll adjust STA HPOSP0,X ;horizontal TXA PHA LDA PLOFF1,X ;Set up PM STA PIC+1 ;pointer>}s for LDA PLOFF2,X ;players STA PIC LDA #$B0 ;hold him still STA PICTUR LDA NOMOVE,X>} BNE :L2 LDA STEP ;now animate STA PICTUR LDA PRESSF,X ;aiming? BEQ :L2 LDA $2>}78,X CMP #15 ;stick centered? BEQ :L2 LDA AMMOS,X ;or out? BEQ :L2 LDY $278,X >} LDA PICOFF,Y ;According STA PICTUR ;to STICK0:L2 LDA VERT,X CLC ADC #PMVERT TAY ;No mor>}e Y! LDA DEAD,X BEQ ALIVE LDA #$A0 ;draw dead guy STA PICTURALIVE LDA PICTUR CLC >} ADC #$F ;16 bytes TAX ;X is saved on stackDRAW LDA SHAPE,X ;draw him! STA (PIC),Y DEY >} DEX CPX PICTUR ;done yet? BPL DRAW PLA TAX ;restore player X LDA MISSLF,X ;Shoul>}d we BNE MVHORZ ;kill missle? LDA SHVERT,X ;Y not stick CLC ADC #PMVERT-9 TAY >} LDA MIS,Y AND BITSOF,X ;Out bits STA MIS,Y LDA #0 STA $D004,X ;Zero HPOSM0 JMP LOOP3>}MVHORZ LDA M0PF,X ;have we hit AND MISHIT,X ;a cactus? BEQ HORZ1 ;no collision LDA #7 ;offset >} JSR PMDISP ;figure out where LDA #ROCK OR $80 STA DISP+20,Y ;make rock LDA #$10 ;make boing >} STA SND3 JMP KILMSL ;kill missleHORZ1: LDA M0PF,X ;have we hit a AND #4 ;PF2 rock? BEQ HORZ3 >} LDA #10 ;ricochet STA SND2HORZ2: LDA RANDOM ;new direc' AND #$F TAY LDA TDIRX,Y >} ORA TDIRY,Y BEQ HORZ2 ;some delta LDA TDIRX,Y ASL A ;a little slower STA SHDIRX,X LD>}A TDIRY,Y STA SHDIRY,XHORZ3: LDA SHORIZ,X ;update CLC ADC SHDIRX,X CMP #$9E ;off screen? >} BCS KILMSL STA SHORIZ,X CLC ADC #PMHORZ ;Compensate STA $D004,X LDA SHVERT,X >};Remove old CLC ADC #PMVERT-9 TAY LDA MIS,Y AND BITSOF,X STA MIS,Y LD>}A SHVERT,X ;Now update CLC ADC SHDIRY,X CMP #$50 ;off screen? BCS KILMSL STA SHVERT,X>} CLC ADC #PMVERT-9 ;Compensate TAY LDA MIS,Y ORA BITSON,X ;Turn on bit STA MI>}S,Y JMP LOOP3KILMSL LDA #0 ;kill this missle STA MISSLF,X STA PRESSF,XLOOP3 DEX ;Next player >} BMI LOOP4 ;end part of VBI JMP LOOP1LOOP4 STA $D01E LDA CONSOL AND #1 BNE LOOP6 >} LDA #1 STA DOCPULOOP6 JMP $E7D1 ;Exit VBI SUBTTL 'Data Tables'* Various tablesPRESSM DB $B0,$B2,>}$A5,$B3,$B3,0 DB $F3,$F4,$E1,$F2,$F4,0 DB $B4,$AF,0,$A2,$A5,$A7 DB $A9,$AE ;press start...CHRS DB>} $34,$77,$2f,$67,$35,$6E DB 'byconradtatge'CHRPOS DB 41,61,81,101,121,141 DB 63,64,66,67,68,69,70,71 >} DB 73,74,75,76,77 ;positionPLOFF1 DB HIGH PL0 ;PM pointers DB HIGH PL1PLOFF2 DB LOW PL0 DB LOW PL1COLS>}CO DB $10,$50 ;masksGOTIT DB CACTUS OR $00 ;PF0 DB CACTUS OR $40 ;PF1WHERE DB 1,19 ;score posit'WHERE2 DB 2,>}13 ;ammo positionOPPON DB 1,0 ;opponentMISHIT DB 2,1 ;collision checksBITSON DB 3,$C ;ORA turn onsBITSOF DB $FC,$F3 >};AND turn offsTDIRX DB 0,0,0,0,0,1,1,1 ;stick DB 0,$FF,$FF,$FF,0 ;deltas DB 0,0,0TDIRY DB 0,0,0,0,0,1,$>}FF DB 0,0,1,$FF,0,0 DB 1,$FF,0FEET DB 10,16 ;footstepsFREQ2 DB 40,24,16,12,10,9,8,10 DB 15,22,>}16,64 ;ricochetCONT2 DB $AC,$AD,$AE,$AF,$AD,$AA DB $A6,$A2,$A0FREQ3 DB 10,11,10,9,11,10,8 ;boing DB 7,9>},12,13,10,6,5,8,10 DB 15,16,15,10,6,7,10,10TAPS DB 0 DB $51,$60,$79 ;notes DB $60,$79,$79DURAT >} DB 0 DB 64,8,16,64,8,16 ;durationsHOMEON DB 0 ;Home, home on the... DB 108,108,81,72,64 ;Oh give D>}B 81,85,96,60,60,60 DB 60,60,53,81,81,81,85,81,72 DB 108,108,81,72,64 ;where DB 81,85,96,60,60,60 >} DB 60,60,64,72,81,85,81,72,81 DB 53,60,64,72,64 ;Home, home DB 72,81,81,81,81,85,81,72 DB 108,10>}8,81,72,64 ;where DB 81,85,96,60,60,60 DB 60,60,64,72,81,85,81,72,81DURAT2 DB 0 DB 16,16,16,16,32 >} DB 8,8,24,8,16,32 DB 8,8,24,8,16,16,16,16,64 DB 16,16,16,16,32 DB 8,8,24,8,16,32 DB 8,>}8,24,8,16,24,8,16,64 DB 48,24,8,16,48 DB 16,24,8,16,16,16,16,64 DB 16,16,16,16,32 DB 8,8,24,8>},16,32 DB 8,8,24,8,16,16,16,16,128PICOFF DB 0,0,0,0,0,$20,$30,$40 DB 0,$50,$60,$70,0,$80 DB $90,0T>}COLOR DB $70,$30 ;player colorsTHORIZ DB $10,$88 ;and positions* Alternate character setNEWSET DB 0,$41,$CF,$7F ;ammo>} dump DB $F0,$F8,$E0,0 DB $18,$1B,$1B ;cactus DB $DB,$DF,$D8,$F8,$18 DB 0,0,$30,$7C,$72 >} DB $FE,$FF,$1F ;rock DB 0,0,0,$FF ;empty DB 0,$FF,0,0 DB 0,$80,$80,$FF ;1 DB $80,$FF,$8>}0,0 DB 0,$A0,$A0,$FF ;2 DB $A0,$FF,$A0,0 DB 0,$A8,$A8,$FF ;3 DB $A8,$FF,$A8,0 DB 0,$A>}A,$AA,$FF ;4 DB $AA,$FF,$AA,0 DB 0,$18,$3C,$18 ;a grave DB $18,$3C,$7E,$7E* Cowboy shape tableSH>}APE DB $00,$28,$7C,$54 ;+1 DB $7C,$38,$7C,$BA DB $BA,$BA,$79,$28 DB $28,$68,$0C,$00 DB $00>},$14,$3E,$2A ;+2 DB $3E,$1C,$3E,$5D DB $5D,$5D,$9E,$14 DB $14,$16,$30,$00 DB $04,$14,$7C,$68>} ; DB $74,$38,$78,$BC DB $BA,$B9,$78,$28 DB $28,$28,$2C,$60 DB $04,$14,$7C,$69 ; >} DB $76,$3C,$78,$B8 DB $B8,$B8,$78,$28 DB $28,$28,$2C,$60 DB $04,$14,$7C,$68 ; DB $74,$38,$>}7F,$B8 DB $B8,$B8,$78,$28 DB $28,$28,$2C,$60 DB $20,$28,$3E,$16 ; DB $2E,$1C,$1E,$3D >} DB $5D,$9D,$1E,$14 DB $14,$14,$34,$06 DB $20,$28,$3E,$96 ; DB $6E,$3C,$1E,$1D DB $1D,$1>}D,$1E,$14 DB $14,$14,$34,$06THEMAN DB $20,$28,$3E,$16 ; DB $2E,$1C,$FE,$1D DB $1D,$1D,$1E,$14 >} DB $14,$14,$34,$06 DB $04,$14,$7C,$68 ; DB $74,$38,$7E,$BA DB $BA,$BA,$7A,$28 DB $28,$>}28,$2C,$60 DB $20,$28,$7E,$56 ; DB $6E,$5C,$7E,$1D DB $1D,$1D,$1E,$14 DB $14,$14,$34,$06 >} DB 0,0,0,0,0,0,0,0,0,0 ;DEAD DB $10,$3B,$BB,$FF,0,0 DB $00,$14,$3E,$2A ;NOMOVE DB $3E,$1C,$3E>},$5D DB $5D,$5D,$5D,$14 DB $14,$14,$36,$00* The display list is 12 graphic 2'sDLIST DB $70,$70,$70 >} DB $47 DW DISP DB 7,7,7,7,7,7,7,7,7,7,7 DB $41 DW DLIST ;and that's all she wrot>}e! END INIT - A Shootout' SUBTTL 'By Conrad Tatge 84'CONSOL EQU $D01F ;Console switchRANDOM EQU $D20A <