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

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

/ 21.B	IOPEN SUBROUTINE	OS8 V3D FORTRAN II LIBRARY
/
/	11-SEP-78			W. HOUBEN
/
/	CALL IOPEN ( 'DEV' , 'FILENA' , 'EX' )
/
/	CALL OOPEN ( 'DEV' , 'FILENA' , 'EX' )
/
/	CALL OCLOS
/
/	CALL CHAIN ( 'FILENA' )
/
	ENTRY	IOPEN	/ OPEN AN INPUT FILE
	ENTRY	OOPEN	/ OPEN AN OUTPUT FILE
	ENTRY	OCLOS	/ CLOSE AN OUTPUT FILE
	ENTRY	CHAIN	/ CHAIN TO A PROGRAM
/
	OPDEF	TADI	1400
	OPDEF	ISZI	2400
	OPDEF	DCAI	3400
	OPDEF	JMPI	5400
/
	LAP
/
IOER,	1117;	0522	/ "IOER" ERROR MESSAGE
IOPEN,	BLOCK	2
	TAD	ASDVM1
	JMS	SETUP	/ PUT 2 WORDS OF FIRST ARG INTO ASDVM1
	JMS	GETWD
	TADI	INHNDL	/ DF IS 0 HERE - GET INPUT HANDLER
	SNA
	JMP	IOERR	/ NO /I GIVEN - ERROR
	DCAI	10	/ STORE IN "ASPAGE"
	JMS	GFILNM	/ MOVE FILENAME INTO LOCS 0-2
	CLA CLL IAC RAL	/ AC=2
	JMS	SETUP	/ MOVE EXTENSION TO LOC 3
	TAD	FLUKUP	/ LOAD POINTER TO "FLUKUP" IN RTS
CALASN,	6202		/ DF 00
	JMS I	FASIGN	/ SET DF=CUR AND GO LOOKUP FILE
	RETRN	IOPEN	/ ** FASIGN SKIPS BUT SECOND WORD IS SMALL
IOERR,	CALL	1,ERROR	/ I-O ERROR GIVE MESSAGE AND QUIT
	ARG	IOER
/
OOPEN,	BLOCK	2
	JMS	OOCOMN
	TAD	FENTER
	JMP	CALASN	/ SEE "IOPEN" FOR COMMENTS
/
OOCOMN,	0		/ COMMON SUBR BETWEEN "OOPEN" AND "OCLOS"
	TAD	OOPEN
	DCA	IOPEN
	TAD	OOPEN#
	DCA	IOPEN#	/ MOVE CALL ADDR TO IOPEN
	TAD	ASDVM1
	JMS	SETUP	/ SETUP DEV NAME IN FLD 0
	JMS	GETWD	/ CHAR 2+3
	TADI	OUHNDL
	SNA
	JMP	IOERR	/ NO /O GIVEN ERROR
	DCAI	10	/ STORE IN "ASPAGE"
	JMS	GFILNM	/ PUT FILENAME INTO 0-2
	CLA CLL IAC RAL	/ AC=2
	JMS	SETUP	/ MOVE EXTENSION TO LOC 3
	JMPI	OOCOMN
/
OCLOS,	BLOCK	2
	JMS	OOCOMN	/ SET UP DEV AND FILENAME
	TAD	OCLOS
	DCA	IOPEN
	TAD	OCLOS#
	DCA	IOPEN#	/ SET UP IOPEN FOR RETURN
	TAD	CHAIN	/ =7177
	DCA	OOCOMN
OCLOOP,	TAD	CHAIN#	/ =1632 =^Z ON LUN 4 OUTPUT
	CALL	0,GENIO
	ISZ	OOCOMN
	JMP	OCLOOP	/ FORCE OUT THE LAST BUFFER
	TAD	FCLOSE
	JMP	CALASN	/ DO THE WORK AND LEAVE
/
SETUP,	0
	DCA	10
	TAD	IOPEN
	DCA	SETDF
SETDF,	HLT		/ SET TO CALLING DF
	TADI	IOPEN#
	DCA	GETWD#	/ SAVE FLD OF ARG
	INC	IOPEN#
	TADI	IOPEN#
	DCA	SETDF	/ SAVE ADDR OF ARG
	INC	IOPEN#
	JMS	GETWD	/ TRANSFER TWO WORDS FROM THE
			/ ARG LIST TO WHERE XR10 POINTS
	JMPI	SETUP	/ RETURN WITH DF 00
/
GETWD,	0
	HLT		/ SET TO ARG FLD
	TADI	SETDF
	INC	SETDF
	6201		/ CDF 00
	DCAI	10
	JMPI	GETWD	/ DO NOT RESTORE DF
/
GFILNM,	0
	CLA CMA
	JMS	SETUP	/ MOVE TWO WORDS TO 0 & 1
	JMS	GETWD	/ MOVE THE SECOND WORD
	JMS	GETWD	/ MOVE THE THIRD WORD
	JMPI	GFILNM
/
INHNDL,	74
OUHNDL,	75
FASIGN,	541
ASDVM1,	552
FLUKUP,	567
FENTER,	741
FCLOSE,	757
/
CHAIN,	7177		/ USE "CHAIN" TO STORE CONSTANTS
	1632		/ SINCE IT IS ONLY CALLED TERMINALLY
	TAD	CHAIN
	DCA	IOPEN
	TAD	CHAIN#
	DCA	IOPEN#
	JMS	GFILNM	/ GET FILENAME INTO 0-2
	TAD	SV
	DCAI	10	/ MOVE EXTENSION TO LOC 3
	ISZI	INHNDL	/ FORCE INHNDL NONZERO SO IOPEN WONT FAIL
	TAD	(0310
	DCA	IOER	/ IF IOPEN FAILS GIVE "CHER" MESSAGE
CALOPN,	CALL	1,IOPEN
	ARG	SYS	/ CHAIN WORKS FROM SYS DEV ONLY
	6201		/ "ARG 0" POINTING TO 00000!!
	0000
	6201		/ "ARG 3" POINTING TO 00003!!
	0003
	TAD	(6
	6201		/ SET DF TO 0
	DCAI	K2	/ MODIFY "LOOKUP" INTO "CHAIN"
	DCAI	ZRONAM	/ ALSO KILL LOC WHICH ZEROS FILE NAME PTR
	JMP	CALOPN	/ GO BACK - THIS TIME IOPEN WILL CHAIN
/
SYS,	2303		/ *** 2303+2326 = 4631 = "SYS" ! WATCH IT
SV,	2326
K2,	571
ZRONAM,	557
/
	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