diff --git a/src/ca65/condasm.c b/src/ca65/condasm.c index ed170b6d4..8570b355b 100644 --- a/src/ca65/condasm.c +++ b/src/ca65/condasm.c @@ -494,6 +494,16 @@ void DoConditionals (void) CalcOverallIfCond (); break; + case TOK_IFPSWEET16: + D = AllocIf (".IFPSWEET16", 1); + NextTok (); + if (IfCond) { + SetIfCond (D, GetCPU() == CPU_SWEET16); + } + ExpectSep (); + CalcOverallIfCond (); + break; + case TOK_IFPWC02: D = AllocIf (".IFPWC02", 1); NextTok (); diff --git a/src/ca65/pseudo.c b/src/ca65/pseudo.c index 27207c84c..e6e10df2c 100644 --- a/src/ca65/pseudo.c +++ b/src/ca65/pseudo.c @@ -1752,6 +1752,14 @@ static void DoPSC02 (void) +static void DoPSweet16 (void) +/* Switch to Sweet16 CPU */ +{ + SetCPU (CPU_SWEET16); +} + + + static void DoPushCharmap (void) /* Save the current charmap */ { @@ -2191,6 +2199,7 @@ static CtrlDesc CtrlCmdTab [] = { { ccKeepToken, DoConditionals }, /* .IFPDTV */ { ccKeepToken, DoConditionals }, /* .IFPM740 */ { ccKeepToken, DoConditionals }, /* .IFPSC02 */ + { ccKeepToken, DoConditionals }, /* .IFPSWEET16 */ { ccKeepToken, DoConditionals }, /* .IFPWC02 */ { ccKeepToken, DoConditionals }, /* .IFREF */ { ccNone, DoImport }, /* .IMPORT */ @@ -2236,6 +2245,7 @@ static CtrlDesc CtrlCmdTab [] = { { ccNone, DoPopSeg }, /* .POPSEG */ { ccNone, DoProc }, /* .PROC */ { ccNone, DoPSC02 }, /* .PSC02 */ + { ccNone, DoPSweet16 }, /* .PSWEET16 */ { ccNone, DoPushCharmap }, /* .PUSHCHARMAP */ { ccNone, DoPushCPU }, /* .PUSHCPU */ { ccNone, DoPushSeg }, /* .PUSHSEG */ diff --git a/src/ca65/scanner.c b/src/ca65/scanner.c index 68ff71cc7..f3892d32e 100644 --- a/src/ca65/scanner.c +++ b/src/ca65/scanner.c @@ -231,6 +231,7 @@ struct DotKeyword { { ".IFPDTV", TOK_IFPDTV }, { ".IFPM740", TOK_IFPM740 }, { ".IFPSC02", TOK_IFPSC02 }, + { ".IFPSWEET16", TOK_IFPSWEET16 }, { ".IFPWC02", TOK_IFPWC02 }, { ".IFREF", TOK_IFREF }, { ".IMPORT", TOK_IMPORT }, @@ -282,6 +283,7 @@ struct DotKeyword { { ".POPSEG", TOK_POPSEG }, { ".PROC", TOK_PROC }, { ".PSC02", TOK_PSC02 }, + { ".PSWEET16", TOK_PSWEET16 }, { ".PUSHCHARMAP", TOK_PUSHCHARMAP }, { ".PUSHCPU", TOK_PUSHCPU }, { ".PUSHSEG", TOK_PUSHSEG }, diff --git a/src/ca65/token.h b/src/ca65/token.h index de80fc910..e2b223880 100644 --- a/src/ca65/token.h +++ b/src/ca65/token.h @@ -204,6 +204,7 @@ typedef enum token_t { TOK_IFPDTV, TOK_IFPM740, TOK_IFPSC02, + TOK_IFPSWEET16, TOK_IFPWC02, TOK_IFREF, TOK_IMPORT, @@ -249,6 +250,7 @@ typedef enum token_t { TOK_POPSEG, TOK_PROC, TOK_PSC02, + TOK_PSWEET16, TOK_PUSHCHARMAP, TOK_PUSHCPU, TOK_PUSHSEG,