*COMDECK AAMCMPMAC
 RF.1A    MACRO  BASE,OFST,LG,SBP 
          SA.'R? BASE+OFST
 IFN60    IFNE   LG,60             TEST IF 60 BIT FIELD 
 IF1BIT   IFEQ   LG,1              IF THIS IS A ONE BIT FIELD 
          IFNE   SBP,59,1          AND STARTING BIT POS IS NOT 59 
          LX.'R? 59-SBP            THEN SHIFT BIT INTO HIGH ORDER 
 IF1BIT   ELSE
          IFNE   LG,SBP+1,1 
          LX.'R? 59+LG-SBP         ELSE SHIFT VALUE INTO LOW END OF WD
 IF18B    IFEQ   LG,18             IF 18 BIT FIELD THEN 
          SX.'R? X.'R?             USE LOW 18 BITS BY SX
 IF18B    ELSE
          MX.'M? 60-LG
          BX.'R? -X.'M?*X.'R?      ELSE MASK VALUE OUT
          ENDIF 
          ENDM
 RF.AA    MACRO  BASE,FD,FREG,MREG
 'R?      SET    FREG 1 
 'M?      SET    MREG 0 
          RF.1A  BASE,"'_FD"
          ENDM
 SF.1A    MACRO  BASE,OFST,LG,SBP,VAL 
 CH1      MICRO  1,1,*VAL*                                               RPN1021
 IFX      IFC    EQ,*"CH1"*X*                                            RPN1021
 CH2      MICRO  2,1,*VAL*                                               RPN1021
          IFNE   'W?,"CH2",1         IF VALUE NOT IN STORE REG
          BX.'W? VAL               THEN MOVE IT TTHERE
 IFX      ELSE
          SX.'W? VAL               ELSE DO A SXW TO VAL 
 IFX      ENDIF 
 IFN60    IFNE   LG,60             IF THIS IS NOT 60 BIT FIELD
          SA.'R? BASE+OFST
          MX.'M? 60-LG
          IFNE   LG,SBP+1,1        IF FIELD IS NOT RIGHT JUSTIFIED
          LX.'R? 59-SBP+LG         THEN SHIFT FIELD INTO LOW END OF WORD
          BX.'R? X.'M?*X.'R?       CLEAR FIELD
          BX.'W? -X.'M?*X.'W?      ISOLATE FIELD
          BX.'W? X.'W?+X.'R?       OR THEM TOGETHER 
          IFNE   LG,SBP+1,1        IF FIELD NOT RIGHT JUSTIFIED FIELD 
          LX.'W? SBP-LG+1               SHIFT BACK INTO POSITION
          SA.'W? A.'R?             AND STORE IT BACK
 IFN60    ELSE
          SA.'W? BASE+OFST
 IFN60    ENDIF 
          ENDM
 SF.AA    MACRO  BASE,FD,VAL,FREG,SREG,MREG 
'R?       SET    FREG 1 
 'W?      SET    SREG 7 
 'M?      SET    MREG 0 
          SF.1A  BASE,"'_FD",VAL
          ENDM
