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.