Virgil Dupras
9a7617115f
doc: add "Understanding the code" walkthrough
2020-01-05 10:47:23 -05:00
Virgil Dupras
c7ef8bf915
recipes: add "make emul" targets where appropriate
2020-01-02 16:59:38 -05:00
Virgil Dupras
9216057db8
emul/hw: add TI-84+ emulator
...
I implement the screen using XCB which is much more friendly
than z80e's SDL+CMake for development machines that want to install
minimal dependencies (for example, a port-less OpenBSD rig).
2020-01-01 22:48:01 -05:00
Virgil Dupras
25fc0a3c72
Add RC2014 classic emulation
2019-12-31 22:03:48 -05:00
Virgil Dupras
eed67c4768
tests/shell: bring back the static test.cfs
...
I had forgotten about that ordering thing: depending on the platform
cfspack doesn't read files in a directory in the same order.
2019-12-31 15:17:22 -05:00
Virgil Dupras
359991c005
cfspack: fix compilation error
...
Some compilers don't like assigning stdout statically.
2019-12-31 15:12:17 -05:00
Virgil Dupras
097c677641
emul/zasm: use libcfs
...
This allows us to get rid of the zasm.sh wrapper.
2019-12-31 15:07:39 -05:00
Virgil Dupras
4cde58fd83
cfspack: make into a library
...
Use it in shell instead of using popen()
2019-12-31 13:57:52 -05:00
Virgil Dupras
72357fec86
Move "emul" folder to root
2019-12-31 13:34:24 -05:00
Virgil Dupras
40f56dd6dc
cfspack: silence compilation warning
2019-12-31 13:08:24 -05:00
Virgil Dupras
c5c6ef4c6c
Move "tests" folder to root
2019-12-31 13:07:05 -05:00
Virgil Dupras
e3c885085d
Consolidate tests
...
Also, removed leftover in runbin.c (what did it do there??) that
could result in tests falsely passing.
2019-12-30 20:08:08 -05:00
Virgil Dupras
7ca54d179d
lib/expr: make EXPR_PARSE "tail" HL
...
Things are now much simpler.
2019-12-30 19:24:53 -05:00
Virgil Dupras
73a5275b1e
lib/parse: make parseBinaryLiteral "tail" HL
2019-12-30 13:05:21 -05:00
Virgil Dupras
289037a3dd
lib/parse: make parseDecimal "tail" HL
...
HL, instead of being preserved, is set to the character following
the last read character.
2019-12-30 10:13:55 -05:00
Virgil Dupras
dcb96aefe9
lib/parse: remove parseHexPair
...
Also, make parseHexadecimal "tail" (HL). Soon, all routines in lib/parse
will do that, making the life of lib/expr easier.
2019-12-29 21:56:56 -05:00
Virgil Dupras
2503bdfced
lib/args: remove
2019-12-29 21:05:09 -05:00
Virgil Dupras
5f2615a134
at28w: don't use lib/args
2019-12-29 21:02:04 -05:00
Virgil Dupras
346bcc3d3d
zasm: don't use lib/args
...
This unit is being removed.
2019-12-29 20:56:13 -05:00
Virgil Dupras
d0f031939f
lib/parse: make parseLiteral a little tighter
...
Sub-parsers are seldom used by themselves, except for parseDecimal.
I'm tightening the code of this unit for two reasons:
1. Optimization
2. Upcoming API change where HL won't be preserved anymore, but will
point to char following the last parse char. This will allow us
to simplify lib/expr.
2019-12-29 19:47:19 -05:00
Virgil Dupras
15628da7de
lib/expr: make EXPR_PARSE put result in DE instead of IX
...
Finally getting rid of this bad mistake of using IX for this.
2019-12-29 17:37:04 -05:00
Virgil Dupras
981c93bfd4
lib/expr: fix stack imbalance on failure
2019-12-29 16:15:48 -05:00
Virgil Dupras
4760d044c0
test_expr: simplify
2019-12-29 15:39:39 -05:00
Virgil Dupras
213614af33
lib/expr: make recursion process a bit more orderly
...
Instead of going left and right, finding operators chars and replacing them
with nulls, we parse expressions in a more orderly manner, one chunk at a
time. I think it qualifies as "recursive descent", but I'm not sure.
This allows us to preserve the string we parse and should also make the
implementation of parens much easier.
2019-12-29 11:42:18 -05:00
Virgil Dupras
7410891ad1
lib/expr: fix unary minus
...
For some reason, I've mistakenly disabled tests in test_expr without noticing
and I also broke "-123" parsing. Fixed.
2019-12-23 20:53:31 -05:00
Virgil Dupras
6d88c3a754
parseExprDE --> parseExpr
2019-12-23 19:13:44 -05:00
Virgil Dupras
5301200d6f
basic: parseExpr --> parseExprDE
2019-12-23 19:01:03 -05:00
Virgil Dupras
476178ee7c
zasm: parseExpr --> parseExprDE
2019-12-23 18:44:55 -05:00
Virgil Dupras
025b90909f
Update bootstrap bin
2019-12-23 16:03:23 -05:00
Virgil Dupras
aef96c5e96
Add missing common.asm test harness file
2019-12-23 16:02:26 -05:00
Virgil Dupras
cc754e12aa
parseExpr --> parseExprDE: easy ones
...
Those replacements were trivially equivalent. For the other ones, an
examination of the context is necessary.
2019-12-23 15:59:55 -05:00
Virgil Dupras
a034f63e23
test: begin adding common test harnessing code
...
This should make tests a bit more convenient to write and debug.
Moreover, begin de de-IX-ization of parseExpr. I have, in a local WIP, a
parseExpr implemented using a recursive descent algo, it passes all tests, but
it unfortunately assembles a faulty zasm. I have to find the expressions that
it doesn't parse properly.
But before I do that, I prefer to commit these significant improvements I've
been making to tests harness in parallel of this development.
2019-12-23 15:41:25 -05:00
Virgil Dupras
98ca338aba
avra: add LD/ST
2019-12-22 21:50:20 -05:00
Virgil Dupras
51e500e8da
avra: avoid pgm addr truncation error on first pass
2019-12-22 19:44:46 -05:00
Virgil Dupras
b955a67daa
avra: add TST
2019-12-22 19:24:36 -05:00
Virgil Dupras
6e1e8e0e59
avra: add LSL
2019-12-22 18:36:15 -05:00
Virgil Dupras
8ded02bc78
avra: fix misordered MOV, MUL, NEG and NOP
2019-12-22 18:35:08 -05:00
Virgil Dupras
f54e10f9fd
avra: add CALL and JMP
2019-12-22 15:54:46 -05:00
Virgil Dupras
10b925e0e0
avra: add BCLR and BSET
2019-12-22 15:11:15 -05:00
Virgil Dupras
1771ee8da7
avra: add SER
2019-12-22 15:01:08 -05:00
Virgil Dupras
0a9ac27cf6
avra: add SBIC and SBIS
2019-12-22 14:55:38 -05:00
Virgil Dupras
a9dcba5793
avra: add CBR instruction
2019-12-22 14:45:10 -05:00
Virgil Dupras
c968995ec0
avra: add CBI and SBI
...
This completes instruction support for the Blink tn45 example.
2019-12-15 20:51:31 -05:00
Virgil Dupras
5c43988649
avra: code consolidation
2019-12-15 20:15:44 -05:00
Virgil Dupras
b130cac635
avra: code consolidation
2019-12-15 19:17:03 -05:00
Virgil Dupras
52359a4e42
avra: a little code deduplication
2019-12-15 18:52:00 -05:00
Virgil Dupras
e9c692ed50
avra: a litte bit of code deduplication
2019-12-15 18:34:14 -05:00
Virgil Dupras
2652c81519
avra: make CLR work properly
2019-12-15 16:43:32 -05:00
Virgil Dupras
20861767e6
avra: generalize arg swapping behavior
2019-12-15 16:36:43 -05:00
Virgil Dupras
14fbfa2967
avra: small _parseArgs refactoring
...
Take argspec pairs directly as an argument instead of taking a
pointer to an argspec pair.
2019-12-15 16:25:16 -05:00