diff --git a/README.md b/README.md index bc36d1b..de92b2e 100644 --- a/README.md +++ b/README.md @@ -85,14 +85,17 @@ to see what it can do) on a classic RC2014. Highlights: * Extremely flexible: this is not an OS, but a meta OS. You build your own OS through glue code. -* 2K binary (but size vary wildly depending on what parts you include. 2K is for - a shell using all parts) +* 2K binary (but size vary wildly depending on what parts you include. 2K is + for a shell using all parts). * Built with minimal tooling: only [scas][scas] is needed * Can read and write to memory through shell * Can run arbitrary routine from arbitrary address with arbitrary arguments from shell. * Can "upload" code from serial link into memory and execute it. * Can manage multiple "block devices" +* Can read SD cards as block devices +* A z80 assembler written in z80 that is progressing well and should soon be + able to replace `scas`. ## Organisation of this repository diff --git a/doc/load-run-code.md b/doc/load-run-code.md index f9c1684..692dd01 100644 --- a/doc/load-run-code.md +++ b/doc/load-run-code.md @@ -58,6 +58,21 @@ So, we'll expect this to become `62` after we run the code. Let's go: Success! +## The upload.py tool + +The serial connection is not always 100% reliable and a bad byte can slip in +when you push your code and that's not fun when you try to debug your code (is +this bad behavior caused by my logic or by a bad serial upload?). + +To this end, there is a `upload.py` file in `tools/` that takes care of loading +the file and verify the contents. So, instead of doing `load 8` followed by +your `cat` above, you would have done: + + ./upload.py /dev/ttyUSB0 tosend.bin + +This emits `load` and `peek` commands and fail appropriately if the `peek` +doesn't match sent contents. Very handy. + ## Labels in RAM code If your code contains any label, make sure that you add a `.org` directive at