;************************************************************** ;*** XMS08.ASM *** ;*** *** ;*** function XMS_Xms.getFreeXM( *** ;*** var totalFree: Word; *** ;*** var largestFree:Word) *** ;*** : Boolean; *** ;*** *** ;*** Queries the amount of extended memory available. *** ;*** *** ;************************************************************** .model large,pascal include xmsdefs.asm extrn errno:WORD extrn xmsHandler:DWord ; ; Define entry point ; public XMS_Xms@getFreeXM .code XMS_Xms@getFreeXM proc total:Far Ptr Word, largest: Far Ptr Word, self:DWord mov ah,XMSGetFreeXM ; Function code call xmsHandler ; call the guy or ax,ax ; AX=0 means error jz errorReturn ; ; Now return the values. ; les bx,total mov es:[bx],dx ; total free memory in KB les bx,largest mov es:[bx],ax ; largest free block mov ax,XMSErrOK ; No error ret errorReturn: mov al,bl ; Move error code to AL xor ah,ah ; Zero extend to 16 bits mov errno,ax ; Copy to errno ret XMS_Xms@getFreeXM endp ; end of procedure end