File READ.14

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


FIELD 1
*2200
	JMS I (7700
	10
CALLCD,	JMS I (200
	5
	0
	JMS I (IOPEN


	JMS I (OOPEN
	SMA CLA
	JMP START1
	JMS TERR
	TEXT /OPEN FAILED/


START1,	CLA
	TAD N14
	DCA N14CTR
START2,	JMS I (ICHAR
	JMP TSTEOF
	JMS SRCH
	215
	JMP START2
	JMS SRCH
	212
	JMP START2


NUMB,	JMS SRCH
	0		/KEINE LOCHUNG?
	JMP START2
	JMS SRCH
	257		/SCHRAEGSTRICH?
	JMP TRAP
	JMS SRCH
	"$		/DOLLAR?
	JMP SYMB
	JMS SRCH
	215		/CARRIAGE RETURN?
	JMP LIN
	JMS SRCH
	212		/LINE FEED?
	JMP LIN1
	JMS I (OCHAR
	JMP OUTERR
	JMS I (ICHAR
	JMP TSTEOF
	ISZ N14CTR
	JMP NUMB
	JMP ALPHA

LIN,	JMS I (OCHAR
	JMP OUTERR
	CLA
	TAD N14
	DCA N14CTR
	JMS I (ICHAR
	JMP TSTEOF
	JMP NUMB

LIN1,	JMS I (OCHAR
	JMP OUTERR
	JMP START1


ALPHA,	JMS I (ICHAR
	JMP TSTEOF
	JMS SRCH
	257		/SCHRAEGSTRICH?
	JMP TRAP
	JMS SRCH
	215		/CARRIAGE RETURN
	JMP LIN
	JMS SRCH
	212		/LINE FEED?
	JMP LIN1
	JMP ALPHA

TRAP,	JMS I (ICHAR
	JMP TSTEOF
	JMS SRCH
	215		/CARRIAGE RETURN
	JMP LIN
	JMS SRCH
	212		/LINE FEED
	JMP LIN1
	JMS I (OCHAR
	JMP OUTERR
	JMP TRAP
	JMS I (OCHAR
	JMP OUTERR
	JMP START1


SYMB,	JMS I (OCHAR
	JMP OUTERR
	JMS I (ICHAR
	JMP TSTEOF
	JMS I (OCHAR
	JMP OUTERR
	JMP .-4


N14,	-14
N14CTR,	0
N7600,	7600

TSTEOF,	SMA CLA
	JMP CLOSE
	JMS TERR
	TEXT /READ ERROR/

CLOSE,	JMS I (OCLOSE
	JMP CLERR
	CDF CIF 0
	JMP I N7600

OUTERR,	JMS TERR
	TEXT /OUTPUT ERROR/


PAGE

CLERR,	JMS TERR
	TEXT /CLOSE ERROR/







TERR,	0
	TAD I TERR
	RTR;RTR;RTR
	JMS TYPIT
	TAD I TERR
	JMS TYPIT
	ISZ TERR
	JMP TERR+1





TYPIT,	0
	AND (77
	SNA
	JMP CRLF
	TAD (300
	JMS TTYOUT
	JMP I TYPIT

CRLF,	CLA
	TAD (215
	JMS TTYOUT
	TAD (212
	JMS TTYOUT
	JMP CALLCD

TTYOUT,	0
	TLS
	TSF
	JMP .-1
	CLA
	JMP I TTYOUT





SRCH,	0
	DCA TEMP
	TAD I SRCH
	ISZ SRCH
	CIA
	TAD TEMP
	SZA CLA
	ISZ SRCH
	TAD TEMP
	JMP I SRCH

TEMP,	0



SRLINE,	0
	CLA
	TAD (215
	JMS I (OCHAR
	JMP OUTERR
	CLA
	TAD 212
	JMS I (OCHAR
	JMP OUTERR
	JMP I SRLINE


$$$$$$$$


/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