*DECK DB$IO 
          IDENT  DB$IO
          TITLE  DB$IO  -  I/O MACRO INTERFACES 
          COMMENT  I/O MACRO INTERFACES 
          IPARAMS 
          DATA   10L  DB$IO 
*#
* *   DB$IOBS--BACKSPACE 1 PRU GIVEN FET         PAGE  1
* *   C O GIMBER                                 9/30/76
* 
* DC  PURPOSE 
* 
*     BACKSPACE QRF 1 PRU.
* 
* DC  ENTRY CONDITIONS
* 
*     PARAMETERS
* 
*     LOC(FET)
*#
  
  
          ENTRY  DB$IOBS
DB$IOBS   EQ   *+1S17 
          SA1    X1          (X1) = ADDRESS FET 
          BKSPRU  X1,1
          EQ   DB$IOBS
          EJECT 
*#
* *   DB$IOFT--FIT FOR QRF                       PAGE  1
* *   C O GIMBER                                 9/30/76
* 
* DC  PURPOSE 
* 
*     DEFINE FIT FOR QUICK RECOVERY FILE. 
*#
          ENTRY  DB$IOFT
DB$IOFT   FILEB  0,102B,EPR 
          SPACE  3,10 
*CALL IOLIST
          EJECT 
*#
* *   DB$IORD--READ FILE GIVEN FET               PAGE  1
* *   C O GIMBER                                 9/10/76
* 
* DC   PURPOSE
* 
*     READ A FILE VIA CIO WITHOUT RECALL. 
*     LEAVES FILE POSITIONED AT END OF NEXT EOR.
* 
* DC   ENTRY CONDITIONS 
* 
*     PARAMETERS
* 
*     LOC(FET)
*     LOC(WSA)
*     NUMBER OF WORDS TO READ 
* 
* DC  DESCRIPTION 
* 
*     SET FIRST, IN, OUT, LIMIT FIELDS IN FET.
*     ISSUE CIO READSKP MACRO WITHOUT RECALL. 
*     RETURN. 
*#
          ENTRY  DB$IORD
DB$IORD   EQ   *+1S17 
          SB1    1
          SA2    A1+B1
          SA3    A2+B1
          MX0    42          (X0) = MASK
          SA1    X1          (X1) = ADDRESS FET 
          SA2    X2          (X2) = ADDRESS WSA 
          SA3    X3          (X3) = NUMBER WORDS TO READ
                             FIRST = WSA
          SA4    X1+B1       (X4) = FIRST WORD FROM FET 
          BX4    X0*X4
          IX6    X2+X4       ADD FIRST TO FIRST WORD
          SA6    A4          STORE FIRST WORD 
          BX7    X2 
          SA7    A6+B1       SET IN TO WSA
          BX6    X2 
          SA6    A7+B1       SET OUT TO WSA 
          IX4    X2+X3
          SX7    X4+B1       LIMIT = WSA+WORDS+1
          SA5    A6+B1       (X5) = LIMIT WORD FROM FET 
          BX5    X0*X5
          IX7    X7+X5       ADD LIMIT TO LIMIT WORD
          SA7    A5          STORE LIMIT WORD 
          READSKP  X1 
          EQ   DB$IORD
          EJECT 
*#
* *   DB$IORW--REWIND FILE GIVEN FET             PAGE  1
* *   C O GIMBER                                 9/10/76
* 
* DC  PURPOSE 
* 
*     REWIND A FILE VIA CIO WITHOUT RECALL
* 
* DC  ENTRY CONDITIONS
* 
*     PARAMETERS
* 
*     LOC(FET)
* 
* DC  DESCRIPTION 
* 
*     SET WSA = FET TO BE SURE IT IS WITHIN CURRENT FIELD LENGTH
*     ISSUE CIO REWIND MACRO WITHOUT RECALL.
*     RETURN. 
*#
          ENTRY  DB$IORW
DB$IORW   EQ   *+1S17 
          SA1    X1          (X1) = ADDRESS OF FET
          SB1    1
          MX0    42 
          SA2    X1+B1             SET FIRST = FET
          SA3    A2+B1             SET IN = FET 
          BX2    X2*X0
          BX3    X3*X0
          IX6    X2+X1
          IX7    X3+X1
          SA6    A2 
          SA7    A3 
          SA2    A3+B1             SET OUT = FET + 1
          SA3    A2+B1             SET LIMIT = FET + 2
          BX2    X2*X0
          BX3    X3*X0
          SX0    X1+B1
          IX6    X2+X0
          IX7    X3+X0
          SA6    A2 
          SX7    X7+B1
          SA7    A3 
          REWIND X1 
          EQ   DB$IORW
          EJECT 
*#
* *   DB$IOWR--WRITE RECORD GIVEN FET            PAGE  1
* *   C O GIMBER                                 9/10/76
* 
* DC  PURPOSE 
* 
*     REWRITE RECORD VIA CIO WITHOUT RECALL 
* 
* DC  ENTRY CONDITIONS
* 
*     PARAMETERS
* 
*     LOC(FET)
*     LOC(WSA)
*     NUMBER WORDS TO WRITE 
* 
* DC  DESCRIPTION 
* 
*     SET FIRST, IN, OUT, LIMIT FIELDS IN FET.
*     ISSUE CIO WRITER MACRO WITHOUT RECALL.
*     RETURN. 
*#
          LIST   F
          ENTRY  DB$IOWR
DB$IOWR   EQ   *+1S17 
          SB1    1
          SA2    A1+B1
          SA3    A2+B1
          MX0    42          (X0) = MASK
          SA1    X1          (X1) = ADDRESS FET 
          SA2    X2          (X2) = ADDRESS WSA 
          SA3    X3          (X3) = NUMBER WORDS
                             FIRST = WSA
          SA4    X1+B1       (X4) = FIRST WORD FROM FET 
          BX4    X0*X4
          IX6    X2+X4       ADD FIRST TO FIRST WORD
          SA6    A4          STORE FIRST WORD 
          IX7    X2+X3
          SA7    A6+B1       SET IN TO WSA+WORDS
          SX6    X2 
          SA6    A7+B1       SET OUT TO WSA 
          SX7    X7+B1       LIMIT = WSA+WORDS+1
          SA5    A6+B1       (X5) = LIMIT WORD FROM FET 
          BX5    X0*X5
          IX7    X7+X5       ADD LIMIT TO LIMIT WORD
          SA7    A5          STORE LIMIT WORD 
          REWRITER X1 
          EQ   DB$IOWR
          END                DB$IO
