.TITLE DEAVMF - DEALLOCATE VM BUFFER (FORTRAN INTERFACE) .SBTTL DEAVMF - 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. * ; * ; ************************************************************************ ; ; DEALLOCATE 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 DEAVMF - DECLARATIONS .DSABL GBL .DSABL CRF ; ; MACRO LIBRARY CALLS: ; .MCALL CALLR ;Call subroutine and return ; ; GLOBAL DECLARATIONS: ; .GLOBL DEAVMF ;Module entry ; ; GLOBAL REFERENCES: ; ; VM subroutines. ; .GLOBL CHK$VF ;Check for legal arguments .GLOBL DEA$VM ;Deallocate routine .ENABL CRF .SBTTL DEAVMF * DEALLOCATE VM BUFFER (FORTRAN INTERFACE) ; ;+ ; This routine is a Fortran callable subroutine to deallocate a virtual ; pool segment. It translates the Fortran arguments into the interface ; format and calls the deallocate interface routine. ; ; INPUT: ; ; Call by: CALL DEAVMF (VM_address,size) ; ; VM_address = Allocated buffer address (I*4) ; size = Size of buffer to deallocate (I*2) ; ; OUTPUT: ; ; Specified buffer returned to virtual pool. ; ; 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: 1 words ;- DEAVMF:: ;Ref label CALL CHK$VF ;Check for legal arguments .BYTE 2,2 ; Must be only two MOV (R5)+,R4 ;Get address of I*4 virtual address MOV (R4)+,R1 ;Get virtual address (low) MOV (R4)+,R0 ;Get virtual address (high) MOV @(R5),R3 ;Get size to deallocate CALLR DEA$VM ;Call deallocation routine and return .END