Colin is the man to ask, but from memory from discussions with him on various things the ASIC handles the video reads and these are not present (or at least not alterable) from hardware.
Adrian -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Geoff Winkless Sent: 02 February 2012 12:01 To: [email protected] Subject: Re: Single pixel hardware scroll? On 2 February 2012 11:02, Simon Owen <[email protected]> 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
