705d68deec
With KEY and EMIT being switch words, most of the high layer can be defined before drivers. In addition to this change, I've compacted core blocks which were becoming quite sparse. |
||
---|---|---|
.. | ||
blk | ||
Makefile | ||
mbr.fs | ||
README.md | ||
xcomp.fs |
PC/AT
PC-compatible machines need no introduction. They are one of the most popular machines of all time. Collapse OS has a 8086 assembler and has boot code allowing it to run on a PC/AT-compatible machine, using BIOS interrupts in real mode. Collapse OS always runs in real mode.
In this recipe, we will compile Collapse OS and write it to a USB drive that is bootable on a modern PC-compatible machine.
Gathering parts
- A modern PC-compatible machine that can boot from a USB drive.
- A USB drive
Build the binary
Running make
in this folder with yield:
- mbr.bin: a 512 byte binary that goes at the beginning of the disk
- os.bin: 8086 Collapse OS binary
- disk.bin: a concatenation of the above, with
blkfs
appended to it starting at0x2000
.
disk.bin
is what goes on the drive.
This binary has BLK
and AT-XY
support, which means you have disk I/Os and
can run VE
.
Emulation
You can run the built binary in Collapse OS' 8086 emulator using make emul
.
The 8086 emulator is barbone. If you prefer to use it on a more realistic setting, use QEMU. The command is:
qemu-system-i386 -drive file=disk.bin,if=floppy,format=raw
Running on a modern PC
First, copy disk.bin
onto your USB drive. For example, on an OpenBSD machine,
it could look like:
doas dd if=disk.bin of=/dev/sd1c
Your USB drive is now BIOS-bootable. Boot your computer and enter your BIOS setup to make sure that "legacy boot" (non-EFI boot, that is, BIOS boot) is enabled. Configure your boot device priority to ensure that the USB drive has a chance to boot.
Reboot, you have Collapse OS. Boot is of course instantaneous (we're not used to this with modern software...).