Commit Graph

11 Commits

Author SHA1 Message Date
Eric-Paul Ickhorn 7abe0539f9
Make finishing touches before UEFI addition
As legacy BIOS isn't as straightforward to develop using a modern
system, modern emulators/VMs and virtual machine firmware, it was
decided to start work on an UEFI version of the Nightloader.

This commit leaves the not-yet boot-capable, but as far as it's
there already assembling and working legacy BIOS code behind for
later work on this edition.
2024-08-07 10:06:18 +02:00
Eric-Paul Ickhorn 65db388f00
Fix A20 by copying others' implementation
The implementation of the A20 wraparound check was off in some way,
which is why the new implementation was copied from osdev.org, just
using minor modifications to the label naming.
2024-08-06 13:25:42 +02:00
Eric-Paul Ickhorn 5ba30e5f8b
Fix GDT length being insufficient
The value of the GDTR register was set to be 8 bytes too small, with
the effect that an accurate emulation software would error out because
of trying to read over the buffer size, as was noticed when using KVM.

This was due to the perception that the 0th index wouldn't be taken
into account; for that reason, the length of the GDTR was one index
short of what it should've been.
2024-08-06 13:20:40 +02:00
Eric-Paul Ickhorn fd8b5bd57e Fix bug in GDT when using KVM acceleration
The bug was due to the DS segment being set to the 0th segment entry,
causing a general protection fault.
2024-07-30 08:52:24 +02:00
Eric-Paul Ickhorn f573f49874
Fix GDT error offsetting memory by some bytes
The error in the GDT caused the whole memory space to be offset by
128B or 256B (It's not entirely sure which one of those). This was
only made visible by later changes, but now it's fixed.
2024-07-19 00:12:52 +02:00
Eric-Paul Ickhorn 44ca45e8f1
Finish up GDT, get linear address space working
The GDT is now finally set and produces a linear address space.
Execution continues at 'stage2_true_entry'.
2024-07-06 00:12:07 +02:00
Eric-Paul Ickhorn 0d49245a60
Delete GDT-related files
This commit deletes the gdt.asm for the i386 architecture as it was
quite buggy in that state. In a short while, the real GDT code which
works is going to be committed.
2024-07-06 00:12:06 +02:00
Eric-Paul Ickhorn 993864e364
Save progess, then delete GDT for rewrite
This commit saves the progress made on the GDT; the files are deleted
quickly thereafter as the code was quite buggy.
2024-07-06 00:12:06 +02:00
Eric-Paul Ickhorn 83eb29d55c
Try to fix GDT; unsuccessful
This commit just existed because of a misunderstanding leading to the
belief that the GDT was finally working; it wasn't though.
2024-07-06 00:12:06 +02:00
Eric-Paul Ickhorn c3f2c7fbfc
Intermediate commit to add GDT
In this commit, it was tried to set a linear GDT. It didn't work; but
in the future, it will.
2024-07-06 00:05:17 +02:00
Eric-Paul Ickhorn 94a228b278
Add A20 line check
This commit adds a check for whether the A20 line is usable; checking
whether more than one megabyte of RAM can be used. If it isn't usable,
it currently isn't activated, but rather, the boot process is stopped.
2024-07-06 00:03:48 +02:00