Used by the routine at PO_SCR.
The number of lines of the display that are to be scrolled has to be held on entry to the main subroutine in the B register.
|The entry point after 'scroll?'
|Find the starting address of the line.
|There are eight pixel lines to a complete line.
|Save both counters.
|Save the starting address.
|Jump forward unless dealing at the present moment with a 'third' of the display.
|The result of this manipulation is to leave HL unchanged and DE pointing to the required destination.
|There are +20 characters.
|Decrease the counter as one line is being dealt with.
|Now move the thirty two bytes.
|Again DE is made to point to the required destination, this time only thirty two locations away.
|Save the line number in B.
|Now find how many characters there are remaining in the 'third'.
|Pass the 'character total' to the C register.
|Fetch the line number.
|BC holds the 'character total' and a pixel line from each of the characters is 'scrolled'.
|Now prepare to increment the address to jump across a 'third' boundary.
|Increase HL by +0700.
|Jump back if there are any 'thirds' left to consider.
|Fetch the original address.
|Address the next pixel line.
|Fetch the counters.
|Decrease the pixel line counter and jump back unless eight lines have been moved.
|The required address in the attribute area and the number of characters in B lines are found.
|The displacement for all the attribute bytes is thirty two locations away.
|The attribute bytes are 'scrolled'.
|The B register is loaded with +01 and CL_LINE is entered.