2019-06-03 13:34:16 -04:00
|
|
|
# Assembling binaries
|
|
|
|
|
|
|
|
For a system to be able to self-reproduce, it needs to assemble source z80
|
|
|
|
assembly to binary.
|
|
|
|
|
|
|
|
## Goals
|
|
|
|
|
|
|
|
Have a RC2014 assemble a Collapse OS kernel with its source living on a CFS on
|
|
|
|
a SD card.
|
|
|
|
|
|
|
|
**Work in progress: for now, we compile a simple hello.asm source file.**
|
|
|
|
|
|
|
|
## Gathering parts
|
|
|
|
|
|
|
|
* Same parts as the [SD card recipe](../sdcard).
|
|
|
|
|
|
|
|
## The zasm binary
|
|
|
|
|
|
|
|
To achieve our goal in this recipe, we'll need a zasm binary on the SD card.
|
|
|
|
This zasm binary needs to be compiled with the right jump offsets for the kernel
|
|
|
|
we build in this recipe. These offsets are in `user.h` and are closely in sync
|
|
|
|
with the configuration in `glue.asm`.
|
|
|
|
|
|
|
|
`user.h` is then included in `apps/zasm/glue.asm`.
|
|
|
|
|
|
|
|
The makefile in this recipe takes care of compiling zasm with the proper
|
|
|
|
`user.h` file and place it in `cfsin/zasm`
|
|
|
|
|
|
|
|
## The userland source
|
|
|
|
|
|
|
|
The code we're going to compile is `cfsin/hello.asm`. As you can see, we also
|
|
|
|
include `user.h` in this source code or else `ld hl, sAwesome` would load the
|
|
|
|
wrong offset.
|
|
|
|
|
|
|
|
Because of this, the Makefile takes care of copying `user.h` in our filesystem.
|
|
|
|
|
|
|
|
## Preparing the card and kernel
|
|
|
|
|
|
|
|
After running `make`, you'll end up with `sdcard.cfs` which you can load the
|
|
|
|
same way you did in the SD card recipe.
|
|
|
|
|
|
|
|
You will also have `os.bin`, which you can flash on your EEPROM the same way
|
|
|
|
you already did before.
|
|
|
|
|
|
|
|
## Running it
|
|
|
|
|
|
|
|
Compiling and running `hello.asm` is done very much like in
|
|
|
|
[the shell emulator](../../../doc/zasm.md):
|
|
|
|
|
|
|
|
Collapse OS
|
|
|
|
> sdci
|
|
|
|
> fson
|
|
|
|
> fopn 0 hello.asm
|
2019-06-07 19:53:50 -04:00
|
|
|
> fnew 1 dest
|
|
|
|
> fopn 1 dest
|
|
|
|
> zasm 1 2
|
|
|
|
> dest
|
2019-06-03 13:34:16 -04:00
|
|
|
Assembled from a RC2014
|
2019-06-07 19:53:50 -04:00
|
|
|
>
|
2019-06-03 13:34:16 -04:00
|
|
|
|
|
|
|
That RC2014 is starting to feel powerful now, right?
|