add missing pseudo(s) for HUC6280, fix cpudetect for 6280

This commit is contained in:
mrdudz
2025-06-29 01:57:28 +02:00
parent 629252c562
commit cf8af80dce
6 changed files with 50 additions and 19 deletions

View File

@@ -424,6 +424,16 @@ void DoConditionals (void)
CalcOverallIfCond (); CalcOverallIfCond ();
break; break;
case TOK_IFP6280:
D = AllocIf (".IFP6280", 1);
NextTok ();
if (IfCond) {
SetIfCond (D, GetCPU() == CPU_HUC6280);
}
ExpectSep ();
CalcOverallIfCond ();
break;
case TOK_IFP816: case TOK_IFP816:
D = AllocIf (".IFP816", 1); D = AllocIf (".IFP816", 1);
NextTok (); NextTok ();
@@ -444,6 +454,16 @@ void DoConditionals (void)
CalcOverallIfCond (); CalcOverallIfCond ();
break; break;
case TOK_IFPCE02:
D = AllocIf (".IFPCE02", 1);
NextTok ();
if (IfCond) {
SetIfCond (D, GetCPU() == CPU_65CE02);
}
ExpectSep ();
CalcOverallIfCond ();
break;
case TOK_IFPDTV: case TOK_IFPDTV:
D = AllocIf (".IFPDTV", 1); D = AllocIf (".IFPDTV", 1);
NextTok (); NextTok ();
@@ -484,16 +504,6 @@ void DoConditionals (void)
CalcOverallIfCond (); CalcOverallIfCond ();
break; 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 ();

View File

@@ -1594,14 +1594,6 @@ static void DoPCE02 (void)
static void DoP816 (void)
/* Switch to 65816 CPU */
{
SetCPU (CPU_65816);
}
static void DoP4510 (void) static void DoP4510 (void)
/* Switch to 4510 CPU */ /* Switch to 4510 CPU */
{ {
@@ -1618,6 +1610,22 @@ static void DoP45GS02 (void)
static void DoP6280 (void)
/* Switch to HuC6280 CPU */
{
SetCPU (CPU_HUC6280);
}
static void DoP816 (void)
/* Switch to 65816 CPU */
{
SetCPU (CPU_65816);
}
static void DoPDTV (void) static void DoPDTV (void)
/* Switch to C64DTV CPU */ /* Switch to C64DTV CPU */
{ {
@@ -2176,6 +2184,7 @@ static CtrlDesc CtrlCmdTab [] = {
{ ccKeepToken, DoConditionals }, /* .IFP02X */ { ccKeepToken, DoConditionals }, /* .IFP02X */
{ ccKeepToken, DoConditionals }, /* .IFP4510 */ { ccKeepToken, DoConditionals }, /* .IFP4510 */
{ ccKeepToken, DoConditionals }, /* .IFP45GS02 */ { ccKeepToken, DoConditionals }, /* .IFP45GS02 */
{ ccKeepToken, DoConditionals }, /* .IFP6280 */
{ ccKeepToken, DoConditionals }, /* .IFP816 */ { ccKeepToken, DoConditionals }, /* .IFP816 */
{ ccKeepToken, DoConditionals }, /* .IFPC02 */ { ccKeepToken, DoConditionals }, /* .IFPC02 */
{ ccKeepToken, DoConditionals }, /* .IFPCE02 */ { ccKeepToken, DoConditionals }, /* .IFPCE02 */
@@ -2214,6 +2223,7 @@ static CtrlDesc CtrlCmdTab [] = {
{ ccNone, DoP02X }, /* .P02X */ { ccNone, DoP02X }, /* .P02X */
{ ccNone, DoP4510 }, /* .P4510 */ { ccNone, DoP4510 }, /* .P4510 */
{ ccNone, DoP45GS02 }, /* .P45GS02 */ { ccNone, DoP45GS02 }, /* .P45GS02 */
{ ccNone, DoP6280 }, /* .P6280 */
{ ccNone, DoP816 }, /* .P816 */ { ccNone, DoP816 }, /* .P816 */
{ ccNone, DoPageLength }, /* .PAGELEN, .PAGELENGTH */ { ccNone, DoPageLength }, /* .PAGELEN, .PAGELENGTH */
{ ccNone, DoUnexpected }, /* .PARAMCOUNT */ { ccNone, DoUnexpected }, /* .PARAMCOUNT */

View File

@@ -224,6 +224,7 @@ struct DotKeyword {
{ ".IFP02X", TOK_IFP02X }, { ".IFP02X", TOK_IFP02X },
{ ".IFP4510", TOK_IFP4510 }, { ".IFP4510", TOK_IFP4510 },
{ ".IFP45GS02", TOK_IFP45GS02 }, { ".IFP45GS02", TOK_IFP45GS02 },
{ ".IFP6280", TOK_IFP6280 },
{ ".IFP816", TOK_IFP816 }, { ".IFP816", TOK_IFP816 },
{ ".IFPC02", TOK_IFPC02 }, { ".IFPC02", TOK_IFPC02 },
{ ".IFPCE02", TOK_IFPCE02 }, { ".IFPCE02", TOK_IFPCE02 },
@@ -267,6 +268,7 @@ struct DotKeyword {
{ ".P02X", TOK_P02X }, { ".P02X", TOK_P02X },
{ ".P4510", TOK_P4510 }, { ".P4510", TOK_P4510 },
{ ".P45GS02", TOK_P45GS02 }, { ".P45GS02", TOK_P45GS02 },
{ ".P6280", TOK_P6280 },
{ ".P816", TOK_P816 }, { ".P816", TOK_P816 },
{ ".PAGELEN", TOK_PAGELENGTH }, { ".PAGELEN", TOK_PAGELENGTH },
{ ".PAGELENGTH", TOK_PAGELENGTH }, { ".PAGELENGTH", TOK_PAGELENGTH },

View File

@@ -197,6 +197,7 @@ typedef enum token_t {
TOK_IFP02X, TOK_IFP02X,
TOK_IFP4510, TOK_IFP4510,
TOK_IFP45GS02, TOK_IFP45GS02,
TOK_IFP6280,
TOK_IFP816, TOK_IFP816,
TOK_IFPC02, TOK_IFPC02,
TOK_IFPCE02, TOK_IFPCE02,
@@ -235,6 +236,7 @@ typedef enum token_t {
TOK_P02X, TOK_P02X,
TOK_P4510, TOK_P4510,
TOK_P45GS02, TOK_P45GS02,
TOK_P6280,
TOK_P816, TOK_P816,
TOK_PAGELENGTH, TOK_PAGELENGTH,
TOK_PARAMCOUNT, TOK_PARAMCOUNT,

View File

@@ -45,6 +45,11 @@
sac #$00 sac #$00
.endif .endif
.ifp6280
sax
cla
.endif
.ifpm740 .ifpm740
jsr $ff12 jsr $ff12
.endif .endif
@@ -123,8 +128,10 @@
.pc02 .pc02
.pwc02 .pwc02
.pce02 .pce02
.p816
.p4510 .p4510
.p45GS02 .p45GS02
.pdtv .pdtv
.p6280
.pm740 .pm740
.p816
; FIXME: sweet16