*COMDECK COMNOSDEF
          SPACE  4,10 
**        DEFINE NOS OR NOS/BE ASSEMBLY PARAMETER 
* 
  
 NOS      IF     DEF,C.PPFWA
 PPSTART  EQU    C.PPFWA           ASSEMBLING UNDER NOS/BE
 NOS      ELSE
 NOS      EQU    0
 PPSTART  EQU    PPFW              ASSEMBLING UNDER NOS 
 C.PP6WA  EQU    6000B
 NOS      ENDIF 
          SPACE  4,10 
 NOS      IF     DEF,NOS
**        PROGRAM DIRECT CELLS DEFINED USING NOS EQUIVALENTS. 
* 
  
 D.Z0     EQU    T0                DIRECT CELLS 0 -7, SCRATCH CELLS 
 D.Z1     EQU    T1 
 D.Z2     EQU    T2 
 D.Z3     EQU    T3 
 D.Z4     EQU    T4 
 D.Z5     EQU    T5 
 D.Z6     EQU    T6 
 D.Z7     EQU    T7 
  
 D.T0     EQU    CM+0              DIRECT CELLS 10 - 17, SCRATCH CELLS
 D.T1     EQU    CM+1 
 D.T2     EQU    CM+2 
 D.T3     EQU    CM+3 
 D.T4     EQU    CM+4 
 D.T5     EQU    CM+5 
 D.T6     EQU    CM+6 
 D.T7     EQU    CM+7 
  
 D.RA     EQU    RA                RELATIVE ADDRESS 
 D.FL     EQU    FL                FIELD LENGTH 
  
 D.SX0    EQU    60B               DIRECT CELLS 60 - 67, SCRATCH CELLS
 D.SX1    EQU    61B
 D.SX2    EQU    62B
 D.SX3    EQU    63B
 D.SX4    EQU    64B
 D.SX5    EQU    65B
 D.SX6    EQU    66B
 D.SX7    EQU    67B
  
 D.PPONE  EQU    70B               CONSTANT ONE 
 D.PPIR   EQU    IA                PP INPUT REGISTER ADDRESS
 D.PPIRB  EQU    IR                CONTENTS OF PP INPUT REGISTER
 D.PPMES1 EQU    MA                PP MESSAGE AREA ADDRESS
 D.CPAD   EQU    CP                CONTROL POINT AREA ADDRESS 
NMF       SPACE  4,10 
**        NMF - NOS MONITOR FUNCTIONS 
* 
  
 M.RCH    EQU    RCHM              RESERVE CHANNEL
 M.DCH    EQU    DCHM              DROP CHANNEL 
 M.CCPA   EQU    CCAM              CHANGE CONTROL POINT ASSIGNMENT
 M.ABORT  EQU    ABTM              ABORT CONTROL POINT
 M.DPP    EQU    DPPM              DROP PP
 M.RCLCP  EQU    RCLM              RECALL CONTROL POINT 
 M.DCP    EQU    DCPM              DROP CPU 
 M.RCP    EQU    RCPM              REQUEST CPU
 M.SEQ    EQU    SEQM              STORE VALUE IN EST ENTRY 
 M.PRL    EQU    PRLM              PAUSE FOR STORAGE RELOCATION 
NRR       SPACE  4,10 
**        NRR - NOS RESIDENT ROUTINES 
* 
  
 R.IDLE   EQU    PPR               PP IDLE ROUTINE
 R.MTR    EQU    FTN               CALL MONITOR 
 R.OVL    EQU    EXR               LOAD AND EXECUTE OVERLAY 
 R.DFM    EQU    DFM               DAYFILE MESSAGE
NCMP      SPACE  4,10 
**        NCMP - NOS CENTRAL MEMORY POINTERS
* 
  
 P.PCOM   EQU    PPCP              PP COMMUNICATION AREA
 C.PCOM   EQU    4
 P.EST    EQU    ESTP              EQUIPMENT STATUS TABLE 
 C.ESTSIZ EQU    2                 LAST ORDINAL + 1 
 P.ZERO   EQU    ZERL              POINTER TO ZERO WORD 
 T.MSC    EQU    RTCL              REAL TIME CLOCK
 P.EJT    EQU    EJTP              EXECUTING JOB TABLE
 C.EJT    EQU    0
 P.CHT    EQU    CHTP              CHANNEL RESERVATION TABLE
 C.CHT    EQU    2
 T.NCP    EQU    NCPL              NUMBER OF CONTROL POINTS 
 C.NCP    EQU    1
 T.MID    EQU    MMFL              WORD CONTAINING MAINFRAME ID 
 C.MID    EQU    0
 P.IDT    EQU    LIDP              POINTER WORD TO LID TABLE
 C.IDT    EQU    0                 BYTE LOCATION OF LID POINTER 
 C.LIDLGT EQU    1                 LID TABLE LENGTH BYTE
 T.2XPP   EQU    MABL              PP SPEED 
 C.2XPP   EQU    4
NCPA      SPACE  4,10 
**        NCPA - NOS CONTROL POINT AREA 
* 
  
 W.JCI    EQU    JCIW              JOB CONTROL INFORMATION
 C.SSID   EQU    2                 SUBSYSTEM ID 
 RFSI     EQU    7775B             RHF QUEUE PRIORITY 
 W.STS    EQU    STSW              STATUS WORD
 W.CPEF   EQU    STSW 
 C.CPEF   EQU    1                 CONTROL POINT ERROR FLAGS
 W.FST    EQU    TFSW              FST POINTERS 
 C.EJTO   EQU    0                 EJT ORDINAL
 W.SEP    EQU    SEPW              SPECIAL ENTRY POINT WORD 
 C.EPI    EQU    0                 ENTRY POINT INFORMATION
 S.SSJ    EQU    2                 SSJ= ENTRY POINT 
NMD       SPACE  4,10 
**        NMD - NOS MISCELLANEOUS DEFINITIONS 
* 
  
 E.SCH    EQU    SCHE              SCHEDULER ENTRY WITHIN EJT 
 C.CPN    EQU    3                 BYTE OF CP NUMBER IN EJT 
 L.EJTE   EQU    EJTE              LENGTH OF EJT ENTRY
 E.SCL    EQU    SCLE              SYSTEM CLASS ENTRY IN EJT
 C.SCL    EQU    0
 CPON     EQU    CPON              ISSUE MESSAGE TO CALLERS DAYFILE 
 BMLN     EQU    BMLN              ISSUE MESSAGE TO BML 
 C.ESTEJT EQU    4                 EJT ORDINAL IN *EQAE* WORD OF EST
 .LDC.    EQU    2000B             OCTAL EQUIVALENT OF #LDC#
 .LDD.    EQU    3000B             OCTAL EQUIVALENT OF #LDD#
 W.PPMES1 EQU    2                 WORD 1 OF PPCOM MESS AREA
 W.PPMES4 EQU    5                 WORD 3 OF PPCOM MESS AREA
          SPACE  4,10 
PPK       SPACE  4,30 
***       PP KONSTANT MACROS. 
* 
* 
*         DEPENDING UPON THE VALUE OF THE ARGUMENT THESE MACROS 
*         GENERATE VARIOUS PP INSTRUCTIONS. 
* 
*         THE FOLLOWING TABLE GIVES ALL THE CODE GENERATED BY 
*         EACH OF THE MACROS. 
* 
*         THE CODE GENERATED BY THE OLD VERSIONS OF THE MACROS
*         IS SHOWN FIRST. BENEATH THAT CODE IS THE CODE GEN-
*         ERATED BY THE NEW VERSIONS OF THE MACROS. GREATEST
*         DIFFERENCES OCCUR IN CODE GENERATED BY SBK AND SCK. 
* 
*         ARGUMENT   - - - - - - - - - MACRO NAME - - - - - - - - - - - 
*         VALUE     ADK       LDK      LMK      LPK      SBK      SCK 
* 
*         A@-100    ADC A     LDC A    LMC A    LPC A    ERR      LPC A 
*                   ADC A     LDC A    LMC A    LPC A    ADC -A   LPC -A
* 
*         -77@A@-1  SBN -A    LCN -A   LMC A    LPC A    ERR      LPC A 
*                   SBN -A    LCN -A   LMC A    SCN -A   ADN -A   LPN -A
* 
*         A=-0      ---       ERR      ERR      ERR      ERR      ERR 
*                   ---       LCN 0    LMC -0   ---      ---      LPN 0 
* 
*         A=+0      ---       LDN 0    LMN 0    LPN 0    SBN A    SCN 0 
*                   ---       LDN 0    ---      LPN 0    ---      --- 
* 
*         1@A@77    ADN A     LDN A    LMN A    LPN A    SBN A    SCN A 
*                   ADN A     LDN A    LMN A    LPN A    SBN A    SCN A 
* 
*         100@A     ADC A     LDC A    LMC A    LPC A    ADC -A   LPC -A
*                   ADC A     LDC A    LMC A    LPC A    ADC -A   LPC -A
* 
*         UNDEF     ADC A     LDC A    LMC A    LPC A    ERR      ERR 
*                   ADC A     LDC A    LMC A    LPC A    ADC -A   LPC -A
* 
*         *UNDEF* MEANS CONTAINS SYMBOLS THAT ARE NOT 
*         PREVIOUSLY DEFINED. 
* 
*         ERR MEANS THAT ASSEMBLY ERRORS RESULT.
ADK       SPACE  4,10 
**        ADK - ADD CONSTANT. 
* 
*         GENERATES ADC, ADN, SBN OR NOTHING. 
  
  
          PURGMAC  ADK
  
 ADK      MACRO  A
  IF DEF,A,9D 
  IFLT A,,4 
  IFGE A,-77B,7 
'?SCP#BB SET A
  SBN -'?SCP#BB 
  SKIP 5
  IFLE A,77B,3
  IFNE A,,3 
  ADN A 
  SKIP 1
  ADC A 
  ENDM
 BIT      SPACE  4
**        BIT - GENERATE A MULTI-BIT CONSTANT.
* 
*   NAME  BIT (P1,P2,...PN) WHERE NAME = NAME OF BIT CONSTANT.
*                                 (PN) = LIST OF BITS TO SET. 
* 
*         SYMBOLS .1 AND .2 ARE USED FOR SCRATCH. 
* 
  
          PURGMAC BIT 
          MACRO  BIT,NAME,P 
          LOCAL  A1,A2
 A2       SET    0
          IRP    P
 A1       SET    P
 A1       DECMIC P
 A2       SET    A2+1S"A1"
          IRP 
 NAME     SET    A2 
          BSS    0
          ENDM
 ENM      SPACE  4
***       ENM - PPU SUBROUTINE ENTRY/EXIT.
* 
* NAME    ENM    X
* 
*         BEGIN SUBROUTINE WITH ENTRY POINT LABELED *NAME*
*         AND EXIT POINT LABELED *NAME_X*.
  
          PURGMAC ENM 
  
  MACRO ENM,N,X 
  IFC NE,+X++,2 
N_X LJM 
  IFCP 1
  LJM 
N EQU *-1 
ENM ENDM
LDK       SPACE  4,10 
**        LDK - LOAD CONSTANT.
* 
*         GENERATES LDC, LDN OR LCN.
  
  
          PURGMAC  LDK
  
 LDK      MACRO  A
  IF DEF,A,8D 
  IFMI A,4
  IFGE A,-77B,6 
'?SCP#BB SET A
  LCN -'?SCP#BB 
  SKIP 4
  IFLE A,77B,2
  LDN A 
  SKIP 1
  LDC A 
  ENDM
LMK       SPACE  4,10 
**        LMC - LOGICAL MINUS CONSTANT. 
* 
*         GENERATES LMC, LMN OR NOTHING.
  
  
          PURGMAC  LMK
  
 LMK      MACRO  A
  IF DEF,A,5
  IFPL A,4
  IFLE A,77B,3
  IFNE A,,3 
  LMN A 
  SKIP 1
  LMC A 
  ENDM
LPK       SPACE  4,10 
**        LPK - LOGICAL PRODUCT CONSTANT. 
* 
*         GENERATES LPC, LPN, SCN OR NOTHING. 
  
  
          PURGMAC  LPK
  
 LPK      MACRO  A
  IF DEF,A,9D 
  IFMI A,5
  IFGE A,-77B,7 
  IFNE A,,7 
'?SCP#BB SET A
  SCN -'?SCP#BB 
  SKIP 4
  IFLE A,77B,2
  LPN A 
  SKIP 1
  LPC A 
  ENDM
'?SCP#DS  SPACE  4,10 
**        '?SCP#DS - DEFINE SYMBOL
* 
*         THIS IS AN INTERNAL MACRO USED ONLY 
*         BY SBK AND SCK . ASSEMBLY OF THIS 
*         MACRO WILL ONLY OCCUR WHEN THE PARAMETER
*         ON THE SBK OR SCK MACRO IS UNDEFINED .
          PURGMAC  '?SCP#DS 
  
  
'?SCP#DS  MACRO  A
          LOCAL  B
  RMT 
B EQU A 
  RMT 
'?SCP#BB  MICRO  1,,*B* 
  ENDM
SBK       SPACE  4,10 
**        SBK - SUBTRACT CONSTANT.
* 
*         GENERATES ADC, ADN, SBN OR NOTHING. 
  
  
          PURGMAC  SBK
  
 SBK      MACRO  A
  IF DEF,A,3
'?SCP#BB SET A
  ADK -'?SCP#BB 
  SKIP 2
  '?SCP#DS A
  ADC -"'?SCP#BB" 
  ENDM
SCK       SPACE  4,10 
**        SCK - SELECTIVE CLEAR CONSTANT. 
* 
*         GENERATES LPC, LPN, SCN OR NOTHING. 
  
  
          PURGMAC  SCK
  
 SCK      MACRO  A
  IF DEF,A,3
'?SCP#BB SET A
  LPK -'?SCP#BB 
  SKIP 2
  '?SCP#DS A
  LPK -"'?SCP#BB" 
  ENDM
UJK       SPACE  4,10 
**        UJK - UNCONDITIONAL JUMP. 
* 
*         UJK    M
  
          PURGMAC UJK 
  
UJK       MACRO  P
  IF DEF,P,5
'?SCP#LF SET P
  IFGT *-'?SCP#LF,-40B,3
  IFLT *-'?SCP#LF,40B,2 
  UJN P 
  SKIP 1
  LJM P 
  ENDM
ADDRA     SPACE  4,10 
**        ADDRA - CHECK IF (A) IS WITHIN FL 
* 
*         IF (A) IS WITHIN FL, ADD D.RA AND RETURN THE ABS. ADDR. 
* 
*         3 FORMS 
*         ADDRA  OK=TAG            TO TAG IF ABSOLUTE ADDRESS RETURNED
*         ADDRA  ER=TAG            TO TAG IF RELATIVE ADDRESS TOO BIG 
*         ADDRA  ER=0              NO TEST.  ADDRESS ASSUMED OK 
  
  
          PURGMAC  ADDRA
  
ADDRA     MACROE OK,ER
  RJM TFL 
  IFC NE,*OK**,1
  NJN OK
  IFC NE,*ER*0*,2 
  IFC NE,*ER**,2
  ZJN ER
  SKIP 2
  IFC EQ,*OK**,1
  ERR TEST NOT DEFINED
  ENDM
LDCA      SPACE  4,10 
**        LDCA - LOAD CENTRAL MEMORY ADDRESS
* 
*         LDCA   D
  
          PURGMAC  LDCA 
  
LDCA MACRO A,B
  LDD A 
  LPN 37B 
  SHN 12D 
  ADD A+1 
  ADDRA B 
  ENDM
 OVERFLOW SPACE  4,10 
**        OVERFLOW - TEST FOR PP MEMORY OVERFLOW. 
* 
*         THIS MACRO TESTS FOR PP MEMORY OVERFLOW WHEN LOADING OVERLAYS 
*         FROM MASS STORAGE.  PLACE THE MACRO AT THE END OF THE OVERLAY.
*         (THE TESTS ASSUME *PPR/PPL* WILL LOAD THE OVERLAY AND SKIP A
*         TRAILING EMPTY RECORD.) 
* 
*         OVERFLOW ORIGIN,END 
*                ORIGIN = ORIGIN OF OVERLAY (DEFAULT = *PPFW*). 
*                END = LWA+1 OF OVERLAY (DEFAULT = 10000B). 
* 
*         THE MACRO FORCES OUT LITERALS WITH A *USE OVERFLOW* CALL, 
*         AND THEN GENERATES 4 *ERRNG* CALLS -- 
*                1) BYTES LEFT AFTER LAST SECTOR (NUMBER OF BYTES BETWEE
*                   BETWEEN THE END OF THE LAST SECTOR AND *END*).
*                2) BYTES LEFT IN LAST SECTOR (NUMBER OF UNUSED BYTES 
*                   IN LAST SECTOR).
*                3) BYTES CAN BE ADDED TO OVERLAY (NUMBER OF BYTES THAT 
*                   THAT CAN BE ADDED TO OVERLAY WITHOUT OVERFLOW). 
*                4) SECTORS NEEDED FOR OVERLAY. 
  
 OVERFLOW MACRO O,E 
  USE OVERFLOW
.1 SET O PPFW 
.2 SET E 10000B 
.3 SET *-.1+5+477B
.4 SET .2-.1+5
          LIST   M
          ERRNG  .2-.1+5-.3/500B*500B  BYTES LEFT AFTER LAST SECTOR 
          ERRNG  .3/500B*500B-*+.1-5   BYTES LEFT IN LAST SECTOR
          ERRNG  .4/500B*500B-*+.1-5   BYTES CAN BE ADDED TO OVERLAY
          ERRNG  .3/500B               SECTORS NEEDED FOR OVERLAY 
          LIST   *
  USE * 
 OVERFLOW ENDM
NNEE      SPACE  4,10 
**        NNEE   NNEE - NOS NAD EST ENTRY 
* 
  
 C.ESTAT  EQU    0                 EST ATTRIBUTES 
 S.ESTDSO EQU    1                 EST DEV STATUS - ON/OFF BIT    (49)
 S.ESTDSI EQU    0                 EST DEV STATUS - IDLE/DOWN BIT (48)
 C.CWNL   EQU    0                 CONTROLWARE NOT LOADED DEFINITIONS 
 S.CWNL   EQU    9
 C.ESTNA  EQU    0                 NETLOG ACTIVE DEFINITIONS
 S.ESTNLG EQU    8
 C.ESTDA  EQU    0                 RHF ACTIVE DEFINITIONS 
 S.ESTRHF EQU    7
 C.ESTCH1 EQU    1                 EST CHANNEL NUMBER 
 C.ESTMNE EQU    3                 EST MNEMONIC 
 S.ESTON  EQU    11                ON/OFF BIT 
 C.ESTHUI EQU    4                 HARDWARE UNIQUE IDENTIFIER 
 NOS      ENDIF 
