Listing of file='SORTCAT' on disk='vmedia/tbo_81.wvd.zip'
# Sector 920, program filename = 'SORTCAT' 0010 REM SORTCAT 04/23/81 SORTCAT plus find programs after date Key '14 0020 COM U1$(20)45,U$(20),U : INIT(20)U$() : U=1 : SELECT PRINT 005(80) 0030 DIM N$64,T1$(2,255)2,T2$(2,255)2,C$(2,255)8,T$(2,255)14 : T9=2 : REM CAT.SIZE MOD 0040 DIM C1$,Z$(16)16,L$(4)64,K$1,Z$1,C$16,C2$6,L$1,Z2$2,S2$2,D8$10,C9$45 : T1=1 : GOTO 720 0045 REM %.Scan Cat. area 0050 INIT(FF)C$() : FOR S1=S2TO (E-1) : Z1=1 : IF S1>0THEN 60 : Z1=2 : PRINT "SEARCHING FOR ";Z2$ : C1$=Z2$ : STR(C1$,4)="ITEMS FOUND" : GOTO 70 0060 DATA LOAD BA T#1,(S,S)Z$() 0070 PRINT "CAT. SECTOR=";S;HEX(0C) : FOR Z=Z1 TO 16 : Z2$=STR(Z$(Z),1,2) : IF Z2$=S2$THEN 120 : IF Z2$<>HEX(0000)THEN 80 : Z=16 0080 NEXT Z : NEXT S1 0100 RETURN 0110 REM %.Record found items 0120 C$=STR(Z$(Z),9,8) : IF I$=" "THEN 130 : IF STR(I$,1,LEN(I$))<>STR(C$,1,LEN(I$))THEN 80 0130 AND (STR(Z$(Z),3,1),7F) : AND (STR(Z$(Z),5,1),7F) : IF N=0THEN 140 : C$=STR(Z$(Z),1,6) 0140 C$(T1,T)=C$ : T$(T1,T)=STR(Z$(Z),1,6) : STR(T$(T1,T),7,8)=STR(Z$(Z),9,8) : PRINT "CAT. SECTOR=";S,"FOUND ITEM = ";T0;STR(Z$(Z),9,8);HEX(0C) : T0=T0+1 : T=T+1 : IF T<256THEN 80 0150 T1=T1+1 : T=1 : IF T1<=T9THEN 80 : PRINT "---PARTIAL SORT" : Z=16 : S1=E-1 : GOTO 80 0160 REM %.Show catalog details 0170 % ITEM NAME TYPE START END USED FREE +USED 0180 % #### ######## ### ##### ##### ##### ##### ##### 0190 % ##############= ##### 0200 T0,T=1 : INIT(20)T$() : GOSUB 50 : REM /Scan catalog 0210 PRINT HEX(07) : MAT SORTC$() TO T1$(),T2$() 0215 DEFFN'35 0220 SELECT PRINT 005 : IF H=0THEN 240 : SELECT PRINT 215 : ON UGOTO 230 : ON D1GOTO 230 : PRINT " " : L=L+3 : GOTO 240 0230 GOSUB 690 : PRINT 0240 PRINT : PRINTUSING 190,C1$,T0-1 : ON T0GOTO 350 : PRINTUSING 170 : PRINT " " : Z2$=S2$ : I1=0 : T,Z,T1=1 0250 DEFFN'7 : IF N<>2 THEN 260 : T1=INT(T0/256)+1 : T=T0-((T1-1)*256) 0260 S$=T$(VAL(T2$(T1,T)),VAL(STR(T2$(T1,T),2,1))) 0270 GOSUB '36 : N$=" " : IF F=0THEN 290 : REM /.jump to skip REMark 0280 IF STR(S$,1,2)=HEX(1080)THEN 422 : REM /.Get program REMark 0285 IF STR(S$,1,2)<>HEX(1000)THEN 290 : GOSUB 610 : REM /.Get DATA REMark 0290 PRINTUSING 180,I1,STR(S$,7,8),D$,S8,S9,S3,S6,S0 : IF N$=" "THEN 300 0295 PRINT TAB(12);N$; : L=L+2 : PRINT " " : PRINT " " 0300 IF H=1THEN 310 : KEYIN K$,390,410 0310 L=L+1 : IF L>53THEN 370 : Z=Z+1 0320 IF N=2THEN 330 : T=T+1 : IF T<256THEN 340 : T=1 : T1=T1+1 : GOTO 340 0330 T=T-1 : IF T>0THEN 340 : T=255 : T1=T1-1 0340 IF Z<T0THEN 260 0350 U=U+1 : IF U<U9THEN 990 : IF H=0THEN 360 : U=1 : C9=C9-1 : IF C9>0THEN 990 : SELECT PRINT 215(79) : PRINT HEX(0C); : FOR Z=1TO 36 : PRINT HEX(0A); : NEXT Z : PRINT 0360 H=0 : GOSUB 1090 : END 0370 L=3 : IF H=0THEN 310 : P1=P1+1 : PRINT " " : PRINT HEX(0C030E);C9$;" PAGE ";P1 : PRINTUSING 170 : PRINT " " : GOTO 310 0380 REM %.lower pad key PAUSE 0390 PRINTUSING 170 : GOSUB 1100 : PRINT "KEY (EXEC) TO CONTINUE" 0400 KEYIN K$,310,410 : GOTO 400 0410 IF K$>HEX(01)THEN 420 : F=VAL(K$) : GOTO 310 0420 IF K$=HEX(10)THEN 680 : IF K$<>HEX(0F)THEN 390 : S0,H=0 : GOSUB 690 : GOTO 220 0422 GOSUB '37 : IF POS(I$="/")=0 THEN 290 : IF N$=" "THEN 300 : GOSUB 2110 : IF N$="N"THEN 300 : GOTO 290 0430 REM %.'36 Get catalog line display data 0440 DEFFN'36 : STR(D$,1,1)=" " : IF STR(Z2$,1,1)=HEX(10)THEN 460 0450 STR(D$,1,1)="S" : IF STR(Z2$,1,1)=HEX(11)THEN 460 : RETURN 0460 STR(D$,2,1)="P" : IF STR(Z2$,2,1)=HEX(80)THEN 480 0470 STR(D$,2,1)="D" : IF STR(Z2$,2,1)=HEX(00)THEN 480 : RETURN 0480 S8=(256*VAL(STR(S$,3,1)))+VAL(STR(S$,4,1)) : S9=(256*VAL(STR(S$,5,1)))+VAL(STR(S$,6,1)) : DATA LOAD BA T #1,(S9,M)L$() 0490 S3=256*VAL(STR(L$(1),2,1))+VAL(STR(L$(1),3,1)) : S6=S9-S8-S3+1 : I1=I1+1 0500 S0=S0+S3 : RETURN 0510 REM %.'37 Get 1st REM statement 0520 DEFFN'37 0530 DATA LOAD BA T#1,(S8+1,M)L$() 0540 M=4 : C=1 0550 M=M+1 : IF M>64THEN 100 : IF STR(L$(1),M,1)=HEX(A2)THEN 560 : IF STR(L$(1),M,1)=" "THEN 550 : RETURN 0560 M=M+1 : IF M>64THEN 100 : L$=STR(L$(1),M,1) : IF L$=":"THEN 100 : IF L$=HEX(0D)THEN 100 : STR(N$,C,1)=L$ : C=C+1 : GOTO 560 0600 REM %.Display DATA file descriptions 0610 RESTORE 0620 READ N$ : IF N$<>" "THEN 620 0630 READ N$ : IF N$=" "THEN 100 : IF STR(N$,1,8)=STR(S$,7,8)THEN 100 : GOTO 630 0640 REM %.S.F. Entry 0650 DEFFN'0 : F=0 : GOTO 670 0660 DEFFN'1 : F=1 0670 DEFFN'15 : S0,H=0 : GOSUB 690 : PRINT : GOTO 220 0680 DEFFN'16 : S0=0 : H=1 : INPUT "TITLE",C9$ : PRINT : GOTO 220 0690 PRINT HEX(0D0C030E);C9$ : PRINT "DISK CATALOGUE SORTED BY ";C2$; : IF I$=" "THEN 700 : PRINT " I.D.=";I$; 0700 PRINT : PRINTUSING 190,"INDEX SECTORS",E : PRINTUSING 190,"END CAT. AREA",E8 : PRINTUSING 190,"CURRENT END",E9 : P1=1 : L=7 : RETURN 0710 REM %.SET-UP 0720 DEFFN'10 : SELECT PRINT 005 : PRINT HEX(03);"REQUEST NUMBER=";U,"SORT DISK FILE CATALOGUE NAMES" : F$="(DEFAULT)=" 0730 D9=3 : PRINT "1=(F)310 2=(R)B10 3=(F)320 4=(R)B20 5=(F)330 6=(R)B30 7=(F)350" : PRINT "Disk surface";TAB(45);F$;D9; : INPUT D9 : IF D9<1THEN 730 : IF D9>7THEN 730 0740 ON D9GOSUB 1120,1130,1140,1150,1160,1170,1180 : PRINT C9$ 0750 N=0 : PRINT "Sort by 0=Name 1=Sector 2=-Sector";TAB(45);F$;N; : INPUT N 0760 I$=" " : IF N=0THEN 770 : IF N=2THEN 780 : N=1 : GOTO 780 0770 INPUT "Common Root ID",I$ 0780 PRINT : PRINT "TYPE OF FILE NAMES TO SORT" 0790 PRINT "PROGS+DATA A S ALL" 0800 PRINT "PROGRAMS AP SP P=AP+SP" 0810 PRINT "DATA AD SD D=AD+SD" 0820 PRINT "Category Active Scratched"; 0830 Z3$="AP" : PRINT TAB(45);F$;Z3$; : INPUT Z3$ 0840 Z2$="AP" : IF Z3$="ALL"THEN 860 : IF Z3$="A"THEN 860 : IF Z3$="P"THEN 860 : IF Z3$="D"THEN 850 : Z2$="SP" : IF Z3$="S"THEN 860 : Z2$=Z3$ : GOTO 860 0850 Z2$="AD" 0860 S2$=HEX(1080) : IF Z2$="AP"THEN 870 : S2$=HEX(1180) : IF Z2$="SP"THEN 870 : S2$=HEX(1000) : IF Z2$="AD"THEN 870 : S2$=HEX(1100) : IF Z2$="SD"THEN 870 : GOTO 800 0870 C9,H=0 : PRINT "Output to:","0=CRT 1=Printer";TAB(45);F$;H; : INPUT H : IF H=0THEN 880 : PRINT "TITLE=",F$;C9$ : INPUT C9$ : INPUT "# OF COPIES (DEFAULT=1)",C9 0880 F=1 : PRINT "List wanted","0=Cat.data 1=plus REMS ";TAB(45);F$;F; : INPUT F : ON F+1GOTO 890,890 : GOTO 880 0890 BIN(STR(U$(U),1,1))=D9 : BIN(STR(U$(U),2,1))=N : STR(U$(U),3,8)=I$ : STR(U$(U),11,2)=Z2$ : STR(U$(U),13,2)=S2$ : BIN(STR(U$(U),15,1))=H : BIN(STR(U$(U),16,1))=F : U1$(U)=C9$ : U=U+1 0900 IF Z3$="ALL"THEN 930 : IF Z3$="S"THEN 910 : IF Z3$="A"THEN 920 : IF Z3$="P"THEN 960 : IF Z3$="D"THEN 970 : GOTO 980 0910 Z2$="SD" : S2$=HEX(1100) : Z3$=" " : GOTO 890 0920 Z2$="AD" : S2$=HEX(1000) : Z3$=" " : GOTO 890 0930 IF Z2$<>"AP"THEN 940 : Z2$="AD" : S2$=HEX(1000) : GOTO 890 0940 IF Z2$<>"AD"THEN 950 : Z2$="SP" : S2$=HEX(1180) : GOTO 890 0950 IF Z2$<>"SP"THEN 980 : Z2$="SD" : S2$=HEX(1100) : GOTO 890 0960 Z2$="SP" : S2$=HEX(1180) : Z3$=" " : GOTO 890 0970 Z2$="SD" : S2$=HEX(1100) : Z3$=" " : GOTO 890 0980 U9=0 : INPUT "INPUT NON-ZERO FOR MORE DATA",U9 : IF U9<>0THEN 720 : U9=U : U=1 0990 D9=VAL(STR(U$(U),1,1)) : N=VAL(STR(U$(U),2,1)) : I$=STR(U$(U),3,8) : Z2$=STR(U$(U),11,2) : S2$=STR(U$(U),13,2) : H=VAL(STR(U$(U),15,1)) : T=VAL(STR(U$(U),16,1)) : F=VAL(STR(U$(U),16,1)) : S0=0 1000 ON D9GOSUB 1190,1200,1210,1220,1230,1240,1250 1010 D1=0 : IF C9$=U1$(U)THEN 1020 : C9$=U1$(U) : D1=1 1020 SELECT PRINT 005 : IF H=1THEN 1030 : IF U=1THEN 1030 : PRINT "KEY (EXEC) TO CONTINUE FOR ";Z2$; : INPUT Z 1030 C2$="NAME" : IF N=0THEN 1040 : C2$="SECTOR" 1040 S=0 : DATA LOAD BA T#1,(S,S)Z$() : AND (STR(Z$(1),1,1),7F) : S2=VAL(STR(Z$(1),1,1)) : E=VAL(STR(Z$(1),2,1)) 1050 D8$=STR(Z$(1),1,6) 1060 E9=256*VAL(STR(D8$,3,1))+VAL(STR(D8$,4,1))-1 1070 E8=256*VAL(STR(D8$,5,1))+VAL(STR(D8$,6,1))-1 : GOSUB 690 1080 GOTO 200 1090 SELECT PRINT 005 : PRINT : PRINT "FOR SORTED ITEMS, KEY" 1100 PRINT "'0-Cat.only '1-Cat.with REMs '14 date + '15 RECALL list '16 Hard copy" : RETURN 1110 REM %.Disk references 1120 C9$="310" : RETURN 1130 C9$="B10" : RETURN 1140 C9$="320" : RETURN 1150 C9$="B20" : RETURN 1160 C9$="330" : RETURN 1170 C9$="B30" : RETURN 1180 C9$="350" : RETURN 1190 SELECT #1310 : RETURN 1200 SELECT #1B10 : RETURN 1210 SELECT #1320 : RETURN 1220 SELECT #1B20 : RETURN 1230 SELECT #1330 : RETURN 1240 SELECT #1B30 : RETURN 1250 SELECT #1350 : RETURN 2020 DEFFN'14 2030 INPUT "Find programs updated after MM/DD/YY ",I$ 2040 IF POS(I$="/")>0 THEN 2050 : REM /.jump if no search wanted 2045 STOP "NO SEARCH WANTED" 2050 PRINT "Find programs updated after ";I$ 2060 CONVERT STR(I$,7,2) TO W1 : CONVERT STR(I$,1,2)TO W2 : CONVERT STR(I$,4,2)TO W3 2070 PRINTUSING 2090,I$,W2,W3,W1 2080 REM ........ MM DD YY 2090 % ######## = ##/##/## 2095 GOSUB '35 : REM /.jump into SORTCAT output 2096 RETURN 2100 REM .LOOK FOR DATE 2110 A=POS(N$="/") : A=A-2 2120 IF A<1THEN 2220 2130 D8$=STR(N$,A,8) : A=3 2140 B=POS(STR(D8$,A+1)="/") : IF B<2 THEN 2220 2160 C=NUM(STR(D8$,A+B+1)) : IF C=0THEN 2220 : CONVERT STR(D8$,A+B+1,C) TO D : C=1 : W=W1 : REM /.1ST try year 2170 IF W < D THEN 2230 : REM /.jump to Yes 2180 IF W > D THEN 2220 : REM /.jump to No 2190 ON C GOTO 2200,2210,2230 2200 C=NUM(D8$) : IF C=0THEN 2220 : CONVERT STR(D8$,1,C)TO D : C=2 : W=W2 : GOTO 2170 : REM /.Next try month 2210 C=NUM(STR(D8$,A+1)) : IF C=0THEN 2220 : CONVERT STR(D8$,A+1,C)TO D : C=3 : W=W3 : GOTO 2170 : REM /.Next try day 2220 N$="N" 2230 RETURN 9000 DATA " " : REM /list of programs and descriptions 9010 DATA " " : REM /list of data files and descriptions