X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fca65%2Fmacpack.c;h=e275693224c81da1964cfc7a978c5e4f707c5f82;hb=64c5165a5b2984d15035dd17d1e953502db25d36;hp=db5c7531f5fe16d317ff2d0066ded82aa53054fd;hpb=46209118b1a77d2e57f28026b1e5916c2c074778;p=cc65 diff --git a/src/ca65/macpack.c b/src/ca65/macpack.c index db5c7531f..e27569322 100644 --- a/src/ca65/macpack.c +++ b/src/ca65/macpack.c @@ -6,10 +6,10 @@ /* */ /* */ /* */ -/* (C) 1998 Ullrich von Bassewitz */ -/* Wacholderweg 14 */ -/* D-70597 Stuttgart */ -/* EMail: uz@musoftware.de */ +/* (C) 1998-2003 Ullrich von Bassewitz */ +/* Römerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ @@ -50,7 +50,9 @@ /* Predefined packages */ -static const char MacGeneric [] = /* Generic macros */ + +/* Generic macros */ +static char MacGeneric[] = ".macro add Arg1, Arg2\n" " clc\n" " .if .paramcount = 2\n" @@ -68,14 +70,13 @@ static const char MacGeneric [] = /* Generic macros */ " .endif\n" ".endmacro\n"; - - -static const char MacLongBranch [] = /* Long branch macros */ +/* Long branch macros */ +static char MacLongBranch[] = ".macro jeq Target\n" " .if .match(Target, 0)\n" " bne *+5\n" " jmp Target\n" - " .elseif .def(Target) .and ((*+2)-(Target) <= 127)\n" + " .elseif .def(Target,local) .and ((*+2)-(Target) <= 127)\n" " beq Target\n" " .else\n" " bne *+5\n" @@ -86,7 +87,7 @@ static const char MacLongBranch [] = /* Long branch macros */ " .if .match(Target, 0)\n" " beq *+5\n" " jmp Target\n" - " .elseif .def(Target) .and ((*+2)-(Target) <= 127)\n" + " .elseif .def(Target,local) .and ((*+2)-(Target) <= 127)\n" " bne Target\n" " .else\n" " beq *+5\n" @@ -97,7 +98,7 @@ static const char MacLongBranch [] = /* Long branch macros */ " .if .match(Target, 0)\n" " bpl *+5\n" " jmp Target\n" - " .elseif .def(Target) .and ((*+2)-(Target) <= 127)\n" + " .elseif .def(Target,local) .and ((*+2)-(Target) <= 127)\n" " bmi Target\n" " .else\n" " bpl *+5\n" @@ -108,7 +109,7 @@ static const char MacLongBranch [] = /* Long branch macros */ " .if .match(Target, 0)\n" " bmi *+5\n" " jmp Target\n" - " .elseif .def(Target) .and ((*+2)-(Target) <= 127)\n" + " .elseif .def(Target,local) .and ((*+2)-(Target) <= 127)\n" " bpl Target\n" " .else\n" " bmi *+5\n" @@ -119,7 +120,7 @@ static const char MacLongBranch [] = /* Long branch macros */ " .if .match(Target, 0)\n" " bcc *+5\n" " jmp Target\n" - " .elseif .def(Target) .and ((*+2)-(Target) <= 127)\n" + " .elseif .def(Target,local) .and ((*+2)-(Target) <= 127)\n" " bcs Target\n" " .else\n" " bcc *+5\n" @@ -130,7 +131,7 @@ static const char MacLongBranch [] = /* Long branch macros */ " .if .match(Target, 0)\n" " bcs *+5\n" " jmp Target\n" - " .elseif .def(Target) .and ((*+2)-(Target) <= 127)\n" + " .elseif .def(Target,local) .and ((*+2)-(Target) <= 127)\n" " bcc Target\n" " .else\n" " bcs *+5\n" @@ -141,7 +142,7 @@ static const char MacLongBranch [] = /* Long branch macros */ " .if .match(Target, 0)\n" " bvc *+5\n" " jmp Target\n" - " .elseif .def(Target) .and ((*+2)-(Target) <= 127)\n" + " .elseif .def(Target,local) .and ((*+2)-(Target) <= 127)\n" " bvs Target\n" " .else\n" " bvc *+5\n" @@ -152,7 +153,7 @@ static const char MacLongBranch [] = /* Long branch macros */ " .if .match(Target, 0)\n" " bvs *+5\n" " jmp Target\n" - " .elseif .def(Target) .and ((*+2)-(Target) <= 127)\n" + " .elseif .def(Target,local) .and ((*+2)-(Target) <= 127)\n" " bvc Target\n" " .else\n" " bvs *+5\n" @@ -160,12 +161,49 @@ static const char MacLongBranch [] = /* Long branch macros */ " .endif\n" ".endmacro\n"; +/* Commodore specific macros */ +static char MacCBM[] = + ".macro scrcode str\n" + " .repeat .strlen(str), i\n" + " .if (.strat(str, i) >= '@' .and .strat(str, i) <= 'z')\n" + " .byte .strat(str, i) - '@'\n" + " .elseif (.strat(str, i) >= 'A' .and .strat(str, i) <= 'Z')\n" + " .byte .strat(str, i) - 'A' + 65\n" + " .elseif (.strat(str, i) = '[')\n" + " .byte 27\n" + " .elseif (.strat(str, i) = ']')\n" + " .byte 29\n" + " .elseif (.strat(str, i) = '^')\n" + " .byte 30\n" + " .elseif (.strat(str, i) = '_')\n" + " .byte 31\n" + " .else\n" + " .byte .strat(str, i)\n" + " .endif\n" + " .endrepeat\n" + ".endmacro\n"; + +/* CPU defines */ +static char MacCPU[] = + "CPU_ISET_6502 = $01\n" + "CPU_ISET_65SC02 = $02\n" + "CPU_ISET_65C02 = $04\n" + "CPU_ISET_65816 = $08\n" + "CPU_ISET_SUNPLUS = $10\n" + "CPU_6502 = $01\n" + "CPU_65SC02 = $03\n" + "CPU_65C02 = $07\n" + "CPU_65816 = $0F\n" + "CPU_SUNPLUS = $10\n"; + /* Table with pointers to the different packages */ -static const char* MacPackages [] = { +static char* MacPackages [] = { MacGeneric, MacLongBranch, + MacCBM, + MacCPU };