1
0
mirror of https://github.com/hsoft/collapseos.git synced 2024-12-26 05:08:06 +11:00
Commit Graph

841 Commits

Author SHA1 Message Date
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
055e0d7a31 Split parts in two: z80 and avr
Also, clarify the role of recipes.
2019-04-25 16:03:45 -04:00
Virgil Dupras
a391f85c00 fs: implement GetC, PutC, Seek and Tell on file handle
Very coarse, but I got them to work.
2019-04-23 19:42:10 -04:00
Virgil Dupras
f00334ec89 fs: add private "blk" routines
This way, we can interact with the mounted FS even when we change the
selected blkdev.
2019-04-23 15:50:26 -04:00
Virgil Dupras
3ba0a707e7 blockdev: remove a layer of indirection in block routine storage
This will facilitate "copying" blk selection in FS.
2019-04-23 15:03:23 -04:00
Virgil Dupras
ad217c018e fs: implement block reuse in fsAlloc 2019-04-23 14:00:54 -04:00
Virgil Dupras
684f083e8e fs: add "fdel" command 2019-04-23 13:29:16 -04:00
Virgil Dupras
5eca14d49a fs: implement fsNext
This allows more than one file to be allocated. `fls` properly lists
multiple files.
2019-04-23 12:04:09 -04:00
Virgil Dupras
1a6d285d2d fs: always read whole block meta in memory to avoid seeking 2019-04-23 10:54:56 -04:00
Virgil Dupras
c0dbee78de New part: fs
Very incomplete, but if you play your cards right, you can, with the
shell:

1. Create a new CFS
2. Mount it
3. Allocate a file with an arbitrary name
4. Have it listed with `fls`
2019-04-23 09:37:22 -04:00
Virgil Dupras
07fde3cab5 blockdev: move the new seek mode logic into the seek command
It wasn't a good idea to complicate all blockdev impls with complicated
seeks. Let's just stay in absolute mode for now.
2019-04-23 08:33:32 -04:00
Virgil Dupras
f87cd0485a blockdev: make "seek" print out its resulting position
Also, extract commands into blockdev_cmds to avoid making blockdev
dependent on stdio.
2019-04-22 22:54:23 -04:00
Virgil Dupras
5071ee9f40 Extract "stdio" part from shell 2019-04-22 22:41:37 -04:00
Virgil Dupras
8b7faa1f02 blockdev: add "type" argument to blkSeek
Allows seeking forward, backwards, to the beginning, to the end.
2019-04-22 22:28:35 -04:00
Virgil Dupras
d3d229a918 shell: support string arguments
No consumer yet, but it's coming...
2019-04-22 21:52:33 -04:00
Virgil Dupras
1bcceb949c blockdev: add Tell and fix blkGetCW
Calling on blkGetC repeatedly was somehow very unstable and often
failed. I didn't pinpoint exactly why, but keeping the call addr around
and calling that instead seems like a better idea anyway.
2019-04-22 17:15:59 -04:00
Virgil Dupras
196d22c4ab shell: add "save" command
The opposite of "load"
2019-04-22 16:01: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