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