*DECK ELSUB 
          IDENT  ELSUB
          ENTRY  GETNELE
          ENTRY  PUTNELE
          SST 
*CALL COMCMAC 
 GETNELE  SPACE  4,10 
**        GETNELE - GET NAD ERROR LOG ENTRY.
* 
*         GETNELE MOVES A NAD ERROR LOG ENTRY FROM THE NAD GENERAL
*         DETAILED STATUS TABLE TO A FIXED-FORMAT BUFFER. 
* 
*         SYMPL DECLARATION: XREF 
*                              BEGIN
*                              PROC GETNELE;
*                              END
* 
*         SYMPL CALL:        GETNELE (DSTFWA,ORD,BUFF)
* 
*         ENTRY  A1 = FWA OF PARAMETER LIST. (SEE SETNEL) 
* 
*         EXIT   BUFF = 48/BYTES 0-2, 12/BYTE 3(UPPER), 
*                  +1 = 4/BYTE 3(LOWER), 48/BYTES 4-6, 8/BYTE 7(UPPER), 
*                  +2 = 8/BYTE 7(LOWER), 16/BYTE 8, 36/0. 
* 
*         USES   A - 1, 2, 3, 6.
*                B - 1, 3, 4, 5, 6. 
*                X - 0, 1, 2, 3, 6. 
* 
*         CALLS  SETNEL.
  
  
 GETNELE  SUBR
          SB1    1                 CONSTANT 1 
          RJ     SETNEL            SET ADDRESSES
  
 GETNEL1  BX6    -X0*X1            LOWER PART OF WORD 
          SA1    A1+B1             NEXT WORD FROM DST 
          BX3    X0*X1             UPPER PART OF WORD 
          BX6    X3+X6
          LX6    B3,X6             POSITION 
          SA6    B6                STORE WORD 
          SB4    B4-B5             DECREMENT BIT COUNT
          SB6    B6+B1
          GE     B4,B5,GETNEL1     IF NOT LAST WORD 
  
          SB7    B3+B4
          LE     B7,B5,GETNEL2     IF ALL BITS OBTAINED 
          BX6    -X0*X1            SAVE LOWER BITS
          SA1    A1+B1             NEXT WORD FROM DST 
          BX1    X0*X1             MASK UPPER BITS
          BX1    X1+X6             MERGE
  
 GETNEL2  MX0    1                 RESET MASK 
          SB4    B4-B1
          AX0    B4,X0             RESET MASK 
          LX1    B3,X1             POSITION 
          BX6    X0*X1             MASK LAST BITS 
          SA6    B6                STORE LAST WORD
          EQ     GETNELE
 PUTNELE  SPACE  4,10 
**        PUTNELE - PUT A NAD ERROR LOG ENTRY.
* 
*         PUTNELE MOVES A NAD ERROR LOG ENTRY FROM A FIXED-FORMAT 
*         BUFFER TO THE SPECIFIED LOCATION IN THE NAD GENERAL DETAILED
*         STATUS BUFFER.
* 
*         SYMPL DECLARATION: XREF 
*                              BEGIN
*                              PROC PUTNELE;
*                              END
* 
*         SYMPL CALL:        PUTNELE (DSTFWA,ORD,BUFF)
* 
*         ENTRY  A1 = FWA OF PARAMETER LIST. (SEE SETNEL) 
* 
*         EXIT   DSTFWA(ORD) REPLACED BY BUFF.
* 
*         USES   A - 1, 2, 3, 6.
*                B - 1, 3, 4, 5, 6. 
*                X - 0, 1, 2, 3, 6. 
* 
*         CALLS  SETNEL.
  
  
 PUTNELE  SUBR
          SB1    1                 CONSTANT 1 
          RJ     SETNEL            SET ADDRESSES
          SA3    X3                1ST NEW WORD 
          SB6    A1                ADDR OF DST WORD 
          BX1    X0*X1             MASK OLD UPPER 
          SB7    B5-B3             SHIFT COUNT
  
 PUTNEL1  LX3    B7,X3             POSITION NEW WORD
          BX6    -X0*X3            MASK NEW LOWER 
          BX6    X6+X1             MERGE OLD AND NEW
          SA6    B6                STORE
          SB4    B4-B5             UPDATE BIT COUNT 
          BX1    X0*X3             SAVE PREVIOUS UPPER
          SA3    A3+B1             NEXT NEW WORD
          SB6    B6+B1             NEXT DST WORD
          GE     B4,B5,PUTNEL1     IF NOT LAST NEW WORD 
  
          LX3    B7,X3             POSITION NEW WORD
          SB4    B3+B4
          BX6    -X0*X3            MASK LOWER 
          BX6    X6+X1             MERGE UPPER AND LOWER
          LE     B4,B5,PUTNEL2     IF ALL NEW BITS INCLUDED 
          SA6    B6                STORE
          SB4    B4-B5             REMAINING BITS 
          BX6    X0*X3             NEW UPPER
          SB6    B6+B1             NEXT DST WORD
  
 PUTNEL2  MX0    1                 RESET MASK FOR LAST WORD 
          SB4    B4-B1
          AX0    B4,X0
          SA1    B6                LAST DST WORD
          BX1    -X0*X1            OLD LOWER
          BX6    X6+X1             MERGE NEW AND OLD
          SA6    B6                STORE LAST WORD
          EQ     PUTNELE           RETURN 
 SETNEL   SPACE  4,10 
**        SETNEL - SET ADDRESSES FOR GETNELE AND PUTNELE. 
* 
*         ENTRY  A1 = FWA OF PARAMETER LIST.
*                    +0 (FWA OF NAD DST). 
*                    +1 (ORDINAL OF NAD ERROR LOG ENTRY (0 - 20)).
*                    +2 (FWA OF FIXED-FORMAT BUFFER). 
*                B1 = 1.
* 
*         EXIT   A1/X1 = ADDR/WORD CONTAINING 1ST BYTE OF ERROR LOG.
*                X3/B6 = FWA OF FIXED-FORMAT BUFFER.
*                X4/B5 = 60.
*                X0 = MASK FOR 1ST WORD (MX0 (B3)). 
*                B3 = POSITION OF BYTE IN WORD (0 - 56).
*                B4 = NUMBER OF BITS IN ERROR LOG ENTRY.
* 
*         USES   A - 1, 2, 3. 
*                B - 2, 3, 4. 
*                X - 0, 1, 2, 3, 4, 5, 6. 
  
 O.NEL1   EQU    24                ORDINAL OF 1ST NAD ERROR LOG ENTRY 
 L.NELE   EQU    9                 LENGTH OF NAD ERROR LOG ENTRY
  
 SETNEL   SUBR
          SA2    A1+B1             (ORDINAL)
          SA3    A2+B1             (FWA FIXED FORMAT BUFFER)
          SX6    L.NELE            LENGTH OF NAD ERROR LOG ENTRY
          SA2    X2                ORDINAL OF NAD ERROR LOG ENTRY 
          IX2    X2*X6             ORDINAL*LENGTH 
          SX2    X2+O.NEL1         ORDINAL OF ENTRY WITHIN DST
          SA1    X1                FWA OF NAD DST 
          SX6    60 
          LX2    4                 ORD*16 (BITS PRECEDING ENTRY)
          SB4    X2 
          BX4    X6                (60) 
          IX5    X2/X6             ORD*16/60 (WORD OFFSET)
          IX1    X1+X5             FWA + OFFSET 
          SX2    B4                RESTORE ORD*16 
          IX5    X5*X4             OFFSET*60 (BIT COUNT)
          IX5    X5-X2             BITS PRECEDING ENTRY IN WORD 
          SB4    L.NELE*16         BITS IN ENTRY
          SA1    X1                GET FIRST DST WORD 
          SA3    X3                GET FWA OF FIXED-FORMAT BUFFER 
          SB3    X5 
          SB5    X4                (60) 
          MX0    0                 MASK 
          SB6    X3                FWA OF FIXED FORMAT BUFFER 
          ZR     X5,SETNEL         IF NO SHIFT NEEDED 
          SB2    B3+B1
          MX0    1                 SET MASK 
          SB3    -B3               SHIFT COUNT (4 - 56) 
          LX0    B2,X0
          EQ     SETNEL            RETURN 
  
          END 
