Google
 

Trailing-Edge - PDP-10 Archives - BB-P363B-SM_1985 - mcb/cex/cexrsx.m11
There are no other files named cexrsx.m11 in the archive.
	.TITLE	CEXRSX - Comm/Exec Support for the RSX Driver Interface
	.IDENT	/003120/
	.ENABL	LC

;
;                    COPYRIGHT (c) 1980, 1981, 1982
;                    DIGITAL EQUIPMENT CORPORATION
;                        Maynard, Massachusetts
;
;     This software is furnished under a license and may  be  used
;     and copied only in accordance with the terms of such license
;     and with the inclusion of the above copyright notice.   This
;     software  or any other copies thereof may not be provided or
;     otherwise made available to any other person.  No  title  to
;     and ownership of the software is hereby transferred.
;
;     The information  in  this  software  is  subject  to  change
;     without  notice  and should not be construed as a commitment
;     by DIGITAL EQUIPMENT CORPORATION.
;
;     DIGITAL assumes no responsibility for the use or reliability
;     of  its  software  on  equipment  which  is  not supplied by
;     DIGITAL.
;

;++
; FACILITY: MCB Communications Executive
;
; FUNCTIONAL ABSTRACT:
;
;	This module contains the routines to support the interface
;	to RSX drivers.
;
; ENVIRONMENT: RSX kernel mode with EIS
;
; AUTHOR: Alan D. Peckham, CREATION DATE: 21-MAR-80
;
; MODIFIED BY:
;
;	Alan D. Peckham, 2-Jul-80: VERSION 3.0
; 01	- Change CRSH$ references to CRSH$S.
; 02	- Use macros to handle APR6 mapping.
; 03	- Update CRSH$S contexts.
; 04	- Add conditional process activation signal to $MCB.
; 05	- New signal status for process activation.
; 06	- Remove process activation signal.
; 07	- Fix $MCB and $RSX to update .CEXDP correctly.
;	Alan D. Peckham, 9-Dec-80: VERSION 3.1
; 08	- Update for MCB V3.1
; 09	- Add support for data base words in $MCB.
;	Alan D. Peckham, 30-Jan-80: VERSION 3.2
; 10	- Speed up code in $MCB.
;	  Support .CRPDB current process descriptor address.
;	  Add UCB crash.
; 11	- Support .CRDSP in context switches.
; 12	- Correct conditionalized D$$BUG code in $MCB.
;--
	.SBTTL	DECLARATIONS

;
; INCLUDE FILES:
;

	.MCALL	CRSH$S,UCBDF$
	.GLOBL	$IGNAL

;
; MACROS:
;
;	None
;
; EQUATED SYMBOLS:
;

	UCBDF$			; UCB symbol definitions.

;
; OWN STORAGE:
;
;	None
;
; VALIDATION DECLARATIONS:
;
	.SBTTL	$MCB - Switch to MCB process context
;++
; FUNCTIONAL DESCRIPTION:
;
;	Switch context from RSX driver to MCB process.
;
; CALLING SEQUENCE:
;
;	CALL	$MCB
;
; INPUT PARAMETERS:
;
;	R5 = UCB address.
;
; IMPLICIT INPUTS:
;
;	None
;
; OUTPUT PARAMETERS:
;
;	R5 = data base address.
;
; IMPLICIT OUTPUTS:
;
;	.RSXMP = saved value of APR 6.
;	KISAR6 = Mapped to data base.
;
; CONDITION CODES:
;
;	None
;
; SIDE EFFECTS:
;
;	None
;--

	.PSECT	$CODE$,I,RO
$MCB::	RLVL$			; Crash if not at RSX level.
	PUSH$S	R0
	MOVB	U.CW2(R5),R0	; Get PIX

	.IF	NE,D$$BUG
	CMPB	.PDBNM,R0	; to range check
	BLOS	100$		; and crash if out of range.
	.IFTF

	ASL	R0
	MOV	.PDBVB(R0),R0

	.IFT
	BEQ	100$
	.IFTF

	CALL	$CEXSV		; Become the Comm/Exec.
	MOV	R0,.CRPDB	; Set as current process
	TST	(R0)+		; and
	MOV	(R0)+,.CRDSP	; dispatch table,
	MAP$	(R0)		; data base bias,
	MOV	(R0)+,.CRDAT+0
	MOV	(R0),R5		; address,
	MOV	(R0)+,.CRDAT+2
	MOVB	(R0),.CRPIX	; and index.
	POP$S	R0
	RETURN

	.IFT
100$:	POP$S	R0
	CRSH$S	RPX		; PIX in UCB corrupted
	.ENDC
	.SBTTL	$RSX - Switch to RSX driver context
;++
; FUNCTIONAL DESCRIPTION:
;
;	Switch context from MCB process to RSX driver.
;
; CALLING SEQUENCE:
;
;	CALL	$RSX
;
; INPUT PARAMETERS:
;
;	None
;
; IMPLICIT INPUTS:
;
;	.RSXMP = saved value of APR 6.
;
; OUTPUT PARAMETERS:
;
;	R5 = UCB address.
;
; IMPLICIT OUTPUTS:
;
;	None
;
; CONDITION CODES:
;
;	None
;
; SIDE EFFECTS:
;
;	None
;--

	.PSECT	$CODE$,I,RO
$RSX::	PLVL$			; Crash if not at process level.
	PUSH$S	R4
	MOV	.CRPDB,R4	; Get process descriptor
	BIT	#ZF.UCB,Z.FLG(R4) ; and if there is a UCB
	BEQ	100$		; then
	MOV	.CRDSP,2(R4)	; reset dispatch address,
	MOV	.CRDAT+0,Z.DAT+0(R4) ; data base
	MOV	.CRDAT+2,Z.DAT+2(R4) ; bias/address,
	MOV	Z.UCB(R4),R5	; to get UCB address.
	CALL	$CEXXT		; Scehdule the Comm/Exec if necessary.
	POP$S	R4
	RETURN

100$:	POP$S	R4
	CRSH$S	UCB		; Process does not have UCB.

	.END