Commit Graph

1680 Commits

Author SHA1 Message Date
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 fc63541725 Improve documentation 2020-10-27 19:53:02 -04:00
Virgil Dupras 3198cd8d08 emul/8086/pcat: fix broken AT-XY 2020-10-25 18:42:48 -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 490eceab6d emul/z80: flatten directory structure
I'm about to reuse sdc.c in sms.c and the old directory structure
was becoming awkward.
2020-10-25 15:58:00 -04:00
Virgil Dupras 44abcaa8f8 emul/8086: a little bit of cleanup in cpu.c
De-macroisation negatively impacts speed, but this emulator doesn't
need to be fast. Clear code is more important.
2020-10-25 14:25:12 -04:00
Virgil Dupras 8760766bb4 emul/8086: cleanup a couple of ifdefs
We assume CPU_V20 configuration at all times.
2020-10-25 14:01:46 -04:00
Virgil Dupras 5a77b80d3d emul/8086/pcat: fix broken int13h logic
I had forgotten that heads index increment before track index.
2020-10-25 12:21:44 -04:00
Virgil Dupras ba21b6a9f5 emul/8086: add PC/AT emulator 2020-10-25 10:27:52 -04:00
Virgil Dupras c912158744 Run "all" tests under the 8086 emulator 2020-10-24 23:38:06 -04:00
Virgil Dupras 885e7db054 emul/8086: add BLK support 2020-10-24 23:20:20 -04:00
Virgil Dupras de9103942d emul/8086: implement AT-XY 2020-10-24 23:00:45 -04:00
Virgil Dupras d11ac3f006 emul/8086: and we have liftoff!
Getting a Collapse OS prompt.
2020-10-24 22:06:51 -04:00
Virgil Dupras 942a50a86d emul/8086: add INT hooks 2020-10-24 21:50:44 -04:00
Virgil Dupras 939c018792 emul/8086: wip 2020-10-24 20:41:51 -04:00
Virgil Dupras efe4b13a4e Move /emul to /emul/z80
I'm planning on adding other subfolders. 8086 for example...
2020-10-24 16:50:22 -04:00
Virgil Dupras 329219fa89 emul: copy libz80 directly into tree, pre-generated
libz80 doesn't move much anymore, there not much advantage to the
git module indirection.
2020-10-24 15:42:08 -04:00
Virgil Dupras c072096909 tests: run "generic" tests under all Collapse OS architectures
There's no reason to run them only under CVM.
2020-10-24 14:57:33 -04:00
Virgil Dupras ae62e291e6 Update libz80 submodule 2020-10-24 14:46:21 -04:00
Virgil Dupras 46c95320af emul: bring "hw" subfolders one level higher 2020-10-24 14:37:19 -04:00
Virgil Dupras 8cecd54410 emul/sms: add PS/2 keyboard emulation 2020-10-24 11:18:48 -04:00
Virgil Dupras cc8068f8ab emul: don't hardcode X11 keycodes in key handling routines
I thought it wasn't possible with XCB to transform keycodes into
symbols for the current keyboard mapping, but I hadn't looked
hard enough.
2020-10-23 21:33:56 -04:00
Virgil Dupras 473d04d7d9 recipes/sms: add cartridge hacking instructions 2020-10-12 21:39:53 -04:00
Virgil Dupras 1681e61956 emul/sms: don't hardcode name table offset
Use reg 2 as specified.
2020-10-12 21:11:46 -04:00
Virgil Dupras 6b895d0745 sms: explicitly set ourselves in IM 1
I'm not sure if not setting IM 1 explicitly can be the source of bugs,
but SMS Power's tutorial mentions that everyone is doing it, so...
2020-10-10 13:31:54 -04:00
Virgil Dupras 0d172cc2c4 tools: add smsrom
Running a ROM on an everdrive is one thing, but running a ROM
directly is another: my hacked up sega.bin didn't have a proper
checksum, so the ROM didn't run.

This new tool transforms a binary into a properly-headered ROM.

Has been tested on an actual SMS.
2020-10-10 13:30:43 -04:00
Virgil Dupras 32d5f87b4e sms: don't use BC
The PAD driver was broken since IP moved to BC. Oops.
2020-10-06 20:36:29 -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 8630b0a8ed recipes/rc2014/avr: new recipe 2020-10-05 18:46:22 -04:00
Virgil Dupras dafcf72d5b Add ATmega328P definitions 2020-10-05 16:56:09 -04:00
Virgil Dupras ebafa79795 Improve AVR docs
After many trials and errors in reliably accessing AVR chips through
my SPI relay design, I resigned myself to accepting 125kHz communication
speed with it. I find the complexity of solutions allowing to keep 250kHz
speeds to be excessive.
2020-10-05 16:46:16 -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 1195b0313b emul/rc2014: add support for Zilog SIO
Very very simplistic, but works with our driver.
2020-09-24 21:01:14 -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