@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@W!( 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`  `8  ɐ     `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.D8:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D8: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 ALLOWED697 FREE SECTORS COPYING---D8:COPY32.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- 144ɛ+,' 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 @ ** "D:HEADSUP.BAS" **&&** A MACHINE LANGUAGE PROGRAM **** THAT YOU CAN RUN **(!!** T}STANDING ON YOUR HEAD **2< + dAU@n##@@K:x)@ >U}:, A  D:HEADSUP.BAS Z8L8 8L8 8L8 8L8S:@9E:E9H '9 H9I9 8 '9h)0IC'10 REM ** "D:HEADSUP.BAS" **20 REM ** A MACHINE LANGUAGE PROGRAM **30 REM ** THAT YOU CAN RUN **40 REM ** STANDING ON YOUR W} HEAD **50 REM60 GRAPHICS 0 : PRINT100 POKE 755, 4110 OPEN #1,4,0,"K:"120 GET #1,K130 PRINT CHR$(K);140 GOTO 120i yHBNBITTAN A ?@ AU@@ %%** BINARY-DECIMAL CONVERSION **Y}** BIN2DEC.BAS ** &&;@ ,9@,;@, +$($(BINARY-DECIMAL CONVERSION/(((ENTER AZ}N 8-BIT BINARY NUMBER:+(/#B:,@@0(-@@2 6.7,700*01@0<68,[}-A:,F K6-P6-AVZ-@@d6-'@6-%8,$n ( DECIMAL:  \} @0 D:BIN2DEC.BAS4U (c)1983 Action Computer Services  B JKIH5 REM ** BINARY-DECIMAL CONVERSION **7 REM ** BIN2DEC.BAS **10 DIM BN$(9),BIT(8),T$(1)20 GRAPHICS 025 ? :? "BINARY-DECIMA^}L CONVERSION"30 ? :? "ENTER AN 8-BIT BINARY NUMBER:":? :INPUT BN$35 IF LEN(BN$)<>8 THEN 3040 FOR L=1 TO 850 T$=BN$(L)55 _}IF T$<>"0" AND T$<>"1" THEN 3060 BIT(L)=VAL(T$)70 NEXT L75 ANS=080 M=25690 FOR X=1 TO 8100 M=M/2:ANS=ANS+BIT(X)*M110 N`}EXT X140 ? "DECIMAL: ";ANS150 GOTO 304JJJJ`H 4h`Hȩh n4L5 w4L5 !4L)f>SSUBINTEMPRN %%** Db}ECIMAL-BINARY CONVERSION **** DEC2BIN.BAS ** &&;@,;@,;@, +$($(DECIMAL-BINARc}Y CONVERSION(@(/($ENTER A POSITIVE INTEGER (0 TO 255):2(< @@@2&P:,@@<!!!AU) d}@@F-@@P6-'@Z6-&P:,d!"6.0! A n 6.1x'67@e},.!67@,.'6. 6-P:, (BINARY:  B @@ D:DEC2BIN.BASL\8 6L\8 m5 REM ** DECIMAL-BINARY CONVERSION **7 REM ** DEC2BIN.BAS **10 DIM BIN$(8),TEMP$(8),R$(1)20 GRAPHICS 030 ? :? "DECIMAL-BIg}NARY CONVERSION"40 ? :? "ENTER A POSITIVE INTEGER (0 TO 255):":? :TRAP 40:INPUT NR50 IF NR-INT(NR)<>0 THEN 4060 IF NR>255 h}OR NR<0 THEN 4070 FOR L=1 TO 880 Q=NR/290 R=Q-INT(Q)100 IF R=0 THEN R$="0":GOTO 120110 R$="1"120 TEMP$(1)=R$:TEMP$(2)=Bi}IN$:BIN$=TEMP$130 NR=INT(Q)140 NEXT L150 ? "BINARY: ";BIN$160 TRAP 40000170 GOTO 40L 䙣ލZ  KHA $$HEX TO DEC CONVERSION PRO k}GRAM (THE FAST WAY2DON'T USE MATH<F;@@,;@@,PZ d n x!! HEX TO DECI l}MAL CONVERSION   H) HEX TO DEC  D) DEC TO HEX 4HA 4DA A m}CONVERT HEX TO DECIMAL ENTER HEX NUMBER6-"'6-@'POSITIONAL MU n}LTIPLIER'GO THROUGH THE STRING,-B:,@6@66.7<,@JCONVERT "0"-"F" TO 0-15T.6-@:, o}&@H !@ .6-&@Y!! )!@@^ 6-%$h6-$@r | HEX = DE p}C  @CONVERT DECIMAL TO HEX ENTER DECIMAL TO CONVERT""FIRST FIND THE HI q}GHEST DIGIT6-@6-@/  6-%@%6-$@/ A DECIMAL  = HEX  r} 6--@6@6-P:',@' >:@H%%@$+!@ ,,@CONVERT DEC TO HEX 0-F& 6-&$ s}6-'@0 : D @ D:HEX2DEC.BASe prompt (any key but a valid?N ;6L?& drive number requests =10 REM 20 REM HEX TO DEC CONVERSION PROGRAM 30 REM 40 REM THE FAST WAY50 REM DON'T USE MATH60 REM 70 DIM H$(40),A$(40)$u}80 REM 90 PRINT 100 PRINT 110 PRINT 120 PRINT "HEX TO DECIMAL CONVERSION"130 PRINT 140 PRINT "H) HEX TO DEC"150 PRINT $v}"D) DEC TO HEX"160 PRINT 180 INPUT A$190 IF A$="H" THEN 220200 IF A$="D" THEN 400210 GOTO 100220 REM 230 REM CONVERT H$w}EX TO DECIMAL240 REM 250 PRINT "ENTER HEX NUMBER";260 INPUT H$270 REM 280 D=0290 S=1:REM POSITIONAL MULTIPLIER295 REM $x}GO THROUGH THE STRING300 FOR L=LEN(H$) TO 1 STEP -1310 A$=H$(L,L)320 REM 330 REM CONVERT "0"-"F" TO 0-15340 N=ASC(A$)-48$y}:IF N>9 THEN N=N-7345 IF N<0 OR N>15 THEN 90350 D=D+N*S360 S=S*16370 NEXT L380 PRINT "HEX ";H$;"= DEC ";D390 GOTO 9040$z}0 REM 410 REM CONVERT DECIMAL TO HEX420 REM 430 PRINT "ENTER DECIMAL TO CONVERT"440 INPUT D450 REM 460 REM FIRST FIND T${}HE HIGHEST DIGIT470 REM 480 S=16490 X=2500 IF S9));:REM CONVERT DEC TO HEX 0-F550 T=T-N*S:S=S/16560 NEXT L$}}570 PRINT 580 GOTO 90 Any key exceptC ;6LOD# a valid drive number (1 to 4) isD+ ;6L}D# assumed to be end of your$8MWAI ** THE ATARI RAINBOW **** RAINBOW.BAS" **(D-@AT@(}DALL VALID COLORS HAVE EVEN NUMBERS2>A>712 IS ADDRESS OF BORDER AREA COLOR REGISTER<>-@@ (}>JUST A DELAY LOOP TO USE UP TIMEF P @@ AN INFINITE LOOP D:RAINBOW.BAS `=ILEPyLEWyLF(a10 REM ** THE ATARI RAINBOW **20 REM ** RAINBOW.BAS" **30 REM 40 FOR L=2 TO 254 STEP 2:REM ALL VALID COLORS HAVE EVEN NUMB,}ERS50 POKE 712,L:REM 712 IS ADDRESS OF BORDER AREA COLOR REGISTER60 FOR WAIT=1 TO 10:NEXT WAIT:REM JUST A DELAY LOOP TO USE,} UP TIME70 NEXT L80 GOTO 40:REM AN INFINITE LOOP currently in drive %C (Y/N) ? 9G ?8 `=ILG H69,4 6L %%-F:A7,$AV%F:A6, D:RETRE16B.BASause error # %U occurred.%E90Z10 LET X=PEEK(1537)*256+PEEK(1536)20 PRINT X name of the BASICG ;6LLH program that you wish to haveH+ ;6LzH# auto4. &HIBYTLOBYT TYPE A POSITIVE INTEGER RANGING FROM 0 TO 65,535(8}-P:'AV,2-&$AV<A6FA7PD:STOR16BI.BASSAV, etc.) if youI( ;6LtI 8_10 PRINT "TYPE A POSITIVE INTEGER"20 PRINT "RANGING FROM 0 TO 65,535"30 INPUT X40 LET HIBYTE=INT(X/256)50 LET LOBYTE=X-H<}IBYTE*25660 POKE 1536,LOBYTE70 POKE 1537,HIBYTE80 ENDeives this AUTORUN.SYSJ ;6L@J program file!J/ ;6LpJ%Now e<:8*@INKEFRETON@5B7`@(6 SOUNDOFF.BAS6-@56-B7`O%2@}/+O@@K:#Y)@"@2>2@}E >:,I Y32 IS A SPACE(,!@d)!A" ,NOT A LETTER2,!@* @ ,NOT A LETTER<?@}!@6-&@2?CHANGE LOWER CASE TO UPPER CASEFB6-&@d' @)!@+ BNOT A,B,C,D,E,F OR G@}P >:, AZ??AAAAAAAdAE AA4 @}B,A! CA D@ EX@ F@ GO%2@}AU@@($OSET UP AUDIO REGISTERS TO PLAY NOTESD:SOUNDOFF.BASse.M} ;6 ;9`99@`10 REM SOUNDOFF.BAS20 INKEY=35:FREQ=5376030 SOUND 0,0,0,0:GRAPHICS 0:OPEN #1,4,0,"K:"35 GET #1,K:IF K=32 THEN SOUND 0,0,0,D}0:PRINT CHR$(K):GOTO INKEY:REM 32 IS A SPACE40 IF K>64 OR K>122 THEN GOTO INKEY:REM NOT A LETTER50 IF K>90 AND K<97 THEN GOD}TO INKEY:REM NOT A LETTER60 IF K>90 THEN K=K-32:REM CHANGE LOWER CASE TO UPPER CASE70 TONE=K-64:IF TONE<1 OR TONE>7 THEN GOD}TO INKEY:REM NOT A,B,C,D,E,F OR G80 PRINT CHR$(K);:GOSUB 100090 ON TONE GOTO 100,200,300,400,500,600,700100 POKE FREQ,145:D}GOTO INKEY:REM A200 POKE FREQ,134:GOTO INKEY:REM B300 POKE FREQ,121:GOTO INKEY:REM C400 POKE FREQ,108:GOTO INKEY:REM D500D} POKE FREQ,96:GOTO INKEY:REM E600 POKE FREQ,91:GOTO INKEY:REM F700 POKE FREQ,81:GOTO INKEY:REM G1000 SOUND 0,255,10,8:RETUD}RN :REM SET UP AUDIO REGISTERS TO PLAY NOTESP"}Oops. Something went wrong inP ;6L%Q the process of writing theQD-10 ;20 ;ADDNRS.SRC30 ;40 *=$060050 ;60 CLD70 ADDNRS CLC80 LDA #290 ADC #2100 STA $CB110 RTS120 .ENDal befHw10 ;20 ; 8-BIT ADDITION PROGRAM30 ;40 *=$060050 ;60 ADDNRS CLD ; IMPLIED ADDRESS70 CLC ; IMPLIED ADDRESS80 LDA #02 ;L} IMMEDIATE ADDRESS90 ADC #02 ; IMMEDIATE ADDRESS100 STA $CB ; ZERO PAGE ADDRESS110 RTS ; IMPLIED ADDRESSturn to menu.Lp10 ;20 ;8-BIT ADDITION PROGRAM30 ;40 *=$060050 ;60 ADDNRS CLD ; IMPLIED ADDRESS70 CLC ; IMPLIED ADDRESS80 LDA #02 ; P}IMMEDIATE ADDRESS90 ADC #02 ; IMMEDIATE ADDRESS100 STA $5000 ; ABSOLUTE ADDRESS110 RTS ; IMPLIED ADDRESS Pp10 ;20 ;8-BIT ADDITION WITH ERROR CHECKING30 ;40 *=$060050 ;60 ADD8BTS CLD70 CLC80 LDA $500090 ADC $5001100 BCS T}ERROR110 STA $5002120 RTS130 ERROR RTSn 1 in the menu below!T9 ;6LT Choose an option:Tc ;6LT# 1.T-10 ;20 ;ROUTINE FOR MOVING A BLOCK OF TEXT30 ;40 TXTBUF=$500050 EOL=$9B70 ;80 *=$60090 ;0100 TEXT .BYTE $54,$41,$4B,X}$45,$20,$4D,$45,$200110 .BYTE $54,$4F,$20,$59,$4F,$55,$52,$200120 .BYTE $4C,$45,$41,$44,$45,$52,$21,$9B0130 ;0140 DATMOX}V0150 ;0160 LDX #00170 LOOP LDA TEXT,X0180 STA TXTBUF,X0190 CMP #EOL0200 BEQ FINI0210 INX0220 JMP LOOP0230 FINX}I RTS0250 .END`Lu 4N (c)1983 Action Computer Services  B JKIHX10 ;20 ;STACKADD.SRC30 ;40 *=$060050 ;60 ;WHEN THIS PROGRAM BEGINS, TWO70 ;8-BIT NUMBERS ARE ON THE STACK80 ;90 STKA\}DD100 CLD105 CLC110 PLA120 STA $B0130 PLA140 ADC $B0150 STA $C0160 RTS170 .ENDƐeǐ 5 \b10 ;20 .TITLE "PRNTSC ROUTINE"30 .PAGE "ROUTINE FOR PRINTING ON THE SCREEN"40 ;50 *=$500060 ;70 BUFLEN=2380 ;0100 `}EOL=$9B0105 ;0110 OPEN=$030120 OWRIT=$0B0130 PUTCHR=$0B0135 ;0140 IOCB2=$200170 ICCOM=$3420180 ICBAL=$3440190 ICBAH=`}$3450200 ICBLL=$3480210 ICBLH=$3490220 ICAX1=$34A0230 ICAX2=$34B0235 ;0240 CIOV=$E4560250 ;0260 SCRNAM .BYTE "E:",EOL`}0270 ;0280 OSCR LDX #IOCB2;OPEN SCREEN ROUTINE0300 LDA #OPEN0310 STA ICCOM,X0320 ;0330 LDA #SCRNAM&2550340 STA ICB`}AL,X0350 LDA #SCRNAM/2560360 STA ICBAH,X0370 ;0380 LDA #OWRIT0390 STA ICAX1,X0400 LDA #00410 STA ICAX2,X0420 J`}SR CIOV0430 ;0440 LDA #PUTCHR0450 STA ICCOM,X0460 ;0470 LDA #TXTBUF&2550480 STA ICBAL,X0490 LDA #TXTBUF/2560500 `} STA ICBAH,X0510 RTS0520 ;0530 PRNT0540 LDX #IOCB20550 LDA #BUFLEN&2550560 STA ICBLL,X0570 LDA #BUFLEN/2560580 `}STA ICBLH,X0590 JSR CIOV0600 RTS0610 ;0620 TXTBUF=*0630 ;0640 *=*+BUFLEN0650 ;0660 .ENDѢ =9`ȱѢĦ`e10 ;20 ; RESPONSE30 ;40 TXTBUF=$504150 OPNSCR=$503160 PRNTLN=$503170 ;80 EOL=$9b90 ;100 *=$650110 ; 120 TEXT .BYTd}E "I AM the leader, you fool!",EOL130 ;140 RSPONS150 ;160 LDX #0170 LOOP180 LDA TEXT, X190 STA TXTBUF, X200 CMP #d}$9B210 BEQ FINI220 INX230 JMP LOOP240 FINI250 JSR OPNSCR260 JSR PRNTLN270 INFIN280 JMP INFINL:`L: dl10 ;20 ; RESPONSE30 ;40 TXTBUF=$504150 OPNSCR=$503160 PRNTLN=$503165 BUFLEN=4070 FILLCH=$2075 ;80 EOL=$9B90 ;100 h}*=$650110 ; 120 TEXT .BYTE "I AM the leader, you fool!",EOL130 ;140 RSPONS150 ;160 LDX #0170 LOOP180 LDA TEXT, X19h}0 STA TXTBUF, X200 CMP #$9B210 BEQ FINI220 INX230 JMP LOOP240 FINI250 JSR OPNSCR260 JSR PRNTLN270 INFIN280 Jh}MP INFIN1300 FILL1310 LDA #FILLCH1320 LDX #BUFLEN1330 START1340 DEX1350 STA TXTBUF,X1360 BNE START1370 RTS<)h{10 ;20 ; THE VISITOR30 ;35 TXTBUF=$504140 OPNSCR=$500350 PRNTLN=$503170 ;80 *=$60090 ;0100 TEXT .BYTE $54,$41,$4B,$l}45,$20,$4D,$45,$200110 .BYTE $54,$4F,$20,$59,$4F,$55,$52,$200120 .BYTE $4C,$45,$41,$44,$45,$52,$210130 ;0140 VIZTOR015l}0 ;0160 LDX #00170 LOOP LDA TEXT,X0180 STA TXTBUF,X0190 INX0200 CPX #230210 BNE LOOP0220 JSR OPNSCR0230 JSR PRl}NTLN0240 INFIN JMP INFIN=m===m==== "5=e==e===== g==Р=L'>`ert DOL>9l10 ;20 ; THE VISITOR30 ;35 TXTBUF=$504140 OPNSCR=$500350 PRNTLN=$503155 BUFLEN=4060 FILLCH=$2070 ;80 *=$60090 ;01p}00 TEXT .BYTE $54,$41,$4B,$45,$20,$4D,$45,$200110 .BYTE $54,$4F,$20,$59,$4F,$55,$52,$200120 .BYTE $4C,$45,$41,$44,$45,$52p},$210130 ;0140 VIZTOR0150 JSR FILL0160 LDX #00170 LOOP LDA TEXT,X0180 STA TXTBUF,X0190 INX0200 CPX #230210 BNEp} LOOP0220 JSR OPNSCR0230 JSR PRNTLN0240 INFIN JMP INFIN1300 FILL1310 LDA #FILLCH1320 LDX #BUFLEN1330 START1340 p}DEX1350 STA TXTBUF,X1360 BNE START1370 RTSA.?[:? ? ?LA?m??iI LA?m??i?p210 ;20 NUM1 = $CB30 NUM2 = $CE40 SUM = $D450 ;60 *=$060070 ;90 CLD0100 PLA;CLEAER # OF ARGS. FROM ACC.0105 PLA0t}110 STA NUM1+1;HIGH BYTE OF 1ST ARG.0120 PLA0130 STA NUM1;LOW BYTE OF 1ST ARG.0140 PLA0150 STA NUM2+1;HIGH BYTE OF 2t}ND ARG.0160 PLA0170 STA NUM2;LOW BYTE OF 2ND ARG.0180 ;0190 CLC0210 LDA NUM1;LOW BYTE OF NUM10220 ADC NUM2;LOW BYTt}E OF NUM20230 STA SUM;LOW BYTE OF SUM0240 LDA NUM1+1;HIGH BYTE OF NUM10250 ADC NUM2+1;HIGH BYTE OF NUM20260 STA SUM+1t};HIGH BYTE OF SUM0270 RTS:B)BB1LGC4BLGCB 6B)` 6LCLRCLpC} ٠CU ;6LC!tSU : + : %WORLD'S MOST EXPENSIVE ADDING MACHINE  X=(x} Y=2<6-?:A6<<,F X+Y=P Z @ D:ADDMACHI.BAS9e-D,Di.D-Di/D,Di x]10 GRAPHICS 0:PRINT :PRINT "WORLD'S MOST EXPENSIVE ADDING MACHINE"20 PRINT :PRINT "X=";30 INPUT X40 PRINT "Y=";50 INPUT Y|}60 SUM=USR(1536,X,Y)70 PRINT "X+Y=";SUM80 PRINT 90 GOTO 2099 = DDeDDeDDL E8D9D9` LkEgE |@10 ;20 ; RESPONSE30 ;40 TXTBUF=$504150 OPNSCR=$500360 PRNTLN=$503165 BUFLEN=4070 FILLCH=$2075 ;80 EOL=$9B90 ;0100 } *=$06500110 ;0120 TEXT .BYTE "I AM the leader, you fool!",EOL0130 ;0140 RSPONS0145 PLA0150 JSR FILL0160 LDX #0017}0 LOOP0180 LDA TEXT,X0190 STA TXTBUF,X0200 CMP #$9B0210 BEQ FINI0220 INX0230 JMP LOOP0240 FINI0250 JSR OPNSCR}0260 JSR PRNTLN0270 RTS1300 FILL1310 LDA #FILLCH1320 LDX #BUFLEN1330 START1340 DEX1350 STA TXTBUF,X1360 BNE ST}ART1370 RTSEGY ?8LGHit Ԡ to reject copy.G~ ;6)ILGLG)LG`xFwF 1D99}F D10 ;20 ; VISITOR.SRC230 ;35 TXTBUF=$504140 OPNSCR=$500350 PRNTLN=$503155 BUFLEN=4060 FILLCH=$2070 ;80 *=$060090 ;}0100 TEXT .BYTE $54, $41,$4B,$45,$20,$40,$45,$200110 .BYTE $54,$4F,$20,$59,$4F,$55,$52,$200120 .BYTE $4C,$45,$41,$44,$45,}$52,$210130 ;0140 VIZTOR0145 PLA0150 JSR FILL0160 LDX #00170 LOOP LDA TEXT,X0180 STA TXTBUF,X0190 INX0200 CPX }#230210 BNE LOOP0220 JSR OPNSCR0230 JSR PRNTLN0240 RTS1300 FILL1310 LDA #FILLCH1320 LDX #BUFLEN1330 START1340 } DEX1350 STA TXTBUF,X1360 BNE START1370 RTS`axGoodRLJ899) J) J J J 499 OCL{J310 ; DIV2LSR.SRC20 ; DIVIDING BY 2 USING LSR30 ;40 VALUE1=$C050 VALUE2=$C160 ;70 *=$060080 ;90 LDA #60100 STA VAL}UE10110 ;0120 LDA VALUE10130 LSR A0140 STA VALUE20150 .ENDJ ;6LVKLHK&Place the DOS 2.x disk in drive %B%E%EE10 ; ODDEVEN.SRC20 ; ODD OR EVEN?30 ;40 VALUE1=$C050 VALUE2=$C160 FLGADR=$C270 ;80 *=$060090 ;0100 LDA #7; (ODD)0}110 STA VALUE10120 LDA #00130 STA FLGADR; CLEARING FLGADR0140 ;0150 LDA VALUE10160 LSR A; PERFORM THE DIVISION0170} STA VALUE2; DONE0180 ;0190 BCS FLAG0200 RTS; END ROUTINE IF CARRY CLEAR0210 ;0220 FLAG NOP;0230 LDA #$FF; OTHERWIS}E,SET FLAG0240 STA FLGADR0250 RTS; ... AND END PROGRAML N6 ?<J J JJJs:Jt:LK J JL'N}<10 ;20 ;PROGRAM FOR PACKING DATA30 ;40 *=$060050 ;60 NYB1=$C070 NYB2=$C180 PKDBYT=$C290 ;0100 LDA #$040110 STA N}YB10120 LDA #$060130 STA NYB20140 ;0150 CLC0160 LDA NYB10170 ASL A0180 ASL A0190 ASL A0200 ASL A0210 ADC N}YB20220 STA PKDBYT0230 .END3N3NLVNv:4u:4} 6 :L}N4v:4u:;4;46Ny:5Nx:o:) 4N`!10 ; 20 ; RAINBOW.SRC30 ;40 COLRBK=$2C8; THE GRAPHICS 0 BORDER COLOR REGISTER50 TMPCLR=$C0; A PLACE TO STORE COLORS TEMP}ORARILY60 ;70 *=$060080 ;90 START LDA #$FE ; MAX COLOR VALUE0100 STA TMPCLR0110 ;0120 NEWCLR LDA TMPCLR0130 STA CO}LRBK0140 ;0150 LDX #$FF0160 LOOPA NOP; JUST A DELAY LOOP0170 ;0180 LDY #$300190 LOOPB NOP; ANOTHER DELAY LOOP0200 D}EY ; DECREMENT Y REGISTER0210 BNE LOOPB0220 ;0230 DEX ; DECREMENT X REGISTER0240 BNE LOOPA0250 ;0260 DEC TMPCLR ; D}CREMENT TMPCLR0270 DEC TMPCLR ; SUBTRACT 2 FOR NEXT COLOR0280 BNE NEWCLR ; IF NOT ZERO, CHANGE COLORS AGAIN0290 ;0300 }JMP START; ALL COLORS DISPLAYED - NOW DO 'EM ALL AGAIN L5 94L]5Ԇ ؠPIPP` 6P )4L]5810 ;20 ; SETCLR PROGRAM30 ;40 *=$060050 ;60 CLC70 CLD80 LDA #$09; REM LIGHT BLUE90 ASL A0100 ASL A0110 ASL A}0120 ASL A0130 STA $02C6; REM COLOR REGISTER 20140 LDA #$04; HUE NO. 40150 ASL A0160 ADC $02C60170 STA $02C60180} .ENDģ0ʥ 8堅塅`$ 6&*i0:0i 6Ʀ`¢ 护°ڱ%ȱ%10 ;20 ; SETCLR PROGRAM30 ;40 CLRNR=$C0; COLOR NUMBER50 HUENR=$C1; HUE NUMBER60 CLREG=$2C6; COLOR REGISTER NR.70 ;80 }*=$060090 ;0100 LDA #$09; LIGHT BLUE0110 STA CLRNR0120 LDA #$04; HUE #40130 STA HUENR0140 ;0150 CLC ; CLEAR CARRY} FLAG0160 CLD ; CLEAR DECIMAL FLAG0170 LDA CLRNR0180 ASL A0190 ASL A0200 ASL A0210 ASL A0220 STA CLREG0230 LD}A HUENR0240 ASL A0250 ADC CLREG0260 STA CLREG0270 .ENDq8@10 ; 20 ; AN EASIER SETCLR PROGRAM30 ;40 CLRNR=$C0 ; COLOR NUMBER50 HUENR=$C1 ; HUE NUMBER60 CLREG=$2C6 ; COLOR REGISTE}R NO.70 ;80 *=$060090 ;0100 LDA #$90; COLOR NO. 09 TIMES $100110 STA CLRNR0120 LDA #$08 ; HUE NO. 04 TIMES 20130 }STA HUENR0140 ;0150 CLC ; CLEAR CARRY FLAG0160 CLD ; CLEAR DECIMAL FLAG0170 LDA CLRNR0200 STA CLREG0230 LDA HUENR}0250 ADC CLREG0260 STA CLREG0270 .ENDsk and press Ԣ;X 5 :L0;L; 05{;L;}Error %B while %S%E};|;,10 ; 20 ; UNPACKING DATA30 ;40 PKDBYT=$C050 LONYB=$C160 HINYB=$C270 ;80 *=$060090 ;0100 LDA #$45; OR ANYTHING ELSE}0110 STA PKDBYT0120 LDA #0; CLEAR LONYB AND HINYB0130 STA LONYB0140 STA HINYB0150 ;0160 LDA PKDBYT0165 PHA; SAVE} IT ON THE STACK0170 AND #$0F; BINARY 0000 11110180 STA LONYB; LOW NYBBLE0190 PLA; PULL PKDBYT OFF THE STACK0200 LSR }A0210 LSR A0220 LSR A0230 LSR A0240 STA HINYB; HIGH NYBBLE0250 RTS=S 6`L=~=}=L= %S? (Y/N) ~=}=N10 ; 20 ;THIS PROGRAM ADDS A 16-BIT NUMBER IN $B0 AND $B130 ;TO A 16-BIT NUMBER IN $CO AND $C140 ;AND DEPOSITS THE RESULTS} IN $C2 AND $C3 50 ; 60 *=$0600 65 ;70 CLD 80 CLC 90 LDA $B0 ;LOW HALF OF 16-BIT NUMBER IN $B0 AND $B1 100 ADC $C0 ;L}OW HALF OF 16-BIT NUMBER IN $C0 AND $C1 110 STA $C2 120 LDA $B1 ;HIGH HALF OF 16-BIT NUMBER IN $B0 AND $B1 130 ADC $C1 ;HI}GH HALF OF 16-BIT NUMBER IN $C0 AND $C1 140 STA $C3 150 RTS?? 78?8? ;IL? 5)8?Lb?88?03:8? 6`?10 ;20 ;DIVISION.SRC 30 ;40 *=$0600 50 ;60 DVDL=$C0 ;LOW PART OF DIVIDEND70 DVDH=$C1 ;HIGH PART OF DIVIDEND 80 QUOT=$}C2 ;QUOTIENT90 DIVS=$C3 DIVISOR100 RMDR=$C4 ;REMAINDER 110 ;120 LDA #$1C ;JUST A SAMPLE VALUE 130 STA DVDL140 LDA #$}02 ;THE DIVIDEND IS NOW $021C 150 STA DVDH160 LDA #$05 ;ANOTHER SAMPLE VALUE 170 STA DIVS ;WE'RE DIVIDING BY 5180 ;1}90 LDA DVDH ;ACCUMULATOR WILL HOLD DVDH 200 LDX #08 ;FOR AN 8-BIT DIVISOR 210 SEC 220 SBC DIVS 230 DLOOP PHP ;THE LOO}P THAT DIVIDES 240 ROL QUOT 250 ASL DVDL 260 ROL A 270 PLP 280 BCC ADOIT 290 SBC DIVS 300 JMP NEXT 310 ADDIT A}DC DIVS 320 NEXT DEX 330 BNE DLOOP 340 BCS FINI 350 ADC DIVS 360 CLC 370 FINI ROL QUOT 380 STA RMDR 390 RTS ;ENDI}TPB`LB`m LBBB QB5:4:4:5:0?4:5:0LBLB%EYou didn't choose anything!%EB 7`4: >10 ; 20 PRODL=$C0 25 PRODH=$C1 30 MPR=$C2 40 MPD=$C3 50 ; 60 *=$0600 70 ; 80 VALUES LDA #10 90 STA MPR 100 LDA #1}0 110 STA MPD 120 ;130 LDA #0 140 STA PRODL 150 LDX #8 160 LOOP LSR MPR 170 BCC NOADD 180 CLC 190 ADC MPD }200 NOADD ROR A210 ROR PRODL 220 DEX 230 BNE LOOP 235 STA PRODH 240 RTS 250 .END)LmDdLrD`_10 MPR=$C0 ;MULTIPLIER 20 MPD1=$C1 ;MULTIPLICAND 30 MPD2=$C2 ;NEW MULTIPLICAND AFTER 8 SHIFTS 40 PRODL=$C3 ;LOW BYTE OF PR}ODUCT 50 PRODH=$C4 ;HIGH BYTE OF PRODUCT 60 ; 70 *=$060080 ; 85 ;THESE ARE THE NUMBERS WE WILL MULTIPLY 87 ;90 LDA #2}50 100 STA MPR 110 LDA #2 120 STA MPD1 130 ; 140 MULT CLD 150 CLC 160 LDA #O ;CLEAR ACCUMULATOR 170 STA MPD2 ;C}LEAR ADDRESS FOR SHIFTED MULTIPLICAND 180 STA PRODL ;CLEAR LOW BYTE OF PRODUCT ADDRESS 190 STA PRODH ;CLEAR HIGH BYTE OF }PRODUCT ADDRESS 200 LDX #8 ;WE WILL USE THE X REGISTER AS A COUNTER210 LOOP LSR MPR ;SHIFT MULTIPLIER RIGHT; LSB DROPS INT}O CARRY BIT220 BCC NOADD ;TEST CARRY BIT; IF ZERO, BRANCH TO NOADD230 CLC240 LDA PRODL250 ADC MPD1 ;ADD LOW BYTE OF P}RODUCT TO MULTIPLICAND260 STA PRODL ;RESULT IS NEW LOW BYTE OF PRODUCT270 LDA PRODH ;LOAD ACCUMULATOR WITH HIGH BYTE OF P}RODUCT280 ADC MPD2 ;ADD HIGH PART OF MULTIPLICAND 290 STA PRODH ;RESULT IS NEW HIGH BYTE OF PRODUCT300 NOADD ASL MPD1 ;}SHIFT MULIPLICAND LEFT; BIT 7 DROPS INTO CARRY310 ROL MPD2 ;ROTATE CARRY BIT INTO BIT 7 OF MPD2320 DEX ;DECREMENT CONTENT}S OF X REGISTER330 BNE LOOP ;IF RESULT ISN'T ZERO, JUMP BACK TO LOOP340 RTS350 .END`L;I6:)LIB6:5[10 ;20 ;THIS PROGRAM SUBTRACTS A 16-BIT NUMBER IN $B0 AND $B1 30 ;FROM A 16-BIT NUMBER IN $C0 AND $C1 40 ;AND DEPOSITS THE} RESULTS IN $C2 AND $C3 50 60 *=$0600 65 ;70 CLD 80 SEC ;SET CARRY 90 LDA $00 ;LOW HALF OF 16-BIT NUMBER IN $C0 AND $C}1 100 SBC $B0 ;LOW HALF OF 16-BIT NUMBER IN $B0 AND $B1 110 STA$C2 120 LDA $C1 ;HIGH HALF OF 16-BIT NUMBER IN $C0 AND $C1 }130 SBC $B1 ;HIGH HALF OF 16-BIT NUMBER IN $B0 AND $B1 140 STA $C3 150 RTS6:IbL1K4: AGLK6:ICLKLbK#Deleting fileO10 *=$060020 CLD30 CLC40 LDA #$8050 ADC #$FF60 STA $CB70 RTSJɀLKLK writing VTOCKJ ~;`LKLK&%E%EInK10 *=$060020 CLD30 CLC40 LDA #$8D50 ADC #$FF60 PHP70 STA $CB80 PLA90 AND #01100 STA $CC110 RTSL^LAboru10 ; 20 ;NEWMEMLO.SRC 30 ; 40 *=$0600 50 ; 60 NEWMLO=$5000 ;NEW MEMLO ADDRESS 65 MEMLO=$2E7 ;ADDRESS OF MEMLO POINTER7 }0 ; 80 LDA #NEWMLO&255 90 STA MEMLO 100 LDA #NEWMLO/256 110 STA MEMLO+1 120 RTSM 1) Change Drive # [10 ;20 .TITLE "PRNTSC ROUTINE"30 .PAGE "ROUTINE FOR PRINTING ON THE SCREEN"40 ;50 *=$500060 ;70 BUFLEN=255 ;(EXPANDE}D BEYOND PREVIOUS LIMITS)80 ;90 EOL=$9B;ATASCII CODE FOR END OF LINE CHARACTER0100 ;0110 OPEN=$03 ;TOKEN FOR OPENING A DE}VICE OR FILE0120 OWRIT=$0B ;TOKEN FOR "OPEN FOR WRITE OPERATIONS"0130 PUTCHR=$0B ;TOKEN FOR "PUT CHARACTER"0140 CLOSE=$0C };TOKEN FOR CLOSING A DEVICE0150 ;0160 IOCB2=$20 ;OFFSET FOR IOCB NO.20170 ICCOM=$342 ;COMMAND BYTE (CONTROLS CIO OPERATION}S)0180 ICBAL=$344 ;BUFFER ADDRESS (LOW BYTE)0190 ICBAH=$345 ;BUFFER ADDRESS (HIGH BYTE)0200 ICBLL=$348 ;BUFFER LENGTH (LOW} BYTE)0210 ICBLH=$349 ;BUFFER LENGTH (HIGH BYTE)0220 ICAX1=$34A ;AUXILIARY BYTE NO.10230 ICAX2=$34B ;AUXILIARY BYTE NO.20}235 ;0240 CIOV=$E456 ;CIO VECTOR0250 ;0260 DEVNAM .BYTE "E:",EOL0270 ;0280 OSCR ;OPEN SCREEN ROUTINE0290 LDX #IOCB203}00 LDA #OPEN0310 STA ICCOM,X0320 ;0330 LDA #DEVNAM&2550340 STA ICBAL,X0350 LDA #DEVNAM/2560360 STA ICBAH,X0370 ;}0380 LDA #OWRIT0390 STA ICAX1,X0400 LDA #00410 STA ICAX2,X0420 JSR CIOV0430 ;0440 LDA #PUTCHR0450 STA ICCOM,X}0460 ;0470 LDA #TXTBUF&2550480 STA ICBAL,X0490 LDA #TXTBUF/2560500 STA ICBAH,X0510 RTS0520 ;0530 PRNT0540 LDX #}IOCB20550 LDA #BUFLEN&2550560 STA ICBLL,X0570 LDA #BUFLEN/2560580 STA ICBLH,X0590 JSR CIOV0600 RTS0605 ;0610 CL}OSED0620 LDX #IOCB20630 LDA #CLOSE0640 STA ICCOM,X0650 JSR CIOV0660 RTS0680 TXTBUF=*0690 ;0700 *=*+BUFLEN0710 };0720 .END $CB30 NUM2 = $CE40 SUM = $D450 ;60 *=$060070 ;90 CLD0100 PLA;CLEAER # OF ARGS. FROM ACC.0105 PLA02000 ;2010 ; FIX DATA2020 ;2030 FIX NOP2040 LDA #START&255; STARTING ADDRESS OF NEW DISPLAY LIST (LOW BYTE)2050 STA TE}MPTR2060 LDA #START/256; NEW DISPLAY LIST ADDRESS (HIGH BYTE)2070 STA TEMPTR+12080 ;2090 ; "FIX DATA" SUBROUTINE2100 ;}2110 LDY #0; LOAD Y REGISTER WITH DUMMY 0 FOR INDIRECT INDEXED ADDRESSING2120 FXDT NOP2130 LDA (TEMPTR),Y; START WITH FI}RST CHARACTER IN BLOCK2140 CMP #EOF; IS IT AN END OF FILE CHARACTER ($88)?2150 BEQ DONE; IF SO, WE'RE DONE -- EXIT SUBROU}TINE2160 JSR FXCH; ELSE JUMP TO "FIX CHARACTER" SUBROUTINE2170 STA (TEMPTR), Y; THEN REPLACE OLD CHARACTER WITH NEW ONE2 }180 INC TEMPTR; ... AND INCREMENT TEMPTR (LOW BYTE)2190 BNE FXDT; IF NO CARRY TO HIGH BYTE, START AGAIN2200 INC TEMPTR+1!}; ELSE INCREMENT TEMPTR'S HIGH BYTE2210 JMP FXDT; ... AND THEN GO BACK TO FXDT AND START AGAIN2220 ;2230 DONE NOP; MAIN S"}UBROUTINE DONE -- ALL CHARACTERS CONVERTED2240 RTS; SO NOW WE RETURN TO PROGRAM IN PROGRESS2250 ;2260 ; "FIX CHARACTER" R#}OUTINE"2270 ;2280 FXCH NOP2290 CMP #32; IS CHARACTER CODE <32 ?2300 BCC ADD64; IF SO, JUMP TO "ADD64" ROUTINE2310 ;23$}20 CMP #96; IS IT < 96?2330 BCC SUB32; IF SO, JUMP TO "SUBTRACT 32" ROUTINE2340 ;2350 CMP #128; < 128?2360 BCC FIXT; %}IF SO; JUMP TO "FIXT" ROUTINE (NO ACTION)2370 ;2380 CMP #160; < 160?2390 BCC ADD64; IF SO, JUMP TO ADD642400 ;2410 CM&}P #224; < 224?2420 BCC SUB32; IF SO , JUMP TO SUB322430 ;2440 JMP FIXT; IF BETWEEN 224 AND 255, NO ACTION NEEDED2450 ;'}2460 ADD64 NOP2470 CLC; CLEAR CARRY TO ADD2480 ADC #64; THEN ADD 642490 JMP FIXT; RETURN TO MAIN(FXDT) SUBROUTINE2500 (};2510 SUB32 NOP2520 SEC; SET CARRY FOR SUBTRACTION2530 SBC #32; AND SUBTRACT 322540 FIXT NOP2550 RTS; RETURN TO MAIN )}(FIXDT) SUBROUTINE? :? "ENTER A POSITIVE INTEGER (0 TO 255):":? :TRAP 40:INPUT NR50 IF NR-INT(NR)<>0 THEN 4060 IF NR>255 10 ;20 ;HELLO SCREEN (COARSE)30 ;40 *=$300050 JMP INIT60 ;70 TCKPTR=$200080 ;90 SDMCTL=$022F100 ;110 SDLSTL=$0230+}120 SDLSTH=$0231130 ;140 COLOR0=$02C4; OS COLOR REGISTERS150 COLOR1=$02C5160 COLOR2=$02C6170 COLOR3=$02C7180 COLOR4=$0,}2C8190 ;200 ;DISPLAY LIST DATA210 ;220 START230 LINE1 .SBYTE " PRESENTING "240 LINE2 .SBYTE " -} "250 .SBYTE " THE BIG PROGRAM "260 .SBYTE " "270 LINE3 .SBYTE " By (You.}"280 .SBYTE "r Name) "290 LINE4 .SBYTE " PLEASE STAND BY"300 ;310 ; HELLO DISPLAY LIST320 ;330 HLIST/}340 .BYTE $70,$70,$70350 .BYTE $70, $70, $70, $70,$70360 .BYTE $46370 .WORD LINE1380 .BYTE $70,$70,$70,$70,$47390 S0}CROLN NOP400 .WORD $00410 .BYTE $70,$42420 .WORD LINE3 430 .BYTE $70,$70,$70,$70,$46440 .WORD LINE4450 .BYTE $70,1}$70,$70,$70,$70460 .BYTE $41470 .WORD HLIST480 ;490 ;RUN PROGRAM500 ;510 INIT NOP520 LDA COLOR3530 STA COLOR15402} LDA COLOR4550 STA COLOR2560 ; 570 LDA #0580 STA SDMCTL590 LDA #HLIST&255600 STA SDLSTL610 LDA # HLIST/256620 3} STA SDLSTH630 LDA #$22640 STA SDMCTL650 ;660 ; COARSE SCROLLING ROUTINE670 ;680 LDA #40690 STA TCKPTR700 JSR TC4}KSET710 ;720 COARSE NOP730 LDY TCKPTR; 40 TO START740 DEY750 BNE SCORSE760 LDY #40770 JSR TCKSET780 SCORSE NOP75}90 STY TCKPTR800 INC SCROLN810 BNE LEAP820 INC SCROLN+1830 ;840 ; DELAY LOOP850 ;860 LEAP NOP870 TYA880 PHA; S6}AVE Y REGISTER890 LDX #$FF900 XLOOP NOP910 LDY #$80920 YLOOP NOP930 DEY940 BNE YLOOP950 ;960 DEX970 BNE XLOOP7}980 PLA990 TAY; RESTORE Y REG1000 ;1010 JMP COARSE1020 ;1030 TCKSET NOP1040 LDA #LINE2&2551050 STA SCROLN1060 L8}DA #LINE2/2561070 STA SCROLN+11080 ENDIT NOP1090 RTS$500050 EOL=$9B70 ;80 *=$60090 ;0100 TEXT .BYTE $54,$41,$4B,;10 ;20 ;HELLO SCREEN30 ;40 *=$300050 JMP INIT60 ;70 SDMCTL=$022F80 ;90 SDLSTL=$02300100 SDLSTH=$02310110 ;0120 C:}OLOR0=$02C4; OS COLOR REGISTERS0130 COLOR1=$02C50140 COLOR2=$02C60150 COLOR3=$02C70160 COLOR4=$02C80170 ;0180 ;DISPLAY ;}LIST DATA0190 ;0200 START0210 ;0220 LINE1 .SBYTE " PRESENTING "0230 LINE2 .SBYTE " the big program "0240 LIN<}E3 .SBYTE " By (your name) "0250 ;0260 LINE4 .SBYTE " PLEASE STAND BY "0270 ;0280 ;DISPLAY LIST0290 ;0300 HLIST=}0310 .BYTE $70,$70,$70; 3 BLANK LINES0320 .BYTE $70, $70, $70, $70,$70; MORE BLANK LINES0330 .BYTE $46; LSM, ANTIC MODE >}6 (BASIC MODE 2)0340 .WORD LINE1; (TEXT LINE: "PRESENTING...")0350 .BYTE $70,$70,$70,$70,$47; LMS, ANTIC MODE 70360 .WO?}RD LINE2; (TEXT LINE: "THE BIG PROGRAM")0370 .BYTE $70,$42; (LMS, ANTIC MODE 2 [GR.0])0380 .WORD LINE3;(TEXT LINE: "By [Y@}our Name]") 0390 .BYTE $70,$70,$70,$70,$46;LMS, ANTIC MODE 60400 .WORD LINE4; (TEXT LINE: "PLEASE STAND BY")0410 .BYTE A}$70,$70,$70,$70,$70; 5 BLANK LINES0420 .BYTE $41; JVB INSTRUCTION0430 .WORD HLIST; TO JUMP BACK TO START OF LIST0440 ;0B}450 ;RUN PROGRAM0460 ;0470 INIT NOP; SWITCHING COLOR REGISTERS FOR NICELY COLORED DISPLAY0480 LDA COLOR30490 STA COLOR1C}0500 LDA COLOR40510 STA COLOR20520 ; NOW WE'LL RUN THE PROGRAM0530 LDA #00540 STA SDMCTL; TURN ANTIC OFF FOR A MOMEND}T ...0550 LDA #HLIST&; WHILE WE STORE OUR NEW LIST'S ADDRESS0560 STA SDLSTL; IN THE OS DISPLAY POINTER.0570 LDA # HLISTE}/256; NOW FOR THE HIGH BYTE.0580 STA SDLSTH; NOW ANTIC WILL KNOW OUR NEW ADDRESS0590 LDA #$220600 STA SDMCTL; ... SO WEF}'LL TURN ANTIC BACK ON NOW0610 ;0620 FINI0630 RTS55):2(< @@@2&P:,@@<!!!AU) 710 ;20 ;ALTERING GRAPHICS CHARACTERS30 ;50 *=$060060 JMP MOVDAT70 ;80 CHBAS=$02F490 NEWADR=$50000100 TABLEN=102401H}10 ;0120 MVSRCE=$B0;PAGE ZERO PTR0130 MVDEST=MVSRCE+2;DITTO0140 CHRADR=MVDEST+2;DITTO0150 ;0160 LENPTR=$6000;ANOTHER POII}NTER0170 RAMCHR=LENPTR+2;DITTO0180 ;0190 SHAPE .BYTE $18,$DB,$42,$7E,$18,$7E,$66,$E7;A MAN0200 ;0210 START=MOVDAT0220 ;J}0230 MOVDAT0240 ;0250 ; STORE VALUES IN PONTERS0260 ;0270 LDA #00280 STA MVSRCE;LOW BYTE0290 LDA CHBAS;HIGH BYTE03K}00 STA MVSRCE+1;HIGH BYTE0310 ;0320 LDA #NEWADR&2550330 STA MVDEST0340 LDA #NEWADR/2560350 STA MVDEST+10360 ;0370L} LDA #TABLEN&2550380 STA LENPTR0390 LDA #TABLEN/2560400 STA LENPTR+10410 ;0420 ;START MOVE0430 ;0440 LDY #00450 M} LDX LENPTR+10460 BEQ MVPART0470 MVPAGE0480 LDA (MVSRCE),Y0490 STA (MVDEST),Y0500 INY0510 BNE MVPAGE0520 INC MVSN}RCE+10530 INC MVDEST+10540 DEX0550 BNE MVPAGE0560 MVPART0570 LDX LENPTR0580 BEQ MVEXIT0590 MVLAST0600 LDA (MVSRO}CE),Y0610 STA (MVDEST),Y0620 INY0630 DEX0640 BNE MVLAST0650 MVEXIT0660 ;0670 ;PART II: CHANGE CHARACTER0680 ;069P}0 ;WE'LL ALTER THE CHARACTER "A"0700 ;0710 LDA #33;RAM CODE: "A"0720 STA RAMCHR0730 ;0740 ;NOW WE CALCULATE RAMCHR'S AQ}DR0750 ;0760 LDA #00770 STA RAMCHR+1;CLEARING IT0780 LDA RAMCHR;#33:AN "A"0790 CLC0800 ASL A;MULT BY 20810 ROL RR}AMCHR+1;GET CARRY0820 ASL A;AGAIN0830 ROL RAMCHR+10840 ASL A;AND AGAIN0850 ROL RAMCHR+10860 STA RAMCHR;MULT BY 8 DOS}NE0870 ;0880 FNDADR0890 CLC0900 LDA RAMCHR0910 ADC #NEWADR&2550920 STA CHRADR0930 LDA RAMCHR+10940 ADC #NEWADR/T}2560950 STA CHRADR+10960 ;0970 ;NOW WE CHANGE THE CHARACTER0980 ;0990 NEWCHR1000 LDY #0; NR OF BYTES+11010 DOSHAPE1U}020 LDA SHAPE,Y1030 STA (CHRADR),Y1040 INY1050 CPY #8;WRONG IN BOOK1060 BCC DOSHAPE;REPEAT TILL DONE1070 ;1080 ;STV}ORE NEW CHR SET ADR IN CHBAS1090 ;1100 LDA #NEWADR/256;HIGH BYTE1110 STA CHBAS1120 ;1130 FINI1140 RTS1360 BNE STp05 ;10 ;20 ;HELLO SCREEN (FINE)30 ;40 *=$300050 JMP INIT60 ;70 TCKPTR=$200080 FSCPTR=TCKPTR+190 ;0100 SDMCTL=$022X}F0110 ;0120 SDLSTL=$02300130 SDLSTH=$02310140 ;0150 COLOR0=$02C4;OS COLOR REGISTERS0160 COLOR1=$02C50170 COLOR2=$02C6Y}0180 COLOR3=$02C70190 COLOR4=$02C80299 ;0210 HSCROL=$D4040220 ;0230 VVBLKI=$0222; OS INTERRUPT VECTOR0240 SYSVBV=$E45FZ}; INTERRUPT ENABLE VECOTR0250 ;0260 SETVBV=$E45C; SET VERTICAL BLANK INTERRUPT (VBI) VECTOR0270 XITVBV=$E462; EXIT VBI VEC[}TOR0280 ;0290 ; DISPLAY LIST DATA0300 ;0310 START0320 LINE1 .SBYTE " PRESENTING "0330 LINE2 .SBYTE " \} "0340 .SBYTE " the big program "0350 .SBYTE " "0360 LINE3 .SBYTE " By (You"0370 .SBYTE]} "r Name) "0380 LINE4 .SBYTE "PLEASE STAND BY "0390 ;0400 ; DISPLAY LIST WITH SCROLLING LINE0410 ;0420 HLIST^} ;('HELLO' LIST)0430 .BYTE $70, $70, $700440 .BYTE $70,$70,$70,$70,$700450 .BYTE $460460 .WORD LINE10470 ;NOTE THAT _}THE LAST BYTE IN THE0480 ;NEXT LINE IS $57, NOT $47 AS IT0490 ;WAS IN THE PRECEDING CHAPTER0500 .BYTE $70,$70,$70,$70,$57`}0509 ;THIS THE LINE WE'LL SCROLL0510 SCROLN ;(THIS IS THE LINE WE'LL SCROLL)0520 .WORD $00; A BLANK TO BE FILLD IN LATERa}0530 .BYTE $70,$420540 .WORD LINE30550 .BYTE $70,$70,$70,$70,$460560 .WORD LINE40570 .BYTE $70,$70,$70,$70,$700580 b} .BYTE $410590 .WORD HLIST0600 ;0610 ;RUN PROGRAM0620 ;0630 INIT ;PREPARE TO RUN PROGRAM0640 LDA COLOR3; SET COLOR REc}GISTERS0650 STA COLOR1;0660 LDA COLOR4;0670 STA COLOR2;0680 ;0690 LDA #00700 STA SDMCTL0710 LDA #HLIST&2550720 d} STA SDLSTL0730 LDA #HLIST/2560740 STA SDLSTH0750 LDA #$220760 STA SDMCTL0770 ;0780 JSR TCKSET; INITIALIZE TICKER e}ADDRESS0790 ;0800 LDA #40; NUMBER OF CHARACTERS IN SCROLL LINE0810 STA TCKPTR0820 LDA #80830 STA FSCPTR; NUMBER OF Cf}LOR CLOCKS TO FINE SCROLL0840 ;0850 ; ENABLE INTERRUPT0860 ;0870 LDY #TCKINT&2550880 LDX #TCKINT/2560890 LDA #60900g} JSR SETVBV0910 ;0920 ; TICKER INTERRUPT0930 ;0940 TCKINT0950 LDA #SCROLL&2550960 STA VVBLKI0970 LDA #SCROLL/2560q}9B%DOS SYSB*)DUP SYSBSHEADSUP BASBVHEADSUP LSTBXBIN2DEC BASB]BIN2DEC LSTBaDEC2BIN BASBfDEC2BIN LSTB jHEX2DEC BASB tHEX2DEC LSTB~RAINBOW BASBRAINBOW LSTBRETRE16BBASBRETRE16BLSTBSTOR16BIBASBSTOR16BILSTBSOUNDOFFBASBSOUNDOFFLSTBADDNRS SRCBADDNRS2 SRCBADDNRS3 SRCBADDWERR SRCBMOVEBLOCSRCBSTACKADDSRCBPRNTSC1 SRCBRESPONS1SRCBRESPONS2SRCBVISITOR1SRCBVISITOR2SRCBADD16B SRCBADDMACHIBASBADDMACHILSTBRESPONS3SRCBVISITOR3SRCBDIV2LSR SRCBODDEVEN SRCBPACKDATASRCBRAINBOW SRCBSETCLR1 SRCBSETCLR2 SRCBSETCLR3 SRCBUNPACK SRCB16BITADDSRCB16BITDIVSRCB16BITMU2SRCB 16BITMULSRCB16BITSUBSRCB 8BITADC1SRCB 8BITADC2SRCB MEMLOPOISRCB PRNTSC SRCBASCIICONSRCB*CORSCROLSRCB9HELLOSCRSRCBGCHARAMODSRCBWFINESCRLSRCB wPMGRAPH SRC980 STA VVBLKI+10990 ;1000 INFIN1010 JMP INFIN; INFINITE LOOP1020 ;1030 SCROLL1040 LDX FSCPTR; 8 TO START1050 DEXr}1060 STX HSCROL1070 BNE CONT1080 LDX #81089 ;CONINUE1090 CONT1100 STX FSCPTR1110 CPX #71120 BEQ COARSE1130 JMPs} SYSVBV1140 COARSE1150 LDY TCKPTR; NUMBER OF CHARACTERS TO SCROLL1160 DEY1170 BNE SCORSE; LOOP BACK TILL FULL LINE IS t}SCROLLED1180 LDY #401190 JSR TCKSET; RESET TICKER LINE1199 ;DO COARSE SCROLL1200 SCORSE1210 STY TCKPTR1220 INC SCROu}LN; LOW BYTE OF ADDRESS1230 BNE RETURN1240 INC SCROLN+1; HIGH BYTE OF ADDRESS1250 RETURN1260 JMP SYSVBV1270 ;1280 TCv}KSET1290 LDA #LINE2&2551300 STA SCROLN1310 LDA #LINE2/2561320 STA SCROLN+11330 ENDIT1340 RTSGOTO INKEY:REM D500i10 ;20 ; PLAYER-MISSLE GRAPHICS ROUTINE30 ;50 *=$500060 JMP START70 ;80 RAMTOP=$6A ;TOP OF RAM PTR90 VVBLKD=$0224 ;Ix}NTERRUPT RTN0100 SDMCTL=$022F ;DMA CNT. SHADOW0110 SDLSTL=$0230 ;SDLST, LOW BYTE0120 STICK0=$02780130 PCOLR0=$02C0 ;PLAYEy}R COLOR0140 COLOR2=$02C6 ;BKG COLOR0150 ;0160 HPOSP0=$D000 ;PLAYER HORZ PSN0170 GRACTL=$D01D0180 PACTL=$D302 ;JS PORT CNz}TRL0190 PMBASE=$D407 ;PM BASE ADR0200 SETVBV=$E45C ;ENABLE INTRPT0210 XITVBV =$E462 ;EXIT INTERRUPT0220 ;0230 HRZPTR=$06{}00 ;HORIZ PSN PTR0240 VRTPTR=HRZPTR+1 ;VRT PSN PTR0250 OURBAS=VRTPTR+1 ;OUR PMBASE0260 TABSIZ=OURBAS+2 ;TABLE SIZE0270 FI|}LVAL=TABSIZ+2 ;BLKFIL VALUE0280 ;0290 TABPTR=$B0 ;TABLE ADDR PTR0300 TABADR=TABPTR+2 ;TABLE ADDRESS0310 ;0320 PLBOFS=512}} ;PLAYER BAS OFFS0330 PLTOFS=640 ;PLAYER TOP OFFS0340 ;0350 SHAPE .BYTE $00,$6C,$FE,$FE,$7C,$38,$10,$000360 ;0370 START~}0380 ;0390 ;CLEAR SCREEN0400 ;0410 LDA #00420 STA FILVAL0430 LDA SDLSTL0440 STA TABPTR0450 LDA SDLSTL+10460 STA} TABPTR+10470 LDA #960&255 ;BYTES PER SCRN0480 STA TABSIZ0490 LDA #960/2560500 STA TABSIZ+10510 JSR BLKFIL0520 ;0}530 ;DEFINE PMG VARIABLES0540 ;0550 LDA #00560 STA COLOR2 ;BLACK BKG0570 LDA #$580580 STA PCOLR0 ;PINK PLAYER0590 ;}0600 LDA #100 ;SET HORIZ PSN0610 STA HRZPTR0620 STA HPOSP00630 ;0640 LDA #48 ;SET VERT PSN0650 STA VRTPTR0660 ;0}670 LDA #0 ;CLEAR OURBASE0680 STA OURBAS0690 STA OURBAS+10700 ;0710 SEC0720 LDA RAMTOP0730 SBC #80740 STA PMBAS}E ;BASE=RAMTOP-2K0750 STA OURBAS+1 ;SAVE BASE ADR0760 ;0770 LDA #460780 STA SDMCTL ;ENABLE PM DMA0790 ;0800 LDA #3}0810 STA GRACTL ;ENABLE PM DSPLY0820 ;0830 ;FILL PM RAM W/ZEROS TO CLEAR0840 ;0850 CLC0860 LDA OURBAS0870 ADC #PLBO}FS&2550880 STA TABADR0890 STA TABPTR0900 LDA OURBAS+10910 ADC #PLBOFS/2560920 STA TABADR+10930 STA TABPTR+10940 };0950 SEC0960 LDA #PLTOFS&2550970 SBC #PLBOFS&2550980 STA TABSIZ0990 LDA #PLTOFS/2561000 SBC #PLBOFS/2561010 ST}A TABSIZ+11020 ;1030 LDA #01040 STA FILVAL1050 JSR BLKFIL1060 ;1070 ;DEFINE PLAYER1080 ;1090 PLAYER1100 ;1110 ;D}RAW PLAYER1120 ;1130 JSR DRAWPL1140 ;1150 ;ENABLE INTERRUPT1160 ;1170 LDY #INTRPT&2551180 LDX #INTRPT/2561190 LDA} #71200 JSR SETVBV1210 ;1220 INTRPT1230 LDA #RDSTIK&2551240 STA VVBLKD1250 LDA #RDSTIK/2561260 STA VVBLKD+11270 };1280 ;INFINITE LOOP1290 ;1300 INFIN1310 JMP INFIN1320 ;1330 ;READ JOYSTICK1340 ;1350 RDSTIK1360 LDA #41370 ORA }PACTL ;SET BIT #51380 ;1390 LDA STICK01400 CMP #$F ;JS STRAIGHT UP?1410 BEQ RETURN ;YES, NO ACTION1420 ;1430 TRYAGN}1440 CMP #$07 ;RIGHT MOVE1450 BNE TRYAG21454 STA EYEOFS1460 LDX HRZPTR1470 INX1480 STX HRZPTR1490 STX HPOSP0150}0 JMP RETURN1510 ;1520 TRYAG21530 CMP #$0B ;LEFT MOVE1540 BNE TRYAG31550 ;1560 LDX HRZPTR1570 DEX1580 STX HRZPT}R1590 STX HPOSP01600 JMP RETURN1610 ;1620 TRYAG31630 CMP #$0D ;DOWN MOVE1640 BNE TRYAG41650 ;1660 INC VRTPTR167}0 JSR DRAWPL1680 JMP RETURN1690 ;1700 TRYAG41710 CMP #$0E ;UP MOVE1720 BNE RETURN1730 ;1740 DEC VRTPTR1750 JSR }DRAWPL1760 JMP RETURN1770 ;1780 RETURN1790 JMP XITVBV1800 ;1810 ;BLOCK FILL ROUTINE1820 ;1830 BLKFIL1840 ;1850 ;D}O FULL PAGES FIRST1860 ;1870 LDA FILVAL1880 LDX TABSIZ+11890 BEQ PARTPG1900 LDY #01910 FULLPG1920 STA (TABPTR), Y}1930 INY1940 BNE FULLPG1950 INC TABPTR+11960 DEX1970 BNE FULLPG1980 ;1990 ;DO REMAINING PARTIAL PAGE2000 ;2010 }PARTPG2020 LDX TABSIZ2030 BEQ FINI2040 LDY #02050 ;2060 PARTLP2070 STA (TABPTR),Y2080 INY2090 DEX2100 BNE PAR}TLP2110 ;2120 FINI2130 RTS2140 ;2150 DRAWPL2160 PHA ;SAVE ACC VALUE2170 CLC2180 LDA TABADR2190 ADC VRTPTR2200 } STA TABPTR2210 LDA TABADR+12220 ADC #02230 STA TABPTR+12240 ;2250 LDA #02260 FILLPL2270 LDA SHAPE,Y2280 STA (T}ABPTR), Y2290 INY2300 CPY #82310 BCC FILLPL ;REPEAT TILL DONE2320 PLA ;RESTORE ACC VAL2330 RTSF MY>108 THEN POKE jT+MISPD,CZ:M1=CZ:GOSUB 860:GOTO 165160 IF PEEK(53248)=C1 THEN POKE T+MISPD,CZ:M1=CZ:COLOR C3:PLOT MX,88:DRAWTO MX-C1,90:GOSU!}B 26:PNTS=50:GOSUB 25165 POKE T,CZ:MY=MY+MISPD:IF PEEK(53248)=4 THEN A=USR(ADR(EXPL$),MX,MY-20):POKE T+MISPD,CZ:M1=CZ:GOSUB !}860200 RETURN 300 DATA 45,2301 DATA 150,-2302 DATA 3,2303 DATA 36,0304 DATA 54,2305 DATA 99,-2306 DATA 117,-2307 DAT!}A 99,-2308 DATA 48,2309 DATA 148,0310 DATA 23,2311 DATA 138,-2312 DATA 16,0313 DATA 108,0314 DATA 56,0315 DATA 16,03!}16 DATA 32,2317 DATA 128,0318 DATA 84,0319 DATA 20,2400 COLOR C1:FOR X=CZ TO 7:PLOT X,95-X:DRAWTO 159-X,95-X:NEXT X:COLOR!} C2:PLOT 7,87:DRAWTO 152,87421 DATA 11,31,51,103,123,143425 Y=91:RESTORE 421:FOR M=C1 TO C6:READ X426 IF B$(M,M)="0" THEN !}430427 COLOR C2:FOR B=CZ TO 5:PLOT X+B,Y:DRAWTO X+B,Y-C2:NEXT B428 COLOR C3:PLOT X,Y-C3:DRAWTO X+5,Y-C3429 PLOT X+C1,Y-4:D!}RAWTO X+C6,Y-4:DRAWTO X+C6,Y-C1:PLOT X+7,Y-C2:DRAWTO X+7,Y-5:DRAWTO X+C2,Y-5:PLOT X+C2,Y430 NEXT M434 COLOR CZ:FOR B=80 TO !}144 STEP C2:PLOT B,94:NEXT B:AMMO=144435 RESTORE 439:F=CZ:COLOR C3436 FOR T=C1 TO 4:READ X,Y,Z:PLOT X,Y:DRAWTO Z,Y:NEXT T:I!}F F=CZ THEN F=1:COLOR C2:GOTO 436437 COLOR C3:PLOT 84,89:PLOT 87,92:PLOT 85,87:DRAWTO 85,89:COLOR CZ:PLOT 81,87:PLOT 82,87:P!}LOT 80,93439 DATA 74,91,88,75,90,89,77,88,84,78,87,84,73,93,86,73,92,86,76,90,83,76,89,83445 RETURN 450 RESTORE 460:FOR X=!}5 TO 15:READ N:XX(X)=N:READ N:YY(X)=N:NEXT X:RETURN 460 DATA 1,1,1,-1,1,0,0,0,-1,1,-1,-1,-1,0,0,0,0,1,0,-1,0,0600 STRMTYPE=!}INT(RND(CZ)*4)+(4*P):RESTORE STRMTYPE+300:READ B,C:X(P)=B:Y(P)=C2:START(P)=B:SLOPE(P)=C:RETURN 700 A=PEEK(106)-20:PMBASE=256!}*A:A=USR(ADR(POK$),54279,A,559,46,53277,3,53248,P1,623,2,704,206,706,62,705,15)730 PLYR=40:Y=384840 Y=384842 POKE PMBASE+Y!},CZ:A=USR(ADR(MOV$),PMBASE+Y,PMBASE+Y+1,255):IF Y=384 THEN Y=640:GOTO 842843 RETURN 850 Y=ATTACK*-C2:FOR X=C1 TO C2:SOUND C!}3,174+Y,10,8:SOUND C1,176+Y,10,7:FOR Y=50 TO 300:NEXT Y:NEXT X860 SOUND C3,CZ,CZ,CZ:SOUND C1,CZ,CZ,CZ:RETURN 899 REM ---DRA!}W VERTICAL LINES---900 RESTORE 990:FOR D=1 TO 350:NEXT D910 READ X,Y:IF X=-1 THEN 929911 COLOR 3:PLOT 81,87:DRAWTO X,Y:SOU!}ND 0,0,0,0:COLOR 0:DRAWTO 81,87:DRAWTO X,Y915 FOR I=Y TO Y+7925 COLOR I/2:PLOT X,I:SOUND 0,I,0,8927 NEXT I:GOTO 910929 CO!}LOR 2:PLOT 119,35:DRAWTO 112,42:DRAWTO 119,50:PLOT 97,24:DRAWTO 104,31930 REM ---DRAW HORIZONTAL LINES---932 READ X,Y:IF X=!}-1 THEN 950935 FOR I=X TO X+7945 COLOR I:PLOT I,Y:SOUND 0,Y,10,8947 NEXT I:GOTO 930950 RESTORE 990:FOR D=1 TO 300:NEXT D:!}SOUND 0,0,0,0952 READ X,Y:IF X=-1 THEN 960955 A=USR(ADR(EXPL$),X+1,Y+3):FOR D=1 TO 30:NEXT D:GOTO 952960 FOR Y=0 TO 6:A=US!}R(ADR(EXPL$),104,16+Y*7):NEXT Y:FOR Y=O TO 3:A=USR(ADR(EXPL$),119,35+Y*8):NEXT Y962 FOR D=1 TO 500:NEXT D:RETURN 990 DATA 7!}0,16,70,24,77,16,77,24,87,16,87,24,97,16,97,24,104,16991 DATA 50,35,50,43,57,35,57,43,65,35,65,43,76,35,76,43,83,35,83,43,90!},35,90,43,100,35,100,43,112,35,112,43,-1,-1993 DATA 70,16,70,24,84,16,84,31,97,16,97,24995 DATA 50,35,50,43,62,35,73,35,83,!}35,83,43,100,35,100,50,-1,-11000 DIM SLOPE(10),X(10),Y(10),START(10),B$(6),XX(15),YY(15),PL1$(9),AIM$(11),MOV$(39),POK$(25)!}1005 CZ=0:C1=1:C2=2:C3=3:C6=6:POKE 559,CZ:GOSUB 10010:GOSUB 450:POKE 559,341009 GRAPHICS 7+16:DL=PEEK(560)+256*PEEK(561)101!}0 SCORE=CZ:FREECITY=2000:ATTACK=CZ:B$="111111":GOSUB 700:GOSUB 30001011 GOSUB 900:GOSUB 850:A=USR(ADR(POK$),710,2,712,148,DL!}+3,66)1020 RETURN 2850 IF SCORE9 THEN ATTACK=93015 RESTORE 3500+ATTACK:READ A,B,C,D,E!}:STLIMIT=A:STREAMS=B:SPEED=C:PROB=D:MISPD=E3018 FOR P=CZ TO STREAMS:GOSUB 600:NEXT P3020 IF ATTACK>C1 THEN GOSUB 4000:FOR D!}=C1 TO 200:NEXT D:GOSUB 2850:GOSUB 42003200 STCNT=CZ:YP1=60:YAIM=60:XAIM=993220 POKE 752,C1:? #C6;"}":PNTS=CZ:GOSUB 25:GOSU!}B 400:IF ATTACK>C1 THEN GOSUB 850:GOTO 503400 RETURN 3501 DATA 15,3,2,5,13502 DATA 20,3,3,10,13503 DATA 20,4,3,15,23504 !}DATA 20,4,5,20,13505 DATA 20,4,6,40,13506 DATA 20,4,6,95,23507 DATA 20,4,7,99,23508 DATA 20,4,7,140,33509 DATA 20,4,9,20!}0,34000 FOR D=C1 TO 200:NEXT D:RESTORE 421:COLOR CZ:Y=91:B$="000000"4005 FOR X=C1 TO C6:READ A:LOCATE A+C3,Y-C2,Z4010 IF Z!}=C2 THEN PNTS=100:GOSUB 25:FOR B=CZ TO 7:PLOT A+B,Y:DRAWTO A+B,Y-5:NEXT B:GOSUB 4100:B$(X,X)="1"4040 NEXT X4055 COLOR C1:FO!}R B=AMMO TO 80 STEP -C2:PLOT B,94:GOSUB 4100:PNTS=5:GOSUB 25:NEXT B4090 RETURN 4100 FOR S=5 TO 45 STEP 10:SOUND CZ,S,8,S/C3!}:NEXT S:SOUND CZ,CZ,CZ,CZ:FOR D=C1 TO 20:NEXT D:RETURN 4200 IF B$<>"000000" THEN RETURN 4201 POKE 53277,0:GRAPHICS C2:? #C6!};" PRESS BUTTON"," TO PLAY AGAIN":POSITION 4,5:? #C6;"score:";SCORE4202 IF STRIG(0)=0 THEN POP :GOSUB 1009:GOTO 50420!}5 GOTO 420210010 DIM INIT$(41),EXPL$(29),MAIN$(355),COORD1$(89),COORD2$(89):RESTORE 1100010020 FOR X=1 TO 89:READ A:COORD1$!}(X,X)=CHR$(A):NEXT X:FOR X=1 TO 89:READ A:COORD2$(X,X)=CHR$(A):NEXT X10040 FOR X=1 TO 41:READ A:INIT$(X,X)=CHR$(A):NEXT X:FO!}R X=1 TO 355:READ A:MAIN$(X,X)=CHR$(A):NEXT X10050 FOR X=1 TO 29:READ A:EXPL$(X,X)=CHR$(A):NEXT X10060 FOR X=1 TO 25:READ A!}:POK$(X,X)=CHR$(A):NEXT X:FOR X=1 TO 39:READ A:MOV$(X,X)=CHR$(A):NEXT X10070 FOR X=1 TO 9:READ A:PL1$(X,X)=CHR$(A):NEXT X:FO!}R X=1 TO 11:READ A:AIM$(X,X)=CHR$(A):NEXT X10080 POKE 1568,192:POKE 1569,48:POKE 1570,12:POKE 1571,310100 A=USR(ADR(INIT$),!}ADR(MAIN$),ADR(COORD1$),ADR(COORD2$),0,1)10110 RETURN 11010 DATA 0,1,255,0,255,0,255,2,1,1,0,254,255,1,0,1,254,254,2,0,1,25!}5,2,2,2,255,254,1,253,3,3,4,252,253,25411020 DATA 255,254,2,3,3,253,0,0,0,4,4,252,255,2,0,3,2,1,253,254,254,252,253,3,253,25!}2,251,251,252,4,3,4,25511030 DATA 5,5,5,253,1,254,0,255,252,253,251,253,252,3,4,3,1,255,1,2,412000 DATA 0,255,1,2,254,255,0!},1,254,0,1,0,255,1,253,253,2,255,255,254,2,3,2,0,254,2,1,3,254,1,254,255,0,1,25312010 DATA 253,254,3,2,0,3,252,4,3,0,2,2,4,4!},5,3,253,252,0,3,4,254,252,252,2,1,1,0,255,254,255,1,25112020 DATA 0,255,1,4,4,252,251,252,253,253,255,255,3,253,253,4,251,5!},5,252,313000 DATA 104,169,0,141,0,6,141,1,6,104,170,104,168,169,7,32,92,228,104,133,204,104,133,203,104,133,20613010 DATA !}104,133,205,104,104,141,11,6,104,104,141,12,6,9615000 DATA 216,165,16,41,127,133,16,141,14,210,173,11,6,240,2015010 DATA 17!}3,14,6,24,105,16,141,14,6,173,198,2,41,15,1315020 DATA 14,6,141,198,2,173,12,6,240,22,173,13,6,240,1715030 DATA 56,233,1,14!}1,13,6,74,74,74,141,1,210,169,40,14115040 DATA 0,210,173,0,6,240,31,238,1,6,174,1,6,173,215050 DATA 6,157,64,6,173,3,6,157,!}85,6,169,127,141,13,615060 DATA 169,0,157,106,6,141,0,6,141,5,6,238,5,6,17315070 DATA 1,6,205,5,6,16,3,76,98,228,174,5,6,16!}9,015080 DATA 141,4,6,189,106,6,201,89,48,51,238,4,6,56,23315090 DATA 89,201,89,48,41,138,168,232,236,1,6,240,2,16,2115100!} DATA 189,64,6,153,64,6,189,85,6,153,85,6,189,106,615110 DATA 153,106,6,200,208,227,206,1,6,206,5,6,169,0,24015120 DATA 176!},254,106,6,168,189,64,6,24,113,203,141,6,6,20115130 DATA 160,176,159,189,85,6,24,113,205,141,7,6,201,96,17615140 DATA 146,1!}0,133,207,169,0,240,2,240,137,133,208,165,207,1015150 DATA 133,207,165,208,42,133,208,165,207,10,133,207,141,9,615160 DATA !}165,208,42,133,208,141,8,6,165,207,10,133,207,165,20815170 DATA 42,133,208,165,207,10,133,207,165,208,42,133,208,165,207151!}80 DATA 24,109,9,6,133,207,165,208,109,8,6,133,208,165,8815190 DATA 24,101,207,133,207,165,89,101,208,133,208,173,6,6,41152!}00 DATA 3,168,190,32,6,142,10,6,173,6,6,74,74,24,10115210 DATA 207,133,207,165,208,105,0,133,208,160,0,173,4,6,20815220 DAT!}A 11,173,10,6,81,207,145,207,169,0,240,132,173,10,615230 DATA 73,255,49,207,145,207,169,0,240,24116000 DATA 104,173,1,6,201!},20,48,5,104,104,104,104,96,104,104,141,2,6,104,104,141,3,6,169,1,141,0,6,9617000 DATA 104,74,170,160,0,104,133,255,104,133,!}254,104,240,4,200,145,254,136,104,145,254,202,208,237,9618000 DATA 104,104,133,215,104,133,214,104,133,217,104,133,216,104,1!}33,218,104,170,160,0,177,214,145,21618010 DATA 200,208,4,230,215,230,217,202,208,242,198,218,16,238,9619000 DATA 0,0,60,255!},165,255,60,0,020000 DATA 0,0,0,0,8,62,8,0,0,0,0 2