More instruction set stuff

git-svn-id: svn://svn.cc65.org/cc65/trunk@2247 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
cuz
2003-08-07 08:13:46 +00:00
parent 3bb059bfc5
commit 0192932e2c
5 changed files with 129 additions and 9 deletions

View File

@@ -1250,6 +1250,14 @@ static void DoProc (void)
static void DoPSC02 (void)
/* Switch to 65SC02 CPU */
{
SetCPU (CPU_65SC02);
}
static void DoPushSeg (void)
/* Push the current segment onto the segment stack */
{
@@ -1343,12 +1351,12 @@ static void DoSegment (void)
strcpy (Name, SVal);
NextTok ();
/* Check for an optional segment attribute */
if (Tok == TOK_COMMA) {
NextTok ();
if (Tok != TOK_IDENT) {
/* Check for an optional segment attribute */
if (Tok == TOK_COMMA) {
NextTok ();
if (Tok != TOK_IDENT) {
ErrorSkip (ERR_IDENT_EXPECTED);
} else {
} else {
int Attr = GetSubKey (AttrTab, sizeof (AttrTab) / sizeof (AttrTab [0]));
switch (Attr) {
@@ -1383,6 +1391,24 @@ static void DoSegment (void)
static void DoSetCPU (void)
/* Switch the CPU instruction set */
{
/* We expect an identifier */
if (Tok != TOK_STRCON) {
ErrorSkip (ERR_STRCON_EXPECTED);
} else {
/* Try to find the CPU, then skip the identifier */
cpu_t CPU = FindCPU (SVal);
NextTok ();
/* Switch to the new CPU */
SetCPU (CPU);
}
}
static void DoSmart (void)
/* Smart mode on/off */
{
@@ -1522,6 +1548,7 @@ static CtrlDesc CtrlCmdTab [] = {
{ ccKeepToken, DoConditionals }, /* .IFP02 */
{ ccKeepToken, DoConditionals }, /* .IFP816 */
{ ccKeepToken, DoConditionals }, /* .IFPC02 */
{ ccKeepToken, DoConditionals }, /* .IFPSC02 */
{ ccKeepToken, DoConditionals }, /* .IFREF */
{ ccNone, DoImport },
{ ccNone, DoImportZP },
@@ -1547,6 +1574,7 @@ static CtrlDesc CtrlCmdTab [] = {
{ ccNone, DoPC02 },
{ ccNone, DoPopSeg },
{ ccNone, DoProc },
{ ccNone, DoPSC02 },
{ ccNone, DoPushSeg },
{ ccNone, DoUnexpected }, /* .REFERENCED */
{ ccNone, DoReloc },
@@ -1555,6 +1583,7 @@ static CtrlDesc CtrlCmdTab [] = {
{ ccNone, DoInvalid }, /* .RIGHT */
{ ccNone, DoROData },
{ ccNone, DoSegment },
{ ccNone, DoSetCPU },
{ ccNone, DoSmart },
{ ccNone, DoUnexpected }, /* .STRAT */
{ ccNone, DoUnexpected }, /* .STRING */