Google
 

Trailing-Edge - PDP-10 Archives - BB-P363B-SM_1985 - mcb/cex/cexsyn.lst
There are no other files named cexsyn.lst in the archive.
CEXSYN - SYNCHRONOUS INTERFACE SERVICES	DNMAC X24.07-563  28-MAY-85  14:24
CEXSYN.M11    30-DEC-82 00:34		TABLE OF CONTENTS

  2652		DECLARATIONS
  2680		$CALLE - BLISS Call Extension Routine
  2739		$CALLI - Call CEX Process for System Function
  2795		$CALLP - Call Process Routine
  2861		RESEXT - Register Restore Routine
  2901		RESPRC - Register Restore Routine
  2948		RESREG - Register Restore Routine
  2988		SAVEXT - Register Save/Restore Co-routine
  3037		SAVPRC - Register Save/Restore Co-routines
  3106		SAVREG - Register Save/Restore Co-routines
  3153		SIGNAL - Execute a Signal
CEXSYN - SYNCHRONOUS INTERFACE SERVICES	DNMAC X24.07-563  28-MAY-85  14:24  PAGE 1
CEXSYN.M11    30-DEC-82 00:34

     1						.TITLE	CEXSYN - SYNCHRONOUS INTERFACE SERVICES
     2						.IDENT	/003190/
     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: MCB Communications Executive
    28					;
    29					; FUNCTIONAL ABSTRACT:
    30					;
    31					;	This module contains the routines to dispatch synchronous
    32					;	interface calls.
    33					;
    34					; ENVIRONMENT: RSX kernel mode with EIS
    35					;
    36					; AUTHOR: Alan D. Peckham, CREATION DATE: 27-MAR-80
    37					;
    38					; MODIFIED BY:
    39					;
    40					;	Alan D. Peckham, 2-Jul-80: VERSION 3.0
    41					; 01	- Change CRSH$ references to CRSH$S.
    42					; 02	- Globalize references to I/O page.
    43					; 03	- Correct PDT references.
    44					; 04	- Pick up PIX from right stack offset in both routines.
    45					; 05	- Add new synchronous extension call for BLISS.
    46					;	  Pull in BLISS support routine $CALL.
    47					; 06	- Update CRSH$S contexts.
    48					; 07	- Do process mapping during SIGNAL processing.
    49					; 08	- Update signal processing.
    50					;	  Add conditional process activation signal to
    51					;	    $CALLB, $CALLE, $CALLP.
    52					; 09	- Take advantage of process descriptor re-organization.
    53					;	  Fix signal status code for process activation.
    54					; 10	- Remove process activation signals.
    55					;	Alan D. Peckham, 9-Dec-80: VERSION 3.1
    56					; 11	- Update for MCB V3.1
CEXSYN - SYNCHRONOUS INTERFACE SERVICES	DNMAC X24.07-563  28-MAY-85  14:24  PAGE 1-1
CEXSYN.M11    30-DEC-82 00:34

    57					; 12	- Add support for data base words in $CALLP.
    58					;	Alan D. Peckham, 30-Jan-80: VERSION 3.2
    59					; 13	- Support .CRPDB as current process descriptor.
    60					;	  Fix discovered bugs in unwind handlers.
    61					;	  Alter access to process descriptor blocks to go
    62					;	  through .PDBVB - PDB vector.
    63					; 14	- BIG bug in signalling through $CALLP. Do context switch
    64					;	  only during unwind; otherwise only do remap.
    65					;	  Disallow PIX #0 in $CALLE and $CALLP.
    66					; 15	- Correct APR5 mapping bug in $CALLP.
    67					; 16	- Add $CALLI routine to indexed CEX process calling.
    68					;	  Add signal status return to $CALLC and $CALLI.
    69					; 17	- Remove $CALLC.
    70					; 18	- Add common register save/restore routines SAVEXT and SAVPRC.
    71					; 19	- Fix mechanism vector access in condition handling routines.
    72					;	  Add commenting.
    73					;--
CEXSYN - SYNCHRONOUS INTERFACE SERVICES	DNMAC X24.07-563  28-MAY-85  14:24  PAGE 2
CEXSYN.M11    30-DEC-82 00:34		DECLARATIONS

    75						.SBTTL	DECLARATIONS
    76
    77					;
    78					; INCLUDE FILES:
    79					;
    80
    81						.MCALL	CRSH$S
    82						.GLOBL	$IGNAL,KISAR5
    83						.GLOBL	$CALL		; B16FTN module
    84
    85					;
    86					; MACROS:
    87					;
    88					;	None
    89					;
    90					; EQUATED SYMBOLS:
    91					;
    92					;	None
    93					;
    94					; OWN STORAGE:
    95					;
    96					;	None
    97					;
    98					; VALIDATION DECLARATIONS:
    99					;
   100
   101						.IIF	NE,<Z.DSP>,.ERROR Z.DSP; Must be zero
CEXSYN - SYNCHRONOUS INTERFACE SERVICES	DNMAC X24.07-563  28-MAY-85  14:24  PAGE 3
CEXSYN.M11    30-DEC-82 00:34		$CALLE - BLISS CALL EXTENSION ROUTINE

   103						.SBTTL	$CALLE - BLISS Call Extension Routine
   104					;++
   105					; FUNCTIONAL DESCRIPTION:
   106					;
   107					;	Activate a routine within another process.
   108					;
   109					; CALLING SEQUENCE:
   110					;
   111					;	$CALLE (data_base_index, routine_address[, parameters]);
   112					;
   113					; INPUT PARAMETERS:
   114					;
   115					;	None
   116					;
   117					; IMPLICIT INPUTS:
   118					;
   119					;	On the stack:
   120					;	    2(SP) = data base index.
   121					;	    4(SP) = routine address.
   122					;	    6(SP) = parameters.
   123					;
   124					; OUTPUT PARAMETERS:
   125					;
   126					;	None
   127					;
   128					; IMPLICIT OUTPUTS:
   129					;
   130					;	None
   131					;
   132					; CONDITION CODES:
   133					;
   134					;	None
   135					;
   136					; SIDE EFFECTS:
   137					;
   138					;	The condition codes are not preserved.
   139					;--
   140
   141		000000'				.PSECT	$CODE$,I,RO
   142	000000'				$CALLE::PLVL$			; Crash if not at process level.
   143
   144		   001				.IF	NE,D$$BUG
   145						TST	2+0(SP)		; If data base index
   146						BEQ	STOP		; is
   147						CMP	.PDBNM,2+0(SP)	; out of range
   148						BLOS	STOP		; then crash about it.
   149						.IFTF
   150
   151	000000'	004167	000264			JSR	R1,SAVEXT	; Save context for extension call.
   152	000004'	012501				MOV	(R5)+,R1	; Pick up destination PIX
   153	000006'	006301				ASL	R1		; and
   154	000010'	017137	000000G	000000G		MOV	@.PDBVB(R1),@#KISAR5 ; map to code.
   155	000016'	004735				CALL	@(R5)+		; Hello !
   156	000020'	000467				BR	RESEXT		; Restore extension context.
   157
   158						.IFT
CEXSYN - SYNCHRONOUS INTERFACE SERVICES	DNMAC X24.07-563  28-MAY-85  14:24  PAGE 3-1
CEXSYN.M11    30-DEC-82 00:34		$CALLE - BLISS CALL EXTENSION ROUTINE

   159					STOP:	CRSH$S	PIX		; Destination process index out of range
   160		   000				.ENDC
CEXSYN - SYNCHRONOUS INTERFACE SERVICES	DNMAC X24.07-563  28-MAY-85  14:24  PAGE 4
CEXSYN.M11    30-DEC-82 00:34		$CALLI - CALL CEX PROCESS FOR SYSTEM FUNCTION

   162						.SBTTL	$CALLI - Call CEX Process for System Function
   163					;++
   164					; FUNCTIONAL DESCRIPTION:
   165					;
   166					;	Activate a routine within the CEX process.
   167					;
   168					; CALLING SEQUENCE:
   169					;
   170					;	$CALLC (request_index[, parameters]);
   171					;
   172					; INPUT PARAMETERS:
   173					;
   174					;	None
   175					;
   176					; IMPLICIT INPUTS:
   177					;
   178					;	On the stack:
   179					;	    2(SP) = request index.
   180					;	    4(SP) = parameters.
   181					;
   182					; OUTPUT PARAMETERS:
   183					;
   184					;	None
   185					;
   186					; IMPLICIT OUTPUTS:
   187					;
   188					;	None
   189					;
   190					; CONDITION CODES:
   191					;
   192					;	None
   193					;
   194					; SIDE EFFECTS:
   195					;
   196					;	The condition codes are not preserved.
   197					;--
   198
   199		000022'				.PSECT	$CODE$,I,RO
   200	000022'				$CALLI::PLVL$			; Crash if not at process level.
   201	000022'	004767	000032			CALL	CALLI
   202	000026'	005767	000000G			TST	.CEXST		; If there was an error
   203	000032'	001411				BEQ	90$		; then
   204	000034'					PUSH$S	<.CEXST,#1>	; signal it now.
   205	000044'	005067	000000G			CLR	.CEXST
   206	000050'	004767	000000G			CALL	$IGNAL
   207	000054'					POP$S	,2
   208	000056'	000207			90$:	RETURN
   209
   210	000060'	004167	000204		CALLI:	JSR	R1,SAVEXT	; Save context for extension call.
   211	000064'	005725				TST	(R5)+		; (adjust for extra return PC)
   212	000066'	012500				MOV	(R5)+,R0	; Pick up index,
   213	000070'	017737	000000G	000000G		MOV	@.PDBVB,@#KISAR5 ; map to CEX process
   214	000076'	063700	120034			ADD	@#PHDCTB,R0	; and
   215	000102'	004730				CALL	@(R0)+		; call the requested function.
   216	000104'	000435				BR	RESEXT		; Restore extension context.
CEXSYN - SYNCHRONOUS INTERFACE SERVICES	DNMAC X24.07-563  28-MAY-85  14:24  PAGE 5
CEXSYN.M11    30-DEC-82 00:34		$CALLP - CALL PROCESS ROUTINE

   218						.SBTTL	$CALLP - Call Process Routine
   219					;++
   220					; FUNCTIONAL DESCRIPTION:
   221					;
   222					;	Activate another process at the specified address.
   223					;
   224					; CALLING SEQUENCE:
   225					;
   226					;	$CALLP (data_base_index, routine_address[, parameters]);
   227					;
   228					; INPUT PARAMETERS:
   229					;
   230					;	None
   231					;
   232					; IMPLICIT INPUTS:
   233					;
   234					;	On the stack:
   235					;	    2(SP) = data base index.
   236					;	    4(SP) = routine address.
   237					;	    6(SP) = parameters.
   238					;
   239					; OUTPUT PARAMETERS:
   240					;
   241					;	None
   242					;
   243					; IMPLICIT OUTPUTS:
   244					;
   245					;	None
   246					;
   247					; CONDITION CODES:
   248					;
   249					;	None
   250					;
   251					; SIDE EFFECTS:
   252					;
   253					;	The condition codes are not preserved.
   254					;--
   255
   256		000106'				.PSECT	$CODE$,I,RO
   257	000106'				$CALLP::PLVL$			; Crash if not at process level.
   258
   259		   001				.IF	NE,D$$BUG
   260						TST	2+0(SP)		; If data base index
   261						BEQ	STOP		; is
   262						CMP	.PDBNM,2+0(SP)	; out of range
   263						BLOS	STOP		; then crash about it.
   264		   000				.ENDC
   265
   266	000106'	004167	000226			JSR	R1,SAVPRC	; Save context for process call.
   267	000112'	012500				MOV	(R5)+,R0	; Pick up process index
   268	000114'	006300				ASL	R0		; to
   269	000116'	016000	000000G			MOV	.PDBVB(R0),R0	; set up
   270	000122'	010067	000000G			MOV	R0,.CRPDB	; as current process.
   271	000126'	012037	000000G			MOV	(R0)+,@#KISAR5
   272	000132'	012067	000000G			MOV	(R0)+,.CRDSP
   273	000136'	012067	000000G			MOV	(R0)+,.CRDAT+0
CEXSYN - SYNCHRONOUS INTERFACE SERVICES	DNMAC X24.07-563  28-MAY-85  14:24  PAGE 5-1
CEXSYN.M11    30-DEC-82 00:34		$CALLP - CALL PROCESS ROUTINE

   274	000142'	012067	000002G			MOV	(R0)+,.CRDAT+2
   275	000146'	111067	000000G			MOVB	(R0),.CRPIX
   276	000152'	004735				CALL	@(R5)+		; Let him do his thing.
   277	000154'	016701	000000G			MOV	.CRPDB,R1	; Save his context
   278	000160'	005721				TST	(R1)+
   279	000162'	016721	000000G			MOV	.CRDSP,(R1)+	; and
   280	000166'	016721	000000G			MOV	.CRDAT+0,(R1)+
   281	000172'	016711	000002G			MOV	.CRDAT+2,(R1)
   282	000176'	000404				BR	RESPRC		; restore previous context.
CEXSYN - SYNCHRONOUS INTERFACE SERVICES	DNMAC X24.07-563  28-MAY-85  14:24  PAGE 6
CEXSYN.M11    30-DEC-82 00:34		RESEXT - REGISTER RESTORE ROUTINE

   284						.SBTTL	RESEXT - Register Restore Routine
   285					;++
   286					; FUNCTIONAL DESCRIPTION:
   287					;
   288					;	Restore the user context after a call to an extension process.
   289					;
   290					; CALLING SEQUENCE:
   291					;
   292					;	JMP	RESEXT
   293					;
   294					; INPUT PARAMETERS:
   295					;
   296					;	None
   297					;
   298					; IMPLICIT INPUTS:
   299					;
   300					;	None
   301					;
   302					; OUTPUT PARAMETERS:
   303					;
   304					;	None
   305					;
   306					; IMPLICIT OUTPUTS:
   307					;
   308					;	None
   309					;
   310					; CONDITION CODES:
   311					;
   312					;	None
   313					;
   314					; SIDE EFFECTS:
   315					;
   316					;	The condition codes are not preserved.
   317					;--
   318
   319		000200'				.PSECT	$CODE$,I,RO
   320	000200'				RESEXT:	POP$S	$IGREG		; Clean up
   321	000204'					POP$S	,2		; condition handling block
   322	000206'	000420				BR	RESREG		; and volatile registers.
CEXSYN - SYNCHRONOUS INTERFACE SERVICES	DNMAC X24.07-563  28-MAY-85  14:24  PAGE 7
CEXSYN.M11    30-DEC-82 00:34		RESPRC - REGISTER RESTORE ROUTINE

   324						.SBTTL	RESPRC - Register Restore Routine
   325					;++
   326					; FUNCTIONAL DESCRIPTION:
   327					;
   328					;	Restore the user context after a call to a process.
   329					;
   330					; CALLING SEQUENCE:
   331					;
   332					;	JMP	RESPRC
   333					;
   334					; INPUT PARAMETERS:
   335					;
   336					;	None
   337					;
   338					; IMPLICIT INPUTS:
   339					;
   340					;	None
   341					;
   342					; OUTPUT PARAMETERS:
   343					;
   344					;	None
   345					;
   346					; IMPLICIT OUTPUTS:
   347					;
   348					;	None
   349					;
   350					; CONDITION CODES:
   351					;
   352					;	None
   353					;
   354					; SIDE EFFECTS:
   355					;
   356					;	The condition codes are not preserved.
   357					;--
   358
   359		000210'				.PSECT	$CODE$,I,RO
   360	000210'				RESPRC:	POP$S	$IGREG		; Clean up
   361	000214'					POP$S	,2		; condition handling block,
   362	000216'					POP$S	R1		; and
   363	000220'	010167	000000G			MOV	R1,.CRPDB	; restore previous process context.
   364	000224'	005721				TST	(R1)+
   365	000226'	012167	000000G			MOV	(R1)+,.CRDSP
   366	000232'	012167	000000G			MOV	(R1)+,.CRDAT+0
   367	000236'	012167	000002G			MOV	(R1)+,.CRDAT+2
   368	000242'	111167	000000G			MOVB	(R1),.CRPIX
   369	000246'	000400				BR	RESREG		; Restore volatile registers.
CEXSYN - SYNCHRONOUS INTERFACE SERVICES	DNMAC X24.07-563  28-MAY-85  14:24  PAGE 8
CEXSYN.M11    30-DEC-82 00:34		RESREG - REGISTER RESTORE ROUTINE

   371						.SBTTL	RESREG - Register Restore Routine
   372					;++
   373					; FUNCTIONAL DESCRIPTION:
   374					;
   375					;	Restore the user register after a synchronous call.
   376					;
   377					; CALLING SEQUENCE:
   378					;
   379					;	JMP	RESREG
   380					;
   381					; INPUT PARAMETERS:
   382					;
   383					;	None
   384					;
   385					; IMPLICIT INPUTS:
   386					;
   387					;	None
   388					;
   389					; OUTPUT PARAMETERS:
   390					;
   391					;	None
   392					;
   393					; IMPLICIT OUTPUTS:
   394					;
   395					;	None
   396					;
   397					; CONDITION CODES:
   398					;
   399					;	None
   400					;
   401					; SIDE EFFECTS:
   402					;
   403					;	The condition codes are not preserved.
   404					;--
   405
   406		000250'				.PSECT	$CODE$,I,RO
   407	000250'				RESREG:	POP$S	@#KISAR5	; Restore code bias
   408	000254'					POP$S	<R5,R4,R3,R2,R1> ; and registers.
   409	000266'	000207				RETURN			; Back to caller !
CEXSYN - SYNCHRONOUS INTERFACE SERVICES	DNMAC X24.07-563  28-MAY-85  14:24  PAGE 9
CEXSYN.M11    30-DEC-82 00:34		SAVEXT - REGISTER SAVE/RESTORE CO-ROUTINE

   411						.SBTTL	SAVEXT - Register Save/Restore Co-routine
   412					;++
   413					; FUNCTIONAL DESCRIPTION:
   414					;
   415					;	Save the registers for a synchronous call and restore
   416					;	them on return.
   417					;
   418					; CALLING SEQUENCE:
   419					;
   420					;	JSR	R1,SAVEXT
   421					;
   422					; INPUT PARAMETERS:
   423					;
   424					;	None
   425					;
   426					; IMPLICIT INPUTS:
   427					;
   428					;	None
   429					;
   430					; OUTPUT PARAMETERS:
   431					;
   432					;	None
   433					;
   434					; IMPLICIT OUTPUTS:
   435					;
   436					;	R5 = pointer to parameter area.
   437					;
   438					; CONDITION CODES:
   439					;
   440					;	None
   441					;
   442					; SIDE EFFECTS:
   443					;
   444					;	The condition codes are not preserved.
   445					;--
   446
   447		000270'				.PSECT	$CODE$,I,RO
   448	000270'	004267	000230		SAVEXT:	JSR	R2,SAVREG	; Save registers (as co-routine)
   449	000274'					PUSH$S	<@#KISAR5>	; and the code bias.
   450	000300'	004715				JSR	PC,(R5)		; Set up CHF block and call caller.
   451									; Condition Handler:
   452	000302'	016700	000000G			MOV	$HANSP,R0	;  Get to our parameters
   453	000306'	060600				ADD	SP,R0		;  and
   454	000310'					PUSH$S	<6(R0),#1>	;  pass code bias.
   455	000320'	004767	000236			CALL	SIGNAL
   456	000324'	016600	000002			MOV	2(SP),R0	; Pick up the enable vector
   457	000330'	016037	000002	000000G		MOV	2(R0),@#KISAR5	; and map to this code.
   458	000336'	000207				RETURN			; (low bit is clear = FALSE)
CEXSYN - SYNCHRONOUS INTERFACE SERVICES	DNMAC X24.07-563  28-MAY-85  14:24  PAGE 10
CEXSYN.M11    30-DEC-82 00:34		SAVPRC - REGISTER SAVE/RESTORE CO-ROUTINES

   460						.SBTTL	SAVPRC - Register Save/Restore Co-routines
   461					;++
   462					; FUNCTIONAL DESCRIPTION:
   463					;
   464					;	Save the registers for a synchronous call and restore
   465					;	them on return.
   466					;
   467					; CALLING SEQUENCE:
   468					;
   469					;	JSR	R1,SAVPRC
   470					;
   471					; INPUT PARAMETERS:
   472					;
   473					;	None
   474					;
   475					; IMPLICIT INPUTS:
   476					;
   477					;	None
   478					;
   479					; OUTPUT PARAMETERS:
   480					;
   481					;	None
   482					;
   483					; IMPLICIT OUTPUTS:
   484					;
   485					;	R5 = pointer to parameter area.
   486					;
   487					; CONDITION CODES:
   488					;
   489					;	None
   490					;
   491					; SIDE EFFECTS:
   492					;
   493					;	The condition codes are not preserved.
   494					;--
   495
   496		000340'				.PSECT	$CODE$,I,RO
   497	000340'	004267	000160		SAVPRC:	JSR	R2,SAVREG	; Save registers (as co-routine)
   498	000344'	016700	000000G			MOV	.CRPDB,R0	; and
   499	000350'					PUSH$S	<@#KISAR5,R0>	; code bias and PDB.
   500	000356'	005720				TST	(R0)+		; Save current process context.
   501	000360'	016720	000000G			MOV	.CRDSP,(R0)+
   502	000364'	016720	000000G			MOV	.CRDAT+0,(R0)+
   503	000370'	016710	000002G			MOV	.CRDAT+2,(R0)
   504	000374'	004715				JSR	PC,(R5)		; Set up CHF block and call caller.
   505									; Condition Handler:
   506	000376'	016700	000000G		10$:	MOV	$HANSP,R0	;  Get to our parameters
   507	000402'	060600				ADD	SP,R0		;  and
   508	000404'					PUSH$S	<6(R0),10(R0),#2> ;pass bias and PDB.
   509	000420'	004767	000136			CALL	SIGNAL
   510	000424'	016600	000006			MOV	6(SP),R0	; Get signal vector address
   511	000430'	005720				TST	(R0)+		; and if there is a status
   512	000432'	001426				BEQ	80$		; then
   513	000434'	022710	000000G			CMP	#SS$.UN,(R0)	; handle the unwind case.
   514	000440'	001023				BNE	80$
   515	000442'	016600	000002			MOV	2(SP),R0	; Pick up the enable vector
CEXSYN - SYNCHRONOUS INTERFACE SERVICES	DNMAC X24.07-563  28-MAY-85  14:24  PAGE 10-1
CEXSYN.M11    30-DEC-82 00:34		SAVPRC - REGISTER SAVE/RESTORE CO-ROUTINES

   516	000446'	016037	000002	000000G		MOV	2(R0),@#KISAR5	; map the code,
   517	000454'	016000	000004			MOV	4(R0),R0	; and set it up as the current process.
   518	000460'	010067	000000G			MOV	R0,.CRPDB
   519	000464'	005720				TST	(R0)+
   520	000466'	012067	000000G			MOV	(R0)+,.CRDSP
   521	000472'	012067	000000G			MOV	(R0)+,.CRDAT+0
   522	000476'	012067	000002G			MOV	(R0)+,.CRDAT+2
   523	000502'	111067	000000G			MOVB	(R0),.CRPIX
   524	000506'	000207				RETURN			; (low bit is clear = FALSE)
   525	000510'	016600	000002		80$:	MOV	2(SP),R0	; Pick up the enable vector
   526	000514'	016037	000002	000000G		MOV	2(R0),@#KISAR5	; and map to code.
   527	000522'	000207				RETURN			; (low bit is clear = FALSE)
CEXSYN - SYNCHRONOUS INTERFACE SERVICES	DNMAC X24.07-563  28-MAY-85  14:24  PAGE 11
CEXSYN.M11    30-DEC-82 00:34		SAVREG - REGISTER SAVE/RESTORE CO-ROUTINES

   529						.SBTTL	SAVREG - Register Save/Restore Co-routines
   530					;++
   531					; FUNCTIONAL DESCRIPTION:
   532					;
   533					;	Save the registers for a synchronous call and restore
   534					;	them on return.
   535					;
   536					; CALLING SEQUENCE:
   537					;
   538					;	JSR	R2,SAVREG
   539					;
   540					; INPUT PARAMETERS:
   541					;
   542					;	None
   543					;
   544					; IMPLICIT INPUTS:
   545					;
   546					;	None
   547					;
   548					; OUTPUT PARAMETERS:
   549					;
   550					;	None
   551					;
   552					; IMPLICIT OUTPUTS:
   553					;
   554					;	R5 = pointer to parameter area.
   555					;
   556					; CONDITION CODES:
   557					;
   558					;	None
   559					;
   560					; SIDE EFFECTS:
   561					;
   562					;	The condition codes are not preserved.
   563					;--
   564
   565		000524'				.PSECT	$CODE$,I,RO
   566	000524'				SAVREG:	PUSH$S	<R3,R4>		; Save some more registers (1,2,3,4)
   567	000530'	010604				MOV	SP,R4		; (this is used later)
   568	000532'	004512				JSR	R5,(R2)		; and call-specific info (1,2,3,4,5,?).
   569	000534'					PUSH$S	<#0,$IGREG>	; Put up CHF block (rtn adr already pushed)
   570	000542'	060666	000002			ADD	SP,2(SP)
   571	000546'	010667	000000G			MOV	SP,$IGREG	; and
   572	000552'	012705	000012			MOV	#12,R5		; set up argument pointer.
   573	000556'	060405				ADD	R4,R5
   574	000560'	000111				JMP	(R1)		; All set for call.
CEXSYN - SYNCHRONOUS INTERFACE SERVICES	DNMAC X24.07-563  28-MAY-85  14:24  PAGE 12
CEXSYN.M11    30-DEC-82 00:34		SIGNAL - EXECUTE A SIGNAL

   576						.SBTTL	SIGNAL - Execute a Signal
   577					;++
   578					; FUNCTIONAL DESCRIPTION:
   579					;
   580					;	Please fill this in
   581					;
   582					; CALLING SEQUENCE:
   583					;
   584					;	CALL	SIGNAL
   585					;
   586					; INPUT PARAMETERS:
   587					;
   588					;	None
   589					;
   590					; IMPLICIT INPUTS:
   591					;
   592					;	None
   593					;
   594					; OUTPUT PARAMETERS:
   595					;
   596					;	None
   597					;
   598					; IMPLICIT OUTPUTS:
   599					;
   600					;	R5 = pointer to parameter area.
   601					;
   602					; CONDITION CODES:
   603					;
   604					;	None
   605					;
   606					; SIDE EFFECTS:
   607					;
   608					;	The condition codes are not preserved.
   609					;--
   610
   611		000562'				.PSECT	$CODE$,I,RO
   612	000562'	004767	000000G		SIGNAL:	CALL	$HANDL
   613	000566'	000000				HALT
   614
   615		000001				.END
CEXSYN - SYNCHRONOUS INTERFACE SERVICES	DNMAC X24.07-563  28-MAY-85  14:24  PAGE 13
CEXSYN.M11    30-DEC-82 00:34		CROSS REFERENCE TABLE -- USER SYMBOLS

CALLI   000060R    002	  201*	  210#
D$$BUG= 000000        	  142	  144	  200	  257	  259
KISAR5= ****** G      	   82#	  154*	  213*	  271*	  407*	  449	  457*	  499	  516*	  526*
PHDCTB  120034        	  214
RESEXT  000200R    002	  156	  216	  320#
RESPRC  000210R    002	  282	  360#
RESREG  000250R    002	  322	  369	  407#
SAVEXT  000270R    002	  151	  210	  448#
SAVPRC  000340R    002	  266	  497#
SAVREG  000524R    002	  448	  497	  566#
SIGNAL  000562R    002	  455*	  509*	  612#
SS$.UN= ****** GX     	  513
Z.DSP   000000        	  101
$CALL = ****** G      	   83#
$CALLE  000000RG   002	  142#
$CALLI  000022RG   002	  200#
$CALLP  000106RG   002	  257#
$HANDL= ****** GX     	  612*
$HANSP= ****** GX     	  452	  506
$IGNAL= ****** G      	   82#	  206*
$IGREG= ****** GX     	  320*	  360*	  569	  571*
.CEXST= ****** GX     	  202	  204	  205*
.CRDAT= ****** GX     	  273*	  274*	  280	  281	  366*	  367*	  502	  503	  521*	  522*
.CRDSP= ****** GX     	  272*	  279	  365*	  501	  520*
.CRPDB= ****** GX     	  270*	  277	  363*	  498	  518*
.CRPIX= ****** GX     	  275*	  368*	  523*
.PDBVB= ****** GX     	  154	  213	  269
CEXSYN - SYNCHRONOUS INTERFACE SERVICES	DNMAC X24.07-563  28-MAY-85  14:24  PAGE 14
CEXSYN.M11    30-DEC-82 00:34		CROSS REFERENCE TABLE -- MACRO NAMES

CRSH$S	   81#
PLVL$	  142	  200	  257
POP$S	  207	  320	  321	  360	  361	  362	  407	  408
PUSH$S	  204	  449	  454	  499	  508	  566	  569


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


 ERRORS DETECTED:  0
 DEFAULT GLOBALS GENERATED:  10

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