home *** CD-ROM | disk | FTP | other *** search
- ;void select_page(handle,page_number,window);
- ; unsigned short handle,page_number,window;
-
- EXTRN _memory_model:byte
- EXTRN _error_code:byte
-
- _TEXT SEGMENT BYTE PUBLIC 'CODE'
- ASSUME CS:_TEXT
- PUBLIC _select_page
- _select_page proc near
- push bp ;save BP
- mov bp,sp ;set stack frame
- cmp _memory_model,0 ;near or far?
- jle begin ;jump if near
- inc bp ;else add 2 to BP
- inc bp ;
- begin: mov ah,44h ;function number
- mov al,[bp+8] ;get page frame
- mov bx,[bp+6] ;get page number
- mov dx,[bp+4] ;get handle
- int 67H ;EMS interrupt
- mov _error_code,0 ;0 = successful
- or ah,ah ;test if OK
- jz L1 ;quit if so
- inc _error_code ;1 = software malfunction
- cmp ah,80h ;test
- je L1 ;jump if error 1
- inc _error_code ;2 = hardware malfunction
- cmp ah,81h ;test
- je L1 ;jump if error 2
- inc _error_code ;3 = bad handle
- cmp ah,83h ;test
- je L1 ;jump if error 3
- inc _error_code ;4 = logical page out of range
- cmp ah,8Ah ;test
- je L1 ;jump if error 4
- inc _error_code ;5 = physical page out of range
- L1: pop bp ;restore BP
- cmp _memory_model,0 ;quit
- jle Quit ;
- db 0CBh ;RET far
- Quit: ret ;RET near
- _select_page endp
- _TEXT ENDS
- END