!*! Updated on 18-Jun-91 at 10:25 AM by Darin T. Zephier; edit time: 0:01:35
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! DIOCESE OF LAFAYETTE MAY 1ST, 1991 !
! AUTHOR: DARREL DRONET !
! Enhanced SuperVUE directory listing program. !
! Uses 'SVDIR' to dump file list to disk and then display. !
! Uses 'LOOK' to view files. !
! Uses 'INKEY.SBR' for input, screen will go 'dormant' after about !
! five minutes inactivety, to prevent this from hogging CPU time. !
! Uses a command file 'DR.CMD'->:T !
! ->RUN DR !
! Place 'DR.RUN' in DSK0:[7,6], 'DR.CMD' in DSK0:[2,2] !
! (check code if you need to use different names) !
! CAUTION: Uses WYSE50 terminal escape sequences for display, you may !
! wish to rewrite to make device independent. !
! WARNING: Uses 'DIRSEQ' each time a new list is displayed, take this !
! out if there are multiple users accessing disk!!!!! !
! Line 127, currently commented out. !
! NOTE1: Creates several temporary command files which are chained !
! to and deleted. If it unexpectedly stops working, try !
! eraseing 'DR.CNT', was probably left because a command file !
! was broken out of by Control C. !
! NOTE2: Does not actually delete file, renames it with an extension !
! of '.ZZT' it is you to your regular file maintenance to !
! clear these. !
! DISCLAIMER: There is no warranty implied or otherwise for the !
! suitablility of this program. Use at your own risk. !
! Test it before you use it on a regular basis. !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
100 !MAPS
MAP1 DESCRIPTION,S,70
MAP1 FILES(1000),S,63
MAP1 NEW'NAME,S,6
MAP1 OLD'NAME,S,6
MAP1 COUNT,F,6,0
MAP1 I,F,6
MAP1 A$,S,1
MAP1 CURRENT,F,6
MAP1 POSITION,F,6
MAP1 REBUILD,F,6
MAP1 YES,F,6,0
MAP1 NO,F,6,1
MAP1 EXIST,F,6
MAP1 MASK,S,10
ON ERROR GOTO END'IT'ALL
! GET SAVED PARAMETER IF AVAILABLE
LOOKUP "DR.CNT",EXIST
IF EXIST = 0 THEN POSITION = 1 : CURRENT = 1 : REBUILD = YES
IF EXIST <> 0 THEN GOSUB GET'LAST
IF CURRENT < 1 THEN CURRENT = 1
IF POSITION < 1 THEN POSITION = 1
IF REBUILD = NO THEN GOTO 200
LOOKUP "SVDIR.LST",EXIST
IF EXIST <> 0 THEN KILL "SVDIR.LST"
110 PRINT TAB(-1,0);CHR(27);"H";CHR(2);
111 PRINT TAB( 9,20);"2:::::::::::::::::::::::::::::::::3";
112 PRINT TAB(10,20);"6 6";
113 PRINT TAB(11,20);"1:::::::::::::::::::::::::::::::::5";CHR(27);"H";CHR(3)
PRINT CHR(7);
IF MASK = "" THEN PRINT TAB(10,21);" ENTER FILE MASK"; : INPUT MASK
114 PRINT TAB(10,21);" READING DIRECTORY...PLEASE WAIT ";
REBUILD = NO
GOSUB SAVE'LAST
120 OPEN #1,"GETDIR.CMD",OUTPUT
126 PRINT #1,":S"
127 PRINT #1,"DIRSEQ"
128 PRINT #1,"SVDIR SVDIR.LST=";MASK
130 PRINT #1,"ERASE GETDIR.CMD"
135 PRINT #1,":T"
140 PRINT #1,"RUN DR"
145 CLOSE #1
150 CHAIN "GETDIR.CMD"
200 LOOKUP "SVDIR.LST",EXIST
IF EXIST = 0 THEN PRINT "NO SUPERVUE FILES IN CURRENT DIRECTORY" : END
201 OPEN #2,"SVDIR.LST",INPUT
IF EOF(2) THEN PRINT "NO SUPERVUE FILES IN CURRENT DIRECTORY" : END
204 INPUT LINE #2,DESCRIPTION
210 LOOP:
IF EOF(2) THEN GOTO 300
COUNT = COUNT + 1
INPUT LINE #2, DESCRIPTION
FILES(COUNT) = DESCRIPTION[1,7] + "-" + DESCRIPTION[14,70]
IF FILES(COUNT) = "-" THEN COUNT = COUNT - 1
IF COUNT = 1000 THEN PRINT TAB(12,10);"WARNING!!! MORE THAN 1000 FILES, ONLY 1ST 1000 WILL BE LISTED" : INPUT EXIST : GOTO 300
GOTO LOOP
300 ! INITIALIZE SCREEN
IF CURRENT > COUNT THEN CURRENT = COUNT
GOSUB PRINT'ALL
400 READKEY:
A$ = ""
XCALL INKEY,A$
EXIST = EXIST + 1
IF EXIST >= 30000 THEN GOTO DORMANT
IF A$ = CHR(27) THEN GOTO END'IT'ALL
IF A$ = CHR(13) THEN GOTO LOOK'AT'IT
IF A$ = CHR(10) THEN GOSUB MOVE'DOWN
IF A$ = CHR(11) THEN GOSUB MOVE'UP
IF A$ = CHR(14) THEN GOSUB CREATE
IF A$ = CHR(9) THEN GOTO END'IT'ALL
IF A$ = CHR(18) THEN GOSUB PAGE'UP
IF A$ = CHR(20) THEN GOSUB PAGE'DOWN
IF A$ = CHR(19) THEN GOTO SUPERVUE
IF A$ = CHR(30) THEN POSITION = 1 : CURRENT = 1 : GOSUB PRINT'ALL
IF A$ = CHR(5) THEN GOSUB DO'END
IF A$ = CHR(8) THEN GOSUB RENAME
IF A$ = CHR(12) THEN GOSUB DELETE
A$ = UCS(A$)
IF A$ >= "A" AND A$ <= "Z" THEN GOSUB POSITION
GOTO READKEY
450 POSITION:
FOR I = COUNT TO 1 STEP - 1
IF FILES(I)[1,1] >= "1" AND FILES(I)[1,1] <= "9" THEN NEXT I
IF FILES(I)[1,1] < A$ THEN CURRENT = I : I = 0
NEXT I
POSITION = 1
IF CURRENT < 1 THEN CURRENT = 1
GOSUB PRINT'ALL
RETURN
500 MOVE'DOWN:
IF CURRENT = COUNT THEN PRINT CHR(7); : RETURN
GOSUB REGULAR
IF POSITION <> 24 THEN CURRENT = CURRENT + 1 : &
POSITION = POSITION + 1 : &
GOSUB REVERSE : RETURN
IF POSITION = 24 THEN POSITION = 2 : &
CURRENT = CURRENT + 1 : &
GOSUB PRINT'ALL : RETURN
520 MOVE'UP:
IF CURRENT = 1 THEN PRINT CHR(7); : RETURN
GOSUB REGULAR
IF POSITION <> 1 THEN CURRENT = CURRENT - 1 : &
POSITION = POSITION - 1 : &
GOSUB REVERSE : RETURN
IF POSITION = 1 THEN POSITION = 23 : &
CURRENT = CURRENT + 1 : &
GOSUB PRINT'ALL : RETURN
540 PAGE'UP:
CURRENT = CURRENT - 24
IF CURRENT < 1 THEN CURRENT = 1
POSITION = 1 : GOSUB PRINT'ALL
RETURN
560 PAGE'DOWN:
CURRENT = CURRENT + 24
IF CURRENT > COUNT THEN CURRENT = COUNT
POSITION = 24
IF CURRENT < 24 THEN POSITION = CURRENT
GOSUB PRINT'ALL
RETURN
580 DO'END:
CURRENT = COUNT
POSITION = 24
IF CURRENT < 24 THEN POSITION = CURRENT
GOSUB PRINT'ALL
RETURN
1000 LOOK'AT'IT:
REBUILD = NO
GOSUB SAVE'LAST
PRINT TAB(-1,0);
OPEN #1,"SVLOOK.CMD",OUTPUT
PRINT #1,":S"
PRINT #1,"ERASE SVLOOK.CMD"
PRINT #1,"C"
PRINT #1,":T"
PRINT #1,"LOOK ";FILES(CURRENT)[1,6]
PRINT #1,"RUN DR"
CLOSE #1
CHAIN "SVLOOK.CMD"
1100 GET'LAST:
OPEN #7, "DR.CNT",INPUT
INPUT #7, REBUILD, POSITION, CURRENT, MASK
CLOSE #7
RETURN
1150 SAVE'LAST:
OPEN #7,"DR.CNT",OUTPUT
PRINT #7, REBUILD, POSITION, CURRENT, MASK
CLOSE #7
RETURN
1200 PRINT'ALL:
PRINT TAB(-1,0);
EXIST = 24
IF EXIST > COUNT THEN EXIST = COUNT
PRINT CURRENT, POSITION
FOR I = 1 TO EXIST
PRINT TAB(I,1);" ";FILES(CURRENT - POSITION + I);" ";
NEXT I
GOSUB PRINT'COMMAND
GOSUB REVERSE
RETURN
2200 GET'Y'N:
A$ = ""
XCALL INKEY,A$
A$ = UCS(A$)
IF A$ = "Y" OR A$ = "N" THEN RETURN
GOTO GET'Y'N
2250 KEY'PRESS:
A$ = ""
XCALL INKEY,A$
IF A$ <> "" THEN RETURN
GOTO KEY'PRESS
2300 END'IT'ALL:
LOOKUP "DR.CNT",EXIST
IF EXIST <> 0 THEN KILL "DR.CNT"
LOOKUP "SVDIR.LST",EXIST
IF EXIST <> 0 THEN KILL "SVDIR.LST"
LOOKUP "SVLOOK.CMD",EXIST
IF EXIST <> 0 THEN KILL "SVLOOK.CMD"
PRINT TAB(-1,0);
IF A$ = CHR(9) THEN CHAIN "DR"
END