Commit Graph

68 Commits

Author SHA1 Message Date
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 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 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 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
Virgil Dupras 7f27d63c19 Move apps/zasm/emul to tools/emul 2019-05-09 14:09:40 -04:00
Virgil Dupras f9ae5ca46b zasm: simplify readWord calling
It always reads in the scratchpad with the same max size. No need for
DE-dancing anymore.
2019-05-01 14:19:43 -04:00
Virgil Dupras 6811d98618 zasm: add support for the ".dw" directive 2019-05-01 14:07:01 -04:00
Virgil Dupras dde5161fc1 zasm: add support for ".db" directive 2019-05-01 11:26:41 -04:00
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 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