diff options
author | ripsaw8080 <ripsaw8080@users.sourceforge.net> | 2022-06-24 05:35:59 +0300 |
---|---|---|
committer | kcgen <kcgen@users.noreply.github.com> | 2022-06-24 05:37:30 +0300 |
commit | 7ac2354944ea2aaf1b9e351345619141355fec62 (patch) | |
tree | 6f8f9982ba463be3c77a264afef039eaf3be0bb7 | |
parent | 3755a112152088ecbf675640995451c9d75a8384 (diff) | |
parent | 20345b5f1ed8a93369d1485ebc2432e6dcd8ebde (diff) |
Merge 'svn/trunk' r4480kc/merge-r4480
-rw-r--r-- | src/dos/dos.cpp | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/src/dos/dos.cpp b/src/dos/dos.cpp index e43b6233c..092d6f16d 100644 --- a/src/dos/dos.cpp +++ b/src/dos/dos.cpp @@ -998,6 +998,7 @@ static Bitu DOS_21Handler(void) { case 0x4d: /* Get Return code */ reg_al=dos.return_code;/* Officially read from SDA and clear when read */ reg_ah=dos.return_mode; + CALLBACK_SCF(false); break; case 0x4e: /* FINDFIRST Find first matching file */ MEM_StrCopy(SegPhys(ds)+reg_dx,name1,DOSNAMEBUF); @@ -1073,13 +1074,14 @@ static Bitu DOS_21Handler(void) { CALLBACK_SCF(true); } } else { - LOG(LOG_DOSMISC,LOG_ERROR)("DOS:57:Unsupported subtion %X",reg_al); + LOG(LOG_DOSMISC,LOG_ERROR)("DOS:57:Unsupported subfunction %X",reg_al); } break; case 0x58: /* Get/Set Memory allocation strategy */ switch (reg_al) { case 0: /* Get Strategy */ reg_ax=DOS_GetMemAllocStrategy(); + CALLBACK_SCF(false); break; case 1: /* Set Strategy */ if (DOS_SetMemAllocStrategy(reg_bx)) CALLBACK_SCF(false); @@ -1114,6 +1116,7 @@ static Bitu DOS_21Handler(void) { } reg_bl=1; //Retry retry retry reg_ch = 0; // Unknown error locus + CALLBACK_SCF(false); //undocumented break; case 0x5a: /* Create temporary file */ { @@ -1160,7 +1163,10 @@ static Bitu DOS_21Handler(void) { reg_si = DOS_SDA_OFS; reg_cx = 0x80; // swap if in dos reg_dx = 0x1a; // swap always + CALLBACK_SCF(false); LOG(LOG_DOSMISC,LOG_ERROR)("Get SDA, Let's hope for the best!"); + } else { + LOG(LOG_DOSMISC,LOG_ERROR)("DOS:5D:Unsupported subfunction %X",reg_al); } break; case 0x5e: /* Network and printer functions */ @@ -1185,13 +1191,13 @@ static Bitu DOS_21Handler(void) { case 0x60: /* Canonicalize filename or path */ MEM_StrCopy(SegPhys(ds)+reg_si,name1,DOSNAMEBUF); if (DOS_Canonicalize(name1,name2)) { - MEM_BlockWrite(SegPhys(es)+reg_di,name2,(Bitu)(safe_strlen(name2)+1)); - CALLBACK_SCF(false); - } else { - reg_ax=dos.errorcode; - CALLBACK_SCF(true); - } - break; + MEM_BlockWrite(SegPhys(es)+reg_di,name2,(Bitu)(strlen(name2)+1)); + CALLBACK_SCF(false); + } else { + reg_ax=dos.errorcode; + CALLBACK_SCF(true); + } + break; case 0x62: /* Get Current PSP Address */ reg_bx=dos.psp(); break; @@ -1302,8 +1308,10 @@ static Bitu DOS_21Handler(void) { CALLBACK_SCF(false); break; }; - case 0x68: /* FFLUSH Commit file */ + case 0x6a: /* Same as commit file */ + case 0x68: /* FFLUSH Commit file */ if(DOS_FlushFile(reg_bl)) { + reg_ah = 0x68; CALLBACK_SCF(false); } else { reg_ax = dos.errorcode; |