Commit Graph

161 Commits

Author SHA1 Message Date
Virgil Dupras a2d6cea72f cfspack: fix bug where we would underallocate blocks 2019-05-16 21:07:57 -04:00
Virgil Dupras ede228374c fs: allow fsNext to skip more than one block
When B>1, fsNext failed because HL was changed in the Seek call.
2019-05-16 13:59:52 -04:00
Virgil Dupras e18879fcb2 zasm emul: hook fsdev in glue code 2019-05-16 13:23:23 -04:00
Virgil Dupras df67a38f81 Extract fs_cmds.asm from fs.asm 2019-05-16 13:20:29 -04:00
Virgil Dupras 23f0dc18ca zasm emul: add tooling for includes fsdev
On build, pack `parts/z80` into a CFS and embed it into the emulated
zasm executable as an fsdev. This will allow for the upcoming include
directive to have something to go to.

For now, this is useless except for inflating the emulated zasm's size.
2019-05-16 12:07:57 -04:00
Virgil Dupras 22c7eeaa5d Move apps/zasm/tests to tools/tests/zasm
This 'apps' folder is going to disappear. Everything is going to be a
"part" to be assembled through recipes. 'apps' has no meaning.
2019-05-16 11:23:15 -04:00
Virgil Dupras 0ae91e55ec zasm: big local symbols overhaul 2019-05-16 08:26:00 -04:00
Virgil Dupras e9244b80ee zasm: big I/O overhaul
Instead of buffering input in memory one line at a time, we go in "just
in time" mode and always read contents directly from I/O, without
buffering.

It forces us to implement a `ioPutback` scheme, but on the other hand it
greatly simplifies cases where multiple tokens are on the same line
(when a label is directly followed by an instruction).

The end result feels much more solid and less hackish.
2019-05-16 07:53:42 -04:00
Virgil Dupras 34ff0a6c2a zasm: consolidate code 2019-05-15 15:27:33 -04:00
Virgil Dupras a2b5b1efab zasm: add one layer of indirection in symbol registry
We'll need it for an upcoming "local labels" registry.
2019-05-15 14:30:41 -04:00
Virgil Dupras fa28d64278 zasm: change ioRewind to ioSeek
Will need it soon.
2019-05-15 13:41:56 -04:00
Virgil Dupras 33a1ee250d zasm: rename curOutputOffset to ZASM_PC 2019-05-15 13:31:49 -04:00
Virgil Dupras a994867a86 Wohoo! zasm assembles core.asm!!! 2019-05-14 16:50:35 -04:00
Virgil Dupras b0218349ff zasm: support multiple instructions on single line 2019-05-14 16:45:56 -04:00
Virgil Dupras 23fd493013 core: make a bit more zasm-friendly 2019-05-14 16:42:44 -04:00
Virgil Dupras 1010e8372c zasm: add support for subtractions in expressions 2019-05-14 16:39:10 -04:00
Virgil Dupras 67803f6cb5 zasm: don't upcase char literals 2019-05-14 15:42:15 -04:00
Virgil Dupras 72d2a8f073 zasm: add support for + expressions 2019-05-14 15:26:29 -04:00
Virgil Dupras 99a7c94c9f zasm: make "double parsing" a bit more solid
It was previously skipped on a local label.
2019-05-14 14:35:34 -04:00
Virgil Dupras 7972b92be1 zasm: refactoring 2019-05-14 14:32:12 -04:00
Virgil Dupras 2c0166814f zasm: support inline labels
That is, labels with code following right afterwards.
2019-05-14 14:10:20 -04:00
Virgil Dupras a486a2a81e zasm: support char literals 2019-05-14 13:53:12 -04:00
Virgil Dupras 2de69ee7cd zasm: add support for local labels 2019-05-13 20:23:10 -04:00
Virgil Dupras 17dbee6a49 zasm: deduplicate code 2019-05-13 19:47:34 -04:00
Virgil Dupras 746c86cbf8 zasm: make getSymVal not responsible for calling symFind
With local labels, these two will have to be decoupled.
2019-05-13 16:53:52 -04:00
Virgil Dupras c9deac599e zasm: add support for LD r, r' instructions 2019-05-13 16:38:09 -04:00
Virgil Dupras 878bc2919f zasm: add support for relative labels 2019-05-12 22:07:21 -04:00
Virgil Dupras 1e3982d3ab zasm: make DE indicate the last line to be read
Facilitates debugging
2019-05-12 21:44:59 -04:00
Virgil Dupras dd6fa5d38b zasm: properly propagate error conditions
Gives clearer output on errors. Easier debugging...
2019-05-12 21:31:11 -04:00
Virgil Dupras 86cad39de4 zasm: fix wrong logic in .numberTruncated error condition
`xor c` didn't do what I thought it did at the time. Newbie mistake,
there are probably a lot like this scattered around...
2019-05-12 21:23:24 -04:00
Virgil Dupras 71cbd24e1f Add filesystem docs 2019-05-12 16:06:27 -04:00
Virgil Dupras 4f44d3de63 parts/z80/fs: add "fopn" command 2019-05-12 15:38:58 -04:00
Virgil Dupras 9b4b907236 tools/emul/shell: fix srong SeekL return value
Also, add warning on attempts to write to ROM.
2019-05-12 14:32:24 -04:00
Virgil Dupras 51bab80a4c parts/z80/fs: fix fsInitMeta writing to ROM 2019-05-12 14:31:35 -04:00
Virgil Dupras 1ea5bedb4f blockdev: fix broken blkSeek/blkTell
scas didn't warn about this, but it seems that `jr` calls were out of
range. Seek and Tell was broken. Replacing `jr` with `jp` does the
trick.
2019-05-12 13:57:37 -04:00
Virgil Dupras c77d96da22 blockdev: clarify routines specs 2019-05-12 11:45:08 -04:00
Virgil Dupras a86738ae84 tools/emul/shell: add filesystem support
With the help of the newly-introduced cfspack tool, we can mount a
filesystem in our emulated shell and play around. Read-only for now.
Unpacking incoming.
2019-05-12 11:20:31 -04:00
Virgil Dupras d6f5cf5b90 zasm: fix first pass inversion bug
Also, confirm in tests that we can refer to other symbols in `.equ`.
2019-05-12 08:50:29 -04:00
Virgil Dupras 6aa53afabc zasm: add memdump mode 2019-05-12 08:49:59 -04:00
Virgil Dupras 89848dbfe2 zasm: add support for .equ 2019-05-11 22:11:05 -04:00
Virgil Dupras 6d4515cd03 zasm: little code reorganisation 2019-05-10 21:19:34 -04:00
Virgil Dupras 95f53d0ce3 zasm: support symbols in .dw directive 2019-05-10 21:17:19 -04:00
Virgil Dupras c000d5cfb1 zasm: support forward label references! 2019-05-10 21:14:46 -04:00
Virgil Dupras c239ec7dea zasm: read input in two passes 2019-05-10 20:32:05 -04:00
Virgil Dupras 6a804a9c64 zasm: buffer stdin in emulator
Also, add a port for rewinding stdin.
2019-05-10 19:55:01 -04:00
Virgil Dupras 34ee91a0d7 zasm: use blkdev IDs as input and output
This will soon allow use to seek and tell on input, which is necessary
for a second pass which is necessary for forward symbol references.

This require making `blkSel` a bit more flexible. Rather than having one
global selected blkdev, each app can select its own, in its own memory
space.
2019-05-10 19:33:34 -04:00
Virgil Dupras 5a6078df4d zasm: add support for hex literals 2019-05-09 22:14:11 -04:00
Virgil Dupras b87feac785 zasm: add support for labels! 2019-05-09 21:21:08 -04:00
Virgil Dupras 1c17dcb7a2 zasm: consolidate code 2019-05-09 15:55:29 -04:00
Virgil Dupras d34aff67bb zasm: Read from and write to streams instead of memory 2019-05-09 15:36:03 -04:00