git.y1.nz

gbdk-2020

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

commit 2d0ad14393038e5177e99a1d4c740dbf6a1f996f
parent 380d0633c8b0c597ed18dc4822f3a9e4a9aa3750
Author: Toxa <untoxa@mail.ru>
Date:   Fri,  3 Dec 2021 23:55:30 +0300

more macro definitions for SDCC features

Diffstat:
Mgbdk-lib/include/asm/types.h4++++
Mgbdk-lib/include/gb/hardware.h2+-
Mgbdk-lib/include/gb/isr.h5+++--
Mgbdk-lib/include/sms/hardware.h36++++++++++++++++++------------------
4 files changed, 26 insertions(+), 21 deletions(-)

diff --git a/gbdk-lib/include/asm/types.h b/gbdk-lib/include/asm/types.h @@ -23,9 +23,13 @@ #ifdef __SDCC #define PRESERVES_REGS(...) __preserves_regs(__VA_ARGS__) #define NAKED __naked +#define SFR __sfr +#define AT(A) __at(A) #else #define PRESERVES_REGS(...) #define NAKED +#define SFR +#define AT(A) #endif #ifndef NONBANKED diff --git a/gbdk-lib/include/gb/hardware.h b/gbdk-lib/include/gb/hardware.h @@ -11,7 +11,7 @@ #define __BYTES extern UBYTE #define __BYTE_REG extern volatile UBYTE -#define __REG extern volatile __sfr +#define __REG extern volatile SFR /** Memoty map */ diff --git a/gbdk-lib/include/gb/isr.h b/gbdk-lib/include/gb/isr.h @@ -10,6 +10,7 @@ #define _ISR_H_INCLUDE_ #include <stdint.h> +#include <types.h> // #define VECTOR_VBL 0x40 // you can not define raw vector for VBlank interrupt #define VECTOR_STAT 0x48 /**< Address for the STAT interrupt vector */ @@ -49,7 +50,7 @@ typedef struct isr_vector_t { @see ISR_NESTED_VECTOR, set_interrupts */ #define ISR_VECTOR(ADDR, FUNC) \ -static const isr_vector_t __at((ADDR)) __ISR_ ## ADDR = {0xc3, (void *)&(FUNC)}; +static const isr_vector_t AT((ADDR)) __ISR_ ## ADDR = {0xc3, (void *)&(FUNC)}; typedef struct isr_nested_vector_t { uint8_t opcode[2]; @@ -67,7 +68,7 @@ typedef struct isr_nested_vector_t { @see ISR_VECTOR */ #define ISR_NESTED_VECTOR(ADDR, FUNC) \ -static const isr_nested_vector_t __at((ADDR)) __ISR_ ## ADDR = {{0xfb, 0xc3}, (void *)&(FUNC)}; +static const isr_nested_vector_t AT((ADDR)) __ISR_ ## ADDR = {{0xfb, 0xc3}, (void *)&(FUNC)}; #endif // _ISR_H_INCLUDE_ diff --git a/gbdk-lib/include/sms/hardware.h b/gbdk-lib/include/sms/hardware.h @@ -10,7 +10,7 @@ #define __BYTES extern UBYTE #define __BYTE_REG extern volatile UBYTE -static volatile __sfr __at(0x3E) MEMORY_CTL; +static volatile SFR AT(0x3E) MEMORY_CTL; #define MEMCTL_JOYON 0b00000000 #define MEMCTL_JOYOFF 0b00000100 @@ -25,18 +25,18 @@ static volatile __sfr __at(0x3E) MEMORY_CTL; #define MEMCTL_EXTON 0b00000000 #define MEMCTL_EXTOFF 0b10000000 -static volatile __sfr __at(0x3F) JOY_CTL; +static volatile SFR AT(0x3F) JOY_CTL; #define JOY_P1_LATCH 0b00000010 #define JOY_P2_LATCH 0b00001000 -static volatile __sfr __at(0x7E) VCOUNTER; -static volatile __sfr __at(0x7F) PSG; -static volatile __sfr __at(0x7F) HCOUNTER; +static volatile SFR AT(0x7E) VCOUNTER; +static volatile SFR AT(0x7F) PSG; +static volatile SFR AT(0x7F) HCOUNTER; -static volatile __sfr __at(0xBE) VDP_DATA; -static volatile __sfr __at(0xBF) VDP_CMD; -static volatile __sfr __at(0xBF) VDP_STATUS; +static volatile SFR AT(0xBE) VDP_DATA; +static volatile SFR AT(0xBF) VDP_CMD; +static volatile SFR AT(0xBF) VDP_STATUS; #define STATF_INT_VBL 0b10000000 #define STATF_9_SPR 0b01000000 @@ -124,7 +124,7 @@ extern UBYTE shadow_VDP_R10; #define R10_INT_OFF 0xFF #define R10_INT_EVERY 0x00 -static volatile __sfr __at(0xDC) JOY_PORT1; +static volatile SFR AT(0xDC) JOY_PORT1; #define JOY_P1_UP 0b00000001 #define JOY_P1_DOWN 0b00000010 @@ -136,7 +136,7 @@ static volatile __sfr __at(0xDC) JOY_PORT1; #define JOY_P2_UP 0b01000000 #define JOY_P2_DOWN 0b10000000 -static volatile __sfr __at(0xDD) JOY_PORT2; +static volatile SFR AT(0xDD) JOY_PORT2; #define JOY_P2_LEFT 0b00000001 #define JOY_P2_RIGHT 0b00000010 @@ -147,11 +147,11 @@ static volatile __sfr __at(0xDD) JOY_PORT2; #define JOY_P1_LIGHT 0b01000000 #define JOY_P2_LIGHT 0b10000000 -static volatile __sfr __at(0xF0) FMADDRESS; -static volatile __sfr __at(0xF1) FMDATA; -static volatile __sfr __at(0xF2) AUDIOCTRL; +static volatile SFR AT(0xF0) FMADDRESS; +static volatile SFR AT(0xF1) FMDATA; +static volatile SFR AT(0xF2) AUDIOCTRL; -static volatile UBYTE __at(0xfffc) RAM_CONTROL; +static volatile UBYTE AT(0xfffc) RAM_CONTROL; #define RAMCTL_BANK 0b00000100 #define RAMCTL_ROM 0b00000000 @@ -159,11 +159,11 @@ static volatile UBYTE __at(0xfffc) RAM_CONTROL; #define RAMCTL_RO 0b00010000 #define RAMCTL_PROT 0b10000000 -static volatile UBYTE __at(0xfff8) GLASSES_3D; +static volatile UBYTE AT(0xfff8) GLASSES_3D; -static volatile UBYTE __at(0xfffd) MAP_FRAME0; -static volatile UBYTE __at(0xfffe) MAP_FRAME1; -static volatile UBYTE __at(0xffff) MAP_FRAME2; +static volatile UBYTE AT(0xfffd) MAP_FRAME0; +static volatile UBYTE AT(0xfffe) MAP_FRAME1; +static volatile UBYTE AT(0xffff) MAP_FRAME2; extern const UBYTE _BIOS;

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