File SYSIOT.1

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

		/SEE 0S8 SOFTWARE SUPPORT MANUAL APPENDIX F/
		/PARAMETER DEFINITION*/
OUBUF=5000	/OUTPUT BUFFER STARTS AT 05000.
OUCTL=4200	/AND IS 2 PAGES LONG.
OUDEVH=6600	/OUTPUTHANDLERS GETS LOADED AT 6600. WE
		/ALLOW TWO PAGE HANDLERS.
INBUF=5400	/INPUT BUFFER STARTS AT 05400
INCTL=0200	/ALS TWO PAGES LONG.INRECS=1	2 PAGES = 1 RECORD
INRECS=1	/2 PAGE = 1 RECORD
INDEVH=7000	/ALLOW 2 PAGE INPUT HANDLER AT 7000.
ORIGIN=6600	/THE SUBROUTINE RESIDE AT 16600.
DCB=7760	/DEVICE CONTROL TABLE


FIELD 1
*ORIGIN


INFLD=INCTL&70	/INPUT BUFFER FIELD
OUFLD=OUCTL&70	/OUTPUT BUFFER FIELD


IN7400,	7400	/INITIALIZE INPUT
IOPEN,	0
	CLA CMA
	DCA INCHCT
	ISZ INEOF
	TAD (7617
	DCA INFPTR
	JMP I IOPEN

INEOF,	0
INFPTR,	0
INPTR,	0

ICHAR,	0	/INPUT A CHARAKTER/
IN7600,	7600
	RDF
	TAD INCDIF
	DCA INRTRN
	
INCHAR,	CDF INFLD
	ISZ INJMP
	ISZ INCHCT
INJMPP,	JMP INJMP
	TAD INEOF	/DID LAST READ GIVE EOF ON THIS DEVICE?
	SNA CLA
	JMP INGBUF
GETNEW,	JMS INNEWF	/YES..GET NEXT INPUT IF IT EXISTS.	
	JMP EOFERR
INGBUF,	TAD INCTR

	CLL
	TAD (INRECS
	SNL
	DCA INCTR
	SZL
	ISZ INEOF
	CLL CML CMA RTR	/CONSTRUCT A CONTROL WORD FOR THIS
	RTR	/READ FROM THE OVERFLOW, IF ANY,
	RTR	/AND THE STANDARD CONTROL WORD.
	TAD (INCTL+1
	DCA INCTLW

INCDIF,	CIF CDF 0
	CDF 10
	JMS I INHNDL
INCTLW,	0
INBUFP,	INBUF
INREC,	0
	JMP INERRX
INBREC,	TAD INREC
	TAD (INRECS
	DCA INREC
	TAD INCTLW
	AND IN7600
	CLL RAL
	TAD INCTLW
	AND IN7600
	CMA
	DCA INCHCT
	TAD INJMPP
	DCA INJMP
	TAD INBUFP
	DCA INPTR
	JMP INCHAR
INERRX,	ISZ INEOF
	SMA CLA
	JMP INBREC
INERR,	CLA CLL CML RAR
EOFERR,	JMP INRTRN
INJMP,	HLT
	JMP ICHAR1
	JMP ICHAR2
ICHAR3,	TAD INJMPP
	DCA INJMP
	TAD I INPTR
IN200,	AND IN7400
	CLL RTR
	RTR
	TAD INCTLW
	RTR
	RTR
	ISZ INPTR
	JMP INCOMN
ICHAR2,	TAD I INPTR
	AND IN7400
	DCA INCTLW
	ISZ INPTR
ICHAR1,	TAD I INPTR
INCOMN,	AND (377
	TAD (-232	/IS IT A ^Z (EOF)?
	SNA
	JMP GETNEW	/YES..LOOK AT NEXT INPUT
	TAD (232
	ISZ ICHAR	/TAKE NORMAL RETURN
INRTRN,	0
	JMP I ICHAR
INNEWF,	-1
INCHCT=INNEWF
	CDF 10
	TAD (INDEVH+1
	DCA INHNDL
	TAD I INFPTR
	SNA
	JMP I INNEWF
	JMS I IN200
	1
INHNDL,	0
	HLT
	TAD I INFPTR
	AND (7760
	SZA
	TAD (17
	CLL CML RTR
	RTR
	DCA INCTR
	ISZ INFPTR
	TAD I INFPTR
	DCA INREC
	ISZ INFPTR
	DCA INEOF
	ISZ INNEWF
	JMP I INNEWF
INCTR=IOPEN


PAGE
OOPEN,	0	/OPEN OUTPUT FILE
OU7600,	7600
	TAD OU7601
	DCA OUBLK
	TAD (OUDEVH+1
	DCA OUHNDL
	TAD I OU7600
	AND (17
	SNA
	JMP ONOFIL
	JMS I (200
	1
OUHNDL,	0
	HLT
OUENTR,	TAD I OU7600
	JMS I (200
	3
OUBLK,	7601	/GETS STARTING BLOCK OF HOLE/


OUELEN, 0 /GETS SIZE OF HOLE AVAILABLE JMP OEFAIL DCA OUCCNT DCA I (OUTINH JMS I (OUSETP ISZ OOPEN OORETN, CDF CIF 10 JMP I OOPEN OEFAIL, TAD I OU7600 AND (7760 SNA CLA JMP ONTERR TAD I OU7600 AND (17 DCA I OU7600 JMP OUENTR ONTERR, CLA CLL CML RAR JMP OORETN ONOFIL, ISZ I (OUTINH JMP OORETN OUTDMP, 0 DCA OUCTLW CDF 10 TAD I (OUTINH SZA CLA JMP OUNOWR TAD OUCCNT SNA ISZ OUCTLW TAD OUBLK DCA OUREC TAD OUCTLW CLL RTL RTL RTL /COMPUTE # OF RECORDS TO OUTPUT AND (17 TAD OUCCNT DCA OUCCNT TAD OUCCNT /SEE IF CLOSING LENGTH WILL BE CLL CML /BIGGER THAN OUTPUT HOLE TAD OUELEN SNL SZA CLA JMP I OUTDMP OUCDIF, CIF CDF 0 CDF 10 JMS I OUHNDL OUCTLW, 0 OUBUF OUREC, 0 SKP OUNOWR, ISZ OUTDMP JMP I OUTDMP PTP=0020 OCLOSE, 0 /CLOSE OUTPUT FILE CDF 10 TAD I (OUTINH /IF OUTPUT INHIBITED,CLOSE IS A NOP SZA CLA JMP OCISZ JMS I (OTYPE AND (770 TAD (-PTP SZA CLA TAD (232 /NOT PTP.OUTPUT^Z AS EOF JMS I (OCHAR JMP OCRET JMS I (OCHAR /FILL WITH 0 CHARAKTERS JMP OCRET FILLIP, JMS I (OCHAR JMP OCRET JMS I (OTYPE /IF OUTPUT IS DIRECTORY DEVICE, FILL SPA CLA /WHOLE RECORD, ELSE HALF RECORD TAD (100 TAD (77 AND I (OUDWCT SZA CLA JMP FILLIP TAD I (OUDWCT TAD (OUCTL&3700 SNA JMP NODUMP TAD (4000+OUFLD JMS OUTDMP JMP OCRET NODUMP, TAD I OU7600 JMS I (200 4 OU7601, 7601 OUCCNT, 0 SKP OCISZ, ISZ OCLOSE OCRET, CDF CIF 10 JMP I OCLOSE PAGE OUSETP, 0 TAD (OUCTL&3700 CIA DCA OUDWCT TAD (OUBUF DCA OUPTR TAD OUJMPE DCA OUJMP JMP I OUSETP
OCHAR, 0 /OUTPUT CHARACTER ROUTINE AND (377 /ISOLATE EIGHT 8BITS DCA OUTEMP RDF TAD (CIF CDF 0 DCA OUCRET TAD OUTINH SZA CLA JMP OUCOMN OUCHAR, CDF OUFLD ISZ OUJMP OUJMP, HLT JMP OCHAR1 JMP OCHAR2 OCHAR3, TAD OUTEMP CLL RTL RTL AND (7400 TAD I OUPOLD DCA I OUPOLD TAD OUTEMP CLL RTR RTR RAR AND (7400 TAD I OUPTR DCA I OUPTR TAD OUJMPE DCA OUJMP ISZ OUPTR ISZ OUDWCT JMP OUCOMN TAD (OUCTL /READY TO OUTPUT A BUFFER JMS I (OUTDMP /OUTPUT IT JMP OUCRET /AN ERROR JMS OUSETP JMP OUCOMN OCHAR2, TAD OUPTR DCA OUPOLD ISZ OUPTR OCHAR1, TAD OUTEMP DCA I OUPTR OUCOMN, ISZ OCHAR OUCRET, HLT JMP I OCHAR OUTEMP, 0 OUPOLD, 0 OUPTR, 0 OUJMPE, JMP OUJMP OUDWCT, 0 OUTINH, 0 OTYPE, 0 RDF TAD (CIF CDF 0 DCA OTRTN CDF 10 TAD I (7600 AND (17 TAD (DCB-1 DCA OUTEMP TAD I OUTEMP OTRTN, HLT JMP I OTYPE



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