!*! Updated on 18-Jun-91 at 11:01 AM by Darin T. Zephier; edit time: 0:09:51 !*************************** AMUS Program Label ****************************** ! Filename: AL.RUN Date: 6/7/91 ! Category: UTIL Hash Code: 015-666-373-602 Version: 1.0(1) ! Initials: DOL/AM Name: DARELL DRONET ! Company: DIOCESE OF LAFAYETTE Telephone #: ! Related Files: ! Min. Op. Sys.: Expertise Level: INT ! Special: ! Description: Special DIR listing program. ! ! !***************************************************************************** !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! DIOCESE OF LAFAYETTE MAY 1ST, 1991 ! ! AUTHOR: DARREL DRONET ! ! Enhanced directory listing program. ! ! Uses 'DIR' 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 'AL.CMD'->:T ! ! ->RUN AL ! ! Place 'AL.RUN' in DSK0:[7,6], 'AL.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 'AL.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 '.BAK' 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,10 MAP1 OLD'NAME,S,10 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,"" MAP1 ROW,F ! New maps for terminal indep. version MAP1 COL,F ON ERROR GOTO END'IT'ALL ! GET SAVED PARAMETER IF AVAILABLE LOOKUP "AL.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 "ALDIR.LST",EXIST IF EXIST <> 0 THEN KILL "ALDIR.LST" 110 PRINT TAB(-1,0) PRINT TAB(-1,23); PRINT TAB(9,20);TAB(-1,38); FOR COL = 1 TO 33 PRINT TAB(-1,46); NEXT COL PRINT TAB(-1,39) PRINT TAB(10,20);TAB(-1,47); PRINT TAB(10,54);TAB(-1,47); PRINT TAB(11,20);TAB(-1,40); FOR COL = 1 TO 33 PRINT TAB(-1,46); NEXT COL PRINT TAB(-1,41);TAB(-1,24); !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) IF MASK = "" THEN PRINT TAB(10,21);" ENTER 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,"DIR/C ALDIR.LST=";MASK 130 PRINT #1,"ERASE GETDIR.CMD" 135 PRINT #1,":T" 140 PRINT #1,"RUN AL" 145 CLOSE #1 150 CHAIN "GETDIR.CMD" 200 LOOKUP "ALDIR.LST",EXIST IF EXIST = 0 THEN PRINT "NO SUPERVUE FILES IN CURRENT DIRECTORY" : END 201 OPEN #2,"ALDIR.LST",INPUT IF EOF(2) THEN PRINT "NO SUPERVUE FILES IN CURRENT DIRECTORY" : END 210 LOOP: IF EOF(2) THEN GOTO 300 COUNT = COUNT + 1 INPUT LINE #2, DESCRIPTION FILES(COUNT) = DESCRIPTION[1,38] 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(9) THEN GOTO END'IT'ALL 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(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 GOSUB GET'OLD'NAME PRINT TAB(-1,0); OPEN #1,"ALLOOK.CMD",OUTPUT PRINT #1,":T" PRINT #1,"LOOK ";OLD'NAME PRINT #1,":S" PRINT #1,"ERASE ALLOOK.CMD" PRINT #1,":T" PRINT #1,"RUN AL" CLOSE #1 CHAIN "ALLOOK.CMD" 1020 SUPERVUE: REBUILD = NO GOSUB SAVE'LAST GOSUB GET'OLD'NAME PRINT TAB(-1,0); OPEN #1,"ALLOOK.CMD",OUTPUT PRINT #1,":T" PRINT #1,"VUE ";OLD'NAME PRINT #1,":S" PRINT #1,"ERASE ALLOOK.CMD" PRINT #1,":T" PRINT #1,"RUN AL" CLOSE #1 CHAIN "ALLOOK.CMD" 1100 GET'LAST: OPEN #7, "AL.CNT",INPUT INPUT #7, REBUILD, POSITION, CURRENT, MASK CLOSE #7 RETURN 1150 SAVE'LAST: OPEN #7,"AL.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 1800 REVERSE: PRINT TAB(POSITION,1);TAB(-1,32);FILES(CURRENT);TAB(-1,33); RETURN 1900 REGULAR: PRINT TAB(POSITION,1);" ";FILES(CURRENT);" "; RETURN 1950 CREATE: PRINT TAB( 1,66);CHR(7);CHR(27);"H";CHR(2);"2:::::::::::::3" PRINT TAB( 2,66);"6 6"; PRINT TAB( 3,66);"4<<<<<<<<<<<<<9"; PRINT TAB( 4,66);"6 6"; PRINT TAB( 5,66);"6 6"; PRINT TAB( 6,66);"4:::::::::::::9"; PRINT TAB( 7,66);"6 6"; PRINT TAB( 8,66);"4:::::::::::::9"; PRINT TAB( 9,66);"6 6"; PRINT TAB(10,66);"6 6"; PRINT TAB(11,66);"4:::::::::::::9"; PRINT TAB(12,66);"6 6"; PRINT TAB(13,66);"1<<<<<<<<<<<<<5";CHR(27);"H";CHR(3); PRINT TAB(14,66);" "; PRINT TAB(15,66);" "; PRINT TAB(16,66);" "; PRINT TAB(17,66);" "; PRINT TAB(18,66);" "; PRINT TAB(19,66);" "; PRINT TAB(20,66);" "; PRINT TAB(21,66);" "; PRINT TAB(22,66);" "; PRINT TAB(23,66);" "; PRINT TAB( 2,67);" CREATE "; PRINT TAB( 4,67);" ENTER NEW "; PRINT TAB( 5,67);" NAME "; PRINT TAB( 7,68); NEW'NAME = "" INPUT NEW'NAME NEW'NAME = UCS(NEW'NAME) XCALL STRIP,NEW'NAME IF LEN(NEW'NAME) < 1 THEN PRINT TAB(9,68);CHR(7); : & PRINT TAB( 9,68);"INVALID NAME"; : & PRINT TAB( 9,68);""; : GOTO SKIP'CREATE LOOKUP NEW'NAME,EXIST IF EXIST <> 0 THEN PRINT TAB( 9,68);CHR(7); : & PRINT TAB( 9,68);"NAME ALREADY"; : & PRINT TAB(10,68);" IN USE!"; : GOTO SKIP'CREATE PRINT TAB(9,68);"CONFIRM(Y/N)"; GOSUB GET'Y'N PRINT CHR(7); IF A$ = "N" THEN GOTO SKIP'CREATE REBUILD = YES GOSUB SAVE'LAST PRINT TAB(-1,0); OPEN #1,"ALLOOK.CMD",OUTPUT PRINT #1,":T" PRINT #1,"VUE ";NEW'NAME PRINT #1,":S" PRINT #1,"ERASE ALLOOK.CMD" PRINT #1,":T" PRINT #1,"RUN AL" CLOSE #1 CHAIN "ALLOOK.CMD" SKIP'CREATE: PRINT TAB(12,68);"PRESS A KEY"; GOSUB KEY'PRESS GOSUB PRINT'COMMAND GOSUB REVERSE RETURN 2000 RENAME: GOSUB GET'OLD'NAME PRINT TAB( 1,66);CHR(7);CHR(27);"H";CHR(2);"2:::::::::::::3" PRINT TAB( 2,66);"6 6"; PRINT TAB( 3,66);"4<<<<<<<<<<<<<9"; PRINT TAB( 4,66);"6 6"; PRINT TAB( 5,66);"4:::::::::::::9"; PRINT TAB( 6,66);"6 6"; PRINT TAB( 7,66);"6 6"; PRINT TAB( 8,66);"4:::::::::::::9"; PRINT TAB( 9,66);"6 6"; PRINT TAB(10,66);"4:::::::::::::9"; PRINT TAB(11,66);"6 6"; PRINT TAB(12,66);"6 6"; PRINT TAB(13,66);"4:::::::::::::9"; PRINT TAB(14,66);"6 6"; PRINT TAB(15,66);"1<<<<<<<<<<<<<5";CHR(27);"H";CHR(3); PRINT TAB(16,66);" "; PRINT TAB(17,66);" "; PRINT TAB(18,66);" "; PRINT TAB(19,66);" "; PRINT TAB(20,66);" "; PRINT TAB(21,66);" "; PRINT TAB(22,66);" "; PRINT TAB(23,66);" "; PRINT TAB( 2,67);" RENAME "; PRINT TAB( 4,67);TAB(-1,32);OLD'NAME;TAB(-1,33); PRINT TAB( 6,67);" ENTER NEW "; PRINT TAB( 7,67);" NAME "; PRINT TAB( 9,68); NEW'NAME = "" INPUT NEW'NAME NEW'NAME = UCS(NEW'NAME) XCALL STRIP,NEW'NAME IF LEN(NEW'NAME) < 1 THEN PRINT TAB(11,68);CHR(7); : & PRINT TAB(11,68);"INVALID NAME"; : & PRINT TAB(12,68);""; : GOTO SKIP'NAME LOOKUP NEW'NAME,EXIST IF EXIST <> 0 THEN PRINT TAB(11,68);CHR(7); : & PRINT TAB(11,68);"NAME ALREADY"; : & PRINT TAB(12,68);" IN USE!"; : GOTO SKIP'NAME ! PRINT TAB(22,5);"RENAME ";TAB(-1,32);" ";OLD'NAME;" ";TAB(-1,33);" TO ";TAB(-1,32);" ";NEW'NAME;" ";TAB(-1,33);" Y to confirm "; PRINT TAB( 5,66);CHR(27);"H";CHR(2);"6 6"; PRINT TAB( 6,66);"6 6"; PRINT TAB( 7,66);"4:::::::::::::9"; PRINT TAB( 8,66);"6 6"; PRINT TAB( 9,66);"4:::::::::::::9"; PRINT TAB(10,66);"6 6"; PRINT TAB(11,66);"6 6"; PRINT TAB(12,66);"6 6"; PRINT TAB(13,66);"4:::::::::::::9"; PRINT TAB(14,66);"6 6"; PRINT TAB(15,66);"1<<<<<<<<<<<<<5";CHR(27);"H";CHR(3); PRINT TAB( 5,67);" TO "; PRINT TAB( 6,67);TAB(-1,32);NEW'NAME;TAB(-1,33); PRINT TAB( 8,67);" CONFIRM(Y/N)"; PRINT TAB(8,79);CHR(7); GOSUB GET'Y'N PRINT CHR(7); IF A$ = "N" THEN GOTO SKIP'NAME PRINT TAB(-1,0); REBUILD = YES GOSUB SAVE'LAST OPEN #1,"ALLOOK.CMD",OUTPUT PRINT #1,":S" PRINT #1,"RENAME ";NEW'NAME;"=";OLD'NAME PRINT #1,":T" PRINT #1,"ERASE ALLOOK.CMD" PRINT #1,"RUN AL" CLOSE #1 CHAIN "ALLOOK.CMD" SKIP'NAME: PRINT TAB(14,68);"PRESS A KEY"; GOSUB KEY'PRESS GOSUB PRINT'COMMAND GOSUB REVERSE RETURN 2100 DELETE: GOSUB GET'OLD'NAME NEW'NAME = FILES(CURRENT)[1,6] XCALL STRIP,NEW'NAME PRINT TAB( 1,66);CHR(7);CHR(27);"H";CHR(2);"2:::::::::::::3" PRINT TAB( 2,66);"6 6"; PRINT TAB( 3,66);"4<<<<<<<<<<<<<9"; PRINT TAB( 4,66);"6 6"; PRINT TAB( 5,66);"4:::::::::::::9"; PRINT TAB( 6,66);"6 6"; PRINT TAB( 7,66);"4:::::::::::::9"; PRINT TAB( 8,66);"6 6"; PRINT TAB( 9,66);"4:::::::::::::9"; PRINT TAB(10,66);"6 6"; PRINT TAB(11,66);"1<<<<<<<<<<<<<5"; PRINT TAB(12,66);" "; PRINT TAB(13,66);" "; PRINT TAB(14,66);" "; PRINT TAB(15,66);" ";CHR(27);"H";CHR(3); PRINT TAB(16,66);" "; PRINT TAB(17,66);" "; PRINT TAB(18,66);" "; PRINT TAB(19,66);" "; PRINT TAB(20,66);" "; PRINT TAB(21,66);" "; PRINT TAB(22,66);" "; PRINT TAB(23,66);" "; PRINT TAB( 2,67);" DELETE "; PRINT TAB( 4,67);TAB(-1,32);OLD'NAME;TAB(-1,33); PRINT TAB( 6,67);" CONFIRM(Y/N)"; PRINT TAB( 9,68); PRINT TAB(6,80);CHR(7); GOSUB GET'Y'N PRINT CHR(7); IF A$ = "N" THEN GOTO SKIP'DELETE PRINT TAB(8,68);"AGAIN (Y/N)";CHR(7); GOSUB GET'Y'N PRINT CHR(7) IF A$ = "N" THEN GOTO SKIP'DELETE PRINT TAB(-1,0); POSITION = POSITION - 1 CURRENT = CURRENT - 1 IF POSITION < 1 THEN POSITION = 1 IF CURRENT < 1 THEN CURRENT = 1 REBUILD = YES GOSUB SAVE'LAST OPEN #1,"ALLOOK.CMD",OUTPUT PRINT #1,":S" PRINT #1,"RENAME ";NEW'NAME;".BAK=";OLD'NAME PRINT #1,":T" PRINT #1,"ERASE ALLOOK.CMD" PRINT #1,"RUN AL" CLOSE #1 CHAIN "ALLOOK.CMD" SKIP'DELETE: PRINT TAB(10,68);"PRESS A KEY"; GOSUB KEY'PRESS GOSUB PRINT'COMMAND GOSUB REVERSE RETURN 2150 PRINT'COMMAND: PRINT TAB( 1,66);CHR(27);"H";CHR(2);"2:::::::::::::3" PRINT TAB( 2,66);"6 6"; PRINT TAB( 3,66);"4<<<<<<<<<<<<<9"; PRINT TAB( 4,66);"6 6"; PRINT TAB( 5,66);"4:::::::::::::9"; PRINT TAB( 6,66);"6 6"; PRINT TAB( 7,66);"6 6"; PRINT TAB( 8,66);"6 6"; PRINT TAB( 9,66);"6 6"; PRINT TAB(10,66);"6 6"; PRINT TAB(11,66);"6 6"; PRINT TAB(12,66);"6 6"; PRINT TAB(13,66);"4:::::::::::::9"; PRINT TAB(14,66);"6 6"; PRINT TAB(15,66);"4:::::::::::::9"; PRINT TAB(16,66);"6 6"; PRINT TAB(17,66);"6 6"; PRINT TAB(18,66);"6 6"; PRINT TAB(19,66);"6 6"; PRINT TAB(20,66);"6 6"; PRINT TAB(21,66);"6 6"; PRINT TAB(22,66);"1<<<<<<<<<<<<<5";CHR(27);"H";CHR(3); PRINT TAB( 2,67);" COMMANDS "; PRINT TAB( 4,67);" POSTITION "; PRINT TAB( 6,67);"HOME "; PRINT TAB( 7,67);"UP/DOWN "; PRINT TAB( 8,67);"^R..(page up)"; PRINT TAB( 9,67);"^T(page down)"; PRINT TAB(10,67);"^E......(end)"; PRINT TAB(11,67);"ESC/^C.(exit)"; PRINT TAB(12,67);"(alpha char.)"; PRINT TAB(14,67);" FILE "; PRINT TAB(16,67);"RETURN.(LOOK)"; PRINT TAB(17,67);"^S......(VUE)"; PRINT TAB(18,67);"^N...(create)"; PRINT TAB(19,67);"LEFT.(rename)"; PRINT TAB(20,67);"^I.(new mask)"; PRINT TAB(21,67);"RIGHT(delete)"; 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 "AL.CNT",EXIST IF EXIST <> 0 THEN KILL "AL.CNT" LOOKUP "ALDIR.LST",EXIST IF EXIST <> 0 THEN KILL "ALDIR.LST" LOOKUP "ALLOOK.CMD",EXIST IF EXIST <> 0 THEN KILL "ALLOOK.CMD" PRINT TAB(-1,0); IF A$ = CHR(9) THEN CHAIN "AL" END 2400 GET'OLD'NAME: OLD'NAME = FILES(CURRENT)[1,6] XCALL STRIP,OLD'NAME OLD'NAME = OLD'NAME + "." + FILES(CURRENT)[8,10] XCALL STRIP,OLD'NAME RETURN 2450 DORMANT: PRINT TAB(-1,0);CHR(27);"H";CHR(2); PRINT TAB( 9,20);"2:::::::::::::::::::::::::::::::::3"; PRINT TAB(10,20);"6 6"; PRINT TAB(11,20);"1:::::::::::::::::::::::::::::::::5";CHR(27);"H";CHR(3) PRINT TAB(10,21);" SCREEN DORMANT...PRESS RETURN "; INPUT A$ EXIST = 0 GOTO 300 RETURN