On 2 February 2012 11:02, Simon Owen <simon.o...@simcoupe.org> wrote: > > On 2 Feb 2012, at 10:24, Geoff Winkless wrote: >> If you're thinking of playing with stuff like that in SimCoupé, how >> about adding in a screen start address OUT mod? I'd love to see what >> could have been done with just a small change to the ASIC design :) > > I was drawn by the possibility of there being something new and > unimplemented, though it's sounding increasingly unlikely. > > Still, I think your suggestion should be relatively easy to try, just for > fun! Just a single byte offset for the start address? How should wrapping > be handled? I'm in the middle of a sound revamp at the moment, but I'll put > it on the list to take a quick look after that.
I was thinking a full two-byte offset with a rolling window. So normally ASIC looks at the VMPR for the RAM page, then (I imagine) keeps a 15-bit offset from 0 and reads byte-by-byte, incrementing offset as it goes (obviously doing weird stuff for mode 1, but I'm simplifying) If you could just change that 15-bit offset to start at XhXl using LD B,Xh LD A,Xl LD C,MyPortNumber OUT (c),A hardware scrolling, the cheap way. I think the BBC did exactly this. > Would that be possible with a real SAM peripheral? Can the value on the bus > be changed to redirect the display read? Or is it possible to modify the > value read instead? Perhaps something that watched for display reads and > cached the values, so it could supply a remapped value to offset the display? Uhh. I doubt it. The ASIC handles the value being read, so unless you can a) tell the difference between a normal address request and an ASIC request and b) either override that address or at the very least override the result that came back. I don't even think the ASIC memory requests appear on the bus, do they? Colin would know :) Geoff