gbdk-2020 | GameBoy Development Kit |
| download: https://git.y1.nz/archives/gbdk.tar.gz | |
| README | Files | Log | Refs | LICENSE |
commit 48d8b5207b5784169a80c21cfef0cceda321e8c8 parent 7fe623f1283bd6c63c937df3a5679ef92d3a6c22 Author: Toxa <untoxa@mail.ru> Date: Tue, 2 Dec 2025 11:40:15 +0300 SMS/GG/MSX: Unify banked call functions file names, put out legacy ___sdcc_bcall trampoline which saves a few bytes Diffstat:
16 files changed, 289 insertions(+), 255 deletions(-)
diff --git a/gbdk-lib/libc/targets/z80/gg/Makefile b/gbdk-lib/libc/targets/z80/gg/Makefile @@ -33,7 +33,7 @@ ASSRC = set_interrupts.s \ rle_decompress.s \ zx0_decompress.s \ heap.s \ - __sdcc_bcall.s \ + ___sdcc_bcall.s ___sdcc_bcall_abc.s ___sdcc_bcall_ehl.s \ crt0.s CRT0 = crt0.s diff --git a/gbdk-lib/libc/targets/z80/gg/___sdcc_bcall.s b/gbdk-lib/libc/targets/z80/gg/___sdcc_bcall.s @@ -0,0 +1,25 @@ + .include "global.s" + + .area _CODE + + .globl ___sdcc_bcall + .globl ___sdcc_bcall_abc +; +; trampoline to call banked functions +; used when legacy banking is enabled only +; Usage: +; call ___sdcc_bcall +; .dw <function> +; .dw <function_bank> +; +___sdcc_bcall:: + ex (sp), hl + ld c, (hl) + inc hl + ld b, (hl) + inc hl + ld a, (hl) + inc hl + inc hl + ex (sp), hl + jp ___sdcc_bcall_abc diff --git a/gbdk-lib/libc/targets/z80/gg/___sdcc_bcall_abc.s b/gbdk-lib/libc/targets/z80/gg/___sdcc_bcall_abc.s @@ -0,0 +1,34 @@ + .include "global.s" + + .area _CODE + + .globl ___sdcc_bcall_abc + +; +; trampoline to call banked functions with __z88dk_fastcall calling convention +; Usage: +; ld a, #<function_bank> +; ld bc, #<function> +; call ___sdcc_bcall_abc +; +___sdcc_bcall_abc:: + push hl + ld l, a + ld a, (#.MAP_FRAME1) + ld h, a + ld a, l + ld (#.MAP_FRAME1), a + ex (sp), hl + inc sp + call ___sdcc_bjump_abc + dec sp + pop bc + ld c, a + ld a, b + ld (#.MAP_FRAME1), a + ld a, c + ret +; +___sdcc_bjump_abc: + push bc + ret diff --git a/gbdk-lib/libc/targets/z80/gg/___sdcc_bcall_ehl.s b/gbdk-lib/libc/targets/z80/gg/___sdcc_bcall_ehl.s @@ -0,0 +1,27 @@ + .include "global.s" + + .area _CODE + + .globl ___sdcc_bcall_ehl + +; +; default trampoline to call banked functions +; Usage: +; ld e, #<function_bank> +; ld hl, #<function> +; call ___sdcc_bcall_ehl +; +___sdcc_bcall_ehl:: + ld a, (#.MAP_FRAME1) + push af + inc sp + ld a, e + ld (#.MAP_FRAME1), a + CALL_HL + dec sp + pop bc + ld c, a + ld a, b + ld (#.MAP_FRAME1), a + ld a, c + ret diff --git a/gbdk-lib/libc/targets/z80/gg/__sdcc_bcall.s b/gbdk-lib/libc/targets/z80/gg/__sdcc_bcall.s @@ -1,74 +0,0 @@ - .include "global.s" - - .area _CODE - - .globl ___sdcc_bcall - .globl ___sdcc_bcall_abc - .globl ___sdcc_bcall_ehl -; -; trampoline to call banked functions -; used when legacy banking is enabled only -; Usage: -; call ___sdcc_bcall -; .dw <function> -; .dw <function_bank> -; -___sdcc_bcall:: - ex (sp), hl - ld c, (hl) - inc hl - ld b, (hl) - inc hl - ld a, (hl) - inc hl - inc hl - ex (sp), hl -; -; trampoline to call banked functions with __z88dk_fastcall calling convention -; Usage: -; ld a, #<function_bank> -; ld bc, #<function> -; call ___sdcc_bcall_abc -; -___sdcc_bcall_abc:: - push hl - ld l, a - ld a, (#.MAP_FRAME1) - ld h, a - ld a, l - ld (#.MAP_FRAME1), a - ex (sp), hl - inc sp - call ___sdcc_bjump_abc - dec sp - pop bc - ld c, a - ld a, b - ld (#.MAP_FRAME1), a - ld a, c - ret -; -___sdcc_bjump_abc: - push bc - ret -; -; default trampoline to call banked functions -; Usage: -; ld e, #<function_bank> -; ld hl, #<function> -; call ___sdcc_bcall_ehl -; -___sdcc_bcall_ehl:: - ld a, (#.MAP_FRAME1) - push af - inc sp - ld a, e - ld (#.MAP_FRAME1), a - CALL_HL - dec sp - pop bc - ld c, a - ld a, b - ld (#.MAP_FRAME1), a - ld a, c - ret diff --git a/gbdk-lib/libc/targets/z80/msxdos/Makefile b/gbdk-lib/libc/targets/z80/msxdos/Makefile @@ -27,7 +27,7 @@ ASSRC = set_interrupts.s \ rle_decompress.s \ zx0_decompress.s \ heap.s \ - __sdcc_bcall.s __sdcc_bcall_abc.s \ + ___sdcc_bcall.s ___sdcc_bcall_abc.s ___sdcc_bcall_ehl.s \ crt0.s CRT0 = crt0.s diff --git a/gbdk-lib/libc/targets/z80/msxdos/___sdcc_bcall.s b/gbdk-lib/libc/targets/z80/msxdos/___sdcc_bcall.s @@ -0,0 +1,26 @@ + .include "global.s" + + .area _CODE + + .globl ___sdcc_bcall + .globl ___sdcc_bcall_abc + +; +; trampoline to call banked functions +; used when legacy banking is enabled only +; Usage: +; call ___sdcc_bcall +; .dw <function> +; .dw <function_bank> +; +___sdcc_bcall:: + ex (sp), hl + ld c, (hl) + inc hl + ld b, (hl) + inc hl + ld a, (hl) + inc hl + inc hl + ex (sp), hl + jp ___sdcc_bcall_abc diff --git a/gbdk-lib/libc/targets/z80/msxdos/___sdcc_bcall_abc.s b/gbdk-lib/libc/targets/z80/msxdos/___sdcc_bcall_abc.s @@ -0,0 +1,43 @@ + .include "global.s" + + .area _CODE + + .globl ___sdcc_bcall_abc + .globl .mapper_page_set + +; +; trampoline to call banked functions with __z88dk_fastcall calling convention +; Usage: +; ld a, #<function_bank> +; ld bc, #<function> +; call ___sdcc_bcall_abc +; +___sdcc_bcall_abc:: + push hl + ld l, a + ld a, (__current_bank) + ld h, #>__banks_remap_table + ld l, (hl) + ld h, a + call .mapper_page_set + ex (sp), hl + + inc sp + call ___sdcc_bjump_abc + dec sp + + ex (sp), hl + ld c, a + ld a, h + ld (__current_bank), a + ld h, #>__banks_remap_table + ld l, a + ld a, (hl) + call .mapper_page_set + ld a, c + pop hl + ret +; +___sdcc_bjump_abc: + push bc + ret diff --git a/gbdk-lib/libc/targets/z80/msxdos/___sdcc_bcall_ehl.s b/gbdk-lib/libc/targets/z80/msxdos/___sdcc_bcall_ehl.s @@ -0,0 +1,45 @@ + .include "global.s" + + .area _CODE + + .globl ___sdcc_bcall_ehl + .globl .mapper_page_set + +; +; default trampoline to call banked functions +; Usage: +; ld e, #<function_bank> +; ld hl, #<function> +; call ___sdcc_bcall_ehl +; +___sdcc_bcall_ehl:: + push hl + ld h, #>__banks_remap_table + ld l, e ; e == new bank + + ld a, (__current_bank) + ld l, (hl) ; l == segment + ld h, a ; h == old bank + + ld a, e + ld (__current_bank), a ; new bank to __current_bank + + ld a, l ; set segment + call .mapper_page_set + ex (sp), hl ; old bank is left on stack + inc sp + + CALL_HL + dec sp + + ex (sp), hl + ld c, a + ld a, h + ld (__current_bank), a + ld h, #>__banks_remap_table + ld l, a + ld a, (hl) + call .mapper_page_set + ld a, c + pop hl + ret diff --git a/gbdk-lib/libc/targets/z80/msxdos/__sdcc_bcall.s b/gbdk-lib/libc/targets/z80/msxdos/__sdcc_bcall.s @@ -1,43 +0,0 @@ - .include "global.s" - - .area _CODE - - .globl ___sdcc_bcall_ehl -; -; default trampoline to call banked functions -; Usage: -; ld e, #<function_bank> -; ld hl, #<function> -; call ___sdcc_bcall_ehl -; -___sdcc_bcall_ehl:: - push hl - ld h, #>__banks_remap_table - ld l, e ; e == new bank - - ld a, (__current_bank) - ld l, (hl) ; l == segment - ld h, a ; h == old bank - - ld a, e - ld (__current_bank), a ; new bank to __current_bank - - ld a, l ; set segment - call .mapper_page_set - ex (sp), hl ; old bank is left on stack - inc sp - - CALL_HL - dec sp - - ex (sp), hl - ld c, a - ld a, h - ld (__current_bank), a - ld h, #>__banks_remap_table - ld l, a - ld a, (hl) - call .mapper_page_set - ld a, c - pop hl - ret diff --git a/gbdk-lib/libc/targets/z80/msxdos/__sdcc_bcall_abc.s b/gbdk-lib/libc/targets/z80/msxdos/__sdcc_bcall_abc.s @@ -1,61 +0,0 @@ - .include "global.s" - - .area _CODE - - .globl ___sdcc_bcall - .globl ___sdcc_bcall_abc - -; -; trampoline to call banked functions -; used when legacy banking is enabled only -; Usage: -; call ___sdcc_bcall -; .dw <function> -; .dw <function_bank> -; -___sdcc_bcall:: - ex (sp), hl - ld c, (hl) - inc hl - ld b, (hl) - inc hl - ld a, (hl) - inc hl - inc hl - ex (sp), hl -; -; trampoline to call banked functions with __z88dk_fastcall calling convention -; Usage: -; ld a, #<function_bank> -; ld bc, #<function> -; call ___sdcc_bcall_abc -; -___sdcc_bcall_abc:: - push hl - ld l, a - ld a, (__current_bank) - ld h, #>__banks_remap_table - ld l, (hl) - ld h, a - call .mapper_page_set - ex (sp), hl - - inc sp - call ___sdcc_bjump_abc - dec sp - - ex (sp), hl - ld c, a - ld a, h - ld (__current_bank), a - ld h, #>__banks_remap_table - ld l, a - ld a, (hl) - call .mapper_page_set - ld a, c - pop hl - ret -; -___sdcc_bjump_abc: - push bc - ret diff --git a/gbdk-lib/libc/targets/z80/sms/Makefile b/gbdk-lib/libc/targets/z80/sms/Makefile @@ -33,7 +33,7 @@ ASSRC = set_interrupts.s \ rle_decompress.s \ zx0_decompress.s \ heap.s \ - __sdcc_bcall.s \ + ___sdcc_bcall.s ___sdcc_bcall_abc.s ___sdcc_bcall_ehl.s \ crt0.s CRT0 = crt0.s diff --git a/gbdk-lib/libc/targets/z80/sms/___sdcc_bcall.s b/gbdk-lib/libc/targets/z80/sms/___sdcc_bcall.s @@ -0,0 +1,25 @@ + .include "global.s" + + .area _CODE + + .globl ___sdcc_bcall + .globl ___sdcc_bcall_abc +; +; trampoline to call banked functions +; used when legacy banking is enabled only +; Usage: +; call ___sdcc_bcall +; .dw <function> +; .dw <function_bank> +; +___sdcc_bcall:: + ex (sp), hl + ld c, (hl) + inc hl + ld b, (hl) + inc hl + ld a, (hl) + inc hl + inc hl + ex (sp), hl + jp ___sdcc_bcall_abc diff --git a/gbdk-lib/libc/targets/z80/sms/___sdcc_bcall_abc.s b/gbdk-lib/libc/targets/z80/sms/___sdcc_bcall_abc.s @@ -0,0 +1,34 @@ + .include "global.s" + + .area _CODE + + .globl ___sdcc_bcall_abc + +; +; trampoline to call banked functions with __z88dk_fastcall calling convention +; Usage: +; ld a, #<function_bank> +; ld bc, #<function> +; call ___sdcc_bcall_abc +; +___sdcc_bcall_abc:: + push hl + ld l, a + ld a, (#.MAP_FRAME1) + ld h, a + ld a, l + ld (#.MAP_FRAME1), a + ex (sp), hl + inc sp + call ___sdcc_bjump_abc + dec sp + pop bc + ld c, a + ld a, b + ld (#.MAP_FRAME1), a + ld a, c + ret +; +___sdcc_bjump_abc: + push bc + ret diff --git a/gbdk-lib/libc/targets/z80/sms/___sdcc_bcall_ehl.s b/gbdk-lib/libc/targets/z80/sms/___sdcc_bcall_ehl.s @@ -0,0 +1,27 @@ + .include "global.s" + + .area _CODE + + .globl ___sdcc_bcall_ehl + +; +; default trampoline to call banked functions +; Usage: +; ld e, #<function_bank> +; ld hl, #<function> +; call ___sdcc_bcall_ehl +; +___sdcc_bcall_ehl:: + ld a, (#.MAP_FRAME1) + push af + inc sp + ld a, e + ld (#.MAP_FRAME1), a + CALL_HL + dec sp + pop bc + ld c, a + ld a, b + ld (#.MAP_FRAME1), a + ld a, c + ret diff --git a/gbdk-lib/libc/targets/z80/sms/__sdcc_bcall.s b/gbdk-lib/libc/targets/z80/sms/__sdcc_bcall.s @@ -1,74 +0,0 @@ - .include "global.s" - - .area _CODE - - .globl ___sdcc_bcall - .globl ___sdcc_bcall_abc - .globl ___sdcc_bcall_ehl -; -; trampoline to call banked functions -; used when legacy banking is enabled only -; Usage: -; call ___sdcc_bcall -; .dw <function> -; .dw <function_bank> -; -___sdcc_bcall:: - ex (sp), hl - ld c, (hl) - inc hl - ld b, (hl) - inc hl - ld a, (hl) - inc hl - inc hl - ex (sp), hl -; -; trampoline to call banked functions with __z88dk_fastcall calling convention -; Usage: -; ld a, #<function_bank> -; ld bc, #<function> -; call ___sdcc_bcall_abc -; -___sdcc_bcall_abc:: - push hl - ld l, a - ld a, (#.MAP_FRAME1) - ld h, a - ld a, l - ld (#.MAP_FRAME1), a - ex (sp), hl - inc sp - call ___sdcc_bjump_abc - dec sp - pop bc - ld c, a - ld a, b - ld (#.MAP_FRAME1), a - ld a, c - ret -; -___sdcc_bjump_abc: - push bc - ret -; -; default trampoline to call banked functions -; Usage: -; ld e, #<function_bank> -; ld hl, #<function> -; call ___sdcc_bcall_ehl -; -___sdcc_bcall_ehl:: - ld a, (#.MAP_FRAME1) - push af - inc sp - ld a, e - ld (#.MAP_FRAME1), a - CALL_HL - dec sp - pop bc - ld c, a - ld a, b - ld (#.MAP_FRAME1), a - ld a, c - 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.