.TITLE ALCVMF - ALLOCATE VM BUFFER (FORTRAN INTERFACE) .SBTTL ALCVMF - 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. * ; * ; ************************************************************************ ; ; ALLOCATE VM BUFFER (FORTRAN INTERFACE) ; ; VERSION: V01.01 ; ; AUTHOR: R.W. STAMERJOHN MAPC 02-NOV-81 ; ; MODIFICATION HISTORY: ; ; V01.01 RWS 02-NOV-81 INITIAL VERSION ; .SBTTL ALCVMF - DECLARATIONS .DSABL GBL .DSABL CRF ; ; MACRO LIBRARY CALLS: ; ; NONE. ; ; GLOBAL DECLARATIONS: ; .GLOBL ALCVMF ;Module entry ; ; GLOBAL REFERENCES: ; ; VM subroutines. ; .GLOBL ALC$VM ;Allocate routine .GLOBL CHK$VF ;Check for legal arguments .ENABL CRF .SBTTL ALCVMF * ALLOCATE VM BUFFER (FORTRAN INTERFACE) ; ;+ ; This routine is a Fortran callable subroutine to allocate a virtual ; pool segment. It translates the Fortran arguments into the interface ; format and calls the allocate interface routine. ; ; INPUT: ; ; Call by: CALL ALCVMF (VM_address,size) ; ; VM_address = Allocated buffer address (I*4) ; size = Size of buffer to allocate (I*2) ; ; OUTPUT: ; ; Double-word address of allocated space returned in "VM_address" ; argument. Store in normal Fortran sequence (low,high). ; ; If either argument is not specified or not exactly two arguments ; are listed, fatal Fortran errors are declared. ; ; REGISTERS: ; ; Uses: R0-R5 Saves: None Stack: 2 words ;- ALCVMF:: ;Ref label CALL CHK$VF ;Check for legal arguments .BYTE 2,2 ; Must be only two MOV (R5)+,-(SP) ;Save return address for virtual buffer MOV @(R5),R3 ;Get allocation size CALL ALC$VM ;Call interface routine MOV (SP)+,R4 ;Get address to return size MOV R1,(R4)+ ;Return virtual address (low) MOV R0,(R4)+ ;Return virtual address (high) RETURN ;Return to caller .END