*COMDECK ACTCOM 
 ACTCOM   CTEXT  CPU PROGRAM SYSTEM ACTION REQUEST MACROS.
  
  
***              THE SYSTEM MACROS PROVIDE THE USER WITH PREDEFINED 
*         CALLS FOR COMMONLY USED SYSTEM ACTION REQUESTS. 
* 
*         WHERE A PARAMETER REFERS TO AN ADDRESS EXPRESSION, THE
*         PARAMETER MAY BE A REGISTER NAME, A RELOCATABLE ADDRESS,
*         AN EXTERNAL SYMBOL NAME, OR AN ABSOLUTE ADDRESS.
* 
*         WHERE A RECALL OPTION IS SPECIFIED, THE PRESENCE OF THE 
*         OPTION CAUSES AUTO RECALL OPERATION TO TAKE PLACE.
* 
*         ALL SYSTEM REQUESTS USE REGISTERS A1, A6, X1, X6. 
* 
*         SOME SYSTEM MACROS USE INTERNAL SYMBOLS AND MICRO NAMES 
*         OF THE FORM *'?SCP#XX* WHERE *XX* IS ANY TWO CHARACTERS.
*         SUCH SYMBOLS AND MICRO NAMES SHOULD THEREFORE BE AVOIDED
*         BY THE USER.
* 
*         ALL NUMERIC CONSTANTS GREATER THAN 7 IN THESE MACROS HAVE 
*         AN EXPLICIT RADIX, SO THE *BASE* MODE IS IMMATERIAL.
*         HOWEVER, THE *CODE* MODE MUST BE DISPLAY CODE (D) WHEN
*         THE MACROS ARE CALLED.  THIS COMMON DECK CONTAINS NO
*         UNLABELED *ELSE* OR *ENDIF* STATEMENTS, SO IT CAN BE
*         ASSEMBLED CONDITIONALLY.
* 
* 
*         G. R. MANSFIELD.   70/09/21.
*         R. H. GOODELL.     71/04/29.
 GENERAL  TITLE  GENERAL MACROS.
 SYSCOM   SPACE  4,6
***       SYSCOM - DEFINE SYSTEM COMMUNICATION SYMBOLS. 
* 
* 
*         SYSCOM B1 
* 
*         IF *B1* IS PRESENT, USER DEFINES (B1) = 1.
  
  
          PURGMAC SYSCOM
  
 SYSCOM   MACRO  N
*                            DEFINE B1 = 1 IF SPECIFIED 
  IFC EQ, N B1 ,1 
  B1=1
          SST 
  ENDM
 IXX/X    SPACE  4,8
***       IXI XJ/XK - INTEGER DIVISION. 
* 
* 
*         IXI    XJ/XK
* 
*         DIVIDE XJ BY XK TO XI.
*         DESTROYS XJ, XK, B7.
  
  
          PURGDEF IXX/X 
  
 IXX/X    OPDEF  I,J,K
  PX.J
  NX.J
  PX.K
  NX.K
  FX.I X.J/X.K
  UX.I,B7 
  LX.I B7 
  ENDM
 IXX/X,B  SPACE  4,8
***       IXI XJ/XK,BN - INTEGER DIVISION.
* 
* 
*         IXI    XJ/XK,BN 
* 
*         DIVIDE XJ BY XK TO XI.
*         DESTROYS XJ, XK, BN.
  
  
          PURGDEF IXX/X,B 
  
 IXX/X,B  OPDEF  I,J,K,N
  PX.J
  NX.J
  PX.K
  NX.K
  FX.I X.J/X.K
  UX.I,B.N
  LX.I B.N
  ENDM
 SUBR     SPACE  4,8
***       SUBR - SUBROUTINE ENTRY/EXIT DEFINITION.
* 
* 
* TAG     SUBR               DEFINE *EXIT.* AND *TAG_X*.
* TAG     SUBR   0           SAME.
* TAG     SUBR   =           SAME, AND DECLARE *TAG* AS ENTRY POINT.
* TAG     SUBR   -           DEFINE *EXIT.* BUT NOT *TAG_X*.
* TAG     SUBR   LETTER      DEFINE *TAG_LETTER* BUT NOT *EXIT.*. 
* 
*         ENTRY  *TAG* = SUBROUTINE ENTRY NAME. 
* 
*         EXIT   CODE GENERATED --
*                TAG    EQ    *+1S17    ALWAYS. 
*                       ENTRY TAG       IF = SPECIFIED. 
*                EXIT.  SET   *         IF BLANK, 0, =, OR - SPECIFIED. 
*                       NOREF EXIT.     IF BLANK, 0, =, OR - SPECIFIED. 
*                TAG_X  EQU   *         IF BLANK, 0, OR = SPECIFIED.
*                       NOREF TAG_X     IF BLANK, 0, OR = SPECIFIED.
*                TAG_LETTER  EQU  *     IF LETTER SPECIFIED.
* 
*         USES   NONE.
* 
*         CALLS  NONE.
  
  
          PURGMAC SUBR
  
          MACRO  SUBR,T,A 
T  EQ *+1S17D 
'?CPU#EN MICRO 1,,=T= 
  IFC NE, A  ,3 
  IFC LT, A 0 ,2
"'?CPU#EN"A EQU * 
  SKIP 7
  IFC NE, A - ,4
  IFC EQ, A = ,1
  ENTRY T 
"'?CPU#EN"X EQU * 
  NOREF "'?CPU#EN"X 
EXIT. SET * 
  NOREF EXIT. 
  ENDM
 SYSTEM   TITLE  SYSTEM ACTION REQUESTS.
***              SYSTEM REQUEST MACROS FORMAT REQUESTS INTO X REGISTERS 
*         AND RETURN JUMP TO THE SYSTEM COMMUNICATION SUBROUTINES.
 ABORT    SPACE  4,11 
**        ABORT - ABORT JOB 
* 
*         ABORT  LFN,P2,P3
* 
*         ENTRY  *LFN* POSITION DEFINED FOR SCOPE 2 COMPATABILITY. ANY
*                      NON-BLANK VALUE GIVES AN ASSEMBLY ERROR. 
*                *P2*  CHARACTER STRING *NODUMP* TURNS OFF DMPX AND 
*                      CAUSES CONTROL CARD PROCESSING TO RESUME ONLY
*                      AFTER AN EXIT(S) CARD IS ENCOUNTERED. CHARACTER
*                       STRING *ND* TURNS OFF DMPX. ANY OTHER NON-BLANK 
*                      VALUE IS IGNORED.
*                *P3*  CHARACTER *S* CAUSES CONTROL CARD PROCESSING TO
*                      RESUME ONLY AFTER AN EXIT(S) CARD IS ENCOUNTERED.
*                      ANY OTHER NON-BLANK VALUE IS IGNORED.
*         CALLS  SYS= 
  
          PURGMAC ABORT 
  
ABORT     MACRO  LFN,P2,P3
* 
*         ERROR IF LFN PARAMETER IS NON-BLANK 
* 
  IFC NE, LFN  ,1 
  ERR ABORT-LFN NON-BLANK 
* 
*         SET UP RA+1 CALL WITH RECALL
* 
  SX6 3RABT*4+1 
  LX6 40D 
* 
*         SET BITS 36 (EXIT(S)) AND 37 (DMPX) ACCORDING TO PARAMETERS 
* 
  MX1 1 
  IFC EQ, P2 NODUMP ,1
  SKIP 4
  IFC EQ, P2 ND ,6
  IFC NE, P3 S ,2 
  LX1 38D 
  SKIP 5
  MX1 2 
  LX1 38D 
  SKIP 2
  IFC EQ, P3 S ,2 
  LX1 37D 
  BX6 X6+X1 
  RJ =XSYS= 
  ENDM
          SPACE  4,10 
***       ACCSF  ACCESS CONTROL STATEMENT FILE
* 
*         ACCSF  LFN,SAVE 
* 
*         ENTRY  *LFN* = ADDR OF WORD TO RECEIVE FILE NAME. 
*                *SAVE* = ADDR OF WORD TO RECEIVE POSITION. 
*                *LFN* AND *SAVE* ARE PLACED IN A MACRO-GENERATED 
*                WORD *POINTER*, WHICH ALSO CONTAINS THE COMPLETE 
*                FLAG.  18/0, 18/SAVE, 18/LFN, 6/C. 
*         EXIT   *LFN* = 42/0L_LFN, 18/0
*                            LFN = LOGICAL FILE NAME OF CURRENT 
*                            CONTROL STATEMENT FILE, OR 0 IF MISSING
*                            OR INVALID.
*                *SAVE* = 30/0, 24/PRU COUNT, 6/OFFSET WITHIN PRU.
*                            PRU COUNT = CURRENT POSITION FROM BOI. 
*                            OFFSET = POSITION WITHIN PRU.
* 
*         USES   X2, X6.
* 
*         CALLS  SYS=.
          PURGMAC  ACCSF
 ACCSF    MACRO  LFN,SAVE 
          LOCAL  POINTER
          EQ     POINTER+1
 POINTER  BSS    1
          SX6    SAVE 
          SX2    LFN
          LX6    24D
          LX2    6
          BX6    X6+X2
          SA6    POINTER
          SYSTEM FIN,RECALL,POINTER,200B
          ENDM
 ACQUIRE  SPACE  4,8
***       ACQUIRE - ACCESS INPUT/OUTPUT QUEUES. 
* 
* 
*         ACQUIRE PLIST,RECALL
* 
*         ENTRY  *PLIST* = FWA OF PARAMETER LIST. 
*         CALLS  SYS=.
  
  
          PURGMAC ACQUIRE 
  
 ACQUIRE  MACRO  PLIST,RECALL,N 
  IFC NE, N  ,2 
  SYSTEM QAF,RECALL,PLIST 
  SKIP 1
  SYSTEM QAC,RECALL,PLIST 
  ENDM
 CEVAL    SPACE  4,10 
***       CEVAL - CE VALIDATION.
* 
*         CEVAL  ADDR,VO
* 
*         ENTRY  *ADDR* = ADDRESS OF TEN-WORD VALIDATION
*                         PARAMETER BLOCK.
* 
*                (ADDR) = 48/0,6/RC,5/0,1/C.
* 
*                         RC(11-6) - RESPONSE CODE (SET BY *CVL*).
*                         C(0) = COMPLETE BIT (SET BY *CVL*). 
* 
*                IN THE FOLLOWING,  VB(59-55) - VALIDATION ERROR BITS 
*                                               (SET BY *CVL*). 
*                                   S(54-51) - SHARE BITS, REQUEST
*                                              EXCLUSIVE ACCESS.
*                                   X(48) = DATA IN WORD. 
* 
*                (ADDR+1) = 5/VB,4/0,2/0,1/X,12/0,12/0,12/0,12/ESTO.
* 
*                           ESTO(11-0) = EST ORDINAL OF ELEMENT*. 
* 
*                (ADDR+2) = 5/VB,4/S,2/0,1/X,12/CH4,12/CH3, 
*                           12/CH2,12/CH1.
* 
*                           CHX = CHANNEL NUMBER*.
* 
*                (ADDR+3) = 5/VB,4/S,2/0,1/X,12/0,12/0,12/0,12/EQPN.
* 
*                           EQPN(11-0) = EQUIPMENT (CONTROLLER) NUMBER*.
* 
*                (ADDR+4) = 5/VB,4/S,2/0,1/X,12/0,12/0,12/0,12/UN.
* 
*                           UN(11-0) = UNIT NUMBER*.
* 
*                (ADDR+5) = 5/VB,4/0,2/0,1/X,12/0,12/0,12/DEVM,12/DEVC. 
* 
*                           DEVM(23-12) = DEVICE MNEMONIC*. 
*                           DEVC(11-0) = DEVICE CODE*.
* 
*                (ADDR+6) = 53/0,7/FC.
* 
*                           FC(6-0) - FUNCTION BITS.
* 
*                (ADDR+7) = 5/VB,4/0,2/0,1/X,48/PACK SN.
* 
*                           PACK SN(47-0) = PACK SERIAL NUMBER. 
* 
*                (ADDR+8) = 12/DEVC1,12/DEVC2,12/DEVC3, 
*                           12/DEVC4,12/DEVC5.
*                (ADDR+9) = 12/DEVC6,12/DEVC7,12/DEVC8, 
*                           12/DEVC9,12/DEVC10. 
* 
*                           DEVCX = DEVICE CODE RETURNED BY *CVL*.
* 
*                * - *CVL* WILL RETURN MISSING FIELDS.
* 
*         EXIT   PARAMETER BLOCK IS ALTERED TO REFLECT VALIDATION.
* 
*         USES   X - 1, 2, 6. 
*                A - 1, 6.
*                B - NONE.
* 
*         CALLS  SYS=.
  
  
          PURGMAC CEVAL 
  
 CEVAL    MACRO  A,V
          IFC    EQ, V VO 
          SYSTEM CVL,RECALL,A,3 
          ELSE   1
          SYSTEM CVL,RECALL,A,1 
          ENDM
 CHECKPT  SPACE  4,8
***       CHECKPT - TAKE CHECKPOINT DUMP. 
* 
* 
*         CHECKPT PLIST,SP
* 
*         ENTRY  *PLIST* = FWA OF PARAMETER LIST. 
*                *SP* = 0 OR NULL  IF ALL FILES TO BE PROCESSED.
*                     = OTHER  IF ONLY FILES IN LIST TO BE PROCESSED. 
* 
*         CALLS  SYS=.
  
  
          PURGMAC CHECKPT 
  
 CHECKPT  MACRO  P,S
  IFC NE, S  ,3 
  IFC NE, S 0 ,2
  SYSTEM CKP,1,P,100B 
  SKIP 1
  SYSTEM CKP,1,P
  ENDM
 CLOCK    SPACE  4,9
***       CLOCK - RETURN TIME OF DAY. 
* 
* 
*         CLOCK  STATUS 
* 
*         ENTRY  *STATUS* = ADDRESS FOR TIME OF DAY RESPONSE. 
*         EXIT -
* STATUS  60/  * HH.MM.SS.* 
*         CALLS  SYS=.
  
  
          PURGMAC CLOCK 
  
 CLOCK    MACRO  S
*                            FORM TIME (CLOCK) REQUEST
  SX6 3RTIM 
  R= X1,S 
  LX6 42D 
  BX6 X6+X1 
  SX1 200002B 
  LX1 24D 
  BX6 X6+X1 
*                            PROCESS SYSTEM REQUEST 
  RJ =XSYS= 
  ENDM
 CONTRLC  SPACE  4,10 
***       CONTRLC - READ NEXT CONTROL CARD. 
* 
* 
*         CONTRLC STATUS,FUNCT,DAYFILE,CRACK
* 
*         ENTRY  *STATUS* = ADDRESS FOR RESPONSE WORD.
*                *FUNCT*  = *READ* OR *BKSP* OR BLANK.  IF BLANK, FUNCT 
*                           CODE IS ASSUMED ALREADY STORED IN (STATUS). 
*                *DAYFILE* = IF NONBLANK, ISSUE CARD TO DAYFILE.
*                *CRACK* = IF NONBLANK, CRACK PARAMETERS INTO RA+2 ET 
*                          SEQ. 
*         USES   X2, IF *DAYFILE* AND/OR *CRACK* SPECIFIED. 
*         CALLS  SYS=.
  
  
          PURGMAC CONTRLC 
  
 CONTRLC  MACRO  S,F,D,C
*                            SETUP STATUS WORD IF FUNCT SPECIFIED 
  IFC NE, F  ,8D
  IFC EQ, F READ ,2 
  SX6 10B 
  SKIP 4
  IFC EQ, F BKSP ,2 
  SX6 40B 
  SKIP 1
  ERR  CONTRLC - ILLEGAL FUNCTION (F) 
  R= A6,S 
*                            FORM *ACE* REQUEST 
  SX6 3RACE*4+1 
  R= X1,S 
  LX6 40D 
  BX6 X6+X1 
  IFC NE, C  ,5 
  IFC NE, D  ,2 
  SX1 3 
  SKIP 4
  R= X1,1 
  SKIP 2
  IFC NE, D  ,3 
  R= X1,2 
  LX1 24D 
  BX6 X6+X1 
*                            PROCESS SYSTEM REQUEST 
  RJ =XSYS= 
  ENDM
 DATE     SPACE  4,9
***       DATE - RETURN DATE. 
* 
* 
*         DATE   STATUS 
* 
*         ENTRY  *STATUS* = ADDRESS FOR DATE RESPONSE.
*         EXIT -
* STATUS  60/  * YY/MM/DD.* 
*         CALLS  SYS=.
  
  
          PURGMAC DATE
  
 DATE     MACRO  S
*                            FORM TIME (DATE) REQUEST 
  SX6 3RTIM 
  R= X1,S 
  LX6 42D 
  BX6 X6+X1 
  SX1 200001B 
  LX1 24D 
  BX6 X6+X1 
*                            PROCESS SYSTEM REQUEST 
  RJ =XSYS= 
  ENDM
 DATE4    SPACE  4,9
***       DATE4 - RETURN DATE WITH 4-DIGIT YEAR.
* 
*         DATE4  STATUS 
* 
*         ENTRY  *STATUS* = ADDRESS FOR RESPONSE. 
* 
*         EXIT -
* STATUS  60/  *YYYY/MM/DD* 
* 
*         CALLS  SYS=.
  
  
          PURGMAC DATE4 
  
 DATE4    MACRO  S
*                            FORM TIME (DATE) REQUEST 
  SX6 3RTIM 
  R= X1,S 
  LX6 42D 
  BX6 X6+X1 
  SX1 200013B 
  LX1 24D 
  BX6 X6+X1 
*                            PROCESS SYSTEM REQUEST 
  RJ =XSYS= 
  ENDM
 DISPOSE  SPACE  4,19 
***       DISPOSE - SET DISPOSITION CODE OF A FILE. 
* 
* 
*         DISPOSE LFN,XKY,RECALL
* 
*         ENTRY  *LFN* = LOGICAL FILE NAME. 
*                *XKY* = DISPOSITION CODE, FORMAT  X=KY  OR  *X=KY. 
* 
*                        *   IF PRESENT, DISPOSE OF FILE AT END OF JOB. 
*                            IF OMITTED, DISPOSE OF FILE IMMEDIATELY. 
* 
*                        X   ONE OF THE FOLLOWING DISPOSITION MNEMONICS 
*                                 PR P1 P2 PB PU P8 FR FL HR HL PT
* 
*                        K   SITE INDICATOR (C, I, E, OR BLANK).
* 
*                        Y   1- OR 2-CHARACTER TERMINAL IDENTIFIER. 
* 
*         CALLS  SYS=.
  
  
          PURGMAC DISPOSE 
  
 DISPOSE  MACRO  LFN,XKY,L
*                            CHECK FILE NAME
  IFC EQ, LFN  ,1 
  ERR  DISPOSE - NO FILE NAME 
'?SCP#CH MICRO 8D,1, LFN
  IFC NE, "'?SCP#CH"  ,1
  ERR  DISPOSE - FILE NAME GT 7 CHARS - LFN 
*                            CHECK FOR ASTERISK 
'?SCP#EJ SET 0
'?SCP#CH MICRO 1,1, XKY 
  IFC EQ, "'?SCP#CH" * ,1 
'?SCP#EJ SET 1
'?SCP#XX MICRO '?SCP#EJ+1,, XKY 
*                            GET DISPOSITION CODE (X) 
'?SCP#DC MICRO 1,,="'?SCP#XX"=
'?SCP#DL MICCNT '?SCP#DC
  IFGT '?SCP#DL,2,1 
  ERR  DISPOSE - DISP CODE GT 2 CHARS - "'?SCP#DC"
*                            GET SITE INDICATOR (K) 
'?SCP#SI SET 4
'?SCP#CH MICRO '?SCP#DL+2,1, "'?SCP#XX" 
  ECHO 3,K=(,C,I,E),S=(0,1,2,3) 
  IFC EQ, K "'?SCP#CH" ,2 
'?SCP#SI SET S
  STOPDUP 
  IFEQ '?SCP#SI,4,1 
  ERR  DISPOSE - SITE INDICATOR ("'?SCP#CH") NOT C, I, E, OR BLANK
*                            GET TERMINAL IDENTIFIER (Y)
'?SCP#CH MICRO '?SCP#DL+3,, "'?SCP#XX"
'?SCP#DL MICCNT '?SCP#CH
  IFGT '?SCP#DL,2,1 
  ERR  DISPOSE - DISP ID GT 2 CHARS - "'?SCP#CH"
*                            GENERATE PARAMETER WORDS 
+ EQ *+2
- VFD 6/,24D/0L"'?SCP#CH" 
  VFD 42D/0L_LFN,3/'?SCP#EJ,2/'?SCP#SI,1/1,12D/0L"'?SCP#DC" 
*                            FORM *DSP* REQUEST 
*                            MAKE SURE COMPLETE BIT IS CLEAR
  SA1 *-2 
  MX6 60-1
  BX6 X6*X1 
  SA6 A1
  IFC EQ, L  ,2 
  SX6 3RDSP*4 
  SKIP 1
  SX6 3RDSP*4+1 
  SX1 *-4 
  LX6 40D 
  BX6 X6+X1 
*                            PROCESS SYSTEM REQUEST 
  RJ =XSYS= 
  ENDM
          SPACE  4,10 
***       ENCSF  ENTER NEW CONTROL STATEMENT FILE 
* 
*         ENCSF  LFN,RESTORE
* 
*         ENTRY  *LFN* = ADDRESS OF WORD CONTAINING FILE NAME OF NEW
*                            CONTROL STATEMENT FILE.
*                            42/0LFILE NAME, 18/0.
*                *RESTORE* = ADDR OF WORD CONTAINING NEW FILE 
*                            POSITION, 30/0, 24/PRU, 6/OFFSET.
* 
*                *LFN* AND *RESTORE* ARE PLACED IN A MACRO-GENERATED
*                WORD *POINTER*,  WHICH ALSO CONTAINS THE COMPLETE
*                FLAG.   18/0, 18/RESTORE, 18/LFN, 6/C. 
* 
*         EXIT   NEW CONTROL STATEMENT FILE ACTIVATED.
* 
*         USES   X2, X6.
* 
*         CALLS  SYS=.
* 
          PURGMAC ENCSF 
 ENCSF    MACRO  LFN,RESTORE
          LOCAL  POINTER
          EQ     POINTER+1
 POINTER  BSS    1
          SX6    RESTORE
          SX2    LFN
          LX6    24D
          LX2    6
          BX6    X6+X2
          SA6    POINTER
          SYSTEM FIN,RECALL,POINTER,300B
          ENDM
 ENDRUN   SPACE  4,6
***       ENDRUN - END CENTRAL PROGRAM. 
* 
* 
*         ENDRUN
* 
*         CALLS  SYS=.
  
  
          PURGMAC ENDRUN
  
 ENDRUN   MACRO 
*                            FORM *END* REQUEST 
  SX6 3REND*4+1 
  LX6 40D 
*                            PROCESS SYSTEM REQUEST 
  RJ =XSYS= 
  ENDM
 FILESTAT SPACE  4,12 
***       FILESTAT - READ FILE NAME TABLE ENTRIES.
* 
* 
*         FILESTAT PLIST,RECALL 
* 
* PLIST   24/ 3 * (NUMBER OF FILES) + 1,  12/ JUNK,  24/ 0
*         FOLLOWED BY THREE WORDS OF THE FORM 
*         DATA   0L_LFN, 0, 0 
*         FOR EACH FILE.
* 
*         USES   X2.
*         CALLS  SYS=.
  
  
          PURGMAC FILESTAT
  
 FILESTAT MACRO  P,L
  SYSTEM STS,L,P,2S6
  ENDM
          SPACE  4,10 
***       FILINFO - GET FILE INFORMATION
* 
*         FILINFO ADDR
* 
*         ENTRY  *ADDR* = ADDR OF TABLE TO RECEIVE FILE INFORMATION.
*                            42/0LFILENAME, 6/LG, 12/C. 
*                            LG = TABLE LENGTH, INCLUDING 1ST WORD. 
*                            (LG SHOULD BE 5, IF .LT. 2, ONLY 1ST WORD
*                            RETURNED, IF .GT. 5, 5 WORDS RETURNED.)
*                            C = COMPLETE FLAG, MUST BE ZERO INITIALLY, 
*                            SET TO 1 ON COMPLETION.
* 
*         EXIT   *ADDR* - *ADDR+4* CONTAIN FILE INFORMATION OR ZERO IF
*                FILE IS NOT ASSIGNED TO CONTROL POINT. 
*                *ADDR+1* = 12/DEVCODE, 24/0, 18/STATUS, 6/FILTYPE. 
*                *ADDR+2* = 12/ESTORD, 48/0.
*                *ADDR+3* = 30/MAXPRU, 30/CURRPOS.
*                *ADDR+4* = ZERO. 
* 
*         USES   X2 
* 
*         CALLS  SYS=.
* 
          PURGMAC FILINFO 
 FILINFO  MACRO  ADDR 
   SYSTEM LFM,1,ADDR,3200B
          ENDM
 GETACT   SPACE  4,10 
***       GETACT - GET ACTIVITY FOR CONTROL POINT 
* 
*         GETACT STATUS,RECALL
* 
*         ENTRY  *STATUS* = ADDR OF WORD TO RECEIVE ACTIVITY. 
*                STATUS = 59/(IGNORED), 1/C (C = 0, COMPLETE FLAG). 
* 
*         EXIT   STATUS = 12/COUNT1, 12/COUNT2, 35/0, 1/C 
*                            COUNT1 = ACTIVE PPS + STACK REQUESTS + 
*                                     SSC WAIT RESPONSES. 
*                            COUNT2, BIT 0 = 1 IF PAUSE,
*                                    BIT 1 = 1 IF CFO,
*                                    BIT 2 = 1 IF SSC LONG-TERM 
*                                              CONNECT. 
*                            C = 1 (COMPLETE FLAG). 
* 
*         CALLS SYS=
  
  
  PURGMAC GETACT
 GETACT MACRO S,R 
  SYSTEM STS,R,S,400B 
  ENDM
          SPACE  4,10 
***       GETJCI - GET JOB CONTROL INFORMATION
* 
*         GETJCI ADDR 
* 
*         ENTRY  *ADDR* = ADDR OF 2-WORD TABLE TO RECEIVE JOB CONTROL 
*                            INFORMATION. 
*                ADDR = 54/(IGNORED), 6/C 
*                            C = COMPLETE FLAG (= 0 INITIALLY,
*                                SET TO 1 ON COMPLETION.
*                ADDR+1 = 60/(IGNORED). 
* 
*         EXIT   ADDR = 6/EF, 18/R1G, 12/CCLDATA, 12/EM, 6/SSW, 6/C.
*                ADDR+1 = 6/EFG, 18/R3, 18/R2, 18/R1. 
* 
*         USES   X6.
* 
*         CALLS  SYS=.
* 
          PURGMAC GETJCI
 GETJCI   MACRO  ADDR 
          SYSTEM FIN,RECALL,ADDR,400B 
          ENDM
 GETLC    SPACE  4,10 
***       GETLC - GET LOADER CONTROL WORD 
* 
*         GETLC  STATUS 
* 
*         ENTRY  *STATUS* = ADDRESS OF WORD TO RECEIVE BYTES 0-3 OF 
*                           THE LOADER CONTROL WORD (W.CPLDR1). 
*                           WORD. 
*                (STATUS) = 59/(IGNORED), 1/C.
*                           C = COMPLETE FLAG, SET TO 0 BY MACRO. 
* 
*         EXIT   (STATUS) = 48/(BYTES 0-3 OF W.CPLDR1), 
*                           11/(UNCHANGED), 
*                           1/C (COMPLETE FLAG, =1).
* 
*         USES   A1, X1, A6, X6.
* 
*         CALLS  SYS=.
  
  
  PURGMAC GETLC 
 GETLC MACRO S
   SYSTEM CPM,1,S,4500B 
  ENDM
 GETLOF   SPACE  4,10 
***       GETLOF - GET LIST OF FILES ADDRESS. 
* 
*         GETLOF ADDR,RECALL
* 
*         ENTRY  *ADDR* = ADDR OF WORD TO RECEIVE LIST-OF-FILES 
*                         ADDRESS FROM C.P.AREA (W.CPLOF).
*                  ADDR = 59/(IGNORED), 1/C (C = 0 INITIALLY).
*                *RECALL*, IF NON-BLANK, REQUEST MADE WITH RECALL.
* 
*         EXIT     ADDR = 12/(UNCHANGED), 18/LOFA, 29/(UNCHANGED), 1/C. 
*                          LOFA = LIST-OF-FILES ADDRESS FROM C.P. AREA. 
*                          C = 1 ON COMPLETION. 
* 
*         CALLS  =SYS.
  
  
  PURGMAC GETLOF
 GETLOF MACRO A,R 
   SYSTEM CPM,R,A,6100B 
  ENDM
 GETMC    SPACE  4,10 
***       GETMC - GET MACHINE CHARACTERISTICS.
* 
*         GETMC  ADDR 
* 
*         ENTRY  *ADDR* = ADDRESS OF ONE-WORD CHARACTERISTICS 
*                         PARAMETER BLOCK.
* 
*         EXIT   (ADDR) = 12/SW,12/EC,12/PP,12/HW,11/CM,1/C.
* 
*                         SW(59-48) - SOFTWARE CHARACTERISTICS. 
*                         EC(47-36) = ECS SIZE/1000B. 
*                         PP(35-24) = NUMBER OF PPU-S.
*                         HW(23-12) - HARDWARE CHARACTERISTICS. 
*                         CM(11-1) = CENTRAL MEMORY SIZE/200B.
*                         C(0) = COMPLETE BIT.
* 
*         USES   X - 1, 2, 6. 
*                A - 1, 6.
*                B - NONE.
* 
*         CALLS  SYS=.
  
  
          PURGMAC GETMC 
  
 GETMC    MACRO  A
          SYSTEM CVL,RECALL,A,2 
          ENDM
          SPACE  5                                                      T10I 259
***       IOTIME - REQUEST ACCUMULATED CHANNEL TIME                     T10I 260
*                                                                       T10I 261
*                                                                       T10I 262
*         IOTIME  STATUS                                                T10I 263
*                                                                       T10I 264
*                                                                       T10I 265
*         ENTRY  *STATUS* = ADDRESS FOR TIME RESPONSE.                  T10I 266
*         EXIT -                                                        T10I 267
* STATUS  24/IO TIME LIMIT, 24/CHANNEL TIME USED (SECONDS), 12/         T10I 268
*         CHANNEL TIME USED (MS)                                        T10I 269
*         CALLS  SYS=                                                   T10I 270
                                                                        T10I 271
                                                                        T10I 272
          PURGMAC  IOTIME                                               T10I 273
                                                                        T10I 274
IOTIME    MACRO  S                                                      T10I 275
*                                  FORM TIME (CHANNEL TIME) REQUEST     T10I 276
  SX6 3RTIM                                                             T10I 277
  R= X1,S                                                               T10I 278
  LX6 42D                                                               T10I 279
  BX6 X6+X1                                                             T10I 280
  SX1 200010B                                                           T10I 281
  LX1 24D                                                               T10I 282
  BX6 X6+X1                                                             T10I 283
*                                                                       T10I 284
  RJ =XSYS=                                                             T10I 285
  ENDM                                                                  T10I 286
 JDATE    SPACE  4,9
***       JDATE - RETURN JULIAN DATE. 
* 
* 
*         JDATE  STATUS 
* 
*         ENTRY  *STATUS* = ADDRESS FOR JDATE RESPONSE. 
*         EXIT -
* STATUS  30/ ZEROS,  30/ *YYDDD* 
*         CALLS  SYS=.
  
  
          PURGMAC JDATE 
  
 JDATE    MACRO  S
*                            FORM TIME (JULIAN DATE) REQUEST
  SX6 3RTIM 
  R= X1,S 
  LX6 42D 
  BX6 X6+X1 
  SX1 200003B 
  LX1 24D 
  BX6 X6+X1 
*                            PROCESS SYSTEM REQUEST 
  RJ =XSYS= 
  ENDM
 JDATE4   SPACE  4,9
***       JDATE4 - RETURN JULIAN DATE WITH 4-DIGIT YEAR.
* 
*         JDATE4 STATUS 
* 
*         ENTRY  *STATUS* = ADDRESS FOR RESPONSE. 
* 
*         EXIT -
* STATUS  18/ ZEROS,  42/ *YYYYDDD* 
* 
*         CALLS  SYS=.
  
  
          PURGMAC JDATE4
  
 JDATE4   MACRO  S
*                            FORM TIME (JULIAN DATE) REQUEST
  SX6 3RTIM 
  R= X1,S 
  LX6 42D 
  BX6 X6+X1 
  SX1 200014B 
  LX1 24D 
  BX6 X6+X1 
*                            PROCESS SYSTEM REQUEST 
  RJ =XSYS= 
  ENDM
          SPACE  4                                                       FDLMACS
***       LOADD - GENERATE LIBRARY DIRECTORY.                            FDLMACS
*                                                                        FDLMACS
*                                                                        FDLMACS
*         LOADD  PARAM,RECALL                                            FDLMACS
*                                                                        FDLMACS
*         ENTRY  *PARAM* = FWA OF TWO-WORD PARAMETER.                    FDLMACS
*         CALLS  SYS=                                                    FDLMACS
                                                                         FDLMACS
                                                                         FDLMACS
          PURGMAC LOADD                                                  FDLMACS
                                                                         FDLMACS
 LOADD    MACRO  P,R                                                     FDLMACS
  SYSTEM LDD,R,P                                                         FDLMACS
  ENDM                                                                   FDLMACS
          SPACE  4                                                       FDLMACS
***       LOADQ - LOAD CAPSULE.                                          FDLMACS
*                                                                        FDLMACS
*                                                                        FDLMACS
*         LOADQ  PARAM,RECALL                                            FDLMACS
*                                                                        FDLMACS
*         ENTRY  *PARAM* = FWA OF FOUR-WORD PARAMETER.                   FDLMACS
*         CALLS  SYS=                                                    FDLMACS
                                                                         FDLMACS
                                                                         FDLMACS
          PURGMAC LOADQ                                                  FDLMACS
                                                                         FDLMACS
 LOADQ    MACRO  P,R                                                     FDLMACS
  SYSTEM LDQ,R,P                                                         FDLMACS
  ENDM                                                                   FDLMACS
 LOADREQ  SPACE  4,7
***       LOADREQ - CALL SYSTEM LOADER VIA PPU. 
* 
* 
*         LOADREQ PLIST,RECALL
* 
*         ENTRY  *PLIST* = FWA OF PARAMETER LIST. 
*         CALLS  SYS=.
  
  
          PURGMAC LOADREQ 
  
 LOADREQ  MACRO  P,R,F
  IFC EQ, F  ,2 
*                            NORMAL CALL
  SYSTEM LDV,R,P
  SKIP 8D 
  SX1 P 
  IFC EQ, F DATA ,2 
*                            LOAD OVERLAY AS DATA 
  RJ =XLOD= 
  SKIP 4
  IFC EQ, F CMM ,2
*                            LOAD OVERLAY VIA CMM 
  RJ =XCMM.LDV
  SKIP 1
A ERR UNKNOWN PARAM - F 
  ENDM
 MEMORY   SPACE  4,15 
***       MEMORY - REQUEST MEMORY.
* 
* 
*         MEMORY TYPE,STATUS,RECALL,WORDS,NABORT
* 
*         ENTRY  *TYPE* = *CM* OR *SCM* OR *ECS* OR *LCM* OR BLANK. 
*                *STATUS* = ADDRESS OF STATUS WORD. 
*                *WORDS* = MEMORY ASSIGNMENT REQUEST.  IF BLANK, ASSUMED
*                            ALREADY STORED IN (STATUS).
*                *NABORT* = IF BLANK, ABORT JOB IF REQUEST UNSATISFIED. 
* STATUS  30/ N,  30/ 0 
*         N      MEMORY REQUEST (IF N = 0, CURRENT FL IS RETURNED). 
*         USES   X2, IF *ECS*/*LCM* AND/OR *NABORT* IS SPECIFIED. 
*         CALLS  SYS=.
  
  
          PURGMAC MEMORY
  
 MEMORY   MACRO  T,S,L,W,N
*                            SETUP STATUS WORD IF SPECIFIED 
  IFC NE, W  ,3 
  R= X6,W 
  LX6 30D 
  R= A6,S 
*                            PROCESS *MEM* REQUEST
'?SCP#NA MICRO
  IFC NE, N  ,1 
'?SCP#NA MICRO 1,, +2 
  IFC NE, T  ,8D
  IFC NE, T CM ,7 
  IFC NE, T SCM ,6
  IFC NE, T ECS ,3
  IFC NE, T LCM ,2
  ERR  ILLEGAL MEMORY REQUEST - (T) 
  SKIP 2
          SYSTEM MEM,L,S,1"'?SCP#NA"
  SKIP 1
          SYSTEM MEM,L,S,"'?SCP#NA" 
  ENDM
 MESSAGE  SPACE  4,17 
***       MESSAGE - DISPLAY MESSAGE.
* 
* 
*         MESSAGE MESSAGE,OPTION,RECALL 
* 
*         ENTRY  *MESSAGE* = ADDRESS OF MESSAGE IN *C* FORMAT.
*                *OPTION* = DISPLAY OPTION AS FOLLOWS --
* 
*                0 = PLACE MESSAGE IN SYSTEM DAYFILE, JOB DAYFILE,
*                    AND PLACE IN B DISPLAY.
*                1 = PLACE IN B DISPLAY ONLY. 
*                2 = PLACE IN B DISPLAY ONLY.(SAME AS OPTION 1) 
*                3 = PLACE MESSAGE IN JOB DAYFILE ONLY. 
*                4 = PLACE MESSAGE IN CERFILE ONLY.(SYSTEM PROGRAM ONLY)
*                5 = TREAT MESSAGE AS ACCOUNTING MSG.(SYS PROGRAM ONLY) 
*                6 = SAME AS OPTION 0 BUT DO NOT SEND TO TERMINAL.
*                7 = SAME AS OPTION 3 BUT DO NOT SEND TO TERMINAL.
*                8 OR MORE = SAME AS OPTION 1 
* 
*                NOTE - OPTION WILL BE SET TO 0 IF X6 IS SPECIFIED. 
* 
*                FOR COMPATIBILITY WITH THE OLD VERSION OF THE MACRO, 
*                    THESE ALTERNATE FORMS OF THE OPTION ARE SUPPORTED -
* 
*                BLANK    TREAT AS OPTION 0 
*                *LOCAL*  TREAT AS OPTION 3 
*                OTHER    TREAT AS OPTION 1 
* 
*                *RECALL* = OPTIONAL RECALL PARAMETER 
* 
*         USES   X1,X6. 
* 
*         CALLS  MSG=.
  
  
          PURGMAC MESSAGE 
  
 MESSAGE  MACRO  M,O,L
  SX1 M 
  MX6 42D 
  BX1 -X6*X1
'?SCP#RC SET 0
  IFC NE, L  ,1 
'?SCP#RC SET 200000B
  IF -REG,O,7 
'?SCP#OP SET 1
   IF DEF,O,1 
'?SCP#OP SET O
  IFC EQ,$O$LOCAL$,1
'?SCP#OP SET 3
  R= X6,'?SCP#RC+'?SCP#OP 
  SKIP 5
  IFC EQ,$O$X6$,3 
4 ERR OPTION IN X6 IGNORED
  R= X6,'?SCP#RC
  SKIP 1
  R= X6,'?SCP#RC+O
  RJ =XMSG= 
  ENDM
 MOVE     SPACE  4,8
***       MOVE - MOVE DATA BLOCK. 
* 
*         MOVE   COUNT,FROM,TO
* 
*         ENTRY  *COUNT* = WORD COUNT OF BLOCK TO BE MOVED. 
*                *FROM* = SOURCE FIRST WORD ADDRESS.
*                *TO* = DESTINATION FIRST WORD ADDRESS. 
* 
*         EXIT   DATA BLOCK MOVED.
* 
*         CALLS  MVE=.
  
          PURGMAC  MOVE 
  
 MOVE     MACRO  C,F,T
  R= X1,C 
  R= X2,F 
  R= X3,T 
  RJ =XMVE= 
  ENDM
 RECALL   SPACE  4,8
***       RECALL - PLACE PROGRAM IN RECALL STATUS.
* 
* 
*         RECALL STATUS 
* 
*         ENTRY  *STATUS* IF PRESENT, PROGRAM WILL BE RECALLED WHEN 
*                            BIT 0 OF (STATUS) IS SET.
*         USES   X2, IF *STATUS* IS SPECIFIED.
*         CALLS  RCL= OR WNB=.
  
  
          PURGMAC RECALL
  
 RECALL   MACRO  S
*                            RECALL 
  IFC EQ, S  ,2 
  RJ =XRCL= 
  SKIP 2
*                            WAIT NOT BUSY
  R= X2,S 
  RJ =XWNB= 
  ENDM
 RECOVR   SPACE  4,9
***       RECOVR - REPRIEVE JOB AFTER ABORT.
* 
* 
*         RECOVR POSTPROC,FLAGS,CHECKSUM
* 
*         ENTRY  *POSTPROC* = ADDRESS OF RECOVERY SUBROUTINE. 
*                *FLAGS* = REPRIEVE CONDITION MASK. 
*                            BIT 0   MODE ERROR.
*                            BIT 1   PP CALL ERROR (BAD RA.MTR REQUEST).
*                            BIT 2   SYSTEM LIMIT EXCEEDED (TIME, ETC). 
*                            BIT 3   OPERATOR DROP OR RERUN.
*                            BIT 4   SYSTEM ABORT (PP ABORT, ETC).
*                            BIT 5   CPU ABORT (*ABT* REQUEST). 
*                            BIT 6   NORMAL TERMINATION (*END* REQUEST).
*                *CHECKSUM* = LWA FOR CHECKSUM (0 IF NO CHECKSUM
*                             TO BE TAKEN). 
* 
*         USES   ALL. 
*         CALLS  *SETUP.*.
  
  
          PURGMAC RECOVR
  
 RECOVR   MACRO  P,F,C
  SB3 C B0
  SB1 P 
  SX4 F 77B 
  RJ =XSETUP. 
  ENDM
 REPRIEVE SPACE  4,10 
***       REPRIEVE - REQUEST REPRIEVE PROCESSING. 
* 
*         REPRIEVE ISSUES AN RA+1 REQUEST FOR ENHANCED RPV PROCESSING.
* 
*         (REPRIEVE MUST ISSUE ITS OWN RA+1 REQUEST BECAUSE *SYS=*
*         IS NOT REENTRANT AND THE INTERRUPT MAY HAVE OCCURRED WHILE
*         *SYS=* WAS ACTIVE.) 
* 
*         REPRIEVE  ADDR,TYPE,MASK
* 
*         ENTRY  *ADDR* = FWA OF RPV REQUEST BLOCK. 
* 
*                *TYPE* = TYPE OF RPV REQUEST.
*                         *SETUP* - REQUEST REPRIEVE ON ERROR.
*                         *RESUME* - RESTART INTERRUPTED PROGRAM. 
*                         *RESET* - ALLOW REPRIEVED ERROR TO OCCUR. 
* 
*                *MASK* = REPRIEVE ERROR CLASS MASK.
*                         BIT 0 - MODE ERROR. 
*                         BIT 1 - PP CALL ERROR.
*                         BIT 2 - EXCEEDED LIMIT. 
*                         BIT 3 - OPERATOR ACTION.
*                         BIT 4 - PP ABORT/ECS PARITY ERROR.
*                         BIT 5 - CP ABORT. 
*                         BIT 6 - NORMAL TERMINATION. 
*                         BIT 7 - TERMINAL INTERRUPT. 
* 
*         USES   X - 1, 6.
*                A - 1, 6.
*                B - NONE.
* 
*         CALLS  NONE.
  
  
          PURGMAC REPRIEVE
  
 REPRIEVE MACRO  F,T,M
  LOCAL A,B 
  IFC EQ, F  ,1 
  ERR REPRIEVE ADDR NOT SPECIFIED 
  IFC EQ, M  ,1 
  ERR REPRIEVE MASK NOT SPECIFIED 
 '?SCP#TP SET 0 
  IFC EQ, T SETUP ,1
 '?SCP#TP SET 1 
  IFC EQ, T RESUME ,1 
 '?SCP#TP SET 2 
  IFC EQ, T RESET ,1
 '?SCP#TP SET 3 
  IFEQ '?SCP#TP,0,1 
  ERR ILLEGAL REPRIEVE TYPE - (T) 
  R= A1,F+3 
  MX6 -36D
  BX6 -X6*X1
  R= X1,M 
  LX1 36D 
  BX6 X1+X6 
  SA6 A1
  R= A1,F 
  MX6 48D 
  BX6 X6*X1 
  R= X1,'?SCP#TP*2
  BX6 X6+X1 
  SA6 A1
  SX6 0LRPV 
  R= X1,1 
  PX6 
  LX1 18D 
  LX6 42D 
  BX6 X6+X1 
  SX1 A1
  BX6 X6+X1 
 A R= A1,RA.MTR 
  NZ X1,A 
  SA6 A1
  R= A1,RA.CEJ
  PL X1,B 
  XJ
 B R= A1,RA.MTR 
  NZ X1,B 
  ENDM
 REQUEST  SPACE  4,7
***       REQUEST - REQUEST ASSIGNMENT OF EQUIPMENT TO FILE.
* 
* 
*         REQUEST PLIST 
* 
*         ENTRY  *PLIST* = FWA OF PARAMETER LIST. 
*         CALLS  SYS=.
  
  
          PURGMAC REQUEST 
  
 REQUEST  MACRO  P
  SYSTEM REQ,1,P
  ENDM
 ROUTE    SPACE  4,8
***       ROUTE - ROUTE FILE TO INPUT/OUTPUT QUEUE. 
* 
* 
*         ROUTE  RPB,RECALL 
* 
*         ENTRY  *RPB* = FWA OF ROUTE PARAMETER BLOCK.
*         CALLS  SYS=.
  
  
          PURGMAC ROUTE 
  
 ROUTE    MACRO  RPB,RECALL 
  SYSTEM DSP,RECALL,RPB 
  ENDM
 RTIME    SPACE  4,8
***       RTIME - REQUEST REAL TIME CLOCK READING.
* 
* 
*         RTIME  STATUS 
* 
*         ENTRY  *STATUS* = ADDRESS FOR CLOCK RESPONSE. 
*         EXIT -
* STATUS  24/ JUNK,  24/ SECONDS,  12/ UNITS
*         SECONDS, UNITS = REAL TIME SINCE LAST DEADSTART.
*         UNITS = 1/4096 OF A SECOND. 
* 
*         CALLS  SYS=.
  
  
          PURGMAC RTIME 
  
 RTIME    MACRO  S
*                            FORM TIME (REAL TIME CLOCK) REQUEST
  SX6 3RTIM 
  R= X1,S 
  LX6 42D 
  BX6 X6+X1 
  SX1 200004B 
  LX1 24D 
  BX6 X6+X1 
*                            PROCESS SYSTEM REQUEST 
  RJ =XSYS= 
  ENDM
          SPACE  4,10 
***       SETJCI - SET JOB CONTROL INFORMATION
*         SETJCI ADDR 
* 
*         ENTRY  *ADDR* = ADDR OF A 2-WORD TABLE CONTAINING NEW JOB 
*                CONTROL INFORMATION. 
*                ADDR = 6/EF, 18/R1G, 12/CCLDATA, 12/EM, 6/SSW, 6/C.
*                ADDR+1 = 6/EFG, 18/R3, 18/R2, 18/R1. 
*                            C = COMPLETE FLAG (= 0 INITIALLY,
*                            SET TO 1 ON COMPLETION.
*         EXIT   NEW JOB CONTROL INFORMATION SAVED IN C. P. AREA. 
*                CCLDATA IS SAVED ONLY FOR SYSTEM LIBRARY PROGRAM.
*                EM IS NOT RESET. 
* 
*         USES   X6.
* 
*         CALLS  SYS=.
* 
          PURGMAC SETJCI
 SETJCI   MACRO  ADDR 
          SYSTEM FIN,RECALL,ADDR,500B 
          ENDM
 SETLC    SPACE  4,10 
***       SETLC - SET LOADER CONTROL WORD 
* 
*         SETLC  STATUS 
* 
*         ENTRY  *STATUS* = ADDR OF WORD CONTAINING NEW VALUE FOR 
*                           BYTES 0-2 OF THE LOADER WORD (W.CPLDR1).
*                (STATUS) = 36/(NEW VALUE OF BYTES 0-2),
*                           23/(IGNORED), 
*                           1/C (COMPLETE FLAG, SET TO 0 BY MACRO). 
* 
*         EXIT   (STATUS) = 59/(UNCHANGED), 1/C (=1). 
*                (BYTES 0-2 OF W.CPLDR1 RESET TO NEW VALUE, EXCEPT
*                 BIT 49, WHICH CAN BE SET BUT NOT CLEARED.)
* 
*         USES   A1, X1, A6, X6.
* 
*         CALLS  SYS=.
  
  
  PURGMAC SETLC 
 SETLC MACRO S
   SYSTEM CPM,1,S,2200B 
  ENDM
 SETLOF   SPACE  4,10 
***       SETLOF - SET LIST OF FILES ADDRESS. 
* 
*         SETLOF ADDR,RECALL
* 
*         ENTRY  *ADDR* = ADDRESS OF WORD CONTAINING NEW LIST-OF-FILES
*                         ADDRESS.
*                  ADDR = 12/(IGNORED), 18/LOFA, 29/(IGNORED), 1/C. 
*                         LOFA = NEW LIST-OF-FILES ADDRESS. 
*                         C = 0 INITIALLY, = 1 ON COMPLETION. 
*                *RECALL*, IF NON-BLANK, REQUEST IS MADE WITH RECALL. 
* 
*         EXIT   NEW LIST-OF-FILES ADDRESS SAVED IN C.P. AREA (W.CPLOF).
* 
*         CALLS  =SYS.
  
  
  PURGMAC SETLOF
 SETLOF MACRO A,R 
   SYSTEM CPM,R,A,6200B 
  ENDM
 STATUS   SPACE  4,8                                                    0074   4
***       STATUS - REQUEST SYSTEM RESOURCE INFORMATION.                 0074   5
*                                                                       0074   6
*                                                                       0074   7
*         STATUS LIST,X,RECALL                                          0074   8
*                                                                       0074   9
*         ENTRY  *LIST*      HEADER WORD ADDRESS OF LIST.               0074  10
*                *X*         CODE.                                      0074  11
*                            =1 RETURN INFORMATION ABOUT MASS STORAGE.  0074  12
*                            =2 RETURN INFORMATION ABOUT LOCAL FILES.   0074  13
*                *RECALL*    IF NOT BLANK REQUEST IS MADE WITH RECALL.  0074  14
*                                                                       0074  15
*         FORMAT OF HEADER WORD-                                        0074  16
*                                                                       0074  17
*         VFD    12/RESERVED                                            0074  18
*         VFD    12/LENGTH   OPSYS WILL NOT RETURN MORE THAN THIS MANY  0074  19
*                              WORDS.  THE LENGTH, WHICH DOES NOT       0074  20
*                              INCLUDE THE HEADER WORD, MUST NOT BE     0074  21
*                              ZERO.                                    0074  22
*         VFD    12/**       NUMBER OF WORDS RETURNED.                  0074  23
*         VFD    23/RESERVED                                            0074  24
*         VFD    1/C         MUST BE ZERO.  SET TO 1 WHEN STATUS        0074  25
*                              FUNCTION COMPLETES.                      0074  26
*         USES X1, X2, X6.                                              0074  27
*         CALLS SYS=.                                                   0074  28
                                                                        0074  29
                                                                        0074  30
          PURGMAC STATUS                                                0074  31
                                                                        0074  32
 STATUS   MACRO  LIST,X,RECALL                                          0074  33
  SYSTEM STS,RECALL,LIST,X*100B                                         0074  34
  ENDM                                                                  0074  35
 SYSTEM   SPACE  4,15 
***       SYSTEM - REQUEST SYSTEM FUNCTION. 
* 
* 
*         SYSTEM REQUEST,RECALL,P1,P2 
* 
*         ENTRY  *REQUEST* = 3 CHARACTER SYSTEM REQUEST NAME. 
*                *P1* = PARAMETER FOR BITS  0 - 17 OF REQUEST.
*                *P2* = PARAMETER FOR BITS 18 - 35 OF REQUEST.
*         USES   X2, IF *P2* IS NONBLANK. 
*         CALLS  SYS=.
  
  
          PURGMAC SYSTEM
  
 SYSTEM   MACRO  C,L,P1,P2
*                            FORM REQUEST 
  IFC NE, C  ,4 
  SX6 3R;A
  IFC NE, L  ,1 
  PX6 
  LX6 42D 
*                            PROCESS *P2* 
  IFC NE, P2  ,3
  R= X2,P2
  LX2 18D 
  IX6 X6+X2 
*                            PROCESS *P1* 
  IFC NE, P1  ,2
  R= X1,P1
  BX6 X6+X1 
*                            PROCESS RECALL REQUEST 
  IFC EQ, C  ,4 
  IFC NE, L  ,3 
  MX1 1 
  LX1 41D 
  IX6 X6+X1 
*                            PROCESS SYSTEM REQUEST 
  RJ =XSYS= 
  ENDM
 TIME     SPACE  4,10 
***       TIME - REQUEST ACCUMULATED CPU TIME.
* 
* 
*         TIME   STATUS 
* 
*         ENTRY  *STATUS* = ADDRESS FOR TIME RESPONSE.
*         EXIT -
* STATUS  24/ TIME LIMIT (SECONDS), 24/ TIME USED (SECONDS), 12/ MSEC 
*         CALLS  SYS=.
  
  
          PURGMAC TIME
  
 TIME     MACRO  S
*                            FORM TIME (CPU TIME) REQUEST 
  SX6 3RTIM 
  R= X1,S 
  LX6 42D 
  BX6 X6+X1 
  MX1 1 
  LX1 41D 
  BX6 X6+X1 
*                            PROCESS SYSTEM REQUEST 
  RJ =XSYS= 
  ENDM
 TRANSF   SPACE  4,7
***       TRANSR - TRANSFER TO DEPENDENT JOBS.
* 
* 
*         TRANSF PLIST
* 
*         ENTRY  *PLIST* = FWA OF PARAMETER LIST, WHICH IS A LIST OF
*                            JOBNAMES WHOSE DEPENDENCY COUNTS ARE TO
*                            BE DECREMENTED.  ENDED BY A ZERO WORD. 
*         USES   ALL. 
*         CALLS  *TRANSR.*
  
  
          PURGMAC TRANSF
  
 TRANSF   MACRO  P
  SA2 P 
  RJ =XTRANSR.
  ENDM
VERIFYJ   SPACE  4,10 
***       VERIFYJ - VERIFY JOBCARD
* 
*         VERIFYJ VPB,RECALL
* 
*         ENTRY *VPB* = FWA OF VERIFYJ PARAMETER BLOCK. 
*         CALLS  SYS=.
  
  
          PURGMAC VERIFYJ 
  
 VERIFYJ  MACRO  VPB,RECALL 
  SYSTEM VEJ,RECALL,VPB 
  ENDM
  
  
 ACTCOM   ENDX
