@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 D8u23k ZAZPOKZPEEZPOPEZZHZLZINB `@#BB 2AAAA` T} A ##*****************************##* SINGLE BYTE ACCESS TO *##* ATARI XL HIDDEN MEMORY *(##* U} by Kevin T. Pate *2##* *<##* COPYRIGHT 1989 *F##* BY ANALOG COMPUTIV}NG *P##*****************************ZxTARGET ADDRESS IS ZADDATA VARIABLE IS Z4 B4RAM ACCESS W}INITIALIZATION SUBROUTINECC ;}SINGLE BYTE ACCESS TO ATARI XL HIDDEN MEMORY DEMONSTRATIONL L AHIDDEN MEMORY ADDRESSEX}S ARE 40960-53247 AND 55296-65535  TARGET ADDRESS VALUE/ / #NOW POKING VALUE INTO Y}HIDDEN MEMORY)6-) NOW ZEROING OUT VALUE- - !NOW PEEKING HIDDEN MEMORY ADDRESS ADDRESS=VALUEZ}= AP0u**RAM ACCESS INITIALIZATION SUBROUTINE:u$$ML SUBROUTINES ARE RELOCATABLEDu/;@P,/STORAG[}E AREA FOR ML ROUTINESNu,,POKE ML ROUTINE RETURNS VALUE TO Z$(1)Xu76-C:,%@7POKE ML ROUTINE STARTING ADDRESSbu'\}6-B'POKE BASIC SUBROUTINElu46-%@4PEEK ML ROUTINE STARTING ADDRESSvu'6-B 'PEEK BASIC SUBROUTIN]}EuML LOADERu #Bu-@4u"%u u46-P:C:,'AV,4HIGH BYTE OF Z$(1) ADDRES^}Su26-C:,&AV$2LOW BYTE OF Z$(1) ADDRESSu%@u%@u$uPOKE ML DATAu104,162,2,_}142,1,211u162,00,142,000,0000,162v253,142,1,211,96 vPEEK ML DATAv104,162,2,142,1,211 v174,000,0000,142`},000,0000*v162,253,142,1,211,964vyPOKE SUBROUTINE"y26-P:'AV,2HIGH BYTE OF TARGET ADDRESS,y06-&Aa}V$0LOW BYTE OF TARGET ADDRESS6y%@@y%@ Jy%@Ty]6-F:@,$@6b}B7tHBB]DISABLE INTERRUPTS^y# 6-?:,#CALL POKE ML ROUTINEhyA@B7t-BBc}AUAENABLE INTERRUPTSry$|y}PEEK SUBROUTINE }26-P:'AV,2HIGH BYTE OF TARGET ADDRESS}06-&Ad}V$0LOW BYTE OF TARGET ADDRESS}%@(}%@2}]6-F:@,$@6B7tHe}BB]DISABLE INTERRUPTS<}# 6-?:,#CALL PEEK ML ROUTINEF}6-F:C:,,P}A@B7t-BBf}AUAENABLE INTERRUPTSZ}$D:LISTING1.BAShӢF}6-F:C:,,P}A@B7t-BBH| ZBSDLISZAZBTOZPTZBNKOUZBNKIMOVZBZZZZLTOZUTOZHZZLZZINZ h}  i} ##*****************************##* BANK SWITCHING OF *##* ATARI XL HIDDEN MEMORY *(## j}* by Kevin T. Pate *2##* *<##* COPYRIGHT 1989 *F##* BY ANALOG COM k}PUTING *P##*****************************Zx..USER SELECTED BANK SIZE IS VARIABLE ZBSZ]]BANK SIZE IS SELECTABL l}E FROM 225 X 100 BYTE BANKS MAX., 2 X 10K (10240) BYTE BANKS MIN.??BANK RAM STARTING ADDRESSES (IN HIDDEN MEMORY) ARE IN m}ZB$FFBANK POINTER NUMBER (1 TO ZBTOT); ZBTOT IS TOTAL NUMBER OF BANKSUUUSER SELECTED TARGET RAM STARTING ADDRESS (IN n}REGULAR RAM AREA) IS VARIABLE ZAD4 B4RAM ACCESS INITIALIZATION SUBROUTINELLTHIS EXAMPLE WILL SWITCH INTO SCRE o}EN MEMORY 22 DIFFERENT DISPLAY BANKS76-A `7BANK SIZE = 960 BYTES FOR GR.0 SCREEN<%6-F:A`,%AV$F:Aa p},<DISPLAY LIST ADDRESSJ)6-F:%@,%AV$F:%@,JSCREEN MEMORY STARTING ADDRESS7 B7SETUP BAN q}K ADDRESSES BASED ON BANK SIZE66CREATE DISPLAYS AND STORE BANKS IN HIDDEN MEMORY'AR@'TURN OFF CURSOR r}fN F}ŠΠӠ ŠΠΠ٠Ӯb-@Af -@g  s}}-@2 THIS IS DISPLAY BANK #gCLEAR SCREEN AND PRINT MESSAGE AT VARYING ROW NUMB@ 6- @SET BANK POINT t}ER AND STORE SCREEN MEMORY TO BANK" ,BBNOW SWITCH IN BANKS ONE BY ONE, PAUSING BETWEEN EACH DISPLAY6bJ B}נ u}̠Π ͠Π٠Ӯ^-@Ab @-@JB 6- BSET BANK POI v}NTER AND READ IN BANK TO SCREEN MEMORYT#-@A #PAUSE^ h# A #REPEAT DISPLAY LOOPr N* w}*RAM ACCESS INITIALIZATION SUBROUTINE*N""ML SUBROUTINE IS RELOCATABLE4N.;@P,.STORAGE AREA FOR ML ROUTINE>NQ x};AP,QHIDDEN MEMORY STARTING ADDRESSES, STORED AS HIGH BYTE/LOW BYTEHN16-B 1BANK SWITCH IN BASIC SUBROUTINER y}N26-B02BANK SWITCH OUT BASIC SUBROUTINE\NML LOADERfN #B0pN-@HzN"C:,%N  z}N$N ML DATAN104,162,2,142,1,211N!!104,133,215,104,133,214,104N%%133,217,104,133,216,104,133,218N##104,17 {}0,160,0,177,214,145,216N##200,208,4,230,215,230,217,202N208,242,198,218,16,238N162,253,142,1,211,96NR--S |}ETUP BANK ADDRESSES BASED ON BANK SIZERK6-P:B"',KTOTAL NUMBER OF BANKS IN LOWER PART OF HIDDEN MEMORYRK6-P:B }}@',KTOTAL NUMBER OF BANKS IN UPPER PART OF HIDDEN MEMORY&R# 6-%#TOTAL NUMBER OF BANKS0R-&@: ~}R66-B `%P:$%?P,6BANK STARTING ADDRESSDR 6-P:'AV, HIGH BYTENR6-&AV$LOW BYTEXR(C:,% }@$(STORE HIGH BYTEbR/C:,%@$%@/STORE LOW BYTElR vR-&@R66-BR%P }:$%?P,6BANK STARTING ADDRESSR 6-P:'AV, HIGH BYTER6-&AV$LOW BYTER2 C:,%@$%@ }$2STORE HIGH BYTER9(C:,%@$%@$%@9STORE LOW BYTER R$RUBANK SWITCH IN SUBR }OUTINEU(AY(TURN OFF DISPLAYV[C6-F:C:,%@$&@,$AV%F:C:,%@$&@,[BANK STAR }TING ADDRESSV]6-F:@,$@6B7tHBB]DISABLE INTERRUPTSVG6-?:C:,<<< },GSWITCH BANK RAM INTO TARGET AREA IN REGULAR RAM"VA@B7t-BBAUAENABLE INTERRUPTS,V'A }Y@F'TURN ON DISPLAY6V$@VY BANK SWITCH OUT SUBROUTINEY(AY(TURN OFF DISPLAYY[C6-F:C }:,%@$&@,$AV%F:C:,%@$&@,[BANK STARTING ADDRESSY]6-F:@,$@6B7t }HBB]DISABLE INTERRUPTSZD6-?:C:,<<<,DSTORE TARGET RAM IN REGULAR AREA TO BANK RAM ZA@ }B7t-BBAUAENABLE INTERRUPTSZ'AY@F'TURN ON DISPLAYZ$D:LISTING2.BASO }N DISPLAYZ$AY@F'TURN ON DISPLAYZ$EADER }DISPLAYZ$AY@F'TURN ON DISPLAYZ$EADER fffffff>`<|ff0fF68of;p88pf< 80 0 ~~`0 }0`7ggo;3s~s3``p?cccccs6<gn||lopp``cccwkc}|vvvvw6cc633>006cco><66>333`>?ll 3333c>ccc6<cckwccf<6ccc6 ?f 3~@`0 x}x6c<~~<6vv``|ffff6680>{3sއ<```|f~6<}3|fffff~`~ff3c ? s333666cck3~n۱6f[ۃ><~~<}~p|nf8x8`)gIH.Aet2(A,ᗲ{-4 zedgB,Һzt|rO{A- ;':t'^n,eÐyc.} B!@W+Ad^tVWs_^)s$@A쾽]S k^tх:w ;pM'ȿ/A쾽KвE 3}s_^̥D%Q,A_w%:&SM9{/C" /f:=9C.ts脸@a|=ף ts=DeKV{Jn2|:QF}Qct /<ԟ^kBiه3{z:(WvedgwBt{>|awNȡ'hӝawN|]awNwhӝӦ|č|A} L^tz,Ow|;oh4ui΃}z(dAzpϭ ΃}ze': .:i= S9|=Dz9Vh,}B{>s50/S>4__^|($%';kI9{/F oqIӆ}K .]e\y]PD{Ҳ_Yt,΃}z`'r˭L}`Rt{{Dzu! g .'֝$΃}e֦sKۆ}F2f9ze1$D{`Qu9{/I'KD4, 9zeN'+L}WA;~_ge,{^Бg>~zIg8Rtt4|=ȿO{yz/K1 qdSi@s_YtO&yx= VvqY1\D =AӨ }AiAᗴh b2˲, 0F&Y^ܳ:,ϩwho.ݢ =A /S>}"a{tO=$g}AzPΝXt@\t{D ϡK@ӷMl}9zE'BtLz*ҏt(e #.t }hV^ پGn3KLt=N^t "2/h04}2иlW.?Z./:( 6/`i>ݢ ѾN,z,ϡu^,g:\ i"q׻AzPΝX΅{@Y^ܳ: jFOIzv/h}0}DE'wM= =A=H}gԻ,΃Ad^}P(e gN:Qz=N.:\~PȽLw<K}>Njѽ /l^$}P "{> G,"Γh0<RC:vc9z/MY94ѽL>HYq:"KNtd>=C"OAz\&A BN"KN}KD|Y}sI4΅Ba> .&|=DEgLz*ҏwEszи);'Y^|x=!BNY^|z,ϡbyl0@C [= }AL2pp`BZ0BA 0(Px@h0X Hp3#/2%}@ `?:*8=9 %# /(>- .+!" 4 v .,~}Hh` 3`T,0iC0i`T:('}i(iTL0` )10`H****)h)`݆0ݠ000L1L71mL1<aaL7}1AТ`` 0ȱ& %Ȅe浠 1 0 1L1 0`TU}` 0UPɥU˥T 0 2 71ɛ$~5}+ɰH 2h`8 L2 2 1 0` 0L1UT 2T'ULw2 2}U 0?UƺL2 0U`H 0h 1UUU( UT 0 2` 0?U`a 0 001>/->.> 3tu 1u 1T} 3 1?ɛk=01 a<->"?eǨG> q 1L2->!L7= 3 == 1\0 3` s5 J4 3`8q 0>->1}  1`/q 1`H @@, hL3q->"?ǹG>0}ǥ !>">ȥѩ 1`ņƆĩE?i淥`ɛ}  (5 55 (5 5½ɛ` 膾 (5 H5 (5 55 5` `=`= ņ`}= L\5`-> BB 1-> v 1` !?w 1`?t 1`tz 1`{?i}淥.8``.>9-C70>->ɀѠq 1`Mq 1`0>.>]q 1 =`q 1`s 1`0>-> L;.>թ0>}.>H #6hL@6͠0>->Ӡu 1` L7-70>ɀeq 1`->0>? ?.>{q 1 =`0>ɀ}LO6 '??.>H 6h->0>L6hhLJɀL9?L:I?->8>Lv7l->-}A[r 1`?I?0>1> z7 3`r 1` ; ?I ?2>٢ ;!?I!?@>F>Ls7П-> ;?I?}E>Ls7LY7 ; ?I ?:>Ls7r 1`¨0>ɀeq 1`  ̠r 1`or 1`r 1`r 1`-> 8}5>2>.> ;Lv7  8 6>0>LZ8 " 8 ;>@>LZ8, 8?>>LZ8+ 8>>4>LZ8 * 8}=><>LZ8LY7 0>ɀ`r 1hh`hhL9hhL7B>ɀeq 1`?(r 1`8>ɀ?s 1`LY7->}LY7>Lv7?I?L9 ԥΩ? 9 ~>Lv7->7?L2:C>ɀL9?L;I??>Ps 1 }9Lv7Хʭ?I?Ds 1`C>ɀas 1`6>ɀL91v 1`q 1`½0>ɀL9->Ir 1`?I?}>Lv7`? ƩLy:$àu 1`->C ;?LR; d?P#Cz$CLv7s 1 ɴڠs 1`LJ<} LY7$ ;?L7? ɥ?Lv7s 1 ɖt 1`LJ<0>ɀ`hhLR;hh?L7LY7hhL9-> &}? I? A>Lv79s 1`->()LY7?I? CzCLv7Gq 1`ڥԭ?I?>Lv7->'?L9(}LY7(>> 9Lv7%q 0>ɀ)H @@, h /q LB<} 1` 2C1C 1t 1L=->.?` 4 LQ: ȐLJ<ڠs 1hhL2 (?#? 4 LQ: }ɂhhLJ<`-> ?LJ<` ?LJ< ?LJ< ?کLJ<ѭ?̩LJ</>:>ɀ<>ɀ/>/> 0`/>}L=͠t 1T/> u 1LN=t 1L=->湥?襸"`u 1->}湥?襸"L2NSEWUDINTO WITH THE ppp p0p8pFpVpVpcpopppppppp8ppppVp8ppp8pVpppppppq qqqqN}TO         } !  }$*06ABJDAEK V0+ B-D>E}HI V0 Gq 1 >A` >AA 1` B V` >ABDAEKJ V0ǩB-D>EHI V0ޭ? #Cy}$CL(AP#Cz$CL(AD:SPY.DATFile error. NB A`. '?!,-:/()0123456789ΩPϩЩpѠ . ` 8ALBi`} FBLA 8Bi@ 8BΪALB``` 8B ?B`xΩ`ϩЩPѠΙnnnnnjjjj}ߠЈ iΥiϥiХiLhB`5o6 78B89A999:Q:53;Z;; 7;B8Vvvvvv wvBwkwxx wwwx!xh}xxxxyByzjyxyyyy+zzzzss:t]tttMuu0`5o6 78B89A999:Q:53;Z;; 7;B8Vvvvvv wvBwkwxx wwwx!xh7/0DSDNDRVRDOPOSSXNFLNXTSSLH}  ##*******}**********************##* DISK DIRECTORY *##* ALPHABETIZER *(##* by Craig J. Stadler } *2##* *<##* COPYRIGHT 1989 *F##* BY ANALOG COMPUTING *P##************}*****************Zd>&;A$,;A(,;@,26-@>6-@n4 6-C:,6.%67A(,.46}7@,.x1 +AR@1@B-@B((}B-@B((__The_Atari_Disk_Directory_Alphabetizer_B-@B((庠}$-@@$(>:%Av,)"@!-@6@)()"!-@6@)(}P-@3( hange Drive / Verify6(P( rocess Directory=($( isk Operating System. AP}:"@h=."@gA@"@Ap ArAR@(2( 堨}:< APJ6-&@HP6-T(r @)!@ A@b"( :, AP26-@6-&@}HD(b )!@APAR@ A  A`N ( ______#(N(&Pl}ease insert disk to be read and MAKE"00((SURE there is a WRITE PROTECT TAB on it.,(( ( AP}6!"@!A@@!"!A@J A`T=6-@6-@'6-Aa36-A}h= Ap^ A`AY@"hX A)-@A @X7%@"<%@2,4 }Ar |" 6-"-@P:'@,!!-&@@37%@<%@,37%@"<%}@2,N6.7%@<%@,~67%@<%@,.7%@<%@2,67%@<%@2,.  }AY@BZ( ______"(Z(2Please REMOVE the WRITE PROTECT TAB and re-insert %%(the disk for }directory write.Z(0(% After this section, the screen willZ(% blank and ADDA will re-write file &%%( sector da}ta. PLEASE WAIT!!!(!( AR@ AP A`36-Aa6-Ah'6}-@36-@.' Ap6-.AY@"88-@@$+P:+%@,'@,,@}336-@:7%@<%@,,$AV%@:7<,,W!6-@:7&@<&@,,W7&@<&@,4>:A(,)"}A0 6-&6-@6-0 Ap:`6-@:7A&<A&,,76-@:7A'<A',,`6-AV}$+&@$+P:'@,,,%D;!6-@$%++&,'AV,;67A&<A&,.>:,N%6-@6-% Ap}X 6-6-6-b"A0l APv'6-%@ 'AY@BO(*(٠}נġ>-@AB L+OI@.@@K:;)@F@}I$R-@@!!@2-,9/@9= O-@R$ ĠŠ '}AiAp'6- -Ay"@ A6-&AV$P:'AV,}6-P:'AV,ArAs$$Ax&AV$P:'AV,AyP:'AV,6-?:C:h S`,}, #"@#67B:,%@,.   $ //67@<A(,.7%@<%A(,*6-%A(4$ D}:ADDANEW.BAS#67B:,%@,.   $ //67@<A(,.7%@<%A(,*6-%A(4$ D 0100 ;** DO-NOTHING DEMO PROGRAM **0110 ;0120 ;BY TOM HUDSON0130 ;0140 *= $???? ;YOUR ORIGIN!0150 ;0160 START} LDA BYTE1 ;COPY BYTE1..0170 STA BYTE2 ;TO BYTE20180 LDA #7 ;PUT A 7...0190 STA BYTE3 ;IN} BYTE30200 JMP PART2 ;JUMP!0210 ;0220 PART1 LDA BYTE2 ;MOVE BYTE2...0230 STA BYTE4 ;TO BYTE40240 } JMP PART3 ;AND JUMP0250 ;0260 PART2 LDA RANDOM ;MOVE RANDOM..0270 STA BYTE1 ;TO BYTE10280 JMP PA}RT1 ;AND JUMP!0290 ;0300 PART3 LDA BYTE4 ;MOVE BYTE4...0310 STA BYTE5 ;TO BYTE50320 JMP START ;AND} JUMP!0330 ;0340 ;DATA BYTES START HERE!0350 ;0360 BYTE1 .BYTE 1 ;NUMBER 10370 BYTE2 .BYTE 2 ;NUMBER 20380 BY}TE3 .BYTE 3 ;NUMBER 30390 BYTE4 .BYTE 4 ;NUMBER 40400 BYTE5 .BYTE 5 ;NUMBER 50410 RANDOM = $D20A ;RANDO}M NUMBER0420 ;0430 .ENDYTE4 .BYTE 4 ;NUMBER 40400 BYTE5 .BYTE 5 ;NUMBER 50410 RANDOM = $D20A ;RANDO!vdX;SAVE#D:Codeit.ASMnX;xX;------------------------;X; Text data compressor ;X; (c)1988 by Barry Kolbe ;X}; ;X; Original idea by: ;X; Bryan Schappel ;X;------------------------;X;!X};Takes text and compresses it$X;by first coding it into numbers"X;between 0 and 31. The every 8!X;bytes are compressed }into 5.X;X;EI=FX;"X;converversions: 'ASCII'=code#"X;,X; 0=0 1-26 =a-z6#X;stop =27 as long as the secon}d@X; set has less than 28JX; entriesTX;codes: .=28 spc=29 caps=30^X;hX; flag=31 (uses 2nd set)rX;|}X;second set of codesX;"X;flags: '=0 ?=1 !=2 ,=3 -=4X; ;=5 /=6 (=7 )=8X; 0-9 = 9<->18X;X;text mus}t end with $ffX;F;;from T;;toX;IBUFp;;initial msgOBUF`;;coded msgDBUFs;;decoded} msgCBUF;;cmpressedUBUF_;;un-comp&OTMP_;;cmpress0CTMP _;;buffers:X;DHNX;XBEGINQ>4IBUF;};set pointersbPFl Q>5IBUFv PF Q>4OBUFPT Q>5OBUF PTCODE%>;;get a byteQ@F7FCODY;;handle} 0 R>;;end? HCODD;;noQ>;;set end flagP@T7 COMPRS;;compress it+;;done phase1X;  UNCOMP;;uncompres}s DECODE;;decode msg +*X;4CODDR>a;;lower case?> ELOWCASEHR>A;;upper case?R EUPCASE\$>;;get charfEE1}RENTB19pFDO1z0IEE1$>;;try 2nd setEE2RENTB29FDO20IEE2 ;;;error!+X;DO2Q>;;set 2nd} flagP@T7 BUMPT;;next position A;;X to A!CODY;;put in codeX;DO1A;;in 1st set$,;;add 28 to 'X'.O>8} HCODYBX;LX;tables of charactersVX;X used as index`X;jENTB1 A. AtENTB2 A'?!,-:/()A~ A0123456789AX;}LOWCASE;;;make 1-26S>`CODYP@T7;;save BUMBOTH;;increase!CODE;;both indirectsX;UPCASE5;;save itQ>;};set caps flagP@T7 BUMPT;;up pointer7;;get char;  S>@;;1-26P@T7 BUMBOTH;;bump ptrs(!CODE;;again2}X;<BUMPF#F;;bump ptr fFHNOFP #FZNOF:dX;nBUMPT#T;;bump ptr txHNOT #TNOT:X;BUMBOTH BU}MPF BUMPT:X;X;the decode sectionX;DECODEQ>4UBUF;;set pntrsPF Q>5UBUF PF Q>4DBUFPT }Q>5DBUF" PT,DCODE%>;;get a byte6Q@F7@FDCC;;zero?JR>;;second set?T FBIG;;yes^X;less than 31hR>;;c}apitals?r FCAPS|R>;;end of text?HUNOQ>;;set flagP@T7:X;UNODLOOW;;less than 27SPEC;;;over so} -28S>>QENTB19;;get ASCII!DCCX;lower caseX;LOOW,;;add properO>`;;amount DCCP@T7& DBUMB;;}double bump0!DCODE;;more:X;DCAPS BMF;;bump fromNQ@F7;;get codeX,;;add amountbO>@lHDCC;;decodevX;BIG} BMF;;bump fromQ@F7>;;get secondQENTB29;;decode byte!DCCX;STOP,;;all doneQ>;;show end ofP@T7;};text:X;BMF#F;;bump f by 1HBM1 #F BM1:X; BMD#T;;bump t by 1*HBM24 #T>BM2:HX;RD}BUMB BMF;;bump both f\ BMD;;and tf:pX;zX;Compress Text:8 bytes to 5X;COMPRSQ>4OBUF;;set pointrsPF Q>5}OBUF PF Q>4CBUFPT Q>5CBUF PTX;X;get 8 bytesX;GET8Q>;;set end of text PEFLAG;;flag  }%> C3Q@F7$ R>;;end?. HC98 #EFLAG;;yesB C9PCTMP8;;store bytesL 3V )>` HC3j X;t !X;compress it:all bytes } are in~ X;the lower 5 bits-roll them X;to the top 5 bits and then X;roll them into a 5 byte X;output buffer. X; % }> C1QCTMP8;;get a byte T?;;shift up T? T?;;to hi 5 bits $>;;shift 5 bits C2T?;;into output UOTMP;;bu }ffer UOTMP UOTMP UOTMP UOTMP( 02 (>;;done 5 yet?< ,F HC2P 3Z )>;;done 8 bytes?d HC1n X;x  }%>;;now move the C5QOTMP8;;5 bytes out P@T7;;to contiguous 3;;output memory )>;;where it HC5;;can be BSAVEd} QT;;add 5 to ,;;'TO' indirect O> PT QT O> PT QF;;add 8 to 'FROM' ,;;indirect O> PF" } QF, O>6 PF@ QEFLAG;;end yet?J FGET8;;noT :;;quit^ EFLAGh X;r X;Uncompress data:get 5 bytes| X;and e}xpand them to 8 bytes X; UNCOMPQ>4CBUF;;set pointrs PF Q>5CBUF PF Q>4UBUF PT Q>5UBUF PT %>};;clear out Q>;;output buffer U1POTMP8 1 IU1 X; GET5%>;;get 5 bytes& GGQ@F70 PCTMP8: 1D IGGN X};X $>;;expand 5 to 8b Q>l U4%>v U2WCTMP;;slide them WCTMP;;to the right WCTMP WCTMP WCTMP} W?;;A has top 1;;5 bits )> , HU2 W?;;slide 'em to W?;;lower 5 bits W? POTMP9;;save in the 0;;buffer} IU4 X; X;check if done* X;4 %>;;move to> MM2QOTMP8;;contiguousH P@T7;;memoryR 1\ IMM2f %>p CKQOTMP8}z R>;;at end? FDONE;;yup 1 ICK X; QF;;add 5 to 'FROM' ,;;pointer O> PF QF O> PF Q}T;;add 8 to 'TO' ,;;pointerO>PT QT$O>. PT8!GET5;;get some moreBX;LDONE:;;done PF QoThh"ɠ " " "   )L "3 ! } "! "#LtBX;LDONE:;;done PF Q [QdEIn"X;-----------------------------x"X;BATCH File Processing Disable X;Utility.X;X;External Command #1X;%}X;by: Bryan SchappelX; X;CP Call: X;DISBAT"X;-----------------------------X; X;EquatesX;FIND_E  %}BATCH" MAIN}!SKIP_BAT3!"HATABS, INDEX#6 RESET @X;JTX;^ START7h7r QBATCH|R>%};;LDY # FDIS_BATX;X;Re-enable Batch ProcessingX;Q>;;LDY # PBATCHQ> PBATCHQ>;;LDA # PB%}ATCHQ>;;LDA HATABS,Y PFIND_E Q>4HATABSPFIND_E Q>5HATABSPFIND_E& HLEAVE0X;:X;Disable BATC%}H ProcessingDX;NDIS_BATQ>L;;JMPX PFIND_Eb PBATCHlQ>4SKIP_BATvPFIND_EQ>5SKIP_BATPFIND_E Q>4MA%}IN PBATCH Q>5MAIN PBATCH %INDEXQ> PHATABS8Q>PHATABS8 LEAVE!tPFIND_E Q>4MA$g$N%߹ɛ #ԭ#L$ `ԅ˥Յ̥̠ %ˠ %Hɛ>%G%h %e˅ː̢ B!D%EI ) }V0`H)i#"%h)JJJJi#!%`0000 00 00 00 00 00 00 00 00  e˅ː̢ B!D%EI (X\dEInX;-------------------xX;MEMORY DUMPERX;External Command #2X;X;By: Bryan SchappelX; X;CP Call:-"}X;DUMP [addr]X;-------------------X; X;EquatesX;HEXDIGi#GRAB_HEXCONSOL LNPOS SAVEY-#} EOL" FR0,DSPFLG6 MYBUF@ADDRESS#J INDRT ICCOMB^ ICBALDh ICBAHEr ICBLL-$}H| ICBLHI CIOVVX;$X;START%LNPOS QMYBUF8 R>EOL HGET_HEX QADDRESSPFR0QADDRESS-%} PFR0 !HEX1X;GET_HEX GRAB_HEX DHEX1&:0X;:X;Memory Dump is HereDX;N HEX1QFR0X PINDRb QFR0-&}l PINDRvNEXTQINDR%> MAKE_HEX QINDR%> MAKE_HEX%>LOOP'SAVEY Q@INDR75 R>E-'}OL HNOT_EOLQ>NOT_EOLPHEX_BUF8 $SAVEY  QPOSIT9? 7* MAKE_HEX4 %SAVEY>3H)>R HLOOP\Cf,-(}p OINDRz PINDR DNO_HI #INDR NO_HI$>Q>  PICCOMQ>4HEX_BUF PICBALQ>5HEX_BUF PICBAHQ>-)} PICBLH PDSPFLG CIOVGXIT QCONSOLR>$ FNEXT. XITQ>8 PDSPFLGB:LX;VX;Make a Number Hexadexima-*}l`X;j MAKE_HEX5tM>~> QHEXDIG9PHEX_BUF87M>V?V?V?V?> QHEXDIG9 PHEX_BUF8:-+}X;  X;BuffersX;HEX_BUF A0000 00 00 00 A( A00 00 00 00 00 A2 A A=EOL<POSIT == ===F =-,};  X;BuffersX;HEX_BUF A0000 00 00 00 A( A00 00 00 00 00 A2 A A=EOL<POSIT == ===F =,$'#Z&"$''" ''!' A& aZ&$&7&(& &0'810H' ah + %L$ f%L$ % k%L1.}$' a &)Z&L$$'"'' ` &`Ӡ& a #D&EKJB VH' ah ˩Ơ& aL&` && a 1/}%6D&E V0 %'D&E V0D'EHI B V0|DE9HI B V0  B*D'EHI10} VLK%L  "JK`%H$H`& a &ɛ`D :D :AUTORUN.SYSD :DOS.SYS}FORMAT UTILITYDevice D :ՠ1. Format11}2. Write DOS3. Format and Write DOS4. Change Drive #5. ExitOption > Insert DISK, Press RETURNFormatting...Writin12}g DOS...Writing BBKCP...New Drive # |#vD1:AUTORUN.BAT $$# S$ a  " J V 13}( l lQ# a# ahhL"}BBK CP - (C) 1987 ANALOG Computingby: Bryan Schappel $ S$ a  " J V 0`dEInX;-------------------xX;DISK FORMATTERX;External Command #4X;X;by: Bryan SchappelX; X;CP Call:55} X;FORMATX;-------------------X; X;EquatesX;CLOSE1CLOSE2SET_DEVSET_OPN"EPRINT56}a ICCOMB" ICBALD, ICBAHE6 ICBLLH@ ICBLHIJ AUX1JT AUX2K^ CIOVVh EOLrDEVICE57}#|IOERRORORIGIN| EPRDNv ERRORˤ BATCH"FIND_E X;X;PRINT macroX; PRINT  Q>58}4  %>5  EPRINTX;$X;&STARTQDEVICE0 PMY_DEV:%>DSVQBATCH8N PHOLD8X QNORM8b PBAT59}CH8l QFIND_E8v PHOLD8 QNORM8 PFIND_E81ISVBEGINPRINT TITLE QMY_DEV PFMATPDOSNAME5:} PAUTOX;M_LOOP GET_KEY GM_LOOP POPTION; S> 1 GM_LOOP R>* EM_LOOP45>PRINT OPTIONH P5;}ERRORR7\>f FOPT1p0z FOPT20 FOPT30 FOPT4 HOPT5X;X;Just Format DiskX;OPT1 FORMAT !BEG5<}INX;X;Just Write DOS+BBKCPX;OPT2 WRITE_DOS !BEGINX;$X;Format and Write DOS.X;8OPT3 FORMATB QERR5=}ORLHG_BV WRITE_IT`G_B!BEGINjX;tX;Get new device number~X;OPT4PRINT NEW_DEV GET_KEYM> PMY_D5>}EV !BEGINX;X;Return to BBKCPX; OPT5%> LDQHOLD8 PBATCH8 QHOLD8 PFIND_E8 1ILD:(X;25?}X;Format the Disk<X;FFORMAT PROMPTP FGO_FZ #ERRORd:nGO_FPRINT F_MATx CLOSE1 Q>4FMAT PICBAL9 Q>55@}FMAT PICBAH9Q> PAUX29 PAUX19Q> PICCOM9 CIOV IG_BEGINX; OOPSC5PRINT EOL27"?,5A} IOERROR6 #ERROR@PRINT H_KEYJ !KEY_RETT G_BEGIN:^X;hX;Write DOS and BBKCPrX;|WRITE_DOS PROMPT HG_B5B}EGINWRITE_ITPRINT W_DOS SET_80Q>4DOSNAME PICBAL9Q>5DOSNAME PICBAH9 CIOV GOOPSX; SET_805C} Q>4AUTO PICBAL9 Q>5AUTO PICBAH9 CIOV& GOOPS0$>: Q>4HEADERD PICBAL9N Q>5HEADERX PICBAH9bQ>l5D} PICBLL9vQ> PICBLH9Q>  PICCOM9 CIOV GOOPS$> Q>4ORIGIN PICBAL9 Q>5ORIGIN PICBAH9Q>5E}9 PICBLL9Q> PICBLH9 Q>  PICCOM9  CIOV* GJ_ERR4$>>Q> H PICCOM9RQ>4END_DATA\ PICBAL9fQ>55F}END_DATAp PICBAH9z Q>4DATLEN PICBLL9 Q>5DATLEN PICBLH9 CIOV IJ_CLJ_ERR!OOPSJ_CL!CLOSE1X;X5G};Set up IOCB #1X;SET_80 CLOSE1 SET_OPNQ> PAUX19 Q> PAUX29$ :. X;8 X;Get a KeyB X;L GET_KEYQ5H}%V 5` Q$j 5t :~ X; X;Prompt for a Disk X; PROMPTPRINT P_TXT KEY_RET GET_KEY R>EOL : X; X;Progr5I}am Data X; FMAT AD :A=EOL AUTO AD :AUTORUN.SYSA=EOL DOSNAME AD :DOS.SYSA=EOL TITLE }=AFORMAT A  AUTI5J}LITYA=EOL  EOL=ADevice DA MY_DEV A :A=EOL=EOL(  AՠA=EOL2  A1. FormatA=EOL<  A2. Write DOSA=EOLF  A5K}3. Format and AP  AWrite DOSA=EOLZ  A4. Change Drive #Ad  EOLn  A5. ExitA=EOL=EOLx  AOption > A= X; P_TXT5L} AInsert DISK, A H_KEY APress RETURNA= F_MAT EOL=EOL  AFormatting...A= W_DOS EOL=EOL  AWriting DOS..5M}.A= W_CP EOL=EOL  AWriting BBKCP...A= NEW_DEV ANew Drive # A= OPTION A A EOL2 EOL=EOL= HEADER5N} =|=# NORM == == HOLD ==" X;, X;CP Run Stuff6 X;@ END_DATA EPRDNJ  AD1:AUTORUN.BATA5O}T EOL=^   $h  $r $>| &# & 2 &   Q>S;;credits %>$ EPRINT CLOSE2 SET_OPN S5P}ET_DEV Q> PAUX19 CIOV 6 CLOSE2 8& IHAV_BAT0 Q: HG_CARTD !@ :N G_CART!@:X HAV_BATQ>Q;;prom5Q}ptb %>#l EPRINTv Q>;;fname %># EPRINT 7 7 !" X; }=EOL  ABBK CP - (C) 1987 A  AANALOG Comp5R}utingA=EOL  Aby: Bryan SchappelA EOL=       $ DATLEN END_DATABBK CP - (C) 1987 A  AANALOG Comp4YMFIM1NNNM2SFINXOYON1SKETIMNNNN1NAANOM3HFIBUZPPM4PFICCM5COUNNEEN1NS9T}DDANSLHBLLOHISTARDDMVCHRSHIGSLODSCRAP@@gA@@9U} @ @d @@AU@@@Q@@@9V}@A|AA  !A"#$%@&@'@9W}(@ )*@+@,@-. /01234A(5AW6(((7@9X}d8AV9B:@;@< =@)>AR?@BrAB ##*****************************##9Y}* MARBLE MAGIC *##* by Earl Hill *(##* *2##* COPYRIGHT 1989Z}9 *<##* BY ANALOG COMPUTING *F##*****************************PdM AfF:Af,%@* AP9[}4 A`MBREAK & INITIALIZATIONn$ A@$CREDITS & GAME BOARDx# -+@@&B:,,'#( A J9\}OYSTICK CONTROL ASELECT MARBLE# -+@@&B:,,'#( A JOYSTICK CONTROL A09]}CHECK MOVE AINCREMENT COUNT! A`!CHECK END OF GAMEˠ̠ AR1%9^}%,%% -%% (>:%A(," 6-R:,"@*T:,""$1"@2,%%'A`9_}1,%%36-F:Ad,$AdAU0"@G3%RE6-P:+F:@,$BU6%F:@,$AV%F:@ ,,'9`}A ,K-R("@A@"@w,/2@ !-@ % /26 -%%(9a}>:,@6-%+",$&+",$J%%6-%+"@,$&+"@,$T= 6-O:,6-O:,=!)!)$!@)+"*",A`9b}^ 6-6-h ArԠŠ|! 1%%!6-%A(7>:,0 '-+@@&B:,,'9c}/(3 7 # -%%( 6-#6-22@ !-@P% /22$ˠŠ 9d}6 "*" &-+@@&B:,,'.(2 6 1%%6-%A(>:,0ApA 9e}$6-+%,'$'P:',Ap6-O:&,Ap61%%-%%#( 6>:,0@Ap A9f}Ap$6-+%,'$'P:',Ap6-O:&,Ap&61%%-%%#( 6>:9g},0@Ap0 A:0 -+@@&B:,,'$(( , 0 D -%%(@N22@ !-@9q}B%DOS SYSB*)DUP SYSBSACCESS1 BASB$gACCESS2 BASB=AGENT OBJBALPHABETBASBBOOTCAMPASMB(CODEIT M65BDISBAT COMBDISBAT M65BDUMP COMB !DUMP M65B-FORMAT COMB4FORMAT M65B@SMARBLEMGBASBSAVE COMBSAVE M65B;SEC2PRNTBASBkSPYPT1 M65BoWSPYPT2 M65SPYPT3 M65SPYPT4 M650SPYPT5 M650"SPYPT6 M65P% /22$XԠԠb 6-%l-@(v(-@@((@2& $9r}ˠĠƠŠ#  6-6-@ # A  6-6-@  A  6-6- A %6-9s}@6-@ % A  6-6-@ A  A -6-61%%>:,9t}0@A''+% ,)++ )!,*% ,A$1%&%$>:,0@A $1%&%$>:,4 A9u}--+%!@,)++ )!,*%!,A  $1%%%$>:,0@A *$1%%%$>:,4 A4''+%9v} ,)++ )!,*% ,AP>$1%%&$>:,0@APH$1%%&$>:,4 AR--+%!@,)++ 9w})!,*%!,A\$1%%%$>:,0@Af$1%%%$>:,4 Ap  $z' A 9x}ĠŠ6-@2&9  -9(You removed all but  marble(s)-A 8  "19y} >:,4@.6.8 Ap !6- #AP -"  200#  9z}-#( Your game: -@A >  -)(Another game? (Y/N)3 A ;4Y>%k9{}K:#AdAU5A@dAAH)Mk@x*@A $ 6.>:,4N'!+9|}$$SSOUTSTANDING,,very good,good,average,fair,poor,very poor,sad,horrible$Ġؠ͠Р.9}}Q2@P@'-@ /-70?0C G Q A 8 -%%(@$B -%%9~}(>:,$L8@@'AR--5(8$V*@@'@*$`N2@P9}!-@P% /2=-AA D'N A jӠtQ@!AA3A9}AEA AQAR~C @d,/@1/@@=/@C/ -( 9}-@ (BY!-@!( earl hill-A  A%,AV'9}AVϠŠĠAYS@AR#010@?0@SSETCOLOR N3,N4,N89}# -#( )6-@6--)- -(@  ) 6-6-@9}-)-  -(@  ) 6-6-@-)- -(  ()6-@9}6--)-2 -(  </6-@6--/-@ F -(  9}P) 6-6-@-)-Z -(  dK -(+-@'(,--6($B-9}@K('nK -('-!('--@6($B-@K($xW -(,-@'9}(,9-@@B(+N-@W(+> -(------'(---3-@>(---D -9}(--- -@+(---7-@D(-----9 --(& &-,-5(&9 K-9}@@-&(&* 2->-@G(&K Q --@ (&$ 8-@@D9}-@M(&Q -@ ( -@(rys-@(arbles% --@9}!(#% +-@ -@'(%+ +-@#-@'(#+ AY@49}$Πhh;@,;@(,;@@,;@#,;@!,;@",;@,;@,;@9},6-@6-@ '6-A36-A?6-A K6-AW6-Ac6-o6-@{6-@9}6-"o6-@6-@'6-@36-@?6-@K6-@W6-@c6-@o6-@,+ 9}6. 67@9,. +67@,.6!!6.Select marble to move -@6.Select hole to fill -J 6.Must select a9} marble -T6.Marble replaced...^6.Illegal move!!!h$rҠԠś|/ #Ap-@("9}+67,.>:,/ ;;104,169,0,133,205,168,169,224,133,206,177,205,145,203<<200,208,249,230,204,230,206,165,206,201,228,29}08,239,96DAY06-+F:A,&@,$AVDAV'AV/6-'AV6-#A/A9}6-?:C:,,Šӛ #A`" A`/ -"!%$@%% / A@9}3,255,0,0,0,0,0,0,04,0,0,0,248,8,8,8,85,0,0,0,0,0,0,0,2556,8,8,8,8,8,8,8,87,0,0,0,15,8,8,8,819}1,8,8,8,248,0,0,0,012,8,8,8,15,0,0,0,0&13,0,0,0,255,0,0,0,0032,0,60,94,94,78,98,60,0:-1D)AY@49})AV'AVN٠ԠΠXAY+b''6-F:A`,%F:Aa,$AV%l&@p9}v-%%@! %@#%@$E%@%@e.%@&F:A`,E%@'F9}:Aa,)AV'AV)AY@4%%6-F:@,%F:@,$AVJ&6-P:+%@!$@ ,'AV,9}J6-+%@!$@ ,&+$AV,(6-P:+,'AV,(6-&+$AV,'@ @'@$9}D:MARBLENW.BAS,&+$AV,(6-P:+,'AV,(6-&+$AV,'@ @'@$8$%  ! /ԅ̥Յͤ ! ԅΥՅ  " J VL $0 $0 $0֥̅ͅץ8օڥׅ %0Τ !=}  $̩ῼ $0 $0 !  $̩ῼ $0 $LHHI BhLV% $0%L$ԍ%Ս%`ک=}ש̅֩ L7ῼ $0 $0 !  $̩ῼ $0 $LHHI BhLV% $0%L$ԍ%Ս%`ک< dEIn$X;-------------------------------xX;BINARY SAVEX;External Command #3X;X;by: Bryan SchappelX; X;CA}P Call:$X;SAVE fname start end [init run]$X;-------------------------------X; X;EquatesX; LNPOSGRAB_HEXA}FINDFILEFINDARG!CALL_CIO7CLOSE1"SET_DEV,SET_OPN"6 RUNAD@INITADJ A}FR0T ICCOMB^ ICBALDh ICBAHEr ICBLLH| ICBLHI AUX1J CIOVV LPOSˤ S_SAVE̮ EA}_SAVEθ SL SH BLL BLHX;$X;START%LNPOS FINDFILE;;filename %LNPOS FINDARG&A} GRAB_HEX;;start adr0 ENO_SAVE:QFR0D PS_SAVEN QFR0XPS_SAVEb %LNPOSl FINDARGv 'LPOS GRAB_HEX;;A}end adr ENO_SAVEQFR0 PE_SAVE QFR0PE_SAVEX;X;Start SaveX; CLOSE1;;open file SET_OPN A} SET_DEVQ> PAUX19  CIOV IDO_SAVE X;*NO_SAVE!CLOSE14X;>DO_SAVE PUT_FF;;send $FFHGNO_SAVE;;headerA}R PUT_FF\ GNO_SAVEf PUT_HEADER;;send loadpGNO_SAVE;;adr'szX;QS_SAVE;;get lenPSL;;to saveQS_SAVEA}PSH QE_SAVE;SSLPBLLQE_SAVESSHPBLH#BLL HN_HI#BLHN_HI S_SEG;;send seg GNO_SAVA}E$ %LPOS. FINDARG8 'LPOSB GRAB_HEX;;init adrL ENO_SAVEV MOVE_2` Q>4INITADj PS_SAVEtQ>4INITAD ~ PEA}_SAVE Q>5INITADPS_SAVEPE_SAVE PUT_HEADER;;put addr's GNO_SAVE PUT_TEMP;;init adr GNO_SAVE %A}LPOS FINDARG GRAB_HEX;;run adr ENO_SAVE MOVE_2;;save itQ>4RUNAD;;headers  PS_SAVEQ>4RUNAD  PEA}_SAVE( Q>5RUNAD2PS_SAVE<PE_SAVEF PUT_HEADER;;send 'emP GNO_SAVEZ PUT_TEMP;;send run adrd!CLOSE1;;allA} donenX;xX;Send a $FFX;PUT_FFQ>X;X;Put 1 byte to fileX; PUT_BYTE5$>Q> PICBLL9 PICBLHA}9Q>  PICCOM97 !CIOVX;X;Put the TEMP location"X;,PUT_TEMPQTEMP6 PUT_BYTE@ GP_RTSJ QTEMPT !A}PUT_BYTE^X;hX;Move FR0 to TEMPrX;|MOVE_2QFR0 PTEMP QFR0 PTEMP P_RTS:X;X;Put the Header OutA}X;PUT_HEADERQ>PBLLQ>PBLHPSH Q>S_SAVEPSL S_SEGQ> $>& !CALL_CIO0X;: TEMP Out@yef.DZFILTERCITYTSECTRWTCITYMACHFILTERDUNDFILT1DFILT2CHARSECOFFSELINSTARBYTCHAFIMAE}DDE&&  @2 @ @ @2@A!E}@Bg@i@AW@9@v%%*******************************%%* SECTOR TO PRINE}TER MAPPING *%%* PROGRAM *%%* by David Hill *%%* *E}%%* COPYRIGHT 1989 *%%* BY ANALOG COMPUTING *%%******************************* !!INITIALIE}ZE AND SETUP ARRAYS&&;AV,;A@,;@,;@h,;A(,;@8,;AV,;@E},;@,#;@,(%67@,..%67A(,..-67@,.7@,2& (} (((&(INITIALIZE}ING...7( PLEASE WAIT< B READ SECTOR INITA BFILTER INITF B MACH FILTER INITK BE}DUN FILTER INITP.*(!PLEASE INSERT DISK AND HIT RETURN.U6-@ BMAIN ROUTINE STARTS HEREE} (}( MAIN MENU:$$(============================( (1) PRINT A CITY ( (2) PRINT A DUE}NGEON ##( (3) PRINT A MAP LEGEND( (4) QUIT(ENTER CHOICE:(1-4)!! @)!@AE}A A0A@$""(DO YOU WANT TO QUIT?(Y/N))0YA.PRINT CITY SECTION (E}} ( ( CITY PRINT MENU:$$(============================( (1) LCB'S CASTLE( (2) EXODUSE}' CASTLE( (3) LCB'S TOWN( (4) MOON( (5) YEW( (6) MONTOR EAST( (7) MONTE}OR WEST ( (8) GREY( (9) DAWN( (10) DEVIL GUARD( (11) FAWN ( (12) DEATH GULCE}H%( (13) AMBROSIA*( (14) SOSARIA/""(ENTER # OR 15 TO GO BACK:4"@A9!! @E})!@A >7#6-+&@,$@2%@)(}7( READING..C-@16-%H BREADE} SECTORMC:,AR BFILTER SECTORW??67$A(%@<$A(%A(,.7@<A(,\ E}a(( PRINTING...f-@@dk##6-+&@,$@d%@p37<%@c,u  A  DUNE}GEON PRINT SECTION PUT YOUR PRINTER CODE HERE $ (} ($( DUNGEON MENU: $$(============================ E}( (1) SOUTH COAST ( (2) DUNGEON OF FIRE ( (3) TIME AWAITS ( (4) CLUES TO FOLLOW (E} (5) PERINIAN DEPTHS !!( (6) MINES OF MORINIA ##( ENTER # OR 7 TO GO BACK: %% @)!@A0E} "@A +6-$@%A3(+( READING... -@6-% B READ NEXE}T SECTOR -@A( 6.>:F:Ac%,, -@@ #7<,46.7<,# A1!  6.E}?& 67$A(%,.+   0 (( PRINTING...5 3******************: -@@? 663*7+&@E},$@%@<$@,*D  I 3******************N $$(TYPE (1) TO READ NEXT LEVEL,S (OR TYPE (2) TE}O GO BACK:X @A0] 6-%@ A0uPRINT A MAP LEGEND" (}"( MAP LEGEND PRINTERE}$$(============================))( TYPE 1 TO PRINT OR 2 TO GO BACK:@A 3 3 3!!3 E} MAP LEGEND:--3%=====================================3 [ ] ------WALKWAY3 [%] ------MOONGATE}E3 [#] ------WALL3 [$] ------CHEST3 [(] ------LAVA3 [*] ------SHRINE!!3 [+] -E}-----DARK FOREST""3 [-] ------LIGHT FOREST3 [.] ------GRASS3 [:] ------EXODUS""3 [=] ----E}--'BLANK' WALL3 [>] ------MOUNTAIN3 [@] ------WHIRLPOOL""3 [B] ------BALRON/DEVIL ##3 [C] E}------CASTLE/CLERIC++3# [D] ------DUNGEON/DRAGON/DAEMON3 [F] ------FIGHTER3 [G] ------GUARD3E} [H] ------HORSE"3 [I] ------DOOR'3 [J] ------JESTER,**3" [M] ------MERCHANT/MAN 'O WARS13 E} [P] ------PINCHER63 [R] ------RANGER;++3# [S] ------SEA MONSTER/SKELETONS@3 [T] ------THIEFE3E} [W] ------WIZARDJ##3 [|] ------GREAT SERPENTO33 DUNGEON LEGENDT3=======================Y3 E} [ ] ------HALLWAY^3 [#] ------WALLc!!3 [X] ------SECRET DOORh!!3 [I] ------NORMAL DOORm3 [E}$] ------CHESTr3 [T] ------TRAPw3 [F] ------FOUNTAIN|3 [W] ------WINDS3 [G] ------GREMLIE}NS""3 [+] ------2 WAY LADDER3 [^] ------UP LADDER!!3 [v] ------DOWN LADDER3 [R] ------RUNE}ES""3 [L] ------LORD OF TIME~ A@'READ SECTOR ROUTINE'6-?:C:,<@<,'"@$$'(E}ERROR AT SECTOR:)'*MACHINE LANGUAGE FILTER+6-?:C:,:, Du$Iu%%104,104,104,201,083,169,082,144Nu%%002,169,087,072,169,000,072,169Su%%001E},072,169,000,072,169,128,072Xu%%169,006,072,072,104,104,141,005]u%%003,104,141,004,003,104,104,141bu%%001,003,104,104,1E}41,002,003,104gu%%141,011,003,104,141,010,003,032lu%%083,228,173,003,003,133,212,169qu000,133,213,096uINITIALIZEE} FILTER DATAv-@AV"v67<,.>:, v   $v%%126,001,002,003,046,005,006,007v%%045,009,010,011,E}043,013,014,015v%%062,017,018,019,068,021,022,023 v%%084,025,026,027,067,029,030,031%v%%032,033,034,035,036,036,036,03E}6*v%%072,041,042,043,038,045,046,047/v%%064,049,050,051,083,053,054,0554v%%077,057,058,059,038,061,062,0639v%%077,065E},066,067,074,069,070,071>v%%071,073,074,075,066,077,078,079Cv%%070,081,082,083,067,085,086,087Hv%%087,089,090,091,084,0E}93,094,095Mv%%096,097,098,099,083,101,102,103Rv%%104,105,106,107,068,109,110,111Wv%%080,113,114,115,068,117,118,119\v%E}%066,121,122,123,124,125,126,127av%%043,129,130,131,040,133,134,135fv%%037,137,138,139,035,141,142,143kv%%144,145,146,E}147,061,149,150,151pv%%065,153,154,155,066,157,158,159uv%%067,161,162,163,068,165,166,167zv%%069,169,170,171,070,173,17E}4,175v%%071,177,178,179,072,181,182,183v%%073,185,082,082,085,189,190,191v%%089,193,194,195,076,197,198,199v%%077E},201,202,203,078,205,206,207v%%079,209,210,211,080,213,214,215v%%087,217,218,219,082,221,222,223v%%083,225,226,227,0E}84,229,230,231v%%124,233,234,235,124,237,238,239v%%240,241,242,243,244,245,246,247v%%042,249,250,251,082,253,254,255E}vMACHINE LANGUAGE FILTERv-@@8"v67<,.>:,v   $v%%104,104,133,204,104,133,203,104v%%E}133,206,104,133,205,169,128,133v%%207,166,207,188,127,006,177,205v%%164,207,136,145,203,198,207,162v000,228,207,2E}08,236,096wDUNGEON FILTER INITw-@@"w67,.>:,w67,.>:,w   $w000,032,128,035E},160,088w192,073,064,036,004,084w002,070,003,087,006,071w016,094,032,118,048,043w005,077,008,082,001,076E}D:SECTORNW.BAS064,036,004,084w002,070,003,087,006,071w016,094,032,118,048,043w005,077,008,082,001,076D4dX; SAVE#D:SPYPT1.M65nX;xX;------------------;X; Secret Agent ;X; (c) 1988 ;X; by Barry KolbeI} ;X;------------------;EIX; PRINT $>4  %>5  PRINTEX;SCR;;screen scrollSCRI}2;;dittoML;;more indirects" SL,J6X1;;save X & Y@ X2J Y1T Y2^IX;;char counterhI} XFrVP;;verb counter|NP;;noun counterDO;;direct objectPO;;prep. objectERFLG;;error flagI}INTOF;;'INTO' flagWITHF;;'WITH' flag TEMPEOLF;;in printingMAXLEN;;max inputROWX;;savI}e rowcrsCOLX;;save colcrs NOENDINROOM;;objects in roomX;GR0;;screen memoryHOLD;;data bI}ackupCHSET;;character setIBUF;;input buffer&PBUF;;print buffer0X;:ROWCRST;;cursor rowDCOLCRSI}U;;& columnNRTCLOK;;clockXCH;;keybCAPS;;caps flaglCONSOL;;consol buttonvRANDOM ;;random nuI}mberEOL;;end of lineBOTLIN;;scroll valueENLIN&;;wrap around valNUMOBJ.;;total # objectsNUMSHOI};;# obj can showNUMV;;number of verbsX;>D:SPYPT3.M65X;`X;START KEEP;;back up data !BEGINI}X; >D:SPYPT6.M65X; X;start things going*X;4BEGINQ>a;;lowercase> PCAPSHQ>5CHSET;;installRP;;charactI}er set\ CLRGR0;;clear screenfQ>4GDLST;;installpP0;;Display Listz Q>5GDLSTP1Q>>;;enbale DMAP/Q>I};;initializePWHERE;;outsidePCARRY;;carry nothing PNOEND HOME;;home cursorPRINT M47;;print creditsPRI}INT M48#ROWCRS;;next line SHOLOC;;show room infoX;X;Main loopX;DOIN INPUT;;get input$Q>;;shoot.PI}FK;;shoot flag8QIBUF;;check forBR>EOL;;single letterLHTRYCMD;;commandV QIBUF`X;jX;Move from room to roomtI}X;~$>;;a direction?CML1RSINGLE9FGSING;;yes0;;try again ICML1GTRYSPC;;try X,I,R,LGSING&TEMP;;saveI} direction APEROB;;ape or robot?%WHERE;;present locQEXOF8;;get offset,;;add directionOTEMP;;0-5?QEXI}ITAB8;;get exit IGOOO;;value:+ =okPRINT M8;;'Can't go'!DOIN;;more input(GOOOPWHERE;;new room2R>!;;escape?I}< HGOOP;;noF!ENDGAM;;see if wonPGOOP SHOLOC;;show new roomZ CKDEAD;;deadly room?d!DOIN;;more inputnX;xX;ChI}eck other single lettersX;TRYSPCR> I;;inventory? HTLOK INVENT !DOINX;TLOKR> L;;look at room? HTSAVJ} LOOK !DOINX;TSAVR> X;;save dataHTRYLOA;;to disk? SVEGAM !DOINX;"TRYLOAR> R;;retrieve data, HJ}TRYCMD6 LOADGAM@ SHOLOC;;show roomJ !DOINTX;^X;Interpret sentencehX;rTRYCMD INTPRET;;parse|QERFLG;;erroJ}r?FAOKPRINT M1;;'What?'!DOIN;;get inputAOKQVP;;get verb number T?;;x2 for>;;look up table QCMDTBL9J} PDOCMQCMDTBL9 PDOCMDOCM ;;do verb!DOIN;;more inputX;X;Set the cursor at 2,1X; HOMEJ}Q>& PROWCRS0 PCOLCRS: #COLCRSD:NX;XX;Show the name of the roombX;in the status linelX;vSHOLOC%>;;clearJ} out Q>;lineSC1PPLACE81ISC1QWHERE;;get roomT?;;x2 for table>QROOMTAB9;;usePSL;;indirect forJ}QROOMTAB9;;for move PSL%>SC2Q@SL7;;get byteFSXT;;done if 0  ASC2IC;;Internal CodePPLACE8J};;on status  3;;line*HSC24SXT LOOK;;look at room>:HX;RX;Look at a Room\X;fLOOK DESCRIB;;describe itp SJ}HOEXT;;show exitsz SHOOBJ;;sho objects:X;X;Show objects in RoomX;SHOOBJ$>;;'You see:'SHSQYOUS9 PJ }IBUF92(> HSHS;;X = 9%>;;scan objectsNN1QOBJTBL8RWHERE;;is it here? FSOB;;yes SOC3;;next objectJ } )>NUMSHO;;that all?$ HNN1;;no. (> 8 FNOOB;;you see nothingB Q> ;;zap last ','L PIBUF9V Q>;;'EOL' marker` J } PIBUF9j PRINT IBUF;;on screent :~ X; NOOB%>;;'Nothing' NOIQNOTH8 PIBUF9 FNRT 2 3 HNOI NRTJ }PRINT IBUF;;print it : X; SOBC 5;;save Y T?;;x2 ?;;point to QOBJNAM8;;object's PSL;;name( QOBJNJ }AM82 PSL< %>;;move name intoF ODMQ@SL7;;bufferP FODNZ PIBUF9d 2n 3x HODM ODNQ> ,;;add in ', ' PIBUF9 J}Q> 2 PIBUF9 2 7;;get Y back ? !SOC;;do more X; X;Show exits X; SHOEXT$>;;'The exits SK1QM99;;aJ}re:' PIBUF9 2" (>, HSK16 %WHERE;;room #@ QEXOF8;;offset intoJ ?;;EXITABT Q>;;ibuf counter^ PX1;;directionJ} cntrh SXX'TEMPr QEXITAB8;;get exits| GELQ;;$FF = no 'TEMP QX1;;get dir name T?;;x2 ? QDIRECT8;;point toJ} PSL;;name QDIRECT8 PSL %>;;move name ELPQ@SL7;;to buffer PIBUF9 FELQ 2 3 HELP ELQ%TEMJ}P& NOEX#X1;;try next direct0 3: QX1D R>;;is that all?N HSXXX Q> ;;zap last ','b PIBUF9l Q>;;set 'EOL'v J}PIBUF9 PRINT IBUF;;print : X; X;Find the VERB & NOUN X; X;input format: $X; verb (the) object [with/intoJ}] X; (the) object] !X; (the) and [..] are optional X; $X;if verb or first object are not $X;recognized an errorJ} is returned X; !X;spaces and 'the' are skipped X; INTPRET$>;;set variables &IX;;char counter* &VP;;verb numbeJ}r4 &NP;;noun number> &INTOF;;into and withH &WITHF;;flagsR &ERFLG;;error flag\ X;f X;searchp X;z Q>4VERBT;;pointJ} to PSL;;verb table Q>5VERBT PSL SV2$IX;;get counter %> SV5Q@SL7;;do the first RIBUF9;;3 letters J}HSV1;;match? 2 3 )> HSV5;;not done FGOTV;;got a verbSV1#VP;;next verbQSL;;add 3 to ,;;pointer$O>J}.PSL8DSS1B #SLLSS1QVP;;end of verbs?V R>NUMV`HSV2jSV3#ERFLG;;errort:~X; X;got verbX;GOJ}TVQIBUF9;;look forR>EOL;;EOL orFSV3;;first spaceR>  FGOTSP2 HGOTV!GOTSP NSPACE;;find next char J}SKPTHE;;skip 'the' NSPACE;;find next charSH1 FINDN;;get noun ESV3;;errorSH2QNP;;save asPDO;;direct objecJ}t(X;2X;find EOL or space<X;FSH3QIBUF9;;if EOL doneP R>EOLZHSH9d:nSH9R> ;;find end ofxFSH4;;noun- i.e.J}SV82;;a space charHSH3SH42&IX NSPACE;;find non space PREP;;a preposition? NSPACE;;find non spaceJ} SKPTHE;;skipping... FINDN;;last noun?QNP;;as prep. objectPPO:X;!X;Find a 'non' SPACE characterX;J}NSPACEQIBUF9"R> ,HNS62@ HNSPACEJNS&IX;;char counterT:^X;hX;Skip the word 'the'rX;|SKPTHE%> SJ }T1QTHE8 RIBUF9 HTHER23)>HST1&IX THER:X;X;Check for 'INTO' or 'WITH'X;if found set flagsJ!}X; PREP$IX%>P2QIBUF9;;'INTO'?& RINTOB80 HPREP1:2D3N)>XHP2b#INTOF;;flagl P4&IXv:;;okJ"}PREP1QIBUF9;;'WITH'? RWITHB8HP323)> HPREP1#WITHF;;set flag!P4P3:X; X;Get a descriptiJ#}on of a roomX;DESCRIBQWHERE;;this room  T?;;x2> QDESTAB9;;point to*?;;description4 QDESTAB9>>H PRIJ$}NTE;;print itRQWHERE;;room 1?\R>fHDSS;;special msgpPRINT M53z:X;DSSR> ;;ape room? HDEOUQFI;;iJ%}n cageFAPER;;yesPRINT D9;;'In cage':APERQF6;;ape alive? FAPESPRINT M37;;'Charging': APESPRJ&}INT D20;;'Dead ape' DEOU:X;X;Find the NOUNX;$FINDNQ>4NOUNT;;point to.PSL;;noun table8 Q>5NOUNTB PSLJ'}L$>;;noun counterV&NP`SN2$IX;;char counterj%>tSN7Q@SL7;;compare 3~RIBUF9;;lettersHSN123)>J(};;match 3?HSN7FGOTN;;yesSN1#NP;;next nounQSL;;add 3 to the ,;;pointerO>PSLDSN5 #SL J)}SN5QNP;;at end ofR>NUMOBJ;;nouns? HSN2;;no( ;;;error2:<GOTN,;;got oneF:PX;ZX;Beginning of Verb HandlersdJ*}X; DO = direct objectnX; PO = prepositional objectxX;X;Get an objectX;DGETQCARRY;;carrying theR>;;maximJ+}umENOGT;;yes$DO;;object number(>-;;get allFGETAL;;yes(>;;over maximumEGT;;possible toQOBJTBL9;;gJ,}etRWHERE;;is it here? FIH;;yesR>;;you have it? HNTH;;noPRINT M11;;'Have already'":,NTHPRINT M3;;J-}'Not here'6:@IHQ>;;take itJ POBJTBL9T#CARRY;;add 1^TOOKPRINT M4;;'Taken'h DOSCOR;;check scorer:|"NOGJ.}TPRINT M7;;'Can't carry':GTPRINT M24;;'Can't get':X;X;Get all objectsX;GETAL%>;;check ifGEJ/}TQOBJTBL8;;here RWHEREFTAK;;yes take)>NUMSHO;;at end? FTK1;;yes3HGETTK1!PDON;;'Done'TAK$CARRYJ0};;carry more?&(>0 ENOGT;;no:Q>;;take itD POBJTBL8N#CARRY;;add 1X C;;save Yb5l TOOK;;'Taken'v7;;get Y bJ1}ack?!GET;;do moreX;X;Drop object(s)X;INJ#INROOM;;add 1HINKX;DDROQ>;;zero counter PINROOMJ2}%>;;count objectsINNQOBJTBL8;;in room RWHEREFINJ;;here's one INK3;;next object)>NUMSHO;;done? HINNJ3}*QINROOM;;at 6 or more?4R>> DINL;;okHINMPRINT M51;;'No room'R:\INL$DO;;is it thef(> ;;dreaded vial?pJ4}HPP1;;no - whewz!VDED;;a gonerPP1(>-;;drop all?FDPAL;;yupQOBJTBL9;;have it?R> FDH;;yesPRINT MJ5}5;;'Don't have':DHQWHERE;;put in room POBJTBL9(>;;was it scuba?HDDYQ>;;reset flagPFEHDDXJ6}DDY(>;;is it the mask?HDDX$Q>;;reset flag.PFH8DDX"CARRY;;1 less to carryBDP4PRINT M6;;'Dropped'L DOJ7}SCOR;;change score?V:`X;j X;Drop alltX;~DPAL%>;;scan objectsDP1QOBJTBL8R>;;have this 1? FDP2;;yesJ8}DP33;;next object)>NUMSHO;;done?HDP1!TK1;;'done'DP2QINROOM;;is there room?R>;;6 maximumFINM;;no roJ9}om)> ;;vial?FVDED;;dead!R>;;gas mask?  HNOGSQ>;;flip flagPFH(NOGSR>;;scuba gear2 HNOSC<Q>;J:};flip flagFPFEPX;Z NOSC#INROOM;;1 more in roomd"CARRY;;carry 1 lessn C;;save Yx5 DP4;;'Dropped'7 ?;;geJ;}t YQWHERE;;put in room POBJTBL8!DP3;;moreX;VDED7;;virus dropped7Q> !DEADX;X;X;Unlock isJ<} the same as OPENX;DUNL!DOPE"X;, X;Open6X;@DOPEQDO;;the box?JR>THDDF^QOBJTBL;;have it?hR>rJ=}FGSS|!HAVNT;;'Haven't got'GSSQF9;;if opned beforeHGD1!EE2;;see 'Nothing'GD1N>;;else set flagPF9;;J>}so no reopenGGSQWHERE;;gas mask herePOBJTBL!LKSEE;;show itX;DDFR>;;open desk?HOCCQWHERE;;whiJ?}ch room?R>;;entrance?FOD1R>;;reception?FOD2&R>;;office?0FOD9:NOCANPRINT M19;;'Can't 'D:NX;J@}XOD1QF7;;entrance deskbFITOPN;;already open?lN>vPF7Q>;;badge &POBJTBL;;nailfilePOBJTBLOE1 JA}ITOPN;;'Open'LKSEE LOOK;;show room:X;"ITOPNPRINT M13;;'It's open':OD2$>;;reception desk%>;;useJB} nailfile CKWITH;;say 'WITH'QF1;;opened flag FITOPN N>PF1 Q>;;show card*POBJTBL4HOE1>X;HJC}OD9$>;;office deskR%>;;large key\ CKWITH;;'WITH'?fQFN;;open flagp FITOPNzN>PFNQ>;;show:POBJTBLJD};;coinPOBJTBL;;combination!OE1X;OCCR>;;cabinet HNOCAN QWHERER>;;office?HOCK$>;;cabJE}inet%>;;small key CKWITH;;'WITH'QF8;;open flag FITOPN$N>.PF88Q>BPOBJTBL;;large keyL!OE1VJF}X;`OCKR>;;kitchen?jFKOKt!NOCAN;;'Can't'~KOK$>;;cabinet%>;;combination CKWITH;;'WITH'QFM;;open fJG}lag FITOPNN>PFMQ>POBJTBL ;;vial!OE1X;!NOTYTPRINT M14;;'Not yet!':X;  X;ReadX;JH}DREAQDO;;what shall(?;;we read?2 QOBJTBL8<R>;;have it?F FDOREPPRINT M5;;'Can't read'Z:d DOREQDOn R>JI};;padxFRPDR> ;;folderFRFO R> ;;memo HNOREPRINT M22;;'Tighten:;;security'"RPDPRINT M20;;'Push JJ}button':"RFOPRINT M21;;'Experiments':"NOREPRINT M23;;'Can't read':X;X;Insert (Put) intoX;DIJK}NSQWHERE"R>;;security?,HIRB6 $>;;card@ %>;;slotJ CKINTO;;say 'INTO'TQ>^POBJTBL;;got a gunhQ>;;JL}lose cardrPOBJTBL|DINR"CARRY;;1 less PDON;;'Done'!LKSEE;;showX;IRBR> ;;hallwayHIRC$>;;badgJM}e %>;;slot CKINTO;;'INTO'Q> POBJTBL;;batonQ>POBJTBL;;lose badge !DINR X; IRCR> ;;cafeterJN}ia HIRR;;try rod& $>;;coin0 %>";;vending:  CKINTO;;'INTO'D Q> N POBJTBL ;;formulaX Q>b POBJTBL;;lose JO}coinl !DINRv X; IRRR>;;security HIRD;;try disk $>;;rod %>,;;hole  CKINTO;;'INTO' Q> POBJTBL;;lJP}ose rod Q>;;gain exit PEXITABo !DINR X; IRDR>;;computer room HIRM;;try memo! $>;;disk !%>+;;driveJQ}! CKINTO;;'INTO' !Q>;;program*!POBJTBL4!Q>;;no disk>!POBJTBLH! !DINRR!X;\!IRMR>;;photo labf!HIROp! JR}$> ;;memoz!%>*;;enlarger! CKINTO;;'INTO'!Q>!POBJTBL ;;microdot!POBJTBL ;;memo! !DINR!IRO!NOCAN;;'CaJS}n't'!X;!X;Check DO, PO , ownershp!X;and for the word 'INTO'!X; Is X= DO, Y = PO?!X;!CKINTO(DO;;X = DO?! HNTFIJT}T")PO;;Y = PO?" HNTFIT"QOBJTBL9;;have X?$"R>."HUNV8"QINTOF;;said 'INTO'?B"FWRAL":;;sure go aheadV""NTFITJU}PRINT M16;;'Won't fit'`"7j"7;;pull returnt":~"UNV7;;pull return"7"!HAVNT;;'Don't have it'"WRA7;;pull return"7JV}"!NOTYT;;'Not yet'"X;">D:SPYPT2.M65">D:SPYPT4.M65">D:SPYPT5.M65"" STARTit'"WRA7;;pull return"7Ha 6dX;SAVE#D:SPYPT2.M65nX;x X;--------------------------; X; Secret Agent (c) 1988 ; X; By: Barry Kolbe NX} ; X; Second half of main ; X; program ; X;--------------------------;X; X;Wear scuba gear oNY}r gas maskX; DWEAQDOR>;;scuba? HWTA;;noQOBJTBL;;have it?R> FWTB;;yes#HAVNTPRINT M5;;'haveNZ}n't got':"X;,WTBQ>;;set flag6PFE@PRINT M17;;'Wearing ..'J:TX;^WTAR>;;gas mask?h HWTC;;norQOBJN[}TBL;;own it?|R>HHAVNT;;noQ>;;set wear flagPFHPRINT M31;;'Wearing...':WTC!NOCAN;;'Can't do tN\}hat'X; X;TurnX;DTURQWHERE;;room?R>;;stairwellHTR1;;nopeQDOR>;;hook? FTR2;;yesTR3!NOCANN]};;'Can't'&TR2Q>;;new exit west0PEXITABu:!LKSEE;;showDX;NTR1R>;;stairwellX HTR4;;nobQDOl R>;;knobvN^}HTR3;;'Can't'QFD;;flip flagN>;;electric floorPFDTR5!PCLIK;;say 'Click'TR4R>;;stairwellFTR5;;juN_}st 'Click'R> ;;west end? FTR5;;yesTR6R> ;;ape room? HTR3;;noQDO R>;;knobHTR3;;'Can't'Q>;;loosN`}e ape! PFI PCLIK;;'Click' Q> ;;south exit*PEXITAB7;;now4 !LKSEE>X;HX;flip switchRX;\DFLIQWHERE;;roNa}om?fR>;;office?p HFCH;;nozQFA;;is safe visible HFEV;;yesQDOR>;;switch? FFES;;yes FEV!NOSPEC;;'NotNb}hng happns'FESQOBJTBL;;have itR> FFET;;yes !HAVNTFETQFB;;opened before? HFEU;;no!PDON;;'Done'Nc}FEUN>;;set flagPFBQ>;;show rodPOBJTBL$PRINT M29;;'Safe open'. PCLIK;;'Click'8 !LKSEEBX;LFNd}CHR>;;chem lab?V HFEV;;no`QDOjR>;;switch?t HFEV;;no~QFG;;X-ray machineN>PFG;;fall through!PCLIKNe}PRINT M28;;'.Click..':X;X;Examine somethingX; DEXAQDOR>;;electronicHEE1;;device?QOBJTBLR>Nf}HEVB  PRINT M30;;'On/Off switch':EE1R>;;baton?(HEE22QOBJTBL<R>FFEE3PEVB!HAVNT;;'Haven'Ng}t got'ZEE3PRINT M54;;'Gravityd :;;switch'nEE2PRINT M12;;'Nothing 'x:X;X;Wave an objectX;DWAV$DO;Nh};have it? QOBJTBL9R> FWA1;;yes!HAVNT;;'Don't have'WA1(>;;baton?HNOSPEC;;'Nothing' QWHERER>;;Ni}in right room?FWA4 NOSPECPRINT M18;;'Nothing:;;special'WA4QFF;;flip flag"N>,PFF6FWA2@Q>;;closNj}e exitJWA3PEXITABT !LKSEE^WA2Q>;;open easthHWA3;;exitr:|X;X;Shoot the ___ with the gunX;DSHOQ>Nk};;message flagPFK;;for CKWITHQDOR>;;shoot robot? HGAP;;noSF2Q>;;set flagsPWITHF;;auto WITH Q>Nl};;gunPPO;;as prep object!SF1;;check it outGAPR>$;;shoot ape? FSF2;;yesQDO;;shoot gun?R>&HSF10Nm}PRINT M50;;'At what?'::DSF1QWHERENR>;;in robot room?X HSAPE;;nob$>;;robot=DOl%>;;gun =POv CKWITH;;cheNn}ck itQFJ;;robot alive? HSS3;;yesSS5!WHAFOR;;'What for?'SS3QRANDOM;;see if hitR>dESS2;;missQ>;;aNo} hitPFJ;;robot deadQ>4D1F;;change message PROBROM Q>5D1FPROBROM!LKSEE;;show itX; !SS2PRINT MNp}33;;'You missed'QRANDOM;;see if robot  R>;;hits*DSS44PRINT M35;;robot missed>:HSS4Q>;;gotcha!R !DEAD\Nq}X;fSAPER> ;;ape room?pFSAP1;;yesz!NOCAN;;'Can't do that'SAP1$>$;;ape =DO%>;;gun =PO CKWITH;;check mNr}ostlyQFI;;for ownershipFSJ1;;is ape out?!NOTYT;;no->'Not yet'SJ1QF6;;alive ape? FSS5;;noQRANDOM;;hit Ns}or miss?R>DSA2Q>;;one dead apePF6 !LKSEE;;tell us all !SA2PRINT M33;;'You missed' QRANDOM;;see iNt}f ape$ R>;;gets you. ESA3;;yes8 PRINT M37;;'Charging'B :L SA3Q>;;'Crushed!'V !DEAD` X;j "X;Check: correct DiNu}rect Object,t !X;Prepositional Object, use of~ X;'WITH' and ownership of PO "X;Enter with X=test value of DO X;Y= test vaNv}lue of PO X; CKWITH(DO;;X = DO? HWP1;;nawh )PO;;Y = PO? HWP2 QOBJTBL8;;have Y? R> HWP3;;no QWITHFNw};;say 'WITH'? FWP2;;no :;;go ahead WP17;;pull return 7 !WHAFOR;;'What for?'( X;2 WP27;;pull return< 7F QFKNx};;message flagP FWP5Z !NOTYT;;'Not yet'd WP5!NOCAN;;'Can't do'n X;x WP37 7 !HAVNT;;'Haven't got' X; X;LiftNy} the plant X; DLIFQWHERE;;in stairs? R> HWHAFOR;;no! QDO R>&;;plant? HWHAFOR;;so why do it? QF5;;lifNz}t before? FWHAFOR;;yes N>;;set flag PF5 Q> ;;show key" POBJTBL, !LKSEE;;show us6 #WHAFORPRINT M27;;'WN{}hat for?'@ :J X;T X;Move an object^ X;h DMOVQWHEREr R>;;office?| HMVC;;no QDO R>);;picture? FMV2;;yup N|}MV1!NOCAN;;no can do MV2QFA;;safe already FPDON;;visible? N>;;no. set flag PFA Q>4DSAF;;say it PSAFROMN}} Q>5DSAF PSAFROM !LKSEE X; PDONPRINT M2;;'Done' :& X;0 MVCR>;;storage?: HMV1;;noD QDON R>;;cN~}abinet?X HMV1;;nob QFC;;moved before?l FPDON;;yesv N> PFC;;set flag Q>;;show exit down PEXITAB !LKSEN}E X; X;Push (or Press) buttons X; DPUSQWHERE;;storage? R> HPS2;;no QDO R>';;red button? HPS3 Q>N};;turn off lasers PS4PF2 !PCLIK;;'Click' PS3R>(;;blue?* FPS1;;yes4 PS6!NOCAN;;'Can't '> PS1Q>;;turn laserN}s onH HPS4R PS2R>;;small room\ HPS6;;(airlock)f QDOp R>(;;blue buttonz HPS6;;no Q>;;open east PEXITABN} Q>;;close north PEXITAB  PCLIK;;'Click' !LKSEE X; X;Player's Inventory X; INVENT$>;;'You have:' N}ILLQYOUH9 PIBUF9 2(> HILL%>;;see which ones$ILQQOBJTBL8;;you own.R>8HILN;;no this oneBCL 5N};;save YVT?;;x2 for an` ?;;offsetjQOBJNAM8;;into namestPSL~QOBJNAM8 PSL%>;;move nameILMQ@SL7;;N}to bufferFILP;;done at 0 PIBUF923HILMILPQ> ,;;put in ', ' PIBUF92Q>  PIBUF9 2 7;;get YN}?(ILN3;;next object2)>NUMSHO;;at end?< HILQ;;noF(> ;;X still 10?P HILW;;noZ%>;;must havedNOHQNOTH8;;'NN}othing!'n PIBUF9x23)> HNOH!ILU;;print itILWQ>;;put in 'EOL' PIBUF9Q> ;;erase last , PIBN}UF9ILUPRINT IBUF;;print it:X; X;You have failed the mission!X;Enter with A = type of deathX;DEADT?N};;x2 >;;offset"QDEADTAB9;;get message,?;;high byte6 QDEADTAB9@>;;low of addressJ PRINTE;;print itTPRINT N}M41;;'Failed'^ !WHANOWhX;r"X;Before allowing a turn see if| X;the player is in the ape or$X;robot room. Don't allow N}them toX;move out.X;APEROBQWHERER>;;with robot?HDOAPE;;noQFJ;;robot alive? HEYA;;yes :;;whew!N}EYA INTPRET;;get commandQERFLG;;test for errorHEYB;;errorQVP;;get verb #R> ;;shoot?HEYB;;nope!DSHO;N};goto shoot&EYBQRANDOM;;robot shoots0R>:DEYCDQ>;;hit youN!DEAD;;done forX!EYCPRINT M35;;robot missesbN}7;;pull returnl7v!DOIN;;get inputX;DOAPER> ;;ape room? HNOEN;;noQFI;;in cage?HNOEN;;yesQF6;;alivN}e?FNOEN;;dead INTPRET;;get command QERFLGHEYD;;errorQVP;;get verb #R> ;;shoot? HEYD;;no!DSHO;;dN}o shoot EYDQRANDOM;;see if apeR>;;gets you ENOEN;;escape for now*747>Q>;;crushes youH !DEADR NOEN:\N}X;fX;Check for traps inpX;various roomszX;CKDEADQWHERER>;;hallway?HDI2QF2;;lasers on? FCDOK;;noN}Q>;;blasted! !DEADCDOK:;;ok so farDI2R>;;security?HDI3QFD;;electric floor FCDOK;;okQ>;;ZzzzzitN} !DEADDI3R>;;X-ray room?HDI4$QFG;;switch.HCDOK;;off!8Q>;;radiationB !DEADLDI4R>;;security?VHN}DI5`QFH;;gas mask on?jFCDOK;;yestQ>;;poison gas~ !DEADDI5R>;;tunnel? HCDOKQFE;;wearing scuba? FCDN}OKQ>;;drowned !DEADX; X;Check the status of objectsX;and show the scoreX;DOSCORQ>;;zero PSCOREN}%>;;check for the DYAQOBJTBL 8R>;;4 objectsFUPO(DYB12IDYA<QOBJTBL ;;don'tFR>;;count memoPHN}DYC;;next timeZ"SCORE;;(-1 for memo)dDYCQSCORE;;I'll put themnL>;;next to onexPPLACE%;;another:;;show scorN}eUPO#SCORE;;plus 1!DYBX;X;See if you've won after anX;escape from the labX;!ENDGAMPRINT M42;;'EscaN}ped' #ROWCRSQSCORE;;win?R> HNOWINPRINT M44;;You won! ENL!ENL NOWINPRINT M41;;not quite !WHAN}NOW"X;,X;Save initial condition in6X;the event of a restart@X;JKEEPQ>4SAVST;;start ofT PJ;;data^ Q>5SAVSTh PN}JrQ>4HOLD;;backup area|PML Q>5HOLD PMLKK3%>;;one byte atQ@J7;;a time P@ML7#ML;;bump pointN}ersHKK1 #ML KK1#JHKK2 #JKK2QJ;;at theR>5SAVEN;;end yet?HKK3QJ R>4SAVEN&HKK3N}0 :;;done:X;DX;Ok. Something happened toN X;bring us here. Either pressXX;START or SYSTEM RESETbX;l#WHANOWPRINTN} M49;;Press STARTvNNWQCONSOL;;check consolR>;;START?FREDO;;try againHNNWREDOQ>4SAVST;;move dataPJ;N};back toQ>5SAVST;;where thePJ;;program canQ>4HOLD;;use itPML Q>5HOLD PML KR1%> Q@ML7P@N}J7 #MLHKR2  #ML* KR2#J4HKR3> #JHKR3QJ;;done yet?R R>5SAVEN\HKR1fQJp R>4SAVENzHKR1N}!BEGIN;;start overX; X;DataX;SINGLE ANSEWUDAINTOB AINTO AWITHB AWITH ATHE ATHE AX;X;TabN}le of Room NamesX;ROOMTAB R0;;0 outside R1;;1 entrance R2;;2 reception R3;;3 conference R4;;4 kitchn$N} R5;;5 security. R6;;6 experiment8 R7;;7 storageB R7;;8 storageL R8;;9 animalV R9;;a west end` RA;;b halN}lwayj RB;;c cafeteriat RC;;d stairwell~ RC;;e stairwell RD;;f office RE;;10 chem lab RF;;11 x-ray R5N};;12 security RC;;13 stairwell RG;;14 computer RH;;15 photo lab R7;;16 storage R5;;17 security RC;;18N} stairwell RD;;19 office R5;;1a security R7;;1b storage  RI;;1c electronic RJ;;1d small(air) RK;;1e tuN}nnel( RL;;spacer not used2 RL;;20 cage<X;FX;Direction table for namesPX;ZDIRECT XNOR;;northd XSOU;;southnN} XEAS;;eastx XWES;;west XUP;;up XDOW;;downX;SAVST;start of saveX;WHERE;;current roomCARRYN};;# objs carriedSCORE;;what else?X;X;Object Location TableX;X;0-31 = In a RoomX;$FF = Not VisibleN}X;$80 = Owned by PlayerX;OBJTBL ;;badge" ;;nailfile, ;;card6 ;;pad@  ;;disk 5J ;;gunT ;;bN}aton^ ;;boxh ;;gas maskr ;;folder 10| ;;vial ;;formula ;;memo ;;microdot ;;program 15N} ;;rod ;;coin ;;small key ;;scub ;;elec 20 ;;flash ;;lar k ;;combo X;XN};Table of ExitsX;X;$FF=noexit # = rooms&X;0EXITAB ===: =;;0 outsideD ===N =;;1 entraN}nceX ===b =;;2 receptionl ===v =;;3 conference ===  =;;4 kitchen ==N}=  =;;5 security ===  =;;6 experiment === =;;7 storage === =;;8 N}storage  === =;;9 animal  = = = =;;a west end   ===  =;;b hallway  = ==N}* =;;c cafeteria4 = ==> =;;d stairsH ===R = ;;e stairs\ ===f =;;f officN}ep ===z =;;10 chem lab === =;;11 x-ray lab === =;;12 security ==N}= =;;13 stairs === =;;14 computer === =;;15 photo lab === =;;1N}6 storage === =;;17 security ===  =;;18 stairs$ ===. =;;19 office8 =N}==B =;;1a securityL ===V =;;1b storage` ===j =;;1c electronict ===~ =N};;1d small room ==!= =;;1e tunnel === =;;$21 out!  === =;;$20 cageX;N}X;Flag TableX;F1 ;;desk R2 lockF2 ;;lasers R5 onF3 ;;vend mach R4F5 ;;plant Rd key F6 ;;apN}e alive R9F7 ;;desk R1F8 ;;cabinet R19(F9 ;;box - gas2FA ;;picture moved<FB ;;safe RfFFC ;;caN}binet movedPFD ;;elect. floorZFE ;;wear scubadFF ;;doornFG ;;x-raysxFH ;;wear gas maskFI ;;apeN} in cageFJ ;;robot aliveFK ;;shoot msgFM ;;used combinatFN ;;used large keyX;SAVEN;end of savN}eX;X;Tables of offsets intoX;the table of ExitsX;Multiples of 6X;EXOF == == =$=*=0=6 N}<=B=H=N=T Z=`=f=l=r" x=~===, ====6 ====@X;JX;Verb Table - only theTX;firN}st 3 letters are used^X;hVERBT AGETDROOPEREAINSAr AWEATURFLIEXAWAVSHOA| ATAKLIFMOVPUSUNLPREA APUTAX;!X;NN}oun Table - first 3 lettersX;NOUNT ABADNAICARPADDISA AGUNBATBOXGASFOLVIAA AFORMEMMICPRORODCOIA ASMASCUELEN}FLALARCOMA AKNOHOOSWIROBCABDESA ASAFSLOCAGLEVLOCVENA AMACAPEDOOPLAREDBLUA APICENLDRIHOLALLAX; X;ObjectsN} X; OB0 AbadgeA=& OB1 AnailfileA=0 OB2 AcardA=: OB3 ApadA=D OB4 AdiskA=N OB5 AgunA=X OB6 AN}batonA=b OB7 AboxA=l OB8 Agas maskA=v OB9 AfolderA= OBA AvialA= OBB AformulaA= OBC AmemoA=N} OBD AmicrodotA= OBE AprogramA= OBF ArodA= OBG AcoinA= OBH Asmall keyA= OBI Ascuba gearA=N} OBJ Aelectronic deviceA   OBK Aflashing ballA= OBL Alarge keyA=!OBM AcombinationA= !X;!X;Table N}for the object names !X;*!OBJNAM OB04! OB1>! OB2H! OB3R! OB4\! OB5f! OB6p! OB7z! OB8! OB9! OBA! N}OBB! OBC! OBD! OBE! OBF! OBG! OBH! OBI! OBJ! OBK! OBL" OBM OB7z! OB8! OB9! OBA! L[YdX;SAVE#D:SPYPT3.M65nX;xX;-----------------------;X; Cursive Character Set ;X; for Secret Agent ;X;--R}---------------------;X;X;X;This is the first halfX;of the Character SetX; CHSET === ==R}= === === =f=f=f === =f==f" f==f=, =>=`=<6 =|==@R} =f=f=J 0=f=F=T =6==8^ o=f=;=h ===r ===| === === R}=p=8= =8=p= =f=<= <=f== ===~ === === ===0 ==R}=~ === === === == = 0=`=@= =<=f=n& v=f=<=0 ==8=:R} ==~=D =<=f= N =0=~=X =~= =b  =f=<=l = == = =R}8= === === === ===0  = ==0 = ==  ==~=* =~==4R} `=0== > =0=`=H =<=f= R ===\ =<=f=nf n=`=>=p ==7=gz g=o=;= R}==3=s ~=s== ==3=` `=p=?= =<=f=c c=c=~= ==3=` |=`== ==R}3=` |=`=`= ==3=` n=c=>= =c=c=c =c=c= === ===$ ===.R} s=6=<=8 =g=n=|B |=l=o=L =p=p=`V `=c==` =c=c=wj =k=c=t =|=v=v~ vR}=v=w= ==6=c c=6== ==3=3 >=0=0= ==6=c c=o=>= =<=6=6 >=3=R}3= ==3=` >=== =?=l=l  = == =3=3=3  3=c=>= =c=c=c 6=<==(R} =c=c=k2 =w=c=< =c=f==== === === === === ==="R} ===, ===6 ===@ ===J ===T ===^ 8=p==h ==p=8r R}===| === =?== === === === === === ==R}= === === === === === ===X;X;This is the fourth paR}rtX;of the Character Set&X;I skipped the control0X;characters:X;DCHSETNX;X ==<=~b ~=<==lR} ===6v v=v== =`=`=| f=f== ==<=p `=p== ===> f=f== =R}==6 6=== ==8=0 >={== ===3 s===< =`=`=` |=f==  ===R} =~==  ===* <=o==<4 =0=0=>> 6=<==H ===R ===\ ==3=fR} ===p ==|=fz f=f== ==<=f g==<= ==|=f f=|==` ==>=f f=R}~== ==`=~ f=f== === 3=c== = =?=   === ==s=3  3=3==R}  ==6=6  6===$  ==c=c.  k===8  ==3=~B  n===L  ===V  =6==` R} ===fj  [===>t  ==<=~~  ~==<=  ===  ===  =~=p=|  n=f==  =R}=8=x  8===  ===  ===<=  ===  ===  =~=p=|  n=f==  =P4dX;SAVE#D:SPYPT4.M65nX;xX;-------------------;X; Secret Agent ;X; By: Barry Kolbe ;X; Disk I/O routV}ines ;X; (c) 1988 ;X;-------------------;X;X;CIO equatesX;ICCOMB;;commandICBALD;;bufferV} address ICBAHEICBLLH;;buffer length ICBLHIAUX1J;;type access AUX2K CIOV"X;, SVEGAMV} CLOSE1;;close IOCB 16 Q>;;open@$>;;channel 1J PICCOM9TQ>;;to write^ PAUX19hQ>4FNAM;;file namer PICBAL9|V} Q>5FNAM PICBAH9Q> PAUX29 CIO;;open it!GIOERR;;show errorQ> ;;put bytes$>;;channel 1 PICCOM9V}Q>4SAVST;;startingPICBAL9;;address Q>5SAVST PICBAH9Q>4SAVENSAVST PICBLL9;;number ofQ>5SAVENV}SAVST PICBLH9;;bytes& CIO;;save data0GIOERR;;woops!:IODONPRINT M2;;'done'D CLOSE1;;close fileN:XIV}OERR CLOSE1;;close IOCB 1bPRINT IOMSG;;say 'Error'l:vX;CLOSE1$>;;close IOCB 1Q> ;;close commnd PICCOM9V} CIO:X;!LOADGAM CLOSE1;;close IOCB 1 Q>;;open$> PICCOM9 Q>4FNAM PICBAL9 Q>5FNAM PICBAH9V} Q> PAUX29  Q>;;read* PAUX194 CIO>IOJGIOERR;;'Error'HQ>;;get bytesR$>\ PICCOM9fQ>4SAVST;;starV}tingpPICBAL9;;addressz Q>5SAVSTPICBAH9;;get numberQ>4SAVENSAVST PICBLL9;;of bytesQ>5SAVENSAVSTV}  PICBLH9 CIOGIOJ;;'Error'X;X;Reset proper MessageX;QFJ;;robot dead? FRBK;;yesQ>4D1A;;say 'gV}uarding' PROBROM Q>5D1APROBROM$ !IODON.RBKQ>4D1F;;'mangled8PROBROM;;robot'B Q>5D1FLPROBROMV !V}IODON`X;jFNAM AD:SPY.DATA=EOLtIOMSG AFile error. A=D1F;;'mangled8PROBROM;;robot'B Q>5D1FLPROBROMV !T@dX;SAVE#D:SPYPT4.M65xX;X;-------------------;X; Secret Agent ;X; (c) 1988 ;X; by Barry KolZ}be ;X;-------------------;X;X;Table of Verbs (Commands)X;CMDTBL DGET;;get DDRO;;drop DOPE;;openZ} DREA;;read DINS;;insert DWEA;;wear DTUR;;turn DFLI;;flip" DEXA;;examine, DWAV;;wave6 DSHO;;shoot@Z} DGET;;takeJ DLIF;;liftT DMOV;;move^ DPUS;;pushh DOPE;;unlockr DPUS;;press| DINS;;put ($12)X;X;TablZ}e of Room DescriptionsX;DESTAB D0 D1 D1 D3 D4 D5 D1 D7 D8APEROM DE DE D5Z} DC& DD0 DE:SAFROM DFD D10N D11X D12b D13l D14v D15 DFAKE D17 DE D19ROBROZ}M D1A D1B D1C D1D DFAKE DFAKE DFAKEX;X;Room NamesX; R0 AOutsideA=R1 AEntranceA=Z} R2 AReception areaA=*R3 AConference roomA=4R4 AKitchenA=>R5 ASecurity areaA=HR6 AExperiment rooZ}mA=RR7 AStorage roomA=\R8 AAnimal roomA=fR9 AWest end of hallwayAp zRA AHallwayA=RB ACafeterZ}iaA=RC AStairwellA=RD AOfficeA=RE AChemical LabA=RF AX-ray LabA=RG AComputer LabA=RHZ} APhoto LabA=RI AElectronics LabA=RJ ASmall roomA=RK ATunnelA=RL ACageA=X; X;MessagesXZ};XNOR ANorth, A=XSOU ASouth, A=$XEAS AEast, A=.XWES AWest, A=8XUP AUp, A=BXDOW ADown, A=Z}LX;VYOUH AYou have: A`NOTH ANothing A=jYOUS AYou see: AtM1 AWhat?A=~M2 ADone.A=M3 AIt's notZ} here. A=M4 ATaken. A=M5 AYou don't have thatA A. A=M6 ADropped. A=M7 AYou can't carry A A[}anymore. A=M8 AYou can't go that A Away. A=M9 AThe exits are: A=M10 AYou see: A=M11 AYou alr[}eady have A Athat. A= M12 AYou see nothing A Aspecial. A=M13 AIt's open. A=(M14 ANot yet. A=2[}M16 AIt won't fit. A=<M17 AYou are wearing theAF A scuba gear. A=PM18 ANothing happens. AZ dM19 AYou [}can't do thaAn At. A=xM20 A'The blue button tuA Arns off the lasersA A.' A=M21 AThe title is: The A[} AEffect of Bio-AgentsA A on Mammals. A=M22 AIt says: 'Tighten A Asecurity on all flA Aoors.' A=M2[}3 AYou can't read thaA At. A=M24 AYou can't get thaA At! A=M25 AYou can't open tA Ahat. A=M2[}7 AWhat for? A=M28 A.. Click.. A="M29 AThe safe opens. A=,M30 AThere's an ON/OFF sA6 Awitch on it. A=[}@M31 AYou are wearing theAJ A gas mask. A=TM33 AYou missed. A=^M34 AA laser blast from Ah Athe robot a[}tomizes Ar Ayou! A=|M35 AThe robot fires, butA A misses. A=M36 AThe ape crushes yourA Abones.. Crack.[ }. A=M37 AThe ape is charging A Aat you! A=M38 AThe floor is electrA Aified. Zzzit.. A=M39 AYou c[ }hoke as poisonA Aed gas seeps into yA Aour lungs! A=M40 ADeadly radiation melA Ats your flesh. A=M41[ } AYou failed your missA Aion. A=M42 AYou escaped from theA A lab. A=&M43 ASuddenly laser burstA0 As [ }cut through you. A: DM44 AYour mission was sucAN Acessful. A=XM45 AWater floods the comAb Apartment. A=[ }lM46 AYou drown in the murAv Aky waters..blub.. A=M47 ASecret Agent: MissiA Aon 1 A=M48 A (c) 1988 [}by BarryA A Kolbe A=M49 APress START to try A Aagain. A=M50 AShoot at what? A=M51 AThere's no ro[}om. A=M52 AThe escaping viurs aA Attacks your body. A=M53 AA steel door blocks A Athe east door. A=[}M54 AIt has a gravity conA Atrolled switch. A= X;X;They Gotcha! X;*DEADTAB M34;;robot4 M36;;ape> M3[}8;;floorH M39;;gasR M40;;x-ray\ M43;;lasersf M46;;floodp M52;;drop vialzX;X;Descriptions of RoomsX;[}D0 AThe entrance to the A AHanover-Tyler reseaA Arch facility lies toA A the west. A=D1 AA desk is in th[}e coA Arner of the room. A D3 AThere is an oval taA Able with chairs. A=D4 AA food cabinet is A A[}on the east wall. A= D5 AHanging on the wallA  A is a metal cabinet A  Awith a slot. A=$ D7 ARed and blue b[}uttonA.  As are near the doorA8 A. A=B D8 AShelves make up theAL  A south wall. A=V D9 AAn albino ape is in [}A`  Aa cage. A=j DC AThere are tables, At  Achairs, and a vendA~  Aing machine. A= DD AA decorative plantA [} A sits in the corneA Ar. A= DE AThere is a knob onA  A the wall. A= DF AA scenic picutre hA  Aangs o[}n the east waA  All and a table liesA  A to the west. A= D10 AChemicals lie on A  Athe tables. There'sA  A [}a switch by the doA  Aor. A= D11 ALooks dangerous iA  An here. A= D12 AThere is a hole A(  Anear the west[} doorA2 A. A=< D13 AThere is a coat haAF  Anging on a hook. A=P D14 AThere is an ATARI AZ  A130XE computer, [}drivAd  Ae and printer here.An A A=x D15 AA photo-enlarger rA  Aests on a lab tableA A. A= D17 AA door[} in the eastA  A wall. A= D19 AThe furniture consA  Aists of a desk and aA  A cabinet. A= D1A AA robot g[}uards theA  A exits. A= D1B AA 36 inch high cabA  Ainet is in the corA  Aner. A= D1C ALots of resistersA[}  A and chips clutter A  Athe tables. A= D1D AThere is a blue buA"  Atton by the door. A,  6 X;@ X;These r[}eplace the regularJ X;descriptions when the 'ape'T X;and 'robot' are eliminated^ X;h D1F AA mangled robot lAr  Aies o[ }n the floor. A=| D20 AA dead ape lies A  Aon the floor. A= DSAF AThere is a safe herA Ae. A= X; !X;No [!}description on some rooms X; DFAKE  A  Aon the floor. A= DSAF AThere is a safe herA Ae. A= X; !X;No X*dX; SAVE#D:SPYPT6.M65nX;xX;------------------;X; Secret Agent ;X; By: Barry Kolbe ;X; Screen Handlers_#} ;X; (c) 1988 ;X;------------------;X;!X;Graphics 0 display list withX;a Status Line at the topX;_$}GDLST p=p=`=B PLACE;;status line =B GR0 ==== ==== ====" ==_%}==, ==A6 GDLST@X;J X;Positions of the Graphics 0TX;lines in increments of 40^X;used by the Print routine_&}hX;rX;Low bytes|X;GL =(=P=x= ===@=h ====0 X===Ю = =H=pX;X;High_'} bytesX;GH ==== ==== ==== === ===X;X;The Status Line_(}X;&PLACE A A0 A SA: ACORE: 0 ADX;NX;Tables for converting fromXX;ASCII to Inter_)}nal CodebX;lA2I @== =`vX;X;Special Keys CodesX;X;a-z :The Raw Key CodesX;from 764 (CH = $2FC)X;_*}KEYC ?===:=* 8===9= = ==%=#=  =/=(=>=-  ==.==+ X;X;SPACE/./,/DEL-Bsp_+}/EOLX; OKEY !="= =4=  v X;*X;The ASCII equivalents4X;>ASCK  =.=,=~=H }RX;\JIFF5;;just w_,}aitfQ>;;a jiffyp PRTCLOKzWAITJ1QRTCLOK FWAITJ17:X;CLRGR0%>;;clear the C;;screenCLRSCPGR08_-} PGR08 PGR08 PGR083 HCLRSC HOME;;reset cursor:X;X;Get Screen Position$X;from the GL/_.}GH tables.X;8POSITION%ROWCRSBQGL8;;get low offsetL,VO>4GR0;;add to start`PSL;;of screenjQGH8;;memoryt O>_/}5GR0~ PSL:X;X;Scroll Screen Memory Up X;One LineX;SCROLLQROWCRS;;need toR>BOTLIN;:scroll?DSC_0}MOVEDN;;noQ>4GR0;;top linePSCR Q>5GR0 PSCRQ>4GR0( ;;next line  PSCR2Q>5GR0(  PSCR2($_1}>;;counter2SCMOVE%>';;move 40 bytes<SCMOVITQ@SCR27;;upF P@SCR7P 1;;done?ZISCMOVIT;;nodQSCR2;;reset pntr_2}sn PSCRx QSCR2PSCR,;;add 40 toO>(;;from pntr PSCR2 QSCR2O> PSCR22(>;;23 lines?_3}DSCMOVE;;no"ROWCRS;;cursor up 1 "ROWX!SCROLL;;need more?SCMOVEDN:;;doneX;#X;Convert ASCII to Internal _4}CodeX;"ASC2IC BITER, LA2I96$X2@:JX;TBITER5;;save byte^ U?;;X16hU?rU?|U?M>;;type of char&X2_5};;save x >;;offset 7;;restoreM>:X;X;Get a KeyX;INPKEYQCH;;get keyR>;;none pressedFINPKEY;;_6}yup$>;;reset&CH $>;;a-z?IN1RKEYC9& FIN2;;yes00:IIN1D$>;;special keyNIN3ROKEY9X FIN4;;yesb_7}0lIIN3vGK2IN4QASCK9;;get ascii!CLKER;;make soundIN7!INPKEY;;get keyX;IN2A;;see if caps ,;;neede_8}d OCAPS !CLKERX;K2R><;;caps key? HIN7;;no QCAPSR>a;;lower? FIN5;;yes  Q>a;;flipIN6PCAPS;;sw_9}itch it !INPKEY;;get a key*IN5Q>A;;upper case4HIN6>X;HCLKER%>;;make a keyRCK1'CONSOL;;click\$>fCK_:}20pHCK2z1ICK1:X;X;print with word wrapX;uses PBUF as outputX;Enter with X, Y as LowX;and High byte_;} of AddressX;PRINTE&ML;;X =Low'ML;;Y = High%>;;if 1st byteQ@ML7;;is $FF noR>;;message,so HPE7_<};;quit : PE7 POSITION;;get screen$ %>;;position-set. 'EOLF;;end flag8 PE3Q@ML7;;get byteB PPBUF8;;put in buff_=}erL 3V R>;;end of msg?` HPE1;;noj #EOLF;;set flagt HSPLP~ PE1)>ENLIN;;at end of HPE3;;physical line? 1 S_>}PLPQ@ML7;;find space R> ;;for word wrap FGTSP 1;;back up HSPLP %>ENLIN GTSP3;;break SPCE'Y2;;save po_?}sition Q>;;set 0 as PPBUF8;;end flag C;;move pointer ,;;in message OML PML( DPE22 #ML< PE2%>;;lef_@}t marginF PE5QPBUF8;;get byteP FPE6;;end if 0Z  ASC2IC;;convertd P@SL7;;on screenn  JIFF;;wait a jiffx 3;;next_A} char HPE5 PE6 CR;;linefeed QEOLF;;end? HEDON;;yes !PE7;;do more EDON SCROLL;;see if scroll :;;done X_B}; X;Force a Carriage Return X; CR#ROWCRS;;next line Q>;;left margin PCOLCRS : X; X;Input Routine" X;, _C}INPUT POSITION;;get screen6 %COLCRS;;position@ 1;;back upJ Q>;;' > ' ;forT P@SL7;;prompt^ $>;;inputh &X1;;coun_D}terr Q>P;;max input| PMAXLEN QCOLCRS;;save current PCOLX;;position for QROWCRS;;del-bck spc PROWX POSITIO_E}N  SHOCRS;;show the cursor X; INLOOP INPKEY;;loop until R>EOL;;end of line FINDONE R>~;;DEL BCK SPC FDEL_F}ETE R>};;clear screen FSCLEAR $X1;;at end? (MAXLEN& EINLOOP;;yes-get EOL0 5;;save char:  PUTCHR;;onto screen_G}D $X1N 7;;get it backX R>`;;lower case?b DNOLO;;nol ;v S> ;;make it upper NOLOPIBUF9;;in input #X1;;buffer _H}!INLOOP;;more? X; INDONE$X1;;all done PIBUF9  ZAPCRS;;erase cursor  CR  SCROLL;;need to :;;scroll? X;_I} X;Clear the Screen X; SCLEAR CLRGR0 !INPUT X; X;Delete a character* X;4 DELETEQCOLCRS;;was there> RCOLX_J};;any input?H HDDEL;;yesR QROWCRS;;same line?\ RROWXf FNODEL;;yes no DELp  ZAPCRS;;erase cursorz "ROWCRS;;up 1 li_K}ne Q>';;right edge PCOLCRS !DHI;;show cursor X; DDEL ZAPCRS;;erase cursor "COLCRS;;back up DHI POSITION_L};;new position Q>?;;show cursor %COLCRS P@SL7 "X1;;1 less char NODEL!INLOOP;;get input X;X;Erase the cur_M}sorX;ZAPCRS POSITION$ %COLCRS.Q>8 P@SL7B:LX;V"X;Put a Character on the Screen`X;jPUTCHR5;;save itt_N} POSITION;;get position~7;;retrieve it ASC2IC;;to Int Code%COLCRS;;get columnP@SL7;;on screen#COLCRS;;nex_O}t column QCOLCRSR>(;;at right edge? HPCO;;noQ>;;yes-reset PCOLCRS#ROWCRS;;next line SCROLL;;scroll?_P}PCO SHOCRS;;show cursor: X;X;Show the Underline as a X;cursor(X;2SHOCRS POSITION<Q>?F %COLCRSP P@_Q}SL7Z: SHOCRS;;show cursor: X;X;Show the Underline as a X;cursor(X;2SHOCRS POSITION<Q>?F %COLCRSP P@\?