Home » Personal collection » Acorn tapes » Electron_User » Electron_User_tape20a_acorn_eu_1991_march.wav » MakeFil
MakeFil
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Personal collection » Acorn tapes » Electron_User » Electron_User_tape20a_acorn_eu_1991_march.wav |
Filename: | MakeFil |
Read OK: | ✔ |
File size: | 17B0 bytes |
Load address: | FFFF1900 |
Exec address: | FFFF8023 |
Duplicates
There are 2 duplicate copies of this file in the archive:
- AEW website » mu » mu_5_25_discs_Micro_User_09_01_D-MU09_01.ssd » MakeFil
- AEW website » mu » mu_Micro_User_09_01_MU9-1_B.uef » MakeFil
- Personal collection » Acorn tapes » Electron_User » Electron_User_tape20a_acorn_eu_1991_march.wav » MakeFil
File contents
10REM Make Word File 20REM by Gordon Lethbridge 30REM (c) The Micro User 40MODE7 50PROCinit 60ON ERROR PROCerror 70REPEAT 80O%=FNmenu 90IF O%<opts% PROChead(opt$(O%,1)) 100quit=EVAL("FN"+opt$(O%,2)) 110UNTIL quit 120PROCquit 130END 140DEF PROCinit:PROCoff:*FX4,1 150maxwords=100:numwords=0 160DIM word$(maxwords+1):null$="***" 170maxrepls=5:numrepls=0 180DIM repl$(maxrepls+1) 190currepl=1:curword=1 200READ opts%:DIM opt$(opts%,2) 210FOR O%=1 TO opts% 220READ opt$(O%,1),opt$(O%,2) 230opts$=opts$+STR$O%:NEXT 240READ types:DIM type$(types) 250FOR T%=1 TO types 260READ type$(T%):NEXT:type=1 270of$="":F%=0:temp$="temp" 280DIM f%256:osfind=&FFCE 290E%=0:osbyte=&FFF4:oscli=&FFF7 300lo$="abcdefghijklmnopqrstuvwxyz" 310hi$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 320alf$=lo$+hi$:num$="0123456789" 330punc$="!#$%&()=-^|@:." 340all$=alf$+num$+punc$ 350dl$=CHR$127:cr$=CHR$13 360PROCwindow(0):edited=FALSE 370cursor$=CHR$&8B+CHR$&8A+cr$+dl$ 380ENDPROC 390DATA 9 400DATA Save words,save 410DATA Load words,load 420DATA Set file type,settype 430DATA Edit words,editw 440DATA Clear words,clearw 450DATA Print words,print 460DATA Edit replacements,editr 470DATA Clear replacements,clearr 480DATA Quit,quit 490DATA 3 500DATA Replace,Magic E,Plurals 510DEF PROCoff 520VDU23,1,0;0;0;0;0;:ENDPROC 530DEF PROCon 540VDU23,1,1;0;0;0;0;:ENDPROC 550DEF PROCerror 560PROCoff:F%=FNclose(F%) 570IF ERR=17 AND E%>0 E%=0:PROCmessage(e$):Z%=FNin(" ") 580IF ERR=17 AND E%=0 ENDPROC 590ON ERROR OFF:PROCquit 600REPORT:PRINT" at ";ERL 610END 620DEF PROCmessage(m$):VDU7 630PROCwindow(2):PROCcn(m$,1):ENDPROC 640DEF PROCos($f%):LOCAL X%,Y% 650X%=f%:Y%=X%DIV256:CALLoscli 660ENDPROC 670DEF PROCwindow(W%) 680IF W%=0 lx%=0:by%=24:rx%=39:ty%=0 690IF W%=1 lx%=3:by%=21:rx%=36:ty%=2 700IF W%=2 lx%=3:by%=24:rx%=36:ty%=22 710VDU28lx%by%rx%ty%12:ENDPROC 720DEF FNclose(F%) 730IF F%<>0 CLOSE#F%:F%=0 740=F% 750DEF FNopenout($f%) 760LOCAL A%,X%,Y% 770X%=f%:Y%=X%DIV256 780A%=&80:=USR(osfind)AND&FF 790DEF FNopenin($f%) 800LOCAL A%,X%,Y%:X%=f% 810Y%=X%DIV256:A%=&40 820=USR(osfind)AND&FF 830DEF PROCdelete(f$) 840LOCAL F%:F%=FNopenin(f$) 850IF F%=0 ENDPROC 860F%=FNclose(F%) 870PROCos("DELETE "+f$) 880ENDPROC 890DEF PROCrename(f$,t$) 900PROCos("RENAME "+f$+" "+t$) 910ENDPROC 920DEF FNfilename(t$,Y%) 930PRINTTAB(10,Y%)t$" : " 940of$=FNstring(of$,8,Y%+2,20) 950=of$ 960DEF FNstring(s$,X%,Y%,L%) 970LOCAL I%,P%,a$:P%=LENs$ 980VDU31X%+L%+2Y%,156 990VDU31X%-3Y%,132,157,131 1000PRINTSPCL%TAB(X%,Y%)s$; 1010REPEAT a$=all$ 1020IF P%>0 a$=a$+dl$+cr$ 1030IF P%=L% a$=dl$+cr$ 1040i$=MID$(a$,FNin(a$),1) 1050IF i$=dl$ VDU127:P%=P%-1:s$=LEFT$(s$,P%) ELSEIF i$<>cr$ PRINTi$;:s$=s$+i$:P%=P%+1 1060UNTIL i$=cr$:=s$ 1070DEF PROCgenError(e$):E%=99 1080A%=125:CALLosbyte:ENDPROC 1090DEF PROCquit:*FX4 1100PROCon:VDU26,12:ENDPROC 1110DEF FNmenu:LOCAL O%,o$ 1120PROChead("Make File") 1130FOR O%=1 TO opts%:o$="" 1140IF opt$(O%,2)="settype" o$="("+type$(type)+")" 1150IF opt$(O%,2)="editw" o$="("+STR$numwords+")" 1160IF opt$(O%,2)="editr" o$="("+STR$numrepls+")" 1170PROCout(O%,6,O%*2-1,o$):NEXT 1180PRINT'SPC10"Enter choice"; 1190=FNin(opts$) 1200DEF PROChead(t$) 1210PROCwindow(0) 1220LOCAL L%:FOR L%=0 TO 1 1230VDU31,0,L%,132,157,131 1240NEXT:PROCdb(t$,0) 1250FOR L%=22 TO 24 1260VDU31,0,L%,132,157,131 1270NEXT:PROCwindow(1):ENDPROC 1280DEF PROCdb(t$,Y%) 1290PROCcn(CHR$141+t$+" ",Y%) 1300PROCcn(CHR$141+t$+" ",Y%+1) 1310ENDPROC 1320DEF PROCcn(t$,Y%) 1330PRINTTAB((rx%-lx%-LENt$)/2,Y%)t$; 1340ENDPROC 1350DEF PROCout(O%,X%,Y%,o$) 1360LOCAL t$:t$=CHR$129+STR$O%+"." 1370t$=t$+CHR$134+opt$(O%,1) 1380PRINTTAB(X%,Y%)t$CHR$135o$ 1390ENDPROC 1400DEF FNin(k$) 1410LOCAL I%:REPEAT PROCon 1420I%=INSTR(k$,GET$):PROCoff 1430VDU-7*(I%=0):UNTIL I%>0 1440shift%=INKEY-1:=I% 1450DEF PROCsure:VDU7 1460PROCmessage("Are you sure? (y/n)") 1470IF FNin("YyNn")>2 PROCgenError("Aborted") 1480PROCwindow(2):ENDPROC 1490DEF PROCnowords 1500IF numwords=0 PROCgenError("No words") 1510ENDPROC 1520DEF PROCnorepls 1530IF numrepls=0 PROCgenError("No replacements") 1540ENDPROC 1550DEF FNsave 1560LOCAL L%,f$:PROCnowords 1570f$=FNfilename("Save",3) 1580F%=FNopenout(temp$) 1590IF F%=0 PROCgenError("Can't open output file") 1600PRINT#F%,type,numrepls,numwords 1610FOR L%=1 TO numrepls 1620PRINT#F%,repl$(L%):NEXT 1630FOR L%=1 TO numwords 1640PRINT#F%,word$(L%):NEXT 1650F%=FNclose(F%):PROCdelete(f$) 1660PROCrename(temp$,f$) 1670PROCdelete(temp$) 1680edited=FALSE:=0 1690DEF FNload:LOCAL L%,f$ 1700IF edited PROCgenError("Unsaved data") 1710f$=FNfilename("Load",3) 1720F%=FNopenin(f$) 1730IF F%=0 PROCgenError("Can't open input file") 1740INPUT#F%,type,numrepls,numwords 1750IF type>types PROCgenError("Unknown file type") 1760IF numwords>maxwords PROCgenError("Too many words") 1770IF numrepls>maxrepls PROCgenError("Too many replacements") 1780FOR L%=1 TO numrepls 1790INPUT#F%,repl$(L%):NEXT 1800FOR L%=1 TO numwords 1810INPUT#F%,word$(L%):NEXT 1820F%=FNclose(F%):edited=FALSE 1830curword=1:currepl=1:=0 1840DEF FNsettype 1850PRINTTAB(1,1)"Press space to increment"TAB(1,2)"and Return to select" 1860REPEAT 1870PRINTTAB(0,5)SPC80TAB(10,5)type$(type); 1880type=type+1:IF type>types type=1 1890UNTIL FNin(cr$+" ")=1 1900type=type-1:IF type=0 type=types 1910=0 1920DEF FNeditw 1930REPEAT PROCwindow(1) 1940PRINTTAB(1,1)"Use arrow keys to select a word"TAB(1,2)"and Return to edit it" 1950word$(numwords+1)=null$ 1960PRINTTAB(1,5)"Word ";curword" of ";numwords" = "word$(curword); 1970I%=FNin(cursor$) 1980IF I%=1 curword=curword-1 1990IF curword=0 curword=numwords+1 2000IF I%=2 curword=curword+1 2010IF curword=numwords+2 curword=1 2020IF I%=3 PROCeditword(curword) 2030IF I%=4 PROCdeleteword(curword) 2040UNTIL FALSE:=0 2050DEF PROCeditword(W%) 2060IF numwords=maxwords PROCgenError("No more allowed") 2070w$=FNstring(word$(W%),8,7,20) 2080IF word$(W%)=null$ numwords=numwords+1 2090word$(W%)=w$:curword=curword+1 2100edited=TRUE:ENDPROC 2110DEF PROCdeleteword(W%) 2120LOCAL L%:PROCnowords 2130IF curword=numwords+1 PROCgenError("Can't delete marker") 2140PROCsure:edited=TRUE 2150FOR L%=curword TO numwords 2160word$(L%)=word$(L%+1):NEXT 2170numwords=numwords-1:ENDPROC 2180DEF FNclearw:IF edited PROCsure 2190numwords=0:=0 2200DEF FNprint:PROCnowords 2210PROCmessage("Ready printer...") 2220Z%=FNin(" "):*FX3,10 2230FOR L%=1 TO numwords 2240PRINTL%SPC6word$(L%):NEXT:*FX3,4 2250=0 2260DEF FNeditr 2270REPEAT PROCwindow(1) 2280PRINTTAB(1,1)"Use arrow keys to select" 2290PRINTTAB(1,2)"and RETURN to edit" 2300repl$(numrepls+1)=null$ 2310PRINTTAB(1,5)"Word ";currepl" of ";numrepls" = "repl$(currepl); 2320I%=FNin(cursor$) 2330IF I%=1 currepl=currepl-1 2340IF currepl=0 currepl=numrepls+1 2350IF I%=2 currepl=currepl+1 2360IF currepl=numrepls+2 currepl=1 2370IF I%=3 PROCeditrepl(currepl) 2380IF I%=4 PROCdeleterepl(currepl) 2390UNTIL FALSE:=0 2400DEF PROCeditrepl(R%) 2410IF numrepls=maxrepls PROCgenError("No more allowed") 2420w$=FNstring(repl$(R%),8,7,20) 2430IF repl$(R%)=null$ numrepls=numrepls+1 2440repl$(R%)=w$:currepl=currepl+1 2450edited=TRUE:ENDPROC 2460DEF PROCdeleterepl(R%) 2470LOCAL L%:PROCnorepls 2480IF currepl=numrepls+1 PROCgenError("Can't delete marker") 2490PROCsure:edited=TRUE 2500FOR L%=currepl TO numrepls 2510repl$(L%)=repl$(L%+1):NEXT 2520numrepls=numrepls-1:ENDPROC 2530DEF FNclearw:IF edited PROCsure 2540numrepls=0:=0 2550DEF FNquit:IF edited PROCsure 2560=TRUE
� Make Word File � by Gordon Lethbridge � (c) The Micro User (�7 2 �init <� � �error F� PO%=�menu Z � O%<opts% �head(opt$(O%,1)) dquit=�("FN"+opt$(O%,2)) n � quit x �quit �� �� �init:�off:*FX4,1 �maxwords=100:numwords=0 �#� word$(maxwords+1):null$="***" �maxrepls=5:numrepls=0 �� repl$(maxrepls+1) �currepl=1:curword=1 �� opts%:� opt$(opts%,2) �� O%=1 � opts% �� opt$(O%,1),opt$(O%,2) �opts$=opts$+�O%:� �� types:� type$(types) �� T%=1 � types � type$(T%):�:type=1 of$="":F%=0:temp$="temp" � f%256:osfind=&FFCE "!E%=0:osbyte=&FFF4:oscli=&FFF7 ,$lo$="abcdefghijklmnopqrstuvwxyz" 6$hi$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" @"alf$=lo$+hi$:num$="0123456789" Jpunc$="!#$%&()=-^|@:." Tall$=alf$+num$+punc$ ^dl$=�127:cr$=�13 h�window(0):edited=� rcursor$=�&8B+�&8A+cr$+dl$ |� �� 9 �� Save words,save �� Load words,load �� Set file type,settype �� Edit words,editw �� Clear words,clearw �� Print words,print �� Edit replacements,editr �� Clear replacements,clearr �� Quit,quit �� 3 �� Replace,Magic E,Plurals � � �off �23,1,0;0;0;0;0;:� � �on �23,1,1;0;0;0;0;:� &� �error 0�off:F%=�close(F%) :/� �=17 � E%>0 E%=0:�message(e$):Z%=�in(" ") D� �=17 � E%=0 � N� � �:�quit X�:�" at ";� b� l� �message(m$):�7 v�window(2):�cn(m$,1):� �� �os($f%):� X%,Y% �X%=f%:Y%=X%�256:�oscli �� �� �window(W%) �$� W%=0 lx%=0:by%=24:rx%=39:ty%=0 �$� W%=1 lx%=3:by%=21:rx%=36:ty%=2 �%� W%=2 lx%=3:by%=24:rx%=36:ty%=22 ��28lx%by%rx%ty%12:� �� �close(F%) �� F%<>0 �#F%:F%=0 �=F% �� �openout($f%) �� A%,X%,Y% X%=f%:Y%=X%�256 A%=&80:=�(osfind)�&FF � �openin($f%) � A%,X%,Y%:X%=f% *Y%=X%�256:A%=&40 4=�(osfind)�&FF >� �delete(f$) H� F%:F%=�openin(f$) R� F%=0 � \F%=�close(F%) f�os("DELETE "+f$) p� z� �rename(f$,t$) ��os("RENAME "+f$+" "+t$) �� �� �filename(t$,Y%) ��10,Y%)t$" : " �of$=�string(of$,8,Y%+2,20) �=of$ �� �string(s$,X%,Y%,L%) �� I%,P%,a$:P%=�s$ ��31X%+L%+2Y%,156 ��31X%-3Y%,132,157,131 ��L%�X%,Y%)s$; � � a$=all$ �� P%>0 a$=a$+dl$+cr$ � P%=L% a$=dl$+cr$ i$=�a$,�in(a$),1) E� i$=dl$ �127:P%=P%-1:s$=�s$,P%) �� i$<>cr$ �i$;:s$=s$+i$:P%=P%+1 $� i$=cr$:=s$ .� �genError(e$):E%=99 8A%=125:�osbyte:� B� �quit:*FX4 L�on:�26,12:� V� �menu:� O%,o$ `�head("Make File") j� O%=1 � opts%:o$="" t1� opt$(O%,2)="settype" o$="("+type$(type)+")" ~-� opt$(O%,2)="editw" o$="("+�numwords+")" �-� opt$(O%,2)="editr" o$="("+�numrepls+")" ��out(O%,6,O%*2-1,o$):� ��'�10"Enter choice"; �=�in(opts$) �� �head(t$) ��window(0) �� L%:� L%=0 � 1 ��31,0,L%,132,157,131 ��:�db(t$,0) �� L%=22 � 24 ��31,0,L%,132,157,131 ��:�window(1):� � �db(t$,Y%) �cn(�141+t$+" ",Y%) �cn(�141+t$+" ",Y%+1) � (� �cn(t$,Y%) 2�(rx%-lx%-�t$)/2,Y%)t$; <� F� �out(O%,X%,Y%,o$) P� t$:t$=�129+�O%+"." Zt$=t$+�134+opt$(O%,1) d�X%,Y%)t$�135o$ n� x � �in(k$) �� I%:� �on �I%=�k$,�):�off ��-7*(I%=0):� I%>0 �shift%=�-1:=I% �� �sure:�7 �#�message("Are you sure? (y/n)") �(� �in("YyNn")>2 �genError("Aborted") ��window(2):� �� �nowords �&� numwords=0 �genError("No words") �� �� �norepls �-� numrepls=0 �genError("No replacements") � � �save � L%,f$:�nowords "f$=�filename("Save",3) ,F%=�openout(temp$) 6.� F%=0 �genError("Can't open output file") @�#F%,type,numrepls,numwords J� L%=1 � numrepls T�#F%,repl$(L%):� ^� L%=1 � numwords h�#F%,word$(L%):� rF%=�close(F%):�delete(f$) |�rename(temp$,f$) ��delete(temp$) �edited=�:=0 �� �load:� L%,f$ �&� edited �genError("Unsaved data") �f$=�filename("Load",3) �F%=�openin(f$) �-� F%=0 �genError("Can't open input file") ��#F%,type,numrepls,numwords �/� type>types �genError("Unknown file type") �3� numwords>maxwords �genError("Too many words") �:� numrepls>maxrepls �genError("Too many replacements") �� L%=1 � numrepls ��#F%,repl$(L%):� � L%=1 � numwords �#F%,word$(L%):� F%=�close(F%):edited=� &curword=1:currepl=1:=0 0� �settype :?�1,1)"Press space to increment"�1,2)"and Return to select" D� N�0,5)�80�10,5)type$(type); X#type=type+1:� type>types type=1 b� �in(cr$+" ")=1 l#type=type-1:� type=0 type=types v=0 �� �editw �� �window(1) �G�1,1)"Use arrow keys to select a word"�1,2)"and Return to edit it" �word$(numwords+1)=null$ �<�1,5)"Word ";curword" of ";numwords" = "word$(curword); �I%=�in(cursor$) �� I%=1 curword=curword-1 �"� curword=0 curword=numwords+1 �� I%=2 curword=curword+1 �"� curword=numwords+2 curword=1 �� I%=3 �editword(curword) �� I%=4 �deleteword(curword) � � �:=0 � �editword(W%) 4� numwords=maxwords �genError("No more allowed") w$=�string(word$(W%),8,7,20) )� word$(W%)=null$ numwords=numwords+1 *"word$(W%)=w$:curword=curword+1 4edited=�:� >� �deleteword(W%) H� L%:�nowords R9� curword=numwords+1 �genError("Can't delete marker") \�sure:edited=� f� L%=curword � numwords pword$(L%)=word$(L%+1):� znumwords=numwords-1:� �� �clearw:� edited �sure �numwords=0:=0 �� �print:�nowords � �message("Ready printer...") �Z%=�in(" "):*FX3,10 �� L%=1 � numwords ��L%�6word$(L%):�:*FX3,4 �=0 �� �editr �� �window(1) �$�1,1)"Use arrow keys to select" ��1,2)"and RETURN to edit" �repl$(numrepls+1)=null$ <�1,5)"Word ";currepl" of ";numrepls" = "repl$(currepl); I%=�in(cursor$) � I%=1 currepl=currepl-1 $"� currepl=0 currepl=numrepls+1 .� I%=2 currepl=currepl+1 8"� currepl=numrepls+2 currepl=1 B� I%=3 �editrepl(currepl) L� I%=4 �deleterepl(currepl) V � �:=0 `� �editrepl(R%) j4� numrepls=maxrepls �genError("No more allowed") t w$=�string(repl$(R%),8,7,20) ~)� repl$(R%)=null$ numrepls=numrepls+1 �"repl$(R%)=w$:currepl=currepl+1 �edited=�:� �� �deleterepl(R%) �� L%:�norepls �9� currepl=numrepls+1 �genError("Can't delete marker") ��sure:edited=� �� L%=currepl � numrepls �repl$(L%)=repl$(L%+1):� �numrepls=numrepls-1:� �� �clearw:� edited �sure �numrepls=0:=0 �� �quit:� edited �sure =� �
00000000 0d 00 0a 14 f4 20 4d 61 6b 65 20 57 6f 72 64 20 |..... Make Word | 00000010 46 69 6c 65 0d 00 14 1a f4 20 62 79 20 47 6f 72 |File..... by Gor| 00000020 64 6f 6e 20 4c 65 74 68 62 72 69 64 67 65 0d 00 |don Lethbridge..| 00000030 1e 18 f4 20 28 63 29 20 54 68 65 20 4d 69 63 72 |... (c) The Micr| 00000040 6f 20 55 73 65 72 0d 00 28 06 eb 37 0d 00 32 09 |o User..(..7..2.| 00000050 f2 69 6e 69 74 0d 00 3c 0e ee 20 85 20 f2 65 72 |.init..<.. . .er| 00000060 72 6f 72 0d 00 46 05 f5 0d 00 50 0c 4f 25 3d a4 |ror..F....P.O%=.| 00000070 6d 65 6e 75 0d 00 5a 20 e7 20 4f 25 3c 6f 70 74 |menu..Z . O%<opt| 00000080 73 25 20 f2 68 65 61 64 28 6f 70 74 24 28 4f 25 |s% .head(opt$(O%| 00000090 2c 31 29 29 0d 00 64 1b 71 75 69 74 3d a0 28 22 |,1))..d.quit=.("| 000000a0 46 4e 22 2b 6f 70 74 24 28 4f 25 2c 32 29 29 0d |FN"+opt$(O%,2)).| 000000b0 00 6e 0a fd 20 71 75 69 74 0d 00 78 09 f2 71 75 |.n.. quit..x..qu| 000000c0 69 74 0d 00 82 05 e0 0d 00 8c 17 dd 20 f2 69 6e |it.......... .in| 000000d0 69 74 3a f2 6f 66 66 3a 2a 46 58 34 2c 31 0d 00 |it:.off:*FX4,1..| 000000e0 96 1b 6d 61 78 77 6f 72 64 73 3d 31 30 30 3a 6e |..maxwords=100:n| 000000f0 75 6d 77 6f 72 64 73 3d 30 0d 00 a0 23 de 20 77 |umwords=0...#. w| 00000100 6f 72 64 24 28 6d 61 78 77 6f 72 64 73 2b 31 29 |ord$(maxwords+1)| 00000110 3a 6e 75 6c 6c 24 3d 22 2a 2a 2a 22 0d 00 aa 19 |:null$="***"....| 00000120 6d 61 78 72 65 70 6c 73 3d 35 3a 6e 75 6d 72 65 |maxrepls=5:numre| 00000130 70 6c 73 3d 30 0d 00 b4 17 de 20 72 65 70 6c 24 |pls=0..... repl$| 00000140 28 6d 61 78 72 65 70 6c 73 2b 31 29 0d 00 be 17 |(maxrepls+1)....| 00000150 63 75 72 72 65 70 6c 3d 31 3a 63 75 72 77 6f 72 |currepl=1:curwor| 00000160 64 3d 31 0d 00 c8 1b f3 20 6f 70 74 73 25 3a de |d=1..... opts%:.| 00000170 20 6f 70 74 24 28 6f 70 74 73 25 2c 32 29 0d 00 | opt$(opts%,2)..| 00000180 d2 12 e3 20 4f 25 3d 31 20 b8 20 6f 70 74 73 25 |... O%=1 . opts%| 00000190 0d 00 dc 1b f3 20 6f 70 74 24 28 4f 25 2c 31 29 |..... opt$(O%,1)| 000001a0 2c 6f 70 74 24 28 4f 25 2c 32 29 0d 00 e6 15 6f |,opt$(O%,2)....o| 000001b0 70 74 73 24 3d 6f 70 74 73 24 2b c3 4f 25 3a ed |pts$=opts$+.O%:.| 000001c0 0d 00 f0 1a f3 20 74 79 70 65 73 3a de 20 74 79 |..... types:. ty| 000001d0 70 65 24 28 74 79 70 65 73 29 0d 00 fa 12 e3 20 |pe$(types)..... | 000001e0 54 25 3d 31 20 b8 20 74 79 70 65 73 0d 01 04 18 |T%=1 . types....| 000001f0 f3 20 74 79 70 65 24 28 54 25 29 3a ed 3a 74 79 |. type$(T%):.:ty| 00000200 70 65 3d 31 0d 01 0e 1c 6f 66 24 3d 22 22 3a 46 |pe=1....of$="":F| 00000210 25 3d 30 3a 74 65 6d 70 24 3d 22 74 65 6d 70 22 |%=0:temp$="temp"| 00000220 0d 01 18 18 de 20 66 25 32 35 36 3a 6f 73 66 69 |..... f%256:osfi| 00000230 6e 64 3d 26 46 46 43 45 0d 01 22 21 45 25 3d 30 |nd=&FFCE.."!E%=0| 00000240 3a 6f 73 62 79 74 65 3d 26 46 46 46 34 3a 6f 73 |:osbyte=&FFF4:os| 00000250 63 6c 69 3d 26 46 46 46 37 0d 01 2c 24 6c 6f 24 |cli=&FFF7..,$lo$| 00000260 3d 22 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e |="abcdefghijklmn| 00000270 6f 70 71 72 73 74 75 76 77 78 79 7a 22 0d 01 36 |opqrstuvwxyz"..6| 00000280 24 68 69 24 3d 22 41 42 43 44 45 46 47 48 49 4a |$hi$="ABCDEFGHIJ| 00000290 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a |KLMNOPQRSTUVWXYZ| 000002a0 22 0d 01 40 22 61 6c 66 24 3d 6c 6f 24 2b 68 69 |"..@"alf$=lo$+hi| 000002b0 24 3a 6e 75 6d 24 3d 22 30 31 32 33 34 35 36 37 |$:num$="01234567| 000002c0 38 39 22 0d 01 4a 1a 70 75 6e 63 24 3d 22 21 23 |89"..J.punc$="!#| 000002d0 24 25 26 28 29 3d 2d 5e 7c 40 3a 2e 22 0d 01 54 |$%&()=-^|@:."..T| 000002e0 18 61 6c 6c 24 3d 61 6c 66 24 2b 6e 75 6d 24 2b |.all$=alf$+num$+| 000002f0 70 75 6e 63 24 0d 01 5e 14 64 6c 24 3d bd 31 32 |punc$..^.dl$=.12| 00000300 37 3a 63 72 24 3d bd 31 33 0d 01 68 17 f2 77 69 |7:cr$=.13..h..wi| 00000310 6e 64 6f 77 28 30 29 3a 65 64 69 74 65 64 3d a3 |ndow(0):edited=.| 00000320 0d 01 72 1d 63 75 72 73 6f 72 24 3d bd 26 38 42 |..r.cursor$=.&8B| 00000330 2b bd 26 38 41 2b 63 72 24 2b 64 6c 24 0d 01 7c |+.&8A+cr$+dl$..|| 00000340 05 e1 0d 01 86 07 dc 20 39 0d 01 90 15 dc 20 53 |....... 9..... S| 00000350 61 76 65 20 77 6f 72 64 73 2c 73 61 76 65 0d 01 |ave words,save..| 00000360 9a 15 dc 20 4c 6f 61 64 20 77 6f 72 64 73 2c 6c |... Load words,l| 00000370 6f 61 64 0d 01 a4 1b dc 20 53 65 74 20 66 69 6c |oad..... Set fil| 00000380 65 20 74 79 70 65 2c 73 65 74 74 79 70 65 0d 01 |e type,settype..| 00000390 ae 16 dc 20 45 64 69 74 20 77 6f 72 64 73 2c 65 |... Edit words,e| 000003a0 64 69 74 77 0d 01 b8 18 dc 20 43 6c 65 61 72 20 |ditw..... Clear | 000003b0 77 6f 72 64 73 2c 63 6c 65 61 72 77 0d 01 c2 17 |words,clearw....| 000003c0 dc 20 50 72 69 6e 74 20 77 6f 72 64 73 2c 70 72 |. Print words,pr| 000003d0 69 6e 74 0d 01 cc 1d dc 20 45 64 69 74 20 72 65 |int..... Edit re| 000003e0 70 6c 61 63 65 6d 65 6e 74 73 2c 65 64 69 74 72 |placements,editr| 000003f0 0d 01 d6 1f dc 20 43 6c 65 61 72 20 72 65 70 6c |..... Clear repl| 00000400 61 63 65 6d 65 6e 74 73 2c 63 6c 65 61 72 72 0d |acements,clearr.| 00000410 01 e0 0f dc 20 51 75 69 74 2c 71 75 69 74 0d 01 |.... Quit,quit..| 00000420 ea 07 dc 20 33 0d 01 f4 1d dc 20 52 65 70 6c 61 |... 3..... Repla| 00000430 63 65 2c 4d 61 67 69 63 20 45 2c 50 6c 75 72 61 |ce,Magic E,Plura| 00000440 6c 73 0d 01 fe 0a dd 20 f2 6f 66 66 0d 02 08 16 |ls..... .off....| 00000450 ef 32 33 2c 31 2c 30 3b 30 3b 30 3b 30 3b 30 3b |.23,1,0;0;0;0;0;| 00000460 3a e1 0d 02 12 09 dd 20 f2 6f 6e 0d 02 1c 16 ef |:...... .on.....| 00000470 32 33 2c 31 2c 31 3b 30 3b 30 3b 30 3b 30 3b 3a |23,1,1;0;0;0;0;:| 00000480 e1 0d 02 26 0c dd 20 f2 65 72 72 6f 72 0d 02 30 |...&.. .error..0| 00000490 16 f2 6f 66 66 3a 46 25 3d a4 63 6c 6f 73 65 28 |..off:F%=.close(| 000004a0 46 25 29 0d 02 3a 2f e7 20 9f 3d 31 37 20 80 20 |F%)..:/. .=17 . | 000004b0 45 25 3e 30 20 45 25 3d 30 3a f2 6d 65 73 73 61 |E%>0 E%=0:.messa| 000004c0 67 65 28 65 24 29 3a 5a 25 3d a4 69 6e 28 22 20 |ge(e$):Z%=.in(" | 000004d0 22 29 0d 02 44 13 e7 20 9f 3d 31 37 20 80 20 45 |")..D.. .=17 . E| 000004e0 25 3d 30 20 e1 0d 02 4e 0f ee 20 85 20 87 3a f2 |%=0 ...N.. . .:.| 000004f0 71 75 69 74 0d 02 58 0f f6 3a f1 22 20 61 74 20 |quit..X..:." at | 00000500 22 3b 9e 0d 02 62 05 e0 0d 02 6c 15 dd 20 f2 6d |";...b....l.. .m| 00000510 65 73 73 61 67 65 28 6d 24 29 3a ef 37 0d 02 76 |essage(m$):.7..v| 00000520 1a f2 77 69 6e 64 6f 77 28 32 29 3a f2 63 6e 28 |..window(2):.cn(| 00000530 6d 24 2c 31 29 3a e1 0d 02 80 16 dd 20 f2 6f 73 |m$,1):...... .os| 00000540 28 24 66 25 29 3a ea 20 58 25 2c 59 25 0d 02 8a |($f%):. X%,Y%...| 00000550 1a 58 25 3d 66 25 3a 59 25 3d 58 25 81 32 35 36 |.X%=f%:Y%=X%.256| 00000560 3a d6 6f 73 63 6c 69 0d 02 94 05 e1 0d 02 9e 11 |:.oscli.........| 00000570 dd 20 f2 77 69 6e 64 6f 77 28 57 25 29 0d 02 a8 |. .window(W%)...| 00000580 24 e7 20 57 25 3d 30 20 6c 78 25 3d 30 3a 62 79 |$. W%=0 lx%=0:by| 00000590 25 3d 32 34 3a 72 78 25 3d 33 39 3a 74 79 25 3d |%=24:rx%=39:ty%=| 000005a0 30 0d 02 b2 24 e7 20 57 25 3d 31 20 6c 78 25 3d |0...$. W%=1 lx%=| 000005b0 33 3a 62 79 25 3d 32 31 3a 72 78 25 3d 33 36 3a |3:by%=21:rx%=36:| 000005c0 74 79 25 3d 32 0d 02 bc 25 e7 20 57 25 3d 32 20 |ty%=2...%. W%=2 | 000005d0 6c 78 25 3d 33 3a 62 79 25 3d 32 34 3a 72 78 25 |lx%=3:by%=24:rx%| 000005e0 3d 33 36 3a 74 79 25 3d 32 32 0d 02 c6 17 ef 32 |=36:ty%=22.....2| 000005f0 38 6c 78 25 62 79 25 72 78 25 74 79 25 31 32 3a |8lx%by%rx%ty%12:| 00000600 e1 0d 02 d0 10 dd 20 a4 63 6c 6f 73 65 28 46 25 |...... .close(F%| 00000610 29 0d 02 da 15 e7 20 46 25 3c 3e 30 20 d9 23 46 |)..... F%<>0 .#F| 00000620 25 3a 46 25 3d 30 0d 02 e4 07 3d 46 25 0d 02 ee |%:F%=0....=F%...| 00000630 13 dd 20 a4 6f 70 65 6e 6f 75 74 28 24 66 25 29 |.. .openout($f%)| 00000640 0d 02 f8 0e ea 20 41 25 2c 58 25 2c 59 25 0d 03 |..... A%,X%,Y%..| 00000650 02 13 58 25 3d 66 25 3a 59 25 3d 58 25 81 32 35 |..X%=f%:Y%=X%.25| 00000660 36 0d 03 0c 19 41 25 3d 26 38 30 3a 3d ba 28 6f |6....A%=&80:=.(o| 00000670 73 66 69 6e 64 29 80 26 46 46 0d 03 16 12 dd 20 |sfind).&FF..... | 00000680 a4 6f 70 65 6e 69 6e 28 24 66 25 29 0d 03 20 14 |.openin($f%).. .| 00000690 ea 20 41 25 2c 58 25 2c 59 25 3a 58 25 3d 66 25 |. A%,X%,Y%:X%=f%| 000006a0 0d 03 2a 14 59 25 3d 58 25 81 32 35 36 3a 41 25 |..*.Y%=X%.256:A%| 000006b0 3d 26 34 30 0d 03 34 12 3d ba 28 6f 73 66 69 6e |=&40..4.=.(osfin| 000006c0 64 29 80 26 46 46 0d 03 3e 11 dd 20 f2 64 65 6c |d).&FF..>.. .del| 000006d0 65 74 65 28 66 24 29 0d 03 48 17 ea 20 46 25 3a |ete(f$)..H.. F%:| 000006e0 46 25 3d a4 6f 70 65 6e 69 6e 28 66 24 29 0d 03 |F%=.openin(f$)..| 000006f0 52 0c e7 20 46 25 3d 30 20 e1 0d 03 5c 11 46 25 |R.. F%=0 ...\.F%| 00000700 3d a4 63 6c 6f 73 65 28 46 25 29 0d 03 66 15 f2 |=.close(F%)..f..| 00000710 6f 73 28 22 44 45 4c 45 54 45 20 22 2b 66 24 29 |os("DELETE "+f$)| 00000720 0d 03 70 05 e1 0d 03 7a 14 dd 20 f2 72 65 6e 61 |..p....z.. .rena| 00000730 6d 65 28 66 24 2c 74 24 29 0d 03 84 1c f2 6f 73 |me(f$,t$).....os| 00000740 28 22 52 45 4e 41 4d 45 20 22 2b 66 24 2b 22 20 |("RENAME "+f$+" | 00000750 22 2b 74 24 29 0d 03 8e 05 e1 0d 03 98 16 dd 20 |"+t$).......... | 00000760 a4 66 69 6c 65 6e 61 6d 65 28 74 24 2c 59 25 29 |.filename(t$,Y%)| 00000770 0d 03 a2 13 f1 8a 31 30 2c 59 25 29 74 24 22 20 |......10,Y%)t$" | 00000780 3a 20 22 0d 03 ac 1e 6f 66 24 3d a4 73 74 72 69 |: "....of$=.stri| 00000790 6e 67 28 6f 66 24 2c 38 2c 59 25 2b 32 2c 32 30 |ng(of$,8,Y%+2,20| 000007a0 29 0d 03 b6 08 3d 6f 66 24 0d 03 c0 1a dd 20 a4 |)....=of$..... .| 000007b0 73 74 72 69 6e 67 28 73 24 2c 58 25 2c 59 25 2c |string(s$,X%,Y%,| 000007c0 4c 25 29 0d 03 ca 15 ea 20 49 25 2c 50 25 2c 61 |L%)..... I%,P%,a| 000007d0 24 3a 50 25 3d a9 73 24 0d 03 d4 14 ef 33 31 58 |$:P%=.s$.....31X| 000007e0 25 2b 4c 25 2b 32 59 25 2c 31 35 36 0d 03 de 19 |%+L%+2Y%,156....| 000007f0 ef 33 31 58 25 2d 33 59 25 2c 31 33 32 2c 31 35 |.31X%-3Y%,132,15| 00000800 37 2c 31 33 31 0d 03 e8 12 f1 89 4c 25 8a 58 25 |7,131......L%.X%| 00000810 2c 59 25 29 73 24 3b 0d 03 f2 0d f5 20 61 24 3d |,Y%)s$;..... a$=| 00000820 61 6c 6c 24 0d 03 fc 18 e7 20 50 25 3e 30 20 61 |all$..... P%>0 a| 00000830 24 3d 61 24 2b 64 6c 24 2b 63 72 24 0d 04 06 16 |$=a$+dl$+cr$....| 00000840 e7 20 50 25 3d 4c 25 20 61 24 3d 64 6c 24 2b 63 |. P%=L% a$=dl$+c| 00000850 72 24 0d 04 10 15 69 24 3d c1 61 24 2c a4 69 6e |r$....i$=.a$,.in| 00000860 28 61 24 29 2c 31 29 0d 04 1a 45 e7 20 69 24 3d |(a$),1)...E. i$=| 00000870 64 6c 24 20 ef 31 32 37 3a 50 25 3d 50 25 2d 31 |dl$ .127:P%=P%-1| 00000880 3a 73 24 3d c0 73 24 2c 50 25 29 20 8b e7 20 69 |:s$=.s$,P%) .. i| 00000890 24 3c 3e 63 72 24 20 f1 69 24 3b 3a 73 24 3d 73 |$<>cr$ .i$;:s$=s| 000008a0 24 2b 69 24 3a 50 25 3d 50 25 2b 31 0d 04 24 10 |$+i$:P%=P%+1..$.| 000008b0 fd 20 69 24 3d 63 72 24 3a 3d 73 24 0d 04 2e 19 |. i$=cr$:=s$....| 000008c0 dd 20 f2 67 65 6e 45 72 72 6f 72 28 65 24 29 3a |. .genError(e$):| 000008d0 45 25 3d 39 39 0d 04 38 14 41 25 3d 31 32 35 3a |E%=99..8.A%=125:| 000008e0 d6 6f 73 62 79 74 65 3a e1 0d 04 42 10 dd 20 f2 |.osbyte:...B.. .| 000008f0 71 75 69 74 3a 2a 46 58 34 0d 04 4c 10 f2 6f 6e |quit:*FX4..L..on| 00000900 3a ef 32 36 2c 31 32 3a e1 0d 04 56 13 dd 20 a4 |:.26,12:...V.. .| 00000910 6d 65 6e 75 3a ea 20 4f 25 2c 6f 24 0d 04 60 16 |menu:. O%,o$..`.| 00000920 f2 68 65 61 64 28 22 4d 61 6b 65 20 46 69 6c 65 |.head("Make File| 00000930 22 29 0d 04 6a 18 e3 20 4f 25 3d 31 20 b8 20 6f |")..j.. O%=1 . o| 00000940 70 74 73 25 3a 6f 24 3d 22 22 0d 04 74 31 e7 20 |pts%:o$=""..t1. | 00000950 6f 70 74 24 28 4f 25 2c 32 29 3d 22 73 65 74 74 |opt$(O%,2)="sett| 00000960 79 70 65 22 20 6f 24 3d 22 28 22 2b 74 79 70 65 |ype" o$="("+type| 00000970 24 28 74 79 70 65 29 2b 22 29 22 0d 04 7e 2d e7 |$(type)+")"..~-.| 00000980 20 6f 70 74 24 28 4f 25 2c 32 29 3d 22 65 64 69 | opt$(O%,2)="edi| 00000990 74 77 22 20 6f 24 3d 22 28 22 2b c3 6e 75 6d 77 |tw" o$="("+.numw| 000009a0 6f 72 64 73 2b 22 29 22 0d 04 88 2d e7 20 6f 70 |ords+")"...-. op| 000009b0 74 24 28 4f 25 2c 32 29 3d 22 65 64 69 74 72 22 |t$(O%,2)="editr"| 000009c0 20 6f 24 3d 22 28 22 2b c3 6e 75 6d 72 65 70 6c | o$="("+.numrepl| 000009d0 73 2b 22 29 22 0d 04 92 1a f2 6f 75 74 28 4f 25 |s+")".....out(O%| 000009e0 2c 36 2c 4f 25 2a 32 2d 31 2c 6f 24 29 3a ed 0d |,6,O%*2-1,o$):..| 000009f0 04 9c 18 f1 27 89 31 30 22 45 6e 74 65 72 20 63 |....'.10"Enter c| 00000a00 68 6f 69 63 65 22 3b 0d 04 a6 0f 3d a4 69 6e 28 |hoice";....=.in(| 00000a10 6f 70 74 73 24 29 0d 04 b0 0f dd 20 f2 68 65 61 |opts$)..... .hea| 00000a20 64 28 74 24 29 0d 04 ba 0e f2 77 69 6e 64 6f 77 |d(t$).....window| 00000a30 28 30 29 0d 04 c4 13 ea 20 4c 25 3a e3 20 4c 25 |(0)..... L%:. L%| 00000a40 3d 30 20 b8 20 31 0d 04 ce 18 ef 33 31 2c 30 2c |=0 . 1.....31,0,| 00000a50 4c 25 2c 31 33 32 2c 31 35 37 2c 31 33 31 0d 04 |L%,132,157,131..| 00000a60 d8 0f ed 3a f2 64 62 28 74 24 2c 30 29 0d 04 e2 |...:.db(t$,0)...| 00000a70 10 e3 20 4c 25 3d 32 32 20 b8 20 32 34 0d 04 ec |.. L%=22 . 24...| 00000a80 18 ef 33 31 2c 30 2c 4c 25 2c 31 33 32 2c 31 35 |..31,0,L%,132,15| 00000a90 37 2c 31 33 31 0d 04 f6 12 ed 3a f2 77 69 6e 64 |7,131.....:.wind| 00000aa0 6f 77 28 31 29 3a e1 0d 05 00 10 dd 20 f2 64 62 |ow(1):...... .db| 00000ab0 28 74 24 2c 59 25 29 0d 05 0a 17 f2 63 6e 28 bd |(t$,Y%).....cn(.| 00000ac0 31 34 31 2b 74 24 2b 22 20 22 2c 59 25 29 0d 05 |141+t$+" ",Y%)..| 00000ad0 14 19 f2 63 6e 28 bd 31 34 31 2b 74 24 2b 22 20 |...cn(.141+t$+" | 00000ae0 22 2c 59 25 2b 31 29 0d 05 1e 05 e1 0d 05 28 10 |",Y%+1).......(.| 00000af0 dd 20 f2 63 6e 28 74 24 2c 59 25 29 0d 05 32 1c |. .cn(t$,Y%)..2.| 00000b00 f1 8a 28 72 78 25 2d 6c 78 25 2d a9 74 24 29 2f |..(rx%-lx%-.t$)/| 00000b10 32 2c 59 25 29 74 24 3b 0d 05 3c 05 e1 0d 05 46 |2,Y%)t$;..<....F| 00000b20 17 dd 20 f2 6f 75 74 28 4f 25 2c 58 25 2c 59 25 |.. .out(O%,X%,Y%| 00000b30 2c 6f 24 29 0d 05 50 18 ea 20 74 24 3a 74 24 3d |,o$)..P.. t$:t$=| 00000b40 bd 31 32 39 2b c3 4f 25 2b 22 2e 22 0d 05 5a 19 |.129+.O%+"."..Z.| 00000b50 74 24 3d 74 24 2b bd 31 33 34 2b 6f 70 74 24 28 |t$=t$+.134+opt$(| 00000b60 4f 25 2c 31 29 0d 05 64 14 f1 8a 58 25 2c 59 25 |O%,1)..d...X%,Y%| 00000b70 29 74 24 bd 31 33 35 6f 24 0d 05 6e 05 e1 0d 05 |)t$.135o$..n....| 00000b80 78 0d dd 20 a4 69 6e 28 6b 24 29 0d 05 82 0e ea |x.. .in(k$).....| 00000b90 20 49 25 3a f5 20 f2 6f 6e 0d 05 8c 12 49 25 3d | I%:. .on....I%=| 00000ba0 a7 6b 24 2c be 29 3a f2 6f 66 66 0d 05 96 15 ef |.k$,.):.off.....| 00000bb0 2d 37 2a 28 49 25 3d 30 29 3a fd 20 49 25 3e 30 |-7*(I%=0):. I%>0| 00000bc0 0d 05 a0 12 73 68 69 66 74 25 3d a6 2d 31 3a 3d |....shift%=.-1:=| 00000bd0 49 25 0d 05 aa 0e dd 20 f2 73 75 72 65 3a ef 37 |I%..... .sure:.7| 00000be0 0d 05 b4 23 f2 6d 65 73 73 61 67 65 28 22 41 72 |...#.message("Ar| 00000bf0 65 20 79 6f 75 20 73 75 72 65 3f 20 28 79 2f 6e |e you sure? (y/n| 00000c00 29 22 29 0d 05 be 28 e7 20 a4 69 6e 28 22 59 79 |)")...(. .in("Yy| 00000c10 4e 6e 22 29 3e 32 20 f2 67 65 6e 45 72 72 6f 72 |Nn")>2 .genError| 00000c20 28 22 41 62 6f 72 74 65 64 22 29 0d 05 c8 10 f2 |("Aborted").....| 00000c30 77 69 6e 64 6f 77 28 32 29 3a e1 0d 05 d2 0e dd |window(2):......| 00000c40 20 f2 6e 6f 77 6f 72 64 73 0d 05 dc 26 e7 20 6e | .nowords...&. n| 00000c50 75 6d 77 6f 72 64 73 3d 30 20 f2 67 65 6e 45 72 |umwords=0 .genEr| 00000c60 72 6f 72 28 22 4e 6f 20 77 6f 72 64 73 22 29 0d |ror("No words").| 00000c70 05 e6 05 e1 0d 05 f0 0e dd 20 f2 6e 6f 72 65 70 |......... .norep| 00000c80 6c 73 0d 05 fa 2d e7 20 6e 75 6d 72 65 70 6c 73 |ls...-. numrepls| 00000c90 3d 30 20 f2 67 65 6e 45 72 72 6f 72 28 22 4e 6f |=0 .genError("No| 00000ca0 20 72 65 70 6c 61 63 65 6d 65 6e 74 73 22 29 0d | replacements").| 00000cb0 06 04 05 e1 0d 06 0e 0b dd 20 a4 73 61 76 65 0d |......... .save.| 00000cc0 06 18 14 ea 20 4c 25 2c 66 24 3a f2 6e 6f 77 6f |.... L%,f$:.nowo| 00000cd0 72 64 73 0d 06 22 1a 66 24 3d a4 66 69 6c 65 6e |rds..".f$=.filen| 00000ce0 61 6d 65 28 22 53 61 76 65 22 2c 33 29 0d 06 2c |ame("Save",3)..,| 00000cf0 16 46 25 3d a4 6f 70 65 6e 6f 75 74 28 74 65 6d |.F%=.openout(tem| 00000d00 70 24 29 0d 06 36 2e e7 20 46 25 3d 30 20 f2 67 |p$)..6.. F%=0 .g| 00000d10 65 6e 45 72 72 6f 72 28 22 43 61 6e 27 74 20 6f |enError("Can't o| 00000d20 70 65 6e 20 6f 75 74 70 75 74 20 66 69 6c 65 22 |pen output file"| 00000d30 29 0d 06 40 1f f1 23 46 25 2c 74 79 70 65 2c 6e |)..@..#F%,type,n| 00000d40 75 6d 72 65 70 6c 73 2c 6e 75 6d 77 6f 72 64 73 |umrepls,numwords| 00000d50 0d 06 4a 15 e3 20 4c 25 3d 31 20 b8 20 6e 75 6d |..J.. L%=1 . num| 00000d60 72 65 70 6c 73 0d 06 54 14 f1 23 46 25 2c 72 65 |repls..T..#F%,re| 00000d70 70 6c 24 28 4c 25 29 3a ed 0d 06 5e 15 e3 20 4c |pl$(L%):...^.. L| 00000d80 25 3d 31 20 b8 20 6e 75 6d 77 6f 72 64 73 0d 06 |%=1 . numwords..| 00000d90 68 14 f1 23 46 25 2c 77 6f 72 64 24 28 4c 25 29 |h..#F%,word$(L%)| 00000da0 3a ed 0d 06 72 1d 46 25 3d a4 63 6c 6f 73 65 28 |:...r.F%=.close(| 00000db0 46 25 29 3a f2 64 65 6c 65 74 65 28 66 24 29 0d |F%):.delete(f$).| 00000dc0 06 7c 15 f2 72 65 6e 61 6d 65 28 74 65 6d 70 24 |.|..rename(temp$| 00000dd0 2c 66 24 29 0d 06 86 12 f2 64 65 6c 65 74 65 28 |,f$).....delete(| 00000de0 74 65 6d 70 24 29 0d 06 90 0f 65 64 69 74 65 64 |temp$)....edited| 00000df0 3d a3 3a 3d 30 0d 06 9a 13 dd 20 a4 6c 6f 61 64 |=.:=0..... .load| 00000e00 3a ea 20 4c 25 2c 66 24 0d 06 a4 26 e7 20 65 64 |:. L%,f$...&. ed| 00000e10 69 74 65 64 20 f2 67 65 6e 45 72 72 6f 72 28 22 |ited .genError("| 00000e20 55 6e 73 61 76 65 64 20 64 61 74 61 22 29 0d 06 |Unsaved data")..| 00000e30 ae 1a 66 24 3d a4 66 69 6c 65 6e 61 6d 65 28 22 |..f$=.filename("| 00000e40 4c 6f 61 64 22 2c 33 29 0d 06 b8 12 46 25 3d a4 |Load",3)....F%=.| 00000e50 6f 70 65 6e 69 6e 28 66 24 29 0d 06 c2 2d e7 20 |openin(f$)...-. | 00000e60 46 25 3d 30 20 f2 67 65 6e 45 72 72 6f 72 28 22 |F%=0 .genError("| 00000e70 43 61 6e 27 74 20 6f 70 65 6e 20 69 6e 70 75 74 |Can't open input| 00000e80 20 66 69 6c 65 22 29 0d 06 cc 1f e8 23 46 25 2c | file").....#F%,| 00000e90 74 79 70 65 2c 6e 75 6d 72 65 70 6c 73 2c 6e 75 |type,numrepls,nu| 00000ea0 6d 77 6f 72 64 73 0d 06 d6 2f e7 20 74 79 70 65 |mwords.../. type| 00000eb0 3e 74 79 70 65 73 20 f2 67 65 6e 45 72 72 6f 72 |>types .genError| 00000ec0 28 22 55 6e 6b 6e 6f 77 6e 20 66 69 6c 65 20 74 |("Unknown file t| 00000ed0 79 70 65 22 29 0d 06 e0 33 e7 20 6e 75 6d 77 6f |ype")...3. numwo| 00000ee0 72 64 73 3e 6d 61 78 77 6f 72 64 73 20 f2 67 65 |rds>maxwords .ge| 00000ef0 6e 45 72 72 6f 72 28 22 54 6f 6f 20 6d 61 6e 79 |nError("Too many| 00000f00 20 77 6f 72 64 73 22 29 0d 06 ea 3a e7 20 6e 75 | words")...:. nu| 00000f10 6d 72 65 70 6c 73 3e 6d 61 78 72 65 70 6c 73 20 |mrepls>maxrepls | 00000f20 f2 67 65 6e 45 72 72 6f 72 28 22 54 6f 6f 20 6d |.genError("Too m| 00000f30 61 6e 79 20 72 65 70 6c 61 63 65 6d 65 6e 74 73 |any replacements| 00000f40 22 29 0d 06 f4 15 e3 20 4c 25 3d 31 20 b8 20 6e |")..... L%=1 . n| 00000f50 75 6d 72 65 70 6c 73 0d 06 fe 14 e8 23 46 25 2c |umrepls.....#F%,| 00000f60 72 65 70 6c 24 28 4c 25 29 3a ed 0d 07 08 15 e3 |repl$(L%):......| 00000f70 20 4c 25 3d 31 20 b8 20 6e 75 6d 77 6f 72 64 73 | L%=1 . numwords| 00000f80 0d 07 12 14 e8 23 46 25 2c 77 6f 72 64 24 28 4c |.....#F%,word$(L| 00000f90 25 29 3a ed 0d 07 1c 1a 46 25 3d a4 63 6c 6f 73 |%):.....F%=.clos| 00000fa0 65 28 46 25 29 3a 65 64 69 74 65 64 3d a3 0d 07 |e(F%):edited=...| 00000fb0 26 1a 63 75 72 77 6f 72 64 3d 31 3a 63 75 72 72 |&.curword=1:curr| 00000fc0 65 70 6c 3d 31 3a 3d 30 0d 07 30 0e dd 20 a4 73 |epl=1:=0..0.. .s| 00000fd0 65 74 74 79 70 65 0d 07 3a 3f f1 8a 31 2c 31 29 |ettype..:?..1,1)| 00000fe0 22 50 72 65 73 73 20 73 70 61 63 65 20 74 6f 20 |"Press space to | 00000ff0 69 6e 63 72 65 6d 65 6e 74 22 8a 31 2c 32 29 22 |increment".1,2)"| 00001000 61 6e 64 20 52 65 74 75 72 6e 20 74 6f 20 73 65 |and Return to se| 00001010 6c 65 63 74 22 0d 07 44 05 f5 0d 07 4e 1f f1 8a |lect"..D....N...| 00001020 30 2c 35 29 89 38 30 8a 31 30 2c 35 29 74 79 70 |0,5).80.10,5)typ| 00001030 65 24 28 74 79 70 65 29 3b 0d 07 58 23 74 79 70 |e$(type);..X#typ| 00001040 65 3d 74 79 70 65 2b 31 3a e7 20 74 79 70 65 3e |e=type+1:. type>| 00001050 74 79 70 65 73 20 74 79 70 65 3d 31 0d 07 62 14 |types type=1..b.| 00001060 fd 20 a4 69 6e 28 63 72 24 2b 22 20 22 29 3d 31 |. .in(cr$+" ")=1| 00001070 0d 07 6c 23 74 79 70 65 3d 74 79 70 65 2d 31 3a |..l#type=type-1:| 00001080 e7 20 74 79 70 65 3d 30 20 74 79 70 65 3d 74 79 |. type=0 type=ty| 00001090 70 65 73 0d 07 76 06 3d 30 0d 07 80 0c dd 20 a4 |pes..v.=0..... .| 000010a0 65 64 69 74 77 0d 07 8a 10 f5 20 f2 77 69 6e 64 |editw..... .wind| 000010b0 6f 77 28 31 29 0d 07 94 47 f1 8a 31 2c 31 29 22 |ow(1)...G..1,1)"| 000010c0 55 73 65 20 61 72 72 6f 77 20 6b 65 79 73 20 74 |Use arrow keys t| 000010d0 6f 20 73 65 6c 65 63 74 20 61 20 77 6f 72 64 22 |o select a word"| 000010e0 8a 31 2c 32 29 22 61 6e 64 20 52 65 74 75 72 6e |.1,2)"and Return| 000010f0 20 74 6f 20 65 64 69 74 20 69 74 22 0d 07 9e 1b | to edit it"....| 00001100 77 6f 72 64 24 28 6e 75 6d 77 6f 72 64 73 2b 31 |word$(numwords+1| 00001110 29 3d 6e 75 6c 6c 24 0d 07 a8 3c f1 8a 31 2c 35 |)=null$...<..1,5| 00001120 29 22 57 6f 72 64 20 22 3b 63 75 72 77 6f 72 64 |)"Word ";curword| 00001130 22 20 6f 66 20 22 3b 6e 75 6d 77 6f 72 64 73 22 |" of ";numwords"| 00001140 20 3d 20 22 77 6f 72 64 24 28 63 75 72 77 6f 72 | = "word$(curwor| 00001150 64 29 3b 0d 07 b2 13 49 25 3d a4 69 6e 28 63 75 |d);....I%=.in(cu| 00001160 72 73 6f 72 24 29 0d 07 bc 1c e7 20 49 25 3d 31 |rsor$)..... I%=1| 00001170 20 63 75 72 77 6f 72 64 3d 63 75 72 77 6f 72 64 | curword=curword| 00001180 2d 31 0d 07 c6 22 e7 20 63 75 72 77 6f 72 64 3d |-1...". curword=| 00001190 30 20 63 75 72 77 6f 72 64 3d 6e 75 6d 77 6f 72 |0 curword=numwor| 000011a0 64 73 2b 31 0d 07 d0 1c e7 20 49 25 3d 32 20 63 |ds+1..... I%=2 c| 000011b0 75 72 77 6f 72 64 3d 63 75 72 77 6f 72 64 2b 31 |urword=curword+1| 000011c0 0d 07 da 22 e7 20 63 75 72 77 6f 72 64 3d 6e 75 |...". curword=nu| 000011d0 6d 77 6f 72 64 73 2b 32 20 63 75 72 77 6f 72 64 |mwords+2 curword| 000011e0 3d 31 0d 07 e4 1d e7 20 49 25 3d 33 20 f2 65 64 |=1..... I%=3 .ed| 000011f0 69 74 77 6f 72 64 28 63 75 72 77 6f 72 64 29 0d |itword(curword).| 00001200 07 ee 1f e7 20 49 25 3d 34 20 f2 64 65 6c 65 74 |.... I%=4 .delet| 00001210 65 77 6f 72 64 28 63 75 72 77 6f 72 64 29 0d 07 |eword(curword)..| 00001220 f8 0a fd 20 a3 3a 3d 30 0d 08 02 13 dd 20 f2 65 |... .:=0..... .e| 00001230 64 69 74 77 6f 72 64 28 57 25 29 0d 08 0c 34 e7 |ditword(W%)...4.| 00001240 20 6e 75 6d 77 6f 72 64 73 3d 6d 61 78 77 6f 72 | numwords=maxwor| 00001250 64 73 20 f2 67 65 6e 45 72 72 6f 72 28 22 4e 6f |ds .genError("No| 00001260 20 6d 6f 72 65 20 61 6c 6c 6f 77 65 64 22 29 0d | more allowed").| 00001270 08 16 20 77 24 3d a4 73 74 72 69 6e 67 28 77 6f |.. w$=.string(wo| 00001280 72 64 24 28 57 25 29 2c 38 2c 37 2c 32 30 29 0d |rd$(W%),8,7,20).| 00001290 08 20 29 e7 20 77 6f 72 64 24 28 57 25 29 3d 6e |. ). word$(W%)=n| 000012a0 75 6c 6c 24 20 6e 75 6d 77 6f 72 64 73 3d 6e 75 |ull$ numwords=nu| 000012b0 6d 77 6f 72 64 73 2b 31 0d 08 2a 22 77 6f 72 64 |mwords+1..*"word| 000012c0 24 28 57 25 29 3d 77 24 3a 63 75 72 77 6f 72 64 |$(W%)=w$:curword| 000012d0 3d 63 75 72 77 6f 72 64 2b 31 0d 08 34 0e 65 64 |=curword+1..4.ed| 000012e0 69 74 65 64 3d b9 3a e1 0d 08 3e 15 dd 20 f2 64 |ited=.:...>.. .d| 000012f0 65 6c 65 74 65 77 6f 72 64 28 57 25 29 0d 08 48 |eleteword(W%)..H| 00001300 11 ea 20 4c 25 3a f2 6e 6f 77 6f 72 64 73 0d 08 |.. L%:.nowords..| 00001310 52 39 e7 20 63 75 72 77 6f 72 64 3d 6e 75 6d 77 |R9. curword=numw| 00001320 6f 72 64 73 2b 31 20 f2 67 65 6e 45 72 72 6f 72 |ords+1 .genError| 00001330 28 22 43 61 6e 27 74 20 64 65 6c 65 74 65 20 6d |("Can't delete m| 00001340 61 72 6b 65 72 22 29 0d 08 5c 12 f2 73 75 72 65 |arker")..\..sure| 00001350 3a 65 64 69 74 65 64 3d b9 0d 08 66 1b e3 20 4c |:edited=...f.. L| 00001360 25 3d 63 75 72 77 6f 72 64 20 b8 20 6e 75 6d 77 |%=curword . numw| 00001370 6f 72 64 73 0d 08 70 1b 77 6f 72 64 24 28 4c 25 |ords..p.word$(L%| 00001380 29 3d 77 6f 72 64 24 28 4c 25 2b 31 29 3a ed 0d |)=word$(L%+1):..| 00001390 08 7a 19 6e 75 6d 77 6f 72 64 73 3d 6e 75 6d 77 |.z.numwords=numw| 000013a0 6f 72 64 73 2d 31 3a e1 0d 08 84 1c dd 20 a4 63 |ords-1:...... .c| 000013b0 6c 65 61 72 77 3a e7 20 65 64 69 74 65 64 20 f2 |learw:. edited .| 000013c0 73 75 72 65 0d 08 8e 11 6e 75 6d 77 6f 72 64 73 |sure....numwords| 000013d0 3d 30 3a 3d 30 0d 08 98 15 dd 20 a4 70 72 69 6e |=0:=0..... .prin| 000013e0 74 3a f2 6e 6f 77 6f 72 64 73 0d 08 a2 20 f2 6d |t:.nowords... .m| 000013f0 65 73 73 61 67 65 28 22 52 65 61 64 79 20 70 72 |essage("Ready pr| 00001400 69 6e 74 65 72 2e 2e 2e 22 29 0d 08 ac 17 5a 25 |inter...")....Z%| 00001410 3d a4 69 6e 28 22 20 22 29 3a 2a 46 58 33 2c 31 |=.in(" "):*FX3,1| 00001420 30 0d 08 b6 15 e3 20 4c 25 3d 31 20 b8 20 6e 75 |0..... L%=1 . nu| 00001430 6d 77 6f 72 64 73 0d 08 c0 1b f1 4c 25 89 36 77 |mwords.....L%.6w| 00001440 6f 72 64 24 28 4c 25 29 3a ed 3a 2a 46 58 33 2c |ord$(L%):.:*FX3,| 00001450 34 0d 08 ca 06 3d 30 0d 08 d4 0c dd 20 a4 65 64 |4....=0..... .ed| 00001460 69 74 72 0d 08 de 10 f5 20 f2 77 69 6e 64 6f 77 |itr..... .window| 00001470 28 31 29 0d 08 e8 24 f1 8a 31 2c 31 29 22 55 73 |(1)...$..1,1)"Us| 00001480 65 20 61 72 72 6f 77 20 6b 65 79 73 20 74 6f 20 |e arrow keys to | 00001490 73 65 6c 65 63 74 22 0d 08 f2 1e f1 8a 31 2c 32 |select"......1,2| 000014a0 29 22 61 6e 64 20 52 45 54 55 52 4e 20 74 6f 20 |)"and RETURN to | 000014b0 65 64 69 74 22 0d 08 fc 1b 72 65 70 6c 24 28 6e |edit"....repl$(n| 000014c0 75 6d 72 65 70 6c 73 2b 31 29 3d 6e 75 6c 6c 24 |umrepls+1)=null$| 000014d0 0d 09 06 3c f1 8a 31 2c 35 29 22 57 6f 72 64 20 |...<..1,5)"Word | 000014e0 22 3b 63 75 72 72 65 70 6c 22 20 6f 66 20 22 3b |";currepl" of ";| 000014f0 6e 75 6d 72 65 70 6c 73 22 20 3d 20 22 72 65 70 |numrepls" = "rep| 00001500 6c 24 28 63 75 72 72 65 70 6c 29 3b 0d 09 10 13 |l$(currepl);....| 00001510 49 25 3d a4 69 6e 28 63 75 72 73 6f 72 24 29 0d |I%=.in(cursor$).| 00001520 09 1a 1c e7 20 49 25 3d 31 20 63 75 72 72 65 70 |.... I%=1 currep| 00001530 6c 3d 63 75 72 72 65 70 6c 2d 31 0d 09 24 22 e7 |l=currepl-1..$".| 00001540 20 63 75 72 72 65 70 6c 3d 30 20 63 75 72 72 65 | currepl=0 curre| 00001550 70 6c 3d 6e 75 6d 72 65 70 6c 73 2b 31 0d 09 2e |pl=numrepls+1...| 00001560 1c e7 20 49 25 3d 32 20 63 75 72 72 65 70 6c 3d |.. I%=2 currepl=| 00001570 63 75 72 72 65 70 6c 2b 31 0d 09 38 22 e7 20 63 |currepl+1..8". c| 00001580 75 72 72 65 70 6c 3d 6e 75 6d 72 65 70 6c 73 2b |urrepl=numrepls+| 00001590 32 20 63 75 72 72 65 70 6c 3d 31 0d 09 42 1d e7 |2 currepl=1..B..| 000015a0 20 49 25 3d 33 20 f2 65 64 69 74 72 65 70 6c 28 | I%=3 .editrepl(| 000015b0 63 75 72 72 65 70 6c 29 0d 09 4c 1f e7 20 49 25 |currepl)..L.. I%| 000015c0 3d 34 20 f2 64 65 6c 65 74 65 72 65 70 6c 28 63 |=4 .deleterepl(c| 000015d0 75 72 72 65 70 6c 29 0d 09 56 0a fd 20 a3 3a 3d |urrepl)..V.. .:=| 000015e0 30 0d 09 60 13 dd 20 f2 65 64 69 74 72 65 70 6c |0..`.. .editrepl| 000015f0 28 52 25 29 0d 09 6a 34 e7 20 6e 75 6d 72 65 70 |(R%)..j4. numrep| 00001600 6c 73 3d 6d 61 78 72 65 70 6c 73 20 f2 67 65 6e |ls=maxrepls .gen| 00001610 45 72 72 6f 72 28 22 4e 6f 20 6d 6f 72 65 20 61 |Error("No more a| 00001620 6c 6c 6f 77 65 64 22 29 0d 09 74 20 77 24 3d a4 |llowed")..t w$=.| 00001630 73 74 72 69 6e 67 28 72 65 70 6c 24 28 52 25 29 |string(repl$(R%)| 00001640 2c 38 2c 37 2c 32 30 29 0d 09 7e 29 e7 20 72 65 |,8,7,20)..~). re| 00001650 70 6c 24 28 52 25 29 3d 6e 75 6c 6c 24 20 6e 75 |pl$(R%)=null$ nu| 00001660 6d 72 65 70 6c 73 3d 6e 75 6d 72 65 70 6c 73 2b |mrepls=numrepls+| 00001670 31 0d 09 88 22 72 65 70 6c 24 28 52 25 29 3d 77 |1..."repl$(R%)=w| 00001680 24 3a 63 75 72 72 65 70 6c 3d 63 75 72 72 65 70 |$:currepl=currep| 00001690 6c 2b 31 0d 09 92 0e 65 64 69 74 65 64 3d b9 3a |l+1....edited=.:| 000016a0 e1 0d 09 9c 15 dd 20 f2 64 65 6c 65 74 65 72 65 |...... .deletere| 000016b0 70 6c 28 52 25 29 0d 09 a6 11 ea 20 4c 25 3a f2 |pl(R%)..... L%:.| 000016c0 6e 6f 72 65 70 6c 73 0d 09 b0 39 e7 20 63 75 72 |norepls...9. cur| 000016d0 72 65 70 6c 3d 6e 75 6d 72 65 70 6c 73 2b 31 20 |repl=numrepls+1 | 000016e0 f2 67 65 6e 45 72 72 6f 72 28 22 43 61 6e 27 74 |.genError("Can't| 000016f0 20 64 65 6c 65 74 65 20 6d 61 72 6b 65 72 22 29 | delete marker")| 00001700 0d 09 ba 12 f2 73 75 72 65 3a 65 64 69 74 65 64 |.....sure:edited| 00001710 3d b9 0d 09 c4 1b e3 20 4c 25 3d 63 75 72 72 65 |=...... L%=curre| 00001720 70 6c 20 b8 20 6e 75 6d 72 65 70 6c 73 0d 09 ce |pl . numrepls...| 00001730 1b 72 65 70 6c 24 28 4c 25 29 3d 72 65 70 6c 24 |.repl$(L%)=repl$| 00001740 28 4c 25 2b 31 29 3a ed 0d 09 d8 19 6e 75 6d 72 |(L%+1):.....numr| 00001750 65 70 6c 73 3d 6e 75 6d 72 65 70 6c 73 2d 31 3a |epls=numrepls-1:| 00001760 e1 0d 09 e2 1c dd 20 a4 63 6c 65 61 72 77 3a e7 |...... .clearw:.| 00001770 20 65 64 69 74 65 64 20 f2 73 75 72 65 0d 09 ec | edited .sure...| 00001780 11 6e 75 6d 72 65 70 6c 73 3d 30 3a 3d 30 0d 09 |.numrepls=0:=0..| 00001790 f6 1a dd 20 a4 71 75 69 74 3a e7 20 65 64 69 74 |... .quit:. edit| 000017a0 65 64 20 f2 73 75 72 65 0d 0a 00 06 3d b9 0d ff |ed .sure....=...| 000017b0