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

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

/INFILE.SB, PAGE 1 OF 4.	(8/12/71 - C.M.MOORE, RICE U., HOUSTON)
/
/THIS FILE CONTAINS ENTRY POINTS: LFILE,RFILE.
/
/SEE THE LISTING OF FILE 'XPLAIN.IO' FOR A DETAILED EXPLANATION
/OF HOW TO USE THESE ROUTINES.
/
/THE BINARY FILE OF THIS PACKAGE (INFILE.RL) OCCUPIES 2 PAGES OF
/CORE, AND MUST BE LOADED INTO FIELD 0.  IF NOT, THE ROUTINES WILL
/TYPE A FATAL ERROR MESSAGE WHEN CALLED.
/
OPDEF RDF   6214
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
/
/2-PAGE DEVICE HANDLERS CAN BE USED IF AN EXTRA PAGE OF CORE IS
/ALLOCATED AS FOLLOWS:
/	DUMMY,	0 /FORCES ISTART TO 2ND LOC ON CORE PAGE
/	ISTART,	BLOCK 177
/		BLOCK 200 /2ND PAGE
/
/WHEN ALLOCATING 2 PAGES FOR A DEVICE HANDLER, THE DEVIC@ AD@RERSS IS
/PLACED AT THE 2ND LOCATION ON THE 1ST PAGE IN ORDER TO INDICATE TO
/THE USR THAT 2 PAGES ARE AVAILABLE.  ATTEMPTING TO LOAD A 2-PAGE
/HANDLER WHEN ONLY 1 PAGE IS AVAILABLE CAUSES THE USR TO INDICATE
/THAT THE DEVICE CANNOT BE FOUND. (LFILE WILL RETURN WITH THE
/STARTING BLOCK NUMBER = -1.)
/
/
/CORE ALLOCATION FOR DEVICE HANDLERS.
/
ISTART,	BLOCK 177 /INPUT HANDLER ADDRESS: MUST BE 1ST LOC ON PAGE IF 1
		  /PAGE ALLOCATED, 2ND LOC ON PAGE IF 2 PAGES ALLOCATED.
/

/INFILE.SB, PAGE 2 OF 4. / /START OF 1ST PAGE OF PROGRAM. CPAGE 200 P70, 70 /***MUST BE 1ST LOC ON PAGE*** P7700, 7700 /POINTS TO USR. INPNT, ISTART IFILEP, INFILE P37, 37 M4, -4 / /ADDRES LOADS ARG ADDRESS FROM LFILE TO TEM ADDRES, 0 CDF, HLT /CHANGE TO DF OF CALLING PROG TADI LFILE# DCA CDFARG INC LFILE# TADI LFILE# DCA TEM INC LFILE# JMP I ADDRES /CHANGE TO CURRENT DF / /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 / /ENTRYP SETS UP CDF & CIF CHANGES, THEN FETCHES 1ST ARG. ENTRYP, 0 DCA CDF CLA CLL CML RTL /SET AC=2 TAD CDF DCA JBACK /SET UP FOR QUICK RETURN JMS ADDRES RDF /GET CURRENT DF M40, SZA SMA CLA JMP BADDF /THIS PROG IS NOT LOADED INTO FIELD 0!!! JMS FETCH JMPI ENTRYP / /TYPE FATAL ERROR MESSAGE. (PROG IN WRONG FIELD, I/O ERROR IN RFILE.) /MESSAGE WILL READ: 'FILE ERROR AT LOC NNNNN' BADDF, CALL 1,ERROR ARG FILEMS / /FUNCTION LFILE(NDEV,NAME,LENTH) ENTRY LFILE FILEMS, TEXT /FILE/ LFILE, BLOCK 2 CLA TAD LFILE JMS ENTRYP /GET 1ST WORD OF DEVICE NAME DCA INDEV JMS FETCH /GET 2ND WORD OF DEVICE NAME DCA INDEV# JMS ADDRES /GET 2ND ARG ADDRESS /
/INFILE.SB, PAGE 3 OF 4. / TAD M4 DCA INHAND TAD IFILEP DCA ENTRYP INGF, JMS FETCH /LOOP TO GET 4-WORD FILE NAME DCAI ENTRYP INC ENTRYP ISZ INHAND JMP INGF JMS ADDRES /GET 3RD ARG ADDRES /LOCK USR (USER SERVICE ROUTINE) IN CORE, SWAPPING OUT USER PROGRAM CIF10 JMSI P7700 10 /REQUEST 10 /FETCH DEVICE HANDLER TAD INPNT /PAGE ADDRESS FOR INPUT DEVICE HANDLER DCA INHAND CIF10 JMSI P200 1 /REQUEST 1 INDEV, 0 /2-WORD INPUT DEVICE NAME INNUM, 0 /WILL BE OVERLAID WITH INPUT DEVICE # INHAND, 0 /WILL BE OVERLAID WITH INPUT HANDLER ENTRY POINT JMP INERR /DEVICE NOT FOUND /LOOK UP PERMANENT FILE TAD IFILEP /POINTS TO INPUT FILE NAME DCA INBNUM CIF10 TAD INNUM /DEVICE # JMSI P200 2 /REQUEST 2 INBNUM, 0 /WILL BE OVERLAID WITH STARTING BLOCK # LENTH, 0 /NEGATIVE OF FILE LENGTH IN BLOCKS JMP INERR /FILE NOT FOUND /USR DISMISS FROM CORE STORE, CIF10 JMSI P200 11 /REQUEST 11 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 LFILE# /QUICK RETURN / /ERROR. SET BLOCK # = -1. INERR, CLA CMA DCA INBNUM JMP STORE /
/INFILE.SB, PAGE 4 OF 4. / /SUBROUTINE RFILE(NUM,IBLK1,LOC1) ENTRY RFILE INFILE, BLOCK 2 /NEXT 4 LOCS HOLD INPUT FILE NAME RFILE, BLOCK 2 CLA TAD RFILE# DCA LFILE# TAD RFILE JMS ENTRYP /GET # OF PAGES SPA /CHECK FOR NEGATIVE # OF PAGES TAD M40 /SET UP TO WRITE INSTEAD OF READ SPA CIA CLL RTL RTL RTL DCA INDEV JMS ADDRES JMS FETCH /GET STARTING BLOCK # DCA IBLK1 JMS ADDRES /GET ADDRESS OF LOC1 TAD CDFARG /GET FIELD OF LOC1 P200, AND P70 TAD INDEV /SET UP TO READ/WRITE NUM PAGES DCA NBLKS TAD TEM /GET ADDRESS OF LOC1 DCA LOC1 DOIT, JMSI INHAND /JUMP TO HANDLER NBLKS, 0 /# OF PAGES LOC1, 0 /BUFFER ADDRESS IBLK1, 0 /STARTING BLOCK # JMP BADDF /FATAL I/O ERROR AAPAG1, JMP JBACK 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