Google
 

Trailing-Edge - PDP-10 Archives - BB-P363B-SM_1985 - mcb/cex/cexsge.lst
There are no other files named cexsge.lst in the archive.
CEXSGE	- BLISS-16 CONDITION HANDLING FACILITY	DNMAC X24.07-563  28-MAY-85  14:23
CEXSGE.M11    30-DEC-82 00:25		TABLE OF CONTENTS

  2673		DECLARATIONS
  2756		$DBGDL	- Singal Routine Entry/Exit
  2807		$ETUNW	- Initiate Unwind Processing
  2849		$HANDL	- Call a User Condition Handling Routine
  2954		$IGNAL	- Initiate Condition Handling
  3012		$STOP	- Initiate Condition Handling
  3058		DBGCHK	- Signal Routine Entry/Exit If Asked
  3103		SIGNAL	- Signal to the Next Exception Handler
CEXSGE	- BLISS-16 CONDITION HANDLING FACILITY	DNMAC X24.07-563  28-MAY-85  14:23  PAGE 1
CEXSGE.M11    30-DEC-82 00:25

     1						.TITLE	CEXSGE	- BLISS-16 CONDITION HANDLING FACILITY
     2						.IDENT	/003220/
     3						.ENABL	LC
     4
     5					;
     6					;                    COPYRIGHT (c) 1980, 1981, 1982
     7					;                    DIGITAL EQUIPMENT CORPORATION
     8					;                        Maynard, Massachusetts
     9					;
    10					;     This software is furnished under a license and may  be  used
    11					;     and copied only in accordance with the terms of such license
    12					;     and with the inclusion of the above copyright notice.   This
    13					;     software  or any other copies thereof may not be provided or
    14					;     otherwise made available to any other person.  No  title  to
    15					;     and ownership of the software is hereby transferred.
    16					;
    17					;     The information  in  this  software  is  subject  to  change
    18					;     without  notice  and should not be construed as a commitment
    19					;     by DIGITAL EQUIPMENT CORPORATION.
    20					;
    21					;     DIGITAL assumes no responsibility for the use or reliability
    22					;     of  its  software  on  equipment  which  is  not supplied by
    23					;     DIGITAL.
    24					;
    25
    26					;++
    27					; FACILITY:  
    28					;	MCB Communications Executive
    29					;
    30					; ABSTRACT:
    31					;	This module provides signal and enable support for
    32					;	the Bliss-16 condition handling facility.
    33					;
    34					; ENVIRONMENT:
    35					;	 RSX kernel mode with EIS
    36					;
    37					; AUTHOR: Bose S. Ghanta CREATION DATE:  26-Jan-78
    38					;
    39					; MODIFIED BY:
    40					;
    41					; 1.	14-Feb-80	DGF	Now conforms to software standards.
    42					;
    43					; 2.	 4-Apr-80	DL	SS$.UN is now a global literal, it may be
    44					;				accessed from Bliss-16 programs using the
    45					;				VMS standard name SS$_UNWIND.  The name is
    46					;				truncated to 6 rad50 characters: SS$.UN
    47					;				    EXTERNAL LITERAL SS$_UNWIND
    48					;				Also, SS$UNWIND (RAD50-11 SS$UNW) is defined.
    49					;
    50					; 3.	8-Apr-80	DL	The value set in the MECH vector is now used.
    51					;
    52					;	Alan D. Peckham, 1-Jul-80: VERSION 3.0
    53					; 01	- Set to operate within the MCB environment.
    54					;	  Conditionalize the handler and unwind coding.
    55					; 02	- Insert external global declarations to pull in BLISS library
    56					;	  modules of universal utility...
CEXSGE	- BLISS-16 CONDITION HANDLING FACILITY	DNMAC X24.07-563  28-MAY-85  14:23  PAGE 1-1
CEXSGE.M11    30-DEC-82 00:25

    57					; 03	- Moved global data to seperate module.
    58					;	  Eliminated local data (module can now be made read-only).
    59					; 04	- Put meaningful data in registers on IOT.
    60					; 05	- Remove that meaningful data.
    61					; 06	- Add Comm/Exec $CRSH entry point.
    62					;	  Enable UNWIND coding.
    63					; 07	- Rewritten to compact coding and eliminate stack handling bug.
    64					; 08	- Add $INTR routine for CEXINT to do exception handling.
    65					;	  Save PANIC context and call panic process if existant.
    66					;	  Added call to debug process before exception handling.
    67					; 09	- Correct exception handlers $INTR, $CRSH, $STOP to be able to
    68					;	  continue after a call to the debug process.
    69					; 10	- Bugs in previous fix.
    70					; 11	- Allow the debug process to UNWIND into a panic dump.
    71					;	  Do not attempt to save PC or PS in panic dump.
    72					; 12	- Correct debug UNWIND coding.
    73					; 13	- Re-organize resignalling strategy.
    74					;	  Move panic dumper to CEX process.
    75					; 14	- Remove unneeded definitions.
    76					;	  Correct M.EXR address bug in SETSIG.
    77					; 15	- Correct context restoration in RETSIG.
    78					; 16	- $STOP should go to SIGNAL, not to $IGNAL.
    79					; 17	- Add $DBGDL for BLISS call tracing (/DEBUG).
    80					;	Alan D. Peckham, 12-Dec-80: VERSION 3.1
    81					; 18	- Add support for enable vector address in exception vectors.
    82					;	Alan D. Peckham, 30-Jan-80: VERSION 3.2
    83					; 19	- Fix status code pickup bug in DBGCHK.
    84					;	  Change excpetion data base in SIGNAL, $ETEXV.
    85					;	  Remove HALT instruction from $STOP code.
    86					;	  New method for translating PIX to process descriptor in $ETEXV.
    87					;	  Add default process exception handler coding in SIGNAL.
    88					;	  Move $INTR to CEXINT.
    89					;	  Move $CRSH to CEXSCH.
    90					; 20	- Remap to calling process after exception in SIGNAL.
    91					; 21	- Conditionalize out UNWIND coding.
    92					; 22	- More conditionalizing.
    93					;	  Comment out process signal handling dispatch - nobody uses it!
    94					;--
CEXSGE	- BLISS-16 CONDITION HANDLING FACILITY	DNMAC X24.07-563  28-MAY-85  14:23  PAGE 2
CEXSGE.M11    30-DEC-82 00:25		DECLARATIONS

    96						.SBTTL	DECLARATIONS
    97
    98					;
    99					; INCLUDE FILES:
   100					;
   101
   102						.MCALL	POP$S,PUSH$S,SAV5$S
   103						.GLOBL	KISAR5,KISAR6,PS,.CRPIX
   104					;	.GLOBL	BL$ABS		; B16ABS
   105						.GLOBL	BL$CMP,BL$EQL,BL$GEQ,BL$GTR,BL$LEQ,BL$LSS,BL$NEQ ; B16CH1
   106						.GLOBL	BL$CPY		; B16CH2
   107						.GLOBL	BL$FCH,BL$FNC	; B16CH3
   108						.GLOBL	BL$FSB		; B16CH4
   109						.GLOBL	BL$FIL,BL$MOV	; B16CH5
   110					;	.GLOBL	BL$TRN		; B16CH6
   111					;	.GLOBL	BL$GT1		; B16PG1
   112					;	.GLOBL	BL$GT2		; B16PG2
   113					;	.GLOBL	BL$PU1		; B16PG3
   114					;	.GLOBL	BL$PU2		; B16PG4
   115					;	.GLOBL	BL$ROT		; B16ROT
   116						.GLOBL	$SAVE2,$SAVE3,$SAVE4,$SAVE5 ; B16SAV
   117
   118					;
   119					; MACROS:
   120					;
   121					;	None
   122					;
   123					; EQUATED SYMBOLS:
   124
   125					;
   126		000000			C$$UNW	= 0			; No unwinding allowed
   127
   128		077777			SS$.UN	== 7!<<7777>*10>	; UNWIND SIGNAL VALUE. A BLISS-16
   129									; program can reference this symbol
   130									; as EXTERNAL LITERAL SS$_UNWIND;
   131		077777			SS$UNW	== 7!<<7777>*10>	; ALSO, SS$UNWIND (10/20 standard)
   132					;
   133					; Mechanism vector
   134					;
   135		000000				.ASECT
   136		000000			.	= 0
   137	000000	000001				.BLKW	1		; Constant = 1
   138	000002	000001			M.R0::	.BLKW	1		; Saved R0
   139	000004	000001			M.AR5::	.BLKW	1		; Saved KISAR5
   140	000006	000001			M.HSP::	.BLKW	1		; Copy of $HANSP at time of SIGNAL
   141	000010	000001			M.FRM::	.BLKW	1		; Copy of $IGREG at time of SIGNAL
   142	000012	000001			M.MCH::	.BLKW	1		; Address of next MeCHanism frame
   143	000014	000001			M.SIG::	.BLKW	1		; Address of current SIGnal vector
   144	000016	000001			M.EXR::	.BLKW	1		; Next exception processor.
   145	000020	000001			M.LVL::	.BLKW	1		; Frame level:
   146		177775			 ML.LST	==	 -3		;  Last chance
   147		177776			 ML.PRI	==	 -2		;  Primary
   148		177777			 ML.SEC	==	 -1		;  Secondary
   149
   150	000022	000000			M.LNG::	.BLKW	0		; Length of mechanism frame
   151		000000			.	= 0
CEXSGE	- BLISS-16 CONDITION HANDLING FACILITY	DNMAC X24.07-563  28-MAY-85  14:23  PAGE 2-1
CEXSGE.M11    30-DEC-82 00:25		DECLARATIONS

   152		000000'				.PSECT
   153
   154					;
   155					; OWN STORAGE:
   156					;
   157
   158						.GLOBL	$IGREG		; Enable frame pointer
   159						.GLOBL	$HANSP		; Global used by ENABLE code
   160						.GLOBL	.DBGFP		; Debug frame pointer for call tracing.
   161						.GLOBL	.DBGST		; Non-zero for call tracing
   162						.GLOBL	.UNWLV		; Non-zero if UNWIND requested
   163						.GLOBL	.MCHVC		; Address of current MeCHanism vector
   164						.GLOBL	.MEXV1		; Primary MCB exception vector.
   165						.GLOBL	.MEXV2		; Secondary MCB exception vector.
   166						.GLOBL	.MEXVL		; Last chance MCB exception vector.
   167						.GLOBL	.MEXVD		; MCB dumper exception vector.
   168
   169		   001				.IF	NE,C$$UNW
   170						.PSECT	$PLIT$,D,RO
   171					UNWSIG:	.WORD	1,SS$UNW	; UNWIND SIGNAL vector.
   172		   000				.ENDC
   173						.IIF	NE,<E.LVL-0>,.ERROR E.LVL; must be first word in EXV
   174						.IIF	NE,<E.PDB-2-E.LVL>,.ERROR E.PDB; must follow level
   175						.IIF	NE,<E.DSP-2-E.PDB>,.ERROR E.DSP; must follow PDB
   176						.IIF	NE,<E.ENA-2-E.DSP>,.ERROR E.ENA; must follow dispatch
   177						.IIF	NE,<Z.DSP-0>,.ERROR Z.DSP; must be first word in PD
CEXSGE	- BLISS-16 CONDITION HANDLING FACILITY	DNMAC X24.07-563  28-MAY-85  14:23  PAGE 3
CEXSGE.M11    30-DEC-82 00:25		$DBGDL	- SINGAL ROUTINE ENTRY/EXIT

   179						.SBTTL	$DBGDL	- Singal Routine Entry/Exit
   180					;++
   181					; FUNCTIONAL DESCRIPTION:
   182					;
   183					;	None
   184					;
   185					; CALLING SEQUENCE:
   186					;
   187					;	CALL	$DBGDL
   188					;	.
   189					;	:
   190					;	BR	.+22
   191					;	.ASCII	/modulnam/
   192					;	.ASCII	/routinam/
   193					;
   194					; INPUT PARAMETERS:
   195					;
   196					;	None
   197					;
   198					; IMPLICIT INPUTS:
   199					;
   200					;	None
   201					;
   202					; OUTPUT PARAMETERS:
   203					;
   204					;	None
   205					;
   206					; IMPLICIT OUTPUTS:
   207					;
   208					;	None
   209					;
   210					; CONDITION CODES:
   211					;
   212					;	None
   213					;
   214					; SIDE EFFECTS:
   215					;
   216					;	None
   217					;--
   218
   219		000000'				.PSECT	$CODE$,I,RO
   220	000000'				$DBGDL::PUSH$S	<@#KISAR5,.DBGFP> ; Link us
   221	000010'	010667	000000G			MOV	SP,.DBGFP	; into frame list.
   222	000014'	004767	000244			CALL	DBGCHK		; If asked,
   223	000020'	000000G				CE$RCL			; indicate that the routine is being called.
   224	000022'	004776	000002			CALL	@2(SP)		; Invoke the routine.
   225	000026'	004767	000232			CALL	DBGCHK		; If asked,
   226	000032'	000000G				CE$RRT			; indicate that the routine is returning.
   227	000034'					POP$S	<.DBGFP,,>	; Remove from frame list
   228	000044'	000207				RETURN			; and drop out of routine.
CEXSGE	- BLISS-16 CONDITION HANDLING FACILITY	DNMAC X24.07-563  28-MAY-85  14:23  PAGE 4
CEXSGE.M11    30-DEC-82 00:25		$ETUNW	- INITIATE UNWIND PROCESSING

   230						.SBTTL	$ETUNW	- Initiate Unwind Processing
   231					;++
   232					; FUNCTIONAL DESCRIPTION:
   233					;
   234					;	Invoked by:
   235					;	    SETUNWIND ();
   236					;
   237					; CALLING SEQUENCE:
   238					;
   239					;	$ETUNW ()
   240					;
   241					; INPUT PARAMETERS:
   242					;
   243					;	None
   244					;
   245					; IMPLICIT INPUTS:
   246					;
   247					;	None
   248					;
   249					; OUTPUT PARAMETERS:
   250					;
   251					;	None
   252					;
   253					; IMPLICIT OUTPUTS:
   254					;
   255					;	None
   256					;
   257					; CONDITION CODES:
   258					;
   259					;	None
   260					;
   261					; SIDE EFFECTS:
   262					;
   263					;	None
   264					;--
   265
   266		000046'				.PSECT	$CODE$,I,RO
   267		   001				.IF	NE,C$$UNW
   268					$ETUNW::MOVB	#1,.UNWLV	; Set unwind level
   269						RETURN			; and return.
   270		   000				.ENDC
CEXSGE	- BLISS-16 CONDITION HANDLING FACILITY	DNMAC X24.07-563  28-MAY-85  14:23  PAGE 5
CEXSGE.M11    30-DEC-82 00:25		$HANDL	- CALL A USER CONDITION HANDLING ROUTINE

   272						.SBTTL	$HANDL	- Call a User Condition Handling Routine
   273					;++
   274					; FUNCTIONAL DESCRIPTION:
   275					;
   276					;	None
   277					;
   278					; CALLING SEQUENCE:
   279					;
   280					;	$HANDL (arg1, arg2, ..., number_of_args, handler_routine)
   281					;
   282					; INPUT PARAMETERS:
   283					;
   284					;
   285					;
   286					; IMPLICIT INPUTS:
   287					;
   288					;	None
   289					;
   290					; OUTPUT PARAMETERS:
   291					;
   292					;	None
   293					;
   294					; IMPLICIT OUTPUTS:
   295					;
   296					;	None
   297					;
   298					; CONDITION CODES:
   299					;
   300					;	None
   301					;
   302					; SIDE EFFECTS:
   303					;
   304					;	None
   305					;--
   306
   307		000046'				.PSECT	$CODE$,I,RO
   308	000046'	016700	000000G		$HANDL::MOV	.MCHVC,R0	; Get mechanism vector
   309	000052'					PUSH$S	<M.SIG(R0),R0,#3.*2+4> ; and set up
   310	000064'	060616				ADD	SP,(SP)		; condition handler arguments.
   311		   001				.IF	NE,C$$UNW
   312						CLRB	.UNWLV		; Assume no UNWINDing and
   313		   000				.ENDC
   314	000066'	004776	000010			CALL	@3.*2+2(SP)	; call the user handler routine.
   315	000072'				HANDL:	POP$S	,2		; Remove enable and mechanism addresses
CEXSGE	- BLISS-16 CONDITION HANDLING FACILITY	DNMAC X24.07-563  28-MAY-85  14:23  PAGE 5-1
CEXSGE.M11    30-DEC-82 00:25		$HANDL	- CALL A USER CONDITION HANDLING ROUTINE

   317					;
   318					; There are now four options:
   319					;
   320					;  1)	An unwind is already in progress
   321					;  2)	An unwind has been requested
   322					;  3)	Resignalling is being requested
   323					;  4)	The signalling routine is to be continued
   324					;
   325
   326		   001				.IF	NE,C$$UNW
   327						CMP	#UNWSIG,(SP)+	; If UNWIND already in progress
   328						BEQ	UNWIN2		; then go see if finished.
   329						.IFTF
   330
   331	000074'	016706	000000G			MOV	.MCHVC,SP	; Recover SIGNAL stack pointer.
   332						.IFT
   333						TSTB	.UNWLV		; If user has requested UNWIND
   334						BNE	UNWIND		; then start processing.
   335		   000				.ENDC
   336
   337	000100'	006200				ASR	R0		; If no resignalling requested
   338	000102'	103433				BCS	RETSIG		; then complete the SIGNAL call
   339	000104'	000167	000204			JMP	SIGNAL		; otherwise go on to next frame.
CEXSGE	- BLISS-16 CONDITION HANDLING FACILITY	DNMAC X24.07-563  28-MAY-85  14:23  PAGE 5-2
CEXSGE.M11    30-DEC-82 00:25		$HANDL	- CALL A USER CONDITION HANDLING ROUTINE

   341					;
   342					; This handler has requested an unwind. Unwinding is done by
   343					; scanning back through the stack and calling each handler
   344					; until we match the handler that requested unwind. The $IGREG
   345					; will point to next outer enable frame when we return.
   346					; In this unwind process, the value returned by the handler
   347					; is ignored.
   348					;
   349
   350		   001				.IF	NE,C$$UNW
   351					UNWIND:	MOV	M.FRM(SP),R0	; Get starting frame pointer,
   352						MOV	$IGREG,M.FRM(SP) ; Exchange with current one.
   353						MOV	R0,$IGREG
   354						MOV	#UNWSIG,M.SIG(SP) ; Set up the SS$UNW signal vector,
   355					UNWIN1:	MOV	.MCHVC,SP	; recover signal stack
   356						JMP	SIGNAL		; and invoke the handler.
   357
   358					;
   359					; An unwind is in progress.
   360					;
   361
   362					UNWIN2:	MOV	.MCHVC,R0	; Get MeCHanism vector
   363						CMP	$IGREG,M.FRM(R0) ; and if we are backed to UNWIND requestor
   364						BNE	UNWIN1		; then
   365
   366					;
   367					; Now, we return from the routine which established this handler.
   368					;
   369
   370						MOV	(SP),(R0)	; Get return address,
   371						ADD	$HANSP,SP	; adjust the stack
   372						MOV	(R0)+,(SP)	; and reset address.
   373						MOV	(R0),R0		; Get routine value from mechanism vector,
   374						RETURN			; and let him exit.
   375		   000				.ENDC
CEXSGE	- BLISS-16 CONDITION HANDLING FACILITY	DNMAC X24.07-563  28-MAY-85  14:23  PAGE 6
CEXSGE.M11    30-DEC-82 00:25		$IGNAL	- INITIATE CONDITION HANDLING

   377						.SBTTL	$IGNAL	- Initiate Condition Handling
   378					;++
   379					; FUNCTIONAL DESCRIPTION:
   380					;
   381					;	Invoked by:
   382					;	    SIGNAL (arg1, arg2, ...);
   383					;
   384					; CALLING SEQUENCE:
   385					;
   386					;	$IGNAL (arg1, arg2, ..., number_of_args)
   387					;
   388					; INPUT PARAMETERS:
   389					;
   390					;	None
   391					;
   392					; IMPLICIT INPUTS:
   393					;
   394					;	None
   395					;
   396					; OUTPUT PARAMETERS:
   397					;
   398					;	None
   399					;
   400					; IMPLICIT OUTPUTS:
   401					;
   402					;	None
   403					;
   404					; CONDITION CODES:
   405					;
   406					;	None
   407					;
   408					; SIDE EFFECTS:
   409					;
   410					;	None
   411					;--
   412
   413		000110'				.PSECT	$CODE$,I,RO
   414	000110'	004767	000004		$IGNAL::CALL	SETSIG		; Set up MeCHanism vector
   415	000114'	000167	000174			JMP	SIGNAL		; and start signalling.
   416
   417					;
   418					; Set up MeCHanism vector for SIGnal
   419					;
   420
   421	000120'				SETSIG:	PUSH$S	<#MEXV,#M.LNG+2,.MCHVC,$IGREG,$HANSP>
   422	000144'					PUSH$S	<@#KISAR5,R0,#1>
   423	000156'	060666	000014			ADD	SP,M.SIG(SP)
   424	000162'	010667	000000G			MOV	SP,.MCHVC
   425	000166'	000176	000020			JMP	@M.LVL(SP)
   426					;
   427					; Return from the signal
   428					;
   429
   430	000172'				RETSIG:	POP$S	<,R0,@#KISAR5>
   431	000202'					POP$S	<$HANSP,$IGREG,.MCHVC>
   432	000216'					POP$S	,3
CEXSGE	- BLISS-16 CONDITION HANDLING FACILITY	DNMAC X24.07-563  28-MAY-85  14:23  PAGE 6-1
CEXSGE.M11    30-DEC-82 00:25		$IGNAL	- INITIATE CONDITION HANDLING

   433	000222'	000207				RETURN
CEXSGE	- BLISS-16 CONDITION HANDLING FACILITY	DNMAC X24.07-563  28-MAY-85  14:23  PAGE 7
CEXSGE.M11    30-DEC-82 00:25		$STOP	- INITIATE CONDITION HANDLING

   435						.SBTTL	$STOP	- Initiate Condition Handling
   436					;++
   437					; FUNCTIONAL DESCRIPTION:
   438					;
   439					;	Invoked by:
   440					;	    SIGNAL_STOP (arg1, arg2, ...);
   441					;
   442					; CALLING SEQUENCE:
   443					;
   444					;	$STOP (arg1, arg2, ..., number_of_args)
   445					;
   446					; INPUT PARAMETERS:
   447					;
   448					;	None
   449					;
   450					; IMPLICIT INPUTS:
   451					;
   452					;	None
   453					;
   454					; OUTPUT PARAMETERS:
   455					;
   456					;	None
   457					;
   458					; IMPLICIT OUTPUTS:
   459					;
   460					;	None
   461					;
   462					; CONDITION CODES:
   463					;
   464					;	None
   465					;
   466					; SIDE EFFECTS:
   467					;
   468					;	None
   469					;--
   470
   471		000224'				.PSECT	$CODE$,I,RO
   472	000224'	004767	000016		$STOP::	CALL	20$		; Spring the signal
   473	000230'				10$:	PUSH$S	<#SS$STP,#1>	; and if he continues
   474	000240'	004767	177644			CALL	$IGNAL		; admonish him
   475	000244'	000771				BR	10$		; again and again.
   476
   477	000246'	004767	177646		20$:	CALL	SETSIG		; Set the signal context,
   478	000252'	062766	000002	000014		ADD	#2,M.SIG(SP)	; adjust the signal vector address
   479	000260'	000167	000030			JMP	SIGNAL		; and spring the SIGNAL.
CEXSGE	- BLISS-16 CONDITION HANDLING FACILITY	DNMAC X24.07-563  28-MAY-85  14:23  PAGE 8
CEXSGE.M11    30-DEC-82 00:25		DBGCHK	- SIGNAL ROUTINE ENTRY/EXIT IF ASKED

   481						.SBTTL	DBGCHK	- Signal Routine Entry/Exit If Asked
   482					;++
   483					; FUNCTIONAL DESCRIPTION:
   484					;
   485					;	None
   486					;
   487					; CALLING SEQUENCE:
   488					;
   489					;	JMP	DBGCHK
   490					;	.WORD	status_code
   491					;
   492					; INPUT PARAMETERS:
   493					;
   494					;	None
   495					;
   496					; IMPLICIT INPUTS:
   497					;
   498					;	None
   499					;
   500					; OUTPUT PARAMETERS:
   501					;
   502					;	None
   503					;
   504					; IMPLICIT OUTPUTS:
   505					;
   506					;	None
   507					;
   508					; CONDITION CODES:
   509					;
   510					;	None
   511					;
   512					; SIDE EFFECTS:
   513					;
   514					;	None
   515					;--
   516
   517		000264'				.PSECT	$CODE$,I,RO
   518	000264'	105767	000000G		DBGCHK:	TSTB	.DBGST		; If no call tracing
   519	000270'	001003				BNE	70$		; then
   520	000272'	062716	000002			ADD	#2,(SP)		; bypass the status code.
   521	000276'	000207				RETURN
   522	000300'				70$:	PUSH$S	@(SP)		; Otherwise set status code
   523	000304'	061766	000002			ADD	(PC),2(SP)	; and return addresses,
   524	000310'	000167	000000G			JMP	$CRSH		; and do the signal.
CEXSGE	- BLISS-16 CONDITION HANDLING FACILITY	DNMAC X24.07-563  28-MAY-85  14:23  PAGE 9
CEXSGE.M11    30-DEC-82 00:25		SIGNAL	- SIGNAL TO THE NEXT EXCEPTION HANDLER

   526						.SBTTL	SIGNAL	- Signal to the Next Exception Handler
   527					;++
   528					; FUNCTIONAL DESCRIPTION:
   529					;
   530					;	None
   531					;
   532					; CALLING SEQUENCE:
   533					;
   534					;	JMP	SIGNAL
   535					;
   536					; INPUT PARAMETERS:
   537					;
   538					;	None
   539					;
   540					; IMPLICIT INPUTS:
   541					;
   542					;	None
   543					;
   544					; OUTPUT PARAMETERS:
   545					;
   546					;	None
   547					;
   548					; IMPLICIT OUTPUTS:
   549					;
   550					;	None
   551					;
   552					; CONDITION CODES:
   553					;
   554					;	None
   555					;
   556					; SIDE EFFECTS:
   557					;
   558					;	None
   559					;--
   560
   561		000314'				.PSECT	$CODE$,I,RO
   562	000314'	000176	000016		SIGNAL:	JMP	@M.EXR(SP)	; Go to next processor.
   563
   564	000320'	012700	000000G		MEXV:	MOV	#.MEXV1,R0	; Primary exception.
   565	000324'	004767	000060			CALL	60$
   566
   567	000330'	012700	000000G			MOV	#.MEXV2,R0	; Secondary exception.
   568	000334'	004767	000050			CALL	60$
   569
   570	000340'	005266	000020		20$:	INC	M.LVL(SP)	; Bump exception depth
   571	000344'	100775				BMI	20$		; and make sure it starts at zero.
   572	000346'	016700	000000G			MOV	$IGREG,R0	; Get next handler frame
   573	000352'	001407				BEQ	22$		; (if there is one)
   574	000354'	012067	000000G			MOV	(R0)+,$IGREG	; and pop to next.
   575	000360'	012067	000000G			MOV	(R0)+,$HANSP	; Put SP for the ENABLE body in a global place
   576	000364'	160667	000000G			SUB	SP,$HANSP	; to get offset for locals on enable stack
   577	000370'	000130				JMP	@(R0)+		; and go to ENABLE code (ie) $HANDL.
   578
   579	000372'				22$:;	CALL	50$							;UNUSED
   580
   581	000372'	012700	000000G		30$:	MOV	#.MEXVL,R0	; Last chance exception.
CEXSGE	- BLISS-16 CONDITION HANDLING FACILITY	DNMAC X24.07-563  28-MAY-85  14:23  PAGE 9-1
CEXSGE.M11    30-DEC-82 00:25		SIGNAL	- SIGNAL TO THE NEXT EXCEPTION HANDLER

   582	000376'	004767	000006			CALL	60$
   583
   584	000402'	012700	000000G			MOV	#.MEXVD,R0	; MCB dumper exception.
   585	000406'	000402				BR	62$
   586
   587	000410'				50$:;	POP$S	M.EXR(SP)	; Set next exception processor.		;UNUSED
   588					;	MOV	@.CRPDB,@#KISAR5 ; Set process mapping			;UNUSED
   589					;	MOV	#PHDSIG,R0	; get signal address			;UNUSED
   590					;	TST	(R0)+		; and check address			;UNUSED
   591					;	BEQ	SIGNAL		; if it is there.			;UNUSED
   592					;	CLR	$HANSP		; No stack offset			;UNUSED
   593					;	PUSH$S	<M.SIG(SP),.MCHVC,#0>					;UNUSED
   594					;				; Set exception handler parameters	;UNUSED
   595					;	BR	68$		; and do the signal.			;UNUSED
   596
   597	000410'				60$:	POP$S	M.EXR(SP)	; Set next exception processor.
   598	000414'	012066	000020		62$:	MOV	(R0)+,M.LVL(SP)	; Exception level
   599	000420'	013037	000000G			MOV	@(R0)+,@#KISAR5	; process mapping
   600	000424'	005720				TST	(R0)+		; and check address
   601	000426'	001732				BEQ	SIGNAL		; if it is there.
   602	000430'	005067	000000G			CLR	$HANSP		; No stack offset
   603	000434'					PUSH$S	<M.SIG(SP),.MCHVC,(R0)>
   604									; Set exception handler parameters
   605	000446'				68$:
   606		   001				.IF	NE,C$$UNW
   607						CLRB	.UNWLV		; assume no UNWINDing and
   608		   000				.ENDC
   609	000446'	004750				CALL	@-(R0)		; call the user handler routine.
   610	000450'	016637	000012	000000G		MOV	6+M.AR5(SP),@#KISAR5 ; Remap to original process
   611	000456'	000167	177410			JMP	HANDL		; and see how called handler did.
   612
   613		000001				.END
CEXSGE	- BLISS-16 CONDITION HANDLING FACILITY	DNMAC X24.07-563  28-MAY-85  14:23  PAGE 10
CEXSGE.M11    30-DEC-82 00:25		CROSS REFERENCE TABLE -- USER SYMBOLS

BL$CMP= ****** G      	  105#
BL$CPY= ****** G      	  106#
BL$EQL= ****** G      	  105#
BL$FCH= ****** G      	  107#
BL$FIL= ****** G      	  109#
BL$FNC= ****** G      	  107#
BL$FSB= ****** G      	  108#
BL$GEQ= ****** G      	  105#
BL$GTR= ****** G      	  105#
BL$LEQ= ****** G      	  105#
BL$LSS= ****** G      	  105#
BL$MOV= ****** G      	  109#
BL$NEQ= ****** G      	  105#
CE$RCL= ****** G      	  223
CE$RRT= ****** G      	  226
C$$UNW= 000000        	  126#	  169	  267	  311	  326	  350	  606
DBGCHK  000264R    002	  222*	  225*	  518#
E.DSP   000004        	  175	  176
E.ENA   000006        	  176
E.LVL   000000        	  173	  174
E.PDB   000002        	  174	  175
HANDL   000072R    002	  315#	  611
KISAR5= ****** G      	  103#	  220	  422	  430*	  599*	  610*
KISAR6= ****** G      	  103#
MEXV    000320R    002	  421	  564#
ML.LST= 177775 G      	  146#
ML.PRI= 177776 G      	  147#
ML.SEC= 177777 G      	  148#
M.AR5   000004 G      	  139#	  610
M.EXR   000016 G      	  144#	  562	  597*
M.FRM   000010 G      	  141#
M.HSP   000006 G      	  140#
M.LNG   000022 G      	  150#	  421
M.LVL   000020 G      	  145#	  425	  570*	  598*
M.MCH   000012 G      	  142#
M.R0    000002 G      	  138#
M.SIG   000014 G      	  143#	  309	  423*	  478*	  603
PS    = ****** G      	  103#
RETSIG  000172R    002	  338	  430#
SETSIG  000120R    002	  414*	  421#	  477*
SIGNAL  000314R    002	  339	  415	  479	  562#	  601
SS$STP= ****** G      	  473
SS$UNW= 077777 G      	  131#
SS$.UN= 077777 G      	  128#
Z.DSP   000000        	  177
$CRSH = ****** GX     	  524
$DBGDL  000000RG   002	  220#
$HANDL  000046RG   002	  308#
$HANSP= ****** G      	  159#	  421	  431*	  575*	  576*	  602*
$IGNAL  000110RG   002	  414#	  474*
$IGREG= ****** G      	  158#	  421	  431*	  572	  574*
$SAVE2= ****** G      	  116#
$SAVE3= ****** G      	  116#
$SAVE4= ****** G      	  116#
$SAVE5= ****** G      	  116#
$STOP   000224RG   002	  472#
CEXSGE	- BLISS-16 CONDITION HANDLING FACILITY	DNMAC X24.07-563  28-MAY-85  14:23  PAGE 10-1
CEXSGE.M11    30-DEC-82 00:25		CROSS REFERENCE TABLE -- USER SYMBOLS

.     = 000462R    002	  136#	  137#	  138#	  139#	  140#	  141#	  142#	  143#	  144#	  145#	  150#	  151#
.CRPIX= ****** G      	  103#
.DBGFP= ****** G      	  160#	  220	  221*	  227*
.DBGST= ****** G      	  161#	  518
.MCHVC= ****** G      	  163#	  308	  331	  421	  424*	  431*	  603
.MEXVD= ****** G      	  167#	  584
.MEXVL= ****** G      	  166#	  581
.MEXV1= ****** G      	  164#	  564
.MEXV2= ****** G      	  165#	  567
.UNWLV= ****** G      	  162#
CEXSGE	- BLISS-16 CONDITION HANDLING FACILITY	DNMAC X24.07-563  28-MAY-85  14:23  PAGE 11
CEXSGE.M11    30-DEC-82 00:25		CROSS REFERENCE TABLE -- MACRO NAMES

POP$S	  102#	  227	  315	  430	  431	  432	  597
PUSH$S	  102#	  220	  309	  421	  422	  473	  522	  603
SAV5$S	  102#


. ABS.  000022     000	   CON   RO    ABS   LCL   I  
        000000     001	   CON   RW    REL   LCL   I  
$CODE$  000462     002	   CON   RO    REL   LCL   I  


 ERRORS DETECTED:  0
 DEFAULT GLOBALS GENERATED:  1

 CEXSGE,CEXSGE/CR=MCB:RSXLIB/PA:1,MCBLIB/PA:1,CEX:CEXLIB/PA:1,CEXSGE
 RUN-TIME: 4 1 .3 SECONDS
 RUN-TIME RATIO: 15/6=2.3
 CORE USED:  15K  (29 PAGES)