/IOSYS.SB, PAGE 1 OF 6. (8/13/71 - C.M.MOORE, RICE U., HOUSTON) / /THIS FILE CONTAINS ENTRY POINTS: LSYS,RSYS,MSYS,WSYS,CSYS,LINK. / /SEE THE LISTING OF FILE 'XPLAIN.IO' FOR A DETAILED EXPLANATION /OF HOW TO USE THESE ROUTINES. / /THE BINARY FILE OF THIS PACKAGE (IOSYS.RL) OCCUPIES 2 PAGES OF /CORE, AND MUST NOT BE LOADED INTO LOCS 0000 TO 1777 OF FIELD 1. /THIS IS THE USR OVERLAY AREA. IF LOADED INTO THIS AREA, THESE /ROUTINES WILL TYPE FATAL MONITOR ERROR 4 WHEN CALLED. / OPDEF RDF 6214 OPDEF CIF0 6202 OPDEF CIF10 6212 OPDEF TADI 1400 OPDEF DCAI 3400 OPDEF JMSI 4400 OPDEF JMPI 5400 / ABSYM TEM 7 /PAGE 0 POINTER / LAP /DISABLE AUTOMATIC PAGING TO CONSERVE SPACE / P7700, 7700 /POINTS TO USR. ***MUST BE 1ST LOC ON PAGE*** IFILEP, INFILE P77, 77 P40, 40 M40, -40 / /ADDRES LOADS ARG ADDRESS FROM LSYS TO TEM ADDRES, 0 CDF, HLT /CHANGE TO DF OF CALLING PROG TADI LSYS# DCA CDFARG INC LSYS# TADI LSYS# DCA TEM INC LSYS# JMP I ADDRES /CHANGE TO CURRENT DF / /ENTRYP MOVES THE ENTRY POINT POINTERS TO LSYS, THEN FETCHES 1ST ARG. ENTRYP, 0 CLA CMA CLL RTL /SET AC=-3 TAD ENTRYP DCA FETCH TADI FETCH INC FETCH DCA CDF CLA CLL CML RTL /SET AC=2 TAD CDF DCA JBACK /SET UP FOR QUICK RETURN TADI FETCH DCA LSYS# JMS ADDRES JMS FETCH JMPI ENTRYP / /IOSYS.SB, PAGE 2 OF 6. / /FETCH LOADS NEXT ARG AS SPECIFIED BY TEM FETCH, 0 CDFARG, HLT /CHANGE TO DF OF ARG TADI TEM INC TEM JMP I FETCH /CHANGE TO CURRENT DF / /AMPS CONVERTS BLANKS(40) TO AMPERSANDS(00) IN BOTH CHARACTERS /OF THE WORD IN THE AC. AMPS, 0 DCA INBNUM TAD INBNUM AND P77 TAD M40 SZA TAD P40 DCA LENTH TAD INBNUM P200, AND P7700 CLL RAL SZA RAR TAD LENTH JMPI AMPS / /SUBROUTINE LINK(IBLK1) ENTRY LINK LINK, BLOCK 2 JMS ENTRYP SPA JMP BADDF /NEGATIVE STARTING BLOCK # FOR .SV FILE DCA LNKBLK CIF10 JMSI P7700 6 /REQUEST 6 LNKBLK, 0 /STARTING BLOCK # / /TYPE FATAL ERROR MESSAGE. (NEGATIVE IBLK1 FOR LINK, I/O ERROR IN /WSYS OR RSYS.) /MESSAGE WILL READ: 'FILE ERROR AT LOC NNNNN' BADDF, CALL 1,ERROR ARG FILEMS / /IOSYS.SB, PAGE 3 OF 6. / /FUNCTION LSYS(NAME,LENTH) ENTRY LSYS FILEMS, TEXT /FILE/ LSYS, BLOCK 2 JMS ENTRYP /GET 1ST WORD OF FILE NAME JMS AMPS DCAI IFILEP CLA CMA CLL RTL/SET AC=-3 DCA ADDRES TAD IFILEP DCA ENTRYP INGF, JMS FETCH /LOOP TO GET REMAINDER OF 4-WORD FILE NAME JMS AMPS INC ENTRYP DCAI ENTRYP ISZ ADDRES JMP INGF JMS ADDRES /GET ADDRESS OF LENTH /LOOK UP PERMANENT FILE TAD IFILEP /POINTS TO INPUT FILE NAME DCA INBNUM CIF10 CLA IAC /PYS DEVICE # = 1. JMSI P7700 2 /REQUEST 2 INBNUM, 0 /WILL BE OVERLAID WITH STARTING BLOCK # LENTH, 0 /NEGATIVE OF FILE LENGTH IN BLOCKS JMP INERR /FILE NOT FOUND SKP STORE, DCA INBNUM TAD CDFARG DCA CDFAR2 TAD LENTH CIA CDFAR2, HLT /CHANGE TO DF OF ARG DCAI TEM /STORE LENGTH OF FILE IN BLOCKS TAD INBNUM /LOAD AC WITH STARTING BLOCK # JBACK, HLT /CHANGE TO DF&IF OF CALLING PROG JMPI LSYS# /QUICK RETURN / /ERROR. SET BLOCK # = -1. INERR, CLA CMA AAPAG1, JMP STORE / /END OF 1ST CORE PAGE OF PROGRAM. / /IOSYS.SB, PAGE 4 OF 6. / CPAGE 200 /START OF 2ND CORE PAGE OF PROGRAMS. PP70, 70 /***MUST BE 1ST LOC ON PAGE*** PP7700, 7700 PP7607, 7607 /SYS DEVICE HANDLER ENTRY POINT PP40, 40 PP37, 37 INERRP, INERR BADDFP, BADDF LENTHP, LENTH STOREP, STORE AMPSP, AMPS ENTP, ENTRYP FETCHP, FETCH ADRESP, ADDRES JBACKP, JBACK OFILEP, OUFILE CDFARP, CDFARG / /SUBROUTINE CSYS(LENTH) ENTRY CSYS CSYS, BLOCK 2 JMSI ENTP DCA CBLKS TAD OFILEP /POINTS TO OUTPUT FILE NAME DCA CNAME /CLOSE OUTPUT FILE CLA IAC /SYS DEVICE # = 1. CIF10 JMSI PP7700 4 /REQUEST 4 CNAME, 0 /POINTER TO FILE NAME CBLKS, 0 /LENGTH IN BLOCKS NOP /FILE NOT FOUND JMPI JBACKP / /IOSYS.SB, PAGE 5 OF 6. / /FUNCTION MSYS(NAME,LMAX) ENTRY MSYS OUFILE, BLOCK 2 /NEXT 4 LOCS HOLD OUTPUT FILE NAME MSYS, BLOCK 2 JMSI ENTP JMSI AMPSP DCAI OFILEP CLA CMA CLL RTL /SET AC=-3 DCA NBLKS TAD OFILEPP DCA LOC1 OUGF, JMSI FETCHP JMSI AMPSP INC LOC1 DCAI LOC1 ISZ NBLKS JMP OUGF JMSI ADRESP /ENTER OUTPUT FILE TAD OFILEP /POINTS TO OUTPUT FILE NAME DCA OUBNUM CLA IAC /SYS DEVICE # = 1. CIF10 JMSI PP7700 3 /REQUEST 3 OUBNUM, 0 /WILL BE OVERLAID WITH STARTING BLOCK # LMAX, 0 /NEGATIVE OF MAX AVAILABLE # OF BLOCKS JMPI INERRP /TENTATIVE OUTPUT FILE ALREADY EXISTS. TAD LMAX DCAI LENTHP TAD OUBNUM JMPI STOREP / /IOSYS.SB, PAGE 6 OF 6. / /SUBROUTINE RSYS(NUM,IBLK1,LOC1) ENTRY RSYS INFILE, BLOCK 2 /NEXT 4 LOCS HOLD INPUT FILE NAME RSYS, BLOCK 2 JMSI ENTP /GET # OF PAGES CLL SPA /CHECK FOR NEGATIVE # OF PAGES CML CMA IAC AND PP37 SZL CHKDEV, TAD PP40 /SET UP TO WRITE INSTEAD OF READ CLL RTL RTL RTL DCA NBLKS JMSI ADRESP JMSI FETCHP /GET STARTING BLOCK # DCA IBLK1 JMSI ADRESP /GET ADDRESS OF LOC1 TADI CDFARP /GET FIELD OF LOC1 PP200, AND PP70 TAD NBLKS /SET UP TO READ/WRITE NUM PAGES DCA NBLKS TAD TEM /GET ADDRESS OF LOC1 DCA LOC1 CIF0 JMSI PP7607 /JUMP TO SYS HANDLER NBLKS, 0 /# OF PAGES LOC1, 0 /BUFFER ADDRESS IBLK1, 0 /STARTING BLOCK # JMPI BADDFP /FATAL I/O ERROR JMPI JBACKP / /SUBROUTINE WSYS(NUM,IBLK1,LOC1) ENTRY WSYS WSYS, BLOCK 2 JMSI ENTP AND PP37 AAPAG2, JMP CHKDEV END