Virgil Dupras
28e1ba5e26
zasm: adjust parseLine success condition
...
De-couple "success" from "wrote something to (DE)" so that directive
parsing can be considered successful without writing to (DE).
2019-05-01 10:16:57 -04:00
Virgil Dupras
a00bc8cc4b
zasm: remove the "token" variable
2019-04-30 22:32:12 -04:00
Virgil Dupras
5fd9b7812c
zasm: make each token type parse the remaining of line directly
2019-04-30 21:55:18 -04:00
Virgil Dupras
a7693ffd86
zasm: still inching toward directives
2019-04-30 21:40:22 -04:00
Virgil Dupras
1ffe05dd09
zasm: creep in the notion of directive
2019-04-30 21:27:44 -04:00
Virgil Dupras
8241298c8f
zasm: code consolidation
2019-04-30 21:13:37 -04:00
Virgil Dupras
98ad223ee1
zasm: introduce the concept of instruction ID
...
It will make tokenization cleaner and it also makes the instruction
table significantly more compact.
2019-04-30 20:26:41 -04:00
Virgil Dupras
79b5c701f6
zasm: move token variables from tok.asm into main.asm
2019-04-30 17:04:42 -04:00
Virgil Dupras
a7635cb1ea
zasm: allow blank lines in asm source code
2019-04-30 16:24:45 -04:00
Virgil Dupras
eb5c974573
zasm: allow leading whitespace in parsed lines
2019-04-30 16:08:56 -04:00
Virgil Dupras
57c3dfece8
zasm: assemble multiple lines at once
2019-04-30 15:51:39 -04:00
Virgil Dupras
2653826dff
zasm: move zasm.asm to instr.asm and create main.asm
...
instr.asm is for single instruction assembly.
2019-04-30 13:52:14 -04:00
Virgil Dupras
175e1328e7
zasm: consolidate
...
* Build emulated zasm statically
* Improve comments in zasm.asm
* Fix build
* Use unsetZ from core
2019-04-30 13:45:31 -04:00
Virgil Dupras
055e0d7a31
Split parts in two: z80 and avr
...
Also, clarify the role of recipes.
2019-04-25 16:03:45 -04:00
Virgil Dupras
a391f85c00
fs: implement GetC, PutC, Seek and Tell on file handle
...
Very coarse, but I got them to work.
2019-04-23 19:42:10 -04:00
Virgil Dupras
f00334ec89
fs: add private "blk" routines
...
This way, we can interact with the mounted FS even when we change the
selected blkdev.
2019-04-23 15:50:26 -04:00
Virgil Dupras
3ba0a707e7
blockdev: remove a layer of indirection in block routine storage
...
This will facilitate "copying" blk selection in FS.
2019-04-23 15:03:23 -04:00
Virgil Dupras
ad217c018e
fs: implement block reuse in fsAlloc
2019-04-23 14:00:54 -04:00
Virgil Dupras
684f083e8e
fs: add "fdel" command
2019-04-23 13:29:16 -04:00
Virgil Dupras
5eca14d49a
fs: implement fsNext
...
This allows more than one file to be allocated. `fls` properly lists
multiple files.
2019-04-23 12:04:09 -04:00
Virgil Dupras
1a6d285d2d
fs: always read whole block meta in memory to avoid seeking
2019-04-23 10:54:56 -04:00
Virgil Dupras
c0dbee78de
New part: fs
...
Very incomplete, but if you play your cards right, you can, with the
shell:
1. Create a new CFS
2. Mount it
3. Allocate a file with an arbitrary name
4. Have it listed with `fls`
2019-04-23 09:37:22 -04:00
Virgil Dupras
07fde3cab5
blockdev: move the new seek mode logic into the seek command
...
It wasn't a good idea to complicate all blockdev impls with complicated
seeks. Let's just stay in absolute mode for now.
2019-04-23 08:33:32 -04:00
Virgil Dupras
f87cd0485a
blockdev: make "seek" print out its resulting position
...
Also, extract commands into blockdev_cmds to avoid making blockdev
dependent on stdio.
2019-04-22 22:54:23 -04:00
Virgil Dupras
5071ee9f40
Extract "stdio" part from shell
2019-04-22 22:41:37 -04:00
Virgil Dupras
8b7faa1f02
blockdev: add "type" argument to blkSeek
...
Allows seeking forward, backwards, to the beginning, to the end.
2019-04-22 22:28:35 -04:00
Virgil Dupras
d3d229a918
shell: support string arguments
...
No consumer yet, but it's coming...
2019-04-22 21:52:33 -04:00
Virgil Dupras
1bcceb949c
blockdev: add Tell and fix blkGetCW
...
Calling on blkGetC repeatedly was somehow very unstable and often
failed. I didn't pinpoint exactly why, but keeping the call addr around
and calling that instead seems like a better idea anyway.
2019-04-22 17:15:59 -04:00
Virgil Dupras
196d22c4ab
shell: add "save" command
...
The opposite of "load"
2019-04-22 16:01:31 -04:00
Virgil Dupras
b4694225c5
blockdev: change GetC API
...
Instead of waiting, GetC always return immediately, with Z indicating if
something was fetched. The "wait" loop is implemented by the called (and
in the new `blkGetCW`).
This simplifies out-of-bounds verifications for storage blockdevs.
2019-04-22 14:26:16 -04:00
Virgil Dupras
63afa5798b
zasm: add a bunch of instructions
2019-04-21 14:49:33 -04:00
Virgil Dupras
8594084b06
zasm: simplify code
2019-04-21 14:23:24 -04:00
Virgil Dupras
93eb262083
zasm: add a bunch of instructions
2019-04-21 14:12:06 -04:00
Virgil Dupras
e9e2f30fc5
zasm: add support for BIT
2019-04-21 13:41:55 -04:00
Virgil Dupras
e073fbff79
zasm: add support for "special instructions"
...
Let's not create complex rules for exception cases.
2019-04-21 12:58:28 -04:00
Virgil Dupras
ecf7d7fbd6
zasm: add a bunch of instructions
2019-04-21 11:49:20 -04:00
Virgil Dupras
056bbde710
zasm: add support for IX/IY with displacement
2019-04-21 10:55:47 -04:00
Virgil Dupras
14a410b024
zasm: extract tok.asm from zasm.asm
2019-04-21 09:25:52 -04:00
Virgil Dupras
89972ca210
zasm: add a bunch of instructions
2019-04-20 23:03:13 -04:00
Virgil Dupras
115dc18971
zasm: add support for extended instructions
2019-04-20 22:37:38 -04:00
Virgil Dupras
70f61ec451
zasm: a bit of refactoring
2019-04-20 20:35:45 -04:00
Virgil Dupras
f6dddaa380
zasm: add automated tests and fix a bunch of bugs
...
A python script generates all possibilities for all supported
instructions and compare zasm output with scas. After having fixed a
couple of bugs, all tests pass!
2019-04-17 21:03:20 -04:00
Virgil Dupras
8ce528c752
zasm: add a bunch of instructions
2019-04-17 17:08:45 -04:00
Virgil Dupras
76caf944dd
zasm: add support for the "e" arg type (djnz, jr)
2019-04-17 16:26:04 -04:00
Virgil Dupras
c5c8369ce9
zasm: Add support for (NN) constants
2019-04-17 16:04:24 -04:00
Virgil Dupras
e1d6178457
zasm: add a bunch of instructions
2019-04-17 15:25:35 -04:00
Virgil Dupras
7996a9997a
zasm: add support for numerical constants
2019-04-17 14:47:42 -04:00
Virgil Dupras
3fe5eb3e60
zasm: add a bunch of primary instructions
2019-04-17 11:37:49 -04:00
Virgil Dupras
a7dc1e7b4a
zasm: make "RET cc" work
2019-04-17 11:06:51 -04:00
Virgil Dupras
279f6e0ad8
zasm: invert emulator io_write() handling
...
This facilitates debugging. To know the value of `A` at any point,
you can do `out (0), a`. The number of bytes in the output will be the
value of `A`.
2019-04-17 10:34:30 -04:00