ASMB,R,L,C     ** RTE-IV PRIVILEGED MAPPING SUBROUTINE ** 
      HED RTE-IV PRIVILEGED DRIVER'S MAPPING SUBROUTINE 
*     DATE:   8/17/77 
*     NAME:   PVMP4 
*     SOURCE: 92067-18001 
*     RELOC:  92067-16001 
*     PGMR:   E.J.W.
* 
*  ***************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978.  ALL RIGHTS     *
*  * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,      *
*  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT*
*  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.       *
*  ***************************************************************
* 
      NAM PVMP4,8 92067-16001 REV.1805 771219 
      ENT $PVMP 
      EXT $DVPT,$MATA,$MRMP 
A     EQU 0 
B     EQU 1 
* 
* 
* 
*     ****************** NOTICE **********************
*     ** $PVMP IS DESIGNED FOR USE BY PRIVILEGED    **
*     ** DRIVERS.  EXTREME CAUTION SHOULD BE TAKEN  **
*     ** BY THE DRIVER WHEN CHANGING THE USER MAP.  **
*     **                                            **
*     ** THE USER MAP MUST BE SAVED BEFORE CALLING  **
*     ** $PVMP AND THEN RESTORED BEFORE RETURNING   **
*     ** CONTROL TO THE POINT OF INTERRUPT!!!       **
*     ****************** NOTICE **********************
* 
*  CALLING SEQUENCE:
*     <SAVE CURRENT USER MAP> 
*     LDA IDADR     (A) HAS ID SEG ADDR 
*     JSB $PVMP     CALL SUBROUTINE TO MAP USER 
*     <RETURN>      (A)=0 ERROR, PROG NOT IN PTTN 
*                   (A)#0  OK, PROGRAM MAPPED 
*     <RESTORE USER MAP BEFORE EXIT>
* 
* 
* 
$PVMP NOP           CALLED ONLY BY PRIVILEGED DRIVERS 
      STA XIDA      TEMP SAVE OF ID ADDR
      LDB A 
      ADA D8
      LDA A,I       GET PROG'S POINT OF SUSPENSION
      SZA,RSS        IF IT IS ZERO, TAKE
      JMP $PVMP,I    ERROR EXIT, (A)=0
* 
      ADB D14 
      LDA B,I 
      AND D15       IS PROG MEM RES 
      CPA D1
      JMP MRPV      YES,GO SET MEM RES MAP
* 
      ADB D7        GET MPID WORD 
      LDA B,I 
      AND B77 
      MPY MATSZ 
      ADA $MATA      GET PTTN ADDR
      STA XMAT       SAVE MAT ENTRY ADDR
      ADA D2
      LDA A,I 
      CPA XIDA      IS PROG STILL IN PARTITION? 
      JMP XDMOK      YES ,CONTINUE
* 
      CLA            NO, ERROR
      JMP $PVMP,I   RETURN (A)=0
* 
XDMOK CCA 
      CAX           (X)=-1 READ 1 REG 
      LDA $DVPT     (A)=REG # OF DRIVER PARTITION 
      LDB DFDMR     (B)=ADDR OF SAVE AREA 
      XMM           SAVE REG USED FOR MAPPING USER BP 
* 
      LDB XMAT      (B)=MATA ENTRY ADDR 
      ADB D3         FOR SAVE & RESTORE MAP REGS
      LDA B,I       GET PTTN'S FIRST PAGE # 
      AND B1777      WHICH IS THE PHYSICAL BP 
      STA B         (B) = PAGE # OF BP
      CLA,INA 
      CAX           (X) = 1 TO SET ONE REGISTER 
      LDA $DVPT     (A)=REG # OF DRIVER PARTITION 
      XMS           MAP IN THE PHYSICAL BP
* 
      LDA $DVPT     GET DRIVER PTTN PAGE #
      ALF,ALF        SHIFT TO BITS 10-14
      RAL,RAL        TO FORM LOGICAL ADDRESS
      IOR B1740     OFFSET TO BP COPY AREA
      USA           SET USER MAP REGISTERS
* 
      CLA,INA 
      CAX           (X)=1  WRITE 1 REG
      LDA $DVPT     (A)=REG # OF DRIVER PARTITION 
      LDB DVMPR     (B)=SAVED DRIVER PTTN REG VALUE 
      XMS           RESTORE REG USED FOR MAPPING USER BP
      JMP $PVMP,I   RETURN (A)=NONZERO
* 
MRPV  LDA $MRMP 
      USA           SET MEM RES MAP 
      JMP $PVMP,I   RETURN (A)=NONZERO
* 
* 
D1    DEC 1 
D2    DEC 2 
D3    DEC 3 
D7    DEC 7 
D8    DEC 8 
D14   DEC 14
D15   DEC 15
B77   OCT 77
B1740 OCT 1740
B1777 OCT 1777
MATSZ EQU D7
XIDA  NOP 
XMAT  NOP 
DFDMR DEF DVMPR     ADDR OF STORAGE FOR DRIVER MAP REG
DVMPR NOP           DRIVER MAP REGISTER CONTENTS
* 
      BSS 0         SIZE OF SUBROUTINE
      END 
                                                                                                                                                                                                                    