-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtoolbox.txt
322 lines (321 loc) · 12.1 KB
/
toolbox.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
1 ! ALL UTILITIES DESIGNED
2 ! FOR SINGLE SIDED,SINGLE
3 ! DENSITY
4 ON ERROR 32000
5 CALL LINK("1.5")
6 DIM C$(128),S$(2)
7 DIM SC1$(179),SC2$(179)
10 CALL LINK("TEXT")
20 CALL LINK("NEWSET")
30 CALL LINK("PRINT",12,11,"TEXIN'S TI TOOLBOX")
35 PT$="NONE"
37 DN$="1"
40 CALL LINK("PRINT",20,1,"(C) 1989 by the Texin. This program is")
50 CALL LINK("PRINT",21,1,"written in Barry Traver's XXB.")
55 CALL LINK("KEYR",A$)
60 CALL LINK("CLS")
70 CALL LINK("PRINT",1,1,"Texin's TI Toolbox (C) 1989 the Texin")
80 CALL LINK("PRINT",3,1,"0) Sector Editor")
90 CALL LINK("PRINT",4,1,"1) Disk Map")
100 CALL LINK("PRINT",5,1,"2) Sector Copy")
110 CALL LINK("PRINT",6,1,"3) Catalog disk")
120 CALL LINK("PRINT",7,1,"4) Set Printer/Disk Specs.")
130 CALL LINK("PRINT",8,1,"5) Delete Files")
131 CALL LINK("PRINT",9,1,"6) Protect/Unprotect Files")
132 CALL LINK("PRINT",10,1,"7) Rename files")
133 CALL LINK("PRINT",11,1,"8) Rename disk")
134 CALL LINK("PRINT",12,1,"9) Quit")
140 CALL LINK("PRINT",17,1,"Your Choice? (0-9):")
145 CALL LINK("PRINT",20,1,"PRINTER:"&PT$)
147 CALL LINK("PRINT",21,1,"DSK"&DN$)
150 CALL LINK("ACCEPT",12,21,1,"1234560789",I$)
180 CALL LINK("CLS")
190 ON VAL(I$)+1 GOSUB 5000,10000,15000,20000,25000,26000,27000,28000,29000,30000
200 GOTO 60
5000 CALL LINK("PRINT",1,1,"Sector Editor Menu")
5010 CALL LINK("PRINT",3,1,"S) Search for text")
5020 CALL LINK("PRINT",4,1,"T) Enter text")
5025 CALL LINK("PRINT",5,1,"H) Enter hex")
5030 CALL LINK("PRINT",6,1,"=) Next Sector")
5040 CALL LINK("PRINT",7,1,"/) Last Sector")
5050 CALL LINK("PRINT",8,1,"R) Read Sector")
5060 CALL LINK("PRINT",9,1,"W) Write Sector")
5065 CALL LINK("PRINT",10,1,"P) Dump to Printer")
5070 CALL LINK("PRINT",11,1,"9) Back to main menu")
5078 CALL LINK("PRINT",13,1,".) Show from >80 to >FF")
5079 CALL LINK("PRINT",14,1,",) Show from >00 to >7F")
5080 CALL LINK("PRINT",20,1,"Press any key to continue")
5090 CALL LINK("KEYR",A$)
5100 CALL LINK("CLS")
5110 SEC$="0"
5120 CALL LINK("READ",VAL(DN$),VAL(SEC$),S$(1),S$(2))
5125 N=1
5130 GOSUB 5400
5131 SEH$=SEC$ :: CALL LINK("BAT",SEH$,A)
5135 CALL LINK("PRINT",22,1,"SECTOR:"&SEH$&" ("&SEC$&")")
5140 CALL LINK("KEYR",A$)
5143 IF A$="/" THEN IF VAL(SEC$)>0 THEN SEC$=STR$(VAL(SEC$)-1):: CALL LINK("READ",VAL(DN$),VAL(SEC$),S$(1),S$(2)):: N=1 :: GOTO 5130
5146 IF A$="=" THEN IF VAL(SEC$)<359 THEN SEC$=STR$(VAL(SEC$)+1):: CALL LINK("READ",VAL(DN$),VAL(SEC$),S$(1),S$(2)):: N=1 :: GOTO 5130
5150 IF A$="R" THEN GOSUB 5500 :: GOTO 5130
5160 IF A$="W" THEN GOSUB 5600 :: GOTO 5130
5170 IF A$="S" THEN GOSUB 5700 :: GOTO 5130
5180 IF A$="T" THEN GOSUB 5800 :: GOTO 5130
5190 IF A$="H" THEN GOSUB 5900 :: GOTO 5130
5200 IF A$="." THEN N=2 :: GOTO 5130
5210 IF A$="," THEN N=1 :: GOTO 5130
5215 IF A$="P" THEN GOSUB 31000 :: GOTO 5140
5220 IF A$="9" THEN RETURN ELSE 5140
5400 CALL LINK("CLS")
5410 FOR A=1 TO 128 STEP 8
5420 A$=STR$(A+128*(N-1)-1)
5430 CALL LINK("BAT",A$,X):: CALL LINK("PRINT",INT(A/8+1),1,A$&"-")
5435 CALL KEY(0,K,S):: IF S<>0 THEN 5480
5440 FOR B=0 TO 7
5450 X=ASC(SEG$(S$(N),A+B,1))
5460 A$=STR$(X):: CALL LINK("BAT",A$,X):: CALL LINK("PRINT",INT(A/8+1),B*3+7,SEG$(A$,4,2))
5470 NEXT B
5480 CALL LINK("PRINT",INT(A/8+1),32,SEG$(S$(N),A,8))
5490 NEXT A :: RETURN
5500 CALL LINK("PRINT",23,1,"Read sector # (0-167) (Hex)")
5510 CALL LINK("ACCEPT",24,10,5,">0123456789ABCDEF",SEH$)
5512 CALL LINK("BAT",SEH$,A)
5514 IF A<0 OR A>359 THEN 5510
5516 SEC$=STR$(A)
5520 CALL LINK("READ",VAL(DN$),VAL(SEC$),S$(1),S$(2))
5530 N=1 :: RETURN
5600 CALL LINK("PRINT",23,1,"Write to sector # (0-167) (Hex)")
5605 SEH$=SEC$ :: CALL LINK("BAT",SEH$,A)
5610 CALL LINK("ACCEPT",24,10,5,">0123456789ABCDEF",SEH$)
5612 CALL LINK("BAT",SEH$,A)
5614 IF A<0 OR A>359 THEN 5610
5616 SEC$=STR$(A)
5620 CALL LINK("WRITE",VAL(DN$),VAL(SEC$),S$(1),S$(2))
5630 RETURN
5700 CALL LINK("CLS")
5730 CALL LINK("PRINT",13,1,"Enter search string (Max 40 chars.)")
5740 CALL LINK("ACCEPT",14,1,40,"",SS$)
5750 IF SS$="" THEN RETURN
5755 IF POS(S$(1),SS$,1)<>0 THEN 5780
5760 IF POS(S$(2),SS$,1)<>0 THEN 5790
5770 IF SEC$="359" THEN 5775
5771 SEC$=STR$(VAL(SEC$)+1)
5772 CALL LINK("READ",VAL(DN$),VAL(SEC$),S$(1),S$(2))
5773 CALL LINK("PRINT",24,1,"SECTOR:"&SEC$):: GOTO 5755
5775 CALL LINK("CLS"):: CALL LINK("PRINT",12,1,"Text not found - Press a key")
5776 CALL LINK("KEYR",A$):: RETURN
5780 N=1 :: RETURN
5790 N=2 :: RETURN
5800 CALL LINK("PRINT",23,1,"Enter Text, Use Enter to exit")
5805 R,C=1
5810 CALL LINK("PEEKV",(R-1)*40+C+30,1,B$)
5811 CALL LINK("PRINT",R,C+31,CHR$(30))
5813 IF ASC(B$)>=96 THEN B$=CHR$(ASC(B$)-96)
5815 CALL LINK("KEYR",A$):: IF A$=CHR$(13)THEN RETURN
5816 CALL LINK("PRINT",R,C+31,B$)
5820 IF A$="…" AND R>1 THEN R=R-1 :: GOTO 5810
5825 IF A$="˜" AND R<16 THEN R=R+1 :: GOTO 5810
5830 IF A$="„" AND C<8 THEN C=C+1 :: GOTO 5810
5840 IF A$="“" AND C>1 THEN C=C-1 :: GOTO 5810
5841 IF A$="…" OR A$="˜" OR A$="“" OR A$="„" THEN 5810
5845 CALL LINK("PRINT",R,C+31,A$)
5850 S$(N)=SEG$(S$(N),1,(R-1)*8+C-1)&A$&SEG$(S$(N)&" ",(R-1)*8+C+1,129-((R-1)*8+C+1))
5855 S$(N)=SEG$(S$(N),1,128)
5860 C=C+1 :: IF C>8 THEN C=1 :: R=R+1 :: IF R>16 THEN RETURN
5865 GOTO 5810
5900 CALL LINK("PRINT",24,1,"Enter One Hex value, then press ENTER")
5910 R=1 :: C=1
5915 CALL LINK("PRINT",R,(C-1)*3+8+1,"<")
5920 CALL LINK("KEYR",A$)
5921 CALL LINK("PRINT",R,(C-1)*3+8," ")
5925 IF A$=" " THEN 5950
5930 IF A$="E" AND R>1 THEN R=R-1 :: GOTO 5915
5935 IF A$="X" AND R<16 THEN R=R+1 :: GOTO 5915
5940 IF A$="S" AND C>1 THEN C=C-1 :: GOTO 5915
5945 IF A$="D" AND C<8 THEN C=C+1 :: GOTO 5915 ELSE 5915
5950 B$=STR$(ASC(SEG$(S$(N),(R-1)*8+C,1))):: CALL LINK("BAT",B$,A):: B$=SEG$(B$,4,2)
5955 CALL LINK("ACCEPT",R,(C-1)*3+6+1,2,"0123456789ABCDEF",B$):: IF LEN(B$)<2 THEN 5950
5957 B$=">"&B$ :: CALL LINK("BAT",B$,A)
5960 S$(N)=SEG$(S$(N),1,(R-1)*8+C-1)&CHR$(A)&SEG$(S$(N)&" ",(R-1)*8+C+1,129-((R-1)*8+C+1))
5970 S$(N)=SEG$(S$(N),1,128)
5980 RETURN
10000 !
10020 CALL LINK("CLS")
10030 CALL LINK("READ",VAL(DN$),0,S$(1),S$(2))
10040 CALL LINK("CLS")
10050 CALL LINK("PRINT",23,1," |0123456789ABCDEF11")
10060 CALL LINK("PRINT",24,1," | 01")
10070 CALL LINK("PRINT",22,1," +------------------")
10080 FOR A=1 TO 20 :: A$=STR$((A-1)*18)
10090 CALL LINK("BAT",A$,X):: CALL LINK("PRINT",A+1,1,SEG$(A$,4,5)&"|"):: NEXT A
10091 CALL LINK("PRINT",12,29,SEG$(S$(1),1,10))
10095 R=2 :: C=4
10100 FOR A=57 TO 101 :: A$=SEG$(S$(1),A,1)
10105 X=ASC(A$)
10107 B=128
10108 O$=""
10110 IF X>=B THEN O$="*"&O$ :: X=X-B ELSE O$="."&O$
10115 B=B/2 :: IF B>=1 THEN 10110
10117 FOR D=1 TO 8
10120 CALL LINK("PRINT",R,C,SEG$(O$,D,1)):: C=C+1 :: IF C>21 THEN C=4 :: R=R+1
10130 NEXT D
10140 NEXT A
10150 CALL LINK("KEYR",A$)
10160 IF A$="P" THEN GOSUB 31000 :: GOTO 10150
10170 RETURN
15000 CALL LINK("PRINT",1,1,"SOURCE DISK:"&DN$)
15010 CALL LINK("PRINT",2,1,"DESTINATION DISK:")
15015 DD$="1"
15020 CALL LINK("ACCEPT",2,18,1,"0123456789",DD$)
15030 CALL LINK("PRINT",24,1,"SECTOR:")
15035 X@=0
15040 FOR A=0 TO 179
15050 IF DN$=DD$ THEN CALL LINK("PRINT",12,1,"Insert source disk and press any key."):: CALL LINK("KEYR",A$)
15060 A$=STR$(A+X@):: CALL LINK("BAT",A$,X):: CALL LINK("PRINT",24,8,A$)
15070 CALL LINK("READ",VAL(DN$),A+X@,SC1$(A),SC2$(A))
15080 NEXT A
15090 FOR A=0 TO 179
15100 IF DN$=DD$ THEN CALL LINK("PRINT",12,1,"Insert destination disk, press a key."):: CALL LINK("KEYR",A$)
15110 A$=STR$(A+X@):: CALL LINK("BAT",A$,X):: CALL LINK("PRINT",24,8,A$)
15120 CALL LINK("WRITE",VAL(DD$),A+X@,SC1$(A),SC2$(A))
15130 NEXT A
15140 IF X@<>128 THEN X@=128 :: GOTO 15040
15150 RETURN
20000 !
20020 A$="DSK"&DN$&"."
20021 P=1
20025 LOOP=1
20030 CALL LINK("CLS")
20040 TYPE$(1)="DIS/FIX"
20050 TYPE$(2)="DIS/VAR"
20060 TYPE$(3)="INT/FIX"
20070 TYPE$(4)="INT/VAR"
20080 TYPE$(5)="PROGRAM"
20090 OPEN #1:A$,INPUT ,RELATIVE,INTERNAL
20100 INPUT #1:D$,J@,J@,K@
20110 CALL LINK("PRINT",1,3,A$&" - DISKNAME= "&D$)
20115 CALL LINK("PRINT",1,33,"PAGE:"&STR$(P))
20120 CALL LINK("PRINT",2,3,"AVAILABLE="&STR$(K@)&" USED="&STR$(J@-K@))
20121 CALL LINK("PRINT",4,3," FILENAME SIZE TYPE P")
20122 CALL LINK("PRINT",5,3,"---------- ----- ---------- -")
20125 R=6
20130 FOR LOOP=LOOP TO 127
20140 INPUT #1:F$,A,J,K
20150 IF LEN(F$)=0 THEN 20230
20160 CALL LINK("PRINT",R,3,F$)
20165 CALL LINK("PRINT",R,15,STR$(J))
20170 CALL LINK("PRINT",R,20,TYPE$(ABS(A)))
20175 IF ABS(A)=5 THEN 20200
20180 B$=" "&STR$(K)
20190 CALL LINK("PRINT",R,27,SEG$(B$,LEN(B$)-2,3))
20200 IF A>0 THEN 20215
20210 CALL LINK("PRINT",R,31,"Y")
20215 R=R+1 :: IF R<25 THEN 20220
20216 P=P+1
20217 CALL LINK("KEYR",B$):: IF B$="P" THEN GOSUB 31000
20218 CALL LINK("CLS"):: GOTO 20110
20220 NEXT LOOP
20230 CLOSE #1
20240 CALL LINK("KEYR",A$):: IF A$="P" THEN GOSUB 31000
20250 RETURN
25000 CALL LINK("PRINT",1,1,"Present printer is "&PT$)
25010 CALL LINK("PRINT",2,1,"Enter new printer or press enter to exit.")
25020 CALL LINK("ACCEPT",3,3,30,"",PT$)
25030 CALL LINK("PRINT",5,1,"Operations are on DSK"&DN$)
25040 CALL LINK("PRINT",6,1,"Enter new drive number (0-9)")
25050 CALL LINK("PRINT",7,1,"(Note that only drives 1-3 are standard)")
25060 CALL LINK("ACCEPT",8,5,1,"0123456789",DN$)
25070 RETURN
26000 CALL LINK("PRINT",1,1,"Delete a file")
26010 CALL LINK("PRINT",1,1,"Reading Catalog...Please Wait.")
26015 GOSUB 30500
26020 CALL LINK("CLS")
26030 CALL LINK("PRINT",1,1,"Use Arrows and space bar to select file.")
26035 N=1
26040 CALL LINK("PRINT",3,1,"DELETE:"&C$(N)&" ")
26050 CALL LINK("KEYR",A$)
26060 IF A$=" " THEN 26100
26070 IF A$="S" AND N>1 THEN N=N-1 :: GOTO 26040
26080 IF A$="D" AND N<127 THEN N=N+1 :: IF C$(N)="" THEN N=N-1
26090 IF A$="D" THEN 26040
26095 GOTO 26050
26100 CALL LINK("PRINT",5,1,"Are you sure? (Y/N)")
26110 A$="N" :: CALL LINK("ACCEPT",6,20,1,"YN",A$)
26120 IF A$="N" THEN RETURN
26130 DELETE "DSK"&DN$&"."&C$(N)
26140 RETURN
27000 CALL LINK("PRINT",1,1,"Protect/Unprotect a file")
27010 CALL LINK("PRINT",1,1,"Reading Catalog...Please Wait.")
27015 GOSUB 30500
27020 CALL LINK("CLS")
27030 CALL LINK("PRINT",1,1,"Use Arrows and space bar to select file.")
27035 N=1
27040 CALL LINK("PRINT",3,1,"Filename:"&C$(N)&" ")
27050 CALL LINK("KEYR",A$)
27060 IF A$=" " THEN 27100
27070 IF A$="S" AND N>1 THEN N=N-1 :: GOTO 27040
27080 IF A$="D" AND N<127 THEN N=N+1 :: IF C$(N)="" THEN N=N-1
27090 IF A$="D" THEN 27040
27095 GOTO 27050
27100 CALL LINK("PRINT",8,1,"(0) UNPROTECT OR (1) PROTECT")
27110 A$="0" :: CALL LINK("ACCEPT",9,20,1,"01",A$)
27120 CALL LINK("PROTEC","DSK"&DN$&"."&C$(N),VAL(A$))
27130 RETURN
28000 CALL LINK("PRINT",1,1,"Reading Catalog...Please wait.")
28010 GOSUB 30500
28020 CALL LINK("CLS"):: CALL LINK("PRINT",1,1,"Use arrows and space bar to select file.")
28030 N=1
28040 CALL LINK("PRINT",3,1,"RENAME:"&C$(N)&" ")
28050 CALL LINK("KEYR",A$)
28060 IF A$=" " THEN 28100
28075 IF A$="S" AND N>1 THEN N=N-1 :: GOTO 28040
28080 IF A$="D" AND N<127 THEN N=N+1 :: IF C$(N)="" THEN N=N-1
28090 IF A$="D" THEN 28040 ELSE 28050
28100 CALL LINK("PRINT",5,1,"Enter new name:")
28110 N$=C$(N):: CALL LINK("ACCEPT",5,16,10,"",N$)
28120 CALL LINK("RENAME",VAL(DN$),C$(N),N$):: RETURN
29000 !
29009 CALL LINK("PRINT",2,1,"Insert disk and press any key.")
29010 CALL LINK("KEYR",A$)
29020 CALL LINK("CLS")
29030 CALL LINK("READ",VAL(DN$),0,A$,B$)
29040 CALL LINK("PRINT",1,1,"OLD DISKNAME:"&SEG$(A$,1,10))
29050 CALL LINK("PRINT",2,1,"NEW DISKNAME:")
29055 N$=SEG$(A$,1,10)
29060 CALL LINK("ACCEPT",2,14,10,"",N$)
29070 N$=SEG$(N$&" ",1,10)
29080 A$=N$&SEG$(A$,11,118)
29090 CALL LINK("WRITE",VAL(DN$),0,A$,B$)
29100 RETURN
30000 CALL LINK("PRINT",1,1,"Are you sure you want to quit? (Y/N)")
30010 CALL LINK("KEYR",A$):: IF A$<>"Y" AND A$<>"N" THEN 30010
30020 IF A$="N" THEN RETURN
30030 CALL LINK("GRAPH")
30040 END
30500 ! READ CATALOG INTO C$
30510 OPEN #1:"DSK"&DN$&".",INPUT ,RELATIVE,INTERNAL
30520 INPUT #1:A$,J,J,K
30530 FOR LOOP=1 TO 127
30540 INPUT #1:C$(LOOP),A,J,K
30550 IF LEN(A$)=0 THEN 30570
30560 NEXT LOOP
30570 CLOSE #1
30580 RETURN
31000 ! PRINT SCREEN TO PT$
31002 IF PT$<>"NONE" THEN 31005
31003 RETURN
31005 OPEN #2:PT$,OUTPUT
31010 FOR A=1 TO 24
31020 CALL LINK("VPEEK",(A-1)*40,40,X$)
31025 Y$=""
31030 FOR B=1 TO 40 :: N=ASC(SEG$(X$,B,1))-96 :: IF N<32 THEN N=63
31035 Y$=Y$&CHR$(N):: NEXT B
31040 PRINT #2:Y$
31050 NEXT A
31055 CLOSE #2
31060 RETURN
32000 ! ERRORS COME HERE
32010 CALL LINK("GRAPH")
32020 CALL ERR(A,B,C,D)
32030 PRINT "ERROR #";A
32040 PRINT "IN LINE #";D
32050 END