;************************************************************** ;*** EMS5B0.ASM *** ;*** *** ;*** function EMS_Ems.getAltMapRegs40( *** ;*** var active_map: Byte; *** ;*** var regs_area: Byte) *** ;*** : Boolean; *** ;*** *** ;*** Gets alternate map registers to pointers. *** ;*** *** ;*** if (*active_map!=0) *** ;*** ... alternate map set active *** ;*** if (*active_map==0) *** ;*** ... regs_area holds alternate map save area *** ;*** *** ;*** Returns 0 if no error or an error code. *** ;*** *** ;*** *** ;*** *** ;*** (Ems Version 4.0) *** ;************************************************************** .model large,pascal include emsdefs.asm extrn errno:WORD ; ; Define entry point ; public EMS_Ems@getAltMapRegs40 .code EMS_Ems@getAltMapRegs40 proc activeMap:Far Ptr Word, regsArea:Far Ptr DWord, self:DWord push di ; Save DI mov ax,GetAltMapRegs40 ; Do the EMS call int Ems or ah,ah ; Set flags jnz error ; ; ES:DI now has address of alternate map register set save area, ; BL has the number of the current alternate register set ; push es ; Save save area segment mov al,bl ; Move curr alt reg set # xor ah,ah ; Zero extend to word les bx,activeMap ; Return it mov es:[bx],ax les bx,regsArea ; Return the save area address mov es:[bx],di ; ... offset pop ax ; ... segment mov es:[bx+2],ax xor ax,ax ; Return OK pop di ; Restore DI ret error: pop di ; Restore DI mov al,ah ; AL gets error code xor ah,ah ; Zero extend mov errno,ax ; Save in errno too ret EMS_Ems@getAltMapRegs40 endp ; End of procedure end ; End of source file