From 91d4209ca8eb33b7a4393f2827c78ae4ce354506 Mon Sep 17 00:00:00 2001 From: Sjoerd van der Berg Date: Fri, 14 Mar 2003 09:01:21 +0000 Subject: [PATCH] Added get/set/search handle name functions. Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@764 --- src/ints/ems.cpp | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/src/ints/ems.cpp b/src/ints/ems.cpp index 2a6e4673..78ba1777 100644 --- a/src/ints/ems.cpp +++ b/src/ints/ems.cpp @@ -374,6 +374,7 @@ static Bit8u EMM_PartialPageMapping(void) { } static Bit8u HandleNameSearch(void) { + char name[9]; Bit16u handle=0;PhysPt data; switch (reg_al) { case 0x00: /* Get all handle names */ @@ -387,6 +388,18 @@ static Bit8u HandleNameSearch(void) { } } break; + case 0x01: /* Search for a handle name */ + MEM_StrCopy(SegPhys(ds)+reg_si,name,8);name[8]=0; + for (handle=0;handle=EMM_MAX_HANDLES || emm_handles[handle].pages==NULL_HANDLE) return EMM_INVALID_HANDLE; + MEM_BlockWrite(SegPhys(es)+reg_di,emm_handles[handle].name,8); + break; + case 0x01: /* Set Handle Name */ + if (handle>=EMM_MAX_HANDLES || emm_handles[handle].pages==NULL_HANDLE) return EMM_INVALID_HANDLE; + MEM_BlockRead(SegPhys(es)+reg_di,emm_handles[handle].name,8); + break; + default: + LOG(LOG_ERROR|LOG_MISC,"EMS:Call %2X Subfunction %2X not supported",reg_ah,reg_al); + return EMM_FUNC_NOSUP; + } + return EMM_NO_ERROR; + +} + static void LoadMoveRegion(PhysPt data,MoveRegion & region) { region.bytes=mem_readd(data+0x0); @@ -614,12 +646,7 @@ static Bitu INT67_Handler(void) { reg_ah=EMM_ReallocatePages(reg_dx,reg_bx); break; case 0x53: // Set/Get Handlename - if (reg_al==0x00) { // Get Name not supported - LOG(LOG_ERROR|LOG_MISC,"EMS:Get handle name not supported",reg_ah); - reg_ah=EMM_FUNC_NOSUP; - } else { // Set name, not supported but faked - reg_ah=EMM_NO_ERROR; - } + reg_ah=GetSetHandleName(); break; case 0x54: /* Handle Functions */ reg_ah=HandleNameSearch();