add related pseudos

This commit is contained in:
mrdudz
2025-06-28 18:15:57 +02:00
parent e74bdab313
commit 8e4936d68d
4 changed files with 51 additions and 1 deletions

View File

@@ -474,6 +474,26 @@ void DoConditionals (void)
CalcOverallIfCond (); CalcOverallIfCond ();
break; break;
case TOK_IFPWC02:
D = AllocIf (".IFPWC02", 1);
NextTok ();
if (IfCond) {
SetIfCond (D, GetCPU() == CPU_W65C02);
}
ExpectSep ();
CalcOverallIfCond ();
break;
case TOK_IFPCE02:
D = AllocIf (".IFPCE02", 1);
NextTok ();
if (IfCond) {
SetIfCond (D, GetCPU() == CPU_65CE02);
}
ExpectSep ();
CalcOverallIfCond ();
break;
case TOK_IFREF: case TOK_IFREF:
D = AllocIf (".IFREF", 1); D = AllocIf (".IFREF", 1);
NextTok (); NextTok ();
@@ -520,9 +540,11 @@ int CheckConditionals (void)
case TOK_IFP45GS02: case TOK_IFP45GS02:
case TOK_IFP816: case TOK_IFP816:
case TOK_IFPC02: case TOK_IFPC02:
case TOK_IFPCE02:
case TOK_IFPDTV: case TOK_IFPDTV:
case TOK_IFPM740: case TOK_IFPM740:
case TOK_IFPSC02: case TOK_IFPSC02:
case TOK_IFPWC02:
case TOK_IFREF: case TOK_IFREF:
DoConditionals (); DoConditionals ();
return 1; return 1;

View File

@@ -1578,6 +1578,22 @@ static void DoPC02 (void)
static void DoPWC02 (void)
/* Switch to W65C02 CPU */
{
SetCPU (CPU_W65C02);
}
static void DoPCE02 (void)
/* Switch to 65CE02 CPU */
{
SetCPU (CPU_65CE02);
}
static void DoP816 (void) static void DoP816 (void)
/* Switch to 65816 CPU */ /* Switch to 65816 CPU */
{ {
@@ -2162,9 +2178,11 @@ static CtrlDesc CtrlCmdTab [] = {
{ ccKeepToken, DoConditionals }, /* .IFP45GS02 */ { ccKeepToken, DoConditionals }, /* .IFP45GS02 */
{ ccKeepToken, DoConditionals }, /* .IFP816 */ { ccKeepToken, DoConditionals }, /* .IFP816 */
{ ccKeepToken, DoConditionals }, /* .IFPC02 */ { ccKeepToken, DoConditionals }, /* .IFPC02 */
{ ccKeepToken, DoConditionals }, /* .IFPCE02 */
{ ccKeepToken, DoConditionals }, /* .IFPDTV */ { ccKeepToken, DoConditionals }, /* .IFPDTV */
{ ccKeepToken, DoConditionals }, /* .IFPM740 */ { ccKeepToken, DoConditionals }, /* .IFPM740 */
{ ccKeepToken, DoConditionals }, /* .IFPSC02 */ { ccKeepToken, DoConditionals }, /* .IFPSC02 */
{ ccKeepToken, DoConditionals }, /* .IFPWC02 */
{ ccKeepToken, DoConditionals }, /* .IFREF */ { ccKeepToken, DoConditionals }, /* .IFREF */
{ ccNone, DoImport }, /* .IMPORT */ { ccNone, DoImport }, /* .IMPORT */
{ ccNone, DoImportZP }, /* .IMPORTZP */ { ccNone, DoImportZP }, /* .IMPORTZP */
@@ -2199,7 +2217,8 @@ static CtrlDesc CtrlCmdTab [] = {
{ ccNone, DoP816 }, /* .P816 */ { ccNone, DoP816 }, /* .P816 */
{ ccNone, DoPageLength }, /* .PAGELEN, .PAGELENGTH */ { ccNone, DoPageLength }, /* .PAGELEN, .PAGELENGTH */
{ ccNone, DoUnexpected }, /* .PARAMCOUNT */ { ccNone, DoUnexpected }, /* .PARAMCOUNT */
{ ccNone, DoPC02 }, /* .PSC02 */ { ccNone, DoPC02 }, /* .PC02 */
{ ccNone, DoPCE02 }, /* .PCE02 */
{ ccNone, DoPDTV }, /* .PDTV */ { ccNone, DoPDTV }, /* .PDTV */
{ ccNone, DoPM740 }, /* .PM740 */ { ccNone, DoPM740 }, /* .PM740 */
{ ccNone, DoPopCharmap }, /* .POPCHARMAP */ { ccNone, DoPopCharmap }, /* .POPCHARMAP */
@@ -2210,6 +2229,7 @@ static CtrlDesc CtrlCmdTab [] = {
{ ccNone, DoPushCharmap }, /* .PUSHCHARMAP */ { ccNone, DoPushCharmap }, /* .PUSHCHARMAP */
{ ccNone, DoPushCPU }, /* .PUSHCPU */ { ccNone, DoPushCPU }, /* .PUSHCPU */
{ ccNone, DoPushSeg }, /* .PUSHSEG */ { ccNone, DoPushSeg }, /* .PUSHSEG */
{ ccNone, DoPWC02 }, /* .PWC02 */
{ ccNone, DoUnexpected }, /* .REF, .REFERENCED */ { ccNone, DoUnexpected }, /* .REF, .REFERENCED */
{ ccNone, DoReferTo }, /* .REFTO, .REFERTO */ { ccNone, DoReferTo }, /* .REFTO, .REFERTO */
{ ccNone, DoReloc }, /* .RELOC */ { ccNone, DoReloc }, /* .RELOC */

View File

@@ -226,9 +226,11 @@ struct DotKeyword {
{ ".IFP45GS02", TOK_IFP45GS02 }, { ".IFP45GS02", TOK_IFP45GS02 },
{ ".IFP816", TOK_IFP816 }, { ".IFP816", TOK_IFP816 },
{ ".IFPC02", TOK_IFPC02 }, { ".IFPC02", TOK_IFPC02 },
{ ".IFPCE02", TOK_IFPCE02 },
{ ".IFPDTV", TOK_IFPDTV }, { ".IFPDTV", TOK_IFPDTV },
{ ".IFPM740", TOK_IFPM740 }, { ".IFPM740", TOK_IFPM740 },
{ ".IFPSC02", TOK_IFPSC02 }, { ".IFPSC02", TOK_IFPSC02 },
{ ".IFPWC02", TOK_IFPWC02 },
{ ".IFREF", TOK_IFREF }, { ".IFREF", TOK_IFREF },
{ ".IMPORT", TOK_IMPORT }, { ".IMPORT", TOK_IMPORT },
{ ".IMPORTZP", TOK_IMPORTZP }, { ".IMPORTZP", TOK_IMPORTZP },
@@ -270,6 +272,7 @@ struct DotKeyword {
{ ".PAGELENGTH", TOK_PAGELENGTH }, { ".PAGELENGTH", TOK_PAGELENGTH },
{ ".PARAMCOUNT", TOK_PARAMCOUNT }, { ".PARAMCOUNT", TOK_PARAMCOUNT },
{ ".PC02", TOK_PC02 }, { ".PC02", TOK_PC02 },
{ ".PCE02", TOK_PCE02 },
{ ".PDTV", TOK_PDTV }, { ".PDTV", TOK_PDTV },
{ ".PM740", TOK_PM740 }, { ".PM740", TOK_PM740 },
{ ".POPCHARMAP", TOK_POPCHARMAP }, { ".POPCHARMAP", TOK_POPCHARMAP },
@@ -280,6 +283,7 @@ struct DotKeyword {
{ ".PUSHCHARMAP", TOK_PUSHCHARMAP }, { ".PUSHCHARMAP", TOK_PUSHCHARMAP },
{ ".PUSHCPU", TOK_PUSHCPU }, { ".PUSHCPU", TOK_PUSHCPU },
{ ".PUSHSEG", TOK_PUSHSEG }, { ".PUSHSEG", TOK_PUSHSEG },
{ ".PWC02", TOK_PWC02 },
{ ".REF", TOK_REFERENCED }, { ".REF", TOK_REFERENCED },
{ ".REFERENCED", TOK_REFERENCED }, { ".REFERENCED", TOK_REFERENCED },
{ ".REFERTO", TOK_REFERTO }, { ".REFERTO", TOK_REFERTO },

View File

@@ -199,9 +199,11 @@ typedef enum token_t {
TOK_IFP45GS02, TOK_IFP45GS02,
TOK_IFP816, TOK_IFP816,
TOK_IFPC02, TOK_IFPC02,
TOK_IFPCE02,
TOK_IFPDTV, TOK_IFPDTV,
TOK_IFPM740, TOK_IFPM740,
TOK_IFPSC02, TOK_IFPSC02,
TOK_IFPWC02,
TOK_IFREF, TOK_IFREF,
TOK_IMPORT, TOK_IMPORT,
TOK_IMPORTZP, TOK_IMPORTZP,
@@ -237,6 +239,7 @@ typedef enum token_t {
TOK_PAGELENGTH, TOK_PAGELENGTH,
TOK_PARAMCOUNT, TOK_PARAMCOUNT,
TOK_PC02, TOK_PC02,
TOK_PCE02,
TOK_PDTV, TOK_PDTV,
TOK_PM740, TOK_PM740,
TOK_POPCHARMAP, TOK_POPCHARMAP,
@@ -247,6 +250,7 @@ typedef enum token_t {
TOK_PUSHCHARMAP, TOK_PUSHCHARMAP,
TOK_PUSHCPU, TOK_PUSHCPU,
TOK_PUSHSEG, TOK_PUSHSEG,
TOK_PWC02,
TOK_REFERENCED, TOK_REFERENCED,
TOK_REFERTO, TOK_REFERTO,
TOK_RELOC, TOK_RELOC,