From 7dba8a97b89743654303bfa80cce87f846548eaa Mon Sep 17 00:00:00 2001 From: Peter Veenstra Date: Wed, 13 Nov 2002 11:39:31 +0000 Subject: [PATCH] made dos more compatible and fixed aaowcga Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@496 --- src/dos/dos.cpp | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/dos/dos.cpp b/src/dos/dos.cpp index 2093fb90..43376cbf 100644 --- a/src/dos/dos.cpp +++ b/src/dos/dos.cpp @@ -43,9 +43,6 @@ static Bitu DOS_21Handler(void) { char name1[DOSNAMEBUF+1]; char name2[DOSNAMEBUF+1]; switch (reg_ah) { - case 0x00: /* Terminate Program */ - E_Exit("DOS:Unhandled call %02X",reg_ah); - break; case 0x01: /* Read character from STDIN, with echo */ { Bit8u c;Bit16u n=1; @@ -161,7 +158,7 @@ static Bitu DOS_21Handler(void) { break; case 0x0e: /* Select Default Drive */ DOS_SetDefaultDrive(reg_dl); - reg_al=26; + reg_al=DOS_DRIVES; break; case 0x0f: /* Open File using FCB */ if(DOS_FCBOpen(SegValue(ds),reg_dx)){ @@ -605,8 +602,11 @@ static Bitu DOS_21Handler(void) { } break; //TODO Check for use of execution state AL=5 + case 0x00: + reg_ax=0x4c00; /* Terminate Program */ case 0x4c: /* EXIT Terminate with return code */ - { + + { if (DOS_Terminate(false)) { /* This can't ever return false normally */ } else { @@ -653,9 +653,10 @@ static Bitu DOS_21Handler(void) { //TODO Think hard how shit this is gonna be //And will any game ever use this :) case 0x53: /* Translate BIOS parameter block to drive parameter block */ -//YEAH RIGHT + E_Exit("Unhandled Dos 21 call %02X",reg_ah); + break; case 0x54: /* Get verify flag */ - E_Exit("Unhandled Dos 21 call %02X",reg_ah); + reg_al=dos.verify?1:0; break; case 0x55: /* Create Child PSP*/ DOS_NewPSP(reg_dx,reg_si); @@ -821,10 +822,10 @@ static Bitu DOS_21Handler(void) { LOG_WARN("DOS:Windows long file name support call %2X",reg_al); break; case 0xE0: - LOG_DEBUG("DOS:E0:Unhandled, what should this call do?"); - break; + case 0xEF: default: - E_Exit("DOS:Unhandled call %02X",reg_ah); + reg_al=0x00; /* default value */ + LOG_DEBUG("DOS:Unhandled call %02X. Set al to default of 0 no carry",reg_ah); break; }; return CBRET_NONE;