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
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
Virgil Dupras
9b556c8883
zasm: support "special" groups and groups in arg2
2019-04-17 10:34:10 -04:00
Virgil Dupras
a7538473e4
zasm: add support for variable arguments
2019-04-17 08:23:01 -04:00
Virgil Dupras
38e40bfc16
zasm: make the instruction table fixed
...
Looping is easier
2019-04-16 22:46:04 -04:00
Virgil Dupras
8cd400651a
zasm: read each argument immediately insto an argspec
...
Previously, we would go the other way around: match all available
argspecs to raw argument strings. It's much better to go the other way
around because we can "reduce" each argument much sooner. That will be
important when we start to support constants and expressions.
2019-04-16 22:40:07 -04:00
Virgil Dupras
1f94b6c3f7
zasm: can now match all "constant" primary opcodes
2019-04-16 20:32:30 -04:00
Virgil Dupras
453cf3d74a
zasm: start matching args
...
We now properly match arg-less operations.
2019-04-16 19:40:37 -04:00
Virgil Dupras
b3af6e0115
zasm: reuse code from core
2019-04-16 17:00:19 -04:00
Virgil Dupras
9acca52e44
zasm: begin parsing with easy pickings
...
Single opcodes that yield constants. "echo ret | zasm" yields 0xc9.
2019-04-16 16:49:47 -04:00
Virgil Dupras
88cee235b1
zasm: have a whole kernel in emulation instead of a simple wrapper
...
zasm is going to need to call to kernel code...
2019-04-16 14:26:45 -04:00
Virgil Dupras
43c1005d61
zasm: implement stdin/stdout in emulator
2019-04-16 13:59:19 -04:00
Virgil Dupras
1ae2331763
Add zasm app
...
For now, only a dummy app, but it's emulated properly with libz80.
Exciting times!
2019-04-16 13:36:57 -04:00