home *** CD-ROM | disk | FTP | other *** search
/ ticalc.org / ticalc_org_rev_b.iso / archives / 82 / asm / source / crash / scroll.asm < prev    next >
Encoding:
Assembly Source File  |  2001-07-01  |  3.8 KB  |  143 lines

  1. ;────────────────────────────────────────────────────────────────────────────
  2. ;             Scrolling Routines Library v1.0 by CrASH_Man          02/14/98
  3. ;────────────────────────────────────────────────────────────────────────────
  4. ;
  5. ;   This is a collection of highly optimized scrolling routines for the
  6. ; TI-82.  Calling the routine will scroll the entire screen by one pixel in
  7. ; the direction specified.  No registers are destroyed, so you may modify
  8. ; the routine if your code does not need to save them.
  9. ;
  10. ;   For an example on how to use this library, please take a look at
  11. ; SCRTEST.ASM.
  12. ;
  13. ;   This code is fairly simple to port so anyone can port it to the TI-83,
  14. ; 85, or 86 with only a couple changes.
  15. ;
  16. ;   You may use these routines in your programs, but please give me credit
  17. ; for my work by including my name in the documentation and source.
  18. ;
  19. ;                                                               by CrASH_Man
  20. ;
  21. ;────────────────────────────────────────────────────────────────────────────
  22. ; Usage:
  23. ;────────────────────────────────────────────────────────────────────────────
  24. ;  CALL Scroll_U   Scrolls the screen up by one pixel
  25. ;  CALL Scroll_D   Scrolls the screen down by one pixel
  26. ;  CALL Scroll_L   Scrolls the screen left by one pixel
  27. ;  CALL Scroll_R   Scrolls the screen right by one pixel
  28. ;
  29. ; No extra memory addresses are used/needed.
  30. ;
  31. ;────────────────────────────────────────────────────────────────────────────
  32. ; Revision History:
  33. ;────────────────────────────────────────────────────────────────────────────
  34. ;  1.0 02/14/98 - Scrolling Routines completed                     148 bytes
  35.  
  36. Scroll_U:                       ; [16228 Clock Cycles]
  37.   PUSH HL                       ; Save Registers
  38.   PUSH DE
  39.   PUSH BC
  40.   LD  HL, GRAPH_MEM+12          ; Copy from one row below top
  41.   LD  DE, GRAPH_MEM             ;   to top row
  42.   LD  BC, 756                   ;   756 bytes
  43.   LDIR
  44.   LD  H, D                      ; Fill Blanks
  45.   LD  L, E
  46.   INC E
  47.   LD  (HL), B
  48.   LD  C, 11
  49.   LDIR
  50.   POP BC                        ; Restore Registers
  51.   POP DE
  52.   POP HL
  53.   RET
  54.  
  55. Scroll_D:                       ; [16228 Clock Cycles]
  56.   PUSH HL                       ; Save Registers
  57.   PUSH DE
  58.   PUSH BC
  59.   LD  HL, GRAPH_MEM+755         ; Copy from one row above bottom
  60.   LD  DE, GRAPH_MEM+767         ;   to bottom row
  61.   LD  BC, 756                   ;   756 bytes
  62.   LDDR
  63.   LD  H, D                      ; Fill Blanks
  64.   LD  L, E
  65.   DEC E
  66.   LD  (HL), B
  67.   LD  C, 11
  68.   LDDR
  69.   POP BC                        ; Restore Registers
  70.   POP DE
  71.   POP HL
  72.   RET
  73.  
  74. Scroll_L:                       ; [17024 Clock Cycles]
  75.   PUSH HL                       ; Save Registers
  76.   PUSH BC
  77.   LD  HL, GRAPH_MEM+767         ; Shift starting from bottom row
  78.   LD  B, 64                     ; Do 64 rows
  79. _LLoop:
  80.   SLA (HL)                      ; 96-bit shift left
  81.   DEC HL
  82.   RL  (HL)
  83.   DEC HL
  84.   RL  (HL)
  85.   DEC HL
  86.   RL  (HL)
  87.   DEC HL
  88.   RL  (HL)
  89.   DEC HL
  90.   RL  (HL)
  91.   DEC HL
  92.   RL  (HL)
  93.   DEC HL
  94.   RL  (HL)
  95.   DEC HL
  96.   RL  (HL)
  97.   DEC HL
  98.   RL  (HL)
  99.   DEC HL
  100.   RL  (HL)
  101.   DEC HL
  102.   RL  (HL)
  103.   DEC HL
  104.   DJNZ _LLoop
  105.   POP BC                        ; Restore Registers
  106.   POP HL
  107.   RET
  108.  
  109. Scroll_R:                       ; [17024 Clock Cycles]
  110.   PUSH HL                       ; Save Registers
  111.   PUSH BC
  112.   LD  HL, GRAPH_MEM             ; Shift starting from top row
  113.   LD  B, 64                     ; Do 64 rows
  114. _RLoop:
  115.   SRL (HL)                      ; 96-bit shift right
  116.   INC HL
  117.   RR  (HL)
  118.   INC HL
  119.   RR  (HL)
  120.   INC HL
  121.   RR  (HL)
  122.   INC HL
  123.   RR  (HL)
  124.   INC HL
  125.   RR  (HL)
  126.   INC HL
  127.   RR  (HL)
  128.   INC HL
  129.   RR  (HL)
  130.   INC HL
  131.   RR  (HL)
  132.   INC HL
  133.   RR  (HL)
  134.   INC HL
  135.   RR  (HL)
  136.   INC HL
  137.   RR  (HL)
  138.   INC HL
  139.   DJNZ _RLoop
  140.   POP BC                        ; Restore Registers
  141.   POP HL
  142.   RET
  143.