@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@W!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H  }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `8  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D8:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D8:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED697 FREE SECTORS COPYING---D8:COPY32.COMl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 144ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uE"DFLASDISKABh@@%@'Pd>;@,>6.' T}DISK #221 i +@1AR@CAYUA@gA U}@yA@dA@TAAR6-n]%6-F:A`,%AV$F:Aa,9%@V}@pM-@@&Q"Y%] s116,6,6,7,6,6,6,6,6,6,6,2,2,2,2,2,2,2,2,112,2xE%@'@e.%@(W}F:A`,E%@)F:Aa,a(( +(C( THE PAGE 6 LIBRARY](***************X}*****a((********************[0((The PAGE 6 Library consists of programs[(& collected from Users and User GrY}oups[/(' in the U.S.A, Australia and Gt.Britain[(& and to the best of our knowledge allZ/(' programs are in Z}the public domainA-@ @Z(ӠԠҠRAY@4!AU5-@@PRF:B2y[},"@A 6-@& A,% D:LAUNCHER D:INTRO.SYS DISK #221 \}&AV$P6-?:C:hL,,-C@P@"?AR&AV$P6-?:C:hL,,NTRO.SYSys D]}ISK #91 S?AR&AV$P6-?:C:P6-?:C:hL,,NTRO.SYSys DN100 REM ********************110 REM * *120 REM * NOTE Reader *130 REM * *140 REM *$`}E DFLASDISKABh@@2@'PPA @6d>;@,>6.' } for *150 REM * *160 REM * WORD SEARCH *170 REM * *180 REM * b$a}y *190 REM * *200 REM * Mark Glanfield *210 REM * *220 REM * (C)February 1993 $b}*230 REM * *240 REM ********************250 REM 260 OPEN #1,4,0,"K:":DIM X$(5400)270 TRAP 670:CHOICE=0:$c}DISKREAD=0:KEY=0280 GRAPHICS 2:GOSUB 710290 RESTORE 800:FOR X=0 TO 5:READ Y:COLOR Y:PLOT X+6,X+1:NEXT X300 COLOR 87:PLOT 7$d},6:COLOR 111:PLOT 8,5:COLOR 228:PLOT 10,3305 ? "}";" by Mark Glanfield (C) 1993":? 310 ? " 1.Read Notes 2.Run $e}program"350 GET #1,KEY:CHOICE=KEY-48360 IF CHOICE<1 OR CHOICE>2 THEN 350370 ON CHOICE GOSUB 450,660390 POSITION 0,23:? "P$f}rint to (S)creen or (P)rinter or (X)":GET #1,SORP410 IF SORP=80 THEN GOSUB 550:GOTO 280420 IF SORP=83 THEN GRAPHICS 0:GOSUB$g} 710:GOSUB 530:GOTO 390430 IF SORP=88 THEN 280450 IF DISKREAD THEN GRAPHICS 0:GOSUB 710:GOTO 530460 OPEN #2,4,0,"D:README.$h}NOW"470 GRAPHICS 0:GOSUB 710:POKE 82,0480 ? "Reading disk..."490 ? :? " Use CNTL-1 to stop/start scroll":? 500 FOR Z=1 $i}TO 5328:GET #2,CHAR510 X$(Z,Z)=CHR$(CHAR):? X$(Z,Z);520 NEXT Z:DISKREAD=1525 RETURN 530 ? X$540 RETURN 550 TRAP 670:? "$j}}":POSITION 0,22:? "Set the printer - please wait...":LPRINT :? "}":LPRINT X$:RETURN 600 STOP 660 ? "}";"Loading...":POKE 8$k}2,2665 RUN "D:DESCRIPT"670 CLOSE #2:CLOSE #5675 IF PEEK(195)=138 THEN ? "}":POSITION 0,22:? "Printer not ready":GOSUB 700:$l}GOTO 280680 IF PEEK(195)=170 THEN POKE 82,2:? "}":POSITION 0,21:? "No such file":GOSUB 700:? "}":GOTO 280690 ? "}";"Error..$m}.";PEEK(195):STOP 700 FOR DEL=1 TO 2000:NEXT DEL:RETURN 710 POKE 16,64:POKE 53774,64:POKE 82,0720 POKE 708,2*16+14:POKE 70$n}9,12*16+14:POKE 710,116:POKE 711,5*16+14:POKE 712,116:POKE 752,1730 RETURN 800 DATA 243,101,225,82,227,104,2*16+14:POKE 70$m100 REM *******************110 REM * *120 REM * WORD SEARCH *130 REM * *140 REM * Pro@p}gram Details *150 REM * *160 REM * by *170 REM * *180 REM * Mark Glanfield @q}*190 REM * *200 REM *(C) January 1993*210 REM * *220 REM *******************300 REM 31@r}0 REM *FOUR PAGES SCREEN RAM*320 REM 330 OPEN #1,4,0,"K:":POKE 16,64:POKE 53774,64340 DIM X$(2720)350 X$(1,100)=" WORD @s}SEARCH is a facility for finding those elusive words in letter puzzles. Squares and any ir"360 X$(101,200)="regular shapes@t} of up to 30x30 (wide/deep) in either ATARI 8K ROM or TURBO BASICs containing letters,"370 X$(201,298)=" blanks/numbers can @u}be easily searched. A DEMO mode can"380 X$(299,400)=" be viewed to see how each @}M) !"`3!3 L :::: :Lr:::IEL[::i:iIIL[:`:i::i,|}::L:`L{:w:w: C`L:L: D8:MEM.SAV: 8| 9 '9`L:L: D:DUP.SYS:̩ 8,}} x:ɀL: '9`88 |9Y:X: '9L); D8:DUP.SYS; 8::88 9 '98? :`;WL`; 9,~}Ln; ` :Y;Y;L;L;)} Setting Up ATARI 130XE Ram Disk; 9L; ; -9  ,} L;D8:; :9 :Y;L:,(7<, 6-@ $($&Z Ap(}%-@"J( S4}et the printer - please wait...M3S(}W3Z$X&((} Loading...(@@% D:DESCRIPT@4}@ZF:A,"A8(}0-@"F(Printer not readyP AZ AmF:A,"Ap4}*@@0(}B-@!S( No such file] Ac(}m A"(}Error...F:A,"&4}-@A  $9@@d'B7t@d9@%A@$@%@GA 4}@$@%@YAA{A@$@%@AAAR@$ 4}243,101,225,82,227,104 D:LAUNCHER{A@$@%@AAAR@$ 4+9:XSCROSCRCLDLISDLTITLMESSMCODCODSLINEGMESS8} d*******************n* *8}x* WORD SEARCH ** ** Program Details ** ** by *8}* ** Mark Glanfield ** **(C) January 1993** *8}*******************,6*FOUR PAGES SCREEN RAM*@JG#@@K:5@@dGB78}t@dT;A' ,^67@<A,.d WORD SEARCH is a facility for finding those elusive words in letter 8} puzzles. Squares and any irh67A<A,.dregular shapes of up to 30x30 (wide/deep) in either ATARI 8K ROM or T8}URBO BASICs containing letters,r}}67A<A,.b blanks/numbers can be easily searched. 8} A DEMO mode can|67A<A,.f be viewed to see how each of the four major types of puzzle is h8}andled. The colours can be changed67A<A,.d with the -OPTION/SELECT- keys when the program is first run. 8} The settings can be changed later if67A<A,.d desired. 8} Save and load functions are available67A<A,.f at convenient times to capture grids. 8} 1. SINGLE finds words||67A<A,.a hidden in any of eight directions - up/down/left/ri8}ght and diagonally backwards and forwards.67A<A ,.e 2. NO VOWELS i8}s like SINGLE but all the vowels are stripped67A <A,.d out of the grid. 8} 3. RESIDUE is the type of search where||67A<A,.a the location of a word in a list does not matter8}, the letters left over form the search word.67A<A,.d 8} 4. NINES - a word of nine letters67A<A,.d is scrambled and held in a 3 x 3 square. 8} A search stops67A<A,.d after a word is found, except in the RESIDUE op8}tion. A joystick controlled grid correct67A<A,.dion routine can be activated after the grid ha8}s been entered and prompts are placed on the screen to}}67A<A,.b assist. For grids more than a full screen i8}n size, a quadrant indicator is present to show which~~67A<A,.c part of the grid is currently being viewed.8} The RESIDUE~~67A<A,.c search will commence with grid entry. The 8}total word count in the list is asked for then words can~~67A<A,.c be put into the program one at a time. A 8}final opportunity to change the grid colours is then offxx67A<A,.]ered and the search begun by pressing STA8}RT. If there are no errors the grid will be solved.&zz67A<A ,._ 8} If a word is not found, the option to0||67A <A!w,.a edit the grid/list or lengthen the list becomes 8}available. Searching is always started from the:67A!x<A"w,.d beginning. 8} Some puzzles have a list of wordsDuu67A"x<A#g,.Z in which some of the entries do not exist. WORD8} SEARCH stops and identifies absent words.N67A#h<A$g,.d 8} WORD SEARCH is freeware.X__67A$h<A%5,.D 8}Mark Glanfieldbdd67A%6<A&,.I 12, The Courts MARGATElHH67A&8} <A&S,.- Kent CT9 5HPv??67A&T<A' ,.$ ENGLAND`8}!!*SET COLOURS, CLR SCRN RAM*6-F:AY,KAY'AA9AAKA8}R@--@'")Ap%- 6-?:Ap,*SET UP NEW DISPLAY LIST*-8}-@5")A6%- KA`'Aa@9@@K@AI8}*SET UP DLI* 5-@1"1A6%A(%5  9AA('A@9BBA8}*4""*CREATE TITLE - WORD SEARCH*>H--@")B%- R'B@t'B8}@t\f*CREATE MESSAGE*pz--@9")B%- *SET UP MCODE TEXT PRINT*8}5-@D"1A6%@d%5 AY6-?:AA'`?@@AA0@BCB(D5= }EFGmmHIJK@QL@MA$NAUOPQRST= }UVWXYZ[\]ERR^_`aB7bc@d= }Ae@fgBhiAgj@ekA`lA6m@n ((op>q@ rAhs@)=}t@!uvwx ************************ Word Search Program ** by Mark Glanfield =} *(* (C) February 1993 *2* PD Freeware *<***********************FP26-F:@H$A$,&=}"@226-@Z:6-@6-F:AY,0AY: AIpd6-F:B2y,$n*LENGTH TEST*x*=}&B:, 6-@* A`;%%B:,%@*&B:,16-@; A`,%B:,%@"6-@=}, A`='%B:,%@*%B:,%@36-@= A`,%B:,%@"6-@, A`;%=}&B:,*%B:,%@16-@; A`*&B:, 6-@* A`9#&B:,*&B:,=}/6-@9 A`$*GET ELEMENT*"6-@:7%+&%@,$,,"$,)6-@:7%&@%+&%@,$,=},,$ 6-@:7%&@%$,, $,)6-@:7%&@%+%&@,$,,,$"6-@:7%+%&@,$,,"$,)6-@:=}7&%@%+%&@,$,,,$ 6-@:7&%@%$,, $",)6-@:7&%@%+&%@,$,,,$,*MARK ELEM=}ENT*6,)%%+&%@,$@2%A`,$@63%%&@%+&%@,$@2%A`6$J*'%%&@%$=}@2%A`*$T63%%&@%+%&@,$@2%A`6$^,)%%+%&@,$@2%A`,$h63%=}&%@%+%&@,$@2%A`6$r*'%&%@%$@2%A`*$|63%&%@%+&%@,$@2=}%A`6$*FIND SIN VOW RES*(}Searching for  ) ( ( of -@-=}@6-@:7%$,,'@:7@<@,,"' A   $-@B:,GGA A0=}A@APA`ApAA7<,0>:,'$ 6-@A*MARK SIN/RES*=}-@B:,GGA A0A@APA`ApAAGGAA A0A@=}APA`ApA& 0 **(' A&:$D*MARK VOWEL*N 6.X-@B:,b=}6-@:7<,,lGGAA A0A@APA`ApAv  **(' A&$= }*RESTORE SIN VOW RES*(6- A-@B:,GGA A0A@APA`Ap=!}AA6-&AGGAA A0A@APA`ApA ( $" ="}6-6-"$*FIND NINES*(}Searching for !6-(! A( /-@=#}&@/-@&@3"@ !A`A(3Aa@  6. A * 6.46-=$}@:7%$,,>%%$@2%@2H6-?:C:,:@2,   $(*DELAYS*26-A6-=1}A <-@ $F-@@ $P*CREATE WORDLIST*Z'(}How many words'6-@d=2}" 6.""Apn8!A$(} Limit is 100. A08 Apx -@(}W=3}ord 6-@ 8(4)7@<@,4 )B:,!.(8 A (  Ap-@B:,=4}  68,-B:,67B:,%@,. 16-@6-@'6-@1 AA 6-F:%@3,=5}%@3%A%6-@ AW%6-%@3*SLICE UP MENU$*2(} to stop sear=6}ch( A02 A0"6-@6-@,  6.6 -@6.7<%8,&@,J 6.T * A=7}^6-%8,h Ar3*F:Ad,"@(')6-3 AW|1F:Ad,"@(''6-@1 A=8}@l(-(}Word  -  not FoundC((Any Key)UAdAUb)@l A@6-=9} ) A2P  )6- AW(}Word is +6-@-@+-@=:}6-F:%%$@2,` @Y%67<,.>:%@2,36-%@?!@0P( impossible!S'V'` A  =;} (( (Ctl-S) A( (Any key)"AdAU")@'"@*6-=<}' AW6-@ AA &*ALTER RESIDUE*0 A2p:R@(H(}% 1.Save 2.Correct G==}rid 3.ContinueR ApD[[(}O 1.Save 2.Correct Grid 3.Correct List 4.Extend List 5.Make List 6.SearchN6-=>}@6-X4@@'AdAU4)@b!! @I)!@TAPlY (*4"@I=?})"@Q)"@R)"@TO(}Make list first...Y A0v@ "@I**)"@I*(* AA 66-@=@}@ A@#"@P A'# AP"@Q*(Ap?"@Q** A )6-@56-@=A}? AP3"@R** A!)6-@3 AP^"@S*?(}%Sure? Cntl- destroys current list...Q=B}AdAU^)@##"@S**@%AP1"@S*6-' Ap1 AP7!"@T=C}**)"@T**-6-7 A AP*REVIEW LIST*6-@-@6.7<%8,&@=D}, 6.6-%8, ;$(}Any key or RETURN to end'(;(Word  - >AdAU")@.=E}"AU46-> A"    A" **EXTEND LIST*4>(}How many!6-@%1"4'> AP>=F}A%!A-(} Limit is A&7 A0A A!H-%@%R;(} Enter word +4)B:,=G}!1(; A!0\*-@B:,  * A!`f p(}Word z68,-B:,67B:,%@,.=H}  6-%$&(} Which one"6-@&")!A" 1"@6-@'6-@=I}1 A"6-@-@&@6-%8, 6.7<%8,&@,""(}Enter new w=J}ord () C6-@37@<@,4 )B:,!9(C A#   6-B:,&8,$ B:,!8,6-@=K}. 68,-B:,8 E#-B:,%@6@767%<%,.7<,; E A#B (-&B:,$67%<%,.7<,=L}( L -B:,&@V ''67%<%,.7%@<%@,`  j (6.7@:, %%$@2&@2    -@ "=P} 68,-   $ *NOW WHAT?*( 0((} Not Found&6-0 A02 YA@ +A=Q}@ 5 A0GAAYAA< //(}# =Continue Ctl-olour ChangeF .(.(# Ctl-dit Ct=R}l-inish Ctl-iewP &AdAU")@& Z M!"@2**)"@2**-6-@96-C A=S}M Apd ?"@2**6-@+6-5 A ? Apn "@2 Apx 7"@*6-@=T}' AW-(}7 A&  K!"@**)"@**-6-@7 ApA A'K AP ="@**6=U}-@) A 3 A'= AP #"@ A'# AP "@% Q1"@"**!@)"@"=V}**!@=6-G A)Q A&  A&@ *L/R SCREEN MOVE* -@@ HA7%@=W}$F:A7%@$,%@yAe%@$F:Ae%@$,%@} $ -@@ HA7%@=X}$F:A7%@$,&@yAe%@$F:Ae%@$,&@} $ *EDIT GRID* 6-@6=Y}-6- !@  +!@!A`A(+ A(0 @A`'Aa@<F:A@,"=Z}@@  ''%%$@2@:7%$,,%A` (}Use joystick button" 6-6-, /+%%$@=[}2@:7%$,,%A`/ 6 z"@*R:,"@.6-@<6-&@F ApR"@dA`=\}vAa@z @ o$&@*R:,"@06-@>6-%@H Apg"@ *F:A@,"=]}k o J |$&@*R:,"@06-@>6-%@H ApT"@ fA`A(xAa=^}@| T m"@*R:,"@.6-@<6-&@F Ape"@*F:A@,"@i m ^ O-=_}*R:,"@*T:,"E%%$@2O ABh ]$(}Done? (Any Key or Y)6AdAU=`}C)@I(}]@A(@r L"@!A`3Aa@HF:A@,"@L | =a}"@**$ "@$ A(P *SECTOR?* (}Press to Exit =+R:,"@*F:A`=b},"A(=A` G5!@*R:,"@*F:A`,"GA`A( 95!@*R:,"=c}@*F:A@,"9  /+R:,"@*F:A@,"@/  *QUAD ICON* %%6-F:A`,%AV$F:A=d}a, 7+F:A`,"*F:A@,"7A 7+F:A`,"*F:A@,"@7A 7+F:=e}A`,"A(*F:A@,"@7A 7+F:A`,"A(*F:A@,"7A  $ T:=f},"$& A)0 *RANDOM*: 6-?:C:,<<,D 06-F:A,!6-F:A,06-F:A,N @:7<,,,=g}X B7ab *SOUND?*l -@@6@v 2@@  AP  =q}?b********* b* PAGE 6* b* DISK * b* #221 * b********* b%DOS SYSb*)DUP SYSb SINTRO SYSb _TITLE SYSb^LAUNCHERLSTbvAUTORUN SYSb wRAMDISK COMb+README NOWbLAUNCHER b8DESCRIPT bSEARCHER b6oDESCRIPTLSTbSEARCHERLST %%2 $ *RESTORE GRID* A2 (A30 (}Please wait... =r}-@-@ 6-@:7%$,, a"@B%A367%$<%$,.>:@2,W%%$@2@:7%$,,&@=s}2a A3  %%$@2&@2     (}6-$ *ERROR HANDLER* . A3P(}A=t}Y.6-F:A, OOA7A7PApA@A#A!A4A4pA * V5(}"Unforseen=u} program failure - error V( Ctl-S to restart4 $)@$@A3> %H AYR 0F=v}:A,"Ap#@&'0 AB \ %"Ab%(} Disk fullf T"AD@(}$Protected/Unformatt=w}ed Disk/Open DoorJ A0T A0p -"A8-(}Turn on the drivez (@' A0((AP =x} AA  ("Ap((} No such file D"AD:(}Drive door open or format diskD A0 -=y}"A8-(}Turn on te drive 0"A60(}File not appropriate I6-6-'6-=z}2@5'? A0I A50 *SET UP GRID* *@( (}* A5P ,,(} ***Demonstr={}ation Mode*** 36-6-'6-36- (  //(&1.Single 2.No Vowels 3.Residue=|} 4.Nines ..(" Hold down ESC to halt DEMO4@@'AdAU4)@"@I6=}}-@"@P6-@$"@Q6-@."@R6-@8!! @I)!@RA5B=~}56-@6-@+6-@5 A8@L--(}! LOAD grid (0-9)? (Else any key)V"AdAU")@=}`!! @H)!@WA7j56-@6-@% AG)56-@t A8@~(}How Wide =}(Max=30)6-@5%")!@0)* @+(5 A7 (}How Deep (Max=30)6=}-@5%")!@0)* @+(5 A7P ..(}Grid is  across by  down,(=},(!Is this correct? (Space Bar or N)&AdAU")@& #"@x)"A# A7@2=} A8 AYp APP / (*(A@/AA'A`'Aa@ =}!6- A9( 6-2*CENTRE GRID*<* @ *6-P:+@&,'@,F2 @ 26-@2$P:+@=}&,'@,P 6-%%Z A$p(A`d * AP AWn AH` A@0x(}=}Enter CharactersBB-@-@5+%%$@2@:7%$,,&@25 A@ AC=}#*"@ #A`A(   ( A2p@A`'Aa@<F:A@,"@=}@ (} Press  F:B2y,@A@`--(}!Any corrections? (Space Bar or Y)"AdAU=}")@#"@)"A!# A@@2A@)ApAAY(7(}Save g=}rid as... 0-9 (or N)A AA@",,(} Save this grid? (N or Space Bar),L6-@!AdAU.)@L"=}@x)"AAB060AY0(* @H)!@WAA @(6-&@HJ)AB T AG=}^d@AYC(} Exists already. Overwrite? (Y/N)P)@d"@AB h  %r AA |=}367@<@,.=:,)AY3 AE  %*A*AP6-$ Ap=}*GET CHARACTERS*(} Use Keyboard"AdAU")@#"A& AD# AC0(=}*"@2&6-@B%A0 AC"@2AC55 @H)!A")!@W* @eACD!=}@* A#0(}Press CAPS key: A0D ABUA"@e*)"@i*)"@s*)"@y*)"@*=}K ADpU AB0!@G* @X*& 6AE`0 AB6-@& 067%$<%$,.>:,:%%=}$@2&@2D&""@ *F:A@,"& N4"!@*F:A`,"4A`A(X&""@*=}F:A@,"@& b$l*WARNING*v)(}This is a vowel!& A0)$*BACKSPACE*/"@*"@=}%6-@/ AE C"@*!@%6-@36-&@96-C AE 6-@6-&@=}%%$@24" @ *F:A`,"A(4A`&" @ *F:A@,"@& *&"*!@=} *F:A@,"* $*SAVE GRID*J6-@6-@'6-@J67@<@,. D:GRIDINFO.=}- 6-B:,6-P:'AV,-6-&$AV16-B:,!6-P:'AV,16-&$AV//&@HAGAH=}AHAH  7*@*@**@7*@ 6-B:,6-B:, b*@*@=}**@7*@D*@HU*@b*@**-@&*@@:7<,,* 4V-@=}A+*@8,/ =-@R*@@:7<,,V >.@AY (}$. AYpH$=}R*LOAD GRID*\6-@6-@'6-@J67@<@,. D:GRIDINFO.X6-&@H&@HAG=}AHAHAH f7)@)@*)@7)@pb)@)@*)@7)=}@D)@HU)@b)@z'6-%AV$'6-%AV$0-@)@,67=}<,.>:,0 b-@A()@168,-5 C-@P)@^67<,.>:,b @=}$*READ/WRITE FILES*g6-@267@<@,. D:GRIDINFO.@6-&@HdAGAHAHAH =}g$*67@<@,.SI' AH0*$*67@<@,.VO' AH0*$*67@<@,.RE' AH0=}*$67@<@,.NI67@<@,.=:,@$*PRINT GRID TO SCREEN*=}6-P:C:,'AV,6-C:,&$AV767@3<@3,.>:,767@4<@4,.>:,6-C:,%@3$6-P=}:'AV,.6-&$AV8767@F<@F,.>:,767@G<@G,.>:,B6-%@36-@2&L6-?=}:C:,<<<<,V$`*INITIALIZE*j]];A 0,;@ ,;@t,;@,;A0,;@ ,;@0,;@=}0,t&&;@0,;@ ,;@0,~6. cS6.IATARICLOADCOLORDATAEDITEXITKILLLOADLOCKROMSEARCHSERI=}ALSIXSTOPTOOLUSERWORDc6. COLORDATA;@,\\6.RhhhhhhhhhѦ͠ЩϽiϥ=}eѨХ`9A, A3P+@)A A;AAMAAY6-@=}e6-q6-A}6-6-@@@K:_6-A16-A'p'6-A'`36-=}A0@G6-AU$AVK_6-A$AV'@@d'B7t@d'A1AU'AR@=}  $6-6-'6-36-?6-K6-W6-c6-o6-=}{6-6-%%6-F:A`,%AV$F:Aa,%%6-F:@,%AV$F:@,G%@A(%@=}3%@@G%@!@ AY*SET UP/DO DLI*;@$,(""6.H)i ԍ)iƍ=}h@26-P:C:,'AV,<6-C:,&$AVF<AA*6-F:BB,<BBAP!((}!=}(Please wait...Z9A6A'A7A9A8Ad9AdA'AeA9Af=}An *DLIs*x% #AY!-@@%"WA6%@$@p;A`%@$@pWA%=}@$@pEA7%@$/Aa%@$EA%@$WA8%@$AU;Ab=}%@$AVWA%@$AW -@@"WAd%@$@p;A%=}@$@pWA%@$@pEAe%@$/A%@$EA%@$WAr=}%@$AW;A%@$AXWA %@$AY 'AiAV'ArAV=}*TEXT WINDOW DL1+DL2*%-AA"!% %-A'A5"!% (AT`*TURBO=} FIX*-@@"WA8%@$A;Ab%@$AWA%@$A,WAr=}%@$A;A%@$AWA %@$A6 @KAiA'ArA9=}AAKA)AJ*CLEAR SCREEN*T;@@,^226.(hhhɺ̪ͩ`h=}*CHANGE LETTER*r;A(,|uu67@<@,.Zhhhhh̭ 0Rͭ 0)i 0Υ )=}iЭЍ 0AA67@<A(,.& ϥ )iЭЍ`*START SCREEN*&&;@(,=};A ,;A3, 6.P!67@,.!67@,.&&6.72@3!#by-ark'lanfielduu67@<@=},.ZhhhhhhhР B0ZR 0QϽ ϥFF67@<A3,.+ =}i Q٩ ХiƠ/m`6-%@%6-@ 6-P:C:,'AV,6-C:,&$AV%C:,=}%@h%C:,%@i%C:,%A"%C:,%A#67B:,%@,.6-?:C:, AX@H*CLEAR GRAPHICS SCREEN*R 6-@6-?:C:,<, $\*DL=}IST DATA*f 0,32,64,96,128,160,192,224p 192,224,0,32,64,96,128,160z66,96,159,2,2,2,65,0,666,96,159,2,2,2,65=},128,6*DATA FOR DEMO GRID*MM83,85,83,69,82,73,65,76,84,73,88,69,68,73,84,76,79,67,73,82,65,84,65,76MM80,79,83,8=}7,79,82,68,73,77,80,82,79,76,79,67,75,85,84,76,69,67,77,82,72''5,5,5,4,4,4,4,4,4,3,6,6,3,4,4,4,4 D:SEARCHER9,83,8<w 1. SINGLE finds words"420 X$(703,799)=" hidden in any of eight directions - up/down/A}left/right and diagonally backwards and forwards."430 X$(800,900)=" 2. NO VOWELS isA} like SINGLE but all the vowels are stripped"440 X$(901,1000)=" out of the grid. A}3. RESIDUE is the type of search where"450 X$(1001,1097)=" the location of a word in a list does not matter, the lettersA} left over form the search word."460 X$(1098,1197)=" 4. NINESA} - a word of nine letters"470 X$(1198,1297)=" is scrambled and held in a 3 x 3 square. A} A search stops"480 X$(1298,1397)=" after a word is found, except in the RESIDUE option. A joystick conA}trolled grid correct"490 X$(1398,1497)="ion routine can be activated after the grid has been entered and prompts are placed A}on the screen to"500 X$(1498,1595)=" assist. For grids more than a full screen in size, a quadrant indicator is present to A}show which"510 X$(1596,1694)=" part of the grid is currently being viewed. The REA}SIDUE"520 X$(1695,1793)=" search will commence with grid entry. The total word count in the list is asked for then words canA}"530 X$(1794,1892)=" be put into the program one at a time. A final opportunity to change the grid colours is then off"540A} X$(1893,1985)="ered and the search begun by pressing START. If there are no errors the grid will be solved."550 X$(1986,20A}80)=" If a word is not found, the option to"560 X$(2081,2177)=" ediA}t the grid/list or lengthen the list becomes available. Searching is always started from the"570 X$(2178,2277)=" beginning.A} Some puzzles have a list of words"580 X$(2278,2367)=" in which some A}of the entries do not exist. WORD SEARCH stops and identifies absent words."590 X$(2368,2467)=" A} WORD SEARCH is freeware."600 X$(2468,2535)=" A} Mark Glanfield"610 X$(2536,2608)=" 12, The Courts MARA}GATE"620 X$(2609,2653)=" Kent CT9 5HP"630 X$(2654,2720)=" ENGLANA}D`"640 REM 650 REM *SET COLOURS, CLR SCRN RAM*660 REM 670 SCRON=PEEK(559)680 POKE 559,0:POKE 710,116:POKE 712,116:POKE 7A}52,1690 FOR SCRCLR=0 TO 27:READ Q:POKE 1570+SCRCLR,Q:NEXT SCRCLR700 X=USR(1570)710 REM 720 REM *SET UP NEW DISPLAY LIST*A}730 REM 740 FOR DLIST=0 TO 35:READ X:POKE 1536+DLIST,X:NEXT DLIST750 POKE 560,0:POKE 561,6:POKE 88,96:POKE 89,149760 REM A}770 REM *SET UP DLI*780 REM 790 FOR DLI=0 TO 31:READ Y:POKE 1536+128+DLI,Y:NEXT DLI800 POKE 512,128:POKE 513,6:POKE 54286,A}192810 REM 820 REM *CREATE TITLE - WORD SEARCH*830 REM 840 FOR TITLE=0 TO 10:READ Y:POKE 38104+TITLE,Y:NEXT TITLE850 POKA}E 38102,74:POKE 38116,74860 REM 870 REM *CREATE MESSAGE*880 REM 890 FOR MESS1=0 TO 39:READ Z:POKE 38200+MESS1,Z:NEXT MESSA}1900 REM 910 REM *SET UP MCODE TEXT PRINT*920 REM 930 FOR MCODE=0 TO 44:READ CODE:POKE 1536+64+MCODE,CODE:NEXT MCODE940 A}POKE 559,SCRON950 X=USR(1600,ADR(X$))960 POKE 38205,145970 REM 980 REM *POSITION ARROWS*990 REM 1000 FOR ST=38240 TO 38A}320 STEP 40:POKE ST,124:NEXT ST:POKE 38360,931010 FOR ST=39080 TO 39160 STEP 40:POKE ST,124:NEXT ST:POKE 39200,931020 FOR SA}T=39920 TO 40000 STEP 40:POKE ST,124:NEXT ST:POKE 40040,931030 FOR ST=40840 TO 40920 STEP 40:POKE ST,124:NEXT ST:POKE 40800,A}921040 POKE 764,255:GET #1,X1050 REM 1060 REM *DECODE PAGE NUMBER*1070 REM 1080 IF X=49 THEN POKE 1547,96:POKE 1548,149:A}POKE 38205,1451090 IF X=50 THEN POKE 1547,8:POKE 1548,152:POKE 38205,1461100 IF X=51 THEN POKE 1547,176:POKE 1548,154:POKE A}38205,1471110 IF X=52 THEN POKE 1547,88:POKE 1548,157:POKE 38205,1481120 IF X<>19 THEN 10401130 FOR LINEGO=0 TO 39:POKE 38A}200+LINEGO,0:NEXT LINEGO1140 ? "}"1150 POKE 710,116:POKE 712,1161160 FOR MESS2=0 TO 9:READ Z:POKE 38162+MESS2,Z:NEXT MESS2A}1170 REM 1180 REM *LOAD WORD SEARCH*1190 REM 1200 RUN "D:SEARCHER"1210 REM 1220 REM *MCODE CLEAR SCREEN DATA*1230 REM A}1240 DATA 104,169,0,133,203,169,148,133,204,169,0,170,168,145,203,200,192,0,208,249,230,204,2321250 DATA 224,6,208,242,961A}260 REM 1270 REM *DISPLAY LIST DATA*1280 REM 1290 DATA 112,112,112,199,192,148,7,66,232,148,66,96,149,2,2,2,2,2,2,2,2,2,2,A}2,2,2,2,2,2,66,16,149,2,65,0,61300 REM 1310 REM *DLIST INTERRUPT DATA*1320 REM 1330 DATA 72,165,20,41,240,24,105,8,141,10A},212,141,22,208,41,240,24,105,140,141,23,2081335 DATA 41,240,24,105,198,141,25,208,104,641340 REM 1350 REM *WORD SEARCH TIA}TLE*1360 REM 1370 DATA 55,239,50,228,0,51,229,33,242,35,2321380 REM 1390 REM *BOTTOM LINE MESSAGE DATA*1400 REM 1410 DAA}TA 176,225,231,229,128,128,128,128,128,171,229,249,243,128,145,141,148,128,244,239,128,240,225,231,2291420 DATA 128,128,128,A}163,180,172,141,179,128,244,239,128,178,181,1741430 REM 1440 REM *MCODE PRINT TEXT DATA*1450 REM 1460 DATA 104,104,133,20A}4,104,133,203,169,96,133,205,169,149,133,206,160,0,177,203,201,97,16,7,561470 DATA 233,32,201,64,240,14,145,205,200,192,0,20A}8,236,230,204,230,206,76,79,6,961480 DATA 44,111,97,100,105,110,103,14,14,14 DATA 233,32,201,64,240,14,145,205,200,192,0,20@N10 REM ***********************20 REM * Word Search Program *30 REM * by Mark Glanfield *40 REM * (C) February 1993 *5E}0 REM * PD Freeware *60 REM ***********************70 REM 80 VERSION=PEEK(48*1024):IF VERSION=32 THEN TURBO=190 IE}NIT=1:SCRON=PEEK(559):POKE 559,0:GOTO 4970100 X=PEEK(53279):RETURN 110 REM *LENGTH TEST*120 IF J-LEN(TEST$)>=0 THEN Z=1:GOE}SUB 460130 IF I+LEN(TEST$)<=COL+1 AND J-LEN(TEST$)>=0 THEN Z=2:GOSUB 460140 IF I+LEN(TEST$)<=COL+1 THEN Z=3:GOSUB 460150 IE}F I+LEN(TEST$)<=COL+1 AND J+LEN(TEST$)<=ROW+1 THEN Z=4:GOSUB 460160 IF J+LEN(TEST$)<=ROW+1 THEN Z=5:GOSUB 460170 IF I-LEN(TE}EST$)>=0 AND J+LEN(TEST$)<=ROW+1 THEN Z=6:GOSUB 460180 IF I-LEN(TEST$)>=0 THEN Z=7:GOSUB 460190 IF I-LEN(TEST$)>=0 AND J-LEE}N(TEST$)>=0 THEN Z=8:GOSUB 460200 RETURN 210 REM *GET ELEMENT*220 X=ASC(ARRAY$(I+(J-N+1)*COL)):RETURN 230 X=ASC(ARRAY$(I+E}N-1+(J-N+1)*COL)):RETURN 240 X=ASC(ARRAY$(I+N-1+J*COL)):RETURN 250 X=ASC(ARRAY$(I+N-1+(J+N-1)*COL)):RETURN 260 X=ASC(ARRAYE}$(I+(J+N-1)*COL)):RETURN 270 X=ASC(ARRAY$(I-N+1+(J+N-1)*COL)):RETURN 280 X=ASC(ARRAY$(I-N+1+J*COL)):RETURN 290 X=ASC(ARRAYE}$(I-N+1+(J-N+1)*COL)):RETURN 300 REM *MARK ELEMENT*310 POKE TOPL+I+(J-N+1)*32,X+160:RETURN 320 POKE TOPL+I+N-1+(J-N+1)*32,F}X+160:RETURN 330 POKE TOPL+I+N-1+J*32,X+160:RETURN 340 POKE TOPL+I+N-1+(J+N-1)*32,X+160:RETURN 350 POKE TOPL+I+(J+N-1)*32,F}X+160:RETURN 360 POKE TOPL+I-N+1+(J+N-1)*32,X+160:RETURN 370 POKE TOPL+I-N+1+J*32,X+160:RETURN 380 POKE TOPL+I-N+1+(J-N+1)F}*32,X+160:RETURN 390 REM *FIND SIN VOW RES*400 ? "}";"Searching for ";SEARCH$;410 IF DEMO OR RESIDUE THEN ? :? "";K;" F}of ";NUM420 FOR J=1 TO ROW:FOR I=1 TO COL430 X=ASC(ARRAY$(I+J*COL))440 IF ASC(TEST$(1,1))=X THEN GOSUB 120450 NF}EXT I:NEXT J:RETURN 460 FOR N=1 TO LEN(TEST$)470 ON Z GOSUB 220,230,240,250,260,270,280,290480 IF TEST$(N,N)<>CHR$(X) F}THEN POP :RETURN 490 NEXT N:HIT=1500 IF VOWEL THEN 590510 REM *MARK SIN/RES*520 FOR N=1 TO LEN(TEST$)530 ON Z GOSUB 22F}0,230,240,250,260,270,280,290540 ON Z GOSUB 310,320,330,340,350,360,370,380550 NEXT N560 IF HIT AND SINGLE AND NOT DEMO F}THEN POP :GOTO 2600570 RETURN 580 REM *MARK VOWEL*590 TEST$=SEARCH$600 FOR N=1 TO LEN(TEST$)610 X=ASC(TEST$(N,N))620 F} ON Z GOSUB 310,320,330,340,350,360,370,380630 NEXT N640 IF HIT AND VOWEL AND NOT DEMO THEN POP :GOTO 2600650 RETURN 660F } REM *RESTORE SIN VOW RES*670 IF NOT RESET THEN N=0:GOTO 690680 FOR N=1 TO LEN(SEARCH$)690 ON Z GOSUB 220,230,240,250,26F }0,270,280,290700 X=X-192710 ON Z GOSUB 310,320,330,340,350,360,370,380720 IF NOT RESET THEN RETURN 730 NEXT N:HIT=0F }:RESET=0:RETURN 740 REM *FIND NINES*750 ? "}";"Searching for ";760 HIT=0:IF DEMO THEN ? NINE$:GOTO 780770 ? SEARCH$780 FF }OR J=2 TO ROW-1:FOR I=2 TO COL-1790 IF J=20 THEN POKE 560,128:POKE 561,6800 IF DEMO THEN TEST$=NINE$:GOTO 820810 F } TEST$=SEARCH$820 X=ASC(ARRAY$(I+J*COL))830 POKE TOPL+I+J*32,X+32840 CALL=USR(ADR(FIND$),ADR(TEST$),X)850 F} POKE TOPL+I+J*32,X-32860 IF TEST$<>SEARCH$ THEN GOSUB 890870 IF HIT THEN POP :POP :RETURN 880 NEXT I:NEXT J:IF}NIT=0:RETURN 890 N=2:FOR Z=1 TO 8900 ON Z GOSUB 220,230,240,250,260,270,280,290910 TEMPX$=TEST$920 CALL=USR(ADR(FINF}D$),ADR(TEST$),X)930 IF TEMPX$=TEST$ THEN POP :RETURN 940 NEXT Z950 IF TEST$<>BLANK$ THEN RETURN 960 HIT=1:N=2970 REM F}*MARK/RESTORE NINES*980 X=ASC(ARRAY$(I+J*COL))990 IF RESET THEN X=X-192:HIT=01000 POKE TOPL+I+J*32,X+1601010 FOR Z=1 TO 8F}1020 ON Z GOSUB 220,230,240,250,260,270,280,2901030 IF RESET THEN X=X-1921040 ON Z GOSUB 310,320,330,340,350,360,370F},3801050 NEXT Z:INIT=0:RESET=0:RETURN 1060 REM *INSTRING/FIND*1070 CHANGE=0:DEMO=0:EDIT=0:HIT=0:INIT=0:VIEW=0:Z=0:POKE 560F},0:POKE 561,6:IF PEEK(1540)=13 THEN GOSUB LEFT1080 IF RESIDUE AND RETRIEVE AND ANS=89 THEN 18401090 IF RESIDUE AND RETRIEVEF} THEN 15601100 IF RESIDUE THEN 13701110 ? "}";"Enter search word";1120 INPUT SEARCH$:TEST$=SEARCH$:GOSUB 11901130 IF SINGF}LE THEN GOSUB 4001140 IF NINES THEN GOSUB 7501150 IF VOWEL THEN GOSUB 1280:GOSUB 4001160 IF HIT THEN VIEW=1:GOSUB CLICK:GOF}TO 26101170 GOTO 26001180 REM *CHECKING*1190 IF NINES AND LEN(TEST$)<>9 THEN ? :? "";"...9 letters!":GOSUB 1330:GOTO 1110F}1200 IF SEARCH$="" THEN 11101210 IF NOT NINES AND LEN(SEARCH$)>MAX THEN ? :? "";"...too long":GOSUB 1330:GOTO 11101220 IFF} SEARCH$(1,1)=" " THEN ? :? "";"...no leading spaces";:GOSUB 1330:GOTO 11101230 FOR K=1 TO LEN(SEARCH$):IF ASC(SEARCH$(K,K)F})>90 THEN POP :? :? "}";"Press CAPS key":GOSUB 1330:GOTO 11101240 NEXT K1250 IF NOT TURBO THEN GOSUB CLICK:RETURN 1260 FORF} K=1 TO LEN(SEARCH$):GOSUB CLICK:NEXT K:RETURN 1270 REM *STRIP VOWELS*1280 FOR N=1 TO LEN(TEST$)1290 X=ASC(TEST$(N,N))1F}300 IF X=65 OR X=69 OR X=73 OR X=79 OR X=85 THEN TEST$(N,N)=CHR$(32)1310 NEXT N:RETURN 1320 REM *DELAYS*1330 WAIT=300:IFF} TURBO THEN WAIT=20001340 FOR WT=1 TO WAIT:NEXT WT:RETURN 1350 FOR DELAY=1 TO 15:NEXT DELAY:RETURN 1360 REM *CREATE WORDLIF}ST*1370 ? "}";"How many words";:ENTRY=31380 MENU$="":INPUT NUM:IF NUM=0 THEN 13701390 IF NUM>100 THEN ? "}";"Limit is 100"F}:GOSUB 1330:GOTO 13701400 GOSUB CLICK1410 FOR K=1 TO NUM1420 ? "}";"Word ";K;1430 ENTRY=9:INPUT TEMP$1440 IF TEMP$F }="" OR TEMP$(1,1)=" " OR LEN(TEMP$)>MAX THEN ? "":GOTO 14201450 IF NOT TURBO THEN GOSUB CLICK:GOTO 14701460 FOR X=1 TOF!} LEN(TEMP$):GOSUB CLICK:NEXT X1470 WORDLEN(K)=LEN(TEMP$)1480 MENU$(LEN(MENU$)+1)=TEMP$1490 NEXT K1500 ACTIVE=1:FINILIF"}ST=1:ENTRY=7:GOSUB 41201510 TOPLCOL=PEEK(TOPL+33)1520 POKE TOPL+33,TOPLCOL+1921530 CHANGE=1:GOSUB 5700:CHANGE=01540 POKE F#}TOPL+33,TOPLCOL1550 REM *SLICE UP MENU$*1560 ? "}";" to stop search":GOSUB 1330:GOSUB 13301570 ST=1:K=11580 IF DEMO THF$}EN MENU$=DEMO$1590 FOR K=K TO NUM1600 TEST$=MENU$(ST,ST+WORDLEN(K)-1)1610 SEARCH$=TEST$1620 IF DEMO AND VOWEL THEN F%}GOSUB 12801630 ST=ST+WORDLEN(K)1640 GOSUB 4001650 IF DEMO AND PEEK(764)=28 THEN POP :INIT=0:GOTO 57001660 IF PEEKF&}(764)=28 THEN POP :ESC=1:GOTO 18401670 IF NOT HIT THEN ? "}";"Word ";K;" - ";TEST$;" not Found":? "(Any Key)":POKEF'} 764,255:GET #1,KEY:GOTO 18401680 HIT=01690 IF SINGLE OR VOWEL THEN GOSUB 32501700 NEXT K1710 IF SINGLE OR VOWEL THENF(} INIT=0:GOTO 57001720 ? "}";"Word is ";1730 N=1:FOR J=1 TO ROW:FOR I=1 TO COL1740 X=PEEK(TOPL+I+J*32)1750 IF X<59F)} THEN RESULT$(N,N)=CHR$(X+32):N=N+1:IF N>30 THEN ? "impossible!";:POP :POP :GOTO 17901760 NEXT I:NEXT J1770 ? RESULT$;17F*}80 IF DEMO THEN ? " (Ctl-S)":GOTO 18001790 ? " (Any key)"1800 POKE 764,255:GET #1,KEY1810 IF KEY=19 AND DEMO THEN INIT=0:GF+}OTO 57001820 SOLVED=1:GOTO 41201830 REM *ALTER RESIDUE*1840 GOSUB 32701850 POKE 82,0:IF NOT RESIDUE THEN ? "}";" 1.SaveF,} 2.Correct Grid 3.Continue":GOTO 18701860 ? "}";" 1.Save 2.Correct Grid 3.Correct List 4.Extend List 5.Make List 6.F-}Search"1870 ENTRY=7:IF RESIDUE THEN ESC=01880 POKE 82,2:POKE 764,255:GET #1,X1890 IF X<49 OR X>54 THEN 18501900 IF NOT FIF.}NILIST AND RESIDUE THEN IF X=49 OR X=51 OR X=52 OR X=54 THEN ? "}";"Make list first...":GOSUB 13301910 IF X=49 AND FINILIST F/}AND RESIDUE OR X=49 AND NOT RESIDUE THEN GOSUB 4120:ALTER=1:GOTO 18401920 IF X=50 THEN GOSUB 2790:GOTO 18501930 IF X=51 ANDF0} NOT RESIDUE THEN 10701940 IF X=51 AND FINILIST AND RESIDUE THEN GOSUB 2020:ACTIVE=1:ALTER=1:GOTO 18501950 IF X=52 AND FINIF1}LIST AND RESIDUE THEN GOSUB 2100:ALTER=1:GOTO 18501960 IF X=53 AND FINILIST THEN ? "}";"Sure? Cntl- destroys current list..F2}.":POKE 764,255:GET #1,ANS1970 IF X=53 AND FINILIST AND ANS<>25 THEN 18501980 IF X=53 AND RESIDUE THEN FINILIST=0:GOSUB 137F3}0:GOTO 18501990 IF X=54 AND FINILIST AND RESIDUE OR X=54 AND RESIDUE AND GRIDLOAD THEN ALTER=0:GOTO 15102000 GOTO 18502010F4} REM *REVIEW LIST*2020 ST=1:FOR K=1 TO NUM2030 TEST$=MENU$(ST,ST+WORDLEN(K)-1)2040 SEARCH$=TEST$2050 ST=ST+WORDLEN(F5}K)2060 ? "}";"Any key or RETURN to end":? :? "Word ";K;" - ";TEST$2070 POKE 764,255:GET #1,KEY:IF KEY=155 THEN K=NUM:GOF6}TO 22202080 NEXT K:GOTO 22202090 REM *EXTEND LIST*2100 ? "}";"How many";:ENTRY=6:INPUT XTRA:IF XTRA=0 THEN POP :GOTO 1850F7}2110 IF NUM+XTRA>100 THEN ? "}";"Limit is ";100-NUM:GOSUB 1330:GOTO 21002120 FOR K=NUM+1 TO NUM+XTRA2130 ? "}";"Enter worF8}d ";K:INPUT TEMP$:IF TEMP$="" OR LEN(TEMP$)>MAX THEN ? "":GOTO 21302140 IF TURBO THEN FOR X=1 TO LEN(TEMP$):GOSUB CLICK:NF9}EXT X:GOTO 21602150 GOSUB CLICK2160 ? "}";"Word ";K;TEMP$2170 WORDLEN(K)=LEN(TEMP$)2180 MENU$(LEN(MENU$)+1)=TEMP$F:}2190 NEXT K2200 NUM=NUM+XTRA2210 RETURN 2220 ? "}";"Which one";:ENTRY=4:INPUT NUMBER2230 IF NUMBER=0 OR NUMBER>NUM THEN F;}22202240 IF NUMBER=1 THEN ST=1:K=1:GOTO 22902250 ST=12260 FOR K=1 TO NUMBER-12270 ST=ST+WORDLEN(K)2280 NEXT K2290 TESF<}T$=MENU$(ST,ST+WORDLEN(K)-1)2300 ? "}";"Enter new word (";TEST$;")"2310 ENTRY=5:INPUT TEMP$:IF TEMP$(1,1)=" " OR LEN(TEMP$)F=}>MAX THEN ? "":GOTO 23002320 GOSUB CLICK2330 UPDWN=LEN(TEMP$)-WORDLEN(K)2340 IF LEN(TEMP$)>WORDLEN(K) THEN EXPAND=12350 F>}WORDLEN(K)=LEN(TEMP$)2360 IF EXPAND THEN FOR Q=LEN(MENU$) TO ST+1 STEP -1:MENU$(Q+UPDWN,Q+UPDWN)=MENU$(Q,Q):NEXT Q:GOTO 2380F?}2370 FOR Q=ST-UPDWN TO LEN(MENU$):MENU$(Q+UPDWN,Q+UPDWN)=MENU$(Q,Q):NEXT Q2380 FOR Z=0 TO LEN(TEMP$)-12390 MENU$(ST+Z,STF@}+Z)=TEMP$(Z+1,Z+1)2400 NEXT Z2410 IF NOT EXPAND THEN MENU$=MENU$(1,LEN(MENU$)+UPDWN)2420 ? "}";"More? (Y or spacebar)"243FA}0 POKE 764,255:GET #1,KEY2440 IF KEY=89 OR X=121 THEN EXPAND=0:GOSUB 20202450 GOTO 18502460 REM *CREATE DEMO*2470 RESTOREFB} 6040:IF DEMO AND TURBO THEN TOPL=187*256+1322480 FOR J=1 TO ROW:FOR I=1 TO COL2490 READ X2500 IF X=65 OR X=69 OR FC}X=73 OR X=79 OR X=85 THEN IF VOWEL THEN X=322510 ARRAY$(I+J*COL,I+J*COL)=CHR$(X)2520 POKE TOPL+I+J*32,X-322530 NFD}EXT I:NEXT J2540 FOR Q=1 TO NUM2550 READ SLICE2560 WORDLEN(Q)=SLICE2570 NEXT Q2580 RETURN 2590 REM *NOW WHAT?*2600FE} IF NOT HIT THEN ? "}";"Not Found":VIEW=0:GOSUB 13302610 IF HIT THEN POKE 710,20:POKE 712,20:GOSUB 1330:POKE 710,116:POKE 71FF}2,1162620 ? "}";" =Continue Ctl-olour Change"2630 ? :? " Ctl-dit Ctl-inish Ctl-iew"2640 POKE 764,255:GET FG}#1,ANS:GOSUB CLICK2650 IF ANS=32 AND HIT AND SINGLE OR ANS=32 AND HIT AND VOWEL THEN RESET=1:HIT=0:GOSUB 680:GOTO 10702660 FH}IF ANS=32 AND HIT AND NINES THEN RESET=1:HIT=0:GOSUB 980:GOTO 10702670 IF ANS=32 THEN GOTO 10702680 IF ANS=3 AND HIT THEN CFI}HANGE=1:GOSUB 5700:? "}":GOTO 26202690 IF ANS=5 AND HIT AND SINGLE OR ANS=5 AND HIT AND VOWEL THEN RESET=1:GOSUB 670:GOSUB 2FJ}790:GOTO 18502700 IF ANS=5 AND HIT AND NINES THEN RESET=1:GOSUB 980:GOSUB 2790:GOTO 18502710 IF ANS=5 THEN GOSUB 2790:GOTO FK}18502720 IF ANS=6 THEN RUN 2730 IF ANS=22 AND HIT AND COL>19 OR ANS=22 AND HIT AND ROW>19 THEN EDIT=0:GOSUB 2980:GOTO 2620FL}2740 GOTO 26402750 REM *L/R SCREEN MOVE*2760 FOR DL=1 TO 20:POKE 1537+3*DL,PEEK(1537+3*DL)+13:POKE 1665+3*DL,PEEK(1665+3*DLFM})+13:NEXT DL:RETURN 2770 FOR DL=1 TO 20:POKE 1537+3*DL,PEEK(1537+3*DL)-13:POKE 1665+3*DL,PEEK(1665+3*DL)-13:NEXT DL:RETURN FN}2780 REM *EDIT GRID*2790 EDIT=1:I=COL:J=ROW2800 IF COL>19 THEN GOSUB RIGHT2810 IF ROW>19 THEN POKE 560,128:GOTO 28302820 FO}POKE 560,0:POKE 561,6:IF PEEK(1540)=13 THEN GOSUB LEFT2830 POKE TOPL+I+J*32,ASC(ARRAY$(I+J*COL))+1602840 ? "}";"Use joysticFP}k button"2850 CHARGOT=0:FINI=02860 IF EDIT THEN POKE TOPL+I+J*32,ASC(ARRAY$(I+J*COL))+160:GOSUB INDICATE2870 IF J>=2 AND SFQ}TICK(0)=14 THEN Z=1:J=J-1:GOSUB 670:IF J=13 THEN POKE 560,0:POKE 561,6:GOSUB INDICATE2880 IF I<=COL-1 AND STICK(0)=7 THEN Z=FR}3:I=I+1:GOSUB 670:IF I=20 AND PEEK(1540)=0 THEN GOSUB RIGHT:GOSUB INDICATE2890 IF J<=ROW-1 AND STICK(0)=13 THEN Z=5:J=J+1:GOFS}SUB 670:IF J=20 THEN POKE 560,128:POKE 561,6:GOSUB INDICATE2900 IF I>=2 AND STICK(0)=11 THEN Z=7:I=I-1:GOSUB 670:IF I=12 ANDFT} PEEK(1540)=13 THEN GOSUB LEFT:GOSUB INDICATE2910 IF EDIT AND STICK(0)=15 AND STRIG(0)=0 THEN POKE TOPL+I+J*32,0:GOSUB 4290FU}2920 IF CHARGOT THEN ? "}";"Done? (Any Key or Y)":POKE 764,255:GET #1,FINI:? "}":IF FINI<>89 THEN 28402930 IF FINI=89 THEN PFV}OKE 560,0:POKE 561,6:IF PEEK(1540)=13 THEN GOSUB LEFT2940 IF FINI=89 AND INIT AND RESIDUE THEN RETURN 2950 IF FINI=89 THEN FW}RETURN 2960 GOTO 28502970 REM *SECTOR?*2980 ? "}";"Press to Exit"2990 IF STICK(0)=14 AND PEEK(560)=128 THEN POKE 560FX},03000 IF ROW>18 AND STICK(0)=13 AND PEEK(560)=0 THEN POKE 560,1283010 IF COL>18 AND STICK(0)=7 AND PEEK(1540)=0 THEN GOSUBFY} RIGHT3020 IF STICK(0)=11 AND PEEK(1540)=13 THEN GOSUB LEFT3030 REM *QUAD ICON*3040 TXTWIN=PEEK(660)+256*PEEK(661)3050 IFFZ} PEEK(560)=0 AND PEEK(1540)=0 THEN POKE TXTWIN,2013060 IF PEEK(560)=0 AND PEEK(1540)=13 THEN POKE TXTWIN,2073070 IF PEEK(56F[}0)=128 AND PEEK(1540)=13 THEN POKE TXTWIN,2043080 IF PEEK(560)=128 AND PEEK(1540)=0 THEN POKE TXTWIN,2033090 IF EDIT THEN RF\}ETURN 3100 IF STRIG(0)=0 THEN RETURN 3110 GOTO 29903120 REM *RANDOM*3130 T=USR(ADR(CHANGE$),C1SET,C2SET)3140 N=PEEK(205)F]}:I=PEEK(206):J=PEEK(207)3150 COLOR ASC(TXTBLOCK$(N,N)):PLOT I,J3160 IF TURBO THEN POKE 53761,N3170 REM *SOUND?*3180 FOR VF^}1=8 TO 2 STEP -23190 SOUND 0,5,10,V13200 IF TURBO THEN GOSUB 13503210 NEXT V13220 SOUND 0,0,0,03230 RETURN 3240 REMF_} *RESTORE GRID*3250 IF DEMO THEN 32803260 IF NOT VOWEL THEN 33303270 ? "}";"Please wait..."3280 FOR J=1 TO ROW:FOR I=1 TOF`} COL3290 X=ASC(ARRAY$(I+J*COL))3300 IF X=42+192 THEN ARRAY$(I+J*COL,I+J*COL)=CHR$(32):POKE TOPL+I+J*32,ASC(ARRAY$(IFa}+J*COL))-32:GOTO 33203310 POKE TOPL+I+J*32,X-323320 NEXT I:NEXT J3330 ? "}":HIT=0:RETURN 3340 REM *ERROR HANDLER*3Fb}350 TRAP 3350:? "}":POKE 559,SCRON:CODE=PEEK(195)3360 ON ENTRY GOTO 3710,3750,1370,1840,2300,2100,3410,3470,14203370 ? "}";Fc}"";"Unforseen program failure - error ";CODE;:? " Ctl-S to restart"3380 GET #1,KEY:IF KEY<>19 THEN 33803390 RUNFd} 3400 POKE 559,SCRON3410 IF PEEK(195)=170 THEN CLOSE #2:POP :GOTO 42203420 IF CODE=162 THEN ? "}";"";"Disk full"3430 IF Fe}CODE=144 THEN ? "}";"";"Protected/Unformatted Disk/Open Door":GOSUB 1330:GOSUB 13303440 IF CODE=138 THEN ? "}";"";"Turn onFf} the drive"3450 CLOSE #2:POP :GOSUB 1330:IF NOT RESIDUE THEN 18503460 GOTO 41203470 IF CODE=170 THEN ? "}";"";"No such fiFg}le"3480 IF CODE=144 THEN ? "}";"";"Drive door open or format disk":GOSUB 13303490 IF CODE=138 THEN ? "}";"";"Turn on te Fh}drive"3500 IF CODE=136 THEN ? "}";"";"File not appropriate"3510 GRIDLOAD=0:RETRIEVE=0:UPDATE=0:CLOSE #2:POP :GOSUB 1330:GOFi}TO 35303520 REM *SET UP GRID*3530 POKE 82,0:IF NOT DEMO THEN ? "}":GOTO 35503540 ? "}";" ***Demonstration Mode***";Fj}3550 SINGLE=0:VOWEL=0:RESIDUE=0:NINES=03560 IF DEMO THEN ? " ";3570 ? "1.Single 2.No Vowels 3.Residue 4.Nines";358Fk}0 IF DEMO THEN ? " Hold down ESC to halt DEMO"3590 POKE 82,2:POKE 764,255:GET #1,TYPE3600 IF TYPE=49 THEN SINGLE=13Fl}610 IF TYPE=50 THEN VOWEL=13620 IF TYPE=51 THEN RESIDUE=13630 IF TYPE=52 THEN NINES=13640 IF TYPE<49 OR TYPE>52 THEN 3590Fm}3650 IF DEMO THEN NUM=17:COL=8:ROW=6:GOTO 38403660 ? "}";" LOAD grid (0-9)? (Else any key)"3670 POKE 764,255:GET #1,KEY36Fn}80 IF KEY<48 OR KEY>57 THEN 37103690 GRIDLOAD=1:UPDATE=1:GOSUB 4700:IF RESIDUE THEN FINILIST=13700 GOTO 38403710 ? "}";"HoFo}w Wide (Max=30)";3720 ENTRY=1:INPUT COL3730 IF COL=0 OR COL>30 OR NINES AND COL<3 THEN ? "":GOTO 37103740 GOSUB CLICK375Fp}0 ? "}";"How Deep (Max=30)";3760 ENTRY=2:INPUT ROW3770 IF ROW=0 OR ROW>30 OR NINES AND ROW<3 THEN ? "":GOTO 37503780 GOSUFq}B CLICK3790 ? "}";"Grid is ";COL;" across by ";ROW;" down"3800 ? :? "Is this correct? (Space Bar or N)"3810 POKE 764,255:GFr}ET #1,ANS:GOSUB CLICK3820 IF ANS=78 OR ANS=110 THEN GOTO 37103830 IF ANS<>32 THEN GOTO 38103840 GOSUB 5970:GOSUB 50503850Fs} IF NOT C1SET AND NOT C2SET THEN POKE 708,88:POKE 711,2003860 POKE 560,0:POKE 561,63870 IF COL>ROW THEN MAX=COL:GOTO 39003Ft}880 MAX=ROW3890 REM *CENTRE GRID*3900 IF COL<20 THEN OFFCOL=INT((18-COL)/2)3910 IF ROW<20 THEN OFFROW=32*INT((18-ROW)/2)3Fu}920 TOPL=TOPL+OFFCOL+OFFROW3930 IF DEMO THEN GOSUB 2470:IF NOT NINES THEN 15603940 IF DEMO AND NINES THEN GOSUB 750:GOTO 57Fv}003950 IF GRIDLOAD THEN GOSUB 4860:GOTO 40303960 ? "}";"Enter Characters"3970 POKE 54286,DLOFF3980 FOR J=1 TO ROW:FOR I=1Fw} TO COL3990 IF GRIDLOAD THEN POKE TOPL+I+J*32,ASC(ARRAY$(I+J*COL))-32:GOTO 40104000 GOSUB 43004010 IF GRIDLOADFx} AND J=20 THEN POKE 560,1284020 NEXT I:NEXT J4030 IF NOT GRIDLOAD THEN GOSUB 32704040 POKE 560,0:POKE 561,6:IF PEEK(1540Fy})=13 THEN GOSUB LEFT4050 ? "}";"Press "4060 IF PEEK(53279)<>6 THEN 40604070 ? "}";"Any corrections? (Space Bar or Y)"Fz}4080 POKE 764,255:GET #1,ANS4090 IF ANS=89 OR ANS=121 THEN GOSUB 18404100 IF ANS<>32 THEN 40804110 IF RESIDUE OR UPDATE TF{}HEN 10704120 POKE 559,SCRON:IF NOT UPDATE THEN ? "}";"Save grid as... 0-9 (or N)":GOTO 41404130 ? "}";"Save this grid? (N oF|}r Space Bar)"4140 ENTRY=7:POKE 764,255:GET #1,KEY:IF KEY=78 OR KEY=110 THEN 42304150 POKE 559,SCROFF:IF NOT UPDATE AND KEY57 THEN 41204160 IF NOT UPDATE THEN EXT=KEY-484170 IF RETRIEVE OR UPDATE THEN 42204180 GOSUB 47804190 CLOSE #2:F~}POKE 559,SCRON:? "}";"Exists already. Overwrite? (Y/N)":GET #1,ANS:IF ANS=89 THEN 42204200 IF SOLVED THEN RUN 4210 GOTO 412F}04220 FNAME$(14,14)=STR$(EXT):POKE 559,SCROFF:GOSUB 45804230 IF SOLVED THEN RUN 4240 IF RESIDUE AND ACTIVE THEN 15104250 F}IF RESIDUE AND ESC THEN 18504260 IF RESIDUE THEN INIT=0:RETURN 4270 GOTO 10704280 REM *GET CHARACTERS*4290 ? "}";"Use KeyF}board"4300 POKE 764,255:GET #1,X4310 IF X=126 THEN GOSUB 4490:GOTO 43004320 IF NOT EDIT AND X=32 THEN X=42+192:GOTO 43804F}330 IF X=32 THEN 43804340 IF X<48 OR X>122 OR X>57 AND X<65 THEN 43004350 IF X>90 AND X<123 THEN ? "}";"Press CAPS key":GOSF}UB 1330:GOTO 42904360 IF X=65 AND VOWEL OR X=69 AND VOWEL OR X=73 AND VOWEL OR X=79 AND VOWEL OR X=85 AND VOWEL THEN GOSUB 4F}470:GOTO 42904370 IF X>47 AND X<58 AND VOWEL THEN GOSUB 4475:GOTO 42904380 CHARGOT=14390 GOSUB CLICK4400 ARRAY$(I+J*COL,IF}+J*COL)=CHR$(X)4410 POKE TOPL+I+J*32,X-324420 IF I=20 AND PEEK(1540)=0 THEN GOSUB RIGHT4430 IF J>19 AND PEEK(560)=0 THEN PF}OKE 560,1284440 IF I=1 AND PEEK(1540)=13 THEN GOSUB LEFT4450 RETURN 4460 REM *WARNING*4470 ? "}";"This is a vowel!":GOSUBF} 1330:RETURN 4475 ? "}";"This is not a consonant!":GOSUB 1330:RETURN 4480 REM *BACKSPACE*4490 IF I=1 AND J=1 THEN BSPACE=1F}:GOTO 45204500 IF I=1 AND J>1 THEN BSPACE=1:J=J-1:I=COL:GOTO 45204510 BSPACE=1:I=I-14520 POKE TOPL+I+J*32,04530 IF J<20 AF}ND PEEK(560)=128 THEN POKE 560,04540 IF I<20 AND PEEK(1540)=13 THEN GOSUB LEFT4550 IF I=COL AND COL>20 AND PEEK(1540)=0 THEF}N GOSUB RIGHT4560 RETURN 4570 REM *SAVE GRID*4580 ENTRY=7:INOUT=8:UPDATE=1:FNAME$(1,11)="D:GRIDINFO."4590 R=LEN(ARRAY$):RF}H=INT(R/256):RL=R-RH*2564600 IF RESIDUE THEN S=LEN(MENU$):SH=INT(S/256):SL=S-SH*2564610 ON TYPE-48 GOSUB 4790,4800,4810,482F}04620 PUT #2,SINGLE:PUT #2,VOWEL:PUT #2,RESIDUE:PUT #2,NINES4630 R=LEN(ARRAY$):IF RESIDUE THEN S=LEN(MENU$)4640 PUT #2,COLF}:PUT #2,ROW:PUT #2,RL:PUT #2,RH:PUT #2,NUM:IF RESIDUE THEN PUT #2,SL:PUT #2,SH4650 FOR Z=1 TO R:PUT #2,ASC(ARRAY$(Z,Z)):NEXTF} Z4660 IF RESIDUE THEN FOR Z=1 TO 100:PUT #2,WORDLEN(Z):NEXT Z:FOR Z=1 TO S:PUT #2,ASC(MENU$(Z,Z)):NEXT Z4670 CLOSE #2:POKEF} 559,SCRON:? "}":IF SOLVED THEN GOSUB 59704680 RETURN 4690 REM *LOAD GRID*4700 ENTRY=8:INOUT=4:RETRIEVE=1:FNAME$(1,11)="D:F}GRIDINFO.":EXT=KEY-48:ON TYPE-48 GOSUB 4790,4800,4810,48204710 GET #2,SINGLE:GET #2,VOWEL:GET #2,RESIDUE:GET #2,NINES4720 GF}ET #2,COL:GET #2,ROW:GET #2,RL:GET #2,RH:GET #2,NUM:IF RESIDUE THEN GET #2,SL:GET #2,SH4730 R=RL+256*RH:IF RESIDUE THEN S=SLF}+256*SH4740 FOR Z=1 TO R:GET #2,X:ARRAY$(Z,Z)=CHR$(X):NEXT Z4750 IF RESIDUE THEN FOR Z=1 TO 100:GET #2,T:WORDLEN(Z)=T:NEXT F}Z:FOR Z=1 TO S:GET #2,X:MENU$(Z,Z)=CHR$(X):NEXT Z4760 CLOSE #2:RETURN 4770 REM *READ/WRITE FILES*4780 INOUT=4:FNAME$(1,11)F}="D:GRIDINFO.":QQ=TYPE-48:ON QQ GOSUB 4790,4800,4810,4820:RETURN 4790 FNAME$(12,13)="SI":GOSUB 4830:RETURN 4800 FNAME$(12,1F}3)="VO":GOSUB 4830:RETURN 4810 FNAME$(12,13)="RE":GOSUB 4830:RETURN 4820 FNAME$(12,13)="NI"4830 FNAME$(14,14)=STR$(EXT)48F}40 OPEN #2,INOUT,0,FNAME$:RETURN 4850 REM *PRINT GRID TO SCREEN*4860 HI=INT(ADR(ARRAY$)/256)4870 LO=ADR(ARRAY$)-HI*256488F}0 PRNT$(33,33)=CHR$(LO):PRNT$(34,34)=CHR$(HI)4890 ADDRESS=ADR(PRNT$)+334900 HIBYTE=INT(ADDRESS/256)4910 LOBYTE=ADDRESS-HIBF}YTE*2564920 PRNT$(46,46)=CHR$(LOBYTE):PRNT$(47,47)=CHR$(HIBYTE)4930 START=TOPL+33:ADJUST=32-COL4940 CALL=USR(ADR(PRNT$),STF}ART,COL,ROW,ADJUST)4950 RETURN 4960 REM *INITIALIZE*4970 DIM ARRAY$(930),BLANK$(9),DEMO$(74),FNAME$(14),MENU$(3000),NINE$(F}9),RESULT$(30),SEARCH$(30)4980 DIM TEMP$(30),TEMPX$(9),TEST$(30)4990 BLANK$=" "5000 DEMO$="ATARICLOADCOLORDATAEDITF}EXITKILLLOADLOCKROMSEARCHSERIALSIXSTOPTOOLUSERWORD":NINE$="COLORDATA"5010 DIM PRNT$(82)5020 PRNT$="hhhhhhhhhѦ͠F}ЩϽiϥeѨХ`"5030 DIM WORDLEN(100)5040 TRAP 3350:GRAPHICS 1:POKE 709,204:POKEF} 710,116:POKE 712,116:REG1=88:C1SET=0:REG2=200:C2SET=0:INIT=1:OPEN #1,4,0,"K:"5050 CLICK=3180:LEFT=2770:RIGHT=2760:INDICATE=F}3040:TOPL=155*256:IF TURBO THEN TOPL=187*2565060 POKE 16,64:POKE 53774,645070 POKE 731,255:POKE 752,15080 IF SCRCLR THEN RF}ETURN 5090 ACTIVE=0:ALTER=0:ESC=0:FINILIST=0:OFFCOL=0:OFFROW=0:RETRIEVE=0:REVISIT=0:SCROFF=0:SOLVED=0:UPDATE=05100 DL=PEEK(F}560)+256*PEEK(561)5110 SCRMEM=PEEK(88)+256*PEEK(89)5120 POKE DL+18,128+6:POKE DL+19,7:POKE DL+21,25130 POKE 559,SCRON5140F} REM *SET UP/DO DLI*5150 DIM DLI$(24)5160 DLI$="H)i ԍ)iƍh@"5170 DLIHI=INT(ADR(DLI$)/256)5180 DLILO=ADR(DLI$F})-DLIHI*2565190 POKE 512,DLILO:POKE 513,DLIHI:DLOFF=PEEK(54286):POKE 54286,1925200 IF NOT TURBO THEN ? "}":? "Please wait..F}."5210 POKE 1536,112:POKE 1537,112:POKE 1538,1125220 POKE 1664,112:POKE 1665,112:POKE 1666,1125230 REM *DLIs*5240 RESTOREF} 5990:FOR I=1 TO 8:READ LMSLOW5250 POKE 1536+3*I,70:POKE 1560+3*I,70:POKE 1584+3*I,705260 POKE 1537+3*I,LMSLOW:POKE 156F}1+3*I,LMSLOW:POKE 1585+3*I,LMSLOW5270 POKE 1538+3*I,155:POKE 1562+3*I,156:POKE 1586+3*I,1575280 NEXT I5290 FOR I=1 TO 8:F}READ LMSLOW5300 POKE 1664+3*I,70:POKE 1688+3*I,70:POKE 1712+3*I,705310 POKE 1665+3*I,LMSLOW:POKE 1689+3*I,LMSLOW:POKE 1F}713+3*I,LMSLOW5320 POKE 1672+3*I,157:POKE 1696+3*I,158:POKE 1720+3*I,1595330 NEXT I5340 POKE 1669,156:POKE 1672,1565350F} REM *TEXT WINDOW DL1+DL2*5360 FOR SCRTXT=1599 TO 1607:READ DLDAT:POKE SCRTXT,DLDAT:NEXT SCRTXT5370 FOR SCRTXT=1727 TO 1735F}:READ DLDAT:POKE SCRTXT,DLDAT:NEXT SCRTXT5380 IF NOT TURBO THEN 54605390 REM *TURBO FIX*5400 FOR I=1 TO 85410 POKE 1538F}+3*I,187:POKE 1562+3*I,188:POKE 1586+3*I,1895420 POKE 1672+3*I,189:POKE 1696+3*I,190:POKE 1720+3*I,1915430 NEXT I5440 POF}KE 1669,188:POKE 1672,188:POKE 1601,191:POKE 1729,1915450 REM *CLEAR SCREEN*5460 DIM CLEAR$(40)5470 CLEAR$="hhhɺF}̪ͩ`"5480 REM *CHANGE LETTER*5490 DIM CHANGE$(128)5500 CHANGE$(1,90)="hhhhh̭ 0Rͭ 0)F}i 0Υ )iЭЍ 0"5510 CHANGE$(91,128)=" ϥ )iЭЍ`"5F}520 REM *START SCREEN*5530 DIM TITLE$(28),TXTBLOCK$(109),MCODE$(133)5540 TXTBLOCK$="P"5550 TXTBLOCK$(80)=TXTBLOCK$:TXTBLOCF}K$(2)=TXTBLOCK$5560 TITLE$="72@3!#by-ark'lanfield"5570 MCODE$(1,90)="hhhhhhhР B0ZR 0F}QϽ ϥ"5580 MCODE$(91,133)=" i Q٩ ХiƠ/m`"5590 START=SCRF}MEM+25:LINELEN=95600 HBYTE=INT(ADR(TXTBLOCK$)/256)5610 LBYTE=ADR(TXTBLOCK$)-HBYTE*2565620 POKE ADR(MCODE$)+68,LBYTE:POKE AF}DR(MCODE$)+69,HBYTE5630 POKE ADR(MCODE$)+122,LBYTE:POKE ADR(MCODE$)+123,HBYTE5640 TXTBLOCK$(LEN(TXTBLOCK$)+1)=TITLE$5650 XF}=USR(ADR(MCODE$),ADR(TXTBLOCK$),START,LINELEN)5660 REM *NINES SEARCH*5670 DIM FIND$(31)5680 FIND$="hhhhh͠ F} `"5690 REM *WHERE NOW?*5700 ? "}";" Hold down ί keys";5710 ? " to choose colour - any key to stF}op"5720 IF CHANGE=1 THEN ? " to begin":GOTO 57405730 ? " then (and for DEMO)"5740 FOR AV=1 TO F}20:GOSUB 100:NEXT AV5750 IF X=7 AND INIT THEN GOSUB 31305760 IF X=3 THEN FL=0:POKE 764,255:GOSUB 3220:GOSUB 58405770 IF X=F}5 THEN FL=1:POKE 764,255:GOSUB 3220:GOSUB 58405780 IF X=4 THEN DEMO=1:GOTO 35305790 IF X=6 AND INIT THEN DEMO=0:INIT=0:GOTOF} 35305800 IF X=6 AND DEMO THEN RUN 5810 IF X=6 AND CHANGE AND NOT INIT THEN RETURN 5820 GOTO 57405830 REM *COLOUR MENU*5F}840 EXTENT=10:IF TURBO THEN EXTENT=255850 FOR HUE=24 TO 248 STEP 165860 FOR DELAY=1 TO EXTENT5870 IF STRIG(0)=0 AND F}NOT FL OR PEEK(764)<>255 AND NOT FL THEN POKE 708,HUE:REG1=HUE:C1SET=1:POP :POP :RETURN 5880 IF STRIG(0)=0 AND FL OR PEEF}K(764)<>255 AND FL THEN POKE 711,HUE:REG2=HUE:C2SET=1:POP :POP :RETURN 5890 NEXT DELAY5900 IF NOT FL THEN POKE 708,HUE:F}REG1=HUE5910 IF FL THEN POKE 711,HUE:REG2=HUE5920 DLICOL=INT(PEEK(53770)/16)*16+85930 IF DLICOL>15 AND DLICOL<>PEEK(F}708) OR DLICOL<>PEEK(711) THEN POKE 1762,DLICOL5940 NEXT HUE5950 GOTO 58405960 REM *CLEAR GRAPHICS SCREEN*5970 SCRCLR=1:XF}=USR(ADR(CLEAR$),TURBO):RETURN 5980 REM *DLIST DATA*5990 DATA 0,32,64,96,128,160,192,2246000 DATA 192,224,0,32,64,96,128,1F}606010 DATA 66,96,159,2,2,2,65,0,66020 DATA 66,96,159,2,2,2,65,128,66030 REM *DATA FOR DEMO GRID*6040 DATA 83,85,83,69,82F},73,65,76,84,73,88,69,68,73,84,76,79,67,73,82,65,84,65,766050 DATA 80,79,83,87,79,82,68,73,77,80,82,79,76,79,67,75,85,84,76,F}69,67,77,82,726060 DATA 5,5,5,4,4,4,4,4,4,3,6,6,3,4,4,4,4050 DATA 80,79,83,87,79,82,68,73,77,80,82,79,76,79,67,75,85,84,76,D;