File PS8IO.8B

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

/ PS/8 I/O MACROS (8BAL) (DMK)

	/
	/  MACROS TO DEFINE PS/8 FILE I/O
	/

	@DEF @IOBUF:IF,IB,IL,OF,OB,OL	DEFINE BUFFERS
	@SSET @ZZZIBF=IF^10
	@SSET @ZZZIB=IB
	@SSET @ZZZIR=IL
	@SSET @ZZZOBF=OF^10
	@SSET @ZZZOB=OB
	@SSET @ZZZOR=OL
IOBUF@

	@DEF @HANDL:IHB,IHL,OHB,OHL	DEFINE HANDLERS
	@IFEQ:IHL-1,2^
	@SSET @ZZZIHB=IHB+1
	@SKP:1
	@SSET @ZZZIHB=IHB
	@IFEQ:OHL-1,2^
	@SSET @ZZZOHB=OHB+1
	@SKP:1
	@SSET @ZZZOHB=OHB
	@DEF @CALL:PAIRS
	@IRP:PAIRS
	@CALL1:PAIRS
	@IRP
CALL@

	@DEF @CALL1:FIRST,ARGS
	@FIRST:ARGS
	@DEF @FIRST
FIRST@
CALL1@
HANDL@

@DEF @PS8IO:USRSW,EOFSW,LIST @SET @0=0 @SET @1=1 @IFND:@USRSW,1^ @IFNE:@USRSW,2^ @SET @ZZZUSR=200 @SKP:1 @SET @ZZZUSR=7700 PAGE /PS/8 I/O MACROS @IFDF:@LIST,2^ @SET @LISTSW=0 @SKP:1 @SET @LISTSW=LIST XLIST 1-@LISTSW @CALL:<<PS8IO1,EOFSW><PS8IO2>> PS8IO@ @DEF @PS8IO1:EOFSW ZZZ=0 /FOR FILL-INS IOSTRT, .-. JMS RETFLD DCA IOST2 TAD I IOSTRT ISZ IOSTRT DCA IOST1 RIF TAD (6201 JMS THISFL JMS THISFL CIF 10 @IFNE:@ZZZUSR-200,3^ JMS I (7700 10 /USRIN CIF 10 JMS I (@ZZZUSR 5 /CD IOST1, ZZZ TAD (7616 DCA CDP /SET UP POINTER FOR IOPEN IOST2, ZZZ JMP I IOSTRT ICNT=IOST2 CDP=IOST1 /ORDER IMPORTANT ICHRP2=. IOPEN, .-. SNA JMP IOPN1 CLL RAL TAD (7614 DCA CDP IOPN1, JMS RETFLD DCA IOPNRT TAD (@ZZZIHB DCA IHNDAD CDF 10 ISZ CDP TAD I CDP SNA JMP IOPNRT JMS THISFL CIF 10 JMS I (@ZZZUSR 1 /FETCH HANDLER IHNDAD, @ZZZIHB JMP IOPNE1 ISZ CDP CDF 10 TAD I CDP DCA IBLK TAD (ICHR2 DCA ICHRS1 ISZ IOPEN IOPNRT, ZZZ JMP I IOPEN IOPNE1, STL RAR JMP IOPNRT ICHAR, .-. JMS RETFLD DCA ICHRRT JMP I ICHRS1 @IFND:@EOFSW,3^ @IFEQ:@EOFSW,2^ ICHR1=ICHRRT @SKP:3 ICHR1, JMS THISFL JMS IOPEN JMP ICHRRT ICHR2, JMS THISFL CIF 0 JMS I IHNDAD @ZZZIR^20+@ZZZIBF ICHRP1, @ZZZIB IBLK, ZZZ SMA SKP CLA JMP ICHRRT /RETURN ERROR TAD (-200^@ZZZIR DCA ICNT TAD ICHRP1 DCA ICHRP2 TAD IBLK TAD (@ZZZIR DCA IBLK ICHR3, @ZZZIBF CDF TAD I ICHRP2 JMS ICHRS1 @ZZZIBF CDF TAD I ICHRP2 JMS ICHRS1 CMA CLL RTL TAD ICHRP2 DCA ICHRP2 JMS ICHRS2 JMS ICHRS2 RAL JMS ICHRS1 ISZ ICNT JMP ICHR3 JMP ICHR2 ICHRT1=. ICHRS1, .-. AND (377 TAD (-232 /^Z SNA JMP ICHR1 TAD (232 ISZ ICHRP2 ISZ ICHAR ICHRRT, ZZZ JMP I ICHAR ICHRS2, .-. DCA ICHRT1 @ZZZIBF CDF ISZ ICHRP2 TAD I ICHRP2 AND (7400 TAD ICHRT1 RTL RTL JMP I ICHRS2 PS8IO1@
@DEF @PS8IO2:DUMMY PAGE OWRIT, .-. TAD OCHRP1 CIA TAD OCHRP2 TAD (177 AND (7600 CLL RAR DCA OWRTT1 TAD OWRTT1 CLL RTR RTR RTR IAC RAR TAD OLEN DCA OLEN CLL TAD OLIM TAD OLEN SZL CLA JMP OWRTE1 TAD OWRTT1 TAD (@ZZZOBF+4000 DCA OWRTT1 CIF 0 JMS I OHNDAD OCHRT1=. OWRTT1, ZZZ OCHRP1, @ZZZOB OBLK, ZZZ JMP OWRTE1 TAD OBLK TAD (@ZZZOR JMS OSETUP ISZ OWRIT JMP I OWRIT OWRTE1, CLA STL RAR JMP I OWRIT OHNDAD, 0 OCLOS, .-. JMS RETFLD DCA OCLORT JMS THISFL TAD (232 OCLO1, JMS OCHAR JMP OCLORT TAD OCNT AND (77 SZA CLA JMP OCLO1 JMS OWRIT JMP OCLORT TAD OOPNCW CIF 10 JMS I (@ZZZUSR 4 OFLNM OLEN, ZZZ JMP OCLOE1 DCA OOPNI1 ISZ OCLOS OCLORT, ZZZ JMP I OCLOS OCLOE1, STL RAR JMP OCLORT OCNT, 0 OCHAR, .-. AND (377 DCA OCHRT1 JMS RETFLD DCA OCHRRT JMP I OCHRS1 OCHR1, ISZ OCHAR OCHR2, JMS OCHRS1 JMS OCHRS2 JMS OCHRS2 CMA CLL RAL TAD OCHRP2 DCA OCHRP2 JMS OCHRS3 JMS OCHRS3 ISZ OCNT JMP OCHR1 JMS THISFL JMS OWRIT JMP OCHRE1 JMP OCHR1 OCHRS1, .-. OCHRRT, ZZZ JMP I OCHAR OCHRS2, .-. TAD OCHRT1 @ZZZOBF CDF DCA I OCHRP2 ISZ OCHRP2 ISZ OCHAR JMS OCHRS1 JMP I OCHRS2 OCHRS3, .-. TAD OCHRT1 CLL RTL RTL DCA OCHRT1 TAD OCHRT1 AND (7400 @ZZZOBF CDF TAD I OCHRP2 DCA I OCHRP2 ISZ OCHRP2 JMP I OCHRS3 OCHRP2, 0
PAGE OCHRE1, CLA /ERROR FROM OCHR DCA OOPNI1 STL RAR /RETURN ERROR INDICATION JMP OCHR2 OOPEN, .-. DCA OOPNT1 JMS RETFLD DCA OOPNRT TAD OOPNI1 SZA CLA JMP OOPNE1 /ONLY 1 OUTPUT FILE TAD OOPNT1 CLL RTL TAD OOPNT1 TAD (7600 DCA OOPNP1 TAD I OOPEN DCA OOPNT1 TAD (OOPNCW DCA OOPNP2 JMS OOPNS1 JMS OOPNS1 JMS OOPNS1 JMS OOPNS1 JMS OOPNS1 TAD OOPNEX SNA TAD OOPNT1 DCA OOPNEX TAD (@ZZZOHB DCA OOPNT1 TAD OOPNCW AND (17 SNA JMP OOPNRT CIF 10 JMS I (@ZZZUSR 1 OOPNT1, @ZZZOHB JMP OOPNE1 TAD OOPNT1 DCA OHNDAD TAD (OFLNM DCA OOPN1 TAD OOPNCW CIF 10 JMS I (@ZZZUSR 3 /ENTER OOPN1, OFLNM OLIM, 0 JMP OOPNE1 ISZ OOPNI1 JMS OSETUP TAD (OCHR2+1 DCA OCHRS1 ISZ OOPEN SKP OOPNE1, CLA STL RAR OOPNRT, ZZZ ISZ OOPEN JMP I OOPEN OOPNS1, .-. CDF 10 TAD I OOPNP1 JMS THISFL DCA I OOPNP2 ISZ OOPNP1 ISZ OOPNP2 JMP I OOPNS1 OSETUP, .-. DCA OBLK TAD (-200^@ZZZOR DCA OCNT TAD OCHRP1 DCA OCHRP2 JMP I OSETUP OOPNCW, 0 OFLNM, 0;0;0 OOPNEX, 0 OOPNP1, 0 OOPNP2, 0 OOPNI1, 0 THISFL, .-. DCA . JMP I THISFL RETFLD, .-. CLA RDF TAD (CDF CIF 0 JMP I RETFLD XLIST 0 PAGE /END OF PS/8 I/O MACROS PS8IO2@



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