@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 D8udX;nX; BATCHERxX; FOR DOS 2.xX;WARMST;;boot flagCLOCK3;;timerZIOCB ;;pg.0 IOCB,T}ICBALZ$;;addr-lo,ICBAHZ%;;addr-hi,ICBLLZ(;;len-lo,ICBLHZ);;len-hi,ICAX6Z/;;aux6.ROWCRST;;CurU}sor row,COLCRSU;;and column.EPTR;;Work word,INDEX;;and byte.INBUFF;;Buffer addrBATZIO;;ZIOV}CB copyHATABS;;IO handlers"IOCB0@;;IOCB start,,ICCOMB;;Command.6ICSTAC;;Status.@ICBALD;;BuffeW}r,JICBAHE;;address,TICPTLF;;Put 1 byte,^ICPTHG;;vector.hICBLLH;;buffer,rICBLHI;;length.|ICAXX}1J;;aux. infoIOCB5;;#5 hdler-idCIOVV;;I/O rtn.X;$X; Find and replace E: tableX;@Q>;Y};timer set,PCLOCK3;;at 0. CLEARS;;Clear scrn%>;;Find, FINDITQHATABS8;;editor,R> E;' ;vector.FZ}FOUNDIT;;Found.3;;Skip this, 3;;3 byte,& 3;;entry.0)>!;;Loop thru,:DFINDIT;;table.D :;;Failed.N FOUNDITX 3;;S[}kip Eb'INDEX;;Save indexlQHATABS8;;Set addr,vPEPTR;;of E: rtn,3;;table in,QHATABS8;;pointer,PEPTR;;wor\}d.%>;;Copy all, COPYITQ@EPTR7;;16 bytes,P8;;of editor,1;;vectors,ICOPYIT;;to PG.1.Q;;E: GET,]},;;vector+1,O>;;saved in,PBATMON;;BATCHER,Q;;for non- O>;;batch,PBATMON;;commands. QICPTL;;S^}ave,* ,;;editor,4O>;;put 1,>PBATECO;;byte rtn,HQICPTH;;for echo,RO>;;of batch,\PBATECO;;commands.fQ_}>;;New E:,pP;;GET addr.,zQ>;;-1 in new,P;;E: table.%INDEX;;New E:,Q>;;table,PHATABS8;;address,`}3;;in device,Q>;;handler,PHATABS8;;table.%>;;Copy, COPYBATQBATCHER8;;code to,P8;;its pg. 6,3;a};residence.)>BATLEN;;Len. must,HCOPYBAT;;be < 256.Q> ;;Row and,PROWCRS;;column,$Q>;;to put,.PCOLCRS;;mb}essage.8$>;;E: IOCB.BQ>INMSG;;Msg-low.LPICBAL;;Addr.low.VQ>INMSG;;Msg-hi.`PICBAH;;Addr.hi.jQ>;;Lenc}gth ,tPICBLL;;of msg.~A;;Zero hi,PICBLH;;len.byte.Q> ;;Put data,PICCOM;;I/O cmd. CIOV;;Send msg.$>P;d};File #5,Q> ;;close,PICCOM9;;command, CIOV;;to init,%>;;BIOCB. INITBIOCBQIOCB58;;Copy #5,PBIOCB8;e};closed, 1;;status, IINITBIOCB;;to BIOCB.QWARMST;;Skip if,HWAITABIT;;not boot.($>P;;Bat. iocb2Q>AUTO;;Af}utorun,<PICBAL9;;script,FQ>AUTO;;file,PPICBAH9;;name.ZQ>;;Enough,dPICBLH9;;length.nQ>;;Input,xPICAg}X19;;mode I/O.Q>;;Open,PICCOM9;;command. CIOV;;try open. BATSWAP;;BATSAVE. WAITABITQCLOCK3;;Wait for,h}R>p;;a while,DWAITABIT;;to pass. CLEARS;;Clr scrn. ,;;Clean, :;;return. CLEARSQ>;;Zero the,>;;iocbi} and,PICBAL;;address,PICBAH;;and,"PICBLL;;length,,PICBLH;;for 1,6Q> ;;byte put,@PICCOM;;command,JQ>};;j}from A,T CIOV;;register.^ :;;Return.hX;rINMSG AA|AUTO AD:AUTORUN.BATA X;X; BATCHER"X;k} E: device GET CHAR rtn.#X; (non-relocatable labels,"X; set as pg. 6 offsets.)X; BATCHERQBIOCB;l};active BAT?GBATEDI;;No-real E:X;BATGET BATCHERQ>;;Set BIOCB,PICBALB;;up for 1,PICBAHB;;byte Gm}ET,PICBLLB;;to be,&PICBLHB;;returned,0%>;;in A reg.: BATCIO;;Real E:,DGBATEDI;;if error.NQICAX6Z;;saved bn}yteXBATECO ;;CRT echo.bQICAX6Z;;restore.l ,;;data,vDBATXIT;;return.BATX9BQ>;;return EOLBATXIT$>;;E: Io}OCB.%>;;Return,BATRTS:;;status okX;X; Allow real E: input, X; Watch for / commands.X;BATEDIp}$>;;E: IOCB%>;;Stat.o.kBATMON ;;User key.)>;;Break?FBATRTS;;Yes-exit.R>;;EOL ? HBATRTS;;No-exitq}.%>;;Save EOL, P@ICBALZ7;;for CIO.*QICBAL;;Caller,4PINBUFF;;buff ptr,>PICBALB;;to pg.0,HQICBAH;;and BIOCBr}RPINBUFF;;in case,\PICBAHB;;needed.fQ@INBUFF7;;1ST byte,pR> /;' ;is BATCH?zHBATX9B;;No-returnX;X; s} Start a BATCH scriptX;BATGO%> ;;close, BATCIO;;BIOCB.%>;;Test if,Q> :;' ;D:, or,R@INBUFF7;;Dn:t},FBATINC;;format, 3;;was,R@INBUFF7;;keyed.FBATINC;;Yes-open.QICBLL;;Only a, ;;;name was, SICBLLZ;;keyeu}d, ?;;so we,$ BATL1Q@INBUFF7;;must,. 3;;shift,8 P@INBUFF7;;right,B 1;;overlay,L 1;;slash,V HBATL1;;with D,` Q> Dv};' ;and,j P@INBUFF7;;insert a,t 3;;colon,~ Q> :;' ;after it, P@INBUFF7;;then go, HBATOPN;;open file BATINCw}#ICBALB;;Skip, HBATOPN;;the / to, #ICBAHB;;filename. BATOPNQ>;;Set up, PICBLHB;;BIOCB, %>;;for Open, 'Ix}CAX1B;;input, 1;;cmd and,  BATCIO;;try open. GBATX9B;;failed. QINBUFF;;Tell CIO, PICBALZ;;that the, QINBUFFy};;editor, PICBAHZ;;buffer,( QICBLL;;is empty,2 PICBLLZ;;ignoring,< QICBLH;;/ cmd,toF PICBLHZ;;replace,P !BATGEz}T;;with BAT.Z X;d BATCIO BATCHERn 'ICCOMB;;Save cmd.x  BATSWAP;;Swap I/O. $>P;;BAT IOCB.  CIOV;;Do I/O. {}PBATZIO;;Save data IBATCIX;;I/O o.k. C;;Status, 5;;saved. Q> ;;Close #5, PICCOM9;;restore,  CIOV;;status|}, 7;;and fall, ?;;thru to, BATCIX ;;BATSWAP. BATSWAP BATCHER C;;Save Y, 5;;reg. Set, %>;;copy len."}} BATSWLQZIOCB8;;ZIOCB,, 5;;byte save6 QBATZIO8;;copy old,@ PZIOCB8;;to ZIOCB.J 7;;Get ZIO,T PBATZIO8;;save it.^ Q~}IOCB58;;File #5,h 5;;saved.r QBIOCB8;;BAT IOCB,| PIOCB58;;to #5. 7;;Old #5, PBIOCB8;;saved. 1;;loop for, IBAT}SWL;;16 bytes. 7;;Restore, ?;;Y reg, :;;and retn. X; X; Private IOCB X; BIOCB BATCHER ICCOMBB}IOCB;;cmd. ICBALBBIOCB;;buffer, ICBAHBBIOCB;;address. ICBLLBBIOCB;;buffer, ICBLHBBIOCB ;;le}ngth.& ICAX1BBIOCB ;;I/O mode0 #X; BATCHER,: BATLEN BATCHER;;lengthD ICBLHBBIOCB ;;leg@A @E!`Ȅ͹ȹ̠˙i@AiAAFi-AGi.AͩȩA } TUD@EHI B VP B V!PDAEIJB V p @`DEHI B }} V`D:AUTORUN.BAT0& 0/ /` ɛ$DE/Р : }H8(ȑDȩ: 0$%H(I)L P V H B VhH H h }Hhh`@ȩ: 0$%H(I)L P V H B VhH H h d#X;pseudo-BASIC macros for MAC/65n!X;put in file called MACRO.LIBxX;$X;*******************************X;X;eq}uates needed by macrosX; EOL OPEN GETREC PUTREC CLOSE DRAW ROWCRST COLCRSU} COLORCOLOR0ATACHR ICCOMB" ICBALD, ICBAHE6 ICBLLH@ ICBLHIJ ICAX1JT ICAX2}K^ CIOVVhX;r$X;*******************************|X;X;SETCOLOR macroX;X;Usage: SETCOLOR X,Y,ZX;!X;X,} Y, and Z can be values orX;memory addressesX;SETCOLOR    AError in SETCOLORA  $ }$> &  0Q :T?DT?NT?XT?bl Q> v  % %>  PCOLOR09CM>}, OCOLOR09 PCOLOR09X; $X;*******************************X; X;POKE macro*X;4X;usage: POKE X,Y>}X;H"X;X is an address, Y is a valueRX;\ POKE f  p AError in POKEAz Q>4 P X;$X;******}*************************X;X;POSITION macroX;X;usage: POSITION X,YX;X;X and Y are both values; X$X;can g}o from 0-319, Y from 0-191X;POSITION   $ AError in POSITIONA.8 Q>4 B PCOLCRSL Q>5 VPCOLCRS}` Q>4 j PROWCRSt~X;$X;*******************************X;X;OPEN macroX;$X;Usage: OPEN chan,aux1,au}x2,devX;X;'chan' is an IOCB numberX;'aux1' is a task number%X;'aux2' is the 2nd auxiliary byte$X;'dev' is the na}me of the deviceX; to open, as a literalX;  OPEN    AError in OPENA(2!@SKIPOPEN<@DEVICE =EO}LF @SKIPOPENP $> ZQ>4@DEVICEd PICBAL9nQ>5@DEVICEx PICBAH9  Q Q>  PICAX19  }Q Q>  PICAX29 OPENIOCBX;"$X;*******************************,X;6X;CLOSE macro@X};JX;Usage: CLOSE chanTX;^X;'chan' is an IOCB numberhX;r CLOSE |   AError in CLOSEA $>  Q>}CLOSE PICCOM9 CIOVX;$X;*******************************X;X;GRAPHICS macroX;X;Usage: GRAPHICS} XX;$X;X is the number of the graphics&"X;mode desired; add 16 to this0!X;number to eliminate the text: X;windowDX};NGRAPHICS X  b AError in GRAPHICSAlv !@SKIPGR @AUX1  @AUX2  @SKIPGRQ> M> P}@AUX2Q> M>N>L>  P@AUX1 OPEN =@AUX1=@AUX2=AS:A  X;*$X;******************************}*4X;>X;PRINT macroHX;RX;usage: PRINT IOCB,address\X;f#X;IOCB is channel number to use;p"X;'address' is the label} of thez#X;text string to be printed; the!X;text string must have an EOLX;character ($9B) at the endX; X;if only o}ne parameter, then!X;IOCB is assumed to be 0 (E:)X;X;calls subroutine PRINTLINEX; PRINT  3  A}Error in PRINTA   $> Q>4  PICBAL9$ Q>5 . PICBAH98 B $> L Q>4 V PICBAL9` Q>5 j P}ICBAH9t ~  PRINTLINE   X; $X;******************************* X; X;COLOR macro X; X;Usage: COLOR X X;} X;X must be a value X; COLOR    AError in COLORA  Q> ( PCOLOR2 < F X;P $X;****************}***************Z X;d X;PLOT macron X;x X;Usage: PLOT X,Y X; X;X is the x-coordinate X;Y is the Y-coordinate X; } PLOT    AError in PLOTA  POSITION =  $>` Q>PUTREC PICCOM9 Q> PICBLL9 PICBLH9 }QCOLOR" CIOV, 6 @ X;J $X;*******************************T X;^ X;DRAWTO macroh X;r X;Usage: DRAWTO X,Y| X; !X;}X and Y are the endpoints of %X;the line to draw; must be values X; DRAWTO    AError in DRAWTOA  PO}SITION =  $>` Q>DRAW PICCOM9 Q> PICAX19 Q> PICAX29 QCOLOR& PATACHR0 CIOV: OA  POpd#X;SUBS.LIB file to go with macron#X;library file; required equatesxX;are in MACRO.LIB fileX;$X;***************}****************X;X;subroutine PRINTLINEX;called by PRINT macroX;#X;prints up to 160 characters on X;IOCB num}ber that is alreadyX;in the X-registerX; PRINTLINEQ> PICBLL9Q> PICBLH9 Q>PUTREC" PICCOM9, CI}OV6:@X;J#X;******************************TX;^X;subroutine OPENIOCBhX;rX;called by OPEN macro|X; OPENIOCB }Q>OPEN PICCOM9 CIOV:X;#X;------------------------------X;X;if you use AMAC:X; X;some devices you m}ight want"X;to open - add your own if youX;use other custom handlers;!X;you'll need to define a disk"X;filename in f}ull elsewhere inX;your program, such as:&X;0 X;FILE1 .BYTE "D1:SCORES.DAT":X;D S AS:AN E AE:AX C AC:Ab P A}P:Al K AK:Av R AR:Aprogram, such as:&X;0 X;FILE1 .BYTE "D1:SCORES.DAT":X;D S AS:AN E AE:AX C AC:Ab P A8d X;Example 1 for macro librarynX;by Karl E. WiegersxX;F=EI>D:MACRO.LIBPGRAPHICS SETCOLOR} ==POKE COLOR0=POSITION =PRINT =TEXT1PRINT TEXT2 CLOSE  END!END>D:SUBS}.LIB TEXT1 ATHIS is a testA=EOLTEXT2 AText window!A=EOLTEXT1PRINT TEXT2 CLOSE  END!END>D:SUBSB5d X;Example 2 for macro librarynX;by Karl E. WiegersxX;F=EI>D:MACRO.LIBPGRAPHICS SETCO}LOR == SETCOLOR == COLOR PLOT =DRAWTO <=DRAWTO =#DRAWTO (=DRAWTO }4=#DRAWTO = CLOSE  END!END>D:SUBS.LIBDRAWTO <=DRAWTO =#DRAWTO (=DRAWTO ?0 REM -----------------1 REM Ġ3 REM NEW VERSION 5/874 REM -----------------80 FOR X=N1 TO N77:I(X)=N0:ER( }X)=N0:NEXT X:I(39)=N7:ER(39)=1:RESTORE 3010955 IF NOT ER(ROOM) THEN ER(ROOM)=1:RC=RC+12162 IF ROOM=DR THEN 21752163 GRAPH }ICS N0:POKE 756,CHSET:POKE 752,N1:POKE 710,N0:POKE 711,54:POKE 712,1122164 DL=PEEK(560)+256*PEEK(561)+N4:POKE DL+22,N6:POKE }DL+23,N6:POKE DL+24,N6:POKE DL,N0:POKE DL+N1,MAP2165 POKE 88,N0:POKE 89,MAP:POKE 559,34:POSITION 23,N21:? " ":P }OSITION N4,22:? " "2166 R=DR:GOSUB ROOMPOS:POSITION COL,ROW:? "| |"2167 POSITION COL+N1,ROW+N1:? " }":FOR X=N1 TO N10:NEXT X2168 POSITION COL+N1,ROW+N1:? " ":FOR X=N1 TO N10:NEXT X2169 IF STRIG(N0)=N0 THEN GOSUB SND1:GOTO }21752170 GOTO 21672175 GRAPHICS N18:POKE 756,CHSET:POSITION N2,N1:? #N6;"ՠŠġ"2195 IF RC=77 THEN SC=SC+1502210 O }PEN #N1,N4,N0,"K:":GET #N1,A:CLOSE #N1:IF A<>ASC("N") AND A<>ASC("Y") THEN 22102211 CN=N0:FOR X=N1 TO N10:PR(X)=N0:NEXT X22 }12 IF SC<=RS(N10) THEN 22202213 CN=CN+N1:IF SC>RS(CN) THEN 22152214 GOTO 22132215 FOR X=N9 TO CN STEP -N1:RS(X+N1)=RS(X):P }R(X+N1)=PR(X):RS$((X+N1)*N9-N8,(X+N1)*N9)=RS$(X*N9-N8,X*N9):NEXT X2216 B=N0:FOR X=N1 TO N9:IF N$(X,X)<>" " THEN NEXT X:GOTO }22192217 B=B+N1:IF B=N2 THEN FOR Y=X-N1 TO N9:N$(Y,Y)="":NEXT Y:GOTO 22192218 NEXT X2219 RS(CN)=SC:PR(CN)=N1:RS$(CN*N9-N8 },CN*N9)=N$:F=N12220 CN=N0:IF NOT F THEN 22232221 CLOSE #N1:OPEN #N1,N8,N0,"D:DRAGONLO.DAT":FOR X=N1 TO N10:? #N1;RS(X):? # }N1;RS$(X*N9-N8,X*N9):NEXT X2222 CLOSE #N1:F=N02223 GRAPHICS N17:POKE 756,CHSET:POSITION N3,N0:? #N6;"record scores":POSITIO }N N3,N1:? #N6;""2224 FOR X=N1 TO N10:POSITION N3,X+N4:? #N6;RS$(X*N9-N8,X*N9);"";RS(X):NEXT X2225 FOR Z=N1 TO } N10:IF PR(Z)=N0 THEN NEXT Z:GOTO 22292226 FOR X=N1 TO N20:NEXT X:POSITION N2,Z+N4:? #N6;"":FOR X=N8 TO N0 STEP -0.4:SOUND }N0,N10,N10,X2227 SOUND N1,N15,N10,X:FOR Y=N1 TO N4:NEXT Y:SOUND N0,N0,N0,N0:SOUND N1,N0,N0,N0:FOR Y=N1 TO N3:NEXT Y:NEXT X2 }228 NEXT Z2229 POKE 711,54:POSITION N2,22:? #N6;""2230 FOR X=N1 TO 30:NEXT X:POKE 711,N0:IF STRIG(N0)=N0 TH }EN 22322231 FOR X=N1 TO N10:NEXT X:POKE 711,54:GOTO 22302232 IF A=ASC("N") THEN POKE 82,N2:END 2233 POSITION N2,22:? #N6;" } ONE MOMENT "2240 RESTORE 2940:HP=50:STR=100:SPL=N0:PIE=N1:CNT=N0:B=N0:WN=N1:G=60:ROOM=39:SC=N0:SM=N0:TURN=N0:RC=1:GOTO }802300 DIM ER(77),RM(N77),I(N77),RM$(255),MV$(N20),N$(N9),W$(28),DIR$(N20),S$(120),B$(40),CL$(40)2310 DIM R$(N1),R(N5),C$(N }1),E$(N4),D$(81),F$(N14),RS(N10),RS$(90),PR(N10)2340 WN=N1:PIE=N1:CNT=N0:G=60:SPL=N0:HP=50:STR=100:B=N0:ROOM=39:SM=N0:SC=N0: }TURN=N0:RC=12350 ROOMPOS=180:CHOOSE=290:DIR=370:CLUE=210:DEAD=2162:DELAY2=360:SND1=160:SND2=170:TEL=1303030 POKE 559,0:POKE } 87,N0:POKE 88,N0:POKE 89,MAP:A=USR(ADR(CL$),N15)3040 POSITION N18,N9:? RM$(RM(ROOM)*N17-N16,RM(ROOM)*N17)3301 TRAP 3351:OP }EN #N1,N4,N0,"D:DRAGONLO.DAT"3302 FOR X=N1 TO N10:INPUT #N1;A:RS(X)=A:INPUT #N1;N$:RS$(X*N9-N8,X*N9)=N$:NEXT X:TRAP 40000:CL }OSE #N13340 FOR X=N1 TO N9:IF N$(X,X)<>"-" THEN NEXT X3342 F$="D:DUNGEON .DAT"3343 POSITION N2,N15:? "WHAT DUNGEON <0-9> } ";:TRAP 3343:INPUT D:CLOSE #1:F$(N10,N10)=STR$(D)3344 OPEN #1,4,0,F$:CLOSE #13345 GRAPHICS N0:POKE 559,N0:? :? :? "ENTE }R";CHR$(34);F$:? :? :? "CONT"3346 POSITION N0,N0:POKE 842,N13:STOP 3347 POKE 842,N12:RESTORE 2940:FOR Y=N1 TO 77:READ A:RM( }Y)=A:NEXT Y3350 TRAP 3030:N$(X)=" ":POP :TRAP 40000:POKE 559,34:GOTO 5503351 RS$(N1)=" ":RS$(90)=" ":RS$(N2)=RS$:CL }OSE #N1:OPEN #N1,N8,N0,"D:DRAGONLO.DAT"3352 FOR X=N1 TO N10:RS(X)=N0:? #N1;RS(X):? #N1;RS$(X*N9-N8,X*N9):NEXT X:CLOSE #N1:GO }TO 3310OPEN #N1,N8,N0,"D:DRAGONLO.DAT"3352 FOR X=N1 TO N10:RS(X)=N0:? #N1;RS(X):? #N1;RS$(X*N9-N8,X*N9):NEXT X:CLOSE #N1:GO 12 ) REPEARMFALBRMCMPROODLINR@@@@@ $}!+K l%%A NA  @ @!@@4@@x@4@@A0@x$}@@ 1 +@A1AR@z-@@-(@ dragonlord?-@@$}[(@DUNGEON EDITORz( By Clayton Walnum.(.(# Copyright 1987 by ANALOG Computing(?6-@6-$}@'6-@36-@?6-2<<;@,;@,;@,;@u,;@7,<++9@w<@$},9@<@,FD-@@w+-@@<68<,-@ D PB-@@+-@$}@/":68<,-> B Zee1,1,0,0,1,0,1,0,1,0,0,1,0,1,1,0,0,0,1,1,0,1,0,1,1,1,1,0,1,1,0,1,0,1,1,1,1,1,1,1,1,0,0,0,0$},0,1,0d0,1,0,0,0,0,0,1,1,0,1,1n467@,. %67@7,. 467@,.x6.| |1 +$}A1AR@;-@@;-@@3@ - (  $}Af@?-(% = UP  = DOWN  = RIGHT  = LEFT?Af,,($N,S,E,W = EXITS C = CLEAR Q = QUIT?$}6-@6-@!6-'6-36-@9-?(;#@@K:0)@;@$}"@:Q,)"@:q,A H#+"@:N,)"@:n,,*!@1-&@7(H68<,-@H#+"@:S,)"@:s,,* $}@g1-%@7(H68<,-@U0+"@:E,)"@:e,,*'@P:'@,>-%@D(U68<,-@$}iD+"@:W,)"@:w,,*+&@,'@P:+&@,'@,R-&@X(i68<,-@Z"@:C,)"$}@:c,--&@&@1(E-@@V68<,-Z 4"@:*,6-%@(!@w46-@$}4"@:+,6-&@( @46-@w"6"@:-,6-&@( @66-%@w,6"@:=,6-$}%@(!@w66-&@w6 A  A@ AAJ6.D:DUNGEON0.DATT7 A@-@$}@!3(DUNGEON NUMBER7^!! @)!@ A@hO A'67@<@,.=:,2@O$}@@rP-@@"<(!FILE ALREADY EXISTS! OVERWRITE IT@P0YA |V@+@$}@5 AG-@@!V( WORKING...6-A)@-@@g@, 6.=:,"$}67@,. DATA , B)-%@6-@) A -@@!8<,"8<, ! Ap$}('6-%@(!@A A0467B:,%@,.=:,067B:,%@,.,4 8&(@7$}@MISSL;;me= }mory...C PL0H PL1M PL2R PL3WCHSET;;New CHar SET\DISP;;DISPlay memoryaBOARDDISPff= }TEXTDISPkCADRL;;RegenerationpCADRH;;data storage...u CTYPEzTSAVE(;;Temp bufferX;X;---= }---------------X; PROGRAM MAINLINEX;------------------X;  RESET-;;Kill decimal SETSYS;;Set-up system= } REDEFINE;;Redef. chset TITLE;;Do title scrn. SETUP;;Set-up programMAIN PLACE;;Place cells LIFE;;Create =}life!!MAIN;;Loop foreverX;X;-----------------X; VBLANK MAINLINEX;-----------------X;VBI-;;Kill deci=}malQVBICTL;;Get VBI flagGNOVBI;;If <0, exitQ>;;else, turn offPATRACT;;attract mode ANIMATE;;Animate cell=}s BCOLOR;;Do border color QVBICTL;;Get flag againHNOVBI;;If not 0, exit DING;;Do ding sound#CURSOR;;Flash =}cursor... QCURSOR$ PCOLOR3)NOVBI!XITVBL;;Bye-bye VBI!.X;3X;---------------8X; SET-UP SYSTEM=X;--------------=}-BX;GX;Among other things, set upLX;the VBI and any variablesQX;associated with it thatV#X;need be initialized only =}once.[X;` SETSYSe SIOINV;;Init sounds...j QUIEToQ>4RESET;;Steal thetPDOSINI;;reset vector...y Q>5RESET~P=}DOSINI$>;;Init VBI&VBICTL;;variables... &COLTIM2 &IMAGE %>4VBI $>5VBIQ> !SETVBVX;X;-=}---------------X; SHUT OFF SOUNDX;----------------X;X;This is a general purposeX;routine that initializes#X;=}sound channels 1,2 & 3. It is!X;not responsible for handlingX;routine-specific flags.X; QUIETQ>;;Initialize=}PSKCTL;;sound andQ>;;turn offPAUDCTL;;channels 1,2PAUDC1;;and 3... PAUDC2  PAUDC3:X;X;---------=}---------X; REDEFINE CHARSET#X;------------------(X;-X;Move charset2X;7 REDEFINE<$>;;Move set fromAMOVSET=}QOLDSET9;;$E000 toFPCHSET9;;RAM...KQOLDSET9PPCHSET9UQOLDSET9ZPCHSET9_QOLDSET9dPCHSE=}T9i2n HMOVSETsX;xX;Redefine a few chars}X;$>?;;Redefine chars REDEFQCHRDAT9;;2 thru 10 asPCHSET9=};;the arena's 0;;borders IREDEFX;X;Install new setX; Q>5CHSET PCHBAS:X;X;Character dataX;=}CHRDAT === ===X; === ===X; === ===X;  = = = =}  = = = X; ===  == = X; === ===X;"  = ==' ===,X;1=} ===6 ===;X;@X;---------------EX; PRINT MESSAGEJX;---------------OX;TX;This routine prints an =}EOLY X;terminated internally-coded^ X;string on the message line.cX;hX;Call with:m!X; x reg. - lo byte of stringr!X;= } y reg. - hi byte of stringwX;| PRINT&PNT1;;Save string'PNT1;;address%>DOCHARQ@PNT17;;Get a char=!}R>EOL;;EOL?FPADIT;;Yes, pad line.PTEXT8;;No, show char3;;and do theHDOCHAR;;next oneX;!X;Pad rest of lin="}e with blanksX;PADITQ>;;Blank charDOPAD)>(;;All done?EPREXIT;;Yes, return.PTEXT8;;No, show blank3;;L=#}oop untilHDOPAD;;line is done PREXIT:X;!X;---------------------------- X; NUMERICAL DISPLAY ROUTINES!X;------=$}----------------------X;X;Show generation numberX; SHOGEN%>;;Screen offset $>P;;Color maskQGENER;;=%}Print... BCD QGENER!!BCD&X;+X;Show population0X;5 SHOPOP:%>=;;Screen offset?$>;;Color maskDQPOP=&};;Print...I BCDNQPOPS!BCDXX;]X;Show starting pop.bX;g SHOSTRTl%>B;;Screen offsetq$>P;;Color maskvQ='}POP;;Print...{ BCDQPOP!BCDX;X;Show largest pop.X; SHOMOST%>G;;Screen offset$>;;Color mask=(}QMOST;;Print... BCDQMOST;;Fall into BCD..X;X;Print 2 BCD digitsX;X;Call with:X; a reg. - BCD da=)}taX; x reg. - color mask+16 X; y reg. - offset from DISPX;BCD5;;Save BCD data&COLMSK;;Save color mask=*}V?;;Move upper 4V?;;bits into lowerV?;;4 bits...V?LCOLMSK;;make it ATASCIIPDISP8;;and show it. 3;;Goto nex=+}t pos.7;;Get original #M>;;mask upper halfLCOLMSK;;make it ATASCII PDISP8;;and show it.%3;;Goto next pos.*=,}:;;and leave./X;4X;-----------9X; SHOW MODE>X;-----------CX;H SHOMODEM%>L;;Screen offsetR$MODE;;Get mode #W=-}QLET19;;Print first\PDISP8;;letter of modea3fQLET29;;Print secondkPDISP8;;letter...p3uQLET39;;and printz=.}PDISP8;;final letter:X;X;Mode dataX;LET1 @=ARRSSFALET2 @=AGGSSSALET3 @=ANQNQTAX;X;---=/}------------------X; MAIN SET-UP ROUTINEX;---------------------X; SETUPQ>;;Set mode toPMODE;;0 (RGN)P=0}SDMCTL;;Turn DMA off SETCELL;;Set cell data SETCOLR;;Set colors SETDISP;;Set-up display SETPM;;Set PM grphic=1}sQ>>;;Enable DMA forPSDMCTL;;screen and PM:;;and exit!X;X;--------------------X; INIT CELL DATABASE X;-=2}------------------- X; $X;Reset all cell variables except #X;MODE which does not need to be X;changed when the cells ar=3}e. X; SETCELL$ $>;;Clear out the) &POP;;population.... &POP3 &MOST;;largest pop...8 &MOST= &GENER;=4};Set generationB 2;;to 1 (BCD)G &GENERL :Q X;V X;---------------[ X; SET UP COLORS` X;---------------e X;j SETCOLR=5}o $>;;Do 9 color regst COLRQCOLORS9;;Get a colory PPCOLR09;;& put in reg.~ 0;;Repeat til done ICOLR : X; X;=6}Initial colors X; COLORS  @BOARD;;PCOLR0  @BOARD;;PCOLR1  @BOARD;;PCOLR2  @BOARD;;PCOLR3  @GENTXT;;COLOR0=7}  @GENNUM;;COLOR1  @GR0BAK;;COLOR2  ;;COLOR3  ;;COLBAK X; X;--------------------- X; SET-UP MAIN DISPLAY=8} X;--------------------- X; X;Clear display memory X; SETDISP $>;;Clear 480 bytes A;;in two blocks CLRDPD=9}ISP9;;of 240 each... PDISP9 2 (> HCLRD X; X;Print labels# X;( $> ;;Print- PRL1QGLABEL9;;"GENERATION:=:}"2 PDISP9;;on line 0...7 0< IPRL1A $>#;;Print cellF PRL2QLABELS9;;data labelsK PDISP9;;on line 1...P 0U I=;}PRL2Z X;_ X; Draw bordersd X;i Q>4DISPe ;;Draw then PPNT1;;long sectionss Q>5DISPe ;;of thex PPNT1;;bord=<}er} $>;;(15 chars long) BDRAWQ>B;;Print a piece PDISPR9;;of top line Q>C;;and the bottom PDISP9;;line p==}lus %>;;part of the Q>E;;left side P@PNT17 %>;;and finally Q>D;;a piece of the P@PNT17;;right! QPNT1;;=>}Add 20 to the ,;;address of the O>;;current line so PPNT1;;that we'll know QPNT1;;where to print O>;;the n=?}ext side PPNT1;;chars. 0;;Finish drawing! IBDRAW X; %>F;;Add upper left 'DISPQ;;corner, 3;;upper right=@}, 'DISPb 3;;lower left, 'DISP 3;;and finally the 'DISP;;lower right! X; X;Point to main DL X; =A}Q>4DL" PSDLSTL' Q>5DL, PSDLSTL1 X;6 X;Start up DLIs; X;@ Q>4DLI1;;Point to firstE PVDSLST;;DLI...J Q>5DLI1=B}O PVDSLSTT Q>;;Enable DLIs andY PNMIEN;;VBIs^ X;c X;Show cell datah X;m  SHOGEN;;Show generationr  SHOPOP;;c=C}urrent pop.w  SHOSTRT;;starting pop.|  SHOMOST;;Maximum pop. !SHOMODE;;and mode X; X;Main display list X; DL =D}p=p=p  =4DISP=5DISP      p  ========  =======    p    =E}A=4DL=5DL X; X;Misc. display data X; GLABEL AGENERATION:A LABELS APopulation A  AStarting MostA  A =F} ModeA X; X;------------------ X; MAIN SCREEN DLIs X;------------------ X; X;Set the text luminance for X;th=G}e label line (1) X; DLI15;;Save acc. Q>@GR0LUM;;Set text! PHCOLR1;;luminance& PWSYNC;;Wait for sync+ Q>4DLI2;;a=H}nd point to0 PVDSLST;;next dli...5 Q>5DLI2: PVDSLST? 7;;Restore acc.D 9I X;N "X;Set colors for the numbers onS X=I};line 2X X;] DLI25;;Save acc.b Q>@NUM1;;Set numberg PHCOLR0;;color 1,l PWSYNC;;wait for sync,q Q>@NUM2;;and set nu=J}mberv PHCOLR1;;color 2{ Q>4DLI3;;Point to next PVDSLST;;dli... Q>5DLI3 PVDSLST 7;;Restore acc. 9 X; !X=K};Set colors for the cells and X;border of board X; DLI35;;Save acc. Q>@CELL;;Set cell color PHCOLR0 PWSYNC;;W=L}ait for sync QBORDER;;and set border PHCOLR1;;color Q>4DLI4;;Point to final PVDSLST;;dli... Q>5DLI4 PVDSLST=M} 7;;Restore acc. 9 X; #X;Set text luminance for message X;line X; DLI45;;Save acc Q>@GR0LUM;;Set text P=N}HCOLR1;;luminance, and PWSYNC;;wait for sync Q>4DLI1;;Point back to PVDSLST;;first dli... Q>5DLI1 PVDSLST%=O} 7;;Restore acc.* 9/ X;4 X;----------------------9 X; CLEAR MISSILE MEMORY> X;----------------------C X;H CLRMISSM =P}$>;;Fill missileR A;;memory withW CCLRPMISSL9;;zeroes\ 2a HCCLRf :k X;p X;--------------------u X; SET-UP PM GRA=Q}PHICSz X;-------------------- X; X;Clear pm memory X; SETPM  CLRMISS;;Clear missiles $>;;Clear players A;;=R}0-3... PMCLRPPL09 PPL19 PPL29 PPL39 2 HPMCLR X; X;Init pm X; Q>5PM;;Point to pm PPMBASE;;memory=S} Q>;;Turn on pm PGRACTL;;graphics &SIZEM;;Set missl. size >;;Set all players SETSIZEPSIZEP09;;to 0;;quadrup=T}le width ISETSIZE Q>;;Set priorityPGPRIOR;;w/5th player onX; X;Draw board squaresX;%>;;Draw squares=U}SQ1$>;;in players 0-3SQ2QSQRDAT9;;Get data byte$PPL0H8;;and put it in)PPL1H8;;each player.... PPL2H83=V} PPL3H883;;Next pm byte=0;;Finish up a setBISQ2;;of 4 squaresG)>LHSQ1;;Complete boardQX;V$>;;Set playe=W}r[MOVSQQPLHPOS9;;horizontal`PHPOSP09;;positions...e0j IMOVSQo:tX;yX;Square data~X;SQRDAT ===̈=X} ===̍ 3=3=3=3 3=3=3=3X;X;Player horiz. positionsX;PLHPOS @=`==X;X;------------=Y}-------------X; VB BORDER COLOR HANDLERX;-------------------------X; BCOLOR#COLTIM;;Add 1 to timerHOLDCOL=Z};;If not 0, exitQRANDOM;;Get random #M>;;Make it <16T?;;Mult by 16...T?T?T?PBORDER;;Save the result=[}QRANDOM;;Get random #M>;;Make it <4,,;;add 6, and addO>;;it to previous LBORDER;;result for thePBORDER=\};;new color! OLDCOL:X;X;-------------------#X; VB CELL ANIMATION(X;--------------------X;2 ANIMATE7QIMAGE=]};;Get image #<T?;;and multiplyAT?;;it by 8 for anFT?;;index into theK?;;cell dataP$>;;Copy 8 bytesU ANIMQCELIM=^}G8;;from the dataZPCHSETP9;;table into_3;;char number 10d0i IANIMn$IMAGE;;Point to nexts 2;;imagex(>;;Last=_} one done?}DANXIT;;No, exit$>;;Yes, reset itANXIT&IMAGE;;Save new num:X;X;Cell image dataX; CELIM=`}G ==<=v ~=<==X; ==<=v ~=<==X; ==>=v ~=<==X; ==>=w =a}~=<==X; ==<= w=<==X; ==<=~ w=>==X; ==<=~ v=>== X; =b}==<=~ v=<==X; ==<=~" n=<=='X;, ==<=~1 n=<=8=6X;; ==<=~@ n=|=c}=8=EX;J ==<=~O =|==TX;Y ==<=^ =<==cX;h ==|=m ~=<==rX;w =8=d}=|=n| ~=<==X; =8=<=n ~=<==X;>D:FLIFE2.M65 RESET~=<==rX;w =8<dEdX;LIFE IN THE FAST LANEi!X;Atari 8-bit Ver 1.00 4-20-86n$X;Copyright 1986 Analog ComputingsX;Programmed by James HAf}aguexX;} X;Part IIX;X;-----------------X; VB DING HANDLERX;-----------------X;DINGQSOUND;;Get soundAg} vol.,;;add distortionO>;;valuePAUDC1;;and set itQTONE;;Set properPAUDF1;;frequencyQSOUND;;If vol is Aq}bB%DOS SYSB*)DUP SYSB/SBATCH M65BBATCH OBJBBOOTCMP1M65BBOOTCMP2M65BBOOTCMP3M65BBOOTCMP4M65BDRAGON LSTBDUNEDIT BASBDUNGEON1DATBDUNGEON2DATBDUNGEON3DATBDUNGEON4DATBDUNGEON5DATBnFASTLIF1M65BeFASTLIF2M65BFASTLIFEOBJB;FASTSETSBASBQFASTSETSM65B YVSEARCH BASB dWINDOW BAS0FXITDING;;then exit!"SOUND;;Else lower vol XITDING:X;X;--------------X; DRAW CURSORX;--------------Ar}X;#X;The cursor consists of misslesX;zero thru three.X; DRAWCUR%CURY;;Move 10 bytes$> ;;of cursor shape As}CDRAWQCURDAT9;;data intoPMISSL8;;missile memory30 ICDRAW"X;'$>;;Set horizontal,QCURX;;positions for1At}SETCHPPHPOSM09;;the 46,;;missiles. Each;O>;;one is two@0;;units away fromEISETCHP;;previousJ:;;missile.OXAu};T"X;Cursor shape data: 8 bytes ofY!X;actual data plus leading and^#X;trailing zeroes to make motionc X;easier.hX;mCAv}URDAT ====r ====wX;|X;----------------------X; CONSOLE KEY ROUTINESX;----------------------Aw}X;X;Init console key flagX;"X;Set CONKEY to 0 if no console"X;keys are pressed, else set it X;to 1X; INITCAx}ON$>QCONSOL;;Get keysR>;;If not downFNOCKEY;;set to 0,2;;else set to 1NOCKEY&CONKEY:X;X;ChAy}eck console keysX;#X;Return 0 in acc. if no console"X;keys are pressed, else return X;the value of CONSOL in acc.Az}X; CHKCONQCONSOL;;Any consoleR>;;keys pressed?HCCHK1;;No, check more! Q>;;Yes, zero keyPCONKEY;;flag A{}and return :;;a zero!X;!CCHK15;;Save CONSOL&QCONKEY;;Flag clear?+FCCHK2;;Yes, go do it!07;;No, get CONSOL5QA|}>;;back and return: :;;a zero!?X;DCCHK27;;A legal press!!I:;;Return CONSOL!NX;SX;------------------------XX; A}}CELL PLACEMENT HANDLER]X;------------------------bX;gX;InitializelX;q PLACEv$>4MSG0;;Print instruc-{%>5MSG0;;A~}tion message PRINTQ>;;Init cursorPCURY;;coordinates...Q>x PCURX DRAWCUR;;Draw cursor INITCON;;SetA} key flag$>;;Clear any stray&CH;;keypresses2;;Clear important&SOUND;;variables... &PRESS &SELECT &DIA}ST&VBICTL;;Set VB modeX;X;Main placement loopX;CLRCLOKQ>;;Clear clock PRTCLOKQSELECT;;Decrement theA}FHANGON;;select key"SELECT;;timer, if set.X;HANGONQRTCLOK;;If 1/30 secR>;;has elapsed,DNOTYET;;handlA}e the MOVECUR;;cursor and !CLRCLOK;;reset the clockX;NOTYETQCH;;If escape isR>;;pressed, call HNOESC;;A}the cell clear/% CLEAR;;reset routine*Q>;;And clear the/PCH;;keyboard!4X;9 NOESC CHKCON;;If no console>FHANA}GON;;keys, go loop!CW?;;If start isHENOSTRT;;pressedMQ>;;put the VBRPVBICTL;;on hold,W QUIET;;kil sound,\ CA}LRMISS;;clear cursor,a:;;and leave!fX;kNOSTRTW?;;If select ispDNEWMODE;;pressed, handleuQ>;;it, otherwisezPSA}ELECT;;clear the sel-FHANGON;;ect key timer. NEWMODEQSELECT;;If timer isHHANGON;;set, then bye!Q> ;;A legal pA}ress!PSELECT;;Reset key timer$MODE;;and add 1 to2;;the current(>;;mode makingHMODEOK;;sure it isn't$>A};;greater than 4MODEOK&MODE SHOMODE;;Show new mode!HANGON;;and loop!X;X;Instruction messageX;MSG0 A}A Use joystick to A Aplace cells on A AboardA EOLX;X;----------------X; CURSOR HANDLERX;-----------A}-----X; MOVECUR CHKTRIG;;Check triggerQSTICK0;;If cursor is $DIST;;moving, thenHMOVING;;go move it!R>A};;If stick isFXITMOVE;;pushed, thenPDIR;;start up the$Q>;;cursor and go)PDIST;;slie it!. HSLIDE3X;8MOA}VING$DIR;;The cursor is=ROPDIR9;;moving! IfBHSLIDE;;the stick isGQOPDIR9;;being pulledLPDIR;;in the direcA}-QQ>;;tion oppositeV;;;of cursor[SDIST;;motion, reverse`PDIST;;its direction!eX;jSLIDE$DIR;;Calculate newoA}QCURX;;cursor x coordt,;;and make sureyOXOFF9;;it is legal...~?R>@ DHOLDITR>DDOY;;Its legal!X;A}HOLDITQ>;;Stop all motionPDIST;;if a bad coordXITMOVE:;;is found.X;DOYQCURY;;Calculate new,;;y coordA} andOYOFF9;;make sure itR>G;;is legal... DHOLDITR> EHOLDITPCURY;;Save new y and'CURX;;new x, thA}en"DIST;;record moveQ>;;and clear thePPRESS;;trigger flag!DRAWCUR;;Re-draw cursor!X;X;Movement dataA}X;XOFF ====== ==  YOFF ======= =!OPDIR  = = ===== =A} X;#X;-----------------(X; TRIGGER HANDLER-X;-----------------2X;7 CHKTRIG<$TRIG0;;If trigger isAFYESCHK;;A}pressed, theF0;;trigger flagK&PRESS;;is clear, andPNOCHK:;;the cursor isUYESCHKQDIST;;aligned on aZHNOCHK;;squA}are, then_QPRESS;;process itd HNOCHKiX;n$>;;Set triggers&PRESS;;flagx&GENER;;Set generation} 0;;to one&A}GENER;;Calculate scrn CONVERT;;addr of cursor<;;Decimal mode!Q@PNT17;;If on a spaceFADDCELL;;add a cellXA};Q>;;Remove a cell! P@PNT17QPOP;;Subtract (bcd);;;one from theS>;;colony popula-PPOP;;tion, max. pop.A}PMOST;;and starting QPOPS> PPOP PMOST$>;;Go set properHSETSND;;ding soundX;ADDCELLA}Q> ;;Add a cell! P@PNT17QPOP;;Add 1 to the,;;colony popula-O>;;tion, max. pop.PPOP;;and startingPMOSTA};;pop...  QPOPO> PPOP PMOST$>;;Go set sound"X;'SETSND-;;Decimal off!,Q>;;Set correct1PA}SOUND;;add/remove6&TONE;;sound; SHOGEN;;Show updated@ SHOPOP;;cell data...E SHOSTRTJ !SHOMOSTOX;TX;--------A}--------------YX; COORDINATE CONVERTER^X;----------------------cX;h"X;Convert cursor pm coordinatesmX;to a screen meA}mory addressrX;wX;Call with:|!X; curx - cursor pm x coord.!X; cury - cursor pm y coord.X; X;Return: X; pntA}1 - base line addressX; y reg - column offsetX; CONVERTQCURY;;Convert pm y;;;coord to boardS>G;;row numA}berV?;;(0 to 15)...V?V?5;;Save the resultPPNT1;;and put it intoQ>;;the work area PPNT1$>;;NowA} multiply MULT16TPNT1;;the column numUPNT1;;by 20 to0;;determine theIMULT16;;offset from the7;;beginningA} ofT?;;board memory.T?;;This takes 2,;;steps: 1stOPNT1;;mult the columnPPNT1;;by 16, then by QPNT1;;4;A} now add theO>;;two results andPPNT1;;save the mess!QPNT1;;Finally, add!,;;the offset to&O>4DISPd ;;tA}he start+PPNT1;;of board memory0QPNT1;;for the base5O>5DISPd ;;line:PPNT1;;address! WHEW!?X;DQCURX;A};Convert theI;;;cursor pm xNS>0;;coord to theSV?;;column offsetXV?;;from the base]V?;;line addres,b?;;and put itA} ing:;;the y reg!lX;qX;-------------------vX; CLEAR/RESET CELLS{X;-------------------X; CLEARQPOP;;If A}cell pop. isHCLEAROK;;0, then thereQPOP;;is no reason toFXITCLR;;clear them!X;CLEAROKQ>4BOARD;;If someA}PPNT1;;cells exist,Q>5BOARD;;fill thePPNT1;;16x16 board$>;;area withCLRROWQ>;;0s (spaces)...%>A}CLRCOLP@PNT171 ICLRCOLQPNT1;;Add 20 to cur-,;;rent screenO>;;address to getPPNT1;;address ofQPNT1A};;next line...O> PPNT10 ICLRROWX; SETCELL;;Reset cell data  SHOGEN;;Display new SHOPOP;;celA}l data... SHOMOST SHOSTRT XITCLR:;;Return!%X;*X;-----------------/X; CHECK FOR PAUSE4X;-----------------9A}X;>"X;Only the accumulator is used!CX;HPAUSEQCH;;Space barMR>!;;pressed?RHNOPAUSE;;Nope, leave!WQRTCLOK;;YesA}! Save\5;;clock value,a QUIET;;shut up, andf$>';;save whateverkTCOPY1QTEXT9;;text is onpPTSAVE9;;the messageuA} 0;;line...z ITCOPY1$>4PAUSED;;and print a%>5PAUSED;;special PRINT;;messageX;PAUZQCH;;Wait forR>!;;A}a differentFPAUZ;;key.$>';;When one isTCOPY2QTSAVE9;;found, res-PTEXT9;;tore the old0;;message line... A}ITCOPY27;;Restore clock PRTCLOKNOPAUSE:;;And go back!X;X;Pause messageX;PAUSED A AA} A PausedA EOLX;X;---------------X; DELAY ROUTINEX;---------------X; X;Call with: "X; acc. - # of jifA}fies to wait X; X;Return a non-0 number if a !X;console key aborts the delay X;else return a 0. X;$ "X;Only the accuA}mulator is used!) X;. DELAY3 5;;Clear RTCLOK...8 Q>= PRTCLOKB DELAY27;;Wair until timeG RRTCLOK;;is up, or untilA}L FTIMESUP;;a console keyQ 5;;is pressedV CHKCON[ FDELAY2` 7e :j TIMESUPQ>o :t X;y X;-------------------~ XA}; MAIN LIFE ROUTINE X;------------------- X; LIFE  INITCON;;Init console QPOP;;If population HDOLIFE;;is zA}ero, then QPOP;;print a message HDOLIFE;;saying so and $>4MSG1;;exit... %>5MSG1 !DOMSG X; DOLIFE$>;;CleA}ar keyboard &CH 2;;Use the first &CHORD;;chord NEXTGEN SCAN;;Scan board QACTIVE;;If no cells are HUNSTAB;;aA}ctive then the $>4MSG5;;population has %>5MSG5;;stabilized! !DOMSG;;(right Zink?) UNSTAB$>4MSG2;;Unsatble, so A}%>5MSG2;;print life  PRINT;;message  GROWTH;;Regenerate! HXITLIFE;;If aborted, bye QPOP;;If new popu- HCONA}T;;lation is 0, QPOP;;then the colony HCONT;;is dead, so $>4MSG3;;print a message# %>5MSG3;;and exit...( !DOMSG-A} X;2 CONTQMODE;;If in FaST mode7 R>;;check for pause< HNOTFST;;or console keyA  PAUSE;;then jump rightF  CHKCON;A};into the nextK FNEXTGEN;;generationP :U X;Z NOTFSTR>;;If in Single_ DREGULAR;;Step mode,d SSTEPQTRIG0;;check foA}r ai FNEXTGEN;;trigger press,n $>4MSG4;;print a messages %>5MSG4;;to the user,x  PRINT;;check console}  CHKCON;;keyA}s, and FSSTEP;;repeat! : X; REGULARQ>;;If in ReGular PRTCLOK;;mode, wait 1/2 REGWAITQRTCLOK;;a sec while A}R>;;checking for a ENEXTGEN;;pause or a  PAUSE;;console key... CHKCON FREGWAIT : X; DOMSG PRINT;;PrinA}t message, Q>x;;wait a while,  DELAY;;and then XITLIFE:;;exit life! X; X;Life related messages X; MSG1 A NA}o cells have beeA  An placed on the boaA ArdA  EOL MSG2 A Let theA  Are be life!A  EOL MSG3 A}A The cell cA  Aolony has diedA  EOL MSG4 A Press trigger fA  Aor next generationA"  EOL' MSG5 A A} Cell populatiA,  Aon has stabilizedA1  EOL6 X;; X;-------------------@ X; PLAYFIELD SCANNERE X;------------------A}-J X;O X;Return # of active cells inT !X;ACTIVE and information aboutY !X;these cells in CADRL, CADRH,^ X;and CTYPEc X;h A}SCANm Q>;;Clear cellr PACTIVE;;counter, andw Q>4BOARD ;;move| PPNT1;;board address Q>5BOARD ;;into PA}PNT1;;PNT1... X; Q>;;Init row index PROW DOROWQ>;;Init column PCOL;;index DOCOLQ>;;Clear counter PA}COUNT $>;;Scan 8 times SEARCH%SCANADD9;;Get offset Q@PNT17;;Is there a R> ;;cell here? HNOCELL;;No, ignore A}it! #COUNT;;Yes, add 1 to NOCELL0;;the counter and ISEARCH;;keep searching! X; $COUNT;;If the current %>;;cA}har is a space Q@PNT17;;with 3 friends HACELL;;then grow a (>;;cell here HNOACT FRECORD ACELL(>;;If it iA}s a cell FNOACT;;with 2 or 3 (>;;friends, keep FNOACT;;it alive, else RECORD#ACTIVE;;kill it! $ACTIVE;;RecorA}d any PCTYPE9;;changes that! QPNT1;;are made to the& ,;;cell colony...+ O>;;(the cell is 210 PCADRL9;;bytes ahead A}of5 QPNT1;;the current: O>;;address in? PCADRH9;;PNT1)D X;I NOACTQPNT1;;Add 1 to PNT1N ,;;so it pointsS O>;A};to the nextX PPNT1;;board square...] QPNT1b O>g PPNT1l "COL;;Loop until 16q IDOCOL;;cols are done!v QPNA}T1;;Add 4 to PNT1{ ,;;so it points O>;;to the first PPNT1;;square in the QPNT1;;next row... O> PPNT1A} "ROW;;Loop until 16 IDOROW;;rows are done! : X; X;Scan data X; SCANADD ===  =(=)=* X; X;-A}--------------------- X; GROWTH/DEATH HANDLER X;---------------------- X; X;Put growth/death characters X;in properA} places on board X; GROWTH QMODE;;If in FaST mode R>;;then skip the HDOFX;;fancy animation !FSTMODE;;and juA}st do it! DOFX$>;;Init the SETCHARQ>;;growth/death PCHSETX9;;chars... QCELIMG9 PCHSET`9 0 ISETCHAA}R% X;* %>;;Find all of the/ $ACTIVE;;board locations4 PLOT1QCADRL9;;where active9 PPNT1;;cells or spaces> QCADRHA}9;;are, and placeC PPNT1;;growth or deathH QCTYPE9;;charactersM HDYING;;there so we canR Q> ;;animate them...W HA}PLOTIT\ DYINGQ> a PLOTITP@PNT17f 0k HPLOT1p X;u X;Now animate the growing andz !X;dying cells along with sound XA};effects if the current mode X;permits. X; $>;;Handle 8 frames &TEMP GROW$TEMP;;Get growth %GROIMG9;;image A}# and $>;;copy the image GROANIMQIMAGES8;;into PCHSETX9;char 11... 3 2 (> HGROANIM $TEMP;;Get deatA}h %DIEIMG9;;image # and $>;;copy the image DIEANIMQIMAGES8;;into PCHSET`9;;char 12... 3 2 (> HDIEAA}NIM X; QMODE;;If mode does FDOCHORD;;not allow soundR>;;then skip theHTIMEOUT;;sound routine DOCHORD$CHOA}RD;;otherwiseQNOTE19;;generate thePAUDF1;;appropriateQNOTE29;;3 note chord... PAUDF2$ QNOTE39) PAUDF3.QA}TEMP;;Set volume and3,;;distortion8O>;;(same for all 3=PAUDC1;;channels)...B PAUDC2G PAUDC3LX;QTIMEOUTQ>;A};Now wait aVPRTCLOK;;short while[SLEEPQRTCLOK;;Get clock`R>;;Time up?eEGROMORE;;Yes!j PAUSE;;No, check pauseA}o CHKCON;;and console keytFSLEEP;;and loop!y QUIET;;A console key~Q>;;is pressed so5;;set returnHREPLOT;;A}value to 1X; GROMORE"TEMP;;Do all framesIGROW;;and when doneFSTMODEQ>;;set return5;;value to 0X;X;UA}pdate board and cell dataX;REPLOT%><;;Decimal mode!PLOT2$ACTIVE;;Get theQCADRL9;;address of eachPPNTA}1;;of the activeQCADRH9;;cells and putPPNT1;;it into PNT1QCTYPE9;;Get cell typeHDODIE;;Cell is dying!Q>A} ;;Its growing soP@PNT17;;show a fullyQPOP;;grown cell and,;;add one to theO>;;cell populationPPOP;;(in A}decimalQPOP;;mode of course)O>  PPOPRMOST;;If the cell popFCKMOST;;is greater thanDPLOTNXT;;(A}or=to) theCKMOSTQPOP;;highest pop so#RMOST;;far, then copy(DPLOTNXT;;POP into MOST..-NEWMOSTQPOP2 PMOST7 QA}POP< PMOSTA !PLOTNXTFDODIEQ>;;Its dying soKP@PNT17;;plot a blankPQPOP;;space andU;;;subtract 1 fromZA}S>;;the population_PPOPd QPOPiS>n PPOPsPLOTNXT"ACTIVE;;Loop tilxHPLOT2;;ACTIVE is 0!}X;XITGROA} QUIET;;No sound!QGENER;;Add 1 to,;;generation (weO>;;are still inPGENER;;decimal mode) QGENERO>A} PGENER-;;No decimal!$CHORD;;Add 1 to chord2;;number making(>;;sure it is notHCHORDOK;;greater thanA} $>;;5...CHORDOK&CHORD SHOGEN;;Show new cell SHOPOP;;data... SHOMOST7;;and return the:;;correct valuA}e!X;X;Regeneration image dataX;GROIMG ===  =(=0=8DIEIMG 8=0=(=  === X;IMA}AGES ==8=~ ~=<==X; ==8=|" |=8=='X;, ==8=|1 |===6X;; ===<@ A}<===EX;J ===;;Clear colors... PCOLOR1 PCOLOR2 PCOLBAKQ>4IDL;;Point to introA}$>5IDL;;display list... PSDLSTL&SDLSTLQ><;;Wait a sec... DELAY  HGOTOIT$> ;;"Fade on" theFADEON#A}COLOR1;;magazineQ>;;credits...! DELAY& HGOTOIT+00 IFADEON5Q>x;;Let it hang: DELAY;;around for a?HGOTOA}IT;;sec, thenD$> ;;fade to black..IFADEOFF"COLOR1NQ>S DELAYX HGOTOIT]0b IFADEOFFgQ><;;Pause a littlelA} DELAY;;before showingqHGOTOIT;;the titlevX;{X;Display title screenX;$>;;Set-up theCLOADQTCOLORS9;;propA}erPCOLOR09;;title screen0;;colors... ICLOADQ>4TDL;;Install the new$>5TDL;;display list... PSDLSTL&SDA}LSTLQ>;;Turn on cellPVBICTL;;animationTWAIT CHKCON;;and wait forFTWAIT;;a console key!GOTOIT:;;AHHhhA}hhh.X;X;Intro display listX;IDL p=p=p p=p=p=p=p p=p=p=p=p p B ISCRN A IDLA}X;X;Intro screen data X;ISCRN A Analog ComA Aputing presents A A A X;%X;Title screen disA}play list*X;/TDL p=p=p4 p=p=p9 F> TSCRNC ====H pM R p=pW =\ p=p=pa fA} Ak TDLpX;uX;Title screen datazX;$TSCRN == ===== =  = = = == = =   ==X;A}! ==J=====J==J! ====J=====X;! == ===== ==   = === = A}= == X;! ==J=====J==J! ====J=====X;! == ===== == A}! ==== =====X; ==J=J=J=J==J= J=====J=J=J=J =X; =A INA} THE FAST A =ALANE A A CREATED BY A A A =A JAMES HAGA =AUE A @=A PRESS A}STARA  @=AT AX;X;Title screen colorsX;TCOLORS F== JAMES HAGA =AUE A @=A PRESS @K 6 j * k! n$ &L إ0M r# V# $懥Lb e V 膄 L\ҩҍҍҍ`E} ? `    ( E}`P ! ,!L,!= ,!L,!BP ,!L,!G ,!HJJJJ h) `L\! Ƚa! Ƚf! `rrssfggsssnqnqtF}/ ! ! ! ">/`膏`!`V V" #a" e BR C EF}Dii!"ڠFQ Ȍb Ȍ Ȍ 60"1" ! ! !!LC!ppp ppA6"'%.%2!4)/.0oF}pulation3tarting-ost-odeH Ѝ ԩ"h@HЍ ԩЩ"h@HFЍ ԥЩ΍"h@H Ѝ ԩ"F}h@` ""#ԩЎ ЪoB#HHHHR#`33333333@`F} ) )i` #P`v~<>w~<<w<<~w><~v><~v<<~nx &4  &(< &+*01 W$`ppppppppppppppB*An*!nalogF}#omputingpresentsppppppF*ppppppA* *+ JJJJ JJF}JJ JJJJJJJJJJ#2%!4%$"9@@@@press@@stF}art@@@@F JJJJJJJJJJ#2%!4%$"9@@@@press@@stDoppkSPNUFIBEOFOFFSEOLINFNCURSOFLINFLAMOVECHBAFIXFIMEMTOADLIDLISNSEERADRHADRLIOCCSETJ} J}@J}%%*** FAST SETS SUBROUTINE WRITER *** BY: DARRYL W. HOWERTON*** SEPTEMBER 1986! B  APJ}! A2u-@@#-@((L2@@@@&P r2J}u$d=6-A$6-6-!6-+ @P=-@@nN-@@8(SELECT A CHARACTER SET TO LOADD6J}-AN Ax1(1( ǽ5 @@* Ap5@[J} @P-@@E(!SELECT A NAME FOR YOUR SUBROUTINEQ6-A[ A] @P%-@@J}A(STARTING LINE NUMBER? N@]4A (  A`6-A (6-A:,B!B ((8(CANJ} NOT BE LARGER THAN 32000!B A`A^(( USE: 1. LINE 12( 2. LINE 2H( 3. LINE 3^J }( 4. LINE 4 _( 5. TOP 2 LINES<( 6. BOTTOM 2 LINES_( 7. WHOLE CHARACTER SET<(/(J!}# ҠŠƠҠŠ<)@!"@I6-AV!6-7"@P6-AV#6-%16-&J"}A76- ="@Q6-AV)6-%A16-&=6-A"5"@R6-AV)6-%Ah56-AhJ#}&#"@S6-A#6-&*/"@T6-A#6-%/6-A,t @P-@@F("INSERJ$}T DISK TO WRITE SUBROUTINE TOX-@@t(PRESSWHEN READY.$)@$AUA/c @PJ%}-@@<(...WRITING SUBROUTINE...N-@@c(PLEASE STAND BY!16 A`6-A6@@J&}6jj(@Q MEMTOP=PEEK(106):CHBAS=MEMTOP-4:POKE 106,CHBAS-1:GRAPHICS 0:DIM MOVE$(43),CSET$()@< J'} A <(@ MOVE$=>:@4,>:@4,JI-@d A I(@ CSET$(&)=>:@4J(},TV-@c,6-F:%%&@,D%%&@AUV%%&@YY"@4)"AU.68J)}<,-%&?68@<,-M6-%@Y6-@2^.*@ *(@>:@4,. h(Ar=!-J*}&@@+ A =(@ w=-@'%!&@36-@= A|WW(@J+}CSET$(8<%,,8<%,)=CHR$(8@<%,)- @*% &@-(@: J,}(@ D A D(@' X=USR(ADR(MOVE$),57344,CHBAS*256,1024)j A D(@& X=USR(ADJ-}R(MOVE$),ADR(CSET$),CHBAS*256P!@j(@+&@H(@,)" A H(@ POKE 7J.}56,CHBAS:RETURN@- @P-@@-( finished!<-@@<("Ӡ٠٠ϠŭJ/} F:Ad,"AUA fF:Ad,"@G*AdAUGAF:A,%@Q+[ J0}A Pf%D:MENU5!6-?:C:,<BsD<<A$,+ AQ5 Ar A`5(#(DRIVE #1 ASSUMED UNLESS SPECIJ1}FIED)G-@@o(#PRESS:FOR DIRECTORY LISTINGr(h 6."AdAU4-@@?(ENJ2}TER:B([( FILENAME.EXT=> h@ 4 ' Ah7@<@,0D:*7@<@,0D1:*7J3}@<@,0D2:*7@<@,0D8:q6.D:67@,. AP 6.}a7@<@,21)7@J4}<@,32*7@<@,0:*7@<@,08sAA`} A`$  ($Lg  @PJ5}%-@@ D(DIRECTORY FOR WHICH DRIVE?V-@@g( [1, 2, OR 8]Q2)@& @I)!@V26J6}-@IVG6.D :*.**67@<@,.>:,G@@`O @P-@@O(J7}٠ź>:%A(,je-@@P?P,@;6.7@,e7@<@,4 FREE SECTJ8}OAtd "P:,-@N(|7@<@, 7@ <@,Z6-@d A`~N-@ P:J9},B(7@<@, 7@ <@,|N6- 9'( Ӻ9AdAUJ:}4F:Ad,AU*AdAU4 A  A4-@ P:,(( |46-3((J;} Ӻ3@.F:Ad,AU*AdAU.  A Q6-%@!J<}B'g)6-@56-A GAAQ A`$~6-F:A, 6-&@4A&@@AJ=}J+d0@@~0@@X6-$AV6-AR)-56-@O@J>}@K:UX(CC;@,;@,;,9<A(,;@7,;@,> 6. 67@7,. J?}+67@,.>6. H ԭ h@Q!6-?:C:,<BsD<<A$,K6-F:A`,%F:Aa,$AV%@Qy%@J@}@+%@@?%@@S%@@g%@ AAyBBAV6-P:C:,'JA}AV,*6-C:,&$AV6ABAVAV%@l"(} analog presents`K($___FAST SETS___JB} SUBROUTINE WRITERl( by` darryl w. howertonQ-@+-@@%96-%@E"@QJC}6-C-@1;(>:%+&+"@,,$@2,? C m-@@,(clearing arrays...@JD}-@T-A(e68<,-i m $p( @P A`(@u'-@@JE}$6-F:A,''z,"Ap,(CAN'T FIND FILE=> !M"AD,(NO DISK IS IN THE DRIVE!M((OR DISK ISJF} WRITE PROTECTED)7"A`7(#DRIVE NOT AVAILABLE ON YOUR SYSTEM!-"Ag-(FILE REQUESTED IS LOCKED!8"JG}Ai8($DIRECTORY IS FULL! use another disk.3"Ab3(DISK IS FULL! use another disk.#"@#(ILLEGAJH}L VALUE!!\"A5(!SUBROUTINE LINE NUMBER OVERFLOW!!\(" use smaller line number at promptG-@@5(JI}Ӡ٠٠ϠGAdAU.F:Ad,AU*AdAU.  AaX. Ap06-PJJ}:'AV,.6-&$AVbg6-AH#%@@1%@?%@S%@g%@ @JK}l6-?:C:hhhLV,<@,v$}T6-F:A, 6-&@,A26-<+T;@C,;AVJL}, }556.+hhhhhhh֠ґ`}SS67@,.@ 0 >fn3~l9p`<6ff?0|`?0|JM}`0`n}SS67@e,.@33~f? 0x36|x00``37k3;~~3ffx(}SS67A),.@>3f|3JN}ffl>3f|0|<? 0033ff33ff|033k2}SS67A,.@33<<33<0`?0` 0xx6cJO}<}))6-?:C:,<BsD<$AV<A$,F}..6-?:C:,;;X IS COUNTERHSTART;;GO AHEADNV}"NUM;;PREVENT MOVING;EXTRA PAGE OF MEMSTART%>;;USE FOR INDEXINGMOVEQ@FROM7;;BYTE TO MOVEP@TO7;;MOVE ITNW}3;;INCREMENT INDEXHNEXT;;IF<>0 A PAGE;HASN'T BEEN MOVED#FROM;;INCREMENT THE#TO;;HIGH BYTESNEXT0;;-LNX}O BYTE COUNTER"HMOVE;;MOVE ANOTHR BYTE,"NUM;;-HI BYTE COUNTER6IMOVE;;IF POS DO MORE@:;;RETURN TO BASICNEXT0;;-LLq52AAwd* VARIABLE SEARCHER *nBY STEVEN ANDERSON *x$$* TYPE X=USR(15RZ}36) TO ACTIVATE##FOR ALL ATARI 8-BIT COMPUTERSUSES PAGE 6 OF MEMORY.%-A6A"!% AR[}@i9A@X'A@9AAU@@165,130,133,0,165,131,133,1,169,127,133,209,1R\}62,48,169,20388157,68,3,104,133,82,157,69,3,157,75,3,169,8,157,74553,169,3,157,66,3,32,86,228,160,0,177,0,16,16,41R]}55127,32,93,6,32,91,6,230,209,32,111,6,32,91,6,328893,6,230,0,208,2,230,1,165,0,197,132,208,219,165,1@@197,133,208,2R^}13,169,12,141,114,3,208,15,169,155,162,11,142$88114,3,162,0,142,72,3,142,73,3,162,48,76,86,228,165.;;136,133,2,165,137,R_}133,3,32,244,6,133,207,32,244,6,1338::208,201,128,176,121,32,244,6,32,244,6,32,244,6,201,2B<<176,9,32,244,6,201,155,208R`},249,240,220,32,244,6,201,20L??240,230,201,27,240,226,201,22,240,205,201,14,208,10,162,6V<<32,244,6,202,208,250,240,227Ra},201,15,208,6,32,244,6,170`DD208,238,197,209,208,213,165,207,133,212,165,208,133,213,32,170jBB217,32,230,216,160,255,13Rb}2,175,230,175,164,175,192,8,240,187t>>177,243,72,41,127,32,93,6,104,16,237,169,160,164,175,200~88145,243,208,228,160,0,Rc}177,2,230,2,208,2,230,3,96,0230,2,208,2,230,3,96,0 D:VSEARCH.BAS160,0,17200~88145,243,208,228,160,0,P^ 01qRfHMSTARDAAARBBA@@ WINDOW GRAPHICS DEMOVe}BY HOWARD GREENFOR ANALOG COMPUTING(9@,2g +@A@ 1A@CAA0Vf}UA @gAR@<'AA0'AA0F/-@@/(@ A.N.A.L.O.G.PVg}2-@@2(@window graphicsZ0-@@0(@ demonstrationd))(! PRESS START TO RETUVh}RN TO BASICn&6-F:A,&@&BByxO6-AV$%A+AY@F=B2w@OA#@Vi}+-%@ %@5'A&+ 6-%AV+-%@%@6'AU+ 36-@H!Vj}B2V@3B2X@*-@@&68,-* .68@,-@.68@,-6@Vk}MAIN MOVE ROUTINE6-R:,6-%8,!Au6-Au @H6-@HB2HB2PVl} F:B2y,@A4B2H'B2P1+4 D:WINDOW.BASMGVm}y,@A4B2H'B2P1+4 D:WINDOW.BASMGT