From d15915ef1448bb8c5947f455824cb4a7946121fe Mon Sep 17 00:00:00 2001 From: ISSOtm Date: Mon, 3 Feb 2020 15:36:38 +0100 Subject: [PATCH] Simplify `bankrangecheck` --- src/asm/asmy.y | 35 +++++------------------------------ 1 file changed, 5 insertions(+), 30 deletions(-) diff --git a/src/asm/asmy.y b/src/asm/asmy.y index c065a8e9..5b5b06b7 100644 --- a/src/asm/asmy.y +++ b/src/asm/asmy.y @@ -41,38 +41,13 @@ int32_t nPCOffset; static void bankrangecheck(char *name, uint32_t secttype, int32_t org, int32_t bank) { - int32_t minbank = 0, maxbank = 0; - char *stype = NULL; - - switch (secttype) { - case SECTTYPE_ROMX: - stype = "ROMX"; - minbank = BANK_MIN_ROMX; - maxbank = BANK_MAX_ROMX; - break; - case SECTTYPE_SRAM: - stype = "SRAM"; - minbank = BANK_MIN_SRAM; - maxbank = BANK_MAX_SRAM; - break; - case SECTTYPE_WRAMX: - stype = "WRAMX"; - minbank = BANK_MIN_WRAMX; - maxbank = BANK_MAX_WRAMX; - break; - case SECTTYPE_VRAM: - stype = "VRAM"; - minbank = BANK_MIN_VRAM; - maxbank = BANK_MAX_VRAM; - break; - default: + if (secttype != SECTTYPE_ROMX && secttype != SECTTYPE_VRAM + && secttype != SECTTYPE_SRAM && secttype != SECTTYPE_WRAMX) yyerror("BANK only allowed for ROMX, WRAMX, SRAM, or VRAM sections"); - } - - if (stype && (bank < minbank || bank > maxbank)) { + else if (bank < bankranges[secttype][0] || bank > bankranges[secttype][1]) yyerror("%s bank value $%x out of range ($%x to $%x)", - stype, bank, minbank, maxbank); - } + typeNames[secttype], bank, bankranges[secttype][0], + bankranges[secttype][1]); out_NewAbsSection(name, secttype, org, bank); }