.TITLE MBDADR - COMPUTE AN MBD ADDRESS .IDENT /04MAY7/ ;10:25:00, EM ; .ENTRY MBDADR - COMPUTE AN MBD ADDRESS ;+ ; M B D A D R ; ; PURPOSE: COMPUTE AN MBD ADDRESS BASED ON USER-MODE ; ASR'S. ASSUMES I/O PAGE MAPPED INTO ITSELF ; ; INTERFACE: CALLING SEQUENCE: ; CALL MBDADR ; ; INPUT: R5 -- VIRTUAL ADDRESS ; ; OUTPUT: R5 -- MBD (16-BIT PHYSICAL WORD ADR) ADDRESS ; ; LANGUAGE: MACRO-11 ; ; RESTRICTIONS: NOT FORTRAN-CALLABLE ; THIS ROUTINE CAN BE USED ONLY BY A PRIVILEGED TASK. ;- ; REVISIONS: ; 04-MAY-77 EM UPDATED TO CONFORM TO STANDARDS ; ;MACRO CALLS .MCALL RETURN ; ;I/O PAGE REGISTERS PAR0=177640 ; MBDADR:: MOV R4,-(SP) ;SAVE R4 MOV R5,R4 ;COPY VIRTUAL ADDRESS ASH #-12.,R4 ;HIGH 3 BITS OF ADDRESS IN R4,BITS 1-3 BIC #177761,R4 ;MASK OUT GARBAGE ADD #PAR0,R4 ;(R4)=ADDRESS OF PAR TO USE MOV @R4,R4 ;(R4)=CONTENTS OF SELECTED PAR ASH #5,R4 ASH #-1,R5 ;(R5)=VIRTUAL WORD ADDRESS BIC #170000,R5 ;MASK OUT APF FIELD ADD R4,R5 ;R5 NOW HAS MBD ADDRESS MOV (SP)+,R4 ;RECOVER R4 RETURN .END