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

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

///	CALL UEXIT(IVAL)
/
/	TRAPS CALLS TO 'EXIT' AND INSTEAD RE-ROUTES THEM
/	TO PLACES OF THE CALLERS DESIRE.
/
/	CALL UEXIT(0)	
/		DISBALE USER EXIT TRAP.
/
/	CALL UEXIT(1)
/		RETURN TO LAST 'UEXIT' CALL WHEN 'EXIT' CALLED.
/		FOR EXAMPLE:
/			ITRAP=.FALSE.
/			CALL UEXIT(1)
/			IF (ITRAP) GOTO 100
/			ITRAP=.TRUE.	@CONTINUE INIT
/			  .ETC.
/		C	RESTART
/		100	CONTINUE
/
/	CALL UEXIT(2)
/		JMP TO 'MAIN' ENTRY POINT WHEN 'EXIT' CALLED.
/
	ENTRY	UEXIT

	DUMMY	VECTC
	DUMMY	VECTA
	DUMMY	PARA
	DUMMY	VECTD

	OPDEF	CDF0	6201
	OPDEF	INC	2000
	OPDEF	KCF	6032

VECTD,	CDF0;0507
VECTC,	CDF0;0
VECTA,	CDF0;0
PARA,	0;0
EXITC,	0
EXITA,	0
RETRNA,	0
	CALL	1,UEXIT
TRAP,	ARG	EXIT

///	EXIT - TRAPPED EXIT CALLS COME HERE AND GET RE-ROUTED
/
EXIT,	BLOCK	2
	KCF		/CLEAR ANY CONSOLE FLAG FROM ^C
RETRNC,	JMP I	RETRNA		/BECOMES CDF CIF

UEXIT,	BLOCK	2
	TAD I	UEXIT
	DCA	PARA
	INC	UEXIT#
	TAD I	UEXIT
	DCA	PARA#
	INC	UEXIT#
	TAD I	PARA
	CIA
	IAC
	SNA
	JMP	UEX40	/IF 1, USE 'UEXIT' RETURN ADDRESS
	IAC
	SNA
	JMP	UEX30	/IF 2, USE 'MAIN' ENTRY POINT
	CLA		/IF ANYTHING ELSE, DISABLE TRAP
	JMS	UEXFVE	/FIND 'EXIT' VECTOR ADDRESS
	CALL	0,EXIT
	TAD	EXITC
	SNA
	JMP	UEX90	/NOTHING TO RESTORE
	DCA I	VECTC
	DCA	EXITC
	TAD	EXITA
	DCA I	VECTA
	DCA	EXITA
	JMP	UEX90

UEX30,	JMS	UEXFVE	/FIND 'MAIN' VECTOR ENTRY
	CALL	0,MAIN
	TAD I	VECTC
	TAD	(2	/CDF BECOMES CDF CIF
	DCA	RETRNC
	TAD I	VECTA
	DCA	RETRNA
	JMP	UEX50

UEX40,	TAD	UEXIT
	TAD	(2	/CDF BECOMES CDF CIF
	DCA	RETRNC
	TAD	UEXIT#
	DCA	RETRNA

UEX50,	JMS	UEXFVE	/FIND 'EXIT' VECTOR ENTRY
	CALL	0,EXIT
	TAD	EXITC
	SZA CLA
	JMP	UEX90	/TRAP ALREADY INSTALLED
	TAD I	VECTC	/SAVE CURRENT CONTENTS
	DCA	EXITC
	TAD I	VECTA
	DCA	EXITA
	TAD	TRAP	/SUBSTITUTE FAKE 'EXIT' VECTOR
	DCA I	VECTC
	TAD	TRAP#
	DCA I	VECTA
UEX90,	RETRN	UEXIT

///	UEXFVE - FIND VECTOR ADDRESS
/		CALL + 1 AND 2 ARE SAMPLE SABR CALLS
/
UEXFVE,	0
	INC	UEXFVE
	TAD I	UEXFVE
	INC	UEXFVE
	TAD	(200	/200 = ADDR OF CDF TABLE
	DCA	VECTC#
	TAD	VECTC#
	TAD I	VECTD	/ADD ADDR OF DISPLACEMENT BETWEEN
	DCA	VECTA#	/  CDF AND ADDR TABLES
FOOL1,	JMP I	UEXFVE

	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