SPL,L,O,M ! NAME: DL.. ! SOURCE: 92071-18017 ! RELOC: 92071-16017 ! PGMR: G.A.A. ! MOD: M.L.K., E.D.B. ! ! *************************************************************** ! * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * ! * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * ! * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* ! * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * ! *************************************************************** ! NAME DL..(7) "92071-1X017 REV.2041 800709" ! ! RTE FMGR DIRECTORY LIST MODULE ! ! ENTERED ON COMMAND: ! ! DL[,CRN[,MSC]] ! ! OR ! ! DL,NAMR[,MSC] ! ! WHERE: ! ! CRN IF SUPPLIED, RESTRICTS THE LIST TO SPECIFIED CARTRIDGE ! ! NAMR IS A FILE NAMR, WITH OPTIONAL SECURITY CODE, CARTRIDGE ! IDENTIFIER AND ADDITIONAL SUBPARAMETERS. ! ! MSC IF SUPPLIED, MUST BE THE MASTER SECURITY CODE, ! AND CAUSES THE EXPANDED LIST FORMAT. (SEE BELOW) ! ! DIRECTORY LIST FORMAT: ! !L1 CR=CCCCC (TIME) !L2 ILAB =LLLLLL NXTR=TTTT NXSEC=SSS #SEC/TR=XXX ! LAST TR= YYYY #DR TR=ZZ ! ! WHERE: ! ! CCCCC IS FOLLOWED BY THE CARTRIDGE ID NUMBER ! YYYYYY IS THE CARTRIDGE LABEL ! TTTT IS THE NEXT AVAILABLE TRACK ! SSS IS THE NEXT AVAILABLE SECTOR ! XXX IS THE NUMBER OF SECTORS/TRACK ! YYYY IS THE LAST AVAILABLE TRACK ! ZZ IS THE NUMBER OF DIRECTORY TRACKS ! ! STANDARD (MSC NOT SUPPLIED): !L3 NAME TYPE #BLKS/LU OPEN TO ! ! EXTENDED FORMAT (MSC SUPPLIED) !L3 NAME TYPE #BLKS/LU SCODE TRACK SEC OPEN TO ! ! FOLLOWED BY THE DIRECTORY ENTRIES: ! ! IF A PROGRAM HAS A FILE OPEN EXCLUSIVELY ! A - (MINUS SIGN) WILL FOLLOW THE PROGRAM'S NAME ! ! IF AN ENTRY IS FOR AN EXTENT A + (PLUS SIGN) ! WILL BE PRINTED IN THE OPEN TO FIELD ! FOLLOWED BY THE EXTENT NUMBER ! ! EXTERNAL SUBROUTINES LET CONV. BE SUBROUTINE,EXTERNAL LET FSTAT BE SUBROUTINE,EXTERNAL LET L.OPN BE SUBROUTINE,EXTERNAL,DIRECT LET L.HED BE SUBROUTINE,EXTERNAL LET L.WRT BE SUBROUTINE,EXTERNAL LET L.SPC BE SUBROUTINE,EXTERNAL,DIRECT LET L.WEF BE SUBROUTINE,EXTERNAL,DIRECT LET CONV. BE SUBROUTINE,EXTERNAL LET MSS. BE SUBROUTINE,EXTERNAL LET FM.ER BE SUBROUTINE,EXTERNAL ! ! EXTERNAL FUNCTIONS LET CR.LU BE FUNCTION,EXTERNAL LET F.SET BE FUNCTION,EXTERNAL LET F.GET BE FUNCTION,EXTERNAL LET FID. BE FUNCTION,EXTERNAL LET MSC. BE FUNCTION,EXTERNAL LET P.NAM BE FUNCTION,EXTERNAL ! ! EXTERNAL VARIABLES LET BUF. BE INTEGER,EXTERNAL LET N.OPL BE INTEGER,EXTERNAL ! ! INTERNAL SUBROUTINES LET WHEAD BE SUBROUTINE,DIRECT ! ! INTERNAL FUNCTIONS LET DL BE FUNCTION ! ! INTERNAL VARIABLES LET D.SDR(128)BE INTEGER LET FNAME, FN2, FN3, FTYPE, FTRAK, FSECT, \ FSIZE, FRECL, FSECU, FFLAG(7) BE INTEGER LET DFALT(3) BE INTEGER LET MS(3),MS2,MS3,MS4 BE INTEGER LET HEAD1(4),H1(2),H1.5,H2(4),H3,H4(4), \ H5,H6(5),H7,H8(6),H9,H10(4),H11,H12 \ BE INTEGER LET HEAD2(15),HEAD3(24) BE INTEGER ! INITIALIZE DFALT TO "------" INITIALIZE MS TO "DISC =" INITIALIZE HEAD1,H1,H1.5,H2,H3,H4,H5,H6,H7,H8,H9,H10,H11,H12 TO \ " ILAB=XXXXXX NXTR=XXXX NXSEC=XXX", \ " #SEC/TR=XXX LAST TR= XXXX #DR TR=XX " INITIALIZE HEAD2 TO \ " NAME TYPE #BLKS/LU OPEN TO" INITIALIZE HEAD3 TO \ " NAME TYPE #BLKS/LU SCODE TRACK SEC OPEN TO" ! ! INTERNAL CONSTANTS LET EXCL BE CONSTANT ( 15K) !" -" - " " ! DL..: SUBROUTINE(N,LIS,ER) GLOBAL IF LIS=0 THEN [MASK_ @DFALT; DISC_ @N.OPL+1] IF LIS=1 THEN [MASK_ @DFALT; DISC_ @LIS+1] IF LIS=3 THEN [MASK_ @LIS+1; DISC_ @N.OPL+1] ! MSKFL_ F.SET($MASK,N.OPL) !SET UP FILE MASK DISC_ $DISC !AND DISC ID ! IF $[T_ @LIS+4] THEN [ \IF MSC GIVEN, IFNOT [EXEND_ MSC.($T)] THEN [ \CHECK IF CORRECT, ER_ 51; RETURN]], \TAKE ERROR EXIT ELSE EXEND_ 0 !OTHERWISE NORMAL LIST ! PTR18_[PTR16_[PTR13_[PTR11_[PTR9_[ \SET POINTERS PTR6_[PTR4_[PTR3_[PTR2_[TB_ \ @BUF.+1]+1]+1]+1]+2]+3]+2]+2]+3]+2 ! BUF. _ " " ! L.OPN !OPEN LIST FILE ! IF DISC THEN [ \DO SINGLE DISC IFNOT CR.LU(DISC) THEN [ER_ -32; RETURN]; \ IF FID.(DISC) THEN [ER_ -103; RETURN]; \ FOUND_ DL(DISC,-1)], \ ELSE [ \OTHERWISE MULTI DISCS FSTAT(D.SDR,124); \GET CARTRIDGE LIST LUPT_ @D.SDR; \SET POINTER FOUND_ 0; \CLEAR FOUND FLAG UNTIL [DISC_ -$LUPT]=0 DO [ \DO FOR EVERY DISC IFNOT FID.(DISC) THEN \IF GOOD DISC, FOUND_ FOUND OR DL(DISC,0), \ THEN WRITE DIR LIST ELSE [ \OTHERWISE, MS2_ "- "; \ CONV.(-DISC,MS4,5); \CONVERT LU TO ASCII MSS.(-103); \PRINT ERROR MESSAGE FM.ER(2,MS,6)]; \PRINT DISC ID LUPT_ LUPT+4]] !DO NEXT DISC ! IF FOUND THEN RETURN !IF A FILE FOUND, RETURN ! ER_ [IF MSKFL THEN -50, ELSE -6] !RETURN PROPER ERROR RETURN END ! DL: FUNCTION(DIS,XXX) ! ! WRITE DIRECTORY LIST FOR A SINGLE DISC ! LET ENTRY(2) BE INTEGER ! ENTRY(1)_ DIS; ENTRY(2)_ 0 !SET UP FOR SEARCH PRNTD_ 0 !CLEAR PRINTED FLAG ! ! CREATE CARTRIDGE HEADER LINE ! IF F.GET(FNAME,ENTRY) THEN RETURN 0 !GET CARTRIDGE HEADER ! H1(1)_ FNAME AND 77777K !CARTRIDGE LABEL H1(2)_ FN2; H1.5_ FN3 CRN_ FTYPE !SAVE CRN CONV.(FFLAG,H3,4) !INSERT NEXT TRACK CONV.(FSECT,H5,3) !NEXT SECTOR CONV.(FSIZE AND 377K,H7,3) !#SECTORS/TRACK CONV.(FRECL-FSECU-1,H9,4) !LAST TRACK CONV.(-FSECU,H11,2) !#DIRECTORY TRACKS IF XXX THEN WHEAD !WRITE OUT HEADER ! ! LOOK FOR FILES TO LIST ! NXFIL:IF F.GET(FNAME,ENTRY) THEN [ \GET FILE ENTRY IF PRNTD THEN L.WEF; \ RETURN PRNTD] ! IF FNAME<0 THEN GOTO NXFIL !CHECK FOR FILE ENTRY ! IFNOT PRNTD THEN WHEAD !WRITE OUT HEADER FOR T_ TB TO TB+80 DO $T_ " " !BLANK BUFFER $TB_ FNAME; $PTR2_ FN2; $PTR3_ FN3 !SET NAME CONV.(FTYPE,$PTR6,5) !SET TYPE IF FTYPE THEN CONV.(FSIZE/2,$PTR9,5), \CONVERT BLOCK SIZE ELSE CONV.(FTRAK AND 77K,$PTR9,5) !OR LU NUMBER ! IF EXEND THEN [ \DO EXTENDED LINE IF FSECU<0 THEN [ \IF SECU NEGATIVE $PTR11_ "- "; \SET "- " IN BUFFER FSECU_ -FSECU]; \SET POSITIVE CONV.(FSECU,$PTR13,5); \SET SECURITY CODE IF FTYPE THEN [ \IF TYPE ZERO CONV.(FTRAK,$PTR16,4); \CONVERT TRACK CONV.(FSECT AND 377K,$PTR18,3)]; \AND SECTOR T2_ TB+19], \SET WORKING ADDRESS ELSE T2_ TB+10 !SET WORKING ADDRESS ! IF FTYPE THEN [ \IF NOT TYPE ZERO, IF [T_(FSECT-<8) AND 377K] THEN [ \AND NOT MAIN EXTENT $T2_ "+ "; \SET "+ " IN BUFFER CONV.(T,$(T2+1),3); \SET EXTENT NUMBER GOTO PRT]] !AND CONTINUE ! FOR FLG_ 1 TO 7 DO [ \CHECK ALL OPEN FLAGS IF [T_ FFLAG(FLG)] THEN [ \IF OPEN FLAG PRESENT, IFNOT P.NAM($T2,T AND 377K) THEN \THEN GET PROGRAM NAME T2_T2+3; \ AND BUMP POINTER IF T < 0 THEN \IF EXCLUSIVE OPEN, $(T2-1)_ $(T2-1)+EXCL]] !CHANGE LAST CHARACTER ! PRT: T_ TB+81 !SET LINE LENGTH ! LNCK: IF $[T_T-1]=" " THEN GOTO LNCK !BACK UP OVER BLANKS L.WRT(BUF.,T-TB+2) !WRITE THE LINE GOTO NXFIL END ! WHEAD:SUBROUTINE ! ! WRITE OUT CARTRIDGE DESCRIPTIVE HEADER ! FOR T_ TB TO TB+80 DO $T_ " " !CLEAR BUFFER $TB_"CR"; $PTR2_ "= " !SET "CR= " IN BUFFER CONV.(CRN,$PTR4,5) !SET CRN IN BUFFER L.HED(BUF.) !WRITE FIRST HEADER L.WRT(HEAD1,36) !WRITE SECOND HEADER L.SPC ! IF EXEND THEN L.WRT(HEAD3,24), \WRITE NORMAL ELSE L.WRT(HEAD2,15) ! OR EXTENDED HEADER L.SPC ! ! PRNTD_ -1 !SET PRINTED FLAG RETURN ! AND RETURN END ! END END$