ASMB,R,L,C
      HED (FMGR) MAIN: RTE-L/20 FILE MANAGER
*     NAME:   FMGR
*     SOURCE: 92071-18310 
*     RELOC:  92071-16310 
*     PGMR:   M.L.K.
*     MOD:    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.       *
*  ***************************************************************
* 
      NAM FMGR,1,90 92071-16310 REV.2041 800807 
* 
*     GLOBAL DATA 
* 
      ENT CAMS., P.TR 
      ENT .IDAD 
      ENT TMP., SC.L, CR.L
      ENT C.BUX, C.BUF, C.DLM 
      ENT INT., N.OPL, P.RAM, P.CNT 
      ENT CUSE., CAD., U.CMD, SCR.
      ENT ECH, ECHF., NO.RD, ONE.C
      ENT G0.., P.6, P.7, SVCOD, XPAND, .E.R
      ENT O.BUF, I.BUF, CAM.I, CAM.O, BUF.
* 
*     EXTERNAL SUBROUTINES
* 
      EXT CALL. 
      EXT RMPAR, SAVST
* 
*     LOADR COMMANDS
* 
      LOD 2,SG,7    7 SEGMENTS
      SUP 
      SKP 
* 
*     FMGR MAIN CODE
* 
FMGR  NOP 
* 
      JSB RMPAR     GET SCHEDULING PARAMETERS 
      DEF *+2 
      DEF P.RAM     STORE IN P.RAM TEMPORARILY
* 
      JSB SAVST     SAVE THE RUN STRING 
      DEF *+1       UNTIL IN.IT 
* 
      JSB CALL.     CALL IN.IT
      DEF *+3 
      DEF INSEG     SEGMENT NAME
      DEF ZERO      ROUTINE NUMBER
      SKP 
* 
*     COMMAND LOOP
* 
*     1. CALL THE COMMAND READ AND PARSE ROUTINE
*     2. EXECUTE THE APPROPRIATE ACTION ROUTINE 
*     3. ISSUE EXPANDED MESSAGE (IF NECESSARY)
*     4. CLOSE THE INPUT AND OUTPUT DCBS
*     5. GO TO 1. 
* 
LOOP  JSB CALL.     CALL PARSE
      DEF *+3 
      DEF PARSG     SEGMENT NAME
      DEF ZERO      ROUTINE NUMBER
* 
      JSB CALL.     CALL ACTION ROUTINE 
      DEF *+3 
      DEF CUSE.     SEGMENT NAME
      DEF CAD.      ROUTINE NUMBER
* 
      LDA NO.RD     GET NO READ FLAG
      SZA           IF COMMAND ALREADY SET UP,
      JMP LOOP       THEN CONTINUE LOOP (DON'T INTERFERE) 
* 
      LDA P.6       GET USER ERROR CODE 
      SZA,RSS       IF NOT SET, 
      JMP NXCMD      THEN CONTINUE
* 
      LDA XPAND     GET ERROR EXPANSION FLAG
      SZA,RSS       IF NOT SET, 
      JMP NXCMD      THEN CONTINUE
* 
      CLA,INA       SET COMMAND 
      STA ECH        LENGTH TO 1
      CCA           SET NO READ FLAG
      STA NO.RD      TO EXECUTE COMMAND IN C.BUF
      LDA QUEST     GET COMMAND TO EXPAND ERROR 
      STA C.BUF      PUT IN COMMAND BUFFER
      JMP LOOP      CONTINUE LOOP 
* 
*     DETERMINE WHETHER TO CONTINUE OR EXIT 
* 
NXCMD LDA ONE.C     GET ONE COMMAND FLAG
      SZA,RSS       IF NOT SET, 
      JMP LOOP       THEN CONTINUE LOOP 
* 
      CLA,INA       SET COMMAND 
      STA ECH        LENGTH TO 1
      CCA           SET NO READ FLAG
      STA NO.RD      TO EXECUTE COMMAND IN C.BUF
      LDA EXIT      GET COMMAND TO EXIT 
      STA C.BUF      PUT IN COMMAND BUFFER
      JMP LOOP        AND CONTINUE LOOP 
* 
*     LOCAL STORAGE AREA
* 
ZERO  NOP 
* 
PARSG ASC 1,1       SUFFIX FOR SEGMENT CONTAINING PAR.. 
INSEG ASC 1,2       SUFFIX FOR SEGMENT CONTAINING IN.IT 
* 
QUEST ASC 1,??      ERROR EXPANSION COMMAND 
EXIT  ASC 1,EX      FMGR EXIT COMMAND 
      SKP 
* 
*     FILE MANAGER GLOBAL STORAGE AREA
* 
*     TRANSFER STACK AND POINTER
* 
CAMS. BSS 61        TRANSFER FILE STACK (6 WORDS PER ENTRY) 
P.TR  DEF CAMS.     POINTER TO POSITION IN TRANSFER STACK 
* 
*     SEGMENT CONTROL 
* 
.IDAD NOP           ID SEGMENT ADDRESS OF CURRENT SEGMENT 
* 
*     LIST NAMR BUFFER (ORDERED)
* 
TMP.  NOP           CHARS #1 AND #2 OF LIST NAMR
      NOP           CHARS #3 AND #4 OF LIST NAMR
      NOP           CHARS #5 AND #6 OF LIST NAMR
SC.L  NOP           SECURITY CODE OF LIST NAMR
CR.L  NOP           CARTRIDGE/LU OF LIST NAMR 
* 
*     COMMAND INPUT BUFFER (ORDERED)
* 
C.BUX ASC 1, :      CONTAINS A COLON FOR ECHO 
C.BUF BSS 40        INPUT BUFFER
C.DLM NOP           POINTER TO DELIMITER FOLLOWING COMMAND
* 
*     ARRAYS SET AND USED DURING PARSING (ORDERED)
* 
INT.  OCT 1         INTERACTIVE FLAG; 0= NOT INT, #0= INTERACTIVE 
N.OPL BSS 10        SUBPARAMETER LIST FOR 1ST TWO PARAMETERS
P.RAM BSS 64        PARSED PARAMETER LIST; 4 WORDS PER PARAMETER
P.CNT NOP           PARAMETER COUNT 
CUSE. NOP           SEGMENT NAME (FROM PARSE) 
CAD.  NOP           ROUTINE NUMBER (FROM PARSE) 
U.CMD NOP           1ST AND 2ND CHARACTERS OF COMMAND 
SCR.  NOP           3RD AND 4TH CHARACTERS OF COMMAND 
      NOP           5TH AND 6TH CHARACTERS OF COMMAND 
ECH   NOP           WORD COUNT FOR ECHO 
ECHF. NOP           ECHO FLAG; 0= NO ECHO, #0= NEEDS ECHO 
NO.RD NOP           NO READ FLAG; 0= NO READ, #0= MUST READ NEXT COMND
ONE.C NOP           ONE COMMAND FLAG; 0= MULTIPLE COMMANDS, #0= ONE COMMAND 
      SKP 
* 
*     GLOBALS AND SEVERITY CODE  (ORDERED)
* 
G0..  BSS 40        0G THRU 9G
      DEC 3         10G (ALWAYS ASCII)
      BSS 5         1P THRU 5P
P.6   NOP           6P = LAST ERROR CODE
P.7   NOP           7P = USER'S COPY OF SEVERITY CODE 
SVCOD NOP           FMGR'S COPY OF SEVERITY CODE
XPAND NOP           ERROR EXPANSION FLAG
.E.R  NOP           INTERNAL GLOBAL ERROR 
* 
*     GLOBAL DCB'S AND BUFFERS
* 
O.BUF BSS 144       GENERAL OUTPUT DCB
I.BUF BSS 144       GENERAL INPUT  DCB
CAM.I BSS 144       COMMAND INPUT  DCB
CAM.O BSS 1         LOG LU
BUF.  BSS 129       GENERAL DISC BUFFER 
* 
A     EQU 0 
B     EQU 1 
* 
END   EQU * 
* 
      END FMGR
                                                                                                                                                                                                