Page 1 of 1

TINE (This is not EFI) - A fake-EFI bootloader for BIOS envs

Posted: Thu Sep 17, 2015 11:17 pm
by BeRo
I do want to present you my project TINE (This is not EFI) - A fake-(U)EFI boot loader for pure BIOS environments, check it out at the GitHub TINE project site https://github.com/BeRo1985/tine .

It was started as advanced code example for my own x86 assembler SASM (Scriptable ASseMbler), which is implemented in Object Pascal (Delphi/FreePascal), where I've combined my older own assembler called T0A (http://www.pouet.net/prod.php?which=18796) with my own ECMAScript/Javascript engine called BESEN (https://github.com/BeRo1985/besen), and added the missed x86-64 support in my assembler.

It's a fake-(U)EFI boot loader, which loads a PE64 EFI application image on the 1 MB boundary, but this boot loader doesn't emulate the (U)EFI API interface, because it's designed for kernel images, which can differ from what they are loaded, whether from a real (U)EFI or fake (U)EFI image boot loader, for to have a single kernel image file for both BIOS/CSM and (U)EFI worlds, for to simplify the operating system development on x86-64 for to support both worlds.

And it's licensed under a BSD-style license.

When a PE64 EFI application image is loaded from this fake-(U)EFI boot loader, then the RAX register contains 0xbabeface and the RBX register contains a pointer to a multiboot-based data info structure (with informations to memory map, boot drive, etc.)

It supports FAT12, FAT16 and FAT32 file systems with auto-detection, where the (for example your own) FAT12/FAT16/FAT32 VBR boot sector must be loaded at 0x07c0:0x0000 / 0x0000:0x7c00 since this boot loader parses the BPB data from this memory place.

You do need my own assembler SASM for to build this source code. For to get the current stable SASM (Scriptable ASseMbler) binary, write me a mail at benjamin[at]rosseaux[dot]de together with your used development operating system, so that I can compile my assembler for your OS.

Regards from Germany,
BeRo