Commit graph

278 commits

Author SHA1 Message Date
Hermès Bélusca-Maïto 38cbe5acc3
[FREELDR] Update documentation following timeout and UI style work. 2022-02-21 02:54:06 +01:00
Hermès Bélusca-Maïto 63833c769f
[FREELDR] Update existing FREELDR.INI documentation. 2022-02-21 02:54:05 +01:00
Hermès Bélusca-Maïto d215039216
[FREELDR:UI] Improve setting UI colors/strings ("theme") defaults.
Now, default UI colors/strings (e.g. titles/timeout text) that are
dependent of the UI "theme" (mini vs. full TUI) are set first when
calling their corresponding Initialize() function.
Then, the user UI settings are read from the user's freeldr.ini file
and override the UI theme defaults.

These settings get effectively applied at the first drawing operation
(usually the UiFadeInBackdrop() call done by the main UiInitialize()
function).
For "directui" we don't care about the settings -- they are hardcoded.

This allows not having to specify the default settings in the
freeldr.ini files anymore.

+ Add support for "None" UiBackdropFillStyle: fill with whitespace,
  instead of the specific patterns.
2022-02-21 02:54:03 +01:00
Hermès Bélusca-Maïto 44ed4fb001
[FREELDR:UI] TuiUpdateDateTime(): Simplify building the date/time strings. 2022-02-21 02:54:02 +01:00
Hermès Bélusca-Maïto 3599c835f6
[FREELDR:UI] Improve menu timeout drawing.
Fixes CORE-13827, where the timer countdown would otherwise display
incorrectly if there were no trailing spaces after the timer string.
Now, the countdown is always appended with one space separator after
the end of the string, **or**, it is inserted at a specific place
delimited by a %d insertion point in the string.

Also, don't repaint the date & time (in full-UI mode) many times per
second -- instead of only once per second -- while displaying a menu.
2022-02-21 02:54:01 +01:00
Hermès Bélusca-Maïto ee32f9b86e
[FREELDR:UI] Isolate TuiDrawBox() top/bottom horizontal lines drawing into their own helpers. 2022-02-21 02:54:00 +01:00
Hermès Bélusca-Maïto 622a90522d
[FREELDR:UI] Fix the painting ordering of menu elements. 2022-02-21 02:53:59 +01:00
Hermès Bélusca-Maïto 5239a0ca4d
[FREELDR:UI] Improve how menu line separators are drawn.
When the menu is not boxed, do not draw the specific "T"-shaped box
corners for the separators.
2022-02-21 02:53:58 +01:00
Hermès Bélusca-Maïto c322610f6e
[FREELDR] Improve progress bar support, adapted from Inbv.
- Improve accuracy/progression smoothness when loading drivers.
- Allow changing text and percentage independently.
2022-02-21 02:53:54 +01:00
Hermès Bélusca-Maïto 81943afb7b
[FREELDR:NTLDR] Slightly rework how KD transport DLLs are loaded.
A Kernel Debugger Transport DLL is always loaded for Windows XP+ :
either the standard KDCOM.DLL (by default), or an alternative
user-provided one via the /DEBUGPORT= option. If this alternative
does not exist or fails to be loaded, fall back to the standard
KDCOM.DLL.

If no KD dll is loaded, kernel loading would fail because of the
resulting unsatisfied KDCOM dll import (tested on Windows and ReactOS).

+ Normalize kernel, HAL and KD dll file names to lowercase (needed for
  case-sensitive installations).
2022-02-18 20:24:51 +01:00
Hermès Bélusca-Maïto 2221df213f
[FREELDR] Add cleanup in PE-image-handling-related failure code paths. 2022-02-18 20:24:49 +01:00
Hermès Bélusca-Maïto 15e1489c7f
[FREELDR:NTLDR] Add some error handling for LoadModule().
Based on PR #4294 by Serge Gautherie.

Co-authored-by: Serge Gautherie <reactos-git_serge_171003@gautherie.fr>
2022-02-18 20:24:48 +01:00
Hermès Bélusca-Maïto 1a920d9a7e
[FREELDR:NTLDR] Shorten KdTransportDllName --> KdDllName. 2022-02-18 20:24:47 +01:00
Hermès Bélusca-Maïto a7e3584065
[FREELDR:UI] Cleanup for the DrawMenu* functions.
- Remove duplicated code from directui.c and use the one from
  TUI instead, with the latter properly #ifdef'ed for _M_ARM.

- Add SAL annotations.
2022-02-16 00:49:48 +01:00
Hermès Bélusca-Maïto f73c0e08e2
[FDEBUG][CMIDRIVER] Add missing psdk dependency for user-mode code. 2022-02-12 16:21:30 +01:00
Hermès Bélusca-Maïto 914f14a8b9
[FREELDR:NTLDR] Adjust some debug traces. RegOpenKey(): demote an ERR to WARN.
CORE-18040
2022-02-07 00:26:30 +01:00
Hermès Bélusca-Maïto f6a13d452c
[FREELDR:NTLDR] Implement support for the SOS option.
CORE-9023, CORE-18033

- Reset the UI to a minimal one in SOS mode.

- In SOS mode, a trace of loaded files is displayed on the screen,
  instead of the usual progress bar.

- Add a callback to the PE loader to notify when imported DLLs are
  loaded for a main image. This allows getting an accurate SOS trace.
2022-02-06 23:53:41 +01:00
Hermès Bélusca-Maïto cfbec70e04
[FREELDR] Use strsafe functions in the PE loader. 2022-02-06 22:20:58 +01:00
Hermès Bélusca-Maïto 313e6b6cbb
[FREELDR:UI] Clean-up when uninitializing the UI.
- If the started OS loader failed and we are back to the OS selection
  menu, re-initialize the UI as the loader may have messed up the display
  in the meantime.

- Tear down allocated off-screen back-buffer when uninitializing the TUI.
- Clear up the screen when initializing the direct-UI.
2022-02-06 22:20:57 +01:00
Hermès Bélusca-Maïto e2daca3f60
[FREELDR:UI] Improve drawing of progress bars, reducing flickering.
- Remove excessive UiDrawBackdrop() calls that caused too many
  unnecessary redraws.

- ProgressBar: Clear only the portions that need to be cleared up.
  This allows to not use DrawBackdrop anymore and the flickering.
2022-02-06 17:52:46 +01:00
Hermès Bélusca-Maïto 9101247366
[FREELDR:UI] Couple of fixes for the ProgressBar functions.
- Fix box size calculations.
- MiniTUI: Distinguish Vista+ vs. NTLDR style progress bar.
2022-02-06 17:52:44 +01:00
Hermès Bélusca-Maïto d749b45e2a
[FREELDR:UI] Cleanup for the ProgressBar functions.
- Remove duplicated code from directui.c and use the one from
  TUI instead, with the latter properly #ifdef'ed for _M_ARM.

- Fix their title color.
- Add SAL annotations.
2022-02-06 17:52:43 +01:00
Hermès Bélusca-Maïto a9994eab45
[FREELDR:UI] Couple of fixes for some TUI Draw*Text functions.
- TuiDrawCenteredText: Partly fix centering calculations (susceptible
  to give negative coordinates).

- TuiDrawText2: Don't display anything if X or Y are out of the screen.
2022-02-06 17:52:42 +01:00
Hermès Bélusca-Maïto f6a2438c1f
[FREELDR:UI] Cleanup for the DrawText* functions.
- Remove duplicated code from directui.c and use the one from
  TUI instead, with the latter properly #ifdef'ed for _M_ARM.

- Provide the minimal implementations for NoUiDrawText*().
- TuiDrawText() is just a particular case of TuiDrawText2().

- Isolate the TuiPrintf() and TuiDraw*Text*() functions as separate
  "Generic TUI utils".

- Fix "TAG_TAG" typo in TAG_TAG_TUI_PALETTE.
- Add SAL annotations.
2022-02-06 17:52:40 +01:00
Hermès Bélusca-Maïto 06fc2e72a6
[FREELDR:UI] Disable GUI code from compilation as it is currently stubbed.
Rename "ShowGui" -> "ShowUi" as this variable was actually unrelated
to *graphical* aspects of the UI.
2022-02-06 17:52:39 +01:00
Hermès Bélusca-Maïto 844c9dce6c
[FREELDR:UI] Code formatting only. 2022-02-06 17:52:38 +01:00
Chan Chilung 171a920680
[TRANSLATION] Update Chinese Traditional (zh-TW) translation (#4154)
- Added translation for:
  - [W32TIME]
  - [MODE]
  - [TIMEOUT]
  - [MODEMUI]
  - [ARPING]
  - [FRAGINATOR]
  - and more
- Updated existing translation
- [WINNLS] Update cht (zh-TW) and zhh (zh-HK)
- [DOC] Update rules in Chinese translation notes.txt
- Wine translation sync

Some of the punctuation use in WIne has been converted to half-width,
so the punctuation will no longer synced.
2022-01-14 20:22:46 +03:00
Hermès Bélusca-Maïto 0d00a5d6eb
[FREELDR] Slightly revamp the Exception BSOD screen.
- Don't store trailing newlines in the exception description text strings.
- Remove unused i386PrintChar().
- Display CR4 in x86.

- Use the "indentation" printf generation trick in order to get aligned
  strings for (CF4 and) DR6 and DR7, without having to hardcode the tons
  of alignment whitespaces (--> make the strings stored in freeldr shorter).

- Show the IP/ErrorCode/EFlags/GDTR/IDTR/LDTR values vertically aligned.

- Display the stack frames in both x86 and x64 modes.

- Adjust the instruction pointer when a BREAKPOINT or OVERFLOW exception
  arises, so that the offending instruction can show up in the instruction
  stream.
2022-01-01 05:04:23 +01:00
Hermès Bélusca-Maïto 2c9dbacebb
[FREELDR] Fix displayed information in the Exception BSOD.
CORE-16748

- Display the correct TR register value.

- Ensure that the x86 segment register values displayed are really
  2-byte long.

Segment registers are intrinsically 16 bits. Even if the x86
KTRAP_FRAME structure stores them as ULONG, only their lower 16 bits
are initialized. We thus cast them to USHORT before display.

These segment registers are saved in a stack-based KTRAP_FRAME by the
CPU trap mechanism (for SS), and by 'push CS' etc. instructions for
the others, and from Intel documentation, we know that:
"
If the source operand is a segment register (16 bits) and the operand
size is 64-bits, a zero-extended value is pushed on the stack; if the
operand size is 32-bits, either a zero-extended value is pushed on the
stack or the segment selector is written on the stack using a 16-bit
move. For the last case, all recent Core and Atom processors perform
a 16-bit move, leaving the upper portion of the stack location unmodified.
"
So it may happen, when using the push, that either they get zero-extended,
or garbage gets stored in the higher bits, and these need to be trimmed.
2022-01-01 05:04:22 +01:00
Hermès Bélusca-Maïto 50eaa449f8
[FREELDR] Use actual ReactOS copyright year. 2021-12-31 23:55:31 +01:00
Hermès Bélusca-Maïto a01398b034
[FREELDR] Adjust a boot-options editor example. 2021-12-30 03:42:00 +01:00
Serge Gautherie 30010a5aa7
[FREELDR] debug.h: Add an explicit VOID parameter type (#4133)
Addendum to 98c17d3.
2021-12-03 03:14:44 +01:00
Stanislav Motylkov 1897f9f0c0
[FREELDR] Fix release builds for PC-98 and Xbox platforms
Fix error C4013: 'DebugDisableScreenPort' undefined; assuming extern returning int

Addendum to 98c17d31. CORE-16216
2021-11-27 20:22:09 +03:00
Hermès Bélusca-Maïto 2b31977838
[FREELDR] Add RegCloseKey() and use it where registry keys need to be closed.
Actually, RegCloseKey() is here a dummy macro that just "returns"
success. Indeed, the internal implementation of RegOpenKey() doesn't
really allocate internal structures: it just returns a "pointer" to
already existing allocated data. Therefore nothing needs to be closed/freed
later on.
2021-11-19 03:55:21 +01:00
Hermès Bélusca-Maïto 60d4a34892
[FREELDR] Switch to RtlZeroMemory() from memset(). 2021-11-19 02:22:20 +01:00
Hermès Bélusca-Maïto 497fee1622
[FREELDR] Don't hardcode buffer size. 2021-11-19 02:22:18 +01:00
Hermès Bélusca-Maïto 5cad040726
[FDEBUG] Switch to ZeroMemory() from memset(). 2021-11-19 02:22:15 +01:00
Serge Gautherie c5e5e3117c
[FREELDR] Diverse improvements and fixes for CORE-12802. (#3466)
- Move a few lines around.
- Switch to RtlZeroMemory() from memset().
- Make while() more explicit.

For CORE-12802:
- Add/Fix FrLdrHeapAlloc() failure handling and related.
  Especially, add/fix FrLdrHeapFree() calls.

- Add/Improve ERR() to some FrLdrHeapAlloc() failure cases.

Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
2021-11-19 01:49:55 +01:00
Süleyman Poyraz 05c39d8d62
[TRANSLATION] Update Turkish (tr-TR) translations (#3958)
Reviewed-by: Can Taşan <ctasan99@hotmail.com>
Signed-off-by: Süleyman Poyraz <zaryob.dev@gmail.com>
2021-10-10 16:00:12 +03:00
Chan Chilung 463784c5f1
[TRANSLATION] Chinese Traditional (zh-TW) translation update (#3954)
Also sync LOCALMON/UI translation with Wine.
2021-10-10 15:00:44 +03:00
Victor Perevertkin e372f2b19b
[REACTOS] Remove PowerPC Open Firmware-related code
Was forgotten during the overall PowerPC support removal.
Addendum to 6ef6fabfc5
2021-09-24 04:13:08 +03:00
Victor Perevertkin 8e1fa03456
[CMAKE] Replace custom scripts in compilerflags with standard ones
- add_target_link_flags changed to target_link_options
- add_target_property changed to set_property(... APPEND ...)
2021-09-14 17:56:22 +03:00
Hermès Bélusca-Maïto 9393fc320e
[FORMATTING] Remove trailing whitespace. Addendum to 34593d93.
Excluded: 3rd-party code (incl. wine) and most of the win32ss.
2021-09-13 03:52:22 +02:00
Hermès Bélusca-Maïto bbabe2489e
[FORMATTING][TRANSLATION] Remove trailing whitespace. Addendum to 34593d93.
Excluded: 3rd-party code (incl. wine).
2021-09-13 03:52:21 +02:00
Hermès Bélusca-Maïto 9b1edceae1
[REACTOS] Fix some instances of DPRINTs with trailing whitespace before newlines. 2021-09-13 03:52:19 +02:00
Süleyman Poyraz 53221834c5
[TRANSLATION] Add and improve Turkish (tr-TR) translation (#3561)
Reviewed-by: Can Taşan <ctasan99@hotmail.com>
Reviewed-by: Ercan Ersoy <ercanersoy@ercanersoy.net>
Signed-off-by: Süleyman Poyraz <zaryob.dev@gmail.com>
2021-09-12 00:34:11 +03:00
Victor Perevertkin 6ef6fabfc5
[FREELDR][NTOS][HALPPC][SDK] Remove PowerPC code
Remove PowerPC-related code from the kernel, HAL, SDK and
Freeloader.
2021-08-15 15:35:51 +03:00
Jérôme Gardou f30136bc79 [NTOS:KE] Test spinlock ownership on both UP & MP build
There is no reason not to, and this avoids introducing bugs stupidly.
2021-06-29 11:49:20 +02:00
Jérôme Gardou 54ecf703f2 [CMAKE:GCC] Produce RosSym data even when building with separate debug symbols 2021-06-29 11:49:20 +02:00
Jérôme Gardou 5c332f6d36 [CMAKE] Get rid of freeldr_pe_dbg target
objcopy bug is now solved and I can't remember how this used to work anyway.
Use strip instead.
If you need to debug freeldr
 - set SEPARATE_DBG cmake var to TRUE
 - use qemu GDB stub
 - In GDB : add-symbol-file <build_dir>/symbols/freeldr_pe.exe
2021-06-29 11:49:20 +02:00