*BASIC on MOS 3.20: ~0.22 seconds
*BASIC (which, for whatever reason, skips the relocation step) on MOS 3.50: ~0.41 seconds
*FX142 12 on MOS 3.50: ~0.60 seconds
Issues with the MOS 3.50 code:
it doesn't have a MOS 3.20-style fast path for the case where there's no relocation data
it copies relocated ROM data to an intermediate buffer, then sends that using the Tube pagewise transfer mode. But since it's only doing 256 bytes at a time, surely it could just use the Tube pagewise transfer mode directly!
the relocation code could be improved a bit if it could be copied to RAM, permitting some self-modification (there's space in page 7 if not buffering the result...), and if it could assume the language ROM definitely needs relocating
Eked out a bit more speed - much better. The non-relocating case is as fast as MOS 3.20, and the relocating case is ~0.4 seconds. Possibly a bit more to be eked out, if it ends up still annoying me.
Timings taken on Master Turbo.
*BASIC
on MOS 3.20: ~0.22 seconds*BASIC
(which, for whatever reason, skips the relocation step) on MOS 3.50: ~0.41 seconds*FX142 12
on MOS 3.50: ~0.60 secondsIssues with the MOS 3.50 code: