rizxt wrote:
Much to my horror, I find out UEFI has no text mode support.
Once you have set up the linear frame buffer, it works exactly no matter if you have used VESA and GOP, there's no difference.
rizxt wrote:
alexfru wrote:
Rendering monospaced bitmap fonts is trivial and there are plenty of fonts online. Making your own (for ASCII and most Latin scripts, at least) isn't too hard. Write the code. Make it portable and to test it quickly, dump the rendered stuff to a simple bitmap file (
BMP, specifically, 24 bpp without compression) that you can then see with standard tools on your host/dev OS. No drama here.
Not only the text is important here. I need to know if my interrupts will be affected, my keyboard support, the whole boot process, I don't know what needs to be changed.
About the fonts, you could use
PC Screen Font, that's what Linux uses (meaning you can use the fonts shipped with your distro). The wiki contains an example C code how to display characters.
You can also use my
SSFN library, it is an stb-style header only ANSI C implementation, designed to be portable and already tested on x86_64 and AArch64 bare metal. The
ssfn_putc() renderer was designed specifically for kernel consoles (absolutely no dependencies, no function calls at all), but it supports only unscaled bitmap fonts. The normal renderer has some memory related dependencies (malloc for example), but it can display vector fonts as well. Example fonts are available in the repo, plus you can convert virtually all font formats into SSFN.
About the interrupts, those are handled by the CPU, so no matter what firmware you use.
The same stands for peripherals: no matter the firmware, you can always use them. You'll only lack the firmware provided interface. For example, to send characters to the serial port, with BIOS you would use int 14h, while under UEFI you'd use SERIAL_IO protocol. Regardless the IO ports 0x3f5 are accessible for both, because IO ports are independent to the firmware.
Cheers,
bzt