	.TITLE	INIT
/
/  10 MAR 72 - MOD BY P. HENDERSON
/
/INITIALIZE SUBROUTINE
/EXECUTION TIME:  252 MICROSECONDS
/CALLING SEQUENCE:  CALL INIT(ERROR)
/   ERROR=0:  NO ERROR
/        =2:  CONSOLE FAILED TO SELECT
/
	.GLOBL INIT,%HALT,%HALTS
/
INIT	XX
	ISZ	INIT
	LAC*	INIT
	DAC	ERROR
	SPA
	LAC*	ERROR	/INDIRECT
	DAC ERROR	/ERROR LOCATION
	ISZ	INIT	/BUMP TO EXIT
	CLC
	IOT3
	JMP .-1
	SIMB	/MASK OFF INTERRUPTS
	LAC	(400377	/DE-SELECT ALL CONLSOLES;
	IOT3
	JMP	.-1	/ENABLE INTERRUPTS, CONSOLE 0
	CDIR
	LAC	(200
	IOT3
	JMP .-1
	CSIS	/SELECT CONSOLE 0
	LAC* (45
	DAC %HALT	/API HALT
	LAC* (112
	DAC %HALTS	/SOFT. HALT
	LAC (FAULT
	DAC* (36	/FAULT TRANSFER LOC.
	LAC (GPI0
	DAC* (22	/GPI0 TRANSFER LOC.
	LAC (GPI1
	DAC* (23	/GPI1 TRANSFER LOC.
	LAC (GPI2
	DAC* (24	/GPI2 TRANSFER LOC.
	LAC (GPI3
	DAC* (25	/GPI3 TRANSFER LOC.
	LAC (GPI4
	DAC* (26	/GPI4 TRANSFER LOC.
	LAC (GPI5
	DAC* (27	/GPI5 TRANSFER LOC.
	LAC (GPI6
	DAC* (34	/GPI6 TRANSFER LOC.
	LAC (GPI7
	DAC* (35	/GPI7 TRANSFER LOC.
	CLC
	IOT5
	JMP .-1
	ROCL	/RESET ALL CONTROL LINES
	LAW	-10
	DAC COUNT	/8 SENSE LINES
	LAC (XCT TABLE
	DAC .+3	/DEPOSIT RESET 0
	IOT5
	JMP .-1
	XX	/TEST AND RESET SENSE LINE
	ISZ .-1	/RESET +1
	ISZ COUNT
	JMP .-5	/RESET NEXT SENSE LINE
	IOT3
	JMP .-1
	RCSR	/READ CONSOLE SELECT
		/REGISTER
	DZM* ERROR	/ERROR=0
	SAD (000200
	JMP*	INIT
	LAC (2	/CONSOLE SELECT FAIL
	DAC* ERROR	/ERROR=2
	JMP* INIT
%HALT
%HALTS
COUNT
ERROR
TABLE	TSL0
	TSL1
	TSL2
	TSL3
	TSL4
	TSL5
	TSL6
	TSL7
IOT3=703003
IOT5=703005
CSIS=705326
RCSR=705333
SIMB=705006
CDIR=703426
ROCL=705306
TSL0=705013
TSL1=705113
TSL2=705213
TSL3=705313
TSL4=703413
TSL5=703513
TSL6=703613
TSL7=703713
	.EJECT
/FAULT INTERRUPT HANDLER
/EXECUTION TIME:  37 (NULL FAILURE),
/                 41 (DVM OVERRANGE),
/                 OR 42 (680 OVERLOAD)
/                 MICROSECONDS +
/                 USER SUBROUTINE
	.GLOBL %OVLD,%RANGE,%NULL
FAULT	0
	EEM	/ENABLE EXTEND MODE
	DAC ACKEEP	/SAVE AC
	LACQ
	DAC MQKEEP	/SAVE MQ
	IOT3
	JMP .-1
	RFW	/READ FAULT WORD
	SMA
	JMP EXIT	/NO FAULT HIGH
	RTL
	SMA
	JMP .+3
	JMS* %NULL	/NULL FAILURE
	JMP EXIT
	AND (020000
	SNA
	JMP .+3
	JMS* %RANGE	/DVM OVERRANGE
	JMP EXIT
	SZL
	JMS* %OVLD	/680 OVERLOAD
		/NO FAULT HIGH
EXIT	LAC MQKEEP
	LMQ	/RESTORE MQ
	LAC ACKEEP	/RESTORE AC
	DBR
	JMP* FAULT	/RELEASE 0
ACKEEP
MQKEEP
%NULL
%OVLD
%RANGE
RFW=705313
	.EJECT
/GENERAL PURPOSE INTERRUPT HANDLERS
/EXECUTION TIME:  25 MICROSECONDS +
/                 USER SUBROUTINE
	.GLOBL %GPI0,%GPI1,%GPI2,%GPI3
	.GLOBL %GPI4,%GPI5,%GPI6,%GPI7
GPI0	0
	EEM	/ENABLE EXTEND MODE
	DAC SAVEAC	/SAVE AC
	LACQ
	DAC SAVEMQ	/SAVE MQ
	JMS* %GPI0	/EXEC. USER 0
	LAC SAVEMQ
	LMQ	/RESTORE MQ
	LAC SAVEAC	/RESTORE AC
	DBR
	JMP* GPI0	/RELEASE 2
GPI1	0
	EEM	/ENABLE EXTEND MODE
	DAC SAVEAC	/SAVE AC
	LACQ
	DAC SAVEMQ	/SAVE MQ
	JMS* %GPI1	/EXEC. USER 1
	LAC SAVEMQ
	LMQ	/RESTORE MQ
	LAC SAVEAC	/RESTORE AC
	DBR
	JMP* GPI1	/RELEASE 2
GPI2	0
	EEM	/ENABLE EXTEND MODE
	DAC SAVEAC	/SAVE AC
	LACQ
	DAC SAVEMQ	/SAVE MQ
	JMS* %GPI2	/EXEC. USER 2
	LAC SAVEMQ
	LMQ	/RESTORE MQ
	LAC SAVEAC	/RESTORE AC
	DBR
	JMP* GPI2	/RELEASE 2
GPI3	0
	EEM	/ENABLE EXTEND MODE
	DAC SAVEAC	/SAVE AC
	LACQ
	DAC SAVEMQ	/SAVE MQ
	JMS* %GPI3	/EXEC. USER 3
	LAC SAVEMQ
	LMQ	/RESTORE MQ
	LAC SAVEAC	/RESTORE AC
	DBR
	JMP* GPI3	/RELEASE 2
GPI4	0
	EEM	/ENABLE EXTEND MODE
	DAC SAVEAC	/SAVE AC
	LACQ
	DAC SAVEMQ	/SAVE MQ
	JMS* %GPI4	/EXEC. USER 4
	LAC SAVEMQ
	LMQ	/RESTORE MQ
	LAC SAVEAC	/RESTORE AC
	DBR
	JMP* GPI4	/RELEASE 2
GPI5	0
	EEM	/ENABLE EXTEND MODE
	DAC SAVEAC	/SAVE AC
	LACQ
	DAC SAVEMQ	/SAVE MQ
	JMS* %GPI5	/EXEC. USER 5
	LAC SAVEMQ
	LMQ	/RESTORE MQ
	LAC SAVEAC	/RESTORE AC
	DBR
	JMP* GPI5	/RELEASE 2
GPI6	0
	EEM	/ENABLE EXTEND MODE
	DAC SAVEAC	/SAVE AC
	LACQ
	DAC SAVEMQ	/SAVE MQ
	JMS* %GPI6	/EXEC. USER 6
	LAC SAVEMQ
	LMQ	/RESTORE MQ
	LAC SAVEAC	/RESTORE AC
	DBR
	JMP* GPI6	/RELEASE 2
GPI7	0
	EEM	/ENABLE EXTEND MODE
	DAC SAVEAC	/SAVE AC
	LACQ
	DAC SAVEMQ	/SAVE MQ
	JMS* %GPI7	/EXEC. USER 7
	LAC SAVEMQ
	LMQ	/RESTORE MQ
	LAC SAVEAC	/RESTORE AC
	DBR
	JMP* GPI7	/RELEASE 2
SAVEAC
SAVEMQ
%GPI0
%GPI1
%GPI2
%GPI3
%GPI4
%GPI5
%GPI6
%GPI7
	.EJECT
/SOFTWARE INTERRUPT HANDLER
/EXECUTION TIME:  30 MICROSECONDS +
/                 USER SUBROUTINE
	.GLOBL %SOFT4,%SOFT5
	.GLOBL %SOFT6,%SOFT7
	.GLOBL %4SOFT,%5SOFT
	.GLOBL %6SOFT,%7SOFT
%4SOFT	0
	EEM	/ENABLE EXTEND MODE
	DAC KPAC4	/SAVE AC
	LACQ
	DAC KPMQ4	/SAVE MQ
	LAC %HALTS
	DAC* (112	/DISABLE 4
	JMS* %SOFT4	/EXEC. USER 4
	LAC KPMQ4
	LMQ	/RESTORE MQ
	LAC KPAC4	/RESTORE AC
	DBR
	JMP* %4SOFT	/RELEASE 4
KPAC4
KPMQ4
%5SOFT	0
	EEM	/ENABLE EXTEND MODE
	DAC KPAC5	/SAVE AC
	LACQ
	DAC KPMQ5	/SAVE MQ
	LAC %HALTS
	DAC* (113	/DISABLE 5
	JMS* %SOFT5	/EXEC. USER 5
	LAC KPMQ5
	LMQ	/RESTORE MQ
	LAC KPAC5	/RESTORE AC
	DBR
	JMP* %5SOFT	/RELEASE 5
KPAC5
KPMQ5
%6SOFT	0
	EEM	/ENABLE EXTEND MODE
	DAC KPAC6	/SAVE AC
	LACQ
	DAC KPMQ6	/SAVE MQ
	LAC %HALTS
	DAC* (114	/DISABLE 6
	JMS* %SOFT6	/EXEC. USER 6
	LAC KPMQ6
	LMQ	/RESTORE MQ
	LAC KPAC6	/RESTORE AC
	DBR
	JMP* %6SOFT	/RELEASE 6
KPAC6
KPMQ6
%7SOFT	0
	EEM	/ENABLE EXTEND MODE
	DAC KPAC7	/SAVE AC
	LACQ
	DAC KPMQ7	/SAVE MQ
	LAC %HALTS
	DAC* (115	/DISABLE 7
	JMS* %SOFT7	/EXEC. USER 7
	LAC KPMQ7
	LMQ	/RESTORE MQ
	LAC KPAC7	/RESTORE AC
	DBR
	JMP* %7SOFT	/RELEASE 7
KPAC7
KPMQ7
%SOFT4
%SOFT5
%SOFT6
%SOFT7
	.END
