3.50 language copy code could be improved
tom-seddon opened this issue · comments
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 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.