CORE-12683
Supersedes PR #612.
* [USETUP] Implement the internal MUI routines for text manipulation based on its ID and implement text resource based IDs
USETUP (the 1st stage text mode setup module) bases upon MUI (Multilingual User Interface) sub-component of USETUP which is responsible for the ability into translating the MUI pages (each page having corresponding properties like X, Y coordinates, text flags and text string buffer) in various languages.
The only problem, as of now, is that whenever you want to modify a certain property of a page, such as removing a text from the said page in the screen, you've got to rely on using CONSOLE_* specific functions and calling with hardcoded parameters, namely the coordinates.
This can become a problem as not every localized (translated) MUI page has the same properties for each language and this could lead to various issues. Therefore, assigning each entry with an ID you can remove a text by only giving its ID (and the entry page number) without having the need to specify the coordinates
as the internal MUI routine, MUIGetEntry(), automatically retrieves the entry with respective data fields.
The following commit implements:
- MUIGetEntry()
- MUIClearText()
- MUIClearStyledText()
- MUISetText()
- MUISetStyledText()
- Now the X and Y coordinate members of MUI_ENTRY are of SHORT integer type, for the sake of the general code as most of the coordination values, even the COORD structure itself, has the coordination points as SHORTs and not BYTEs.
The following MUI functions will be used to manipulate text based resources depending on their ID from the corresponding MUI entry.
* [USETUP] Make CONSOLE_ClearTextXY function public so that we can use across other files.
* [USETUP] Implement the IDs for each text MUI entry in locale files.
This mechanism follows the same principle of resource IDs in Win32 applications. Static text is merely a resource that doesn't get changed programmatically for whole of its lifetime whereas dynamic resources can change during the lifetime of the program depending on the algorithm (for example, hide that piece of text and set another one, etc.).
* [USETUP] Remove the "Press ENTER to continue" message prompt when the partition formatting begins.
- The ComputerNamePhysicalDnsDomain name type gets or sets the 'NV Domain' registry value.
- The ComputerNamePhysicalDnsHostname name type gets or sets the 'NV Hostname' registry value.
- IsValidComputerName: Enforce name length restrictions according to the name type.
The first part of PC-98 Port - https://reactos.org/wiki/PC-98
- Add FAT12 file system boot sector for NEC PC-98 series.
- Add a new build target for a PC-98 bootable floppy disk.
- Add a new sub-architecture into config.cmake.
* [HALXBOX] Formatting only.
* [HALXBOX] Don't use Xbox partitions if MBR signature found.
- Fixes BSOD 0x7B when booting from a HDD that have both MBR and BRFR signatures.
- It happens when you format Xbox (BRFR) disk as MBR.
After that "BRFR" signature is still located at sector 3.
- Also fix pre-existing leaks.
CORE-16216 CORE-16329
- Make the format actually MS-compatible: "ATL" followed by colon,
followed by hexadecimal digits of pointer.
- The MS counterpart of this DLL was delivered with Visual C++ 6.0 and
Windows 98+, so obviously it always was 32-bit and they never had a
64-bit version for it. But we do. So make the size of the m_szAutoName
buffer cross-compatible.
- See previous commit dbddd878 and the discussion in PR #2010.
The autogenerated name has the format:
"ATL:<hexadecimal_digits_of_pointer><NULL-terminator>"
and the number of hex digits in 0xABCD1234 (for 32-bit == 4-byte)
pointers (without the '0x') is 8 == 4*2, and for 64-bit == 8-byte
pointers (e.g. 0xABCDEF0123456789) is 16 == 8*2.
* [FREELDR] Cache the drive geometry in the PcDiskReadLogicalSectorsCHS()
Speed up the loading time a bit.
* [FREELDR] Generalize the cache to all the geometry data + INT 13h extensions-supported status.
The data structure used is "PC_DISK_DRIVE".
- Adapt the associated functions;
- Make DiskGetExtendedDriveParameters() private to pcdisk.c
- Introduce PcDiskDriveNumberToDrive(), that is similar to the XBOX
function XboxDiskDriveNumberToDeviceUnit(), that retrieves a valid
pointer to the cached disk corresponding to the given BIOS DriveNumber.
If needed the cached data gets initialized.
- Make XboxDiskDriveNumberToDeviceUnit() simpler by just returning the
pointer to the corresponding drive, of NULL if there is none.
Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
CORE-16220 CORE-16216
* Create a new driver.
* Use the functions from the library in xboxdisk.c
Driver now supports PC, Xbox and NEC PC-98.
Co-Authored-By: Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Far-East Asian language (Chinese, Japanese and Korean; CJK) needs special handling in console.
Especially a fullwidth character (mk_wcwidth_cjk(ch) == 2) needs a double width space. A fullwidth character on the console window is treated as a pair of a leading byte and a trailing byte (COMMON_LVB_LEADING_BYTE and COMMON_LVB_TRAILING_BYTE). CORE-12451