Prev: 24699 Up: Map Next: 24825
24731: Scroll the screen left one column
Used by the routine at 25820.
24731 EXX
24732 LD HL,22529 Point HL' and DE' at the leftmost end of the top row of attribute bytes on the screen
24735 LD DE,22528
24738 LD BC,31 We need to scroll 31 attribute bytes at a time
24741 EXX
24742 LD HL,16385 Point HL and DE at the leftmost end of the top row of pixels on the screen
24745 LD DE,16384
24748 LD BC,31 We need to scroll 31 display file bytes at a time
24751 LD A,21 There are 21 rows of character squares to scroll
24753 EX AF,AF'
24754 LD A,8 Each row of character squares contains 8 rows of pixels
24756 PUSH HL
24757 PUSH DE
24758 LDIR Scroll a row of pixels left one column
24760 POP DE
24761 POP HL
24762 INC D Point HL and DE at the next row of pixels
24763 INC H
24764 LD C,31 BC=31
24766 DEC A Next row in this block of 8x32
24767 JR NZ,24756 Jump back until this 8x32 pixel block has been scrolled
24769 EXX
24770 LDIR Scroll a row of attribute bytes left one column
24772 INC HL Point HL' and DE' at the leftmost end of the next row of attribute bytes on the screen
24773 INC DE
24774 LD C,31 BC'=31
24776 EXX
24777 LD A,32 Point HL and DE at the leftmost end of the top row of the next 8x32 block of pixels
24779 ADD A,E
24780 LD E,A
24781 LD A,32
24783 ADD A,L
24784 LD L,A
24785 EX AF,AF'
24786 DEC A Next row of character squares
24787 JR Z,24805 Exit this loop if all 21 rows have been scrolled left
24789 CP 5 Have we reached the bottom third of the screen?
24791 JR Z,24753 Jump if so
24793 CP 13 Have we reached the middle third of the screen?
24795 JR Z,24753 Jump if so
24797 EX AF,AF'
24798 LD A,H Point HL and DE at the leftmost end of the top row of the next 8x32 block of pixels
24799 SUB 8
24801 LD H,A
24802 LD D,A
24803 JR 24754 Jump back to deal with the next row of character squares
The 21 rows of character squares have been scrolled one place to the left. Now the rightmost column needs to be filled.
24805 EXX
24806 LD HL,22559 Point HL' and DE' at the attribute file and display file addresses for the top right of the screen, and set BC'=32; however, these values are not used
24809 LD DE,16415
24812 INC C
24813 EXX
24814 LD A,(32512) A=leftmost column of the skool on-screen (0-64)
24817 INC A We are scrolling one column left
24818 LD (32512),A
24821 ADD A,C A=rightmost column of the skool on-screen (31-95)
24822 JP 24670 Fill in the rightmost column
Prev: 24699 Up: Map Next: 24825