D8(D|DlLdBD||` DK2:CAT.BAS[30,2] 03-Sep-75 06:59 PM 1 REM CAT RAINER VON SALESKI OCT. 74 2! CAT IS A GENERAL-PURPOSE, FLEXIBLE, CATALOG-LISTING PROGRAM. FOR AN EXPLANATION OF THE COMMANDS IT ACCEPTS, GIVE ANY OF THE COMMANDS: /HELP HELP ? 10 G$=SYS(CHR$(7%)): ON ERROR GO TO 900: T$=SYS(CHR$(6%)+CHR$(-7%)) 15 Z$="(30,2)CAT.TXT" ! NAME OF DOCUMENTATION FILE 20 ! FUNCTION DEFINITIONS 25 DEF FNT$(I%)=SYS(CHR$(6%)+CHR$(15%)+CHR$(I%)+S$) 30 DEF FNR$(I%)=RAD$(FNV%(I%)) 35 DEF FNV%(I%)=SWAP%(CVT$%(RIGHT(T$,I%))) 40 DEF FNN$(N%) = MID(NUM$(N%),2%,LEN(NUM$(N%))-2%) 45 DEF FNM%(I%,J%): IF I%0%) FOR I%=1% TO 6% 260 F%(6%) = NOT F%(6%) 265 F%(7%)=F%(6%) AND (F%(1%) OR F%(3%)) 270 P9%=16%*(-F%(5%)) 275 ! PRINT HEADING 280 GO TO 330 IF H1% 285 PRINT: PRINT D$" "DATE$(0)" "TIME$(0) 290 PRINT: PRINT "NAME .EXT"; 295 PRINT " SIZE PR"; IF F%(6%) 300 PRINT " "; IF F%(7%) 305 IF F%(1%) AND F%(2%) THEN PRINT " - - CREATION - - "; ELSE PRINT " CREATION"; IF F%(1%): PRINT " CREATION"; IF F%(2%) 310 PRINT " ACCESS "; IF F%(3%) 315 PRINT " CL"; IF F%(4%) 320 PRINT 325 ! LOCATE NEWEST CATALOG ENTRY 330 IF INSTR(1,O$,"F") THEN I1%=0%: I2%=255%: I3%=1%: GO TO 375 335 X%=0% 340 M0%=1% 345 K%=16% 350 X%=X%+K% WHILE FNT$(X%+K%)<>"" 355 X%=X%+K% IF FNT$(X%+K%)<>"" 360 IF K%>1% THEN K%=K%/2%: GO TO 355 365 I1%=X%: I2%=0%: I3%=-1% 370 ! MAIN PRINTING LOOP 375 M0%=2%: B0%,B1%,W%=0% 380 L1%=-1% 385 FOR I%=I1% TO I2% STEP I3% 390 T$=FNT$(I%): X$=FNR$(11%): B%=FNV%(13%): P%=FNV%(15%) 395 Q%=FNV%(27) 400 B2%=Q%*((B%+Q%-1%)/Q%) 405 W%=W%+B2%-B% UNLESS X$="BAC" 410 IF X$="TMP" THEN B1%=B1%+B2% ELSE B0%=B0%+B2% 415 F$=FNR$(7)+FNR$(9) 420 GO TO 470 IF F$F2$ OR X$X2$ OR (P% AND P9%) 425 IF L1% THEN PRINT: L1%=0% 430 PRINT USING "\ \.\ \",F$,X$; 435 PRINT USING "#### ###",B%,P%; IF F%(6%) 440 PRINT " "; IF F%(7%) 445 PRINT " "DATE$(FNV%(19)); IF F%(1%) 450 PRINT " "TIME$(FNV%(21)); IF F%(2%) 455 PRINT " "DATE$(FNV%(17)); IF F%(3%) 460 PRINT USING "###",Q%; IF F%(4%) 465 PRINT 470 NEXT I% 475 ! PRINT TOTALS, GO TO NEXT TASK 480 T$=SYS(CHR$(0)) 485 PRINT 490 PRINT USING "ACCT TOTAL####",B0%; 495 IF B1% THEN PRINT "+";FNN$(B1%); 500 IF W% THEN & " (INCLUDING";W%;"BLOCKS WASTED IN UNFILLED CLUSTERS)"; 505 PRINT: PRINT 510 IF J$<>"" THEN D$=J$: GO TO 165 515 IF H% THEN 800 ELSE 125 700 ! HELP MESSAGE 705 OPEN Z$ FOR INPUT AS FILE 3 710 INPUT LINE #3,L$: PRINT L$;: GO TO 710 799 ! CONTROL/C HANDLER 800 T$=SYS(CHR$(6%)+CHR$(-7%)) 805 Z1%=INSTR(1%,G$,CHR$(26%))+1%: Z2%=INSTR(Z1%,G$,CHR$(26%)) 810 GO TO 999 UNLESS Z2% 815 F$=MID(G$,Z1%,Z2%-Z1%) 820 T$=SYS(CHR$(8%)+RIGHT(G$,Z2%+1%)): CHAIN F$ 900 ! ERROR HANDLER 905 IF ERR=28 THEN RESUME 800 910 IF ERL=25 AND ERR=5 THEN IF M0%=1% THEN RESUME 360 ELSE RESUME 480 915 IF ERR=11 THEN RESUME 515 IF ERL=710: RESUME 999 IF ERL=125 920 PRINT FNE$ 925 IF ERL<700 THEN RESUME 505 ELSE RESUME 999 999 G$=SYS(CHR$(8%)): END U<