tom-seddon / acorn_mos_disassembly

WIP disassembly of Acorn MOS, operating system for Acorn's 8-bit Master series
8 stars 0 forks source link

3.50 language copy code could be improved #20

Closed tom-seddon closed 10 months ago

tom-seddon commented 1 year ago

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:

  1. it doesn't have a MOS 3.20-style fast path for the case where there's no relocation data
  2. 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!
  3. 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
tom-seddon commented 10 months ago

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.