.TITLE MRWVMF - MAP VM ADDRESS (READ/WRITE) (FORTRAN INTERFACE) .SBTTL MRWVMF - TITLE PAGE .PSECT VMX$$$,RO,I .IDENT /V01.01/ .ENABL LC ; ; ************************************************************************ ; * ; THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS ONLY. DIGITAL EQUIPMENT * ; COMPUTER USER'S SOCIETY, DIGITAL EQUIPMENT CORPORATION, MONSANTO, AND * ; THE AUTHOR DISCLAIM ALL WARRANTIES ON THE PROGRAM, INCLUDING WITHOUT * ; LIMITATION, ALL IMPLIED WARRANTIES OF MERCHANTABLITY AND FITNESS. * ; * ; FULL PERMISSION AND CONSENT IS HEREBY GIVEN TO DECUS AND TO THE DECUS * ; SPECIAL INTEREST GROUPS TO REPRODUCE, DISTRIBUTE, AND PUBLISH AND * ; PERMIT OTHERS TO REPRODUCE IN WHOLE OR IN PART, IN ANY FORM AND * ; WITHOUT RESTRICTION, THIS PROGRAM AND ANY INFORMATION RELATING TO IT. * ; * ; ************************************************************************ ; ; MAP VM ADDRESS (READ/WRITE) (FORTRAN INTERFACE) ; ; VERSION: V01.01 ; ; AUTHOR: R.W. STAMERJOHN MAPC 02-NOV-81 ; ; MODIFICATION HISTORY: ; ; V01.01 RWS 02-NOV-81 INITIAL VERSION ; .SBTTL MRWVMF - DECLARATIONS .DSABL GBL .DSABL CRF ; ; MACRO LIBRARY CALLS: ; .MCALL CALLR ;Call subroutine and return ; ; GLOBAL DECLARATIONS: ; .GLOBL MRWVMF ;Module entry ; ; GLOBAL REFERENCES: ; ; VM subroutines. ; .GLOBL CHK$VF ;Check for legal arguments .GLOBL MRW$VM ;Map virtual address (read/write) .ENABL CRF .SBTTL MRWVMF * MAP VM ADDRESS (READ/WRITE) (FORTRAN INTERFACE) ; ;+ ; This routine is a Fortran callable subroutine to map a virtual address ; and return the mapped address as a Fortran array index. The mapping is ; for read/write access. ; ; INPUT: ; ; Call by: CALL MRWVMF (VM_address,size,index,array) ; ; VM_address = Virtual buffer address (I*4) ; size = Size of buffer to map (I*2) ; index = Return Fortran index (I*2) ; array = Start of user array (I*2) ; ; OUTPUT: ; ; The virtual buffer at "VM_address" is mapped and the Fortran index ; to the logical address is returned. Note, the "array" variable is ; assumed to correctly map the start of the logical address space. ; ; If any argument is not specified or not exactly four arguments ; are listed, fatal Fortran errors are declared. ; ; REGISTERS: ; ; Uses: R0-R5 Saves: None Stack: 3 words ;- MRWVMF:: ;Ref label CALL CHK$VF ;Check for legal arguments .BYTE 4,4 ; Must be only four MOV (R5)+,R4 ;Get address of virtual address MOV (R4)+,R1 ;Get virtual address (low) MOV (R4)+,R0 ;Get virtual address (high) MOV @(R5)+,R3 ;Get size to map MOV (R5)+,-(SP) ;Save return address MOV (R5)+,-(SP) ;Save array address CALL MRW$VM ;Call mapping routine SUB (SP)+,R5 ;Get offset from array ASR R5 ;Convert to word index INC R5 ;Convert to Fortran index MOV R5,@(SP)+ ;Return index RETURN ;Return to caller .END