X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fz80%2Fmappings.i;h=029258585f2905184d5e19a31fa43082c80c30c6;hb=c2f2abbf9d58d7f0def3509779547f50ade2e2ab;hp=8a507fddb200427033ccf7cd20426dd7a18e7643;hpb=7e85609884eda439265cfc7f140fe9e8303892d5;p=fw%2Fsdcc diff --git a/src/z80/mappings.i b/src/z80/mappings.i index 8a507fdd..02925858 100644 --- a/src/z80/mappings.i +++ b/src/z80/mappings.i @@ -3,9 +3,11 @@ static const ASM_MAPPING _asxxxx_gb_mapping[] = { { "area", ".area _%s" }, { "areacode", ".area _%s" }, { "areadata", ".area _%s" }, + { "areahome", ".area _%s" }, { "functionlabeldef", "%s:" }, { "*hl", "(hl)" }, { "di", "di" }, + { "ei", "ei" }, { "ldahli", "ld a,(hl+)" }, { "ldahlsp", "lda hl,%d(sp)" }, { "ldaspsp", "lda sp,%d(sp)" }, @@ -14,18 +16,42 @@ static const ASM_MAPPING _asxxxx_gb_mapping[] = { { "enter", "" }, { "enterx", "lda sp,-%d(sp)" }, + { "enterxl", + "ld hl,#-%d\n" + "\tadd\thl,sp\n" + "\tld\tsp,hl" + }, { "leave", "" }, { "leavex", "lda sp,%d(sp)" }, + { "leavexl", + "ld hl,#%d\n" + "\tadd\thl,sp\n" + "\tld\tsp,hl" + }, { "pusha", "push af\n" "\tpush bc\n" "\tpush de\n" "\tpush hl" }, + { "popa", + "pop hl\n" + "\tpop de\n" + "\tpop bc\n" + "\tpop af" + }, { "adjustsp", "lda sp,-%d(sp)" }, { "fileprelude", "" }, + { "profileenter", + "ld a,#3\n" + "\trst\t0x08" + }, + { "profileexit", + "ld a,#4\n" + "\trst\t0x08" + }, { NULL, NULL } }; @@ -34,10 +60,12 @@ static const ASM_MAPPING _asxxxx_z80_mapping[] = { { "area", ".area _%s" }, { "areacode", ".area _%s" }, { "areadata", ".area _%s" }, + { "areahome", ".area _%s" }, { "*ixx", "%d(ix)" }, { "*iyx", "%d(iy)" }, { "*hl", "(hl)" }, { "di", "di" }, + { "ei", "ei" }, { "ldahli", "ld a,(hl)\n" "\tinc\thl" }, @@ -60,26 +88,44 @@ static const ASM_MAPPING _asxxxx_z80_mapping[] = { "\tadd\tix,sp\n" "\tld\thl,#-%d\n" "\tadd\thl,sp\n" - "\tld\tsp,hl" }, + "\tld\tsp,hl" + }, { "leave", - "pop\tix\n" + "pop\tix" }, { "leavex", "ld sp,ix\n" - "\tpop\tix\n" + "\tpop\tix" }, { "pusha", "push af\n" "\tpush\tbc\n" "\tpush\tde\n" - "\tpush\thl" + "\tpush\thl\n" + "\tpush\tiy" + }, + { "popa", + "pop iy\n" + "\tpop\thl\n" + "\tpop\tde\n" + "\tpop\tbc\n" + "\tpop\taf" }, { "adjustsp", "lda sp,-%d(sp)" }, + { "profileenter", + "ld a,#3\n" + "\trst\t0x08" + }, + { "profileexit", + "ld a,#4\n" + "\trst\t0x08" + }, { NULL, NULL } }; static const ASM_MAPPING _rgbds_mapping[] = { { "global", "GLOBAL %s" }, + { "extern", "GLOBAL %s" }, { "slabeldef", "%s:" }, { "labeldef", "%s:" }, { "tlabeldef", ".l%05d:" }, @@ -89,8 +135,7 @@ static const ASM_MAPPING _rgbds_mapping[] = { "\t; We have to define these here as sdcc dosnt make them global by default\n" "\tGLOBAL __mulschar\n" "\tGLOBAL __muluchar\n" - "\tGLOBAL __mulsint\n" - "\tGLOBAL __muluint\n" + "\tGLOBAL __mulint\n" "\tGLOBAL __divschar\n" "\tGLOBAL __divuchar\n" "\tGLOBAL __divsint\n" @@ -99,7 +144,7 @@ static const ASM_MAPPING _rgbds_mapping[] = { "\tGLOBAL __moduchar\n" "\tGLOBAL __modsint\n" "\tGLOBAL __moduint\n" - "\tGLOBAL __mulslong\n" + "\tGLOBAL __mullong\n" "\tGLOBAL __modslong\n" "\tGLOBAL __divslong\n" "\tGLOBAL banked_call\n" @@ -113,9 +158,10 @@ static const ASM_MAPPING _rgbds_mapping[] = { { "functionlabeldef", "%s:" }, { "zero", "$00" }, { "one", "$01" }, - { "area", "SECTION \"%s\",%C" }, - { "areacode", "SECTION \"CODE\",%C" }, - { "areadata", "SECTION \"DATA\",BSS" }, + { "area", "SECTION \"%s\",CODE" }, + { "areadata", "SECTION \"%F_%s\",BSS" }, + { "areacode", "SECTION \"%F_CODE\",%s" }, + { "areahome", "SECTION \"%F_HOME\",HOME" }, { "ascii", "DB \"%s\"" }, { "ds", "DS %d" }, { "db", "DB" }, @@ -142,7 +188,14 @@ static const ASM_MAPPING _rgbds_gb_mapping[] = { "\tpush de\n" "\tpush hl" }, + { "popa", + "pop hl\n" + "\tpop de\n" + "\tpop bc\n" + "\tpop af" + }, { "di", "di" }, + { "ei", "ei" }, { "adjustsp", "add sp,-%d" }, { "enter", "" }, { "enterx", "add sp,-%d" @@ -162,6 +215,7 @@ static const ASM_MAPPING _rgbds_gb_mapping[] = { static const ASM_MAPPING _isas_mapping[] = { { "global", "GLOBAL %s" }, + { "extern", "GLOBAL %s" }, { "slabeldef", "%s:" }, { "labeldef", "%s:" }, { "tlabeldef", "?l%05d:" }, @@ -173,11 +227,10 @@ static const ASM_MAPPING _isas_mapping[] = { "\tCAPSOFF ; Case sensitive\n" "\tISDMG ; Gameboy mode\n" "_CODE\tGROUP\n" - "\t; We have to define these here as sdcc dosnt make them global by default\n" + "\t; We have to define these here as sdcc doesnt make them global by default\n" "\tGLOBAL __mulschar\n" "\tGLOBAL __muluchar\n" - "\tGLOBAL __mulsint\n" - "\tGLOBAL __muluint\n" + "\tGLOBAL __mulint\n" "\tGLOBAL __divschar\n" "\tGLOBAL __divuchar\n" "\tGLOBAL __divsint\n" @@ -200,6 +253,7 @@ static const ASM_MAPPING _isas_mapping[] = { { "area", "%s\tGROUP" }, { "areacode", "_CODE\tGROUP" }, { "areadata", "_DATA\tGROUP" }, + { "areahome", "_CODE\tGROUP" }, { "ascii", "DB \"%s\"" }, { "ds", "DS %d" }, { "db", "DB" }, @@ -226,7 +280,14 @@ static const ASM_MAPPING _isas_gb_mapping[] = { "\tpush de\n" "\tpush hl" }, + { "popa", + "pop hl\n" + "\tpop de\n" + "\tpop bc\n" + "\tpop af" + }, { "di", "di" }, + { "ei", "ei" }, { "adjustsp", "add sp,-%d" }, { "enter", "" }, { "enterx", "add sp,-%d" @@ -243,6 +304,125 @@ static const ASM_MAPPING _isas_gb_mapping[] = { { NULL, NULL } }; +static const ASM_MAPPING _z80asm_mapping[] = { + { "global", "XDEF %s" }, + { "extern", "XREF %s" }, + { "slabeldef", "\n.%s" }, + { "labeldef", "\n.%s" }, + { "tlabeldef", "\n.l%N%05d" }, + { "tlabel", "l%N%05d" }, + { "fileprelude", + "; Generated using the z80asm/z88 tokens.\n" + "\tXREF __muluchar_rrx_s\n" + "\tXREF __mulschar_rrx_s\n" + "\tXREF __mulint_rrx_s\n" + "\tXREF __mullong_rrx_s\n" + "\tXREF __divuchar_rrx_s\n" + "\tXREF __divschar_rrx_s\n" + "\tXREF __divsint_rrx_s\n" + "\tXREF __divuint_rrx_s\n" + "\tXREF __divulong_rrx_s\n" + "\tXREF __divslong_rrx_s\n" + "\tXREF __rrulong_rrx_s\n" + "\tXREF __rrslong_rrx_s\n" + "\tXREF __rlulong_rrx_s\n" + "\tXREF __rlslong_rrx_s\n" + }, + { "functionheader", + "; ---------------------------------\n" + "; Function %s\n" + "; ---------------------------------" + }, + { "functionlabeldef", ".%s" }, + { "zero", "$00" }, + { "one", "$01" }, + { "ascii", "DEFM \"%s\"" }, + { "ds", "DEFS %d" }, + { "db", "DEFB" }, + { "dbs", "DEFB %s" }, + { "dw", "DEFW" }, + { "dws", "DEFB %s" }, + { "immed", "" }, + { "constbyte", "$%02X" }, + { "constword", "$%04X" }, + { "immedword", "$%04X" }, + { "immedbyte", "$%02X" }, + { "hashedstr", "%s" }, + { "lsbimmeds", "%s & $FF" }, + { "msbimmeds", "%s / 256" }, + + { "bankimmeds", "BANK(%s)" }, + { "module", "MODULE %s" }, + { "area", "; Area %s" }, + { "areadata", "; Aread BSS" }, + { "areacode", "; Area CODE" }, + { "areahome", "; Area HOME" }, + { NULL, NULL } +}; + +static const ASM_MAPPING _z80asm_z80_mapping[] = { + { "*ixx", "(ix%+d)" }, + { "*iyx", "(iy%+d)" }, + { "*hl", "(hl)" }, + { "di", "di" }, + { "ei", "ei" }, + { "ldahli", + "ld a,(hl)\n" + "\tinc\thl" }, + { "ldahlsp", + "ld hl,%d\n" + "\tadd\thl,sp" }, + { "ldaspsp", + "ld hl,%d\n" + "\tadd\thl,sp\n" + "\tld\tsp,hl" }, + { "*pair", "(%s)" }, + { "shortjp", "jp" }, + { "enter", + "push\tix\n" + "\tld\tix,0\n" + "\tadd\tix,sp" }, + { "enterx", + "push\tix\n" + "\tld\tix,0\n" + "\tadd\tix,sp\n" + "\tld\thl,-%d\n" + "\tadd\thl,sp\n" + "\tld\tsp,hl" + }, + { "leave", + "pop\tix" + }, + { "leavex", + "ld sp,ix\n" + "\tpop\tix" + }, + { "pusha", + "push af\n" + "\tpush\tbc\n" + "\tpush\tde\n" + "\tpush\thl\n" + "\tpush\tiy" + }, + { "popa", + "pop\tiy\n" + "\tpop\thl\n" + "\tpop\tde\n" + "\tpop\tbc\n" + "\tpop\taf" + }, + { "adjustsp", "lda sp,(sp%+d)" }, + { "profileenter", + "ld a,3\n" + "\trst\t$08" + }, + { "profileexit", + "ld a,4\n" + "\trst\t$08" + }, + { NULL, NULL } +}; + static const ASM_MAPPINGS _isas = { NULL, _isas_mapping @@ -272,3 +452,13 @@ const ASM_MAPPINGS _asxxxx_z80 = { &asm_asxxxx_mapping, _asxxxx_z80_mapping }; + +static const ASM_MAPPINGS _z80asm = { + NULL, + _z80asm_mapping +}; + +const ASM_MAPPINGS _z80asm_z80 = { + &_z80asm, + _z80asm_z80_mapping +};