collapseos/recipes/rc2014/zasm/README.md
2019-06-03 13:35:21 -04:00

63 lines
1.7 KiB
Markdown

# 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
> zasm 2 1
> mptr 8600
> bsel 1
> seek 00 0000
> load ff
> call 00 0000
Assembled from a RC2014
That RC2014 is starting to feel powerful now, right?