home *** CD-ROM | disk | FTP | other *** search
/ ticalc.org / ticalc_org_rev_b.iso / archives / 85 / asm / source / routines / soft.asm < prev   
Encoding:
Assembly Source File  |  2001-07-01  |  2.0 KB  |  136 lines

  1. ;Soft Scroll Routine by Philip Graf
  2. #include TI-85.H
  3. .org 0
  4.  
  5. .db "Soft Scroll by PhG",0
  6.  
  7. keyloop:        
  8.     ld a,%1111110
  9.     out (1),a
  10.     in a,(1)
  11.     bit 0,a
  12.     push af
  13.     jr z,scrolldown
  14. kd:     pop af
  15.     bit 1,a
  16.     push af
  17.     JUMP_Z(scrolleft)
  18. kl:     pop af
  19.     bit 2,a
  20.     push af
  21.     JUMP_Z(scrollright)
  22. kr:     pop af
  23.     bit 3,a
  24.     jr z,scrollup
  25. ku:     ld a,%111111   
  26.     out (1),a
  27.     in a,(1)
  28.     bit 5,a
  29.     CALL_Z(invert);
  30.     bit 6,a
  31.     jr nz,keyloop
  32. quit:   call GET_KEY
  33.     ret
  34.  
  35. ;copygraph:                     ;copys videomem to buffer
  36. ;        ld hl,VIDEO_MEM
  37. ;        ld de,GRAPH_MEM
  38. ;        ld bc,1024
  39. ;        ldir
  40. ;        ret
  41.  
  42. scrolldown:
  43.     ld hl,VIDEO_MEM+1008
  44.     ld de,GRAPH_MEM
  45.     ld bc,16
  46.     ldir
  47.     ld hl,VIDEO_MEM+1007
  48.     ld de,VIDEO_MEM+1023
  49.     ld bc,1008
  50.     lddr
  51.     ld hl,GRAPH_MEM
  52.     ld de,VIDEO_MEM
  53.     ld bc,16
  54.     ldir
  55.     jr kd
  56.  
  57. scrollup:
  58.     ld hl,VIDEO_MEM
  59.     ld de,GRAPH_MEM
  60.     ld bc,16
  61.     ldir
  62.     ld hl,VIDEO_MEM+16
  63.     ld de,VIDEO_MEM
  64.     ld bc,1008
  65.     ldir
  66.     ld hl,GRAPH_MEM
  67.     ld de,VIDEO_MEM+1008
  68.     ld bc,16
  69.     ldir
  70.     jr ku
  71.  
  72. scrolleft:                      ;if you know a faster routine let me know...
  73.     ld hl,VIDEO_MEM
  74.     ld b,64
  75. sl4:    push bc
  76.     ld b,15
  77.     bit 7,(hl)
  78.     push af
  79. sl2:    sla (hl)
  80.     inc hl
  81.     bit 7,(hl)
  82.     jr z,sl1
  83.     dec hl
  84.     set 0,(hl)
  85.     inc hl
  86. sl1:    djnz sl2        
  87.     sla (hl)
  88.     pop af
  89.     jr z,sl3
  90.     set 0,(hl)
  91. sl3:    inc hl
  92.     pop bc
  93.     djnz sl4
  94.     JUMP_(kl)
  95.  
  96. scrollright:
  97.     ld hl,VIDEO_MEM+1023
  98.     ld b,64
  99. sr4:    push bc
  100.     ld b,15
  101.     bit 0,(hl)
  102.     push af
  103. sr2:    srl (hl)
  104.     dec hl
  105.     bit 0,(hl)
  106.     jr z,sr1
  107.     inc hl
  108.     set 7,(hl)
  109.     dec hl
  110. sr1:    djnz sr2        
  111.     srl (hl)
  112.     pop af
  113.     jr z,sr3
  114.     set 7,(hl)
  115. sr3:    dec hl
  116.     pop bc
  117.     djnz sr4
  118.     JUMP_(kr)
  119.  
  120. invert:                 ;invert screen
  121.     push af
  122.     ld hl,$FC00     ;video memory
  123.     ld bc,1024      ;#of bytes to invert
  124. loop:   ld a,(hl)
  125.     xor $FF         ;invert byte
  126.     ld (hl),a
  127.     inc hl          ;and the next byte..
  128.     dec bc
  129.     ld a,b          ;#of bytes to invert = 0 ?
  130.     or c
  131.     jr nz,loop
  132.     pop af
  133.     ret
  134.  
  135. .END
  136.