1! LAWRENCE UNIVERSITY COMPUTER CENTER APPLETON, WISCONSIN 54911 (414) 739-3681 PROGRAM NAME, VERSION AND DATE LISTAL, VERSION 1A, 2-JUN-74 2! PROGRAM AUTHORSHIP: LISTAL WAS DESIGNED AND WRITTED BY PAUL KONING OF THE LAWRENCE UNIVERSITY COMPUTER CENTER. PURPOSE OF PROGRAM: LISTAL IS A PROGRAM FOR LISTING ALL FILES ON A SPECIFIED DEVICE 3! OR ON THE SYSTEM DISK, ON A SPECIFIED ACCOUNT , OR ALL FILES EXCEPT A NUMBER OF SPECIFIED FILES, OR ONLY A NUMBER OF SPECIFIED FILES, IN PAGED FORMAT, WITH A LEFT MARGIN IF DESIRED. 4! NO MORE THAN 100 FILES CAN BE SPECIFIED, BUT MORE CAN BE LISTED. LANGUAGE AND OPERATING SYSTEM: LISTAL IS WRITTEN IN BASIC-PLUS. IT MAKES USE OF TWO OF THE NON-PRIVILEGED SYS FUNCTIONS DEFINED FOR RSTS V4A-12. 5! PROVIDED THESE CALLS ARE CHANGED APPROPRIATELY, LISTAL WILL RUN UNDER RSTS/E (RSTS V5/21) AVAILABILITY: LISTAL IS A NON-PROPRIETARY PROGRAM PRODUCT OF LAWRENCE UNIVERSITY. IT IS DISTRIBUTED AT COST FOR EDUCATIONAL USE, ON 6! CONDITION THAT IT NOT BE SOLD, RENTED OR LEASED FOR PROFIT. LIMITATIONS: LISTAL WILL NOT LIST THE CONTENTS OF .BAC FILES. WHEN ASKED TO LIST FILES ON AN ACCOUNT OTHER THAN THE USER'S OWN ACCOUNT, 7! LISTAL WILL NOT LIST FILES THAT HAVE A PROTECTION CODE IN WHICH THE 16-BIT IS SET. THIS APPLIES EVEN IF THE USER'S PROJECT NUMBER IS THE SAME AS THAT OF THE ACCOUNT BEING LISTED. FURTHER DOCUMENTATION: 8! ADDITIONAL DOCUMENTATION, INCLUDING A USER'S GUIDE AND RUN INSTRUCTIONS, WILL BE FOUND IN THE DOCUMENTATION PUBLISHED IN THE LAWRENCE UNIVERSITY RSTS USER'S GUIDE DISCLAIMER: 9! NEITHER THE AUTHOR OF THIS PROGRAM NOR LAWRENCE UNIVERSITY ASSUME ANY LIABILITY, EXPRESSED OR IMPLIED, WITH RESPECT TO THE CORRECTNESS OR PERFORMANCE OF THIS PROGRAM. 100 ! LISTAL LISTS A SERIES OF PROGRAMS, AS MANY AS 100 AT A TIME 110 DIM F$(100%) ! THE ARRAY WITH THE FILE NAMES 120 A$="" 125 PRINT "LISTAL -- GENERAL PURPOSE FILE LISTER -- LAWRENCE" 130 INPUT"DEVICE";D$:GOTO 150 IF D$="":IF INSTR(1%,D$,":")=0% THEN &"ILLEGAL DEVICE NAME!":GOTO 130 140 IF INSTR(1%,D$,"DT")THEN 180 150 &"ACCOUNT"; 160 INPUT LINE A$:A$=FND$(A$):IF (INSTR(1%,A$,"[")=0% OR INSTR(1%,A$,",") =0% OR INSTR(1%,A$,"]")=0%) XOR (A$="" OR A$="$") THEN &"INVALID ACCOUNT!":GOTO 150 170 IF A$<>"" AND ASCII(RIGHT(SYS(CHR$(6%)+CHR$(14%)),8%))<>1% THEN V2%=-1% ELSE V2%=0% 180 B$=D$+A$ 190 INPUT"MARGIN (# SPACES)";M%:GOTO 190 IF M%<0% OR M%>15% 200 INPUT"NUMBER OF LINES PER PAGE";P9%:IF P9%<=-1% OR P9%>=100% THEN &"INVALID, TRY AGAIN":GOTO 200 210 ! 0 LINES PER PAGE MEANS NO PAGING 220 IF P9%=0% THEN P5%=-10% ELSE INPUT "START AT PAGE #";P5% 230 O%,A%=0% 240 &"ALL FILES (A), ALL EXCEPT SELECTED FILES (E) OR": INPUT"ONLY SELECTED FILES (O)";E$ 250 IF E$>="O" THEN 270 ELSE IF E$<"E" THEN A%=-1%:GOTO 310 260 O%,A%=-1% 270 &"TYPE THE FILE NAMES,SEPARATED BY COMMAS":MATINPUT F$:N%=NUM 280 FOR I%=1% TO N%:F$=F$(I%):I1%=INSTR(1%,F$,"."): F$=F$+".BAS" UNLESS I1% 290 F$(I%)=F$:NEXT I% 300 IF O% THEN E9%=N% 310 &CHR$(12%);:&IF POS(0%) 320 O1%=-1%:IF A% THEN N%=32767% 330 FOR I%=1% TO N% 340 O1%=O1%+1% 350 IF A% THEN F$=FNG$ ELSE F$=F$(I%) 360 ON ERROR GOTO 780 370 OPEN B$+F$ FOR INPUT AS FILE 1% 380 ON ERROR GOTO 630:L%=P9% 390 P%=0% 400 GOSUB 710 410 INPUT LINE #1%,L$:L$=FNP$(FNT$(FND$(L$))):GOTO 410 420 DEF FNP$(X$) 430 IF LEN(X$)<=72%-M% THEN X$=FNP2$(X$):GOTO 450 440 X1$=FNP2$(LEFT(X$,72%-M%)): X1$=FNP$(RIGHT(X$,73%-M%)) 450 FNP$=X1$:FNEND 460 DEF FNP2$(X$) 470 GOTO 500 UNLESS INSTR(1%,X$,CHR$(12%)) 480 X1$=FNP2$(LEFT(X$,INSTR(1%,X$,CHR$(12%))-1%)): X1$=FNP2$("") FOR I8%=1% TO 4%: X1$=FNP2$(RIGHT(X$,INSTR(1%,X$,CHR$(12%))+1%)) 490 GOTO 520 500 IF P%>=P5% THEN IF X$="" THEN &CHR$(10%); ELSE &SPACE$(M%);X$ 510 GOSUB 710 520 FNP2$=X$:FNEND 530 DEF FNT$(X$) 540 I2%=INSTR(1%,X$,CHR$(9%)):GOTO 570 UNLESS I2% 550 I5%=I2%-I2%/8%*8%:IF I5% THEN I6%=9%-I5% ELSE I6%=1% 560 X$=FNT$(LEFT(X$,I2%-1%)+SPACE$(I6%)+RIGHT(X$,I2%+1%)) 570 FNT$=X$:FNEND 580 DEF FND$(X$) 590 I3%=INSTR(1%,X$,CHR$(27%)):IF I3% THEN X$=LEFT(X$,I3%-1%) 600 I3%=INSTR(1%,X$,CHR$(10%)):IF I3% THEN X$=LEFT(X$,I3%-1%) 610 I3%=INSTR(1%,X$,CHR$(13%)):IF I3% THEN X$=LEFT(X$,I3%-1%) 620 FND$=X$:FNEND 630 GOTO 780 IF ERR<>11% OR ERL<>410%:RESUME 640 640 GOSUB 670:CLOSE 1% 650 NEXT I% 660 GOTO 970 670 K%=P9%+4%-L%:L%=1% 680 &CHR$(10%); FOR K2%=1% TO K% 690 &"---------";TAB(63%);"---------":&CHR$(12%); 700 RETURN 710 RETURN IF P9%=0%:L%=L%+1% 720 RETURN IF L%<=P9% 730 P%=P%+1% 740 IF P%5% AND ERR<>18% THEN 780 ELSE RESUME 970 960 FNG$=Y$:FNEND 970 &CHR$(12%) 980 END