Commit Graph

334 Commits

Author SHA1 Message Date
Virgil Dupras 2bff486cd2 Update bootstrap binaries 2019-11-10 22:03:46 -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 c4658591bd ti/lcd: allow for fonts smaller than 5 pixels
That's a lot of code for such a small change, but there's a big difference
between 5 pixels and 4 pixels: 4 pixels requires compositing.
2019-11-09 22:55:15 -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 a13a94bbc7 fix typos 2019-11-07 12:13:00 -05:00
Virgil Dupras ca84b5dac8 recipes/ti84: first step
This was mostly lifted from my "tihello" example, but it required significant
adjustments.

This commit also introduces a font management system. A lot of fonts are
available online, but sources aren't always clear so to avoid copyright
landmines, I re-created my first 5x7 font from scratch.

As it is now, this resulting ROM gets "Collapse OS>" to be displayed on the
LCD screen. Much work still left to do.

ref #41
2019-11-07 11:52:29 -05:00
Virgil Dupras f395297874 Improve python tools' shebang
Most OS don't have python3 in /usr/bin/python...
2019-11-04 14:43:27 -05:00
Virgil Dupras 2a55bfd375 stdio: remove a layer of indirection in GetC/PutC
We use zasm's ability to use labels in .equ directive.

We didn't do it before because for a while, we were in between scas
and zasm (scas was used in automated tests) so we needed to use the
lowest common denominator: zasm doesn't have macros and scas can't
use labels in .equ directives.

This forced us to add this layer of indirection. But now that we are
completely cut from scas' dependency, we can use this nice zasm's
ability.
2019-11-04 09:55:12 -05:00
Virgil Dupras a86234c87e Fix typo in shell's emul{Get,Put}C 2019-10-31 18:49:02 -04: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 f41ccdbc81 Update bootstrap binaries 2019-10-17 15:47:39 -04:00
Virgil Dupras 3b1bbc1751 zasm: support negative displacement for IX/IY
Needed by #30.
2019-10-17 15:38:11 -04:00
Jorde Kang 5460f28cfb Removed unnecessary import sys (#46) 2019-10-15 22:41:44 -04:00
James Stanley 7f7251d57f Fix buffer overrun in shell emulator (#51) 2019-10-15 21:21:40 -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
Keith Stellyes 4180b5873d Fix for tools/zasm.sh being dependent on readlink -f (an issue on macOS, preventing builds) (#28)
* Fix for tools/zasm.sh being dependent on readlink -f (an issue on macOS, preventing builds)

* Wrap zasm.sh shebang in /usr/bin/env ; remove comment about BSDs
2019-10-10 15:21:37 -04:00
Virgil Dupras 83b314c450 zasm: lower RAM requirements
I've tested RAM usage when self-assembling and there weren't as high
as I thought. zasm's defaults now use less than 0x1800 bytes of RAM,
making it possible, theoretically for now, for a Sega Master System
to assemble Collapse OS from within itself.
2019-10-06 15:42:09 -04:00
Virgil Dupras e4732d79dc zasm: tighten directive detection a bit 2019-10-06 14:39:47 -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 340a474941 emul/shell: use '@' symbol in jump table 2019-10-04 20:29:42 -04:00
Virgil Dupras 612323f714 zasm: add "last value" symbol (@) 2019-10-04 20:26:21 -04:00
Virgil Dupras d1735c3a73 zasm: remove last remnants of "old style" variables
This makes zasm suitable to run from ROM.
2019-07-25 14:02:04 -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 b95f4c8c24 zasm: remove SYM_CTX_PTR 2019-07-22 16:34:40 -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 01031a780a ed: Add 'w' command 2019-07-21 11:40:26 -04:00
Virgil Dupras 942d2a952d ed: take filename as an argument
This hard-binds ed to the filesystem (I liked the idea of working
only with blockdevs though...), but this is necessary for the
upcoming `w` command. We need some kind of way to tell the
destination to write to truncate itself.

This only has a meaning in the filesystem, but it's necessary to
let the file know that its registered file size has possibly
shrunk.

I thought of alternatives that would have allowed me to keep ed
blkdev-centered, but they were all too hackish to my own taste.

Hence, this new hard-bind on files.
2019-07-20 19:43:07 -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 eefadc3917 ed: add support for 'a' and 'i' 2019-07-14 17:35:21 -04:00
Virgil Dupras e0f2a71dfc apps/ed: print specified line 2019-07-13 14:01:20 -04:00
Virgil Dupras 237d04fefd zasm: update bootstrap bin 2019-07-13 11:54:47 -04:00
Virgil Dupras 3491c26132 apps/ed: start implementing I/O 2019-07-13 11:29:06 -04:00
Virgil Dupras 3d474c9121 apps/ed: first steps 2019-07-13 09:57:37 -04:00
Virgil Dupras 252d71f1b8 Make tools/emul *BSD-friendly 2019-07-11 21:21:54 -04:00
Virgil Dupras ff7a114736 zasm: update bootstrap bin 2019-07-02 14:12:49 -04:00
Virgil Dupras 54b0602710 zasm: add support for RES and SET 2019-07-02 14:12:29 -04:00
Virgil Dupras 63486126ef zasm: update bootstrap bin 2019-07-01 10:56:38 -04:00
Virgil Dupras d6b391e39a Update bootstrap binaries 2019-06-19 13:22:51 -04:00
Virgil Dupras 7cdc288ef2 zasm: print progress indicator while assembling 2019-06-19 11:42:39 -04:00
Virgil Dupras 6f61aa404f tools/cfsunpack: new tool 2019-06-17 15:21:05 -04:00
Virgil Dupras 4b423a9dc6 tools/blkdump.py: new tool
Also, rename "download.py" to "memdump.py".
2019-06-17 09:02:01 -04:00
Virgil Dupras 3bc165c8f6 Update bootstrap bin 2019-06-15 20:54:27 -04:00
Virgil Dupras 3e7d181d3c zasm: properly raise error on bas ioPutC calls 2019-06-15 20:01:17 -04:00
Virgil Dupras 7ba8e85a4a Update bootstrap binaries 2019-06-15 15:53:03 -04:00
Virgil Dupras 4ea7839488 New tool: download.py 2019-06-14 16:06:18 -04:00
Virgil Dupras df5549ae76 tools/upload.py: support files larger than 0xff bytes 2019-06-14 15:06:14 -04:00
Virgil Dupras b742d48b75 Update bootstrap binaries 2019-06-05 19:52:56 -04:00
Virgil Dupras 3dde51ae98 Allow file-to-file compilation in the emulated shell 2019-06-05 19:51:19 -04:00
Virgil Dupras fc81bce70f Fix error handling when writing to files in emulated shell 2019-06-05 16:13:15 -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 63473cc2e3 blockdev: make selection structure opaque
I'm about to change that structure and I don't want fs to be messed up
by this. I'm proceeding step by step...
2019-06-04 09:56:36 -04:00
Virgil Dupras 50a26f6e39 recipe/rc2014/zasm: new recipe 2019-06-03 13:35:21 -04:00
Virgil Dupras dfe19e20e4 Includes work fine when assembling from the shell 2019-06-03 11:24:52 -04:00
Virgil Dupras 7ae29015de tools/emul: add hex representation to debug output
My mind isn't so good at decimal -> hex translations. It helps to have
this...
2019-06-03 11:16:06 -04:00
Virgil Dupras 082fa3431d We can now assemble source files from within the shell! 2019-06-03 11:15:07 -04:00
Virgil Dupras 78345b336e Update bootstrap bin 2019-06-03 11:14:15 -04:00
Virgil Dupras 40b3d5e11e tools/emul/shell: copy user.h in its cfsin
This way, we can compile apps from within the shell that run on the
shell.
2019-06-03 09:26:28 -04:00
Virgil Dupras bed7032ee5 pgm: have its own file handle 2019-06-03 09:25:17 -04:00
Virgil Dupras ecbb77072e tools/emul/shell: allow the growing of fsdev 2019-06-03 08:42:08 -04:00
Virgil Dupras f511289a3a tools/emul: make shell's cfsin always have all apps compiled in it 2019-06-03 08:34:29 -04:00
Virgil Dupras 04bf2117b2 tools/emul: re-organize .h files
What used to be `tools/emul/user.h` was in fact specific to zasm, so I
moved it there.

To avoid name confusion, I renamed what used to be kernel.h and user.h
to kernel-bin.h and user-bin.h.
2019-06-03 08:12:44 -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 02954af570 Simplyfy the creation of includes.cfs
The next step is to generate them on-the-fly.
2019-06-02 16:47:17 -04:00
Virgil Dupras a4e45d1a75 zasm: make fsdev buffer larger
Now that we don't sed out the comments any more, we busted the buffer.
2019-06-02 16:46:44 -04:00
Virgil Dupras 58bdc6b27f cfspack: apply fnmatch only to files 2019-06-02 16:46:12 -04:00
Virgil Dupras 8e2a89cea5 cfspack: add the ability to spit a single file 2019-06-02 16:35:41 -04:00
Virgil Dupras c317fbdcf9 cfspack: add pattern argument 2019-06-02 16:22:07 -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 37a167562c Update bootstrap bin 2019-06-02 14:46:48 -04:00
Virgil Dupras 21c677a950 Make parseArgs not expect a leading space 2019-06-02 14:46:07 -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 73c3fc7947 shell/stdio: decouple from blkdev (again)
Move load/save to blkdev_cmds and add a new "poke" builtin shell cmd
that is the mirror of "peek" and strictly uses stdio (no blkdev
involved).

This allows us to slim the minimal OS size but, more importantly, change
the behavior of "load" so that we don't expect GetC to block until Z is
set. This way, using "load X" with X being larger than the blkdev size
won't block forever.

This also brings our RC2014 minimal kernel below the 1K mark again.
2019-06-02 11:06:38 -04:00
Virgil Dupras 88bf98321e fs: adjust to DE->IX change in recipe/emul glue code 2019-06-02 10:18:03 -04:00
Virgil Dupras 2e8af376e3 pgm: new kernel module
The pgm module implements a shell hook so that when an unknown command
is typed, we look into the mounted filesystem and look for a file with
the same name as the command. If we find one, we load it in memory and
run it.
2019-05-31 14:54:15 -04:00
Virgil Dupras 83771b538f fs: check for file size bounds in GetC 2019-05-31 11:12:29 -04:00
Virgil Dupras cdc865f8c6 tools/emul/shell: add debug output 2019-05-30 14:55:16 -04:00
Virgil Dupras 6403ab1acf zasm: add support for SRL r 2019-05-30 14:46:25 -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 2c80924df9 zasm: indicate include lineno in errors 2019-05-28 09:57:29 -04:00
Virgil Dupras 8def8e7c38 zasm: add lineno to error reports
For now, top-level only
2019-05-27 20:52:40 -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 8923fefeff Update docs 2019-05-20 12:11:45 -04:00
Virgil Dupras c40bc329d5 zasm: fix expr returning wrong values on first pass
To run a parseExpr on first pass would always return a false success
with dummy value because symbols are configured to always succeed on
first pass. This would make expressions like ".fill 0x38-$" so bad
things to labels because "0x38-$" wouldn't return the same thing on
first and second pass.

Revert to parsing literals and symbols after having scanned for
expressions and add a special case specifically for char literals (which
is why we scanned for literals and symbols first in the first place).
2019-05-20 10:46:27 -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 207adbc2f8 tools/emul: add "make rescue" command 2019-05-20 08:58:53 -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 c586c0d63c Make the shell emulator be built by zasm 2019-05-20 07:29:19 -04:00
Virgil Dupras fa3b86a5c1 zasm now bootstraps itself without scas! 2019-05-19 20:44:19 -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 d9fff16157 zasm emul: get rid of the kernel/user distinction
Made things complicated for nothing.
2019-05-19 09:14:40 -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 93e40aeb09 Strip comments out of code before packing CFS
This shrinks the CFS size to 21k from nearly 64K. This will allow me to
kick the can down the road a bit with regards to supporting storage
seek/tell greater than 64K.

I'll get to it, but first, I want to assemble zasm with zasm!
2019-05-17 19:54:35 -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 807bd70b63 zasm emul: add dumpSymbolTable debug routine
Very helpful...
2019-05-17 13:22:45 -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 7083116379 zasm: remove JUMP_ prefixes
They serve no purpose and make the code less flexible.
2019-05-17 09:50:11 -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 45b8e84e2a shell: de-macro-ize 2019-05-17 08:21:37 -04:00
Virgil Dupras 56760b5aba stdio: de-macro-ize 2019-05-17 08:14:19 -04:00
Virgil Dupras dfce0d3a62 tools/emul: fix shell RAMSTART 2019-05-17 07:55:28 -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 a2d6cea72f cfspack: fix bug where we would underallocate blocks 2019-05-16 21:07:57 -04:00
Virgil Dupras e18879fcb2 zasm emul: hook fsdev in glue code 2019-05-16 13:23:23 -04:00
Virgil Dupras df67a38f81 Extract fs_cmds.asm from fs.asm 2019-05-16 13:20:29 -04:00
Virgil Dupras 23f0dc18ca zasm emul: add tooling for includes fsdev
On build, pack `parts/z80` into a CFS and embed it into the emulated
zasm executable as an fsdev. This will allow for the upcoming include
directive to have something to go to.

For now, this is useless except for inflating the emulated zasm's size.
2019-05-16 12:07:57 -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
Virgil Dupras 0ae91e55ec zasm: big local symbols overhaul 2019-05-16 08:26:00 -04:00
Virgil Dupras fa28d64278 zasm: change ioRewind to ioSeek
Will need it soon.
2019-05-15 13:41:56 -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 4f44d3de63 parts/z80/fs: add "fopn" command 2019-05-12 15:38:58 -04:00
Virgil Dupras 9b4b907236 tools/emul/shell: fix srong SeekL return value
Also, add warning on attempts to write to ROM.
2019-05-12 14:32:24 -04:00
Virgil Dupras a86738ae84 tools/emul/shell: add filesystem support
With the help of the newly-introduced cfspack tool, we can mount a
filesystem in our emulated shell and play around. Read-only for now.
Unpacking incoming.
2019-05-12 11:20:31 -04:00
Virgil Dupras 6aa53afabc zasm: add memdump mode 2019-05-12 08:49:59 -04:00
Virgil Dupras c239ec7dea zasm: read input in two passes 2019-05-10 20:32:05 -04:00
Virgil Dupras 6a804a9c64 zasm: buffer stdin in emulator
Also, add a port for rewinding stdin.
2019-05-10 19:55:01 -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 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 193e6e066c Add tools/emul 2019-05-09 12:58:41 -04:00
Virgil Dupras 9c7f006d47 tools/upload: make I/O a bit slower
Without delays between read/writes, I often add lockups.
2019-05-07 14:49:34 -04:00
Virgil Dupras cc62991f4e Add tools/upload.py 2019-05-06 10:18:11 -04:00