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
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
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
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
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
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
f44c3e5413
zasm: fix 3-digit hex parsing
2019-05-17 23:00:57 -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
807bd70b63
zasm emul: add dumpSymbolTable debug routine
...
Very helpful...
2019-05-17 13:22:45 -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
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
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