ASMB,R,L,C,Q   ** SCB READ\WRITE MODULE **
      HED SCB READ \ WRITE MODULE 
*     NAME:   $SMVE 
*     SOURCE: 92067-18483 
*     RELOC:  PART OF 92067-16268 
*     PGMR:   G.L.M.
* 
*  ***************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978.  ALL RIGHTS     *
*  * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,      *
*  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT*
*  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.       *
*  ***************************************************************
* 
      NAM $SMVE,6 92067-1X483 REV.2013 800129 
* 
* 
********************************************************************
* 
* 
********************************************************************
* 
*   $SMVE ENTRY POINT NAMES 
* 
      ENT $SMVE,ISMVE 
* 
*   $SMVE EXTERNAL REFERENCE NAMES
* 
      EXT .ENTR,$LIBR,$LIBX 
* 
********************************************************************
* 
*  NOTE: THIS ROUTINE IS PRIVLEGED FOR READS AND WRITES SO
*        IT COULD OPERATE IN THE MEMORY RESIDENT LIBRARY. 
*        NOTE THAT READS WOULD OTHERWISE BE DONE NON-PRIVLEGED. 
* 
* 
* 
* 
*  PURPOSE:  TO READ OR WRITE FROM/TO A SESSION CONTROL BLOCK WHICH 
*            MIGHT NOT BE IN SAM. 
* 
* 
*  CALLING SEQUENCE:  READ ONLY -- ISMVE -- 
* 
*                     CALL ISMVE(IADDR,IOFF,IBUF,LEN) 
* 
*  WHERE:             IADDR= LOCATION TO READ FROM. 
*                     IOFF = OFFSET FOR ABOVE LOCATION. 
*                     IBUF = LOCATION TO READ INTO. 
*                     LEN  = NUMBER OF WORDS TO TRANSFER. 
* 
* 
*                     READ OR WRITE -- $ISMVE --
* 
*                     JSB $SMVE 
*                     DEF RTN 
*                     DEF RW
*                     DEF IADDR 
*                     DEF IOFF
*                     DEF IBUF
*                     DEF LEN 
* 
* 
* 
*  WHERE:             RW=1=READ/2=WRITE 
*                     IADDR=READ/WRITE  FROM\TO HERE
*                     IOFF =SAME AS ABOVE 
*                     IBUF =USER BUFFER TO READ TO/ WRITE FROM
*                     LEN  =SAME AS ABOVE 
* 
* 
      SKP 
ISMVE NOP 
      JSB $LIBR 
      NOP 
      LDA DADDR     FETCH NEW ADDR FOR .ENTR
      STA WHR 
      LDA DF1       DETCH ADDRESS OF .1 
      STA RW        FORCE READ ONLY 
      LDA ISMVE 
      JMP SM.1
* 
$SMVE NOP 
      JSB $LIBR 
      NOP 
      LDA DRW       FETCH ADDR OF FULL PARM LIST
      STA WHR 
      LDA $SMVE 
SM.1  STA DENT
      JMP DENT+1
      SPC 5 
DADDR DEF ADDR
DRW   DEF RW
DF1   DEF .1
.1    DEC 1 
RW    NOP 
ADDR  NOP 
OFF   NOP 
BUF   NOP 
NUM   DEF ZERO
* 
DENT  NOP 
      JSB .ENTR     FETCH CALL
WHR   DEF RW            PARAMETERS
* 
      LDA NUM       MUST HAVE FIVE
      CPA DZERO         PARAMETERS OR 
      JMP DENT,I           REJECT THE CALL
* 
* 
*   THIS IS WHERE ANY TABLE PARTITION WORK MUST BE DONE 
* 
* 
      STX ISMVE      SAVE XREG
      LDA ADDR,I    FETCH SCB ADDRESS 
      ADA OFF,I     ADD OFFSET
* 
      LDB RW,I      FETCH READ \ WRITE CODE 
      SLB           IF A READ REQUEST 
      JMP READ         GO DO IT 
* 
*  WRITE REQUEST
* 
* 
* 
* 
      STA TO        SAVE SCB ADDR AS "TO" ADDR
* 
      LDA BUF       FETCH "FROM" ADDRESS
      LDB TO        FETCH "TO" ADDRESS
      LDX NUM,I     FETCH MOVE LENGTH 
* 
      MWI           MOVE WORDS INTO ALT MAP 
* 
      JMP EXIT
* 
* 
READ  LDB BUF       FETCH "FROM" ADDRESS
      LDX NUM,I     FETCH LENGTH
* 
      MWF           MOVE WORDS FROM ALT MAP 
* 
EXIT  LDA DZERO 
      STA NUM       RESET FOR PARM CHECK
      LDX ISMVE     RESTORE X REG.
      JSB $LIBX    EXIT 
      DEF DENT
* 
TO    NOP 
DZERO DEF ZERO
ZERO  NOP 
      END 
                                                                                                                                                                                                                    