Commit Graph

264 Commits

Author SHA1 Message Date
Virgil Dupras 57356e47b4 recipes/rc2014/sdcard: add instructions to write to SD card 2019-06-02 12:04:11 -04:00
Virgil Dupras 26e71ee580 Update shell/blkdev docs 2019-06-02 11:23:24 -04:00
Virgil Dupras 95f1a8ddaf blkdev: make load command stop and the end of the stream
This allows us to reliably and easily load a file until the end of it.
2019-06-02 11:18:06 -04:00
Virgil Dupras 73c3fc7947 shell/stdio: decouple from blkdev (again)
Move load/save to blkdev_cmds and add a new "poke" builtin shell cmd
that is the mirror of "peek" and strictly uses stdio (no blkdev
involved).

This allows us to slim the minimal OS size but, more importantly, change
the behavior of "load" so that we don't expect GetC to block until Z is
set. This way, using "load X" with X being larger than the blkdev size
won't block forever.

This also brings our RC2014 minimal kernel below the 1K mark again.
2019-06-02 11:06:38 -04:00
Virgil Dupras 88bf98321e fs: adjust to DE->IX change in recipe/emul glue code 2019-06-02 10:18:03 -04:00
Virgil Dupras 5e5c7e6592 sdc: add sdcPutC
Wriiiiiite!
2019-06-01 19:53:42 -04:00
Virgil Dupras 3bc7cec03a sdc: allow the read of 0xff
That took an embarrasingly large amount of time to debug for something,
in the end, so obvious...
2019-05-31 21:33:42 -04:00
Virgil Dupras 2e8af376e3 pgm: new kernel module
The pgm module implements a shell hook so that when an unknown command
is typed, we look into the mounted filesystem and look for a file with
the same name as the command. If we find one, we load it in memory and
run it.
2019-05-31 14:54:15 -04:00
Virgil Dupras 7c191fd978 fs: standardize file handle routine argument to IX
Using HL/DE was awkward and error-prone.
2019-05-31 14:28:06 -04:00
Virgil Dupras 83771b538f fs: check for file size bounds in GetC 2019-05-31 11:12:29 -04:00
Virgil Dupras a641a94853 sdc: make sector swapping more robust
It would previously only work when GetC-ing our way into a new sector.
Seeking into one would not work. Now it's much more robust and this
paves the way for write support.
2019-05-30 14:55:38 -04:00
Virgil Dupras cdc865f8c6 tools/emul/shell: add debug output 2019-05-30 14:55:16 -04:00
Virgil Dupras 83e375936c shell: make seek cmd init DE to 0
So that blkdev not supporting 32-bit aren't messed up.
2019-05-30 14:54:28 -04:00
Virgil Dupras 6403ab1acf zasm: add support for SRL r 2019-05-30 14:46:25 -04:00
Virgil Dupras 328f44814e Make blockdev pointers 32 bits
This allows us to break through the 64K limit for includes CFS in zasm,
a limit we were dangerously close to breaking. In fact, this commit
makes us go over that limit. Right in time!
2019-05-28 19:42:35 -04:00
Virgil Dupras 6b1679c811 recipes/rc2014/sdcard: mount filesystem! 2019-05-28 13:13:34 -04:00
Virgil Dupras 312e95479e sdc: fix bug preventing us from reading beyond first sector 2019-05-28 13:12:08 -04:00
Virgil Dupras 8cfe834edb recipes/rc2014/sdcard: use "sdci" and blockdev rather than user prog 2019-05-28 11:01:17 -04:00
Virgil Dupras 2c80924df9 zasm: indicate include lineno in errors 2019-05-28 09:57:29 -04:00
Virgil Dupras 8def8e7c38 zasm: add lineno to error reports
For now, top-level only
2019-05-27 20:52:40 -04:00
Virgil Dupras e414e600ea zasm: add ERR_DUPSYM and ERR_OOM error conditions 2019-05-27 17:45:05 -04:00
Virgil Dupras b298e607bd zasm: implement error conditions for #inc 2019-05-27 14:21:46 -04:00
Virgil Dupras 31f7c7771d zasm: implement error conditions in .org and .fill 2019-05-27 14:16:40 -04:00
Virgil Dupras 371076190f zasm: implement error conditions in .equ 2019-05-27 14:07:07 -04:00
Virgil Dupras 436ff51c39 zasm: implement error conditions in .dw 2019-05-27 13:52:58 -04:00
Virgil Dupras f5d4321ece zasm: implement error conditions in .db 2019-05-27 13:44:53 -04:00
Virgil Dupras d76dd54f4b zasm: add ERR_OVFL 2019-05-27 12:12:21 -04:00
Virgil Dupras f9118ef88e xasm: expand ERR_BAD_ARG condition 2019-05-27 12:05:42 -04:00
Virgil Dupras e1e6d52fea zasm: add ERR_BAD_FMT 2019-05-27 11:58:12 -04:00
Virgil Dupras 412b3f374a zasm: add ERR_BAD_ARG 2019-05-27 11:22:38 -04:00
Virgil Dupras af2c561c6b zasm: begin erroring out reliably
Up until now, invalid source input had undefined behavior. We're now
beginning to define that behavior so that zasm can be a bit more usable.
2019-05-27 11:04:31 -04:00
Virgil Dupras 976a93971c zasm: improve docs 2019-05-27 10:38:29 -04:00
Virgil Dupras 8923fefeff Update docs 2019-05-20 12:11:45 -04:00
Virgil Dupras ed19c6afc1 Use zasm in recipes 2019-05-20 11:00:14 -04:00
Virgil Dupras c40bc329d5 zasm: fix expr returning wrong values on first pass
To run a parseExpr on first pass would always return a false success
with dummy value because symbols are configured to always succeed on
first pass. This would make expressions like ".fill 0x38-$" so bad
things to labels because "0x38-$" wouldn't return the same thing on
first and second pass.

Revert to parsing literals and symbols after having scanned for
expressions and add a special case specifically for char literals (which
is why we scanned for literals and symbols first in the first place).
2019-05-20 10:46:27 -04:00
Virgil Dupras e18f9b53a9 zasm: add support for "$" symbol
Allows for the ".fill x-$" pattern.
2019-05-20 09:17:50 -04:00
Virgil Dupras 207adbc2f8 tools/emul: add "make rescue" command 2019-05-20 08:58:53 -04:00
Virgil Dupras 848a7500bc zasm: add support for .fill directive 2019-05-20 08:39:53 -04:00
Virgil Dupras ae315499cb Run unit tests with zasm 2019-05-20 07:50:23 -04:00
Virgil Dupras d2c6e21c64 Fix broken shell
When I zasm-ified the shell a couple of dozens of commits ago, I
inverted push and pops...
2019-05-20 07:38:15 -04:00
Virgil Dupras c586c0d63c Make the shell emulator be built by zasm 2019-05-20 07:29:19 -04:00
Virgil Dupras fa3b86a5c1 zasm now bootstraps itself without scas! 2019-05-19 20:44:19 -04:00
Virgil Dupras acddb045a5 zasm: add support for .org directive 2019-05-19 14:40:42 -04:00
Virgil Dupras 49be50b730 zasm now self-assembles! 2019-05-19 13:00:52 -04:00
Virgil Dupras bc1496a7e3 zasm emul: bring back kernel/user distinction
It was a bad idea to remove it. Now that I'm introducing the concept of
a per-app glue file, it becomes much easier to build emulated zasm as a
userspace app.
2019-05-19 12:57:59 -04:00
Virgil Dupras 7fad3b0c90 Move /parts/z80 to /kernel
Let go of that "meta os" thing. it's not as meta as I made it sound
like. It's a kernel.
2019-05-19 11:19:41 -04:00
Virgil Dupras 78d9764005 zasm: can now assemble zasm/expr.asm! 2019-05-19 10:45:11 -04:00
Virgil Dupras 6cbce0533a zasm: can now assemble zasm/instr.asm! 2019-05-19 10:40:45 -04:00
Virgil Dupras ea8477bb91 zasm: accept whitespaces before separating comma 2019-05-19 10:39:29 -04:00
Virgil Dupras 3b1ef2b9af zasm: bump global symbol limit to 0x200 2019-05-19 09:54:42 -04:00