Does anybody have a reference to a document that explains, in these traditional vintage computer setups that generate composite video, how the scrolling works ?
I went Googling for the particular video card you have, and the most productive hit appears to be your PDF article about it. The short answer here is what you’re dealing with is a memory-mapped system built around a Rockwell 6545 (Motorola 6845 work-alike) and the firmware for it is set up to do hardware scrolling, per the datasheet, by incrementing the video start address stored in registers R12 and R13:
Basically what the firmware is doing is when you flip the machine on it’s setting the memory address for the HOME position to the ‘zero’ point in the available video memory; this means, on power-up, that yes, the first byte of the video memory buffer corresponds to the upper left character on the screen, and the start of each subsequent line is 40/80/whatever bytes deeper in, etc. And if the firmware of this card just kept this statically set then scrolling would work like you initially thought, IE, you’d have to use a software routine to block-move lines of characters forward in the video buffer, therefore having to rewrite the whole screen for every scroll…
Instead what’s going on here is when you need to scroll the screen the firmware is just updating R12/R13 in the CRTC with an address 40/80/whatever bytes higher, marching the “home” position forward, and also, crucially, updating pointers in the video driver so it knows where the right positions are for screen updates. Now the obvious question comes up: how can this work when the video card only has 2K or whatever of video RAM? Well, the answer in this case is likely that only 11 of the 14 possible address lines for the CRTC are implemented, so as you change the starting address the forward the video addresses will effectively “wrap around” somewhere in the middle of the screen. This will work fine, the CRTC itself certainly doesn’t care, it just means the video driver is going to have to be smart enough to understand that, for instance, if the video start address is near the end of the CRTC’s physical memory buffer you might be writing most of the screen contents into addresses that from the CPU’s point of view are lower than the start address.
Anyway, this kind of thing is far from universal. Most simple home computers with “hardwired” video circuitry, like a Commodore PET or TRS-80, don’t bother with scroll registers. (It’s not unknown, though… I think the processor tech VDM-1 and its descendant SOL-20 video systems have them, albeit a lot simpler/cruder than the CRTC has.) And plenty of machines that *do* have CRTCs don’t bother with hardware scrolling. It was honestly kind of a technical cul-de-sac, most microcomputers are fast enough that software scrolling isn’t a deal-breaker and it saves a lot of hassle.