ASMB,L,R,C
      HED RFAM2 * SINGLE DCB - RFA MONITOR * (C) HEWLETT-PACKARD CO. 1977 
      NAM RFAM,19,30 91740-16003 REV 1740 771019
      SPC 2 
******************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. ALL RIGHTS      *
*  * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,       *
*  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT*
*  * THE PRIOR WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY.   *
******************************************************************
      SPC 2 
      SPC 2 
****************************************************************
* 
*     SINGLE DCB VERSION OF RFA MONITOR 
* 
*     SOURCE PART # 91740-18003 REV 1740
* 
*     REL PART #    91740-16003 REV 1740
* 
*     WRITTEN BY:    CHUCK WHELAN 
* 
*     DATE WRITTEN:  DEC 1976 
* 
*     MODIFIED BY:
* 
*     DATE MODIFIED:
* 
*************************************************************** 
      SPC 2 
      EXT EXEC,D65GT,D65SV
      EXT APOSN,CLOSE,FCONT,CREAT,LOCF,NAMF 
      EXT OPEN,POSNT,PURGE,READF,FSTAT,RWNDF
      EXT WRITF,#NODE 
      SUP 
* 
BUFSZ EQU 128       MAXIMUM DATA BUFFER 
* 
      SPC 3 
ICLAS NOP 
RFAM2 LDA B,I       GET THE CLASS 
      STA ICLAS 
      HED RFAM: ACTIVATOR * (C) HEWLETT-PACKARD CO. 1977
* 
*     WE COME HERE INITIALLY AND EACH TIME A REQUEST HAS BEEN PROCESSED.
* 
GO    JSB D65GT     WAIT FOR A REQUEST TO COME
      DEF *+6 
      DEF ICLAS     CLASS # 
      DEF REQST     BUFFER
      DEF D14       MAXIMUM LENGTH OF THE INCOMING BUFFER 
DTBFA DEF DTBFR     DATA BUFFER ADDRESS 
      DEF BUFLN     MAXIMUM DATA LENGTH 
      JMP ERR53     MUST BE A LENGTH ERROR
* 
      STA RQLN      SAVE THE REQUEST LENGTH 
      LDA REQST+4   GET THE FUNCTION CODE 
      SSA           CHECK FOR VALIDITY
      JMP ERR25     <0, NO GOOD 
      ADA DM14      CHECK UPPER BOUND 
      SSA,RSS 
      JMP ERR25     >13, NO GOOD EITHER 
* 
*     SINCE FUNCTION CODE LOOKS OK, WE USE IT AS INDEX IN A TABLE 
*     TO GO TO THE PROPER PREPROCESSING.
* 
      CLA 
      STA IERR
      LDA REQST+4   GET FCODE AGAIN 
      ADA JSBTB 
      LDA 0,I 
      STA CALLI     SET UP "JSB" ADR
      LDA REQST+4 
      ADA BRNCH     ADD TO THE BEGINNING OF THE BRANCH TABLE
      JMP A,I       GO EXECUTE THE PREPROCESSING
      HED RFAM: ORIENTATION * (C) HEWLETT-PACKARD CO. 1977
* 
* 
*     WE WILL TRY TO DESCRIBE HERE THE FLOW OF OPERATIONS 
*     IN THIS PROGRAM.
* 
* 
* 
*  1. EACH REQUEST IS PROCESSED IN 4 PHASES:
*         - PREPROCESS
*         - FMP CALL BUILDING 
*         - EXECUTION OF THE FMP CALL 
*         - POSTPROCESS 
* 
*     THE CHOICE OF THE PROCESSOR IS MADE EACH TIME BY USING
*     THE REQUEST CODE AS AN INDEX IN A BRANCH TABLE. 
* 
* 
*  2. PREPROCESSING 
*     THE READER SHOULD FIND IN THE PREPROCESSING BRANCH TABLE
*     (BRNCH) THE LABEL AT WHICH THE CURRENT PREPROCESS WILL START. 
* 
* 
* 
*  3. FMP CALL FORMATING. 
*     THE TABLE WE WILL USE TO SELECT A PROCESSOR IS BLDTB. 
*     IN THIS PART WE ONLY SET THE ADDRESSES OF THE PARAMETERS
*     IN THE CALL BUFFER. 
* 
* 
*  4. POSTPROCESSING
*     ON COMPLETION OF THE FMP CALL WE GO TO "DONE" WHERE THE 
*     SELECTION OF THE PREPROCESSOR IS DONE THROUGH THE TABLE 
*     PSTBL.
* 
*     PST05 USED FOR DNAME AND DPURG
*         IF THE FILE WAS OPEN BEFORE THE FMP CALL AND THE CALL 
*         WAS EXECUTED WITHOUT ERROR, THE CURRENT RFAMD ENTRY 
*         IS DELETED. 
* 
*     PST04 USED FOR DCRET
*         IF THE ICR WAS NOT SPECIFIED IN THIS REQUEST, SET THE 
*         PROPER CRN VALUE IN THE RFAMD ENTRY.
*         IN ANY CASE, FIND THE RFAMD ENTRY # AND PASS IT TO
*         THE USER. 
* 
*     PST00 USED FOR DSTAT
*         SET THE DATA LENGTH TO 125 WORDS. 
* 
*     PST02 USED FOR DREAD
*         SET THE DATA LENGTH 
* 
*     PST03 USED FOR DOPEN
*         IF THE ICR WAS SPECIFIED IN THE REQUEST, THE RFAMD
*         ENTRY # IS SET IN THE REQST, AND THE REPLY IS SENT. 
*         IF THE ICR WAS NOT SPECIFIED IN THE REQUEST, THE
*         LEGALITY OF THIS OPEN IS CHECKED, AND EITHER: 
*         - REJECTED (ERR -08) THE TYPE OF THE OPEN MAY HAVE
*         BE RESTORED 
*         - ACCEPTED, THE CRN IS SET IN THE RFAMD ENTRY AND THE ENTRY 
*         NUMBER IS SET IN THE REQST. 
*         THE REPLY IS SENT.
* 
* 
*  5. IF THE OPERATION WAS A SUCCESSFUL CLOSE, THE CURRENT RFAMD
*     ENTRY IS DELETED. 
* 
* 
* 
* 
      HED RFAM: PREPROCESSING * (C) HEWLETT-PACKARD CO. 1977
      SPC 3 
* 
*  HERE ON A "DCRET"
BRN3  LDA %NAME     CURRENT DCB ID
      SZA           IS ENTRY AVAILABLE? 
      JMP ERR28     NO, GIVE ERROR -28
* 
BRN31 LDB FNAMA 
      LDA NAMA
      MVW D5        SET UP CURRENT ENTRY: NAME, CRN, ID SEG 
      LDA REQST+2   GET ORIGINATOR'S NODE 
      STA %NODE      & SAVE IN LOCAL ENTRY
      JMP BUILD     CURRENT ENTRY IS ALL SET! 
      SPC 3 
* 
*     HERE ON A DOPEN 
* 
BRN4  JSB CKENT     SET CRN, CHECK NAME, NODE, AND ID 
      JMP BRN31     OK OR CURRENT ENTRY IS EMPTY
      SPC 3 
* 
*     PROCESSOR FOR FLUSH 
* 
BRN6  LDB FNAMA 
      LDA NAMA
      CMW D3        COMPARE NAME WITH CURRENT ENTRY 
      JMP *+3       MATCHES 
      NOP 
      JMP ERR11     DOESN'T MATCH, GIVE DCB NOT OPEN
* 
      LDB REQST+9 
      CPB DM1       CLOSE ALL?
      JMP BUILD     YES, DO IT
      CPB %NODE     IS IT THE ASSIGNED NODE?
      JMP BUILD     YES, FLUSH IT 
      JMP ERR11     NO, GIVE DCB NOT OPEN 
      SPC 3 
* 
*     HERE FOR DPURG AND DNAME
* 
BRN8  JSB CKENT     CHECK NAME, NODE, AND ID
      STA TMPAD     VALUE=0 IF NO CURRENT ENTRY 
      JMP BUILD     OK TO PROCEED 
      SPC 3 
* 
* 
*     HERE FOR DSTAT. THIS IS A SPECIAL CALL, IT DOES NOT 
*     NEED ANY DCB. SPECIAL TREATMENT.
* 
BRN10 JSB FSTAT 
      DEF *+2 
      DEF DTBFR     STATUS BUFFER 
* 
      LDB D125      SET THE LENGTH OF THE 
      JMP REPLY+1   DATA BUFFER & RETURN
      SPC 3 
* 
*  ENTER HERE FOR FUNCTIONS WHICH MUST ALREADY HAVE OPEN DCB
* 
BRN1  LDB %NAME 
      LDA REQST+6 
      CPA %SEQ      IS IT CORRECT ENTRY NUMBER? 
      SZB,RSS       YES, IS ENTRY STILL OPEN? 
      JMP ERR26     ANSWER TO EITHER IS NO, GIVE -26
      SKP 
      SPC 3 
*     HERE WE BRANCH TO THE PROPER CALL SETUP ROUTINE.
* 
BUILD LDA DCBA
      STA LDCB      INITIALIZE DCB ADDR IN CALL 
      LDA NAMA
      STA LDCB+2    INITIALIZE ADDR OF FILE NAME
      ADA D6
      STA LDCB+3    INITIALIZE ADDR OF SIZE/OPTNL PARAM 
      LDB PARAM     GET ADDR OF PARAMETER DESTINATION 
      LDA REQST+4   GET FCODE AGAIN 
      ADA BLDTB     MAP IN "BUILD" TABLE
      JMP A,I       GO PREPARE THE CALL TO FMP
* 
      SPC 3 
* 
*     CALL BUILDER FOR DWRIT
* 
BLD12 LDA DTBFA 
      STA LDCB+2    SET BUFFER ADDRESS IN CALL
      INB 
      SPC 3 
* 
*     CALL BUILDER FOR DAPOS,DCLOS,DCONT,DPOSN,DWIND,FLUSH
* 
BLD0  LDA RQLN      REQUEST LENGTH
      ADA DM7       COMPUTE # OF PARAMETERS + 1 
      CAX 
      LDA LENA      =REQST+7
* 
BLDCM DSX           DECREMENT COUNT 
      INA,RSS 
      JMP BLD01     DONE MOVING PARAMETER "DEF"S
* 
BLDC2 STA 1,I       STORE "DEF" IN CALL SEQUENCE
      INB 
      JMP BLDCM     ITERATE 
      SPC 3 
* 
*      CALL BUILDER FOR DCRET 
* 
BLD3  LDA TYPEA     ADDR OF TYPE
      STA LDCB+4
* 
      LDB D3
* 
*     THE FOLLOWING PART IS COMMON TO DCRET, DNAME,DOPEN
*     AND DPURG, IT SETS THE SECURITY CODE AND THE CRN IN THE CALL
* 
BLD31 ADB PARAM     COMPUTE ADDR WITHIN CALL
      LDA SECUA     GET ADDRESS OF ISECU
      STA B,I       SET IT IN THE CALL
      LDA CRA       GET ADDRESS OF ICR
      INB           STEP TO NEXT PARAM IN CALL
      STA B,I       SET IT IN THE CALL
      LDA A,I       GET CRN 
      SZA           PRESENT ? 
      INB           YES, PUSH B TO NEXT 
      JMP BLD01     DONE HERE, GO COMPLETE AND CALL 
      SPC 3 
* 
*     CALL BUILDER FOR DLOCF
* 
BLD4  LDX D7        SET COUNTER 
      LDA LENA      PARAMETERS START AT REQST+7 
      JMP BLDC2     GO SET-UP "DEF"S TO PARAMETERS
      SPC 3 
* 
*     CALL BUILDER FOR DNAME
* 
BLD5  LDB D2
      LDA TMPAD     WAS THE FILE ALREADY OPEN ? 
      SZA 
      JMP BLD31     YES, DCB ADDRESS ALREADY SET
      JMP BLD81     NO, USE DATA BUFFER AS DCB SPACE. 
      SPC 3 
* 
*     CALL BUILDER FOR DOPEN
* 
* 
BLD6  CLB           SET "FILE NOT OPEN" 
      STB %DCB+9          STATUS
* 
      LDB D2
      JMP BLD31     GO COMPLETE THE CALL
      SPC 3 
* 
*     CALL BUILDER FOR DPURG
* 
BLD8  LDA NAMA      GET FILE NAME ADDRESS 
      STA LDCB+2    SET IT IN CALL
      CLB,INB 
BLD81 LDA DTBFA     GET THE ADDRESS OF THE DATA BUFFER
      STA LDCB      USE IT AS THE DCB ADDRESS FOR THIS CALL 
      JMP BLD31     GO COMPLETE 
      SPC 3 
* 
*     CALL BUILDER FOR DREAD
* 
BLD9  LDA REQST+8   REQUESTED DREAD LENGTH
      CMA,INA 
      ADA BUFLN     BUFFER SIZE - REQUESTED LENGTH
      SSA           BUFFER EXCEEDED?
      JMP ERR53     YES, GIVE LENGTH ERROR
      LDA DTBFA     GET ADDRESS OF DATA BUFFER
      STA LDCB+2    SET IT IN CALL
      CLB 
      STB REQST+7   PRE-INITIALIZE RETURNED LENGTH
      LDA CRA       GET ADDRESS OF REQUEST LENGTH 
      LDB LENA      ALWAYS PASS LEN BACK. GET ITS ADDR
      DST LDCB+3
      INA 
      LDB A,I       GET NUM 
      SZB,RSS       PRESENT ? 
      JMP BLD91     NO
      STA LDCB+5    YES, SET IN CALL
      CLB,INB       GET A 1 
BLD91 ADB PARAM     FIND RETURN ADDRESS 
      ADB D3
* 
*  WRAP-UP PREPROCESSING
* 
BLD01 STB CALL+1    SET THE RETURN ADDRESS
      CLA 
      STA 1,I       CLEAN OUT REST OF CALL
      INB 
      CPB RTN       MORE? 
      JMP CALL      NO, GO EXECUTE FMGR CALL
      JMP *-4       YES 
      HED RFAM: POSTPROCESSING * (C) HEWLETT-PACKARD CO. 1977 
* 
*     POSTPROCESS FOR DNAME AND DPURG 
* 
PST05 CLB 
      CPB TMPAD     WAS IT AN ALREADY OPEN FILE ? 
      JMP REPLY     NO
      LDA IERR      GET COMPLETION CODE 
      SSA,RSS       ERROR ? 
      STB %NAME     NO, DELETE THE OLD ENTRY
      JMP REPLY     SEND THE REPLY
      SPC 2 
* 
*     POSTPROCESS FOR DCRET AND DOPEN 
* 
PST04 LDA IERR
      SSA           ANY ERROR ? 
      JMP CLENT     YES, JUST CLEAR OUT CURRENT ENTRY 
* 
      LDA REQST+8   GET ICR 
      SZA           SPECIFIED ? 
      JMP PST41     YES 
* 
      LDA %DCB      NO, GET 1ST WORD OF DCB 
      AND B77       GET DISC LU 
      CMA,INA 
      STA REQST+8   REPLACE IN THE REQST
PST41 JSB LUCR      TRANSFORM INTO CRN
      STB %CRN      SET IT
* 
      ISZ %SEQ      BUMP CURRENT SEQUENCE NUMBER
      NOP 
      LDA %SEQ
      STA REQST+7   SAVE IT IN REQUEST
      JMP REPLY 
      SPC 2 
* 
*     WE COME HERE AFTER A DREAD
* 
PST02 LDB REQST+7   GET LENGTH OF DATA
      SSB           SKIP IF NOT EOF 
      CLB           ELSE DO ZERO LENGTH XFER
      JMP REPLY+1 
      SPC 2 
* 
*     POST PROCESS FOR FLUSH
* 
PST08 CLA,INA       ONE FLUSHED ENTRY 
      STA IERR      SET AS COMPLETION CODE
* 
CLENT CLB 
      STB %NAME     CLEAN OUT CURRENT ENTRY 
      HED RFAM: SEND REPLY  * (C) HEWLETT-PACKARD CO. 1977
* 
*     POST-PROCESSING COMPLETED, SET-UP TO SEND REPLY 
* 
REPLY CLB           SET FOR NO DATA RETURNED
      STB LENGT 
      LDA #NODE     GET LOCAL NODE #
      STA REQST+6   SET AS COMPLETION LOCATION
      LDA IERR      SET THE COMPLETION CODE 
      STA REQST+5     IN THE REQST
      LDA REQST     GET THE STREAM TYPE 
      IOR BIT14     SET THE REPLY BIT 
      STA REQST     REPLACE 
* 
      LDA REQST+4   GET THE ICODE 
      ADA LNTBL     INDEX IN THE REPLY LENGTH TABLE 
      LDA A,I       GET THE LENGTH
      STA RQLN      SET THE LENGTH
* 
*     THE REPLY REQST IS READY, SEND IT BACK
* 
      JSB D65SV 
      DEF *+5 
      DEF REQST 
      DEF RQLN      REQST LENGTH
      DEF DTBFR     DATA BUFFER 
      DEF LENGT     LENGTH
* 
      NOP           IGNORE THE ERROR RETURN FROM D65SV
* 
*     IF THE OPERATION WAS A DCLOS, AND IT WORKED PROPERLY, WE
*     HAVE TO DELETE THE RFAMD ENTRY. 
* 
      LDA REQST+4   GET OPCODE FOR THE LAST TIME
      CPA D1        DCLOS ? 
      CLB,RSS 
      JMP PST06 
* 
* 
      LDA IERR      GET COMPLETION CODE 
      SSA,RSS       ERROR ? 
      STB %NAME     NO, CLEAR OUT CURRENT ENTRY 
* 
PST06 LDX DM9       GET A COUNTER 
      CLB           GET A 0 
PST07 SBX REQST+14  CLEAN THE OPTIONAL AREA 
      ISX 
      JMP PST07     CONTINUE
      JMP GO        GET NEXT REQUEST. 
      HED RFAM: UTILITY ROUTINES * (C) HEWLETT-PACKARD CO. 1977 
* 
*  THIS ROUTINE CHECKS FILE NAME, CARTRIDGE REFERENCE, NODE, AND
*  ID SEGMENT ADDRESS IN THE NEW REQUEST AND RETURNS IF THEY
*  MATCH THE CURRENT ENTRY
* 
CKENT NOP 
      JSB LUCR      CONVERT POSSIBLE LU TO CRN
      LDA %NAME 
      SZA,RSS       CURRENT ENTRY AVAILABLE 
      JMP CKENT,I   YES 
      LDA REQST+2 
      CPA %NODE     NODES MATCH?
      RSS           YES 
      JMP ERR28     NO, GIVE NO TABLE SPACE ERROR?
      SZB,RSS       WAS CRN SPECIFIED 
      LDB %CRN      NO, USE CURRENT ENTRY'S CRN 
      STB REQST+8 
      LDB FNAMA 
      LDA NAMA
      CMW D5        COMPARE NAME,CRN, & ID SEGMENT ADDRS
      JMP CKENT,I   MATCHED OK
      NOP 
      JMP ERR28     DOESN'T MATCH, GIVE NO TABLE SPACE ERROR
* 
*     THIS ROUTINE WILL TRANSFORM A NEGATIVE DISC LU
*     INTO A CARTRIDGE NUMBER. BOTH INPUT AND RESULTS 
*     ARE PASSED VIA REQST+8. THE RESULT WILL ALSO BE 
*     FOUND IN B REGISTER. IF AN ERROR IS DISCOVERED
*     WE WILL DIRECTLY JUMP TO THE ERROR ROUTINE. 
* 
LUCR  NOP 
      LDB REQST+8 
      SSB,RSS       IS IT AN LU?
      JMP LUCR,I    NO
* 
      CMB,INB       YES, MAKE IT POSITIVE AND 
      STB DTBFR      SET UP STATUS CALL.
* 
      JSB EXEC      GET EQUIPMENT-TYPE CODE 
      DEF *+4 
      DEF D13I
      DEF DTBFR     USE DTBFR FOR CONWD 
      DEF DTBFR+1    AND EQT5.
      JMP ERR06     ILLEGAL LU
* 
      LDA DTBFR+1   GET EQT5
      ALF,ALF 
      AND B77       ISOLATE EQUIP-TYPE CODE 
      LDB REQST+8   IF DVR05 (CTU SYSTEM),
      CPA D5         RETURN WITH
      JMP LUCR,I      B = -LU.
* 
      JSB FSTAT     GET INFO ON THE CURRENTLY 
      DEF *+2         MOUNTED CARTRIGES.
DBFAD DEF DTBFR     SEND THE INFO IN THE DATA BUFFER
* 
      LDA DBFAD     DCB BUFFER ADDR 
LP84  LDB 0,I       GET W1 OF ENTRY 
      CMB,INB 
      CPB REQST+8   IS IT OUR LU? 
      JMP FND84     YES 
      SZB,RSS       END OF TABLE ?
      JMP ERR06     YES, ILLEGAL DISC LU
      ADA D4        PUSH THE ADDR TO THE NEXT ENTRY 
      JMP LP84      CONTINUE
* 
FND84 ADA D2        STEP TO THE CRN 
      LDB 0,I       GET IT
      STB REQST+8   SET IT IN THE REQST 
      JMP LUCR,I
      SPC 3 
* 
*     THIS IS THE SKELETON OF THE FMP CALL
* 
PARAM DEF LDCB+2
      DEF LDCB
CALL  JSB CALLI,I   CALL FMP ROUTINE
      NOP           DEF RTRN
LDCB  DEF %DCB      ADDRESS OF DCB IF ANY 
      DEF IERR      ERROR 
      REP 8 
      NOP 
* 
DONE  LDA REQST+4   GET FCODE 
      ADA PSTBL     POST-PROCESSING TABLE 
      JMP 0,I       JUMP TO POST-PROCESSOR
RTN   DEF DONE
* 
CALLI NOP           ADR OF FMP CALL 
      SPC 3 
ERR06 JSB ERRXX 
      DEC -6
ERR11 JSB ERRXX 
      DEC -11 
ERR25 JSB ERRXX 
      DEC -25 
ERR26 JSB ERRXX 
      DEC -26 
ERR28 JSB ERRXX 
      DEC -28 
ERR53 JSB ERRXX 
      DEC -53 
* 
ERRXX NOP 
      LDA ERRXX,I 
      STA IERR      SET THE ERROR CODE IN THE REPLY 
      JMP REPLY       AND SHIP IT.
      SPC 3 
      HED RFAM: DATA AREA * (C) HEWLETT-PACKARD CO. 1977
A     EQU 0 
B     EQU 1 
      SPC 2 
**** DEFINE CURRENT OPEN RFAM ENTRY ****
%NAME DEC 0,0,0 
%CRN  NOP 
%IDSG NOP 
%NODE NOP 
%SEQ  NOP 
**** END OF CURRENT ENTRY ****
      SPC 2 
DM14  DEC -14 
DM9   DEC -9
DM7   DEC -7
DM1   DEC -1
D1    DEC 1 
D2    DEC 2 
D3    DEC 3 
D4    DEC 4 
D5    DEC 5 
D6    DEC 6 
D13I  OCT 100015
D125  DEC 125 
BUFLN ABS BUFSZ 
BIT14 OCT 40000 
B77   OCT 77
FNAMA DEF %NAME 
NAMA  DEF REQST+5   ADDR OF THE FILE NAME 
LENA  DEF REQST+7   ADDR OF LENGTH
CRA   DEF REQST+8   ADDR OF THE ICR 
SECUA DEF REQST+10  ADDR OF ISECU 
TYPEA DEF REQST+13  ADDR OF TYPE
DCBA  DEF %DCB
* 
*  VARIABLES
LENGT NOP 
IERR  NOP 
TMPAD NOP 
RQLN  NOP           REQUEST LENGTH
      HED RFAM: TABLES * (C) HEWLETT-PACKARD CO. 1977 
BRNCH DEF *+1,I 
      DEF BRN1      DAPOS 
      DEF BRN1      DCLOS 
      DEF BRN1      DCONT 
      DEF BRN3      DCRET 
      DEF BRN1      DLOCF 
      DEF BRN8      DNAME 
      DEF BRN4      DOPEN 
      DEF BRN1      DPOSN 
      DEF BRN8      DPURG 
      DEF BRN1      DREAD 
      DEF BRN10     DSTAT 
      DEF BRN1      DWIND 
      DEF BRN1      DWRIT 
      DEF BRN6      FLUSH 
* 
JSBTB DEF *+1 
      DEF APOSN 
      DEF CLOSE 
      DEF FCONT 
      DEF CREAT 
      DEF LOCF
      DEF NAMF
      DEF OPEN
      DEF POSNT 
      DEF PURGE 
      DEF READF 
      NOP 
      DEF RWNDF 
      DEF WRITF 
      DEF CLOSE     FLUSH 
* 
BLDTB DEF *+1,I     CALL BUILDING TABLE 
      DEF BLD0      DAPOS 
      DEF BLD0      DCLOS 
      DEF BLD0      DCONT 
      DEF BLD3      DCRET 
      DEF BLD4      DLOCF 
      DEF BLD5      DNAME 
      DEF BLD6      DOPEN 
      DEF BLD0      DPOSN 
      DEF BLD8      DPURG 
      DEF BLD9      DREAD 
      NOP 
      DEF BLD0      DWIND 
      DEF BLD12     DWRIT 
      DEF BLD0      FLUSH 
* 
      SPC 3 
LNTBL DEF *+1       REPLY LENGTH TABLE
D7    DEC 7         DAPOS 
      DEC 7         DCLOS 
      DEC 7         DCONT 
      DEC 8         DCRET 
D14   DEC 14        DLOCF 
      DEC 7         DNAME 
      DEC 8         DOPEN 
      DEC 7         DPOSN 
      DEC 7         DPURG 
      DEC 8         DREAD 
      DEC 7         DSTAT 
      DEC 7         DWIND 
      DEC 7         DWRIT 
      DEC 7         FLUSH 
      SPC 3 
PSTBL DEF *+1,I     POST PROCESSING TABLE 
      DEF REPLY     DAPOS 
      DEF REPLY     DCLOS 
      DEF REPLY     DCONT 
      DEF PST04     DCRET 
      DEF REPLY     DLOCF 
      DEF PST05     DNAME 
      DEF PST04     DOPEN 
      DEF REPLY     DPOSN 
      DEF PST05     DPURG 
      DEF PST02     DREAD 
      NOP 
      DEF REPLY     DWIND 
      DEF REPLY     DWRIT 
      DEF PST08     FLUSH 
      HED RFAM: BUFFERS * (C) HEWLET-PACKARD CO. 1977 
REQST REP 14
      NOP 
* 
DTBFR BSS BUFSZ 
%DCB  BSS 144 
* 
SIZE  EQU * 
* 
      END RFAM2 
                                                                                              