My project to do list:
A chess game for the MC-10. People
asked me to do this, so some point in the next few months I'll see what I
can do about it. They suggested I port MicroChess from the 6502, but
if I can get the 6803 C compiler to actually build working code, you'll get
a lot better chess game than that. The compiler seems to have some stack
issues at the moment, so no promises.
More MC-10 ROM changes in the works, including a faster LOG function. The new LOG will eliminate some of the slow division in the current code, replacing it with multiplication that will use the hardware multiply instead. Functions that depend on LOG should be significantly faster, including SQR, SIN, and COS. Combined with the previous SIN, COS speedup, the 0.89 MHz MC-10 might beat the 1.77 MHz CoCo 3 generating that "Fedora" 3D plot, and Ahl's Benchmark will drop below the 1 minute mark, possibly around 45 seconds. That's half the factory ROM's original time. Another
change is to drop the ELSE statement. Yeah, that's the first thing I added, but after the last round of changes, it's just
slowing things down. The interpreter has to search for the end of the
line looking for an ELSE statement when an IF fails. Without it, the interpreter just loads the address of the next line, and starts interpreting
code. Hopefully, that will speed up non-math oriented code enough to top the 10% mark.
Port BASIC to a 68HC11 development board. I've made a lot of the changes already, but it will only
use terminal I/O, so lots of stuff has to go. At the moment, the board is just sitting on my desk staring
at me.
A few years ago I
ported the UCSD Pascal P-Code (bytecode) interpreter to the 6803. The 16 bit
support, 16 bit index register, and a few other features makes the code
smaller, and faster than the 6502 version (the Apple Language System). I *think* all that's left to implement is the hardware
interface code for the UCSD P-Machine. But it's never that easy is it? The MC-10 hardware is
right in the middle of the memory map, and there is no disk drive. The
MC-10's design does allow external hardware to disable the internal
memory map (video, sound, ROM, and internal RAM), so, it just needs an external expansion that can disable this stuff. The MCX-128 will do some of this, but it doesn't work with the hi-res mode, so using my 64 column graphics text code is out. That leaves the 32 column, uppercase only, inverse "lowercase", VDG output for text. That would be horrid for Pascal. Maybe some hardware is needed here. Hmmmm...
The P-Code interpreter for Tiny Pascal (BYTE Magazine, 1978) may get a port. It's similar to UCSD Pascal, but it's simpler. A program could be compiled on the PC, and the bytecode could be tacked on to the end of the interpreter, allowing the whole thing to load from cassette. It might be fun to play with, but it's not a priority.
While I'm talking about bytecode interpreters... the author of FastBASIC for the Atari asked if I'd port the it's bytecode interpreter to the 6803. It would need over 2000 lines of assembly. I have avoided starting on it until I finish some other projects, but a few people may prefer BASIC over Pascal.
Finish the
disassembly of the VZ-200 ROM. I was using msys (a Unix like
development system that works under Windows), but someone broke the sed
command in an update. The disassembly uses an automated script to
generate code, labels, and to attach comments to the disassembly using
sed. My new desktop machine has a Linux boot drive I can use when
things like this happen, and hopefully sed isn't broken there as well.
I'm going to start uploading code to github including:
The Oric music player, the Apple II Mockingboard version, and the VZ200 version.
A port of the William Tell Overture 4 voice music program from the CoCo, to the VZ. This is unfinished since I no longer have hardware to test on, and having someone else in Australia test it just wasn't working. It had some sort of bug as of the last test, which I may have found, but it doesn't have all the music data. I don't have the magazine with the source code anymore, so I'd have to extract the data from the CoCo executable.
Some
Veralog code for a VZ200 RAM, FLASH, IDE, sound board I was working
on. It's just some address decoding, generating chip selects, and a
small amount of address line generation for the paged memory. The pin
count was a bit high for a small CPLD, so I was planning changes, but my
VZ burned up with my house, so it hasn't been touched since. It's about 600 lines of verilog.
The
64 column, graphics text code for the 6502, Z80, and 6803.
That includes Atom, Atari, Plus/4, VZ200,
and MC-10 versions.
The Plus/4 code still needs to set the graphics mode, and the memory map.
The Z80 VZ, and 6803 MC-10 versions have some untested optimizations.
As I work on this, I'll post video updates. Hopefully the quality will be better now.