;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; Scrolling Routines Library v1.0 by CrASH_Man 02/14/98 ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; ; This is a collection of highly optimized scrolling routines for the ; TI-82. Calling the routine will scroll the entire screen by one pixel in ; the direction specified. No registers are destroyed, so you may modify ; the routine if your code does not need to save them. ; ; For an example on how to use this library, please take a look at ; SCRTEST.ASM. ; ; This code is fairly simple to port so anyone can port it to the TI-83, ; 85, or 86 with only a couple changes. ; ; You may use these routines in your programs, but please give me credit ; for my work by including my name in the documentation and source. ; ; by CrASH_Man ; ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; Usage: ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; CALL Scroll_U Scrolls the screen up by one pixel ; CALL Scroll_D Scrolls the screen down by one pixel ; CALL Scroll_L Scrolls the screen left by one pixel ; CALL Scroll_R Scrolls the screen right by one pixel ; ; No extra memory addresses are used/needed. ; ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; Revision History: ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; 1.0 02/14/98 - Scrolling Routines completed 148 bytes Scroll_U: ; [16228 Clock Cycles] PUSH HL ; Save Registers PUSH DE PUSH BC LD HL, GRAPH_MEM+12 ; Copy from one row below top LD DE, GRAPH_MEM ; to top row LD BC, 756 ; 756 bytes LDIR LD H, D ; Fill Blanks LD L, E INC E LD (HL), B LD C, 11 LDIR POP BC ; Restore Registers POP DE POP HL RET Scroll_D: ; [16228 Clock Cycles] PUSH HL ; Save Registers PUSH DE PUSH BC LD HL, GRAPH_MEM+755 ; Copy from one row above bottom LD DE, GRAPH_MEM+767 ; to bottom row LD BC, 756 ; 756 bytes LDDR LD H, D ; Fill Blanks LD L, E DEC E LD (HL), B LD C, 11 LDDR POP BC ; Restore Registers POP DE POP HL RET Scroll_L: ; [17024 Clock Cycles] PUSH HL ; Save Registers PUSH BC LD HL, GRAPH_MEM+767 ; Shift starting from bottom row LD B, 64 ; Do 64 rows _LLoop: SLA (HL) ; 96-bit shift left DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL DJNZ _LLoop POP BC ; Restore Registers POP HL RET Scroll_R: ; [17024 Clock Cycles] PUSH HL ; Save Registers PUSH BC LD HL, GRAPH_MEM ; Shift starting from top row LD B, 64 ; Do 64 rows _RLoop: SRL (HL) ; 96-bit shift right INC HL RR (HL) INC HL RR (HL) INC HL RR (HL) INC HL RR (HL) INC HL RR (HL) INC HL RR (HL) INC HL RR (HL) INC HL RR (HL) INC HL RR (HL) INC HL RR (HL) INC HL RR (HL) INC HL DJNZ _RLoop POP BC ; Restore Registers POP HL RET