Google
 

Trailing-Edge - PDP-10 Archives - DEC_CMS-20_V1.0_SRC - cms/sources/ctrlc.m36
There are no other files named ctrlc.m36 in the archive.
	TITLE	CTRLC - BLISS36C INTERFACE TO CTRL/C HANDLER
	SEARCH 	MONSYM
	TWOSEG
;
; Facility: CMS Library Processor
;
; Abstract:
;
;	This routine will perform the necessary switching and housekeeping
; 	functions to activate the bliss CTRL/C handler.  These functions
;	include register saving and restoration.  The linkage to the bliss
;	CTRL/C handler is via the PUSHJ Linkage.  This routine performs the
;	DEBRK call to dismiss the interrupt after CTRL/C processing.
;       Added is the interface to all TOPS-20 interrupts.  The channel
;       number is passed via the stack as the only arguement.
;
; Environment: TOPS-20
;
;
;	register definitions
;
$S=17	; AC17 CONTAINS THE STACK POINTER
;
;
;
	RELOC 400000
DISPAT::
        EXCH    1,CHAN1
        EXCH    1,ARG
        EXCH    1,CHAN1
        JUMPA   LNKAGE
DERFIL::
        EXCH    1,CHAN11
        EXCH    1,ARG
        EXCH    1,CHAN11
        JUMPA   LNKAGE
ILLINS::
        EXCH    1,CHAN15
        EXCH    1,ARG
        EXCH    1,CHAN15
        JUMPA   LNKAGE
ILLMRE::
        EXCH    1,CHAN16
        EXCH    1,ARG
        EXCH    1,CHAN16
        JUMPA   LNKAGE
ILLMWR::
        EXCH    1,CHAN17
        EXCH    1,ARG
        EXCH    1,CHAN17
LNKAGE:	PUSH	$S,16		; USE AC16 AS A WORK REGISTER
	MOVEI	16,15		; SET UP TO SAVE 15 REGISTERS
	PUSH	$S,(16)		; SAVE EACH REGISTER ON THE STACK
	SOJGE	16,.-1		; LOOP BACK AND PUT NEXT ON THE STACK
        PUSH    $S,ARG          ; PUSH THE ARGUEMENT ONTO THE STACK
	PUSHJ	$S,CMSEXT##	; USE PUSHJ LINKAGE TO GET TO BLISS CTRL/C
				; PROCESSING ROUTINE
	SETZM	16		; CLEAR AC16 FOR POP OPERATION
	POP	$S,(16)		; RESTORE AC FROM STACK
	AOS	16		; BUMP POINTER TO NEXT AC
	CAIE	16,16		; RESTORE AC15 YET?
	JRST	.-3		; NO - LOOP TO THE POP AGAIN
	POP	$S,16		; YES - RESTORE AC16
	DEBRK			; RESUME EXECUTION OF THE INTERRUPTED ROUTINE

ARG:    0
CHAN1:  200000000000
CHAN11: 000100000000
CHAN15: 000004000000
CHAN16: 000002000000
CHAN17: 000001000000

	RELOC   0

	END