From b34e5646dd17d51f5389ae2fcff15dacb38e7d18 Mon Sep 17 00:00:00 2001 From: Aleksandar Andrejevic Date: Sat, 10 Aug 2013 19:30:14 +0000 Subject: [PATCH] [NTVDM] Optimize screen clearing by implementing it as a helper function in vga.c. svn path=/branches/ntvdm/; revision=59690 --- subsystems/ntvdm/bios.c | 27 +-------------------------- subsystems/ntvdm/vga.c | 5 +++++ subsystems/ntvdm/vga.h | 1 + 3 files changed, 7 insertions(+), 26 deletions(-) diff --git a/subsystems/ntvdm/bios.c b/subsystems/ntvdm/bios.c index 1af7b8b252c..058ff64e381 100644 --- a/subsystems/ntvdm/bios.c +++ b/subsystems/ntvdm/bios.c @@ -255,31 +255,6 @@ static VOID BiosWriteWindow(LPWORD Buffer, SMALL_RECT Rectangle, BYTE Page) } } -static VOID BiosClearScreen(VOID) -{ - INT i; - BYTE PlaneMask; - - /* Save the plane write register */ - VgaWritePort(VGA_SEQ_INDEX, VGA_SEQ_MASK_REG); - PlaneMask = VgaReadPort(VGA_SEQ_DATA); - - /* Write to all planes */ - VgaWritePort(VGA_SEQ_DATA, 0x0F); - - /* Clear the screen */ - for (i = VgaGetVideoBaseAddress(); - i < VgaGetVideoLimitAddress(); - i += sizeof(DWORD)) - { - DWORD Zero = 0; - VgaWriteMemory(i, (LPVOID)&Zero, sizeof(DWORD)); - } - - /* Restore the plane write register */ - VgaWritePort(VGA_SEQ_DATA, PlaneMask); -} - /* PUBLIC FUNCTIONS ***********************************************************/ BYTE BiosGetVideoMode(VOID) @@ -654,7 +629,7 @@ VOID BiosVideoService(LPWORD Stack) case 0x00: { BiosSetVideoMode(LOBYTE(Eax)); - BiosClearScreen(); + VgaClearMemory(); break; } diff --git a/subsystems/ntvdm/vga.c b/subsystems/ntvdm/vga.c index 4eef0ef1819..cebd09d4cea 100644 --- a/subsystems/ntvdm/vga.c +++ b/subsystems/ntvdm/vga.c @@ -1021,6 +1021,11 @@ VOID VgaWritePort(WORD Port, BYTE Data) } } +VOID VgaClearMemory(VOID) +{ + ZeroMemory(VgaMemory, sizeof(VgaMemory)); +} + VOID VgaInitialize(HANDLE TextHandle) { INT i, j; diff --git a/subsystems/ntvdm/vga.h b/subsystems/ntvdm/vga.h index 533fb24cbc7..b06cc7544df 100644 --- a/subsystems/ntvdm/vga.h +++ b/subsystems/ntvdm/vga.h @@ -193,6 +193,7 @@ VOID VgaReadMemory(DWORD Address, LPBYTE Buffer, DWORD Size); VOID VgaWriteMemory(DWORD Address, LPBYTE Buffer, DWORD Size); BYTE VgaReadPort(WORD Port); VOID VgaWritePort(WORD Port, BYTE Data); +VOID VgaClearMemory(VOID); VOID VgaInitialize(HANDLE TextHandle); #endif // _VGA_H_ -- 2.17.1