diff --git a/boot/freeldr/freeldr/arch/i386/machpc.c b/boot/freeldr/freeldr/arch/i386/machpc.c index c846bf80ae..c7417aa6a2 100644 --- a/boot/freeldr/freeldr/arch/i386/machpc.c +++ b/boot/freeldr/freeldr/arch/i386/machpc.c @@ -311,6 +311,8 @@ DetectSerialMouse(PUCHAR Port) ULONG TimeOut; UCHAR LineControl; + UiDrawBackdrop(); + UiDrawProgressBarCenter(25, 100, "Shutting down mouse..."); /* Shutdown mouse or something like that */ LineControl = READ_PORT_UCHAR(Port + 4); WRITE_PORT_UCHAR(Port + 4, (LineControl & ~0x02) | 0x01); @@ -322,6 +324,8 @@ DetectSerialMouse(PUCHAR Port) * is the case on Apple hardware), or the serial port is misbehaving, * therefore we must give up after some time. */ + UiDrawBackdrop(); + UiDrawProgressBarCenter(25, 100, "Clearing mouse buffer..."); TimeOut = 200; while (READ_PORT_UCHAR(Port + 5) & 0x01) { @@ -334,16 +338,20 @@ DetectSerialMouse(PUCHAR Port) * Send modem control with 'Data Terminal Ready', 'Request To Send' and * 'Output Line 2' message. This enables mouse to identify. */ + UiDrawBackdrop(); + UiDrawProgressBarCenter(25, 100, "Sending modem control..."); WRITE_PORT_UCHAR(Port + 4, 0x0b); /* Wait 10 milliseconds for the mouse getting ready */ StallExecutionProcessor(10000); /* Read first four bytes, which contains Microsoft Mouse signs */ + UiDrawBackdrop(); + UiDrawProgressBarCenter(25, 100, "Reading mouse identifier..."); TimeOut = 200; for (i = 0; i < 4; i++) { - while (((READ_PORT_UCHAR(Port + 5) & 1) == 0) && (TimeOut > 0)) + while ((READ_PORT_UCHAR(Port + 5) & 1) == 0) { StallExecutionProcessor(1000); --TimeOut; @@ -353,6 +361,8 @@ DetectSerialMouse(PUCHAR Port) Buffer[i] = READ_PORT_UCHAR(Port); } + UiDrawBackdrop(); + UiDrawProgressBarCenter(25, 100, "Checking mouse type..."); TRACE("Mouse data: %x %x %x %x\n", Buffer[0], Buffer[1], Buffer[2], Buffer[3]); @@ -643,7 +653,11 @@ DetectSerialPorts(PCONFIGURATION_COMPONENT_DATA BusKey) for (i = 0; i < MAX_COM_PORTS; i++, BasePtr++) { Base = (ULONG) * BasePtr; - if (Base == 0 || !CpDoesPortExist((PUCHAR)Base)) + if (Base == 0) + continue; + UiDrawBackdrop(); + UiDrawProgressBarCenter(25, 100, "Checking port existence..."); + if (!CpDoesPortExist((PUCHAR)Base)) continue; TRACE("Found COM%u port at 0x%x\n", i + 1, Base); @@ -709,9 +723,13 @@ DetectSerialPorts(PCONFIGURATION_COMPONENT_DATA BusKey) Size, &ControllerKey); + UiDrawBackdrop(); + UiDrawProgressBarCenter(25, 100, "Checking port in use..."); if (!Rs232PortInUse(UlongToPtr(Base))) { /* Detect serial mouse */ + UiDrawBackdrop(); + UiDrawProgressBarCenter(25, 100, "Checking port for mouse..."); DetectSerialPointerPeripheral(ControllerKey, UlongToPtr(Base)); } @@ -1291,11 +1309,23 @@ DetectIsaBios(PCONFIGURATION_COMPONENT_DATA SystemKey, ULONG *BusNumber) (*BusNumber)++; /* Detect ISA/BIOS devices */ + UiDrawBackdrop(); + UiDrawProgressBarCenter(25, 100, "Detecting disks..."); DetectBiosDisks(SystemKey, BusKey); + UiDrawBackdrop(); + UiDrawProgressBarCenter(25, 100, "Detecting serial..."); DetectSerialPorts(BusKey); + UiDrawBackdrop(); + UiDrawProgressBarCenter(25, 100, "Detecting parallel..."); DetectParallelPorts(BusKey); + UiDrawBackdrop(); + UiDrawProgressBarCenter(25, 100, "Detecting keyboard..."); DetectKeyboardController(BusKey); + UiDrawBackdrop(); + UiDrawProgressBarCenter(25, 100, "Detecting ps2 mouse..."); DetectPS2Mouse(BusKey); + UiDrawBackdrop(); + UiDrawProgressBarCenter(25, 100, "Detecting display..."); DetectDisplayController(BusKey); /* FIXME: Detect more ISA devices */ @@ -1316,10 +1346,20 @@ PcHwDetect(VOID) GetHarddiskConfigurationData = PcGetHarddiskConfigurationData; /* Detect buses */ + UiDrawBackdrop(); + UiDrawProgressBarCenter(25, 100, "Detecting PCI..."); DetectPciBios(SystemKey, &BusNumber); + UiDrawBackdrop(); + UiDrawProgressBarCenter(25, 100, "Detecting APM..."); DetectApmBios(SystemKey, &BusNumber); + UiDrawBackdrop(); + UiDrawProgressBarCenter(25, 100, "Detecting PNP..."); DetectPnpBios(SystemKey, &BusNumber); + UiDrawBackdrop(); + UiDrawProgressBarCenter(25, 100, "Detecting ISA..."); DetectIsaBios(SystemKey, &BusNumber); // TODO: Detect first EISA or MCA, before ISA + UiDrawBackdrop(); + UiDrawProgressBarCenter(25, 100, "Detecting ACPI..."); DetectAcpiBios(SystemKey, &BusNumber); // TODO: Collect the ROM blocks from 0xC0000 to 0xF0000 and append their diff --git a/boot/freeldr/freeldr/ntldr/winldr.c b/boot/freeldr/freeldr/ntldr/winldr.c index 3ecda6be92..3be8f72489 100644 --- a/boot/freeldr/freeldr/ntldr/winldr.c +++ b/boot/freeldr/freeldr/ntldr/winldr.c @@ -756,6 +756,8 @@ LoadAndBootWindows(IN OperatingSystemItem* OperatingSystem, return; /* Load NLS data, OEM font, and prepare boot drivers list */ + UiDrawBackdrop(); + UiDrawProgressBarCenter(20, 100, "Scanning system hive..."); Success = WinLdrScanSystemHive(LoaderBlock, BootPath); TRACE("SYSTEM hive %s\n", (Success ? "scanned" : "not scanned")); /* Bail out if failure */ @@ -787,6 +789,8 @@ LoadAndBootWindowsCommon( #ifdef _M_IX86 /* Setup redirection support */ + UiDrawBackdrop(); + UiDrawProgressBarCenter(20, 100, "Setting up EMS..."); WinLdrSetupEms((PCHAR)BootOptions); #endif @@ -794,10 +798,16 @@ LoadAndBootWindowsCommon( SystemRoot = strstr(BootPath, "\\"); /* Detect hardware */ + UiDrawBackdrop(); + UiDrawProgressBarCenter(25, 100, "Detecting hardware..."); LoaderBlock->ConfigurationRoot = MachHwDetect(); if (OperatingSystemVersion == 0) + { + UiDrawBackdrop(); + UiDrawProgressBarCenter(25, 100, "Detecting version..."); OperatingSystemVersion = WinLdrDetectVersion(); + } /* Load the operating system core: the Kernel, the HAL and the Kernel Debugger Transport DLL */ Success = LoadWindowsCore(OperatingSystemVersion,