Interface 1 Issue 2 Bug Fixes
I've had a bit of spare time today and implemented Geoff's bug fixes as detailed in his excellent disassembly.
The listing will assemble with Tasm 3.0.1, and a binary that should work with most emulators is included.
Why bother? well - with a little bit more work this can be flashed onto a ZXC3 cartridge, and then the sky's the limit...
The listing will assemble with Tasm 3.0.1, and a binary that should work with most emulators is included.
Why bother? well - with a little bit more work this can be flashed onto a ZXC3 cartridge, and then the sky's the limit...
Post edited by jp on
Comments
The problem I can see is that the I/F1 had an 8K ROM and it was practically full, so how can we add more stuff to it? (Unless it suddenly becomes a 16K ROM, but doesn't that cause compatibility issues with other ROM containing hardware?)
The thing I find most annoying about I/F 1 (well apart from the obvious low RAMTOP bug) is that there's no hook code to just load or save a file. BBC users are spoilt with their fancy FS model and calls, but all the I/F1 offers is to load and save sectors.
I would love to be able to add I/F1 device support to "Twenty Commodes" and UK101 emulators as they work with streamed byte-by-byte files rather than an all-at-once approach used on the Spectrum, but using I/F1 from machine code, for me, is always "difficult".
I've been playing with the ZXC3 for a just over a week now, and it's brilliant.
For me, the luxury is being able to flash the cartridge as I please without the need for an EPROM programmer, plus the virtual microdrive.
I was thinking of going down the 16K route - but you make an interesting point.
Certainly, under emulation, the Multiface doesn't seem to work well with a 16K ROM... that's something that will need some consideration.
Yup the lack of hook codes has frustrated me as well, but there is a sort of work around for loading files.
Looking at the Disciple and Plus D for inspiration, there's certainly scope to extend the hook codes.
Yup, and to further agree with your earlier point, the hook codes don't provide everything needed.
Pretty much, in the past I've used non standard entry points to achieve what I've wanted.
This, of course, has it's downside by having to maintain separate tables of entry points per version of IF1...
In this particular example, hook code $1b will load the "run" file from drive 1.
The download contains a 16K ROM with the existing patches and extended to support the new hook code. This ROM works with Spectaculator, but I'm pretty sure Spin doesn't support 16K.
There's also a demonstration cartridge - load the "demo" file and hook code $1b will be executed, and thus load the bootstrap - woot.
It's not particularly exciting, well written or optimised but does prove the point.
Here's a patched version (assembly and binaries) for use with a ZXC3 cartridge