part of #1792 - 48GS02 assembler support
This commit is contained in:
@@ -101,6 +101,9 @@ void GetEA (EffAddr* A)
|
||||
if (TokIsSep (CurTok.Tok)) {
|
||||
|
||||
A->AddrModeSet = AM65_IMPLICIT;
|
||||
if (GetCPU() == CPU_45GS02) {
|
||||
A->AddrModeSet |= AM65_Q;
|
||||
}
|
||||
|
||||
} else if (CurTok.Tok == TOK_HASH) {
|
||||
|
||||
@@ -114,6 +117,11 @@ void GetEA (EffAddr* A)
|
||||
NextTok ();
|
||||
A->AddrModeSet = AM65_ACCU;
|
||||
|
||||
} else if (CurTok.Tok == TOK_Q) {
|
||||
|
||||
NextTok ();
|
||||
A->AddrModeSet = AM65_Q;
|
||||
|
||||
} else if (CurTok.Tok == IndirectEnter) {
|
||||
|
||||
/* One of the indirect modes */
|
||||
@@ -160,8 +168,19 @@ void GetEA (EffAddr* A)
|
||||
}
|
||||
} else {
|
||||
/* (adr) */
|
||||
A->AddrModeSet = (CPU == CPU_4510) ? AM65_ABS_IND
|
||||
: AM65_ABS_IND | AM65_ABS_IND_LONG | AM65_DIR_IND;
|
||||
switch (CPU) {
|
||||
case CPU_4510:
|
||||
A->AddrModeSet = AM65_ABS_IND;
|
||||
break;
|
||||
|
||||
case CPU_45GS02:
|
||||
A->AddrModeSet = AM65_ABS_IND | AM65_DIR_IND;
|
||||
break;
|
||||
|
||||
default:
|
||||
A->AddrModeSet = AM65_ABS_IND | AM65_ABS_IND_LONG | AM65_DIR_IND;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -175,8 +194,14 @@ void GetEA (EffAddr* A)
|
||||
if (CurTok.Tok == TOK_COMMA) {
|
||||
/* [dir],y */
|
||||
NextTok ();
|
||||
Consume (TOK_Y, "'Y' expected");
|
||||
A->AddrModeSet = AM65_DIR_IND_LONG_Y;
|
||||
if (GetCPU() == CPU_45GS02) {
|
||||
Consume(TOK_Z, "'Z' expected");
|
||||
A->AddrModeSet = AM65_32BIT_BASE_IND_Z;
|
||||
}
|
||||
else {
|
||||
Consume(TOK_Y, "'Y' expected");
|
||||
A->AddrModeSet = AM65_DIR_IND_LONG_Y;
|
||||
}
|
||||
} else {
|
||||
/* [dir] */
|
||||
A->AddrModeSet = AM65_DIR_IND_LONG | AM65_ABS_IND_LONG;
|
||||
|
||||
Reference in New Issue
Block a user