ASMB,R,Q,C
*     NAME:   REIO
*     SOURCE: 92070-18212 
*     RELOC:  92070-1X212 
*     PGMR:   HLC 
* 
* 
*  **************************************************************** 
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979.  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 REIO,7  92070-1X212  REV.1941  800109 
      ENT REIO,ZEIO 
* 
      EXT .ENTR,EXEC,$LUTA
* 
* 
A     EQU 0 
B     EQU 1 
* 
*     THIS ROUTINE IS NOT APPENDED TO A USER PROGRAM
*       IF THE RTE-L SYSTEM CONTAINS THE DUMMY 'SWAP' 
*       MODULE (SWA..) OR THE DUMMY 'CLASS' MODULE (CLA..)
*       OR THE DUMMY 'SAM' MODULE (SAM..).
* 
* 
ZEIO  EQU * 
REIO  NOP           TRUE ENTRY POINT
      LDA DZERO 
      STA BUFF      SET UP OPTIONAL PARAMETER DEFAULTS
      STA CNT 
      STA ZBUF
      STA ZCNT
      STA KEY 
      LDA REIO
      STA REIO. 
      JMP REIO.+1 
* 
* 
ZERO  DEC 0 
* 
CODE  NOP           EXEC REQUEST CODE 
LU    NOP           LOGICAL UNIT NUMBER 
BUFF  NOP           BUFFER ADDRESS
CNT   NOP           BUFFER LENGTH 
ZBUF  NOP           Z-BUFFER ADDRESS
ZCNT  NOP           Z-BUFFER COUNT
CLASS NOP           DUMMY PARAMETER 
CODE2 NOP           DUMMY PARAMETER 
KEY   NOP           LU LOCK PASSWORD
* 
REIO. NOP           PSEUDO ENTRY POINT
      JSB .ENTR     GET PARAMETER ADDRESSES 
      DEF CODE
      LDB CODE,I    REQUEST CODE
      CLA 
      STA CLASS     CLEAR PREVIOUS CLASS NUMBER 
      SSB 
      LDA RSS 
      STA OPTN      SET SWITCHES FOR NO-ABORT OPTION
      STA OPTN2 
      ADB =D16      CONVERT STANDARD CODE TO CLASS I/O CODE 
      STB REIO
      ELB,RBR       PUT NO-ABORT BIT IN E-REG 
      LDA =D21
      RAL,ERA       ADD TO CLASS 'GET' REQUEST CODE 
      STA CODE2 
      RBR,SLB,RBL   SKIP IF READ REQUEST
      JMP BUFR?     DO NORMAL I/O IF BUFFERED DEVICE
* 
* 
CLSIO JSB EXEC      INITIATE CLASS REQUEST
      DEF OPTN
      DEF REIO      CLASS I/O READ OR WRITE 
      DEF LU,I
      DEF BUFF,I
      DEF CNT,I 
      DEF ZBUF,I    PROMPT BUFFER 
      DEF ZCNT,I    PROMPT LENGTH 
      DEF CLASS     CLASS NUMBER
DZERO DEF ZERO      DUMMY USER VARIABLE 
      DEF KEY,I     LU LOCK PASSWORD
OPTN  NOP           RSS IF NO-ABORT 
RSS   RSS 
      JMP REIO.,I    NO-ABORT BIT SET, ERROR RETURN 
* 
* 
WAIT  JSB EXEC      WAIT FOR I/O TO COMPLETE
      DEF RTN2
      DEF CODE2     CLASS I/O GET 
      DEF CLASS 
      DEF BUFF,I
      DEF CNT,I 
RTN2  JMP REIO.,I    NORMAL EXIT
      ISZ REIO.      NO-ABORT OPTION NORMAL EXIT
      JMP REIO.,I 
* 
* 
BUFR? LDA LU,I      CHECK FOR BUFFERED DEVICE 
      AND =B77
      ADA =D-1
      ADA $LUTA 
      LDA A,I       DVT ADDRESS 
      ADA =D7 
      LDA A,I       BUFFERING BIT 
      SSA,RSS 
      JMP CNTR?     NOT BUFFERED, DO CLASS I/O
* 
      JSB EXEC      STANDARD I/O
      DEF RTN3
      DEF CODE,I    WRITE OR CONTROL
      DEF LU,I      LOGICAL UNIT
      DEF BUFF,I    BUFFER ADDRESS
      DEF CNT,I     LENGTH
      DEF ZBUF,I    OPTIONAL BUFFER 
      DEF ZCNT,I    LENGTH
      DEF ZERO      DUMMY PARAMETER 
      DEF ZERO      DUMMY PARAMETER 
      DEF KEY,I     LU LOCK PASSWORD
RTN3  JMP REIO.,I 
      ISZ REIO. 
      JMP REIO.,I 
* 
* 
CNTR? SLB,RSS       CONTROL OR WRITE REQUEST? 
      JMP CLSIO     WRITE 
* 
      JSB EXEC      CLASS CONTROL 
      DEF OPTN2 
      DEF REIO      CONTROL CODE
      DEF LU,I      LU
      DEF BUFF,I    PARM1 
      DEF CLASS     CLASS NUMBER
      DEF CNT,I     PARM2 
      DEF ZBUF,I    PARM3 
      DEF ZCNT,I    PARM4 
      DEF ZERO
      DEF KEY,I     LOCK PASSWORD 
OPTN2 NOP           RSS IF NO-ABORT 
      JMP WAIT      NORMAL COMPLETION 
      JMP REIO.,I   ABORT ERROR 
* 
      END 
                                