RE: Single pixel hardware scroll?
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: owner-sam-users@...
[mailto:owner-sam-users@...] On Behalf Of Geoff Winkless
Sent: 02 February 2012 12:01
To: sam-users@...
Subject: Re: Single pixel hardware scroll?
On 2 February 2012 11:02, Simon Owen <simon.owen@...> 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