File IOSYS.SB (8k SABR macro assembler source file)

Directory of image this file is from
This file as a plain text file

/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



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search