Commit Graph

322 Commits

Author SHA1 Message Date
Virgil Dupras 1871c46614 VE: add backspace support in replace mode 2020-06-11 22:29:05 -04:00
Virgil Dupras 838c88459b Make BLK@ FLUSH only if loading a different block
Otherwise, when editing a file with VE, we would constantly write
to disk, which is a bit inefficient.
2020-06-11 21:42:52 -04:00
Virgil Dupras 4146110e0d Move EMPTY to core words
It's a quite useful word and it doesn't make sense to reload it from
disk after each usage.
2020-06-11 19:04:03 -04:00
Virgil Dupras 394f962510 recipe: fix makefiles for fresh clone contexts
All recipe makesfiles would previously assume a built emul/.

Fixes #113
2020-06-11 12:23:59 -04:00
Virgil Dupras 7cad9ffe40 LIST: simplify logic
There wasn't much of a reason to leave a loop early on 0x0d or null.
The idea was that once you have a CR or null, the rest is garbage
and you shouldn't see it.

However, it brought a problem: In VE, you couldn't insert characters
past that limit. It would be written, but never displayed. So let's
get rid of this logic and simply always display a 64x16 grid.
2020-06-10 19:00:03 -04:00
Virgil Dupras 48f371d380 emul: add sanity check for blkfs 2020-06-08 06:47:06 -04:00
Virgil Dupras f53f91558b find: don't protect BC
not needed
2020-06-03 20:57:29 -04:00
Virgil Dupras d8a6456206 (parsed): fix crash on parsing non-decimal staring with '-'
The address returned in the error condition would be off by one.
2020-05-25 21:15:07 -04:00
Virgil Dupras 2d17b4e8ec Make string length-prefixed instead of null-terminated
I'm not sure why I chose null-terminated initially. Probably because
the z80asm version had null-terminated strings.

Length-prefixes strings are the traditional form of strings in Forth
and it's a bit easier to work with them with traditional forth words
when they're under this form.
2020-05-25 20:34:52 -04:00
Virgil Dupras 6a507bcaac Add word MOVE, 2020-05-24 19:55:00 -04:00
Virgil Dupras 2d2a846b25 Inline SCPY
I'm planning a string reform and it's standing in the way.
2020-05-24 14:19:25 -04:00
Virgil Dupras ed2b91411a Limit ourselves to 8-bit branching
I'm planning on going back to 8-bit branching. 16-bit br cells incur
a non-negligible penalty and, while at first 64 words (128 bytes
forward or backward) seemed a bit limiting, I now don't see why one
would ever construct such a big branch. It would be un-forthy.

Also, I looked at using BC instead of IY to hold IP and the transition
would be a lot easier with 8-bit branching.

In this commit, all I do is add overflow checks in IF. The mechanic
below doesn't change. I'll give myself some time to think it over so
that I avoid yet another back and forth.
2020-05-24 10:16:25 -04:00
Virgil Dupras 5bbc256faf Flush input buffer on QUIT
Prebiously, when encountering an error during a : ; definition from
input buffer, because the input buffer wasn't flushed, we would continue
interpreting and quit the whole program when encountering ;.
2020-05-24 09:23:19 -04:00
Virgil Dupras 02e6979a46 emul: implement AT-XY
VI, here we come!
2020-05-23 20:15:28 -04:00
Virgil Dupras 05ca95e759 emul: make updatebootstrap two-stepped
Writing directly to forth.bin seems to cause problems in some
environments such as Travis CI.
2020-05-23 19:35:36 -04:00
Virgil Dupras c0b7b45570 emul: fix backspace
it was broken in the move to ncurses.
2020-05-23 14:47:19 -04:00
Virgil Dupras 7f3e55cb51 emul: add live register stats in the corner 2020-05-23 14:42:36 -04:00
Virgil Dupras 08b0c56ff6 emul: run Collapse OS inside a limited, fixed window
This will allow us to implement AT-XY, paving the way to all sorts
of nice new things.
2020-05-23 14:23:03 -04:00
Virgil Dupras 1d4b75add2 emul: deduplicate some code 2020-05-23 10:08:40 -04:00
Virgil Dupras 93c6d150e2 emul: don't embed forth.bin in emul binaries
Read the contents of forth.bin at runtime. This allows us to get
rid of the bin2c tooling.
2020-05-23 09:54:26 -04:00
Virgil Dupras 8d3da4c0de emul: stop embedding blkfs in binaries
Instead, embed absolute path to blkfs. Having to rebuild the stage
binary at every change in blkfs is getting tedious.
2020-05-23 09:36:10 -04:00
Virgil Dupras f884918d73 emul: use ncurses in /emul/forth
It doesn't change anything featurewise, but this change is in
preparation for the addition of an eventual AT-XY.
2020-05-23 08:36:55 -04:00
Virgil Dupras d041b91846 Optimize chkPS
Use EXX instead of the stack for HL protection and remove all
spurious uses of chkPS,

I wanted to inline chkPS in next because of its "tight loop" status,
but for reasons I don't understand, doing so breaks Collapse OS.
Later...
2020-05-22 23:12:03 -04:00
Virgil Dupras 6bff03a48b Move adev to core
It's small enough to be worth it.
2020-05-22 14:50:34 -04:00
Virgil Dupras bb190f9665 Add word TUCK 2020-05-22 14:19:02 -04:00
Virgil Dupras 41d439376d Add word NIP 2020-05-22 14:19:02 -04:00
Virgil Dupras f75b1c8864 Add word ?DUP 2020-05-22 14:19:02 -04:00
Virgil Dupras 177e70580f sms/kbd: begin rewriting ps2ctl to Forth
So far, the resulting binary matches.
2020-05-17 14:24:27 -04:00
Virgil Dupras ee3407bf1c avra: first steps 2020-05-16 09:51:02 -04:00
Virgil Dupras ed3bee787d emul: add a zasm.sh wrapper around stage executable 2020-05-16 07:47:47 -04:00
Virgil Dupras 863540f7c6 core: define H@ a bit sooner 2020-05-15 22:59:38 -04:00
Virgil Dupras bd38d80f9c Move Cross-compiled core from B390 to B350
and renamed it "Core words". Also, reworded the presentation.
2020-05-15 22:44:49 -04:00
Virgil Dupras b6c039589f Don't emit BS when at beginning of input buffer 2020-05-15 20:51:09 -04:00
Virgil Dupras 1597f1e131 Don't generalize XYPOS just yet
It was ill-advised.
2020-05-15 14:09:31 -04:00
Virgil Dupras db9885b8cf Rename (find) to FIND
I hadn't noticed that this word was almost ANS compliant.
2020-05-15 12:50:14 -04:00
Virgil Dupras 175b4bc497 sms: CollapseOS prompt! 2020-05-15 12:46:25 -04:00
Virgil Dupras ca60685067 Streamline initialization process
Instead of letting each configuration taking care of RDLN$ and
"CollapseOS" prompt, move this to BOOT to simplify xcomp units.

Initialization source code is now only for driver initialization.
2020-05-15 11:34:35 -04:00
Virgil Dupras 0163af470a Fix EOT behavior after QUIT
Previously, calling quit would break EOT behavior and not properly
quit Collapse OS.
2020-05-15 10:19:39 -04:00
Virgil Dupras 43eabf566b sms: WIP ! 2020-05-14 22:15:31 -04:00
Virgil Dupras 87b51a6261 By default, allocate about 0x100 bytes for PSP+RSP
During "make updatebootstrap", we use less than 0x20 bytes on the
PSP side and less than 0x40 bytes on the RSP one. 0x100 bytes ought
to be enough for anybody.
2020-05-14 18:41:09 -04:00
Virgil Dupras bf289b0a67 z80a: de-variable-ize
Use straight VARIABLE instead of Z80MEM+. Initially, I used this
system to allow z80a to be embedded in a system binary, but now
I don't think it's worth it. Compiled, z80a is 2.5k. Sure, it's a
sizeable amount of RAM, but I think that even with it in RAM, I'll
manage a bootstrap within my most constrained machine, the SMS with
8K.
2020-05-14 15:29:22 -04:00
Virgil Dupras a5269a1c7c Make blk use system RAM 2020-05-14 14:51:20 -04:00
Virgil Dupras eec9549bde Make rdln use system RAM 2020-05-14 14:26:56 -04:00
Virgil Dupras 8a58449776 Add word ERR 2020-05-14 11:57:26 -04:00
Virgil Dupras 5446afd87d emul: rename stage2 to stage 2020-05-14 10:55:39 -04:00
Virgil Dupras 9d4d9de511 emul: remove stage1 2020-05-14 10:49:24 -04:00
Virgil Dupras e6bac985fa Cross-compiles in a single stage!
Finally got rid of the XPACKed core and managed to cross-compile
all core words, which greatly simplifies the bootstrapping process.
2020-05-14 10:17:38 -04:00
Virgil Dupras 68262f925b Almost done De-XPACKing! 2020-05-14 09:58:48 -04:00
Virgil Dupras 640e3321fc Move a bunch of words from XPACKed core to xcomp core 2020-05-14 09:54:33 -04:00
Virgil Dupras 4143e2a699 Improve late-stage xcomp 2020-05-14 09:45:42 -04:00