Virgil Dupras
82995eb346
zasm: have .fill generate an error on overflow
...
Can possibly avoid a lot of debugging pain.
2019-11-13 22:27:48 -05:00
Virgil Dupras
8d46895dd3
lib/parse: decimal ending with a whitespace are now valid
...
Also, make empty strings be parsed as invalid by parseDecimal.
2019-11-13 22:10:06 -05:00
Virgil Dupras
1ae51bea3a
tests: remove instr blacklist
...
Because scas isn't used as a reference anymore, no need to blacklist its bugs
anymore.
2019-11-12 20:47:09 -05:00
Virgil Dupras
4de2ce3ceb
zasm: add RST instruction
2019-11-12 14:07:45 -05:00
Virgil Dupras
5f6b303e75
zasm: add IX/IY support to SRL, RR and RL
2019-11-10 22:03:18 -05:00
Virgil Dupras
506c3d0a96
zasm: generalize handling of IX/IY in 0xcb upcode family
...
There's a couple of bit fiddling instructions that didn't have their
IX/IY variant implemented yet and without this commit, each of them
would have required a special routine. Not anymore.
2019-11-10 21:02:18 -05:00
Virgil Dupras
d9d6093287
zasm: simplify (IX/Y+d) handling
...
We now require less special handling.
2019-11-10 20:16:50 -05:00
Virgil Dupras
a3c47f6272
Add tests for parseArgs
2019-11-08 10:53:52 -05:00
Virgil Dupras
e972dfe220
Add test documentation
2019-11-08 10:37:52 -05:00
Virgil Dupras
b745f49186
Rename blockdev's API routines to GetB/PutB
...
The goal is to avoid mixing those routines with "character devices"
(acia, vpd, kbd) which aren't block devices and have routines that
have different expectations.
This is a first step to fixing #64 .
2019-10-30 16:59:35 -04:00
Virgil Dupras
a7aa2fc702
Improve test_parse_z coverage
...
Will help with #45
2019-10-20 18:19:02 -04:00
Virgil Dupras
3b1bbc1751
zasm: support negative displacement for IX/IY
...
Needed by #30 .
2019-10-17 15:38:11 -04:00
Virgil Dupras
8926c33ab1
Fix tools/tests/zasm/runtests.sh shebang
...
It needs bash after all. On OpenBSD, /usr/sh works, but not on Ubuntu.
2019-10-10 15:22:21 -04:00
Virgil Dupras
f4b6c7637d
zasm: rename #inc to .inc
...
scas, it's not needed any more.
2019-10-06 14:32:23 -04:00
Virgil Dupras
612323f714
zasm: add "last value" symbol (@)
2019-10-04 20:26:21 -04:00
Virgil Dupras
1c6a7caeae
recipes/sms/romasm: make zasm's memory usage fit the SMS
2019-07-23 16:50:19 -04:00
Virgil Dupras
c2d84563dd
zasm: allow duplicate const definition
...
This will allow interesting override scenarios, adding flexibility.
2019-07-23 16:01:23 -04:00
Virgil Dupras
1dec33e02a
zasm: make symbol registry a bit more straightforward
...
Instead of strings of variable length driving the iteration of the
registry, we do so through records that keep track of lengths and
counts.
2019-07-23 15:21:42 -04:00
Virgil Dupras
02c7eb0161
zasm: clarify strlen's API
2019-07-23 14:59:38 -04:00
Virgil Dupras
cdb206b7a5
zasm: fix nasty (iy+d) misparsing bug
...
*sob*...
2019-07-23 13:58:18 -04:00
Virgil Dupras
f4f91ebd79
zasm: remove SYM_CTX
2019-07-22 16:13:00 -04:00
Virgil Dupras
311d04e9aa
zasm: make symbol registry easily parametrizable
...
I'm about to split the global registry in two (labels and consts)
and the previous state of registry selection made things murky.
Now it's much better.
2019-07-22 15:13:09 -04:00
Virgil Dupras
34f499184d
zasm: add ".bin" directive
...
Also, remove zasm/test7 because it changes too much all time time
(whenever zasm changes) and isn't precise enough. Too much noise,
not worth it.
2019-07-21 12:58:02 -04:00
Virgil Dupras
fe15bafeca
zasm: fix bug with registry selection
...
During expression parsing, if a local label was parsed, it would
select the local registry and keep that selection, making
subsequent global labels register in the wrong place.
2019-07-20 18:07:52 -04:00
Virgil Dupras
a7afbe091e
tools/tests: remove scas requirement
...
I'm about to break compatibility with scas. Before I do that, I
need to adjusts tests. Instead of running scas to compare results,
we commit expected result as binaries directly in the repo.
2019-07-20 17:13:57 -04:00
Virgil Dupras
253674ea05
Fix broken tests
...
Also, make tests run in a *BSD environment
2019-07-19 14:24:35 -04:00
Virgil Dupras
54b0602710
zasm: add support for RES and SET
2019-07-02 14:12:29 -04:00
Virgil Dupras
7cdc288ef2
zasm: print progress indicator while assembling
2019-06-19 11:42:39 -04:00
Virgil Dupras
c18d42f08b
fs: further adjust to previous blkdev refactoring
...
Previous refacoring broke all seek/tell within fs. fs handles now lost
the responsibility to keep track of current position. It's blkdev's job.
2019-06-04 20:45:01 -04:00
Virgil Dupras
ae028e3a86
blockdev: make implementors "random access"
...
This huge refactoring remove the Seek and Tell routine from blockdev
implementation requirements and change GetC and PutC's API so that they
take an address to read and write (through HL/DE) at each call.
The "PTR" approach in blockdev implementation was very redundant from
device to device and it made more sense to generalize. It's possible
that future device aren't "random access", but we'll be able to add more
device types later.
Another important change in this commit is that the "blockdev handle" is
now opaque. Previously, consumers of the API would happily call routines
directly from one of the 4 offsets. We can't do that any more. This
makes the API more solid for future improvements.
This change forced me to change a lot of things in fs, but overall,
things are now simpler. No more `FS_PTR`: the "device handle" now holds
the active pointer.
Lots, lots of changes, but it also feels a lot cleaner and solid.
2019-06-04 15:36:20 -04:00
Virgil Dupras
9a72f10221
zasm: includes CFS is now built on-the-fly by zasm.sh
...
This makes for a much more usable zasm linux binary that doesn't have to
be rebuilt every time apps or kernel change.
2019-06-02 19:57:40 -04:00
Virgil Dupras
22e990ed89
Parametrize zasm linux bin's include CFS file
...
... instead of embedding it in the binary itself. Additionally, add a
"zasm.sh" wrapper to faciliate zasm calls on a linux machine.
2019-06-02 15:50:59 -04:00
Virgil Dupras
f8bd8eeaaf
Make userspace parse args the same way the shell does
2019-06-02 14:05:20 -04:00
Virgil Dupras
83771b538f
fs: check for file size bounds in GetC
2019-05-31 11:12:29 -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
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
e18f9b53a9
zasm: add support for "$" symbol
...
Allows for the ".fill x-$" pattern.
2019-05-20 09:17:50 -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
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
Virgil Dupras
44abc79850
zasm: add support for SBC HL, ss
2019-05-19 09:54:02 -04:00
Virgil Dupras
98695f9912
zasm: de-index symRegister
...
Make symRegister's logic pointer-based so we can break through the 0x100
limit.
2019-05-19 09:06:24 -04:00
Virgil Dupras
bccf933ea9
zasm: try for regular number or symbol before parsing expr
...
Previously, we would mess up literals like '-'.
2019-05-18 21:06:31 -04:00
Virgil Dupras
723497af69
zasm: can now assemble zasm/directive.asm!
2019-05-18 20:37:34 -04:00
Virgil Dupras
9f6ebf538d
zasm: can assemble zasm/tok.asm!
2019-05-18 20:31:52 -04:00
Virgil Dupras
fd11941867
zasm: can now assemble zasm/parse.asm!
2019-05-18 19:59:58 -04:00
Virgil Dupras
2ce6b61964
zasm: add support for RLC r and RRC r
2019-05-18 19:59:31 -04:00
Virgil Dupras
29f0bcbe23
zasm: can now assemble zasm/symbol.asm!
2019-05-18 18:56:27 -04:00
Virgil Dupras
b7f5307de1
zasm: can now assemble zasm/io.asm!
2019-05-18 15:45:36 -04:00
Virgil Dupras
84090dcd14
zasm: add support for RL r and RR r
...
Also, make zasm assemble zasm/util.asm again!
2019-05-18 15:41:21 -04:00
Virgil Dupras
8832408e95
zasm: can now assemble fs.asm!
2019-05-18 15:18:19 -04:00
Virgil Dupras
d47d07757e
zasm: fix expr operator priority
2019-05-18 15:17:56 -04:00
Virgil Dupras
068e4327ec
zasm: fix false truncation error on "-" expressions
2019-05-18 14:51:11 -04:00
Virgil Dupras
650eec23de
zasm: add LD r, (IX/Y+d) support
2019-05-17 23:01:29 -04:00
Virgil Dupras
f44c3e5413
zasm: fix 3-digit hex parsing
2019-05-17 23:00:57 -04:00
Virgil Dupras
cdb6cce914
zasm: add multiplication expressions
2019-05-17 22:22:10 -04:00
Virgil Dupras
157ac03e25
zasm: can now assemble zasm/util.asm!
2019-05-17 20:47:43 -04:00
Virgil Dupras
28d5ebdc8a
Make apps folder into a namespace
...
To straighten out includes and to pave the way into zasm being part of
the same "include CFS" as parts, we make zasm includes namespaced.
2019-05-17 20:22:32 -04:00
Virgil Dupras
a3d3e0ce37
zasm: can now assemble the shell!
2019-05-17 19:36:32 -04:00
Virgil Dupras
d58cf122a8
zasm: fix regression with lowercase (ix+d) parsing
2019-05-17 19:32:58 -04:00
Virgil Dupras
2a97966bdc
zasm: add LD IX/IY, NN instructions
2019-05-17 17:43:42 -04:00
Virgil Dupras
21c49d80cf
zasm: allow single quote to contain whitespace
2019-05-17 17:22:16 -04:00
Virgil Dupras
556be3f0ce
zasm: allow for whitespace inside string literals
...
Also, increase scratchpad size. It wasn't big enough for some
expressions in shell unit.
2019-05-17 16:44:08 -04:00
Virgil Dupras
f9dac15449
zasm: add support for string literals in .db
2019-05-17 16:17:22 -04:00
Virgil Dupras
b499d320de
zasm: can now assemble stdio!
2019-05-17 15:43:44 -04:00
Virgil Dupras
16922da3d4
zasm: support multiple elements in .dw and .db
2019-05-17 15:39:28 -04:00
Virgil Dupras
4c37d869f4
zasm: now assembles blockdev!
2019-05-17 14:07:07 -04:00
Virgil Dupras
26e5c1de43
zasm can now assemble acia!
2019-05-17 13:23:16 -04:00
Virgil Dupras
072aad775a
zasm: don't match prefixes in symFind
...
Only match when full names match.
2019-05-17 13:14:16 -04:00
Virgil Dupras
92a119105d
zasm: add support for "0b" literals
2019-05-17 10:34:01 -04:00
Virgil Dupras
4075c90d44
Add unit test for zasm's parse unit
2019-05-17 10:00:30 -04:00
Virgil Dupras
013a3b74c8
Add the concept of unit tests
...
Will be much much easier to tests new core routines without having to
re-create their context first.
Also, extract parse.asm from core.asm
2019-05-17 09:33:20 -04:00
Virgil Dupras
def6c2123d
tools/emul: clean up the place a bit
2019-05-17 07:23:59 -04:00
Virgil Dupras
2f0dd5d668
zasm: iiiiiiiincluuuuuuudes!!1!
2019-05-16 21:15:00 -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