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

Reply via email to