Get rid of ConsoleInput handles in the BIOS; setting input console modes should be done in the emulator.c module itself (when setting user interface modes), and if a mouse is present, handle it in the ps2.c module.
Next step will be to get rid of ConsoleOutput handle in the BIOS.

svn path=/branches/ntvdm/; revision=62359
This commit is contained in:
Hermès Bélusca-Maïto 2014-02-28 21:21:41 +00:00
parent bde24e0bb4
commit 9e1ba5c534
9 changed files with 29 additions and 18 deletions

View file

@ -87,7 +87,6 @@ static VOID WINAPI BiosInitBop(LPWORD Stack)
BOOLEAN
BiosInitialize(IN LPCSTR BiosFileName,
IN HANDLE ConsoleInput,
IN HANDLE ConsoleOutput)
{
/* Register the BIOS support BOPs */
@ -144,7 +143,7 @@ BiosInitialize(IN LPCSTR BiosFileName,
}
else
{
Bios32Loaded = Bios32Initialize(ConsoleInput, ConsoleOutput);
Bios32Loaded = Bios32Initialize(ConsoleOutput);
return Bios32Loaded;
}
}

View file

@ -107,7 +107,6 @@ extern PBIOS_DATA_AREA Bda;
BOOLEAN
BiosInitialize(IN LPCSTR BiosFileName,
IN HANDLE ConsoleInput,
IN HANDLE ConsoleOutput);
VOID

View file

@ -361,8 +361,7 @@ static VOID InitializeBiosInt32(VOID)
/*
* The BIOS POST (Power On-Self Test)
*/
BOOLEAN Bios32Initialize(IN HANDLE ConsoleInput,
IN HANDLE ConsoleOutput)
BOOLEAN Bios32Initialize(IN HANDLE ConsoleOutput)
{
BOOLEAN Success;
UCHAR Low, High;
@ -401,10 +400,7 @@ BOOLEAN Bios32Initialize(IN HANDLE ConsoleInput,
BiosHwSetup();
/* Initialize the Keyboard BIOS */
if (!KbdBios32Initialize(ConsoleInput)) return FALSE;
/* Set the console input mode */
SetConsoleMode(ConsoleInput, ENABLE_MOUSE_INPUT | ENABLE_PROCESSED_INPUT);
if (!KbdBios32Initialize()) return FALSE;
/* Initialize the Video BIOS */
if (!VidBios32Initialize(ConsoleOutput)) return FALSE;

View file

@ -129,8 +129,7 @@ extern PBIOS_DATA_AREA Bda;
VOID EnableHwIRQ(UCHAR hwirq, EMULATOR_INT32_PROC func);
VOID PicIRQComplete(LPWORD Stack);
BOOLEAN Bios32Initialize(IN HANDLE ConsoleInput,
IN HANDLE ConsoleOutput);
BOOLEAN Bios32Initialize(IN HANDLE ConsoleOutput);
VOID Bios32Cleanup(VOID);
#endif // _BIOS32_H_

View file

@ -261,7 +261,7 @@ static VOID WINAPI BiosKeyboardIrq(LPWORD Stack)
/* PUBLIC FUNCTIONS ***********************************************************/
BOOLEAN KbdBios32Initialize(HANDLE ConsoleInput)
BOOLEAN KbdBios32Initialize(VOID)
{
/* Initialize the BDA */
Bda->KeybdBufferStart = FIELD_OFFSET(BIOS_DATA_AREA, KeybdBuffer);
@ -277,9 +277,6 @@ BOOLEAN KbdBios32Initialize(HANDLE ConsoleInput)
EnableHwIRQ(1, BiosKeyboardIrq);
// EnableHwIRQ(12, BiosMouseIrq);
/* Set the console input mode */
// SetConsoleMode(ConsoleInput, ENABLE_MOUSE_INPUT | ENABLE_PROCESSED_INPUT);
return TRUE;
}

View file

@ -40,7 +40,7 @@
WORD BiosGetCharacter(VOID);
BOOLEAN KbdBios32Initialize(HANDLE ConsoleInput);
BOOLEAN KbdBios32Initialize(VOID);
VOID KbdBios32Cleanup(VOID);
#endif // _KBDBIOS32_H_

View file

@ -384,7 +384,9 @@ BOOLEAN EmulatorInitialize(HANDLE ConsoleInput, HANDLE ConsoleOutput)
PS2Initialize(ConsoleInput);
/* Set the console input mode */
// SetConsoleMode(ConsoleInput, ENABLE_MOUSE_INPUT | ENABLE_PROCESSED_INPUT);
// FIXME: Activate ENABLE_WINDOW_INPUT when we will want to perform actions
// upon console window events (screen buffer resize, ...).
SetConsoleMode(ConsoleInput, ENABLE_PROCESSED_INPUT /* | ENABLE_WINDOW_INPUT */);
/* Start the input thread */
InputThread = CreateThread(NULL, 0, &PumpConsoleInput, ConsoleInput, 0, NULL);

View file

@ -325,6 +325,10 @@ VOID GenerateKeyboardInterrupts(VOID)
BOOLEAN PS2Initialize(HANDLE ConsoleInput)
{
#if 0
DWORD ConInMode;
#endif
/* Create the mutex */
QueueMutex = CreateMutex(NULL, FALSE, NULL);
@ -332,6 +336,21 @@ BOOLEAN PS2Initialize(HANDLE ConsoleInput)
RegisterIoPort(PS2_CONTROL_PORT, PS2ReadPort, PS2WritePort);
RegisterIoPort(PS2_DATA_PORT , PS2ReadPort, PS2WritePort);
#if 0
if (MousePresent)
{
/* Support mouse input events if there is a mouse on the system */
if (GetConsoleMode(ConsoleInput, &ConInMode))
SetConsoleMode(ConsoleInput, ConInMode | ENABLE_MOUSE_INPUT);
}
else
{
/* Do not support mouse input events if there is no mouse on the system */
if (GetConsoleMode(ConsoleInput, &ConInMode))
SetConsoleMode(ConsoleInput, ConInMode & ~ENABLE_MOUSE_INPUT);
}
#endif
return TRUE;
}

View file

@ -400,7 +400,7 @@ INT wmain(INT argc, WCHAR *argv[])
}
/* Initialize the system BIOS */
if (!BiosInitialize(NULL, ConsoleInput, ConsoleOutput))
if (!BiosInitialize(NULL, ConsoleOutput))
{
wprintf(L"FATAL: Failed to initialize the VDM BIOS.\n");
goto Cleanup;