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/msxdos/___sdcc_bcall_ehl.s

      1         .include "global.s"
      2 
      3         .area   _CODE
      4 
      5         .globl ___sdcc_bcall_ehl
      6 	.globl .mapper_page_set
      7 
      8 ;
      9 ; default trampoline to call banked functions
     10 ; Usage:
     11 ;  ld   e, #<function_bank>
     12 ;  ld   hl, #<function>
     13 ;  call ___sdcc_bcall_ehl
     14 ;
     15 ___sdcc_bcall_ehl::
     16         push hl
     17         ld h, #>__banks_remap_table
     18         ld l, e                 ; e == new bank
     19 
     20         ld a, (__current_bank)
     21         ld l, (hl)              ; l == segment
     22         ld h, a                 ; h == old bank
     23 
     24         ld a, e
     25         ld (__current_bank), a  ; new bank to __current_bank 
     26 
     27         ld a, l                 ; set segment                 
     28         call .mapper_page_set
     29         ex (sp), hl             ; old bank is left on stack
     30         inc sp
     31 
     32         CALL_HL
     33         dec sp
     34 
     35         ex (sp), hl
     36         ld c, a
     37         ld a, h
     38         ld (__current_bank), a
     39         ld h, #>__banks_remap_table
     40         ld l, a
     41         ld a, (hl)
     42         call .mapper_page_set
     43         ld a, c
     44         pop hl
     45         ret

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