EFI-native port

  • Be sure to checkout “Tips & Tricks”
    Dear Guest Visitor → Once you register and log-in please checkout the “Tips & Tricks” page for some very handy tips!

    /Steve.
  • BootAble – FreeDOS boot testing freeware

    To obtain direct, low-level access to a system's mass storage drives, SpinRite runs under a GRC-customized version of FreeDOS which has been modified to add compatibility with all file systems. In order to run SpinRite it must first be possible to boot FreeDOS.

    GRC's “BootAble” freeware allows anyone to easily create BIOS-bootable media in order to workout and confirm the details of getting a machine to boot FreeDOS through a BIOS. Once the means of doing that has been determined, the media created by SpinRite can be booted and run in the same way.

    The participants here, who have taken the time to share their knowledge and experience, their successes and some frustrations with booting their computers into FreeDOS, have created a valuable knowledgebase which will benefit everyone who follows.

    You may click on the image to the right to obtain your own copy of BootAble. Then use the knowledge and experience documented here to boot your computer(s) into FreeDOS. And please do not hesitate to ask questions – nowhere else can better answers be found.

    (You may permanently close this reminder with the 'X' in the upper right.)

eugrus

New member
Nov 9, 2024
2
0
I've read of the plans to port SpinRite to either RTOS-32 or Windows (NT native mode probably?) on the "Future" section of the website.

However this makes me wonder why the developer decided against a EFI-native application (UEFI Portable Executable).
 
I've read of the plans to port SpinRite to either RTOS-32 or Windows (NT native mode probably?) on the "Future" section of the website.

However this makes me wonder why the developer decided against a EFI-native application (UEFI Portable Executable).
I suggested that several times over in the newsgroup, as a UEFI application would give complete control over the machine without any worries about interference from other processes run by the OS, but for whatever reason Steve doesn’t want to go in that direction.
 
  • Like
Reactions: eugrus
I have discovered over the years, never bet against Steve. I am sure there is a good reason. Perhaps he will share the history of any new version eventually. Has anyone tried asking this question via the podcast he does on TWIT.
 
However this makes me wonder why the developer decided against a EFI-native application (UEFI Portable Executable).
From what I can see in the discussions in the Newsgroups, Steve's concerns about providing SR as a native UEFI application were mainly the amount of development required. It appears that as a native application, there would be no "infrastructure" available, so he would have to write his own display drivers (graphics mode only - text display not available in UEFI), and disk drivers as well as the application itself. The plan was to use RTOS-32 to provide this framework within which the application can run.
 
From what I can see in the discussions in the Newsgroups, Steve's concerns about providing SR as a native UEFI application were mainly the amount of development required. It appears that as a native application, there would be no "infrastructure" available, so he would have to write his own display drivers (graphics mode only - text display not available in UEFI), and disk drivers as well as the application itself. The plan was to use RTOS-32 to provide this framework within which the application can run.
I pointed out to him back then that his objections were mostly invalid:

1. One can write text mode or graphical apps to the UEFI API. MemTest86 is a text mode UEFI diagnostic and testing app for RAM. Here’s the link to Console support from the UEFI spec:

2. Part of the startup phase for any UEFI system is an enumeration phase. All hardware is noted and drivers are provided for the recognized hardware.

3. After enumeration, the system can do one of two things:
A. Unload the UEFI drivers and load an operating system, passing along information about the discovered hardware, or
B. Remain in the Boot Services mode to run the UEFI shell and / or a UEFI application. Any application running at this stage can use the native UEFI drivers or unload any driver it wants and load its own driver.

They purposely designed the UEFI API to be single-tasking and DOS-like to support diagnostic and test applications like MemTest86 and SpinRite.
 
  • Like
Reactions: eugrus
Probably the lack of a TUI-library like ncurses was meant.
Read the chapter I linked to, the output function has the expected characteristics of an intelligent terminal (cursor placement, text attributes, etc). The intro paragraph states:

The UEFI console supports 16-bit Unicode character codes, a simple set of input control characters (Scan Codes), and a set of output-oriented programmatic interfaces that give functionality equivalent to an intelligent terminal.