home *** CD-ROM | disk | FTP | other *** search
- ;────────────────────────────────────────────────────────────────────────────
- ; 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
-