summaryrefslogtreecommitdiffstatshomepage
path: root/trunk/src/emu/cpu/v60/am.c
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/src/emu/cpu/v60/am.c')
-rw-r--r--trunk/src/emu/cpu/v60/am.c84
1 files changed, 84 insertions, 0 deletions
diff --git a/trunk/src/emu/cpu/v60/am.c b/trunk/src/emu/cpu/v60/am.c
new file mode 100644
index 00000000000..3d5c17171eb
--- /dev/null
+++ b/trunk/src/emu/cpu/v60/am.c
@@ -0,0 +1,84 @@
+
+// NOTE for bit string / field addressing
+// ************************************
+// cpustate->moddim must be passed as 10 for bit string instructions,
+// and as 11 for bit field instructions
+
+
+
+
+// Addressing mode functions and tables
+#include "am1.c" // ReadAM
+#include "am2.c" // ReadAMAddress
+#include "am3.c" // WriteAM
+
+/*
+ Input:
+ cpustate->modadd
+ cpustate->moddim
+
+ Output:
+ cpustate->amout
+ amLength
+*/
+
+static UINT32 ReadAM(v60_state *cpustate)
+{
+ cpustate->modm = cpustate->modm?1:0;
+ cpustate->modval = OpRead8(cpustate, cpustate->modadd);
+ return AMTable1[cpustate->modm][cpustate->modval >> 5](cpustate);
+}
+
+static UINT32 BitReadAM(v60_state *cpustate)
+{
+ cpustate->modm = cpustate->modm?1:0;
+ cpustate->modval = OpRead8(cpustate, cpustate->modadd);
+ return BAMTable1[cpustate->modm][cpustate->modval >> 5](cpustate);
+}
+
+
+
+/*
+ Input:
+ cpustate->modadd
+ cpustate->moddim
+
+ Output:
+ cpustate->amout
+ cpustate->amflag
+ amLength
+*/
+
+static UINT32 ReadAMAddress(v60_state *cpustate)
+{
+ cpustate->modm = cpustate->modm?1:0;
+ cpustate->modval = OpRead8(cpustate, cpustate->modadd);
+ return AMTable2[cpustate->modm][cpustate->modval >> 5](cpustate);
+}
+
+static UINT32 BitReadAMAddress(v60_state *cpustate)
+{
+ cpustate->modm = cpustate->modm?1:0;
+ cpustate->modval = OpRead8(cpustate, cpustate->modadd);
+ return BAMTable2[cpustate->modm][cpustate->modval >> 5](cpustate);
+}
+
+/*
+ Input:
+ cpustate->modadd
+ cpustate->moddim
+ cpustate->modwritevalb / H/W
+
+ Output:
+ cpustate->amout
+ amLength
+*/
+
+static UINT32 WriteAM(v60_state *cpustate)
+{
+ cpustate->modm = cpustate->modm?1:0;
+ cpustate->modval = OpRead8(cpustate, cpustate->modadd);
+ return AMTable3[cpustate->modm][cpustate->modval >> 5](cpustate);
+}
+
+