* 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.