*COMDECK PNSTORE                                                              31
******************************
*                            *
*         PNSTORE            *
*   STORE FIELD VALUE        *
*                            *
******************************
*              NON-RECURSIVE
*              INTERRUPTIBLE
************************************************************
*                                                          *
**OVERVIEW- PNSTORE IS CALLED FROM PNCONFIGURE TO STORE    *
*           A GIVEN VALUE INTO THE PROPER PLACE IN THE     *
*           CONTROL BLOCK BEING CONFIGURED.  THE PREVIOUS  *
*           CONTENTS OF THE FIELD ARE RETURNED TO          *
*           PNCONFIGURE.                                   *
*                                                          *
**INPUT- FIELD DESCRIPTOR TABLE ENTRY CONTAINING FIELD BIT *
*        START, FIELD LENGTH MINUS ONE AND FIELD DISPLACE- *
*        MENT IN CONTROL BLOCK.  THE FIELD VALUE TO STORE  *
*        IS THE SECOND PARAMETER.                          *
*                                                          *
**OUTPUT- THE FIELD VALUE IS STORED AND THE PREVIOUS       *
*         FIELD CONTENTS ARE RETURNED IN THE SECOND        *
*         PARAMETER.                                       *
*                                                          *
************************************************************
         NAM   PNSTORE
         ENT   PNSTORE
* 
         EXT   D0CB          CONTROL BLOCK ADDRESS
* 
PNSTORE   0      0
          LDQ*   PNSTORE
          LDA*   (Z),Q       GET ADDRESSES OF PARAMETERS
          STA*   PARM1       AND SAVE LOCALLY 
          LDA-   1,Q
          STA*   PARM2
          LDA-   2,Q
          STA*   PARM3
          INQ    3
          STQ*   PNSTORE
          LDA*   (PARM1)
          AND*   HFF7F       MASK OFF X25 EXTENSION BIT 
          SAN    PNS1        SKIP IF VALID VALUE
          JMP*   (PNSTORE)   EXIT 
          SPC    1
PNS1      STA*   XLFA 
          STA*   XSFA 
          LDQ+   D0CB 
          LDA*   (PARM3)
          SAZ    PNS2 
          SPC    1
          LDA*   (PARM2)
          NUM    $052D
XSFA      NUM    0
          JMP*   (PNSTORE)
          SPC    1
PNS2      NUM    $052C
XLFA      NUM    0
          STA*   (PARM2)
          JMP*   (PNSTORE)
          BZS    Z(1) 
HFF7F     NUM    $FF7F
          BZS    PARM1(1) 
          BZS    PARM2(1) 
          BZS    PARM3(1) 
          END 
