@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@P!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `1  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu  } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED736 FREE SECTORS COPYING---D1:DIRECK.COMl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 138ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8u%/ D6-F:B@,&B@&@8B@A'DB@T}-@@"(#B@%@d#B@2-@AP < F'B@@d'B@U}P 1,2,3,4,5,6,7,8,9,10,11,12ZD:ATARIARM.BAS@AP < F'B@@d'B@C45I _ LC1C2BARETRBACKSESCAPDLLCHKSUCHHLrrtv&&AUA& W}@'Br @ Av B&Z<<;A,; X}@,;@,;@8,;@,\467@,. %67@8,. 467@,.^'6-AU6-A&'6- Y}@'`m +Af1ARC@@m6-F:A`,%AV$F:Aa,%@b& Z}@@p+%@@?%@AS%@Ag%@A{%@A%@# [}AdW%@$@e.%@%F:A`,E%@&F:Aa,WAYfv-@ -( \}?-@l((Ǡנv(:hm-@ B(( ]}ŠנT-@@m(:i&-@'@&( Ԡ:j\AY ^}@4'-@@9( >:@0,@6.L6-@V B&H\6.l4QB&tm 4B+ng _}-@@'( >:@0,36-A= B&HI6-U6-gAf@pOAR@)- `}@@5-@9(= O-@@q.-B:,@6@*7<,4 . r'6.7@<,s a}2-@B:,"6-%@26-%$@:7,,t!"@9!-@@v!"@w!-@@x (7<, b} zw 6-&+P:'Av,$Av,16-P:'@&,C6-&+$@&,]67@,.>:%@e,w67@,.>:%@e, c}|#Af#0B&B~ +AY1Af@C-@@G(Y-@@b d}(CONTt-@AB@&(AB@6-A:,( B&qA@P72@u e}@@K-@@@O q2#-@@( #6.]-@ f}@#-@'(+ =ARO-@7@S(] B&6-+ B&++")",*" g}B&P " $"B&f "(>:, B&P6-%@!$:!@8* @v:-&P: h}'@8,$@8@:!@v* A:-&P:'@8,$@8@#67<,.>:,(>:,# B&PK6 i}-&@"@7/-@8@A( >:@0,K B&r="@u!-@8@3( >:@0,= B j}&r( (>:,"6.( B&P)6.7@:@0,>:@0,>:@0,\?  m}B&*@@5@? B&@B& +>#@@ n}K:0)@;@>$I(FILE ALREADY EXISTS!+(ERASE IT/9 B&I4YB&5-@@ o}#-'(+ 5 B&D:BASICEDT.BASISTS!+(ERASE IT/9 B&I4YB&5-@@ 8\d X;BLAST!nX;x X; CHARSET ======= ======= ==?=?=?=?=?=?q} ====>=?=?=> ?=?=?=?=?=?=?=? ==>=?=?=>== ======= ====r}==?=? ======?=? ==?=?=?=?=?=? ====<=<== ======= =s}====== ==?=?====" =======, =======6 ==c=c=c=g=g=t}@ == = = ===J =====`=`=T =~======^ =p=p=p=p=w==h ==`=`u}====r =~=f=`==c=c=| ==g===== =>=6=6==w=w= ==c=c==== v}======= ======= ======= ======= ======w}= ======= =====U=w=] =>=6=6==w=w=w =~=f=f==s=s= ==gx}=`=`=`=c= =~=c=c=s=s=s=~ ==`=`==p=p= ==`=`==p=p=p ==c=`=p=w=s=&y} =6=6=6==w=w=w0 =======: =====g=g=D =3=3=3=|=s=s=sN =0=0=0=p=z}p=p=X ==K=K=k=k=k=kb =s={=o=w=w=w=wl ==c=c=g=g=g=v ==c=c==p=p=p ={}=c=c=c=c=o=| =~=f=f==s=s=s ==`=`==== ======= =c=c=c=s=s=s=|} =c=c=c=w=v=v=~ =C=C=C=k=k=k= =g=g=g=<=s=s=s =c=c=c==== ==s==}}=p=s= ======= =@=`=0== == =x=====x= ===6=c===  ~}=======X; X; Zero page equates*X;4 ADDER> PTRHEXPCOUNTRALCOUNT\ SHIPXfMOTH}ERXpMOTHERDXz FORCEY ROUND XTAB YTAB DXTAB DYTABDSTAB;;STATUSX;X; OS} equatesX;STRIG0HPOSP0 M0PF P0PFHITCLRAUDF1;;Force field AUDC1$AUD}F2;;Laser. AUDC28AUDF3;;Monster deathB AUDC3LAUDF4;;Needle fallingV AUDC4`RANDOM j}X;tSCREEN~X;X; game screen dlX; MAINDL p=P=M SCREEN  = =   = = =   = = = }  = = =   = = =   = = =   = = =   = = =   = = =   = = =   = = = (  =} = = 2  = = = <  = = = F  = = = P  = = = Z  = = = d  = = = n  = = = x  = = =}   = = =   = = =   = == G SCORELN A MAINDLX;X; "GAME OVER" display listX;}GODL p=p=p=p p=p=p=p p=p=p=p G GOLN" A, GODL6X;@X; Title page dlJX;T TITLEDL^ }p=p=h Gr TITLEPG| =p==p =p=p=p p=p==p p==p p==A TITLEDLX;X; Score} line X; (at bottom, in graphics 2)X; Ships at +7X; score at +17X; SCORELN ABLAST! @@ SCORE:000AX;X;} Game overX;& GOLN A GAME OVER A0X;:X; Prelim. title pageDX; Last at +46, high at +55N X; Speed at +72,} skill at +92XX;b? ========== = = == =====lGTITLEPG ========= =}=========v A ٠Π A A Ժ Ⱥ A A slow A A } easy A Apress to beginAX;!X; Y tables for bitmap routineX; TABLO =(=P=x=== =@=h}=== =0=X====  =H=p=== =8=`=== =(=P=x===  =@=h=== }=0=X====   =H=p===* =8=`===4 =(=P=x===> =@=h===H =0=X===}=R  =H=p===\ =8=`===f TABHIp ======z ===== ======} ===== ===== ====== ===== ====== ===}==  = = = = =   = = = = = =   = = = = =   = = = = = =   = = = = =  =}==== WIDTH X; X; Bitmap routine for Atari$ X;. X; Enter:8 $X; .x,.y screen coords to plot atB X; PTR } pointer to bitmap:L X; heightV X; width` X; pointer to shift 0j X; pointer to shift 1t X; } pointer to shift 2~ X; pointer to shift 3 X; start of data X; PLOTMAP A V? V? , OTABLO8 PA}DDER QTABHI8 O>5SCREEN PADDER A M> T? O>( 52 %>< Q@PTR7F >P 3Z Q@PTR7d PWIDTHn 7x ? Q}@PTR7 5 3 Q@PTR7 PPTR 7 PPTR / J?PM1.5 ?PM1QADDER , O>( PADDER D?PM1.5 #ADDER }?PM1.5%>" ?PM2Q@PTR7, P@ADDER76 3@ )WIDTHJ D?PM2T C^ ,h OPTRr PPTR| D?PM3 #PTR ?PM30 H?PM1 }: X; X; Erase bitmap - cheating X; method X; ERASEBMQ?PM2 5 Q?PM2 5 Q>;;lda imm P?PM2 Q> }P?PM2& PLOTMAP0 7: P?PM2D 7N P?PM2X :b PLAYER02l PLAYER12v PLAYER23 PLAYER33 X; X; }Player-missile routines. #X; Includes player-missile init- X; ialization and startup. X; PMINITQ>5PLAYER0  P};;pmbase $> A ?PMI1PPLAYER09 PPLAYER29 PPLAYER09 2 H?PMI1 Q> P;;sizep0* P ;;sizep24 P} ;;sizep3> Q>H P ;;sizemR Q>\ P ;;sizep1f Q>0p P;;hposp2z Q>Ȅ P;;hposp3 Q>x P;;hposp1 Q>}| P;;hposm3 Q> P Q> P Q> P P :X;X; Put up player's ship.X;$ PUTSHIP.%>8}?PS2QPLAYER8B PPLAYER09L2V3`)>j D?PS2t:~X; X; Move mother ship one unit. X; X position of center is i}nX; MOTHERX.X;MOVEMOMQMOTHERX, OMOTHERDX PMOTHERXR>  E?MMOM1Q> PMOTHERDX?MMOM1R>  D}?MMOM2Q> PMOTHERDX(?MMOM2QMOTHERX2,<O>,FP;;hposm3P;ZS>dP;;hposp1n !ALIENxX;"X; Plot }mother ship in player 1X; with y-coord .yX; PLOTMOMC5$>?PMOM1QMOTHER9 PPLAYER1823(> }D?PMOM17,O>"?,Q>6PMISSILES8@Q>JPMISSILES8T:^X;hX; Plot left and right forcer!X; field g}enerators in players| X; at .yX; PLOTGEN$>?PGEN1QLEFTGEN9 PPLAYER28QRIGHTGEN9 PPLAYER3823}(>  D?PGEN1:X;"X; Plot up force field in colorX; .a and at FORCEYX;& PLOTFIELD05: %FORCEYD QTABLO8N} PADDERX QTABHI8b,l O>5SCREENv PADDER%>&7?PFIELD1P@ADDER71 H?PFIELD1:X;"X; Put explosi}on number .x intoX; player's ship areaX; PUTEXP QTIMES79>%>^ ?PX1QSEXPLODE9 PPLAYER08 2*34)>}e> D?PX1H:R(TIMES7 =====#=*=1=8=?\fX;pX; Movement routines for thezX; monsters.X; ?TEMP }NEEDLEX NEEDLEY NEEDLEF  ?YT ?XTX;X; Move monster number .xX; MOVE1 QXTAB9P}?XT QYTAB9P?YT QDYTAB9$ G?M11.#?YT8Q?YTBR>S;;bottomL H?M12VQ>` PDYTAB9j H?M12t ?M11"?YT~}Q?YTRFORCEY;;check field H?M12Q> PDYTAB9 ?M12Q?XT, ODXTAB9P?XTR> H?M13Q> PDXTAB}9?M13R>;;rt side  D?M1XQ> PDXTAB9( ?M1XQ?YT2 PYTAB9<Q?XTF PXTAB9P:ZX;d#X; Get monster coords }for bitmapnX;xGETCOORDQYTAB9? &?TEMP QXTAB9;S>>:X;X; Plot monster number .x asX; bitmap} in (.y.a)X;PLOTCPPTR 'PTR GETCOORD PLOTMAP $?TEMP":,X;6!X; Animate 12 monsters 1 cycle@ X; ea}ch.JX;T CYCLE^$> h?CYC1QDSTAB9;;Status 0?r F?CYC2|G?CYCM;;move if hereM>?;;get rightT? PAUDF3}QEXPLTAB8;;explosion5QEXPLTAB8?7 PLOTC;;next expl. #DSTAB9 QDSTAB9R> D?CYC2 KILLMON} "MONLEFT&Q>0 PAUDC3: !?CYC2D?CYCM MOVE1;;moveN Q>4SQUAREX %>5SQUAREb PLOTC;;drawl ?CYC20v I?CYC1Q}NEEDLEY;;Extra man here?F?CYCX;;No, go awayM>;;Yes, do next >;;sound QNEEDLES9 PAUDF4$>4NEEDLE;;Point t}o%>5NEEDLE;;bitmap&PTR 'PTR $NEEDLEX#NEEDLEY;;Move it%NEEDLEY;;Off the)>Y;;screen? D?NEED1;;N}o, draw it ERASEBM;;Yes, erase Q>;;And de-flag*PNEEDLEY;;it.4 PAUDC4>?CYCX:;;Exit here!!!H?NEED1!PLOTMAPR}X;\!X; Initialize monster .x at x-fX; coord in .apX;zINITMONPXTAB9Q>  PYTAB9 QMOTHERDX %SKILL F?IM}ON1 QRANDOMM> H?IMON1Q>?IMON1PDXTAB9Q> PDYTAB9Q>PDSTAB9;;status here #MONHERE:$}X;.X; Kill monster number .x8X;B KILLMONLQ>4SQUARE;;erase itVPPTR` Q>5SQUAREj PPTRt GETCOORD~ ERASEB}M $?TEMPQ>PDSTAB9;;kill it "MONHERE ?KM1:X;!X; Init a new wave of monstersX;MONSTERS MONL}EFT MONHERE INITWAVEQ>  PMONLEFT Q> PNEEDLEF PMONSTERS( PMONHERE2$> <?IWV1PXTAB9F}0P I?IWV1Z:dX;n"X; Put a monster on at intervalxX; of $A5 or $85 movesX;ALIEN"ALCOUNT H?ALX QNEEDLEF} H?AL0 QMONSTERSR>  F?AL0 QRANDOMM> H?AL0 QMOTHERX,O> PNEEDLEXQ>" PNEEDLEY, PNE}EDLEF6Q>@ PAUDC4J H?ALST?AL0QMONHERE^R>h E?ALXr $MONSTERS|(>  E?ALX QMOTHERX INITMON #MON}STERS ?ALSQ> $SPEED F?ALPQ>e?ALPPALCOUNT ?ALX:#NEEDLES =(=P=x==x=P=(X;X; Player shi}p move routinesX; (also laser handling)X;&X;0X; Move player's ship one:X; cycle based on joystick.DX;NMO}VESHIPQ|;;left stick?XH?MSHIP1;;no, do nextbQSHIPX;;can he go further?lR>vF?MSHIP1;;no, exit"SHIPX;;yes, d}o it ?MSHIP1Q};;check for right H?MSHIPX QSHIPXR> F?MSHIPX #SHIPX?MSHIPXQSHIPX,O>0P;;}do the move:X;#X; Move player's laser one cycle #X; or check for fire if no laser X; is up X;*MISSILESPLAYE}R04MOVELASERQLASERY> F?CFIREH "LASERYR "LASERY\ "LASERYf $LASERYp &AUDF2zQ>PMISSILES9PMISSILES}9PMISSILES9Q>PMISSILES9PMISSILES9PMISSILES9(> E?LEXIT CLRLASER?CFIREQSTR}IG0 H?LEXIT QSHIPX,O> PLASERX$O>0.P;;hposm08Q>^B PLASERYLQ>V PAUDC2` ?LEXIT:jX;tX; }Clear out laser.~X;CLRLASER$LASERYQ>PMISSILES9PMISSILES9PMISSILES9PMISSILES9PMISSILE}S9PMISSILES9 PLASERYQ>P;;AUDC2: LASERY   LASERX  SPEED  SKILL (X;2X; Routin}es for title page,<X; initialization, andFX; game startup.PX;ZdX;nX; Set up play screen:xX; 1. Clear screen me}mory.X; 2. Initialize playersX; 3. Do display listX; 4. Setup DLIX;PLAYSCRNQ>5SCREEN PADDER Q>4SCRE}EN PADDER?$>?PSCN1P@ADDER73 H?PSCN1 #ADDER0 H?PSCN1" PMINIT,Q>6P/@ VBWAITJQ}>TP;;FORCE FIELD^Q>hP;;ALIENSrQ><|P;;EXPLOSION Q>4MAINDLP0 Q>5MAINDLP1Q>P;};gractlQ>4PLAYDLIPQ>5PLAYDLIP e;;SIOINVQ>.P/ : X; X; Display list interrupt for& X; }play screen0 X;: PLAYDLI5D Q>N P ;;wsyncX Pb Q> l Pv 7 9 X; X; Wait for vertical blank. X; VBW}AITQ ?VBW1R F?VBW1 : X; !X; Lower mother ship (for game X; startup) and init her vars X; LOWERMOMQ>!} PMOTHERDX !Q>P! PAUDF1 !Q>H*! PAUDC14!?LMOM1%MOTHERDX>! PLOTMOMH! VBWAITR! VBWAIT\! VBWAITf! VBWAITp! }VBWAITz! #MOTHERDX! QMOTHERDX!R>! D?LMOM1!Q>! PMOTHERDX!Q>P! PMOTHERX!Q>! PAUDC1!:!X;!$X; Low}er generators to the proper!X; height and do fancy force"!X; field startup (with sound)."X;" ?FLEVL $"LOWERFORCE."} CLRLASER8" $ROUNDB"QFORCELEV9L" PFORCEYV"Q>`" PAUDC1j"?LFOR1Q?FLEVLt" PAUDF1~";"S>"?" PLOTGEN" VB}WAIT" VBWAIT" VBWAIT" #?FLEVL" Q?FLEVL";"S> " G?LFOR1" RFORCEY# D?LFOR1 # F?LFOR1#Q># PLOTFIELD(}#Q>P2# PAUDF1<#$>F#?LFOR2QFORCETAB9P#PZ#L>`d# PAUDC1n# VBWAITx# VBWAIT# VBWAIT#2#(> # D?LFOR2#}Q>d;;Force field#PAUDC1;;Background#Q>;;Sound effect# PAUDF1#:#'FORCETAB ==== = ===#*FORCELE}V ==(=-=2=7=<=A=F=H#X;#!X; Put up and init player ship$X;$ DOSHIP$$>^"$ PUTSHIP,$Q>L6$ PSHIPX@$ Q>}L0J$PT$ !CLRLASER^$X;h$%X; Combine it all into the startupr$X; sequence.|$X;$STARTUP$>$Q>$ ?S1P9$0}$I?S1$ PNOSHIPS$ SHIPSLFT$ PLAYSCRN$ CLRSCR$ LOWERMOM$Q>$ P?FLEVL$ PROUND% LOWERFORCE%Q>% PN}OSHIPS&% SHIPSLFT0% DOSHIP:% INITWAVED%P;;hitclrN% !MLOOPX%X;b% X; DLI routine for title pagel%X;v% TITLEDLI5%}A%5%C%5%"%%> %$%?TDLI& ;;wsync%&%2%1% I?TDLI%7&? &7&> &7*&94&X;>&!X; Display ti}tle page and waitH&X; for START.R&X;\& DOTITLEf&Q>5CHARSETp&Pz&Q>&P/&P;;AUDCTL&P;;gractl& VBWAIT}&Q>&P&Q>&P&Q>&P&Q>4TITLEDL&P0&Q>5TITLEDL'P1'Q>4TITLEDLI'P$'Q>5TITLEDLI.'P}8'Q>B'P;;nmienL' PUTSKILLV'Q>*`'P/j' ?DTL1t' QSTRIG0~' H?DTL1.5' !STARTUP'?DTL1.5QМ'R>' H?DT}L2' !STARTUP' ?DTL2R>' H?DTL3' QSKILL'N>' PSKILL'?DOCON PUTSKILL'?WTRELQ(R> ( H?WTREL( !?DTL}1( ?DTL3R>(( H?DTL12( QSPEED<(N>F( PSPEEDP( I?DOCONZ(X;d("X; Put skill level and speed upn(X; on title page.x(X};( PUTSKILL( QSPEED(T?(T?(O>(>(%>(?PSK1QXSPEED9(PTITLEPGH8(0(1( I?PSK1( QSKILL)T?)T?)}O>")>,)%>6)?PSK2QXSKILL9@)PTITLEPG\8J)0T)1^) I?PSK2h):r)XSPEED AslowfastA|)XSKILL AeasyhardA)X;)X}; "You Win" sequence (...?))X;)WIN) CLRLASER;;No laser)Q><) PLASERY)?W0 VBWAIT;;Delay) MOVEMOM) MOVEMO}M) "LASERY)I?W0)Q>;;Erase*$>*?WEPPLAYER29;;the*0;;Generators&*H?WE0*Q>;;Thrust:*PAUDC1;;soundD*Q>}N* PAUDF1X*Q>ab*PLASERY;;Move ship upl*?W1$LASERYv* PUTSHIP* MOVEMOM* MOVEMOM* VBWAIT* "LASERY* QLASE}RY*R>*H?W1*Q>* PAUDC1*QSHIPX;;Line ship up*;;;with middle*S>;;of mother*M>+ PLASERY +?W2 MOVEM}OM+ MOVEMOM + VBWAIT*+ QMOTHERX4+ RLASERY>+H?W2H+$>R+?W3 VBWAIT\+0f+I?W3p+B;;Clear stackz+!DHS+X;+X;} Main loop inner cycle+X;+MAINCYCLEQ>+PM;;NO ATTRACT+?MC1Q ;;VCOUNT+R>+ H?MC1+ MOVEMOM+ MOVEMOM+ }?MC2Q +R>i+ D?MC2, CYCLE, HITMON,Q>$, PLOTFIELD., QMONLEFT8, H?ML0B, NXTLEVL,?ML0V,Q`,R>!j, H}?MCYCXt,Q>~,P,Q>, PAUDC1, PAUDC2, PAUDC3, PAUDC4, ?ML1Q,R>!, H?ML1,Q>,P,Q>d, PAUD}C1- ?MCYCX: -X;-X; Real main loop-X;(-MLOOP MAINCYCLE2- MOVESHIP<- MOVELASERF- HITSHIPP- !MLOOPZ-X;d- X; Sc}orekeeping and collisionn-X; detection routinesx-X;--X;-X; Check for missile-pf2- X; collision. If it's there,-X}; clear it, find out which-X; monster is hit, and kill-X; it. Then decrement the-X; monsters left counter.-X;-HIT}MONQM0PF;;Did the laser-M>;;hit a monster?-F?HMX;;no, exit-PHITCLR;;clear collision.$> ;;check monsters.?HM0}QLASERX;;to see which.;;;one was hit". SXTAB9,.R> ;;(monsters are6.D?HM2;; 9 wide)@.?HM10;;check next oneJ.I?HM0;};if possibleT.QNEEDLEY;;Was it the^.F?HMX;;needle?h.$>4NEEDLE;;Yes!r. %>5NEEDLE|.&PTR.'PTR;;Erase it. $NEEDL}EX. %NEEDLEY. ERASEBM.Q>;;De-flag it. PNEEDLEY.PAUDC4;;De-noise it. CLRLASER.#NOSHIPS;;Extra man. SHIP}SLFT.H?HMX;;branch always.?HM2QLASERY;;Now check the.;;;y-coordinate./S>;;x-coord is ok/SYTAB9;;if it gets he}re./ ABSVAL&/R> 0/ E?HM1:/QDSTAB9;;and it must beD/I?HM1;;alive too!N/Q>;;We found it!X/PDSTAB9;;start killing}...b/ QXTAB9l/,;;adjustment forv/O>;;bitmap size/ PXTAB9/ ADDPTS;;give points/ CLRLASER;;and stop laser/Q>;;}Death sound/ PAUDC3/ PAUDF3/ ?HMX:/X;/#X; Take the absolute value of .a/X;/ABSVALR>;;Set up flags/I?ABSX;;}Positive, exit/N>;;Otherwise do0,;;two's-complement 0O>;;negative0 ?ABSX: 0X;*0 X; Lower force field by 8 and40X}; prepare next level.>0X;H0NXTLEVQ>;;erase theR0 PLOTFIELD;;force field\0#ROUND;;next roundf0 QROUNDp0R> ;;Last o}ne?z0 H?NL1;;No0!WIN;;Yes, game won0!?NL1 LOWERFORCE;;lower gens.0!INITWAVE;;setup monsters0X;0X; Clear score0}X;0CLRSCRQ>;;Put0PSCORELN;;zeros0PSCORELN;;everywhere0PSCORELN0:0X;0X; Add 1 to score1X;1A}DDSCR$>;;Last digit1;$1?ADS1QSCORELN9;;Add.1O>81R>;;Over 10?B1D?ADS2;;NoL1Q>V1?ADS2PSCORELN9`10j1} I?ADS1t1:~1X;1X; Add value in .a to score1X;1 ADDA?1?ADDA1 ADDSCR111 H?ADDA11:1X;1"X; Add points for h}itting alien1X;1ADDPTS$ROUND1 QVALUES92 !ADDA 2(VALUES ======= ==2X;2 X; Check for player sh}ip hit.(2X;22 HITSHIP<2QP0PF;;Ship hit?F2M>P2F?HSX;;no, exitZ2PHITCLR;;clear collisiond2 CLRLASER;;clear lasern2}Q>;;and start meltingx2PEXPCOUNT;;player's ship2?HS0 MAINCYCLE2 MAINCYCLE;;move monsters2 MAINCYCLE;;and delay}2 MAINCYCLE;;while melting2 MAINCYCLE;;the ship.2 $EXPCOUNT2 PUTEXP;;next melt...2 #EXPCOUNT2QEXPCOUNT;;and k}eep going2R> 2 D?HS02#EXPCOUNT;;Remove the2?HS.5$EXPCOUNT;;monsters3 KILLMON;;one by one3 "EXPCOUNT3 I?HS.}5"3Q>;;no more on...,3 PMONHERE63Q> ;;but don't do@3;;;the whole waveJ3SMONLEFT;;again!T3 PMONSTERS^3"NOSHIPS;;lo}se a shiph3 QNOSHIPSr3GGOVER;;Game over!!!|3 SHIPSLFT3Q>L3PSHIPX;;center ship3 Q>L03 PHPOSP03 PHITCLR3!}DOSHIP;;and plot it3 ?HSX:3X;3X; Game over3X;3 GOVER7373Q>;;DMA off4P/4 PAUDC14 PAUDC2&4 PAUDC304 P}AUDC4:4 VBWAITD4Q>4GODL;;Game OverN4P0;;displayX4Q>5GODL;;(simple, butb4P1;;it'll do...)l4 DHS$>v4?GV1QSCOR}ELN9;;Update4 L>;;Last4PTITLEPG.9;;Score4 0;;display4 I?GV14 ?GV224(>4 F?GV44QTITLEPG79;;Hi-score?}4RTITLEPG.94D?GV3;;Nope...4 F?GV24 H?GV44?GV3$>;;Yep...5?GV3.5QTITLEPG.9 5PTITLEPG7950 5 I?GV3.}5*5?GV445Q>*>5P/H5Q>R5P\5$>@;;Wait a bitf5?GO1 VBWAITp50z5 H?GO15!DOTITLE;;and go back5X;5X; Disp}lay ships left.5X;5NOSHIPS 5 SHIPSLFT5Q> ;;Ship symb.5$>5?SLF2(NOSHIPS5 D?SLF35Q>5?SLF3PSCORELN}9526(>6 H?SLF26:$6X;.6X; Shapes for various items86X; in game.B6X;L6V6X;`6X; First are the shapes thatj6}X; go in players.t6X; 1. Player ship~6X; 2. Mother ship6#X; 3. Left force field generator6X; 4. Right " " "}6!X; 5-. Explosion data for ship6#X; (10 cycles, 7 bytes each)6X;6"PLAYER =<=$=====6MOTHER ==< }=B=Z==6)LEFTGEN =====<====6*RIGHTGEN =====<====6 SEXPLODE6 =Z=<== }==6 =B=<=<===7 ==<=$===~ 7 ===<=$==7 ====<==7 =====~= }(7 =====<=~27 ======<<7 ======F7 ======P7X;Z7X; Bitmaps for alien }s.d7X;n7SQUARE =;;height,widthx7 SHIFT17 SHIFT27 SHIFT37 SHIFT47 SHIFT17 =7 ===7 =3= }=7 =?==7 ===7 =0= =7 SHIFT27 =7 ===8 = ==8 ===8 ==}="8 = ==,8 SHIFT368 =@8 ===J8 ===T8 ==?=^8 ===h8 ===r8 SHIFT4|8} =8 ==?=8 ===08 ===8 ==?=8 ===08 =8X;8X; Bitmap EXPL18X;8EX}PL1 =8# EXPL10=EXPL11=EXPL12=EXPL138 EXPL108 ==9 =P=9 =T=9 =D=&9 =P=09 ==}:9 EXPL11D9 ==N9 =T=X9 =U=b9 =Q=l9 =T=v9 ==9 EXPL129 ==9 =U=9 =}=@9 =T=@9 =U=9 ==@9 EXPL139 ==9 ==@9 =E=P9 =U=9 ==@: =@= :}X;:X; Bitmap EXPL2 :X;*:EXPL2 =4:# EXPL20=EXPL21=EXPL22=EXPL23>: EXPL20H: ==R: =P=\: =T=f: }==p: =P=z: ==: EXPL21: ==: =T=: ==: =A=: =T=: ==: EXPL22}: ==: =U=: ==@: =P=@: =U=; ==; EXPL23; ==$; ==@.; =A=P8; =}T=B; ==@L; ==V;X;`;X; Bitmap EXPL3j;X;t;EXPL3 =~;# EXPL30=EXPL31=EXPL32=EXPL33; EXPL30; =}=; =P=; ==; ==; =P=; EXPL31; ==; =T=; ==; ==; =T=< }EXPL32 < ==< =U=< ==@(< =@=@2< =U=<< EXPL33F< ==P< ==@Z< =@=Pd< =P=n}< ==@x<X;<X; Bitmap EXPL4<X;<EXPL4 =<# EXPL40=EXPL41=EXPL42=EXPL43< EXPL40< ==< =P=<} ==< ==< ==< EXPL41< ==< =T== === === =="= EXPL42,= ==}6= =U=@= ==@J= ==@T= =A=^= EXPL43h= ==r= ==@|= =@== =@== ==@=X;}=X; Bitmap EXPL5=X;=EXPL5 ==# EXPL50=EXPL51=EXPL52=EXPL53= EXPL50= === =P== === =}== ==> EXPL51> ==> =T=&> ==0> ==:> ==D> EXPL52N> ==X> =U=b> }==@l> ==@v> ==> EXPL53> ==> ==@> =@=> =@=> ==>X;>X; Bitmap EXPL6}>X;>EXPL6 =># EXPL60=EXPL61=EXPL62=EXPL63> EXPL60> ==? =P= ? ==? == ? EXPL61*? } ==4? =T=>? ==H? ==R? EXPL62\? ==f? =U=p? ==@z? ==? EXPL63? ==!}? ==@? =@=? ==?X;?X; Bitmap EXPL7?X;?EXPL7 =?# EXPL70=EXPL71=EXPL72=EXPL73? EXPL70"}? ==? =P=@ ==@ EXPL71@ ==$@ =T=.@ ==8@ EXPL72B@ ==L@ =U=V@ =#}=`@ EXPL73j@ ==t@ ==@~@ ==@X;@X; Bitmap EXPL8@X;@EXPL8 =@# EXPL80=EXPL81=EXPL82=EXPL$}83@ EXPL80@ ==@ =@=@ EXPL81@ ==@ =P=@ EXPL82A == A ==A EXPL83A ==%}(A ==2AX;??>????????>??>??????????<<??/}cccgg ``~ppppw``~f`ccg>66wwcc0}Uw]>66www~ffssg```c~ccsss~``pp``pppc`pws666wwwgg333|sss000pppKKkkkk1}s{owwwwccgggccpppcccco|~ffsss``cccssscccwvv~CCCkkkggg,3H,3 `HF##i&h`a%^R,9}2e`#*18?0愥S ƄŎuɎ`k%8` % $k%` 5:}0)) ҹ/H/h % d&~&L & o%, %ĭm%))&Ң/l%m%m%Y [$m%`L$ ' );}&`, % [$k%&` ~&n%}&&O`ƊKn%%}&  )il%m%n%&}&<}  @&}&'e`(PxxP(|Ƌ}ɐ拥i0`',΁'΁'΁''ҩ111111 a'i=}'i0Щ^'č`'111111'` y$/ '<0"1Щ֍'>} e./`H ԍЩ h@`PҩHҤ % ' ' ' ' '捥P` a'(ҭ%(8 % ' ?}' '%(%(8 0Ŏ٩ 5%PҢ( ` ' ' ' dҩ` (-27;;zero currentPSTRGNO;;text line counter>X;X;zero out screen RAM areaX;ZEY}ROPSCRRAM9;;loop goesPSCRRAM9;;256 timesPSCRRAM9;;each linePSCRRAM9;;does onePSCRRAM9;;paZ}ge of RAM2 HZEROX; X;open screen device, "S:"X;  OPENSCREEN*Q>;;turn off cursor4 PCRSINH>QDLIST;[};tell ANTICHPSAVMSC;;where to findRQDLIST;;display memory\PSAVMSCfQ>;;turn off thepPSDMCTL;;screen brie\}fly,zQ>DLIST;;tell ANTICPSDLSTL;;where toQ>DLIST;;find thePSDLSTL;;display list,Q>";;turn screen]}PSDMCTL;;back onX;X;start printing text linesX;Q>;;graphics mode 1 PDINDEX POSITION;;position cursor^}$>`;;use IOCB #6Q>LINE1;;print firstPICBAL9;;line of text,Q>LINE1;;in Graphics 1PICBAH9;;segment$_} PRINTLINE.Q>(;;skip ahead 408 ADDMEM;;bytes in RAMBQ>;;Graphics mode 2L PDINDEXV POSITION;;position cursor``}$>`;;use IOCB #6jQ>LINE2;;print alltPICBAL9;;text lines~Q>LINE2;;in Graphics 2PICBAH9;;segment PRIa}NTLINEQ>x;;go up 120 bytes ADDMEM;;in screen RAM toQ>;;Graphics 7PDINDEX;;segmentX;"X;plot 1st point ofb} rocket shipX;Q><;;set coordinatesPCOLCRS;;of first pointQ>;;to plot forPROWCRS;;rocket $>`;;use IOCB c}#6Q>REG1;;color register 1 PICBAL9(Q>REG12 PICBAH9< PLOTPOINTFX;PX;routine to draw the rocketZX;dd}Q>;;color register 1n PATACHRx%>POINT;loop to plotQXDATA8;;points andPCOLCRS;;connect themQYDATA8;e};with lines PROWCRSC5 DRAWLINE;;drawing sub.7?3)> ;;done all 13 pts?HPOINT;;no, loopX;#X;pf}lot points for rocket exhaustX;"$>`,Q>REG0;;color reg. 06 PICBAL9@Q>REG0J PICBAH9T%>^POINT2;log}op to gethQEXHAUSTX8;;coordinatesrPCOLCRS;;for points|QEXHAUSTY8;;from table, PROWCRSC5 PLOTPOINT;;plotq}EB%DOS SYSB*)DUP SYSBSATARIARMBASBVBASICEDTBASBpBLAST M65B!.BLAST OBJB2OBOOTCAMPM65BCASSETTEBASB%CHECK ACTB CINTERFACACTBLMLEDITORBASBdRAMCOPY BASBzRAMCOPY M65ting sub.7?3)>;;done 4 pts?HPOINT2;;no, loopX;$X;add 960 bytes to current screenX;RAM starting poinr}t, 10*96X;$>  ADDEMUPQ>`& ADDMEM00: HADDEMUPDX;N!X;now in bottom segment, Gr. 0XX;bQ>;;Graphicss} 0l PDINDEXv POSITION;;set cursor$>`;;use IOCB #6Q>LINE3;;print firstPICBAL9;;text lineQ>LINE3;;it}n Graphics 0PICBAH9;;segment PRINTLINE POSITION;;print last$>`;;text lineQ>LINE4 PICBAL9Q>LINE4u} PICBAH9 PRINTLINEX; #X;loop until START pressed, then#X;close screen & reopen so blank X;*Q>;;initialv}ize4PCONSOL;;buttons>EXITHQCONSOL;;value of 6 hereRR>;;means START\HEXIT;;no? try againf$>`;;close screenpw} CLOSEANYz OPENSCREEN;;and reopenEND!END;;wait for resetX;"X;subroutine to open the screenX;OPENSCREENx}$>`;;use IOCB #6Q>OPEN;;command is OPEN PICCOM9Q>SCREEN;;device to open PICBAL9Q>SCREEN PICBAy}H9Q> ;;no text window PICAX19 Q>;;graphics mode 0 PICAX29$  CIOV;;go do it. :8 X;B !X;subroutine to close az}ny IOCBL X;V CLOSEANY` Q>CLOSE;;close screenj PICCOM9t CIOV~ : X; "X;subroutine to position cursor "X;for next{} text string to write X; POSITION $STRGNO;;get point number QXPOS9;;get x-coordinate PCOLCRS;;and store QYPO|}S9;;get y-coordinate PROWCRS;;and store #STRGNO;;ready for next :;;point, and exit X; #X;subroutine to print line }}up to X;120 chars long at cursor X;( PRINTLINE2 Q>x;;maximum length< PICBLL9;;of text stringF Q>;;is 120 chars.P~} PICBLH9Z Q>PUTREC;;operation is tod PICCOM9;;PUT a RECordn  CIOV;;go do itx : X; !X;subroutine to add a constant} X;(in accumulator) to current $X;address for start of screen RAM X; ADDMEM , OSAVMSC;;add constant to PSAVMS}C;;low byte & save DNOINC;;if carry set, #SAVMSC;;increment high NOINC:;;byte,then exit X; X;subroutine to pl}ot a point !X;using current color register X;" PLOTPOINT, Q>PUTREC6 PICCOM9@ Q>J PICBLL9T Q>^ PICBLH9h }CIOVr :| X; !X;subroutine to draw from last !X;plotted point to current one X; DRAWLINE $>` Q>DRAW PICCOM9} CIOV : X; #X;data values needed for opening #X;screen and picking color regs. X; SCREEN ASA REG0 AAA R}EG1 ABA& X;0 !X;tables of X- and Y-positions: X;for lines to be printedD X;N XPOS === X YPOS ===b X;l} X;text strings to printv X; LINE1  Aattack of theA=EOL LINE2  A SUICIDAL A  A } A  A ROAD-RACING A  A A  A ALIENS A  EOL LINE3  A*** Press Ԡ t}oA  A begin ***A=EOL LINE4 AAnalogA  A ProductionsA=EOL X; X;tables of coordinates for* !X;drawing silly-l}ooking rocket4 X;> XDATAH  d==d=<=<=_R  D=Q=<=<=_=D=Q\ YDATAf  = ======p  ====}z EXHAUSTX (=.=4=: EXHAUSTY  = = =  D=Q=<=<=_=D=Q\ YDATAf  = ======p  ====1&I4IR8RR8BRRR1RRR3EDILINROCLLINECASSRBITXR75BREAOFR3R3CR3RR12LR2RR2DUMDOTR1}CTAXINMARGIRLTTITLEATITLEBTTCASNUMCENTERACENTERBBARCCCNAMECNAMEFOLDEDGEBOXR4CASMIPRWFJ} }} !"#$%&'()*+,-./}0123456789:;<=>?}@ABCDEFG""ŠҠ""٠ˠ}Ҡ""̠ Ad( @9$(ҠӛŠˠٛ}#6-F:@,&A(  #$@B7t$,e 2F:B7p,'%@P<6-@#@#@F2}I$ḙŠĠśW$$ԠРԠ׺ԠԛX Y6-%Z' '( } :&l. A.6.7+%,$&%<+%,$&,m( (6-( A1nT T(?-}-----------------------------+--------------------------^-----pv! 6-%6-!! Apw xE "}@5(  ̠ ? AEy!@ A6zB "<(" } B6-{Q "=(# ºؕÕĮŕȡ͕ҕԕC6-Q̭֮՛|K:}  6-$ A`"$67&<,.    6-'&+,&+!,'%&+$+,,} 6- )   A& "6-@9&ŠϠC+"@)"A#)"A%A`C}ԠĠΠǛ!A@ "6-&',@H%$%-6-36-@ˠś1 "*,%}$%1Šқ-"*"Ap-̠ŠŠԛ " Ap_"A'6-%6-}/-@E%$%@(@223I(^__Y!&Ap_›"A' AE< ( #@}<(  :&  6-'&+,&+!,'%&+$+,, (>:,A@67<,.>}:, "*",@H%$%I "&2)6-@#@32IĠƠŠǛ }A0РŤϠӤ67+&,$%<$&,. 67+&,$%@<$&,. 6.ҠŤ} A0 AP0 A̠ӛ  !& A`!-"@0(6-&( A`-"}-"@1(6-%( A`-$0 "67+&,$%,.A:' A 0̭%K " ,@F$%-,@G}$%7 AA AK A6&0 "67+&,$%,.B:' A 0̭›'K " ,@F$%-,@G}$%7 AA AK A6(& " A  A P&̭Û)&"@*" AR&̭ț*= "}6.!-%&+,$%/ 3= Ap+ŠӠ̭ě-6 "6- A0# A- A`6̭}.:"@$#67+&,$%,. - A01:̭؛/G"@$,@F$%/,@G$%9 A=G A}62,"@ A # A,̭͛4L"@*6-&% A / A 9 AEC AḼқ}91 " A 6-( A1̭ԛ>"*!&A`@K "6-6--+67<,.>:,/ 9 AP}KŠٽ›B# " ,@H%$%#H) A`)Ԡ̠ҠӠQ!!ŠŠԠ}›R? ( #@<(  :&?$paI"AV)"AW)"AX)"AY)"AT)}"AUA`aԠĠΠǛz A/,$%/%%$%"$/Šś7 ! ,$%%}/%%$%($7Šŭ$C67+&,$%<$&,.$CŠŤŠǠ̮Λ (}Š›}VV(= INPUT COLUMN NUMBER FOR CTAB: P:+',&?0,, A P(( },+ )!&$6-P:+',&?0,+(E -,%@%/%)3,&%7 ; E A }՛00@6." , A@0 D (}D((ՠ//('} 1-REVIEW  2-EDIT ..(& 3-PRINT  4-NEW LOG < <('  } 6 AP@)( -66-A:, )!A$ 0 .''A }APA@A%8 AKàנӛL AנNI ,,//+/@}7,@ C/@ I,O(/@,!,@%($Q Aנ­Ra ,//@}+,@ 7,@ =,I/@U,@ a,@S4 /,@!,@-,@14$V}B-,!/@% ),$Bננũ` AנŭbU,@ ,@ %/}+/7/@ C,@ I,O,U,c , $j Aנl: ,/@ %/@ }+/1,7,:$t AנͭvI ,/,@ +/@ 1,7/=,I,@w ,},@$y AנҭzR ,//@ +/@ 1/7,C,@O,@ R$~} AנЭ4 ,//@ +/@ 1/4$Šӛ ,,($} Ϡՠ}ϠŠߠ,,($ Π AUDIO ŠǠ,,($ ҠŠǠ ; A7($ }  ; )!A   $4 (}A@d(A.4}= =(( I "C((庠ŠҠݠ }IZ "Z(?.MODE...LENGTH...BRAND....TYPE...BIAS...EQ...N/R....CONTENTS...I "C((}򺠠ŠҠݠ IZ "Z(?..BRAND,TYPE...LENGTH...LOAD-TYPE...NO./PROGRAMS...CON}TENTS.... A$wŠԛx.A@d!A.Ҡśy6-%z "*"6.{} "*"6.}? "?(}ԠA Ӡ~? "?(}ԠB} Ӡ.-A6$ 2$ .20 *"("6-&0 A50 *"}("6-&0 A5. .(--------------------------! 6-%6-!! A } A " ,@H%$%&$+",G,@D@B%/%%@B7,@D@HG/%%@H} "67<,.>:, "67<,.>:, A0! A06-! AP0 6- A@}K: B))67+%,$&<+%,$&%,.7<,E 6-J  6-N %O )}R"@ AT "6-@9XN"A&6-&5,@H%$%%$+",;6-A6-Nˠś}Y/ "*#,%$%%$+",'/śZ. "*",%$%!.Ԡś\3)+*@1,)"A%)}"A'3 A] "*"' A^ *"' A`  6-b %c (>:,h}Ar$ŠқE (}A@d(A, >AdAUE6.H'( Enter}ŠŠH( [4 DIGITS]F*(" ..or a LETTER/DIGIT COMBINATIONF( }'B:,@(}' AJ (} ( ( A2 AF-@AJ 0,%}&@E'/%&@E0Ԡ? (} A0+( STRINGS LOADED 5 A? AŠ̠ӛ} " '6- A""@"'6-" A9"@%)"@(',$%5/%&$%9&5}"@))"@0',$%5/%&$%+="@))"@0-,%'&$%=/%'%$%/MMԠ}àΠƠŠàӮҮś0"@&*"-@T1_"@&*"_(@>31}1113331111113331111133331111333111133311333111333311111111335"@&*"-@T6_"@&*"_(@>3}3111113111133311111133311113111133311331111111133311111111333:&@!*@&'& AD0#"@()"@))}"@0&'0 AN$ כ) (}6- A0) AE+ -@5'(+ } 6-%6- @9, ( $,( (  }# #(7+,$&<+,$,9 9($ Ԡ Ԡ @(&9 }9($ REVIEW next for&F:B2y," A0& A F:B2y,A P A } נǛ D @9'A@d3A:6.D A0 . (}*( ŠՠŠٯݠ }. 0Y*0NA% 4NA - 6.6.6.6.&6.-6. +@ A` }̠Ӥ 67<,. %%ҠӠś  6.6.  6-6-6-  B:,"6. A0}% 6-P:+&B:,,'%+?P,, 6.7<,67B:,%,.  B:,"6. A04 6-P:+&B:,,'%+?P,, }6.7<,67B:,%,. 6-P:+&B:,,', 267@,. "67B:,%,.267B:,%,.  67$%,. 67@#}$%,. 67@$$%,. 67$%,. -@ 67$%,. 67$%,.   67$%<$%,.}& ""67@"$%<@"$%,.0 n[67@($%,.D FROM THE COLLECTION OF }nҠӛ: 67@)$%,.D ))67@)$%%<@)$%%B:,,.b 33ԠӠŠ̭֮κҠ}ӛl a "a67@%$%,.D MODE LENGTH BRAND TYPE BIAS EQ N/R CONTENTS v a "a67@%}$%,.D BRAND,TYPE LENGTH LOAD-TYPE NO./PROGRAMS CONTENTS  ""67@!$%<@!$%,. 67@0}$%,. $ A2 ԭРқ+(} CHECK PRINTER '-AP+  0 APF (}0("} ϠԠSTART F( >++(" ϠՠOPTION  A@F:B2y}," AF:B2y,A@  A0f 7@$%<@$,0C67@$%<@$%,. f}ҠΠƠŠӠԛƠϠԬŠҤe"7@$%<@$&,4567@$%,.9E,@8}[/%%@@8_e(@P: AC B_?(@>:@',>:@,>}:@',>:@,19_ĮŬŠś"-@1"ԠӛY"@!( # AB};(7$&<+&,$%,E ACO AA@Yŭd"@"((7<@T, 2 ABH(7$&<$&%},R AC\ AA@dӣ"Y"@#( # AB;(7$&<+&,$%,E ACO AA@Yŭ›')(}7$&<$,)̠Ҡӛ, 6 AC Ah%(>:@,$%̭ŠΛ&(>:@},$&̭Šƛ ԛ^ 6-7(#} ҠŠҠϠԠ^(" TEXT LINES: 1-18 TITLE-A: 20}**(" CASSETTE #: 21 TITLE-B: 22))( TAPE SPECIFICATIONS: 26 --% AP AP% AP<}A@d!A'9AdAU<$ )!@&APZ")+@#*@%,>(} YOU CA}N'T EDIT THIS LINEL-APP Z AP0R"@!3(} ŠŠҠӺ O6-@#@#@}R(@"@!(5( ENTER NEW NUMBER [4-DIGITS]<6.@ "@! B:,!APX"@!(}2(} @-AD N A2X AP0- 6-(}6-!A'6--6. "6- }A"@"6- A A0A( AP(}=(! WANT TO EDIT ANOTHER LINE [Y/N] AA}dAU0Y*0NAP0 4Y(} AP+  6- A! A0+ AOР}P  (}Z AR  AR%d> ;(& CONTROL & EDIT COMMANDS >$iF <('} ______________________________________F ARnB 8($: PRESS TAB TO MOVE3 SPACESB ARpB }8($  ˭Š B ARqA 7(# AND: HORIZONTAL ARROW KEYS A ARr}@ 6("ź CENTER COLUMN -@ ARs@ 6("̭ INSERTS  IN MARGIN @ AR}t5 +(̭º INSERTS º5 ARu? 5(!̭ú ADJUSTSLOCATION ? ARv> }4( ̭ĺ DRAW DOT STRING > ARw? 5(!̭ź TURN OFF EDIT FUNCTION? ARx? }5(!̭Ⱥ Р TO RETURN HERE ? ARy= 3(̭ͺ GO TO MENU = ARzB }8($̭Һ BACK 1 LINE TO RE-WRITE LINEB AR|B 8($̭Ժ SKIP FORWARD TO TITLES B AR}> 4( ̭غ DELETE  ORº > AR. (} '6-$AdAU. AB2y A}RAdAU< <(' Π𠠠٠=F:B2y,"'(}!6-3A}dAU= A"F:Ad,"AU" AR$o қp! (}A @!z0F:B7p,}"("( ˠŠ"-A"0F:B7p,2F:B7p,=  (}AA`%}+=A @ 2 A?ś@6-@h6-'6-@36-@?6-@}K6-@W6-@c6-@o6-@{6-@6-@6-@ 6-@'6-@26-@3}6-%6-%B6-@@6-@#6-%/6-A&;6-ARI6-$@1Q6-&W6-c6-Ak6-&w6}-@&6-@I6-AUE??;,;,;,;,;,;,;,;,;&@,;,JJ);,;,;,;,;},;@,56-BJ6.ҠK55֮ӠҠҠӛL- 6.67,.67},.-̭֮ΛM6.7<,N 6.67,.67,.O 6. 67,. 67,.P 6.67,.67,.}R' 6.67&@,.'67,.T ;,6.Y A^3A !A@3AAEc\ (}}\(N ENTER YOURAS YOU WANT IT TO APPEAR ON THE PRINTED CASSETTE LOG.d( ___ h!A@d!}AmrKB:,!@0(}/( NAME IS TOO LONG=-AA K A5w A| Πԛ}5 6-6-AV6-%)6-A/6-56-! 6.>:,67,.>:,!67,.67@$%,.נǠ}ԛF+ 0!0@)070@FΠқG,@C/%%)/%%@d;/@C}@dG/@CԠĠӛG,@C@B%/%%@B7,@C@HG/%%@H26-P:+'@},&?0,(,%&2,%&Ԡţț)-@,@A%,) e -,@B } /,@7@A/@5@S/@5@e/@7@'/@7@'/@5@U-@ }7-+,@"%9/@&%G,@"%U,@&%   S , ,@7+,@5@5 }/5,A,@AG,S/@ A0 I =(( Š Š Ҡ CI } = =(( ǭҠŠ  = =((    }& < <('  START D F:B2y,A`N  Ԡқ3!Ԡ}נś4! 6-%6!@F:,$@ A( A2 A`@ˠқ>!1 6-A(}1ŠҠ}ŠśH! 6-R!S! A \!!@0 Aa!*"Apf! "*" APp! " }Az!1-A#2@' 12! A#ŠΛ#+(}6-#3A A}`'A@$3AR# #& -&( ________ _________ #%-@%(ŠԠ# -@}@ (#-@(CASSETTE##-@#( #,-@,(____________}________#0(0(%Ӡ٠ӠԠРҠ#%%(Ү # -#) 6-%"} Ap+) A`#-6@ # !0@ #  60O:,'%O:,#/ "-%O:,%( PROGR}AMS!/ A`#. "-O:,$( & MUSIC . A`#Z "*"-%@O:,0A@:( D A`}U-%@O:,Z(#0F:B7p,@#$ "-O:,$( #$ "-O:,$( }# 6-@#@ # A0#4!2O:$,%$@O:%,42+$,O:,%#DF:A,"@(2}@6-@: D2#A@$$# -#5 @a,/@',%5/@%}# ,%/@%# # 22#I ,/@,%/1,@=/@C,I/}#I,@/@!-/( ;-@I( #%-@%(#1 -(} ܯ #-@1( ܯ #! -!( == #%-@ %( = #C,@}/@1,@@C/@@#' ,,,@',@#!-@@!(=#}-@(##-@#( $ -($ A0D:CASSETTE.BAS#{; CHECK.ACT; Steven Yates; 12/02/85; CHECKSUM DATA;[9E 43 B1 2D 74 DD 67 7C ; 13 30 E5 8F 7A CA C9 77 ; AD AE"} 96 44 B0 F8 99 39 ; EB ]BYTE StartChar,CurChar,Count,X, Flag=[0],Character,Sum,ISum, Product,Key,Case=[0],Colum" }n=1152, Sensitive=[1],Lines,SumLine, WrongLine,Segment=[0],String=[1], SubString=[2],Space=[32]CARD StartLine"!},Line=1160, FirstLine=1156BYTE ARRAY Sums(256)CARD ARRAY SumLines(32)BYTE POINTER LengthCARD POINTER CurLine,NextLin""}e, WrongSumDEFINE is="=", not="<>", Done="Flag=1"PROC End_Of_Line() DO CurLine=NextLine^ CurChar="#}7 Length=CurLine+6 NextLine=CurLine+4 IF CurLine=0 THEN EXIT FI UNTIL Length^>0 ODRETURNPROC "$}Quotes() IF Segment is String THEN Segment=0 ELSE Segment=String FIRETURNPROC Ignore() X==-1 Count==-"%}1 Character=0RETURNPROC Check_Line() Character=Peek(CurLine+CurChar) IF Segment is SubString THEN Segment=0 "&}ELSEIF Character='" THEN Quotes() ELSEIF Segment is String THEN ELSEIF Character='' THEN Segment is SubString E"'}LSEIF Character is Space THEN Ignore() ELSEIF Character='; THEN Ignore() CurChar=Length^+6 ELSEIF Case not Se"(}nsitive AND Character>96 AND Character<123 THEN Character==-32 FI Product=(X*Character) RSH Case ")}Sum==+Product CurChar==+1 X==+1 IF X=4 THEN X=1 FIRETURNPROC Find_Sums() DO DO Character=Peek(Cu"*}rLine+CurChar) IF Character not '; THEN End_Of_Line() ELSEIF Length^>1 THEN EXIT ELSE "+} End_Of_Line() FI IF CurLine=0 THEN Done EXIT FI OD CurChar=8 Character=Peek(",}CurLine+CurChar) IF Character is '[ THEN EXIT FI IF Done THEN PrintE("Listing does not") PrintE"-}("contain checksums.") PutE() PrintE("Cannot CHECK!") EXIT FI End_Of_Line() ODRETURNPROC Get_".}Sums() BYTE I BYTE ARRAY Hex(1) Find_Sums() SumLine=0 DO IF Done THEN EXIT FI SumLines(SumLine)=C"/}urLine CurChar=9 FOR ISum=0 TO 7 DO FOR I=0 TO 1 DO Hex(I)=Peek(CurLine+CurChar+I) IF Hex(I)>='"0}A THEN Hex(I)==-('A-'9-1) FI Hex(I)==-'0 OD Sum=(Hex(0) LSH 4)+Hex(1) Sums(SumLin"1}e*8+ISum)=Sum IF Peek(CurLine+CurChar+3) is '] THEN Done EXIT FI CurChar==+3 OD"2} End_Of_Line() IF Done THEN Flag=0 EXIT FI SumLine==+1 ODRETURNPROC Mistyped() Line=Start"3}Line Column=StartChar PrintE("Return to editor and check") Print("the ") PrintB(Lines) PrintE(" lines following the"4} line") Print("the cursor is on for a ") PrintE("typo.")RETURNPROC Bad_Sum() BYTE I IF Case is Sensitive THEN "5} Print("If article does not ") PrintE("specify") Print("case sensitive, use ") PrintE("option") Print("comma"6}nd to set this to ") PrintE("no.") PutE() PutE() FI WrongLine=ISum/8 Sum=ISum&7 WrongSum=SumLines(WrongLi"7}ne)+9+Sum*3 WrongSum^==%$8080 FOR I=0 TO SumLine DO PrintE(SumLines(I)+6) OD WrongSum^==!$8080 PutE() Print(""8}Is highlighted sum correct?") Key=GetD(1) Key==%32 PutE() PutE() IF Key='y THEN Mistyped() ELSE Print("Re"9}turn to editor and ") PrintE("correct") PrintE("mistyped sum.") Line=SumLines(WrongLine) Column=(Sum+1)*3 F":}IRETURNPROC No_Problems() PrintE("Program CHECKs out fine.") PrintE("Save program and use") PrintE("according to d";}irections") PrintE("in the article.") DoneRETURNPROC Check_Sum() IF Sum<>Sums(ISum) THEN Bad_Sum() Done "<}FI ISum==+1RETURNPROC Initialize() IF Peek(1226)=255 THEN Case is Sensitive FI X=1 CurLine=FirstLine Len"=}gth=CurLine+6 NextLine=CurLine+4 IF Length^=0 THEN End_Of_Line() FI CurChar=7 Close(1) Open(1,"K:",4,0)RETU">}RNPROC D_Check() Initialize() Get_Sums() ISum=0 DO IF Done THEN EXIT FI Sum=0 Lines=0 FO"?}R Count=0 TO 127 DO IF Count=0 THEN StartLine=CurLine StartChar=CurChar-6 FI Check_Line() "@} IF CurChar=Length^+7 THEN End_Of_Line() IF CurLine=0 THEN Check_Sum() IF Done THEN "A} EXIT FI No_Problems() EXIT FI Lines==+1 FI OD IF Done "B}THEN EXIT FI Check_Sum() OD Close(1)RETURNXIT FI Lines==+1 FI OD IF Done @PROC Configure( BYTE inout) ;sets PORTA for output if ;inout=$255, for input if ;inout=$0 Poke(54018,56) &D} Poke(54016,inout) Poke(54018,60)RETURNPROC OutByte( BYTE data,outsignal) ;puts out 'data' byte ;puts DAtaVali&E}d on PORTA ;bit 7 & 'outsignal' on ;PORTA bit 8 when both ;nibbles have been latched ;outsignal must =0 for L&F}o ;or =128 for HiBYTE varCARD porta=[54016] ;latching LSBsvar=data&$0Fvar==%$20Poke(porta,var) &G} ;PrintF("%H%E",var)var==%$30Poke(porta,var) ;PrintF("%H%E",var) ;tackling MSBs nowvar=data RSH 4var&H}==%$10poke(porta,var) ;PrintF("%H%E",var)var==%$70var==%outsignalPoke(porta,var) ;PrintF("%H%E",var)RETURNPR&I}OC main() BYTE data,outsignal=[128],END=[0]WHILE END=0DO Put('?):data=InputB() OutByte(data,outsignal)ODRETURN;NOTE&J}: PROC main & the PrintF's in; PROC OutByte can be used to; follow the workings of the; PROC. Just remove &K}the ';'s; from the PrintF statements.Byte can be used to; follow the workings of the; PROC. Just remove $-34 3 BFNABFF1LINRETRBACKSCHKSUEDILBYTDAfjkl{AA*M}UA& @g @B Bgd GG9@,;@,;@,;*N}@,;@,;@,?6-A6-AU'6-A&36-?6-I AP-@@*O}8(tart or ontinue? B AI(>:,(?-@@#(FILENAME'9AR@?( 25B:, @$-*P}@ @+( 5 @@<?7@<@,0D:&6.D:567@,.? @F 6.P>:,4SA *Q}Z4 A0*@@4 Ad@-@@$)@( 66-%@@ An5*R}@+@@ 5 Apxr A`*@@4 A@F-@@`(FILE *S}ALREADY EXISTS!!rARH-@@%( ERASE IT? / AAAR@H(>:,,>:,4N)>:,*T}4n"@, @0>:,0Y*>:,0yA0+@+@@? AP-@@*U}3( נΠ: ?6-6-@#-@@W-@$+ @,%@$+!@ ,%@*V}iAR|(BYTE #:  A$*"6-8,$ A 6-A:, -@"%@ ( *W} 0 68,-6-%$"!A06-&B) 6-%!A)6-&BO-@%@)AR*X}9( CHECKSUM: E6-@O A*"Ap 6-A:,!-@"%@!( "*Y}A"/ A@6-@%6-/ A,O-@@'*@8,+ 96-%@E6-O *Z}Ap66-@- A-"@:Q,*"@*(A J++**+ @H)!@W,A O%%"*"*[}*!@APT&&++"*(,)",*"A ^$ "AR@!( $$hAr2!@*\}(6.7@<&@,2 A| 6.# (>:,6-&@# A '6-%@!6-' AP*]}!67,.>:,(>:,! A  +^ A@-@@1( NO SUCH FILE!E-@AI T@*^}^ @0tA@H72A@@K-@@PO q2*_}t$U +@#@A1B7tACAYUA@U-6-F:A`,%AV$F:Aa*`},%@A&@@pU%@@_-@@9@-%@1 M-@@@@*a}[%_ W%@A@e.%@BF:A`,E%@CF:Aa,W@?-@*b}*(analog ml editor<AY@4?$>#@@K:0)@;@>$D:MLEDITO*c}R.BAS(analog ml editor<AY@4?$>#@@K:0)@;@>$D:MLEDITO($%u FILEINOUTDDNUFNUBYTNENNN .e} AA;@$@%@,;@,;@,;@,4 +(4(٠ by Charl.f}es F. Johnsond(-(" This program enables you to copyR( up to 16 files to the Ramdisk atd( boot-up time.(S(,(!W.g}hat drive number is the Ramdisk?3(>S@@K:2,)@, @:1,)!@:8,@P< (>:,.h}6-FH(#(Press to write toH( D1:AUTORUN.SYS or enter filenameP( (>@Z( 46.D1:A.i}UTORUN.SYS((9(-("Enter filenames to copy, using the9(format:>(( FILENAME.EXT(;([no drive #, .j} to exit]>(-@ (# @ (0"(%@ >"@& 46-6-@.k}& AU6.D1: 567@:AU,..67$@%@<$.l}@%@,.$ $67B:,%@,.>:,/(!(Press to write %(((/(>$)@$A.m}UA@ (>:,@ @@ #AP+""6@!*@+ A".n}*@ A,=6-B(%B:,&@-6-P:'AV,=6-&$AV6)*@)*@@P.o}@*@*@J-@B:,T*@@:7,,^ hO*@A&)*@@<*@.p}A'O*@@r)*@)*@@H|@(( ġSS255,255,.q}0,48,50,49,169,11,141,66,3,169,33,141,68,3,169,49,141,69,3,169,13,141UU72,3,162,0,32,86,228,169,0,133,203,169,50,133,204,.r}169,0,141,48,49,141,49,49,160TT0,177,203,208,1,96,24,165,203,105,3,141,68,3,165,204,105,0,141,69,3,169,16,141PP72,3,1.s}69,9,141,66,3,162,0,32,86,228,32,19,49,169,3,157,66,3,165,203,157,68QQ3,165,204,157,69,3,169,4,157,74,3,32,86,228,16,3,76.t},255,48,162,32,169,7,157NN66,3,169,0,157,68,3,169,64,157,69,3,169,0,157,72,3,169,48,157,73,3,32,86PP228,48,7,169,1,14.u}1,48,49,208,5,169,0,141,48,49,189,72,3,141,46,49,189,73,3UU141,47,49,173,48,49,208,3,32,19,49,160,1,173,50,49,145,203,173.v},49,49,208,30,162RR48,169,3,157,66,3,165,203,157,68,3,165,204,157,69,3,169,8,157,74,3,32,86,228RR169,1,141,49,49,162,.w}48,169,11,157,66,3,169,0,157,68,3,169,64,157,69,3,173,46&QQ49,157,72,3,173,47,49,157,73,3,32,86,228,173,48,49,240,3,76,109.x},48,32,19,490WW32,23,49,24,165,203,105,16,133,203,144,2,230,204,76,33,48,162,32,208,2,162,48,169:SS12,157,66,3,76,86,22.y}8,155,67,111,112,121,105,110,103,46,46,46,155,155,0,0,0,0D-1 D:RAMCOPY.BAS2,162,48,169:SS12,157,66,3,76,86,22,WEHX;X; *** RAMCOPY ***X;$X; This program copies any numberX; of files to the Ramdisk.$X;.X;8 X; 2{}EquatesBX;L ICCOMBV ICBALD` ICBAHEj ICBLLHt ICBLHI~ ICAX1J CIOVVX; OPEN CLO2|}SE  GETCHR PUTREC  PUTCHR X; POINTR NAMES2BUFFER@X;X; X; Start of programX2}};0( START2 Q>PUTCHR< PICCOMF Q>4RDMSG1P PICBALZ Q>5RDMSG1d PICBAHn Q>LEN1x PICBLL$> CIOVX2~}; Q>4NAMES PPOINTR Q>5NAMESPPOINTRX; COPYLOOPQ> POPN1 POPN2%> Q@POINTR7 HCONT.12}:"X;, CONT.16,@ QPOINTRJO>T PICBAL^QPOINTRhO>r PICBAH|Q> PICBLL Q>PUTREC PICCOM$>2} CIOVX; CLOSE2;;Close IOCB2 Q>OPEN PICCOM9 QPOINTR PICBAL9QPOINTR PICBAH9Q> PICAX192} CIOV& ICONT.20 !RDNEXT:X;D CONT.2N$> XQ>b PICCOM9l Q>4BUFFERv PICBAL9 Q>5BUFFER PICBAH9Q>2} PICBLL9Q>0 PICBLH9 CIOVX;GEOFQ> POPN1 HSAVLENEOFQ>  POPN1X;  SAVLEN*QICB2}LL9;;Save length4 PLENSAV> QICBLH9HPLENSAVR QOPN1\ HCHNGNMf CLOSE2;;Close IOCB2pX;z CHNGNM%>QRD2}NUM;;Change name P@POINTR7X; QOPN2 HWRITIT$>0 Q>OPEN PICCOM9 QPOINTR PICBAL9QPOINTR PIC2}BAH9 Q> PICAX19 CIOV$ Q>. POPN28 X;B WRITITL $>0V Q> ` PICCOM9j Q>4BUFFERt PICBAL9~ Q>5BUFFER2} PICBAH9 QLENSAV PICBLL9 QLENSAV PICBLH9 CIOV X; QOPN1 FRDNEXT !CONT.2 X; RDNEXT  CLO2}SE2;;Close IOCB2 CLOSE3 , QPOINTR( O>2 PPOINTR< DJCLPF #POINTRP JCLPZ !COPYLOOPd X;n X; ----------2}-x X; SUBROUTINES X; ----------- X; CLOSE2 $> HCLOSIT CLOSE3 $>0 CLOSIT Q> PICCOM9 !CIOV 2}X; X; RDMSG1    ACopying...A==" LEN1 RDMSG1, X;6 LENSAV@  J OPN1T  ^ OPN2h  r RDNUM| 2}  X; X; X; EI  ACopying...A==" LEN1 RDMSG1, X;6 LENSAV@  J OPN1T  ^ OPN2h  r RDNUM| 0