mirror of
https://github.com/uffejakobsen/acme.git
synced 2025-04-06 22:37:05 +00:00
disabled NOP mnemonic on m65 cpu
git-svn-id: https://svn.code.sf.net/p/acme-crossass/code-0/trunk@211 4df02467-bbd4-4a76-a152-e7ce94205b78
This commit is contained in:
parent
5ea2a03174
commit
7a0f9f9528
19
src/mnemo.c
19
src/mnemo.c
@ -73,7 +73,8 @@ enum mnemogroup {
|
||||
GROUP_REL16_2, // 16bit relative to pc+2 Byte value = opcode
|
||||
GROUP_REL16_3, // 16bit relative to pc+3 Byte value = opcode
|
||||
GROUP_BOTHMOVES, // the "move" commands MVP and MVN Byte value = opcode
|
||||
GROUP_ZPONLY // rmb0..7 and smb0..7 Byte value = opcode FIXME - use for IDX16COP,IDXeDEW,IDXeINW as well!
|
||||
GROUP_ZPONLY, // rmb0..7 and smb0..7 Byte value = opcode FIXME - use for IDX16COP,IDXeDEW,IDXeINW as well!
|
||||
GROUP_PREFIX, // NOP on m65 (throws error) Byte value = opcode
|
||||
};
|
||||
|
||||
// save some space
|
||||
@ -507,7 +508,9 @@ static struct ronode mnemos_m65[] = {
|
||||
PREDEFNODE("rolq", MERGE(GROUP_MISC, IDX_ROL | PREFIX_NEGNEG)),
|
||||
PREDEFNODE("rorq", MERGE(GROUP_MISC, IDX_ROR | PREFIX_NEGNEG)),
|
||||
PREDEFNODE("inq", MERGE(GROUP_MISC, IDXcINC | PREFIX_NEGNEG)),
|
||||
PREDEFLAST("deq", MERGE(GROUP_MISC, IDXcDEC | PREFIX_NEGNEG)),
|
||||
PREDEFNODE("deq", MERGE(GROUP_MISC, IDXcDEC | PREFIX_NEGNEG)),
|
||||
// because the NOP opcode is used as a prefix code, the mnemonic was disabled:
|
||||
PREDEFLAST("nop", MERGE(GROUP_PREFIX, 0xea)),
|
||||
// ^^^^ this marks the last element
|
||||
};
|
||||
|
||||
@ -1079,6 +1082,15 @@ static void group_only_zp(int opcode)
|
||||
Input_ensure_EOS();
|
||||
}
|
||||
|
||||
// NOP on m65 cpu (FIXME - "!align" outputs NOPs, what about that? what if user writes NEG:NEG?)
|
||||
static void group_prefix(int opcode)
|
||||
{
|
||||
char buffer[100]; // 640K should be enough for anybody
|
||||
|
||||
sprintf(buffer, "The chosen CPU uses opcode 0x%02x as a prefix code, do not use this mnemonic!", opcode); // FIXME - add to docs!
|
||||
Throw_error(buffer);
|
||||
}
|
||||
|
||||
// The jump instructions.
|
||||
static void group_jump(int index)
|
||||
{
|
||||
@ -1156,6 +1168,9 @@ static int check_mnemo_tree(struct ronode *tree, struct dynabuf *dyna_buf)
|
||||
case GROUP_ZPONLY: // "rmb0..7" and "smb0..7"
|
||||
group_only_zp(code);
|
||||
break;
|
||||
case GROUP_PREFIX: // NOP for m65 cpu
|
||||
group_prefix(code);
|
||||
break;
|
||||
default: // others indicate bugs
|
||||
Bug_found("IllegalGroupIndex", code);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user