git.y1.nz

gbdk-2020

GameBoy Development Kit
download: https://git.y1.nz/archives/gbdk.tar.gz
README | Files | Log | Refs | LICENSE

gbdk-lib/libc/targets/z80/timer.s

      1         .include        "global.s"
      2 
      3         .title  "Timer dispatcher"
      4         .module TIMDispatcher
      5 
      6         .globl  .add_int, .remove_int
      7     .globl  .TIM_DISPATCHER
      8 
      9         .area   _HOME
     10 
     11 LowPri_TIM_Dispatcher:
     12         ld hl, #_TIMA_REG
     13         inc (hl)
     14         ret nz
     15         ei
     16         jp .TIM_continue
     17 TIM_Dispatcher:
     18         ld hl, #_TIMA_REG
     19         inc (hl)
     20         ret nz
     21 .TIM_continue:
     22         ld a, (_TMA_REG)
     23         ld (hl), a
     24 
     25         .irp idx,.TIM_HANDLER0,.TIM_HANDLER1,.TIM_HANDLER2
     26                 ld hl, (idx)
     27                 ld a, h
     28                 or l
     29                 jp z, 1$
     30                 CALL_HL
     31         .endm
     32 1$:
     33         ret
     34 
     35 _remove_TIM::
     36         ld b, h
     37         ld c, l
     38         ld hl, #.TIM_HANDLER0
     39         jp .remove_int
     40 
     41 _add_low_priority_TIM::
     42         ld b, h
     43         ld c, l
     44         ld hl, #LowPri_TIM_Dispatcher
     45         jr .add_TIM
     46 _add_TIM::
     47         ld b, h
     48         ld c, l
     49         ld hl, #TIM_Dispatcher
     50 .add_TIM:
     51         ld (.TIM_DISPATCHER), hl
     52         ld hl, #.TIM_HANDLER0
     53         jp .add_int
     54 
     55         .area   _DATA
     56 
     57 _TAC_REG::
     58         .ds     0x01
     59 
     60         .area   _INITIALIZED
     61 
     62 _TIMA_REG::
     63         .ds     0x01
     64 _TMA_REG::
     65         .ds     0x01
     66 .TIM_HANDLER0:
     67         .ds     0x02
     68 .TIM_HANDLER1:
     69         .ds     0x02
     70 .TIM_HANDLER2:
     71         .ds     0x02
     72         .ds     0x02
     73 
     74         .area   _INITIALIZER
     75 
     76         .db     0xff
     77         .db     0xff
     78         .dw     0x0000
     79         .dw     0x0000
     80         .dw     0x0000
     81         .dw     0x0000

This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.