blob: a801492319eb1f79acfa059c2af93d3a10de64a3 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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->program, 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->program, 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->program, 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->program, 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->program, cpustate->modadd);
return AMTable3[cpustate->modm][cpustate->modval >> 5](cpustate);
}
|