Commit Graph

432 Commits

Author SHA1 Message Date
Virgil Dupras
e31527f5ac Add word ROT>
There are many situations where it can be useful. Worth it.
2020-10-29 12:41:08 -04:00
Virgil Dupras
75ef1f440c Make MOVE* words use A@ and A!
This allows us to remove AMOVE* words.
2020-10-29 12:15:21 -04:00
Virgil Dupras
de7cb4a80f Add word A,
This would be useful, for example, to allow the assembler to write
straight to an AT28 EEPROM without going to RAM. This would be a
life saver in machines with tight RAM such as the SMS.
2020-10-28 20:45:50 -04:00
Virgil Dupras
30b56185e9 Optimize parsing routines 2020-10-28 20:29:28 -04:00
Virgil Dupras
f027f13042 Remove an indirection in ERR 2020-10-28 19:23:34 -04:00
Virgil Dupras
705d68deec Move most of the high layer of comp core into the low one
With KEY and EMIT being switch words, most of the high layer can
be defined before drivers.

In addition to this change, I've compacted core blocks which were
becoming quite sparse.
2020-10-28 18:18:00 -04:00
Virgil Dupras
8f3891f7d3 Move EMIT to low core
This allows us to remove one layer of indirection in (wnf). This is
possible now that EMIT is a switch word.
2020-10-28 16:34:49 -04:00
Virgil Dupras
038c25957b Make C<* into a switch word
Slightly larger binary, but clearer code and slightly faster.
2020-10-28 16:18:37 -04:00
Virgil Dupras
5e13dcedf3 Make KEY and EMIT into switch words 2020-10-28 16:00:58 -04:00
Virgil Dupras
d3ec0e3a6c Use SYSVARS instead of RAM+ in core switches defs
RAM+ is the host's setup! Use SYSVARS instead, which is the guest's
value.
2020-10-28 15:47:49 -04:00
Virgil Dupras
adea75e50a Add alias and switch word types
I'm pretty happy about how lightweight the implementation turns
out to be.
2020-10-28 15:02:06 -04:00
Virgil Dupras
a82db0739a z80: make exec routine a wee bit tighter
1 whole byte!
2020-10-28 13:28:27 -04:00
Virgil Dupras
788453b89c Simplify NL
I think that when I added NL, I had troubles having access to CRLF's
address at boot time, which is why I had this system. But now that
CRLF is easily accessible during BOOT, we can simplify.

(and that will help us in the hopefully-upcoming change, which is
quite nice...)
2020-10-28 11:35:32 -04:00
Virgil Dupras
04bd57b527 Remove BIT@ and BIT!
They were only used in the ti84 recipe and were not worth their cost.
2020-10-27 22:51:08 -04:00
Virgil Dupras
6947fea2a8 emul/z80: add SD card support to SMS
It works (in emulation, but soon on real hardware!), but the LIST
command is awkward due to tight screen estate...
2020-10-25 16:53:58 -04:00
Virgil Dupras
c912158744 Run "all" tests under the 8086 emulator 2020-10-24 23:38:06 -04:00
Virgil Dupras
eafcb0c440 avrpgm: add EEPROM support
also, verify all 3 first bytes of SPI commands. I'm not sure why
I wasn't doing that, probably because I was getting a lot of AVR
err and thought that only 2 bytes of the cmd were echoed. But now,
with a reliable SPI setup, verifying 3 bytes seems to work.
2020-10-05 19:36:49 -04:00
Virgil Dupras
dafcf72d5b Add ATmega328P definitions 2020-10-05 16:56:09 -04:00
Virgil Dupras
44bcdd4327 Document 8086 asm instructions list
Also, remove needless argtype in CALL and RET
2020-09-25 19:44:32 -04:00
Virgil Dupras
8bf6258673 Add word TICKS
Adding a delay such as the 20ms one we have in AVR programmer's
initialization routine is tricky without a word like TICKS.

This implementation is highly inaccurate, but more accurate and
reliable than a "ballpark" DO..LOOP...
2020-09-25 17:31:06 -04:00
Virgil Dupras
35840ad8e6 sdc: don't use ABORT"
ABORT" doesn't work in xcomp.

Also, improve xcomp docs and fix misdocumentation.
2020-09-24 13:10:41 -04:00
Virgil Dupras
25a35cf28e Move 8086 boot code from B800 to B440
That slims down blkfs a lot.
2020-09-21 20:09:42 -04:00
Virgil Dupras
037c10fc57 Move AVR programmer from B690 to B160
Also, remove leftovers from previous move.
2020-09-21 20:00:49 -04:00
Virgil Dupras
faf088b397 Move AVR assembler from B650 to B50
And move its doc to doc/asm.txt
2020-09-21 19:52:53 -04:00
Virgil Dupras
b21be43535 Move 8086 assembler from B730 to B30
Also, move doc to doc/asm.txt.

Also, fix the pcat recipe which was broken since the overlay change.
I hadn't noticed it because I didn't have to rebuild the MBR.
2020-09-21 19:24:54 -04:00
Virgil Dupras
91f79d1131 Move z80a from B200 to B5
The idea is to consider assemblers as "runtime" apps instead of
placing them in the "bootstrap" section of the blocks. These apps
will be used for much more than bootstrapping.

Moved its documentation to doc/asm.txt and made its code blocks
more compact.
2020-09-21 17:51:08 -04:00
Virgil Dupras
a348ee9106 Remove Extra words
The few extra bytes they save in the core aren't worth the extra
complexity. This was initially done in a context where I had
troubles keeping the RC2014 binary with SDC inside the 8K limit.

At this point, even with the few extra bytes we add here, we're at
7200 bytes, so I'd say we're fine.
2020-09-21 14:51:46 -04:00
Virgil Dupras
7a5744a4c3 Remove BROWSE and CASE
With the Visual Editor, BROWSE is of dubious value. Even before that,
it was of dubious value. It's the only user of the CASE word, which
is also of dubious value: too complicated for its own good.

The CMD pattern used in VE is much better.
2020-09-21 14:13:34 -04:00
Virgil Dupras
fea9beac1e recipes/pcat: move recipe blocks into local overlay 2020-09-20 20:48:52 -04:00
Virgil Dupras
475171d07b recipes/ti84: move recipe blocks into local overlay 2020-09-20 20:24:09 -04:00
Virgil Dupras
373d03e0b1 recipes/trs80: move recipe blocks into local overlay 2020-09-20 11:57:30 -04:00
Virgil Dupras
97ec2569a0 recipes/rc2014: move recipe blocks into local overlay 2020-09-20 10:50:13 -04:00
Virgil Dupras
8e624034bf recipes/sms: move recipe blocks into local overlay 2020-09-20 10:21:21 -04:00
Virgil Dupras
b1a95648f1 De-stabilize EXIT
This marks the end of wordrefs in stable ABI. Nice.
2020-09-19 20:35:35 -04:00
Virgil Dupras
3aa681ceca Remove ";" word
The ":" now takes care of scanning for ";". Conceptually, having
";" as an immediate word is slightly simpler than the approach in
this commit, but when bootstrapping is involved, this simpler
approach gets murkier.

Moreover, it got even murkier-er when trying to de-stabilize EXIT,
so here we are.
2020-09-19 20:22:23 -04:00
Virgil Dupras
53239c8f84 De-stabilize (n) 2020-09-19 19:44:15 -04:00
Virgil Dupras
68dd800bd1 Remove LIT< in favor of LIT" exclusively
This duplicated feature existed because of bootstrapping issues
with LIT", but again, with careful threading, we can clean things
up.

We can now have a proper "Collapse OS" prompt :)
2020-09-19 18:51:29 -04:00
Virgil Dupras
0b11979b5e Fix LIT"
I've mistakenly broken it in previous commit.
2020-09-19 14:28:10 -04:00
Virgil Dupras
eefbf66e95 De-stabilize (br), (?br), (loop), (s)
When writing the xcomp documentation, I realized that with careful
threading and by accepting a bit of code duplication in the xcomp
toolset, I could de-stabilize a couple of words.

(n) and EXIT are a bit trickier, but I think it can be done. It
would be nice to get rid of stable wordrefs...
2020-09-19 13:54:01 -04:00
Virgil Dupras
3295f1689e doc: add cross.txt 2020-09-19 10:32:28 -04:00
Virgil Dupras
495d2819d2 recipes/rc2014/sdcard: make spi relay design multi-devices
Also, fix the SPI relay driver to properly AND-away the result of
the CTL read.

Tested with a real prototype, works fine.
2020-09-18 19:22:56 -04:00
Virgil Dupras
1a6a549857 Make the SPI Relay protocol support multiple devices
Working on programming AVR chips exposes a glaring omission in my
first design of the SPI Relay: not allowing multiple devices make
this task hard. I constantly have to unplug my SD card before, plug
the AVR chip holder, then play a bit, then unplug the AVR holder,
then replug the SD card...

My prototype for a SPI relay design is built, but I haven't tested
it yet. I need to adapt the code first, which is what I do here.

When the prototype is tested, I'll update the SDC recipe with a new
schema.
2020-09-17 09:48:55 -04:00
Virgil Dupras
5b4917dbe9 avr: allow writing to flash 2020-09-05 14:07:13 -04:00
Virgil Dupras
4910b9caef core: add AMOVEW 2020-08-31 12:11:17 -04:00
Virgil Dupras
3a84a3871b core: make parse and format words a bit tighter 2020-08-30 20:15:55 -04:00
Virgil Dupras
9c36885503 Fix doc innacuracies 2020-08-30 16:53:27 -04:00
Virgil Dupras
85f8543e17 avrspi: first steps
After having done my initial handshaking, I thought the rest of the
job was only a matter of implementing the protocol, but I was wrong.
There were many issues to fix before I could reliably communicate
with my 328P, mostly timing.

Now, I seem to be able to reliably extract fuse information, but
only in batch mode (that is, run "asp$ aspfl@" directly, then
running "(spid)" before running the next command). If I try to
interact with the chip in a single asp$ session, I sometimes get
wrong values (but no sync error! that's worrying...).
2020-08-30 08:01:09 -04:00
Virgil Dupras
7359717000 z80: add missing chkPS, calls
chkPS, used to be only for words that pushed back to PS, but I've
recently removed underflow checks from next and I forgot to add
missing chkPS, calls that go with this change.
2020-08-23 08:43:51 -04:00
Virgil Dupras
46676547d9 spi: add SPI_DELAY decl
AVR chips often run at less than z80's system clock. This means that
our SPI relay needs to have its own clock to properly communicate
with it. This means that the delay between OUT and IN can't be
hardcoded to 2 NOPs anymore. It needs to be configurable.
2020-08-23 07:55:17 -04:00
Virgil Dupras
5f9fccfa8c rc2014: make SIO actually work on real hardware
my previous commit was only tested in emulation, I had init wrong.
2020-08-18 15:33:15 -04:00