;************************************************************** ;*** EMS5B1.ASM *** ;*** *** ;*** function EMS_Ems.setAltMapRegs40( *** ;*** alt_set: Byte; *** ;*** var regs_area: Byte) *** ;*** : Boolean; *** ;*** *** ;*** Sets alternate map registers to pointers. *** ;*** *** ;*** if (*alt_map!=0) *** ;*** ... install new mapping context *** ;*** if (*alt_map==0) *** ;*** ... restore previous mapping context *** ;*** *** ;*** 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@setAltMapRegs40 .code EMS_Ems@setAltMapRegs40 proc altSet:Word, regsArea:Far Ptr Byte, self:DWord push di ; Save DI mov bx,altSet ; Get alternate set # or bx,bx ; Is it zero ? jne newMappingContext ; No, we don't need a buffer les di,regsArea ; Load up the buffer address newMappingContext: mov ax,SetAltMapRegs40 ; Do the EMS call int Ems or ah,ah ; Set flags jnz error 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@setAltMapRegs40 endp ; End of procedure end ; End of source file