*DECK DF$CMP
          IDENT  DF$CMP 
          SST 
          LIST   F
          TITLE  DF$CMP - ROUTINES FOR PC PARAMETER PROCESSING. 
          ENTRY  DF$CON 
          ENTRY  DF$ISM 
          ENTRY  DF$POF 
          ENTRY  DF$PON 
          ENTRY  DF$RD
          ENTRY  DF$RDH 
          ENTRY  DF$RCS 
          ENTRY  DF$STF 
          ENTRY  DF$WPR 
          ENTRY  DF$WTC 
          ENTRY  DF$UNL 
          SPACE  4,10 
***       DF$CMP - ROUTINES FOR PC PARAMETER PROCESSING.
* 
*         DF$CMP CONTAINS A NUMBER OF ENTRY POINTS INTO 
*         ROUTINES WHICH PERFORM ADDITIONAL PROCESSING. 
*         THESE ROUTINES ARE CALLED FROM SYMPL PROCEDURES.
  
  
*CALL COMCMAC 
 DF$STF   TITLE  DF$STF - SET TERMINAL FILE.
**        DF$STF  -  SET TERMINAL FILE. 
* 
*         THIS ROUTINE DETECTS IF A FILE IS ASSIGNED
*         TO A TERMINAL.
* 
*         ENTRY  A1 = ADDRESS OF PARAMETER LIST.
*                X1 = FET ADDRESS.
* 
*         EXIT   X6 = 0 IF FILE IS ASSIGNED TO A TERMINAL.
* 
*         CALLS  STF= 
  
  
 DF$STF   SUBR                     ENTRY/EXIT 
          SB1    1
          SX2    X1 
          RJ     =XSTF=            CALL STF 
          EQ     DF$STF 
 DF$RDH   TITLE  DF$RDH - READ CODED LINE.
**        DF$RDH  -  READ CODED LINE, H FORMAT. 
* 
*         THIS ROUTINE WILL READ A CODED LINE INTO
*         A WORKING BUFFER WITH TRAILING BLANK FILL.
* 
*         ENTRY  A1 = ADDRESS OF PARAMETER LIST.
*                PARAMETER LIST CONTAINS: 
*                1) FET ADDRESS 
*                2) WORKING BUFFER ADDRESS
*                3) LENGTH OF WORKING BUFFER
*                4) EOF FLAG. 
* 
*         EXIT   EOF FLAG NON-ZERO IF EOF REACHED.
*                NEXT LINE READ INTO WORKING BUFFER.
* 
*         CALLS  RDH= 
  
  
 DF$RDH   SUBR                     ENTRY/EXIT 
          SB1    1
          SX2    X1                FET ADDRESS
          SA3    A1+B1
          SB6    X3                FWA OF WORKING BUFFER
          SA3    A3+B1
          SA4    X3 
          SB7    X4                LENGTH OF BUFFER 
          SA3    A3+B1
          SA5    X3 
          READH  X2,B6,B7          CALL RDH 
          BX6    X1                EOF FLAG 
          SA6    A5 
          EQ     DF$RDH 
 DF$RCS   TITLE  DF$RCS - READ CONTROL STATEMENT. 
**        DF$RCS  -  READ CONTROL STATEMENT RECORD. 
* 
*         THIS ROUTINE WILL READ OR BKSP THE
*         CONTROL STATEMENTS FOR A JOB. THE CONTROL 
*         STATEMENT POINTER IS PROPERLY UPDATED ON
*         EACH CALL.
* 
*         ENTRY  A1 = ADDRESS OF PARAMETER LIST.
*                PARAMETER LIST CONTAINS: 
*                1) FUNCTION CODE - 10B=READ, 40B=BKSP
*                2) EOF FLAG. 
* 
*         EXIT   EOF FLAG NON-ZERO IF EOF REACHED.
*                IF READ FUNCTION, THEN CONTROL STATEMENT 
*                  IN RA+70B. 
*                IF BKSP FUNCTION, THEN CONTROL STATEMENT 
*                  POINTER POINTS TO PRECEDING STATEMENT. 
* 
*         MACROS CONTRLC
  
  
 DF$RCS   SUBR                     ENTRY/EXIT 
          SB1    1
          SA5    A1                SAVE PARAMETER LIST ADDRESS
          SA1    X1 
          SX6    X1                FUNCTION CODE
          SA6    RPLY              STORE IN REPLY WORD
 NOS      IFEQ   OS$NOS 
          CONTRLC RPLY,,,CRACK
 NOS      ELSE
          CONTRLC RPLY
 NOS      ENDIF 
          MX0    59 
          SA1    RPLY 
          LX1    60-4              EOF FLAG IN BIT 0
          BX6    -X0*X1 
          SA1    A5+B1             EOF FLAG PARAMETER 
          SA6    X1 
          EQ     DF$RCS 
  
 RPLY     BSSZ   1                 REPLY WORD 
  
 DF$CON   TITLE  DF$CON - CONNECT FILE TO TERMINAL. 
**        DF$CON  -  CONNECT FILE TO TERMINAL.
* 
*         THIS ROUTINE WILL CONNECT THE FILE NAME 
*         SPECIFIED TO THE TERMINAL.
* 
*         ENTRY  A1 = ADDRESS OF PARAMETER LIST.
*                X1 = FET ADDRESS.
* 
*         EXIT   FILE NAME CONNECTED TO TERMINAL. 
* 
  
  
 DF$CON   SUBR                     ENTRY/EXIT 
          SB1    1
 NOS      IFEQ   OS$NOS 
          MX0    12 
          SA2    X1+B1             WORD 1 OF FET
          BX2    -X0*X2 
          SX3    2RTT              DEVICE TYPE
          LX3    48 
          BX6    X3+X2
          SA6    A2                REWRITE FET WORD 1 
          RETURN X1                RETURN EXISTING FILE 
          REQUEST X2,U,N
 NOS      ELSE
          MX0    42 
          SA1    X1 
          BX6    X0*X1             FILE NAME
          SA6    FILNM
          SYSTEM CON,R,FILNM       CALL CON 
 NOS      ENDIF 
          EQ     DF$CON 
  
 FILNM    BSSZ   1                 FILE NAME WORD 
  
 DF$ISM   TITLE  DF$ISM - ISSUE MESSAGE.
**        DF$ISM  -  ISSUE MESSAGE. 
* 
*         THIS ROUTINE WILL ISSUE THE SPECIFIED 
*         MESSAGE WITH THE SUPPLIED PROGRAM NAME
*         FROM THE PARAMETER LIST.
* 
*         ENTRY  A1 = ADDRESS OF PARAMETER LIST.
*                PARAMETER LIST CONTAINS: 
*                1) MESSAGE TO ISSUE
*                2) FET ADDRESS IF INTERACTIVE. 
*                3) PROGRAM NAME TO BE INSERTED INTO MESSAGE. 
*                4) INTERACTIVE FLAG. 
* 
*         EXIT   MESSAGE ISSUED.
* 
*         CALLS  MSG=, SFN=.
  
  
 DF$ISM   SUBR                     ENTRY/EXIT 
          SB1    1
          SA5    A1                SAVE PARAMETER LIST ADDRESS
          BX5    X1                SAVE MESSAGE ADDRESS 
          SA4    A1+2 
          SA1    X4                GET PROGRAM NAME 
          RJ     =XSFN=            SPACE FILL NAME
          BX1    X5                RESTORE X1 
          MX0    42 
          BX2    X6*X0             MAKE SURE NAME IS 7 CHARS
          SA3    X1                FIRST WORD OF MESSAGE
          LX3    6                 LEAVE LEADING BLANK
          BX3    -X0*X3            CLEAR FIRST 7 CHARS
          BX6    X3+X2             ADD PROGRAM NAME 
          LX6    60-6 
          SA6    X1 
          SA4    A4+B1
          SA4    X4                INTERACTIVE FLAG 
          NZ     X4,ISM10          IF INTERACTIVE 
          MESSAGE X1,0,RCL         ISSUE MESSAGE
          EQ     DF$ISM 
  
 ISM10    BSS    0
          SA1    A5                PARAMETER LIST ADDRESS 
          RJ     DF$WTC            PERFORM WRITEC 
          EQ     DF$ISM 
 DF$POF   TITLE  DF$POF - TURN NOS PROMPT OFF.
**        DF$POF  -  TURN NOS PROMPT OFF. 
* 
*         THIS ROUTINE IS CALLED BY DFINIT DURING 
*         PC PARAMETER PROCESSING INITIALIZATION TO 
*         TURN OFF THE NOS INTERACTIVE PROMPT. THIS 
*         ROUTINE IS A NO-OP FOR NOS/BE.
  
  
 DF$POF   SUBR                     ENTRY/EXIT 
  
 NOS      IFEQ   OS$NOS 
          PROMPT OFF
          CSET   NORMAL      CHANGE TO NORMAL CHARACTER TYPE
 NOS      ENDIF 
  
          EQ     DF$POF 
 DF$PON   TITLE  DF$PON - TURN NOS PROMPT ON. 
**        DF$PON  -  TURN NOS PROMPT ON.
* 
*         THIS ROUTINE IS CALLED BY DFTERM DURING 
*         PC PARAMETER PROCESSING TERMINATION TO
*         TURN ON THE NOS INTERACTIVE PROMPT. THIS
*         ROUTINE IS A NO-OP FOR NOS/BE.
  
  
 DF$PON   SUBR                     ENTRY/EXIT 
  
 NOS      IFEQ   OS$NOS 
          CSET   RESTORE     RESTORE THE INITIAL CHARACTER TYPE 
          PROMPT ON 
 NOS      ENDIF 
  
          EQ     DF$PON 
 DF$RD    TITLE  DF$RD - READ ONE RECORD. 
**        DF$RD  -  READ ONE LOGICAL RECORD.
* 
*         THIS ROUTINE WILL CAUSE THE SPECIFIED FILE
*         TO BE READ ONE SYSTEM-LOGICAL-RECORD. 
* 
*         ENTRY  A1 = ADDRESS OF PARAMETER LIST.
*                X1 = FET ADDRESS.
* 
*         EXIT   FILE READ ONE RECORD.
* 
*         MACROS READ 
  
  
 DF$RD    SUBR                     ENTRY/EXIT 
          SB1    1
          READ   X1,RCL            ISSUE READ REQUEST 
          EQ     DF$RD
 DF$UNL   TITLE  DF$UNL - PERFORM CLOSE/UNLOAD FUNCTION.
**        DF$UNL  -  PERFORM CLOSE/UNLOAD FUNCTION. 
* 
*         THIS ROUTINE WILL ISSUE A CLOSE/UNLOAD
*         FUNCTION ON THE SPECIFIED FILE. 
* 
*         ENTRY  A1 = ADDRESS OF PARAMETER LIST.
*                X1 = ADDRESS OF FET. 
* 
*         EXIT   CLOSE/UNLOAD PERFORMED.
* 
*         MACROS CLOSE
  
  
 DF$UNL   SUBR                     ENTRY/EXIT 
          SB1    1
          CLOSE  X1,UNLOAD,RCL
          EQ     DF$UNL 
 DF$WPR   TITLE  DF$WPR - WRITE PC PROMPT TO TERMINAL.
**        DF$WPR  -  WRITE PC PROMPT TO TERMINAL. 
* 
*         THIS ROUTINE PROMPTS THE INTERACTIVE USER WITH
*         THE PC PREFIX CHARACTER.
* 
*         ENTRY  A1 = ADDRESS OF PARAMETER LIST.
*                PARAMETER LIST CONTAINS: 
*                1) ADDRESS OF PROMPT.
*                2) FET ADDRESS.
* 
*         EXIT   PROMPT ISSUED. 
* 
*         CALLS  WTC= 
  
  
 DF$WPR   SUBR                     ENTRY/EXIT 
          SB1    1
          SA2    X1                PROMPT 
          SX3    1R                BLANK
          IX6    X3+X2
          LX6    54                LEADING BLANK
 NOS      IFEQ   OS$NOS 
          LX6    24 
          SX3    B1                NO CARRIAGE RETURN ON PROMPT 
          IX6    X6+X3
          LX6    60-24
 NOS      ENDIF 
          SA6    PRMT 
          SB6    A6                PROMPT ADDRESS 
          SA2    A1+B1             FET ADDRESS
          WRITEC X2,B6
  
 NOS      IFEQ   OS$NOS 
          WRITER X2,R              FLUSH BUFFER 
 NOS      ENDIF 
  
          EQ     DF$WPR 
  
 PRMT     BSSZ   1                 PROMPT 
 DF$WTC   TITLE  DF$WTC - WRITE CODED LINE. 
**        DF$WTC  -  WRITE CODED LINE, C FORMAT.
* 
*         THIS ROUTINE WILL WRITE A CODED LINE FROM 
*         A WORKING BUFFER TO A CIO BUFFER WITH ZERO
*         BYTE DELIMITER. 
* 
*         ENTRY  A1 = ADDRESS OF PARAMETER LIST.
*         PARAMETER LIST CONTAINS:  
*         1) ADDRESS OF MESSAGE 
*         2) FET ADDRESS. 
* 
*         EXIT   MESSAGE WRITTEN TO FILE. 
* 
*         CALLS  WTC= 
  
  
 DF$WTC   SUBR                     ENTRY/EXIT 
          SB1    1
          SB6    X1                MESSAGE ADDRESS
          SA2    A1+B1             FET ADDRESS
          WRITEC X2,B6
  
 NOS      IFEQ   OS$NOS 
          WRITER X2,R              FLUSH BUFFER 
 NOS      ENDIF 
  
          EQ     DF$WTC 
          END 
