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