Commit Graph

953 Commits

Author SHA1 Message Date
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
fc0cdede55 Move print(n)str from core to shell
These routines had hardcoded references to ACIA and didn't belong to the
core.
2019-04-16 19:45:05 -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
Virgil Dupras
ff99062d5b Move RC2014 recipe in its own folder
Also, remove `parts/platforms`. It makes no sense. Only recipes make
sense.
2019-04-16 11:50:16 -04:00
Virgil Dupras
6597e8a75a doc: add emulate section 2019-04-16 11:37:04 -04:00
Virgil Dupras
056de2b19d doc: add glue code section 2019-04-16 11:26:58 -04:00
Virgil Dupras
7060ee4dc5 Add Status section to README 2019-04-16 10:52:29 -04:00
Virgil Dupras
6c4489d2a3 Add blockdev doc 2019-04-16 10:40:51 -04:00
Virgil Dupras
21eb64f751 blockdev: remove one layer of indirection
The approach used for shell extra commands also works for blockdev. Much
simpler and tighter this way.
2019-04-16 10:17:25 -04:00
Virgil Dupras
a27da6f41a add mmap part
This also introduces the "seek" shell command.
2019-04-16 08:36:26 -04:00
Virgil Dupras
af13b0bd00 Code consolidation 2019-04-16 08:35:44 -04:00
Virgil Dupras
ce49fc15d0 blockdev: reorganize routine pointers
Also, add dummy seek reoutine.
2019-04-15 21:56:15 -04:00
Virgil Dupras
a5addc989c shell: rename seek to mptr
going to use `seek` for block devices
2019-04-15 20:42:12 -04:00
Virgil Dupras
c996da8ac8 shell: add error codes to cmds 2019-04-15 20:38:25 -04:00
Virgil Dupras
12c23f52e0 Add blockdev part
Also, add the ability for parts to define extra shell commands.
2019-04-15 16:53:11 -04:00
Virgil Dupras
4600b5299c shell: place cmd metadata next to the routine
This will facilitate the inclusion of extra commands other parts might
want to define.
2019-04-15 15:08:00 -04:00
Virgil Dupras
f571664853 Improve user guide 2019-04-15 13:24:20 -04:00
Virgil Dupras
9aae4ea040 Add user guide 2019-04-15 12:10:41 -04:00
Virgil Dupras
26b125b337 shell: add shellParseArgs
Replaces individual command parsing. Quite a big and complex chunk of
code, but makes each command much simpler.
2019-04-14 23:14:07 -04:00
Virgil Dupras
83f63c7146 shell: add call command 2019-04-14 17:01:28 -04:00
Virgil Dupras
e4c23b4270 shell: echo types letters right away
Easier to use this way...
2019-04-14 15:18:41 -04:00
Virgil Dupras
942ff37bf8 shell: implement load command 2019-04-14 14:53:16 -04:00
Virgil Dupras
461c09f1e5 Decouple shell from acia 2019-04-14 14:24:29 -04:00
Virgil Dupras
8ccddbcb0e Separate shell and acia input buffers
They serve a different purpose. The goal of the ACIA buffer is to ensure
that we don't miss an input. The goal of the shell buffer is to wait
until the user presses return.

The ACIA buffer has been moved to shell and replaced with a circular
buffer, a more appropriate data structure for this kind of purpose.

Also, introduce `aciaGetC`.
2019-04-14 14:04:31 -04:00
Virgil Dupras
902c6a5dd3 shell: add count arg to peek
Also, fix seek reversed endianness.
2019-04-14 11:54:18 -04:00
Virgil Dupras
e4e7db8e23 shell: cleanup 2019-04-14 11:22:45 -04:00
Virgil Dupras
21168f6c4e shell: implement seek and peek
This introduces `core.asm` which includes routines used by other parts.
2019-04-14 11:17:38 -04:00
Virgil Dupras
9580cc3994 shell: add "seek" and "peek" dummy commands
This change introduces a command name matching algo.
2019-04-13 22:39:28 -04:00
Virgil Dupras
6bb454232a Extract "acia.asm" from shell
Also, come up with a way to make parts play well together memory-wise.
2019-04-13 16:01:20 -04:00
Virgil Dupras
ac22a206ae shell: handle inputs with interrupts 2019-04-13 15:02:29 -04:00
Virgil Dupras
358c551bcc shell: add input routine 2019-04-12 21:28:50 -04:00