How did they do the scrolling in it?
Simplified:
Three regions that move as you scroll in x/y: current/next/clean.
The key is that when you scroll a column or a line, that column/line is written in all three regions.
The clean region is used both as a source for filling the dirty places where sprites have been written as well as the next current or next after a wrap.
VGA registers take care of the x, y start output.