ASMB,R,L,C
      HED (FMGR) CALL.:  ACTION ROUTINE CALLER
*     NAME:   CALL. 
*     SOURCE: 92071-18207 
*     RELOC:  92071-16207 
*     PGMR:   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 CALL.,7 92071-1X207 REV.2041 800324 
* 
      ENT CALL., SEG.R, FM.AB 
* 
      EXT .E.R, P.CNT, P.RAM, I.BUF, O.BUF
      EXT MSS.
      EXT CLOSE 
      EXT .ENTR, EXEC 
      SUP 
      SKP 
* 
*     DESCRIPTION 
* 
*     CALL. IS USED TO CONTROL THE CALLING OF FMGR ACTION ROUTINES
*     (LOCATED WITHIN SEGMENTS OF FMGR).  IT ASSUMES THAT 
*     THE SEGMENT MAIN WILL RETURN TO THE LABEL SEG.R, WITH 
*     THE ADDRESS OF A COMMAND TABLE IN THE A-REG.
* 
*     ACTION ROUTINES MAY EITHER RETURN NORMALLY, OR JUMP TO
*     THE LABEL FM.AB.
* 
*     CALLING SEQUENCE: 
* 
*     CALL.(SEG,ROUTN)
* 
*     WHERE:
* 
*     SEG    IS THE LAST ASCII CHARACTER OF THE SEGMENT NAME
*            CONTAINING THE ACTION ROUTINE TO BE CALLED.
* 
*     ROUTN  IS THE ROUTINE NUMBER WITH THE SEGMENT TO BE CALLED. 
*            USED AS AN OFFSET INTO THE COMMAND TABLE LOCATED 
*            IN THE SEGMENT MAIN. 
      SKP 
* 
*     ENTRY 
* 
SEG   NOP 
ROUTN NOP 
* 
CALL. NOP 
      JSB .ENTR     GET PARAMETERS
      DEF SEG 
* 
      LDA SEG,I     GET REQUESTED SEGMENT NAME
      CPA CURSG     IF ALREADY IN MEMORY
      JMP EXQUT      THEN CONTINUE
* 
      STA CURSG     SAVE IN CURRENT SEGMENT 
      JSB EXEC      LOAD THE SEGMENT
      DEF *+3 
      DEF .8
      DEF SEGNM     SEGMENT NAME
* 
SEG.R STA CADDR     SEGMENT RETURN POINT. A= ADDRESS OF SEG TABLE 
* 
EXQUT LDA CADDR     GET COMMAND TABLE ADDRESS 
      ADA ROUTN,I    ADD ROUTINE NUMBER 
      LDA A,I         AND GET ROUTINE ADDRESS 
      STA ROUTN     PUT IN COMMAND ADDRESS
* 
      CLA           CLEAR OUT 
      STA ER          ERROR 
      STA .E.R          WORDS 
* 
      JSB ROUTN,I   CALL ACTION ROUTINE 
      DEF *+4 
      DEF P.CNT 
      DEF P.RAM 
      DEF ER
* 
FM.AB LDA ER        GET ERROR CODE
      SZA,RSS       IF NO ERROR OCCURRED, 
      JMP KLOSE      THEN GO CLOSE FILES
* 
      JSB MSS.      ISSUE ERROR 
      DEF *+2 
      DEF ER
* 
KLOSE JSB CLOSE      CLOSE INPUT FILE 
      DEF *+2 
      DEF I.BUF 
* 
      JSB CLOSE      CLOSE OUTPUT FILE
      DEF *+2 
      DEF O.BUF 
* 
      JMP CALL.,I    AND RETURN 
      SKP 
* 
*     STORAGE AREA
* 
.8    DEC 8 
* 
SEGNM ASC 2,FMGR    - 
CURSG NOP           - CURRENTLY RESIDENT SEGMENT
* 
CADDR NOP           COMMAND TABLE ADDRESS 
ER    NOP           LOCAL ERROR CODE
* 
A     EQU 0 
B     EQU 1 
* 
END   EQU * 
* 
      END 
  