home *** CD-ROM | disk | FTP | other *** search
- .model small, pascal
-
- .data?
- xmm_driver dd byte ptr 0
-
- .code
- ; int umb_init(void);
- UMB_INIT proc
- mov ax, 4300h
- int 2fh
- cmp al, 80h
- mov ax, -1
- jne @f
- mov ax, 4310h
- int 2fh
- mov word ptr [xmm_driver], bx
- mov word ptr [xmm_driver+2], es
- xor ax, ax
- @@:
- ret
- UMB_INIT endp
-
- ; int umb_allocate(int Size, unsigned * pHandle, unsigned * pSize);
- UMB_ALLOCATE proc uses si, iSize:word, pHandle:ptr word, pSize:ptr word
- mov ah, 10h
- xor bx, bx
- mov dx, iSize
- call xmm_driver
- mov si, pSize
- mov [si], dx
- cmp ax, 1
- jne @f
- mov si, pHandle
- mov [si], bx
- xor bx, bx
- @@:
- mov ax, bx
- ret
- UMB_ALLOCATE endp
-
- ; int umb_free(unsigned uHandle);
- UMB_FREE proc uHandle:word
- mov ah, 11h
- mov dx, uHandle
- call xmm_driver
- cmp ax, 1
- jne @f
- xor bx, bx
- @@:
- mov al, bl
- ret
- UMB_FREE endp
- end
-
-
-