Re: one or two lines scrolling

From: Spiro Trikaliotis <ml-cbmhackers_at_trikaliotis.net>
Date: Fri, 18 Oct 2019 15:50:02 +0200
Message-ID: <20191018135002.GI7345_at_hermes.local.trikaliotis.net>
* On Fri, Oct 18, 2019 at 11:36:07AM +0200 silverdr_at_wfmh.org.pl wrote:
> 
> 
> > On 2019-10-18, at 09:56, Anders Carlsson <anders.carlsson_at_sfks.se> wrote:
> > 
> > silverdr_at_wfmh.org.pl wrote:
> >> When printing to 64 screen, I remember that the content gets
> >> scrolled sometimes one and sometimes two lines at once. Does it
> >> have something to do with "logical" vs. "physical" screen lines?
> >> And how to detect how many lines the content will be scrolled
> >> before it happens?
> > 
> > There is a line link table at $00D9 - $00F2. Whenever you have
> > printed (not POKE) a character in the rightmost column, it will link
> > two physical lines into one logical one and scrolling will occur
> > based on that. It appears this happens by clearing the MSB on the
> > link that exceeds the rightmost column. You could try to ORA all
> > those addresses by $80 and see if you get consistent scrolling of
> > one line at a time.
> 
> Anders, thanks for good hint! The routine at $E8EA checks there "if
> the top logical line is two physical lines long" and all lines are
> moved up two lines if true. Which means it should suffice to check the
> MSB of second line to determine how many lines long the scroll will
> be. And to set MSB on the second line to ensure single-line scroll.

I know, you asked specifically for the C64.

Note, however, that the VIC20 is a little bit different, although the
code is almost identical: It can link up to 4 lines together, yielding
to a maximum input line length of 4*22=88 characters. That's where the
ominous 88 byte input buffer of the C64 comes from ($0200-$0257).

Regards,
Spiro.

-- 
Spiro R. Trikaliotis
http://www.trikaliotis.net/
Received on 2020-05-29 23:14:33

Archive generated by hypermail 2.3.0.