OSDN Git Service

[VM][PC9801][MEMBUS] Split update_bios() to functions.
[csp-qt/common_source_project-fm7.git] / source / src / vm / i8080_base.cpp
1 /*
2         Skelton for retropc emulator
3
4         Origin : MAME
5         Author : Takeda.Toshiya
6         Date   : 2008.11.04 -
7
8         [ i8080 / i8085 ]
9 */
10
11 #include "i8080_base.h"
12 #include "i8080_regdef.h"
13 #include "debugger.h"
14
15
16 const int I8080_BASE::cc_op_8085[0x100] = {
17 //#ifdef HAS_I8085
18          4,10, 7, 6, 4, 4, 7, 4,10,10, 7, 6, 4, 4, 7, 4, 7,10, 7, 6, 4, 4, 7, 4,10,10, 7, 6, 4, 4, 7, 4,
19          7,10,16, 6, 4, 4, 7, 4,10,10,16, 6, 4, 4, 7, 4, 7,10,13, 6,10,10,10, 4,10,10,13, 6, 4, 4, 7, 4,
20          4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,
21          4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, 7, 7, 7, 7, 7, 7, 5, 7, 4, 4, 4, 4, 4, 4, 7, 4,
22          4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,
23          4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,
24          6,10,10,10,11,12, 7,12, 6,10,10, 0,11,17, 7,12, 6,10,10,10,11,12, 7,12, 6,10,10,10,11, 7, 7,12,
25          6,10,10,16,11,12, 7,12, 6, 6,10, 6,11,10, 7,12, 6,10,10, 4,11,12, 7,12, 6, 6,10, 4,11, 7, 7,12
26 };
27
28 const int I8080_BASE::cc_op_8080[0x100] = {
29 //#else
30          4,10, 7, 5, 5, 5, 7, 4, 4,10, 7, 5, 5, 5, 7, 4, 4,10, 7, 5, 5, 5, 7, 4, 4,10, 7, 5, 5, 5, 7, 4,
31          4,10,16, 5, 5, 5, 7, 4, 4,10,16, 5, 5, 5, 7, 4, 4,10,13, 5,10,10,10, 4, 4,10,13, 5, 5, 5, 7, 4,
32          5, 5, 5, 5, 5, 5, 7, 5, 5, 5, 5, 5, 5, 5, 7, 5, 5, 5, 5, 5, 5, 5, 7, 5, 5, 5, 5, 5, 5, 5, 7, 5,
33          5, 5, 5, 5, 5, 5, 7, 5, 5, 5, 5, 5, 5, 5, 7, 5, 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 5, 7, 5,
34          4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,
35          4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,
36          5,10,10,10,11,11, 7,11, 5,10,10,10,11,17, 7,11, 5,10,10,10,11,11, 7,11, 5,10,10,10,11,17, 7,11,
37          5,10,10,18,11,11, 7,11, 5, 5,10, 5,11,17, 7,11, 5,10,10, 4,11,11, 7,11, 5, 5,10, 4,11,17, 7,11
38
39 };
40
41 const uint8_t I8080_BASE::ZS[256] = {
42         0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
43         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
44         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
45         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
46         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
47         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
48         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
49         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
50         0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
51         0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
52         0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
53         0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
54         0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
55         0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
56         0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
57         0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80
58 };
59
60 const uint8_t I8080_BASE::ZSP[256] = {
61         0x44,0x00,0x00,0x04,0x00,0x04,0x04,0x00,0x00,0x04,0x04,0x00,0x04,0x00,0x00,0x04,
62         0x00,0x04,0x04,0x00,0x04,0x00,0x00,0x04,0x04,0x00,0x00,0x04,0x00,0x04,0x04,0x00,
63         0x00,0x04,0x04,0x00,0x04,0x00,0x00,0x04,0x04,0x00,0x00,0x04,0x00,0x04,0x04,0x00,
64         0x04,0x00,0x00,0x04,0x00,0x04,0x04,0x00,0x00,0x04,0x04,0x00,0x04,0x00,0x00,0x04,
65         0x00,0x04,0x04,0x00,0x04,0x00,0x00,0x04,0x04,0x00,0x00,0x04,0x00,0x04,0x04,0x00,
66         0x04,0x00,0x00,0x04,0x00,0x04,0x04,0x00,0x00,0x04,0x04,0x00,0x04,0x00,0x00,0x04,
67         0x04,0x00,0x00,0x04,0x00,0x04,0x04,0x00,0x00,0x04,0x04,0x00,0x04,0x00,0x00,0x04,
68         0x00,0x04,0x04,0x00,0x04,0x00,0x00,0x04,0x04,0x00,0x00,0x04,0x00,0x04,0x04,0x00,
69         0x80,0x84,0x84,0x80,0x84,0x80,0x80,0x84,0x84,0x80,0x80,0x84,0x80,0x84,0x84,0x80,
70         0x84,0x80,0x80,0x84,0x80,0x84,0x84,0x80,0x80,0x84,0x84,0x80,0x84,0x80,0x80,0x84,
71         0x84,0x80,0x80,0x84,0x80,0x84,0x84,0x80,0x80,0x84,0x84,0x80,0x84,0x80,0x80,0x84,
72         0x80,0x84,0x84,0x80,0x84,0x80,0x80,0x84,0x84,0x80,0x80,0x84,0x80,0x84,0x84,0x80,
73         0x84,0x80,0x80,0x84,0x80,0x84,0x84,0x80,0x80,0x84,0x84,0x80,0x84,0x80,0x80,0x84,
74         0x80,0x84,0x84,0x80,0x84,0x80,0x80,0x84,0x84,0x80,0x80,0x84,0x80,0x84,0x84,0x80,
75         0x80,0x84,0x84,0x80,0x84,0x80,0x80,0x84,0x84,0x80,0x80,0x84,0x80,0x84,0x84,0x80,
76         0x84,0x80,0x80,0x84,0x80,0x84,0x84,0x80,0x80,0x84,0x84,0x80,0x84,0x80,0x80,0x84
77 };
78
79 const uint16_t I8080_BASE::DAA[2048] = {
80         0x0044,0x0100,0x0200,0x0304,0x0400,0x0504,0x0604,0x0700,0x0808,0x090c,0x1010,0x1114,0x1214,0x1310,0x1414,0x1510,
81         0x1000,0x1104,0x1204,0x1300,0x1404,0x1500,0x1600,0x1704,0x180c,0x1908,0x2030,0x2134,0x2234,0x2330,0x2434,0x2530,
82         0x2020,0x2124,0x2224,0x2320,0x2424,0x2520,0x2620,0x2724,0x282c,0x2928,0x3034,0x3130,0x3230,0x3334,0x3430,0x3534,
83         0x3024,0x3120,0x3220,0x3324,0x3420,0x3524,0x3624,0x3720,0x3828,0x392c,0x4010,0x4114,0x4214,0x4310,0x4414,0x4510,
84         0x4000,0x4104,0x4204,0x4300,0x4404,0x4500,0x4600,0x4704,0x480c,0x4908,0x5014,0x5110,0x5210,0x5314,0x5410,0x5514,
85         0x5004,0x5100,0x5200,0x5304,0x5400,0x5504,0x5604,0x5700,0x5808,0x590c,0x6034,0x6130,0x6230,0x6334,0x6430,0x6534,
86         0x6024,0x6120,0x6220,0x6324,0x6420,0x6524,0x6624,0x6720,0x6828,0x692c,0x7030,0x7134,0x7234,0x7330,0x7434,0x7530,
87         0x7020,0x7124,0x7224,0x7320,0x7424,0x7520,0x7620,0x7724,0x782c,0x7928,0x8090,0x8194,0x8294,0x8390,0x8494,0x8590,
88         0x8080,0x8184,0x8284,0x8380,0x8484,0x8580,0x8680,0x8784,0x888c,0x8988,0x9094,0x9190,0x9290,0x9394,0x9490,0x9594,
89         0x9084,0x9180,0x9280,0x9384,0x9480,0x9584,0x9684,0x9780,0x9888,0x998c,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515,
90         0x0045,0x0101,0x0201,0x0305,0x0401,0x0505,0x0605,0x0701,0x0809,0x090d,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511,
91         0x1001,0x1105,0x1205,0x1301,0x1405,0x1501,0x1601,0x1705,0x180d,0x1909,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531,
92         0x2021,0x2125,0x2225,0x2321,0x2425,0x2521,0x2621,0x2725,0x282d,0x2929,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535,
93         0x3025,0x3121,0x3221,0x3325,0x3421,0x3525,0x3625,0x3721,0x3829,0x392d,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511,
94         0x4001,0x4105,0x4205,0x4301,0x4405,0x4501,0x4601,0x4705,0x480d,0x4909,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515,
95         0x5005,0x5101,0x5201,0x5305,0x5401,0x5505,0x5605,0x5701,0x5809,0x590d,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535,
96         0x6025,0x6121,0x6221,0x6325,0x6421,0x6525,0x6625,0x6721,0x6829,0x692d,0x7031,0x7135,0x7235,0x7331,0x7435,0x7531,
97         0x7021,0x7125,0x7225,0x7321,0x7425,0x7521,0x7621,0x7725,0x782d,0x7929,0x8091,0x8195,0x8295,0x8391,0x8495,0x8591,
98         0x8081,0x8185,0x8285,0x8381,0x8485,0x8581,0x8681,0x8785,0x888d,0x8989,0x9095,0x9191,0x9291,0x9395,0x9491,0x9595,
99         0x9085,0x9181,0x9281,0x9385,0x9481,0x9585,0x9685,0x9781,0x9889,0x998d,0xa0b5,0xa1b1,0xa2b1,0xa3b5,0xa4b1,0xa5b5,
100         0xa0a5,0xa1a1,0xa2a1,0xa3a5,0xa4a1,0xa5a5,0xa6a5,0xa7a1,0xa8a9,0xa9ad,0xb0b1,0xb1b5,0xb2b5,0xb3b1,0xb4b5,0xb5b1,
101         0xb0a1,0xb1a5,0xb2a5,0xb3a1,0xb4a5,0xb5a1,0xb6a1,0xb7a5,0xb8ad,0xb9a9,0xc095,0xc191,0xc291,0xc395,0xc491,0xc595,
102         0xc085,0xc181,0xc281,0xc385,0xc481,0xc585,0xc685,0xc781,0xc889,0xc98d,0xd091,0xd195,0xd295,0xd391,0xd495,0xd591,
103         0xd081,0xd185,0xd285,0xd381,0xd485,0xd581,0xd681,0xd785,0xd88d,0xd989,0xe0b1,0xe1b5,0xe2b5,0xe3b1,0xe4b5,0xe5b1,
104         0xe0a1,0xe1a5,0xe2a5,0xe3a1,0xe4a5,0xe5a1,0xe6a1,0xe7a5,0xe8ad,0xe9a9,0xf0b5,0xf1b1,0xf2b1,0xf3b5,0xf4b1,0xf5b5,
105         0xf0a5,0xf1a1,0xf2a1,0xf3a5,0xf4a1,0xf5a5,0xf6a5,0xf7a1,0xf8a9,0xf9ad,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515,
106         0x0045,0x0101,0x0201,0x0305,0x0401,0x0505,0x0605,0x0701,0x0809,0x090d,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511,
107         0x1001,0x1105,0x1205,0x1301,0x1405,0x1501,0x1601,0x1705,0x180d,0x1909,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531,
108         0x2021,0x2125,0x2225,0x2321,0x2425,0x2521,0x2621,0x2725,0x282d,0x2929,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535,
109         0x3025,0x3121,0x3221,0x3325,0x3421,0x3525,0x3625,0x3721,0x3829,0x392d,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511,
110         0x4001,0x4105,0x4205,0x4301,0x4405,0x4501,0x4601,0x4705,0x480d,0x4909,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515,
111         0x5005,0x5101,0x5201,0x5305,0x5401,0x5505,0x5605,0x5701,0x5809,0x590d,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535,
112         0x0604,0x0700,0x0808,0x090c,0x0a0c,0x0b08,0x0c0c,0x0d08,0x0e08,0x0f0c,0x1010,0x1114,0x1214,0x1310,0x1414,0x1510,
113         0x1600,0x1704,0x180c,0x1908,0x1a08,0x1b0c,0x1c08,0x1d0c,0x1e0c,0x1f08,0x2030,0x2134,0x2234,0x2330,0x2434,0x2530,
114         0x2620,0x2724,0x282c,0x2928,0x2a28,0x2b2c,0x2c28,0x2d2c,0x2e2c,0x2f28,0x3034,0x3130,0x3230,0x3334,0x3430,0x3534,
115         0x3624,0x3720,0x3828,0x392c,0x3a2c,0x3b28,0x3c2c,0x3d28,0x3e28,0x3f2c,0x4010,0x4114,0x4214,0x4310,0x4414,0x4510,
116         0x4600,0x4704,0x480c,0x4908,0x4a08,0x4b0c,0x4c08,0x4d0c,0x4e0c,0x4f08,0x5014,0x5110,0x5210,0x5314,0x5410,0x5514,
117         0x5604,0x5700,0x5808,0x590c,0x5a0c,0x5b08,0x5c0c,0x5d08,0x5e08,0x5f0c,0x6034,0x6130,0x6230,0x6334,0x6430,0x6534,
118         0x6624,0x6720,0x6828,0x692c,0x6a2c,0x6b28,0x6c2c,0x6d28,0x6e28,0x6f2c,0x7030,0x7134,0x7234,0x7330,0x7434,0x7530,
119         0x7620,0x7724,0x782c,0x7928,0x7a28,0x7b2c,0x7c28,0x7d2c,0x7e2c,0x7f28,0x8090,0x8194,0x8294,0x8390,0x8494,0x8590,
120         0x8680,0x8784,0x888c,0x8988,0x8a88,0x8b8c,0x8c88,0x8d8c,0x8e8c,0x8f88,0x9094,0x9190,0x9290,0x9394,0x9490,0x9594,
121         0x9684,0x9780,0x9888,0x998c,0x9a8c,0x9b88,0x9c8c,0x9d88,0x9e88,0x9f8c,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515,
122         0x0605,0x0701,0x0809,0x090d,0x0a0d,0x0b09,0x0c0d,0x0d09,0x0e09,0x0f0d,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511,
123         0x1601,0x1705,0x180d,0x1909,0x1a09,0x1b0d,0x1c09,0x1d0d,0x1e0d,0x1f09,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531,
124         0x2621,0x2725,0x282d,0x2929,0x2a29,0x2b2d,0x2c29,0x2d2d,0x2e2d,0x2f29,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535,
125         0x3625,0x3721,0x3829,0x392d,0x3a2d,0x3b29,0x3c2d,0x3d29,0x3e29,0x3f2d,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511,
126         0x4601,0x4705,0x480d,0x4909,0x4a09,0x4b0d,0x4c09,0x4d0d,0x4e0d,0x4f09,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515,
127         0x5605,0x5701,0x5809,0x590d,0x5a0d,0x5b09,0x5c0d,0x5d09,0x5e09,0x5f0d,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535,
128         0x6625,0x6721,0x6829,0x692d,0x6a2d,0x6b29,0x6c2d,0x6d29,0x6e29,0x6f2d,0x7031,0x7135,0x7235,0x7331,0x7435,0x7531,
129         0x7621,0x7725,0x782d,0x7929,0x7a29,0x7b2d,0x7c29,0x7d2d,0x7e2d,0x7f29,0x8091,0x8195,0x8295,0x8391,0x8495,0x8591,
130         0x8681,0x8785,0x888d,0x8989,0x8a89,0x8b8d,0x8c89,0x8d8d,0x8e8d,0x8f89,0x9095,0x9191,0x9291,0x9395,0x9491,0x9595,
131         0x9685,0x9781,0x9889,0x998d,0x9a8d,0x9b89,0x9c8d,0x9d89,0x9e89,0x9f8d,0xa0b5,0xa1b1,0xa2b1,0xa3b5,0xa4b1,0xa5b5,
132         0xa6a5,0xa7a1,0xa8a9,0xa9ad,0xaaad,0xaba9,0xacad,0xada9,0xaea9,0xafad,0xb0b1,0xb1b5,0xb2b5,0xb3b1,0xb4b5,0xb5b1,
133         0xb6a1,0xb7a5,0xb8ad,0xb9a9,0xbaa9,0xbbad,0xbca9,0xbdad,0xbead,0xbfa9,0xc095,0xc191,0xc291,0xc395,0xc491,0xc595,
134         0xc685,0xc781,0xc889,0xc98d,0xca8d,0xcb89,0xcc8d,0xcd89,0xce89,0xcf8d,0xd091,0xd195,0xd295,0xd391,0xd495,0xd591,
135         0xd681,0xd785,0xd88d,0xd989,0xda89,0xdb8d,0xdc89,0xdd8d,0xde8d,0xdf89,0xe0b1,0xe1b5,0xe2b5,0xe3b1,0xe4b5,0xe5b1,
136         0xe6a1,0xe7a5,0xe8ad,0xe9a9,0xeaa9,0xebad,0xeca9,0xedad,0xeead,0xefa9,0xf0b5,0xf1b1,0xf2b1,0xf3b5,0xf4b1,0xf5b5,
137         0xf6a5,0xf7a1,0xf8a9,0xf9ad,0xfaad,0xfba9,0xfcad,0xfda9,0xfea9,0xffad,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515,
138         0x0605,0x0701,0x0809,0x090d,0x0a0d,0x0b09,0x0c0d,0x0d09,0x0e09,0x0f0d,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511,
139         0x1601,0x1705,0x180d,0x1909,0x1a09,0x1b0d,0x1c09,0x1d0d,0x1e0d,0x1f09,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531,
140         0x2621,0x2725,0x282d,0x2929,0x2a29,0x2b2d,0x2c29,0x2d2d,0x2e2d,0x2f29,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535,
141         0x3625,0x3721,0x3829,0x392d,0x3a2d,0x3b29,0x3c2d,0x3d29,0x3e29,0x3f2d,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511,
142         0x4601,0x4705,0x480d,0x4909,0x4a09,0x4b0d,0x4c09,0x4d0d,0x4e0d,0x4f09,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515,
143         0x5605,0x5701,0x5809,0x590d,0x5a0d,0x5b09,0x5c0d,0x5d09,0x5e09,0x5f0d,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535,
144         0x0046,0x0102,0x0202,0x0306,0x0402,0x0506,0x0606,0x0702,0x080a,0x090e,0x0402,0x0506,0x0606,0x0702,0x080a,0x090e,
145         0x1002,0x1106,0x1206,0x1302,0x1406,0x1502,0x1602,0x1706,0x180e,0x190a,0x1406,0x1502,0x1602,0x1706,0x180e,0x190a,
146         0x2022,0x2126,0x2226,0x2322,0x2426,0x2522,0x2622,0x2726,0x282e,0x292a,0x2426,0x2522,0x2622,0x2726,0x282e,0x292a,
147         0x3026,0x3122,0x3222,0x3326,0x3422,0x3526,0x3626,0x3722,0x382a,0x392e,0x3422,0x3526,0x3626,0x3722,0x382a,0x392e,
148         0x4002,0x4106,0x4206,0x4302,0x4406,0x4502,0x4602,0x4706,0x480e,0x490a,0x4406,0x4502,0x4602,0x4706,0x480e,0x490a,
149         0x5006,0x5102,0x5202,0x5306,0x5402,0x5506,0x5606,0x5702,0x580a,0x590e,0x5402,0x5506,0x5606,0x5702,0x580a,0x590e,
150         0x6026,0x6122,0x6222,0x6326,0x6422,0x6526,0x6626,0x6722,0x682a,0x692e,0x6422,0x6526,0x6626,0x6722,0x682a,0x692e,
151         0x7022,0x7126,0x7226,0x7322,0x7426,0x7522,0x7622,0x7726,0x782e,0x792a,0x7426,0x7522,0x7622,0x7726,0x782e,0x792a,
152         0x8082,0x8186,0x8286,0x8382,0x8486,0x8582,0x8682,0x8786,0x888e,0x898a,0x8486,0x8582,0x8682,0x8786,0x888e,0x898a,
153         0x9086,0x9182,0x9282,0x9386,0x9482,0x9586,0x9686,0x9782,0x988a,0x998e,0x3423,0x3527,0x3627,0x3723,0x382b,0x392f,
154         0x4003,0x4107,0x4207,0x4303,0x4407,0x4503,0x4603,0x4707,0x480f,0x490b,0x4407,0x4503,0x4603,0x4707,0x480f,0x490b,
155         0x5007,0x5103,0x5203,0x5307,0x5403,0x5507,0x5607,0x5703,0x580b,0x590f,0x5403,0x5507,0x5607,0x5703,0x580b,0x590f,
156         0x6027,0x6123,0x6223,0x6327,0x6423,0x6527,0x6627,0x6723,0x682b,0x692f,0x6423,0x6527,0x6627,0x6723,0x682b,0x692f,
157         0x7023,0x7127,0x7227,0x7323,0x7427,0x7523,0x7623,0x7727,0x782f,0x792b,0x7427,0x7523,0x7623,0x7727,0x782f,0x792b,
158         0x8083,0x8187,0x8287,0x8383,0x8487,0x8583,0x8683,0x8787,0x888f,0x898b,0x8487,0x8583,0x8683,0x8787,0x888f,0x898b,
159         0x9087,0x9183,0x9283,0x9387,0x9483,0x9587,0x9687,0x9783,0x988b,0x998f,0x9483,0x9587,0x9687,0x9783,0x988b,0x998f,
160         0xa0a7,0xa1a3,0xa2a3,0xa3a7,0xa4a3,0xa5a7,0xa6a7,0xa7a3,0xa8ab,0xa9af,0xa4a3,0xa5a7,0xa6a7,0xa7a3,0xa8ab,0xa9af,
161         0xb0a3,0xb1a7,0xb2a7,0xb3a3,0xb4a7,0xb5a3,0xb6a3,0xb7a7,0xb8af,0xb9ab,0xb4a7,0xb5a3,0xb6a3,0xb7a7,0xb8af,0xb9ab,
162         0xc087,0xc183,0xc283,0xc387,0xc483,0xc587,0xc687,0xc783,0xc88b,0xc98f,0xc483,0xc587,0xc687,0xc783,0xc88b,0xc98f,
163         0xd083,0xd187,0xd287,0xd383,0xd487,0xd583,0xd683,0xd787,0xd88f,0xd98b,0xd487,0xd583,0xd683,0xd787,0xd88f,0xd98b,
164         0xe0a3,0xe1a7,0xe2a7,0xe3a3,0xe4a7,0xe5a3,0xe6a3,0xe7a7,0xe8af,0xe9ab,0xe4a7,0xe5a3,0xe6a3,0xe7a7,0xe8af,0xe9ab,
165         0xf0a7,0xf1a3,0xf2a3,0xf3a7,0xf4a3,0xf5a7,0xf6a7,0xf7a3,0xf8ab,0xf9af,0xf4a3,0xf5a7,0xf6a7,0xf7a3,0xf8ab,0xf9af,
166         0x0047,0x0103,0x0203,0x0307,0x0403,0x0507,0x0607,0x0703,0x080b,0x090f,0x0403,0x0507,0x0607,0x0703,0x080b,0x090f,
167         0x1003,0x1107,0x1207,0x1303,0x1407,0x1503,0x1603,0x1707,0x180f,0x190b,0x1407,0x1503,0x1603,0x1707,0x180f,0x190b,
168         0x2023,0x2127,0x2227,0x2323,0x2427,0x2523,0x2623,0x2727,0x282f,0x292b,0x2427,0x2523,0x2623,0x2727,0x282f,0x292b,
169         0x3027,0x3123,0x3223,0x3327,0x3423,0x3527,0x3627,0x3723,0x382b,0x392f,0x3423,0x3527,0x3627,0x3723,0x382b,0x392f,
170         0x4003,0x4107,0x4207,0x4303,0x4407,0x4503,0x4603,0x4707,0x480f,0x490b,0x4407,0x4503,0x4603,0x4707,0x480f,0x490b,
171         0x5007,0x5103,0x5203,0x5307,0x5403,0x5507,0x5607,0x5703,0x580b,0x590f,0x5403,0x5507,0x5607,0x5703,0x580b,0x590f,
172         0x6027,0x6123,0x6223,0x6327,0x6423,0x6527,0x6627,0x6723,0x682b,0x692f,0x6423,0x6527,0x6627,0x6723,0x682b,0x692f,
173         0x7023,0x7127,0x7227,0x7323,0x7427,0x7523,0x7623,0x7727,0x782f,0x792b,0x7427,0x7523,0x7623,0x7727,0x782f,0x792b,
174         0x8083,0x8187,0x8287,0x8383,0x8487,0x8583,0x8683,0x8787,0x888f,0x898b,0x8487,0x8583,0x8683,0x8787,0x888f,0x898b,
175         0x9087,0x9183,0x9283,0x9387,0x9483,0x9587,0x9687,0x9783,0x988b,0x998f,0x9483,0x9587,0x9687,0x9783,0x988b,0x998f,
176         0xfabe,0xfbba,0xfcbe,0xfdba,0xfeba,0xffbe,0x0046,0x0102,0x0202,0x0306,0x0402,0x0506,0x0606,0x0702,0x080a,0x090e,
177         0x0a1e,0x0b1a,0x0c1e,0x0d1a,0x0e1a,0x0f1e,0x1002,0x1106,0x1206,0x1302,0x1406,0x1502,0x1602,0x1706,0x180e,0x190a,
178         0x1a1a,0x1b1e,0x1c1a,0x1d1e,0x1e1e,0x1f1a,0x2022,0x2126,0x2226,0x2322,0x2426,0x2522,0x2622,0x2726,0x282e,0x292a,
179         0x2a3a,0x2b3e,0x2c3a,0x2d3e,0x2e3e,0x2f3a,0x3026,0x3122,0x3222,0x3326,0x3422,0x3526,0x3626,0x3722,0x382a,0x392e,
180         0x3a3e,0x3b3a,0x3c3e,0x3d3a,0x3e3a,0x3f3e,0x4002,0x4106,0x4206,0x4302,0x4406,0x4502,0x4602,0x4706,0x480e,0x490a,
181         0x4a1a,0x4b1e,0x4c1a,0x4d1e,0x4e1e,0x4f1a,0x5006,0x5102,0x5202,0x5306,0x5402,0x5506,0x5606,0x5702,0x580a,0x590e,
182         0x5a1e,0x5b1a,0x5c1e,0x5d1a,0x5e1a,0x5f1e,0x6026,0x6122,0x6222,0x6326,0x6422,0x6526,0x6626,0x6722,0x682a,0x692e,
183         0x6a3e,0x6b3a,0x6c3e,0x6d3a,0x6e3a,0x6f3e,0x7022,0x7126,0x7226,0x7322,0x7426,0x7522,0x7622,0x7726,0x782e,0x792a,
184         0x7a3a,0x7b3e,0x7c3a,0x7d3e,0x7e3e,0x7f3a,0x8082,0x8186,0x8286,0x8382,0x8486,0x8582,0x8682,0x8786,0x888e,0x898a,
185         0x8a9a,0x8b9e,0x8c9a,0x8d9e,0x8e9e,0x8f9a,0x9086,0x9182,0x9282,0x9386,0x3423,0x3527,0x3627,0x3723,0x382b,0x392f,
186         0x3a3f,0x3b3b,0x3c3f,0x3d3b,0x3e3b,0x3f3f,0x4003,0x4107,0x4207,0x4303,0x4407,0x4503,0x4603,0x4707,0x480f,0x490b,
187         0x4a1b,0x4b1f,0x4c1b,0x4d1f,0x4e1f,0x4f1b,0x5007,0x5103,0x5203,0x5307,0x5403,0x5507,0x5607,0x5703,0x580b,0x590f,
188         0x5a1f,0x5b1b,0x5c1f,0x5d1b,0x5e1b,0x5f1f,0x6027,0x6123,0x6223,0x6327,0x6423,0x6527,0x6627,0x6723,0x682b,0x692f,
189         0x6a3f,0x6b3b,0x6c3f,0x6d3b,0x6e3b,0x6f3f,0x7023,0x7127,0x7227,0x7323,0x7427,0x7523,0x7623,0x7727,0x782f,0x792b,
190         0x7a3b,0x7b3f,0x7c3b,0x7d3f,0x7e3f,0x7f3b,0x8083,0x8187,0x8287,0x8383,0x8487,0x8583,0x8683,0x8787,0x888f,0x898b,
191         0x8a9b,0x8b9f,0x8c9b,0x8d9f,0x8e9f,0x8f9b,0x9087,0x9183,0x9283,0x9387,0x9483,0x9587,0x9687,0x9783,0x988b,0x998f,
192         0x9a9f,0x9b9b,0x9c9f,0x9d9b,0x9e9b,0x9f9f,0xa0a7,0xa1a3,0xa2a3,0xa3a7,0xa4a3,0xa5a7,0xa6a7,0xa7a3,0xa8ab,0xa9af,
193         0xaabf,0xabbb,0xacbf,0xadbb,0xaebb,0xafbf,0xb0a3,0xb1a7,0xb2a7,0xb3a3,0xb4a7,0xb5a3,0xb6a3,0xb7a7,0xb8af,0xb9ab,
194         0xbabb,0xbbbf,0xbcbb,0xbdbf,0xbebf,0xbfbb,0xc087,0xc183,0xc283,0xc387,0xc483,0xc587,0xc687,0xc783,0xc88b,0xc98f,
195         0xca9f,0xcb9b,0xcc9f,0xcd9b,0xce9b,0xcf9f,0xd083,0xd187,0xd287,0xd383,0xd487,0xd583,0xd683,0xd787,0xd88f,0xd98b,
196         0xda9b,0xdb9f,0xdc9b,0xdd9f,0xde9f,0xdf9b,0xe0a3,0xe1a7,0xe2a7,0xe3a3,0xe4a7,0xe5a3,0xe6a3,0xe7a7,0xe8af,0xe9ab,
197         0xeabb,0xebbf,0xecbb,0xedbf,0xeebf,0xefbb,0xf0a7,0xf1a3,0xf2a3,0xf3a7,0xf4a3,0xf5a7,0xf6a7,0xf7a3,0xf8ab,0xf9af,
198         0xfabf,0xfbbb,0xfcbf,0xfdbb,0xfebb,0xffbf,0x0047,0x0103,0x0203,0x0307,0x0403,0x0507,0x0607,0x0703,0x080b,0x090f,
199         0x0a1f,0x0b1b,0x0c1f,0x0d1b,0x0e1b,0x0f1f,0x1003,0x1107,0x1207,0x1303,0x1407,0x1503,0x1603,0x1707,0x180f,0x190b,
200         0x1a1b,0x1b1f,0x1c1b,0x1d1f,0x1e1f,0x1f1b,0x2023,0x2127,0x2227,0x2323,0x2427,0x2523,0x2623,0x2727,0x282f,0x292b,
201         0x2a3b,0x2b3f,0x2c3b,0x2d3f,0x2e3f,0x2f3b,0x3027,0x3123,0x3223,0x3327,0x3423,0x3527,0x3627,0x3723,0x382b,0x392f,
202         0x3a3f,0x3b3b,0x3c3f,0x3d3b,0x3e3b,0x3f3f,0x4003,0x4107,0x4207,0x4303,0x4407,0x4503,0x4603,0x4707,0x480f,0x490b,
203         0x4a1b,0x4b1f,0x4c1b,0x4d1f,0x4e1f,0x4f1b,0x5007,0x5103,0x5203,0x5307,0x5403,0x5507,0x5607,0x5703,0x580b,0x590f,
204         0x5a1f,0x5b1b,0x5c1f,0x5d1b,0x5e1b,0x5f1f,0x6027,0x6123,0x6223,0x6327,0x6423,0x6527,0x6627,0x6723,0x682b,0x692f,
205         0x6a3f,0x6b3b,0x6c3f,0x6d3b,0x6e3b,0x6f3f,0x7023,0x7127,0x7227,0x7323,0x7427,0x7523,0x7623,0x7727,0x782f,0x792b,
206         0x7a3b,0x7b3f,0x7c3b,0x7d3f,0x7e3f,0x7f3b,0x8083,0x8187,0x8287,0x8383,0x8487,0x8583,0x8683,0x8787,0x888f,0x898b,
207         0x8a9b,0x8b9f,0x8c9b,0x8d9f,0x8e9f,0x8f9b,0x9087,0x9183,0x9283,0x9387,0x9483,0x9587,0x9687,0x9783,0x988b,0x998f
208 };
209
210
211
212
213 void I8080_BASE::initialize()
214 {
215         DEVICE::initialize();
216 }
217
218 void I8080_BASE::reset()
219 {
220         // reset
221         AF = BC = DE = HL = 0;
222         PC = 0;
223         SP = 0;
224         IM = IM_M5 | IM_M6 | IM_M7;
225         afterHALT = BUSREQ = false;
226         
227         count = 0;
228 }
229
230 void I8080_BASE::write_signal(int id, uint32_t data, uint32_t mask)
231 {
232         // Dummy Function.
233 }
234
235
236 uint32_t I8080_BASE::read_signal(int ch)
237 {
238         if(ch == SIG_I8080_INTE) {
239                 if(!afterEI && (IM & IM_IEN)) {
240                         return 0xffffffff;
241                 }
242         }
243         return 0;
244 }
245
246 void I8080_BASE::set_intr_line(bool line, bool pending, uint32_t bit)
247 {
248         if(line) {
249                 IM |= IM_INT;
250         } else {
251                 IM &= ~IM_INT;
252         }
253 }
254
255 int I8080_BASE::run(int clock)
256 {
257         // Dummy Function
258         return 0;
259 }
260
261
262 // opecode definitions
263
264 #define INR(v) { \
265         uint8_t hc = ((v & 0x0f) == 0x0f) ? HF : 0; \
266         ++v; \
267         _F = (_F & CF) | ZSP[v] | hc; \
268 }
269 #define DCR(v) { \
270         uint8_t hc = ((v & 0x0f) == 0x00) ? HF : 0; \
271         --v; \
272         _F = (_F & CF) | ZSP[v] | hc | NF; \
273 }
274 #define MVI(v) { \
275         v = FETCH8(); \
276 }
277
278
279 #define ORA(v) {                                                                \
280         _A |= v; \
281         _F = ZSP[_A]; \
282 }
283 #define XRA(v) { \
284         _A ^= v; \
285         _F = ZSP[_A]; \
286 }
287 #define RLC() { \
288         _A = (_A << 1) | (_A >> 7); \
289         _F = (_F & 0xfe) | (_A & CF); \
290 }
291 #define RRC() { \
292         _F = (_F & 0xfe) | (_A & CF); \
293         _A = (_A >> 1) | (_A << 7); \
294 }
295 #define RAL() { \
296         int c = _F & CF; \
297         _F = (_F & 0xfe) | (_A >> 7); \
298         _A = (_A << 1) | c; \
299 }
300 #define RAR() { \
301         int c = (_F & CF) << 7; \
302         _F = (_F & 0xfe) | (_A & CF); \
303         _A = (_A >> 1) | c; \
304 }
305 #define ADD(v) { \
306         int q = _A + v; \
307         _F = ZSP[q & 255] | ((q >> 8) & CF) | ((_A ^ q ^ v) & HF) | (((v ^ _A ^ SF) & (v ^ q) & SF) >> 5); \
308         _A = q; \
309 }
310 #define ADC(v) {\
311         int q = _A + v + (_F & CF); \
312         _F = ZSP[q & 255] | ((q >> 8) & CF) | ((_A ^ q ^ v) & HF) | (((v ^ _A ^ SF) & (v ^ q) & SF) >> 5); \
313         _A = q; \
314 }
315 #define SUB(v) { \
316         int q = _A - v; \
317         _F = ZSP[q & 255] | ((q >> 8) & CF) | NF | ((_A ^ q ^ v) & HF) | (((v ^ _A) & (_A ^ q) & SF) >> 5); \
318         _A = q; \
319 }
320 #define SBB(v) { \
321         int q = _A - v - (_F & CF); \
322         _F = ZSP[q & 255] | ((q >> 8) & CF) | NF | ((_A ^ q ^ v) & HF) | (((v ^ _A) & (_A ^ q) & SF) >> 5); \
323         _A = q; \
324 }
325 #define CMP(v) { \
326         int q = _A - v; \
327         _F = ZSP[q & 255] | ((q >> 8) & CF) | NF | ((_A ^ q ^ v) & HF) | (((v ^ _A) & (_A ^ q) & SF) >> 5); \
328 }
329 #define DAD(v) { \
330         int q = HL + v; \
331         _F = (_F & ~(HF + CF)) | (((HL ^ q ^ v) >> 8) & HF) | ((q >> 16) & CF); \
332         HL = q; \
333 }
334 #define RET(c) { \
335         if(c) { \
336                 count -= 6; \
337                 PC = POP16(); \
338         }       \
339 }
340
341 void I8080_BASE::JMP(uint8_t c)
342 {
343         if(c) {
344                 uint16_t a = FETCH16();
345                 printf("JMP  PC=%04x To=%04x\n", PC, a);
346                 PC = a;
347         } else {
348                 printf("Not JMP\n");
349                 PC += 2;
350                 count += 3;
351         }
352 }
353
354
355 void I8080_BASE::CALL(uint8_t c)
356 {
357         if(c) {
358                 uint16_t a = FETCH16();
359                 printf("CALL PC=%04x To=%04x\n", PC, a);
360                 count -= 7;
361                 PUSH16(PC);
362                 PC = a;
363         } else {
364                 printf("Not CALL\n");
365                 PC += 2;
366                 count += 2;
367         }
368
369 }
370
371 void I8080_BASE::DSUB()
372 {
373         int q = _L - _C;
374         _F = ZS[q & 255] | ((q >> 8) & CF) | NF | ((_L ^ q ^ _C) & HF) | (((_C ^ _L) & (_L ^ q) & SF) >> 5);
375         _L = q;
376         q = _H - _B - (_F & CF);
377         _F = ZS[q & 255] | ((q >> 8) & CF) | NF | ((_H ^ q ^ _B) & HF) | (((_B ^ _H) & (_H ^ q) & SF) >> 5);
378         if(_L != 0)
379                 _F &= ~ZF;
380 }
381
382
383 void I8080_BASE::ANA(uint8_t v)
384 {
385 }
386
387 void I8080_BASE::OP(uint8_t code)
388 {
389         uint8_t tmp8;
390         uint16_t tmp16;
391         
392         prevPC = PC - 1;
393         dec_count(code);
394         
395         switch(code) {
396         case 0x00: // NOP
397                 break;
398         case 0x01: // LXI B,nnnn
399                 BC = FETCH16();
400                 break;
401         case 0x02: // STAX B
402                 WM8(BC, _A);
403                 break;
404         case 0x03: // INX B
405                 BC++;
406 //#ifdef HAS_I8085
407 //              if(_C == 0x00) _F |= XF; else _F &= ~XF;
408 //#endif
409                 check_reg_c(0x00);
410                 break;
411         case 0x04: // INR B
412                 INR(_B);
413                 break;
414         case 0x05: // DCR B
415                 DCR(_B);
416                 break;
417         case 0x06: // MVI B,nn
418                 MVI(_B);
419                 break;
420         case 0x07: // RLC
421                 RLC();
422                 break;
423         case 0x08: // DSUB (NOP)
424 //#ifdef HAS_I8085
425 //              DSUB();
426 //#endif
427                 INSN_0x08();
428                 break;
429         case 0x09: // DAD B
430                 DAD(BC);
431                 break;
432         case 0x0a: // LDAX B
433                 _A = RM8(BC);
434                 break;
435         case 0x0b: // DCX B
436                 BC--;
437 //#ifdef HAS_I8085
438 //              if(_C == 0xff) _F |= XF; else _F &= ~XF;
439 //#endif
440                 check_reg_c(0xff);
441                 break;
442         case 0x0c: // INR C
443                 INR(_C);
444                 break;
445         case 0x0d: // DCR C
446                 DCR(_C);
447                 break;
448         case 0x0e: // MVI C,nn
449                 MVI(_C);
450                 break;
451         case 0x0f: // RRC
452                 RRC();
453                 break;
454         case 0x10: // ASRH (NOP)
455 //#ifdef HAS_I8085
456 //              _F = (_F & ~CF) | (_L & CF);
457 //              HL = (HL >> 1);
458 //#endif
459                 INSN_0x10();
460                 break;
461         case 0x11: // LXI D,nnnn
462                 DE = FETCH16();
463                 break;
464         case 0x12: // STAX D
465                 WM8(DE, _A);
466                 break;
467         case 0x13: // INX D
468                 DE++;
469 //#ifdef HAS_I8085
470 //              if(_E == 0x00) _F |= XF; else _F &= ~XF;
471 //#endif
472                 check_reg_e(0x00);
473                 break;
474         case 0x14: // INR D
475                 INR(_D);
476                 break;
477         case 0x15: // DCR D
478                 DCR(_D);
479                 break;
480         case 0x16: // MVI D,nn
481                 MVI(_D);
482                 break;
483         case 0x17: // RAL
484                 RAL();
485                 break;
486         case 0x18: // RLDE (NOP)
487                 RLDE();
488                 break;
489         case 0x19: // DAD D
490                 DAD(DE);
491                 break;
492         case 0x1a: // LDAX D
493                 _A = RM8(DE);
494                 break;
495         case 0x1b: // DCX D
496                 DE--;
497 //#ifdef HAS_I8085
498 //              if(_E == 0xff) _F |= XF; else _F &= ~XF;
499 //#endif
500                 check_reg_e(0xff);
501                 break;
502         case 0x1c: // INR E
503                 INR(_E);
504                 break;
505         case 0x1d: // DCR E
506                 DCR(_E);
507                 break;
508         case 0x1e: // MVI E,nn
509                 MVI(_E);
510                 break;
511         case 0x1f: // RAR
512                 RAR();
513                 break;
514         case 0x20: // RIM (NOP)
515                 RIM();
516 //#ifdef HAS_I8085
517 //              _A = (IM & 0x7f) | (SID ? 0x80 : 0) | RIM_IEN;
518 //              RIM_IEN = 0;
519 //#endif
520                 break;
521         case 0x21: // LXI H,nnnn
522                 HL = FETCH16();
523                 break;
524         case 0x22: // SHLD nnnn
525                 WM16(FETCH16(), HL);
526                 break;
527         case 0x23: // INX H
528                 HL++;
529 //#ifdef HAS_I8085
530 //              if(_L == 0x00) _F |= XF; else _F &= ~XF;
531 //#endif
532                 check_reg_l(0x00);
533                 break;
534         case 0x24: // INR H
535                 INR(_H);
536                 break;
537         case 0x25: // DCR H
538                 DCR(_H);
539                 break;
540         case 0x26: // MVI H,nn
541                 MVI(_H);
542                 break;
543         case 0x27: // DAA
544                 _DAA();
545                 break;
546         case 0x28: // LDEH nn (NOP)
547 //#ifdef HAS_I8085
548 //              DE = (HL + FETCH8()) & 0xffff;
549 //#endif
550                 LDEH();
551                 break;
552         case 0x29: // DAD H
553                 DAD(HL);
554                 break;
555         case 0x2a: // LHLD nnnn
556                 HL = RM16(FETCH16());
557                 break;
558         case 0x2b: // DCX H
559                 HL--;
560 //#ifdef HAS_I8085
561 //              if(_L == 0xff) _F |= XF; else _F &= ~XF;
562 //#endif
563                 check_reg_l(0xff);
564                 break;
565         case 0x2c: // INR L
566                 INR(_L);
567                 break;
568         case 0x2d: // DCR L
569                 DCR(_L);
570                 break;
571         case 0x2e: // MVI L,nn
572                 MVI(_L);
573                 break;
574         case 0x2f: // CMA
575                 CMA();
576                 break;
577         case 0x30: // SIM (NOP)
578                 SIM();
579                 break;
580         case 0x31: // LXI SP,nnnn
581                 SP = FETCH16();
582                 break;
583         case 0x32: // STA nnnn
584                 WM8(FETCH16(), _A);
585                 break;
586         case 0x33: // INX SP
587                 SP++;
588 //#ifdef HAS_I8085
589 //              if((SP & 0xff) == 0) _F |= XF; else _F &= ~XF;
590 //#endif
591                 check_reg_sp(0x00);
592                 break;
593         case 0x34: // INR M
594                 tmp8 = RM8(HL);
595                 INR(tmp8);
596                 WM8(HL, tmp8);
597                 break;
598         case 0x35: // DCR M
599                 tmp8 = RM8(HL);
600                 DCR(tmp8);
601                 WM8(HL, tmp8);
602                 break;
603         case 0x36: // MVI M,nn
604                 WM8(HL, FETCH8());
605                 break;
606         case 0x37: // STC
607                 _F = (_F & 0xfe) | CF;
608                 break;
609         case 0x38: // LDES nn (NOP)
610                 LDES();
611                 break;
612         case 0x39: // DAD SP
613                 DAD(SP);
614                 break;
615         case 0x3a: // LDA nnnn
616                 _A = RM8(FETCH16());
617                 break;
618         case 0x3b: // DCX SP
619                 SP--;
620 //#ifdef HAS_I8085
621 //              if((SP & 0xff) == 0xff) _F |= XF; else _F &= ~XF;
622 //#endif
623                 check_reg_sp(0xff);
624                 break;
625         case 0x3c: // INR A
626                 INR(_A);
627                 break;
628         case 0x3d: // DCR A
629                 DCR(_A);
630                 break;
631         case 0x3e: // MVI A,nn
632                 MVI(_A);
633                 break;
634         case 0x3f: // CMC
635                 _F = (_F & 0xfe) | ((_F & CF)==1 ? 0 : 1);
636                 break;
637         case 0x40: // MOV B,B
638                 break;
639         case 0x41: // MOV B,C
640                 _B = _C;
641                 break;
642         case 0x42: // MOV B,D
643                 _B = _D;
644                 break;
645         case 0x43: // MOV B,E
646                 _B = _E;
647                 break;
648         case 0x44: // MOV B,H
649                 _B = _H;
650                 break;
651         case 0x45: // MOV B,L
652                 _B = _L;
653                 break;
654         case 0x46: // MOV B,M
655                 _B = RM8(HL);
656                 break;
657         case 0x47: // MOV B,A
658                 _B = _A;
659                 break;
660         case 0x48: // MOV C,B
661                 _C = _B;
662                 break;
663         case 0x49: // MOV C,C
664                 break;
665         case 0x4a: // MOV C,D
666                 _C = _D;
667                 break;
668         case 0x4b: // MOV C,E
669                 _C = _E;
670                 break;
671         case 0x4c: // MOV C,H
672                 _C = _H;
673                 break;
674         case 0x4d: // MOV C,L
675                 _C = _L;
676                 break;
677         case 0x4e: // MOV C,M
678                 _C = RM8(HL);
679                 break;
680         case 0x4f: // MOV C,A
681                 _C = _A;
682                 break;
683         case 0x50: // MOV D,B
684                 _D = _B;
685                 break;
686         case 0x51: // MOV D,C
687                 _D = _C;
688                 break;
689         case 0x52: // MOV D,D
690                 break;
691         case 0x53: // MOV D,E
692                 _D = _E;
693                 break;
694         case 0x54: // MOV D,H
695                 _D = _H;
696                 break;
697         case 0x55: // MOV D,L
698                 _D = _L;
699                 break;
700         case 0x56: // MOV D,M
701                 _D = RM8(HL);
702                 break;
703         case 0x57: // MOV D,A
704                 _D = _A;
705                 break;
706         case 0x58: // MOV E,B
707                 _E = _B;
708                 break;
709         case 0x59: // MOV E,C
710                 _E = _C;
711                 break;
712         case 0x5a: // MOV E,D
713                 _E = _D;
714                 break;
715         case 0x5b: // MOV E,E
716                 break;
717         case 0x5c: // MOV E,H
718                 _E = _H;
719                 break;
720         case 0x5d: // MOV E,L
721                 _E = _L;
722                 break;
723         case 0x5e: // MOV E,M
724                 _E = RM8(HL);
725                 break;
726         case 0x5f: // MOV E,A
727                 _E = _A;
728                 break;
729         case 0x60: // MOV H,B
730                 _H = _B;
731                 break;
732         case 0x61: // MOV H,C
733                 _H = _C;
734                 break;
735         case 0x62: // MOV H,D
736                 _H = _D;
737                 break;
738         case 0x63: // MOV H,E
739                 _H = _E;
740                 break;
741         case 0x64: // MOV H,H
742                 break;
743         case 0x65: // MOV H,L
744                 _H = _L;
745                 break;
746         case 0x66: // MOV H,M
747                 _H = RM8(HL);
748                 break;
749         case 0x67: // MOV H,A
750                 _H = _A;
751                 break;
752         case 0x68: // MOV L,B
753                 _L = _B;
754                 break;
755         case 0x69: // MOV L,C
756                 _L = _C;
757                 break;
758         case 0x6a: // MOV L,D
759                 _L = _D;
760                 break;
761         case 0x6b: // MOV L,E
762                 _L = _E;
763                 break;
764         case 0x6c: // MOV L,H
765                 _L = _H;
766                 break;
767         case 0x6d: // MOV L,L
768                 break;
769         case 0x6e: // MOV L,M
770                 _L = RM8(HL);
771                 break;
772         case 0x6f: // MOV L,A
773                 _L = _A;
774                 break;
775         case 0x70: // MOV M,B
776                 WM8(HL, _B);
777                 break;
778         case 0x71: // MOV M,C
779                 WM8(HL, _C);
780                 break;
781         case 0x72: // MOV M,D
782                 WM8(HL, _D);
783                 break;
784         case 0x73: // MOV M,E
785                 WM8(HL, _E);
786                 break;
787         case 0x74: // MOV M,H
788                 WM8(HL, _H);
789                 break;
790         case 0x75: // MOV M,L
791                 WM8(HL, _L);
792                 break;
793         case 0x76: // HLT
794                 PC--;
795                 afterHALT = 1;
796                 break;
797         case 0x77: // MOV M,A
798                 WM8(HL, _A);
799                 break;
800         case 0x78: // MOV A,B
801                 _A = _B;
802                 break;
803         case 0x79: // MOV A,C
804                 _A = _C;
805                 break;
806         case 0x7a: // MOV A,D
807                 _A = _D;
808                 break;
809         case 0x7b: // MOV A,E
810                 _A = _E;
811                 break;
812         case 0x7c: // MOV A,H
813                 _A = _H;
814                 break;
815         case 0x7d: // MOV A,L
816                 _A = _L;
817                 break;
818         case 0x7e: // MOV A,M
819                 _A = RM8(HL);
820                 break;
821         case 0x7f: // MOV A,A
822                 break;
823         case 0x80: // ADD B
824                 ADD(_B);
825                 break;
826         case 0x81: // ADD C
827                 ADD(_C);
828                 break;
829         case 0x82: // ADD D
830                 ADD(_D);
831                 break;
832         case 0x83: // ADD E
833                 ADD(_E);
834                 break;
835         case 0x84: // ADD H
836                 ADD(_H);
837                 break;
838         case 0x85: // ADD L
839                 ADD(_L);
840                 break;
841         case 0x86: // ADD M
842                 ADD(RM8(HL));
843                 break;
844         case 0x87: // ADD A
845                 ADD(_A);
846                 break;
847         case 0x88: // ADC B
848                 ADC(_B);
849                 break;
850         case 0x89: // ADC C
851                 ADC(_C);
852                 break;
853         case 0x8a: // ADC D
854                 ADC(_D);
855                 break;
856         case 0x8b: // ADC E
857                 ADC(_E);
858                 break;
859         case 0x8c: // ADC H
860                 ADC(_H);
861                 break;
862         case 0x8d: // ADC L
863                 ADC(_L);
864                 break;
865         case 0x8e: // ADC M
866                 ADC(RM8(HL));
867                 break;
868         case 0x8f: // ADC A
869                 ADC(_A);
870                 break;
871         case 0x90: // SUB B
872                 SUB(_B);
873                 break;
874         case 0x91: // SUB C
875                 SUB(_C);
876                 break;
877         case 0x92: // SUB D
878                 SUB(_D);
879                 break;
880         case 0x93: // SUB E
881                 SUB(_E);
882                 break;
883         case 0x94: // SUB H
884                 SUB(_H);
885                 break;
886         case 0x95: // SUB L
887                 SUB(_L);
888                 break;
889         case 0x96: // SUB M
890                 SUB(RM8(HL));
891                 break;
892         case 0x97: // SUB A
893                 SUB(_A);
894                 break;
895         case 0x98: // SBB B
896                 SBB(_B);
897                 break;
898         case 0x99: // SBB C
899                 SBB(_C);
900                 break;
901         case 0x9a: // SBB D
902                 SBB(_D);
903                 break;
904         case 0x9b: // SBB E
905                 SBB(_E);
906                 break;
907         case 0x9c: // SBB H
908                 SBB(_H);
909                 break;
910         case 0x9d: // SBB L
911                 SBB(_L);
912                 break;
913         case 0x9e: // SBB M
914                 SBB(RM8(HL));
915                 break;
916         case 0x9f: // SBB A
917                 SBB(_A);
918                 break;
919         case 0xa0: // ANA B
920                 ANA(_B);
921                 break;
922         case 0xa1: // ANA C
923                 ANA(_C);
924                 break;
925         case 0xa2: // ANA D
926                 ANA(_D);
927                 break;
928         case 0xa3: // ANA E
929                 ANA(_E);
930                 break;
931         case 0xa4: // ANA H
932                 ANA(_H);
933                 break;
934         case 0xa5: // ANA L
935                 ANA(_L);
936                 break;
937         case 0xa6: // ANA M
938                 ANA(RM8(HL));
939                 break;
940         case 0xa7: // ANA A
941                 ANA(_A);
942                 break;
943         case 0xa8: // XRA B
944                 XRA(_B);
945                 break;
946         case 0xa9: // XRA C
947                 XRA(_C);
948                 break;
949         case 0xaa: // XRA D
950                 XRA(_D);
951                 break;
952         case 0xab: // XRA E
953                 XRA(_E);
954                 break;
955         case 0xac: // XRA H
956                 XRA(_H);
957                 break;
958         case 0xad: // XRA L
959                 XRA(_L);
960                 break;
961         case 0xae: // XRA M
962                 XRA(RM8(HL));
963                 break;
964         case 0xaf: // XRA A
965                 XRA(_A);
966                 break;
967         case 0xb0: // ORA B
968                 ORA(_B);
969                 break;
970         case 0xb1: // ORA C
971                 ORA(_C);
972                 break;
973         case 0xb2: // ORA D
974                 ORA(_D);
975                 break;
976         case 0xb3: // ORA E
977                 ORA(_E);
978                 break;
979         case 0xb4: // ORA H
980                 ORA(_H);
981                 break;
982         case 0xb5: // ORA L
983                 ORA(_L);
984                 break;
985         case 0xb6: // ORA M
986                 ORA(RM8(HL));
987                 break;
988         case 0xb7: // ORA A
989                 ORA(_A);
990                 break;
991         case 0xb8: // CMP B
992                 CMP(_B);
993                 break;
994         case 0xb9: // CMP C
995                 CMP(_C);
996                 break;
997         case 0xba: // CMP D
998                 CMP(_D);
999                 break;
1000         case 0xbb: // CMP E
1001                 CMP(_E);
1002                 break;
1003         case 0xbc: // CMP H
1004                 CMP(_H);
1005                 break;
1006         case 0xbd: // CMP L
1007                 CMP(_L);
1008                 break;
1009         case 0xbe: // CMP M
1010                 CMP(RM8(HL));
1011                 break;
1012         case 0xbf: // CMP A
1013                 CMP(_A);
1014                 break;
1015         case 0xc0: // RNZ
1016                 RET(!(_F & ZF));
1017                 break;
1018         case 0xc1: // POP B
1019                 BC = POP16();
1020                 break;
1021         case 0xc2: // JNZ nnnn
1022                 JMP(!(_F & ZF));
1023                 break;
1024         case 0xc3: // JMP nnnn
1025                 JMP(1);
1026                 break;
1027         case 0xc4: // CNZ nnnn
1028                 CALL(!(_F & ZF));
1029                 break;
1030         case 0xc5: // PUSH B
1031                 PUSH16(BC);
1032                 break;
1033         case 0xc6: // ADI nn
1034                 tmp8 = FETCH8();
1035                 ADD(tmp8);
1036                 break;
1037         case 0xc7: // RST 0
1038                 RST(0);
1039                 break;
1040         case 0xc8: // RZ
1041                 RET(_F & ZF);
1042                 break;
1043         case 0xc9: // RET
1044                 RET(1);
1045                 break;
1046         case 0xca: // JZ nnnn
1047                 JMP(_F & ZF);
1048                 break;
1049         case 0xcb: // RST 8 (JMP nnnn)
1050                 INSN_0xcb();
1051                 break;
1052         case 0xcc: // CZ nnnn
1053                 CALL(_F & ZF);
1054                 break;
1055         case 0xcd: // CALL nnnn
1056                 CALL(1);
1057                 break;
1058         case 0xce: // ACI nn
1059                 tmp8 = FETCH8();
1060                 ADC(tmp8);
1061                 break;
1062         case 0xcf: // RST 1
1063                 RST(1);
1064                 break;
1065         case 0xd0: // RNC
1066                 RET(!(_F & CF));
1067                 break;
1068         case 0xd1: // POP D
1069                 DE = POP16();
1070                 break;
1071         case 0xd2: // JNC nnnn
1072                 JMP(!(_F & CF));
1073                 break;
1074         case 0xd3: // OUT nn
1075                 OUT8(FETCH8(), _A);
1076                 break;
1077         case 0xd4: // CNC nnnn
1078                 CALL(!(_F & CF));
1079                 break;
1080         case 0xd5: // PUSH D
1081                 PUSH16(DE);
1082                 break;
1083         case 0xd6: // SUI nn
1084                 tmp8 = FETCH8();
1085                 SUB(tmp8);
1086                 break;
1087         case 0xd7: // RST 2
1088                 RST(2);
1089                 break;
1090         case 0xd8: // RC
1091                 RET(_F & CF);
1092                 break;
1093         case 0xd9: // SHLX (RET)
1094 //#ifdef HAS_I8085
1095 //              WM16(DE, HL);
1096 //#else
1097 //              RET(1);
1098 //#endif
1099                 INSN_0xd9();
1100                 break;
1101         case 0xda: // JC nnnn
1102                 JMP(_F & CF);
1103                 break;
1104         case 0xdb: // IN nn
1105                 _A = IN8(FETCH8());
1106                 break;
1107         case 0xdc: // CC nnnn
1108                 CALL(_F & CF);
1109                 break;
1110         case 0xdd: // JNX nnnn (CALL nnnn)
1111 //#ifdef HAS_I8085
1112 //              JMP(!(_F & XF));
1113 //#else
1114 //              CALL(1);
1115 //#endif
1116                 INSN_0xdd();
1117                 break;
1118         case 0xde: // SBI nn
1119                 tmp8 = FETCH8();
1120                 SBB(tmp8);
1121                 break;
1122         case 0xdf: // RST 3
1123                 RST(3);
1124                 break;
1125         case 0xe0: // RPO
1126                 RET(!(_F & VF));
1127                 break;
1128         case 0xe1: // POP H
1129                 HL = POP16();
1130                 break;
1131         case 0xe2: // JPO nnnn
1132                 JMP(!(_F & VF));
1133                 break;
1134         case 0xe3: // XTHL
1135                 tmp16 = POP16();
1136                 PUSH16(HL);
1137                 HL = tmp16;
1138                 break;
1139         case 0xe4: // CPO nnnn
1140                 CALL(!(_F & VF));
1141                 break;
1142         case 0xe5: // PUSH H
1143                 PUSH16(HL);
1144                 break;
1145         case 0xe6: // ANI nn
1146                 tmp8 = FETCH8();
1147                 ANA(tmp8);
1148                 break;
1149         case 0xe7: // RST 4
1150                 RST(4);
1151                 break;
1152         case 0xe8: // RPE
1153                 RET(_F & VF);
1154                 break;
1155         case 0xe9: // PCHL
1156                 PC = HL;
1157                 break;
1158         case 0xea: // JPE nnnn
1159                 JMP(_F & VF);
1160                 break;
1161         case 0xeb: // XCHG
1162                 tmp16 = DE;
1163                 DE = HL;
1164                 HL = tmp16;
1165                 break;
1166         case 0xec: // CPE nnnn
1167                 CALL(_F & VF);
1168                 break;
1169         case 0xed: // LHLX (CALL nnnn)
1170 //#ifdef HAS_I8085
1171 //              HL = RM16(DE);
1172 //#else
1173 //              CALL(1);
1174 //#endif
1175                 INSN_0xed();
1176                 break;
1177         case 0xee: // XRI nn
1178                 tmp8 = FETCH8();
1179                 XRA(tmp8);
1180                 break;
1181         case 0xef: // RST 5
1182                 RST(5);
1183                 break;
1184         case 0xf0: // RP
1185                 RET(!(_F & SF));
1186                 break;
1187         case 0xf1: // POP A
1188                 AF = POP16();
1189                 break;
1190         case 0xf2: // JP nnnn
1191                 JMP(!(_F & SF));
1192                 break;
1193         case 0xf3: // DI
1194                 IM &= ~IM_IEN;
1195                 break;
1196         case 0xf4: // CP nnnn
1197                 CALL(!(_F & SF));
1198                 break;
1199         case 0xf5: // PUSH A
1200                 PUSH16(AF);
1201                 break;
1202         case 0xf6: // ORI nn
1203                 tmp8 = FETCH8();
1204                 ORA(tmp8);
1205                 break;
1206         case 0xf7: // RST 6
1207                 RST(6);
1208                 break;
1209         case 0xf8: // RM
1210                 RET(_F & SF);
1211                 break;
1212         case 0xf9: // SPHL
1213                 SP = HL;
1214                 break;
1215         case 0xfa: // JM nnnn
1216                 JMP(_F & SF);
1217                 break;
1218         case 0xfb: // EI
1219                 IM |= IM_IEN;
1220                 afterEI = true;
1221                 break;
1222         case 0xfc: // CM nnnn
1223                 CALL(_F & SF);
1224                 break;
1225         case 0xfd: // JX nnnn (CALL nnnn)
1226 //#ifdef HAS_I8085
1227 //              JMP(_F & XF);
1228 //#else
1229 //              CALL(1);
1230 //#endif
1231                 INSN_0xfd();
1232                 break;
1233         case 0xfe: // CPI nn
1234                 tmp8 = FETCH8();
1235                 CMP(tmp8);
1236                 break;
1237         case 0xff: // RST 7
1238                 RST(7);
1239                 break;
1240 #if defined(_MSC_VER) && (_MSC_VER >= 1200)
1241         default:
1242                 __assume(0);
1243 #endif
1244         }
1245 }
1246
1247
1248 //#ifdef USE_DEBUGGER
1249 void I8080_BASE::write_debug_data8(uint32_t addr, uint32_t data)
1250 {
1251         int wait;
1252         d_mem_stored->write_data8w(addr, data, &wait);
1253 }
1254
1255 uint32_t I8080_BASE::read_debug_data8(uint32_t addr)
1256 {
1257         int wait;
1258         return d_mem_stored->read_data8w(addr, &wait);
1259 }
1260
1261 void I8080_BASE::write_debug_io8(uint32_t addr, uint32_t data)
1262 {
1263         int wait;
1264         d_io_stored->write_io8w(addr, data, &wait);
1265 }
1266
1267 uint32_t I8080_BASE::read_debug_io8(uint32_t addr)
1268 {
1269         int wait;
1270         return d_io_stored->read_io8w(addr, &wait);
1271 }
1272
1273 bool I8080_BASE::write_debug_reg(const _TCHAR *reg, uint32_t data)
1274 {
1275         if(_tcsicmp(reg, _T("PC")) == 0) {
1276                 PC = data;
1277         } else if(_tcsicmp(reg, _T("SP")) == 0) {
1278                 SP = data;
1279         } else if(_tcsicmp(reg, _T("AF")) == 0) {
1280                 AF = data;
1281         } else if(_tcsicmp(reg, _T("BC")) == 0) {
1282                 BC = data;
1283         } else if(_tcsicmp(reg, _T("DE")) == 0) {
1284                 DE = data;
1285         } else if(_tcsicmp(reg, _T("HL")) == 0) {
1286                 HL = data;
1287         } else if(_tcsicmp(reg, _T("A")) == 0) {
1288                 _A = data;
1289         } else if(_tcsicmp(reg, _T("F")) == 0) {
1290                 _F = data;
1291         } else if(_tcsicmp(reg, _T("B")) == 0) {
1292                 _B = data;
1293         } else if(_tcsicmp(reg, _T("C")) == 0) {
1294                 _C = data;
1295         } else if(_tcsicmp(reg, _T("D")) == 0) {
1296                 _D = data;
1297         } else if(_tcsicmp(reg, _T("E")) == 0) {
1298                 _E = data;
1299         } else if(_tcsicmp(reg, _T("H")) == 0) {
1300                 _H = data;
1301         } else if(_tcsicmp(reg, _T("L")) == 0) {
1302                 _L = data;
1303         } else {
1304                 return false;
1305         }
1306         return true;
1307 }
1308
1309 bool I8080_BASE::get_debug_regs_info(_TCHAR *buffer, size_t buffer_len)
1310 {
1311 /*
1312 F = [--------]  A = 00  BC = 0000  DE = 0000  HL = 0000  SP = 0000  PC = 0000
1313 IM= [--------]         (BC)= 0000 (DE)= 0000 (HL)= 0000 (SP)= 0000
1314 Clocks = 0 (0)  Since Scanline = 0/0 (0/0)
1315 */
1316         int wait;
1317         my_stprintf_s(buffer, buffer_len,
1318         _T("F = [%c%c%c%c%c%c%c%c]  A = %02X  BC = %04X  DE = %04X  HL = %04X  SP = %04X  PC = %04X\n")
1319         _T("IM= [%c%c%c%c%c%c%c%c]         (BC)= %04X (DE)= %04X (HL)= %04X (SP)= %04X\n")
1320         _T("Clocks = %llu (%llu) Since Scanline = %d/%d (%d/%d)"),
1321         (_F & CF) ? _T('C') : _T('-'), (_F & NF) ? _T('N') : _T('-'), (_F & VF) ? _T('V') : _T('-'), (_F & XF) ? _T('X') : _T('-'),
1322         (_F & HF) ? _T('H') : _T('-'), (_F & YF) ? _T('Y') : _T('-'), (_F & ZF) ? _T('Z') : _T('-'), (_F & SF) ? _T('S') : _T('-'),
1323         _A, BC, DE, HL, SP, PC,
1324         (IM & 0x80) ? _T('S') : _T('-'), (IM & 0x40) ? _T('7') : _T('-'), (IM & 0x20) ? _T('6') : _T('-'), (IM & 0x10) ? _T('5') : _T('-'),
1325         (IM & 0x08) ? _T('E') : _T('-'), (IM & 0x04) ? _T('7') : _T('-'), (IM & 0x02) ? _T('6') : _T('-'), (IM & 0x01) ? _T('5') : _T('-'),
1326         d_mem_stored->read_data16w(BC, &wait), d_mem_stored->read_data16w(DE, &wait), d_mem_stored->read_data16w(HL, &wait), d_mem_stored->read_data16w(SP, &wait),
1327         total_count, total_count - prev_total_count,
1328         get_passed_clock_since_vline(), get_cur_vline_clocks(), get_cur_vline(), get_lines_per_frame());
1329         prev_total_count = total_count;
1330         return true;
1331 }
1332
1333 // disassembler
1334
1335 int I8080_BASE::debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata)
1336 {
1337         uint8_t ops[4];
1338         int ptr = 0;
1339         if(d_debugger == NULL) return 0;
1340         
1341         for(int i = 0; i < 4; i++) {
1342                 int wait;
1343                 ops[i] = d_mem_stored->read_data8w(pc + i, &wait);
1344         }
1345         switch(ops[ptr++])
1346         {
1347                 case 0x00: my_stprintf_s(buffer, buffer_len, _T("nop")); break;
1348                 case 0x01: my_stprintf_s(buffer, buffer_len, _T("lxi  b,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1349                 case 0x02: my_stprintf_s(buffer, buffer_len, _T("stax b")); break;
1350                 case 0x03: my_stprintf_s(buffer, buffer_len, _T("inx  b")); break;
1351                 case 0x04: my_stprintf_s(buffer, buffer_len, _T("inr  b")); break;
1352                 case 0x05: my_stprintf_s(buffer, buffer_len, _T("dcr  b")); break;
1353                 case 0x06: my_stprintf_s(buffer, buffer_len, _T("mvi  b,$%02x"), ops[ptr++]); break;
1354                 case 0x07: my_stprintf_s(buffer, buffer_len, _T("rlc")); break;
1355                 case 0x08: my_stprintf_s(buffer, buffer_len, _T("dsub (*)")); break;
1356                 case 0x09: my_stprintf_s(buffer, buffer_len, _T("dad  b")); break;
1357                 case 0x0a: my_stprintf_s(buffer, buffer_len, _T("ldax b")); break;
1358                 case 0x0b: my_stprintf_s(buffer, buffer_len, _T("dcx  b")); break;
1359                 case 0x0c: my_stprintf_s(buffer, buffer_len, _T("inr  c")); break;
1360                 case 0x0d: my_stprintf_s(buffer, buffer_len, _T("dcr  c")); break;
1361                 case 0x0e: my_stprintf_s(buffer, buffer_len, _T("mvi  c,$%02x"), ops[ptr++]); break;
1362                 case 0x0f: my_stprintf_s(buffer, buffer_len, _T("rrc")); break;
1363                 case 0x10: my_stprintf_s(buffer, buffer_len, _T("asrh (*)")); break;
1364                 case 0x11: my_stprintf_s(buffer, buffer_len, _T("lxi  d,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1365                 case 0x12: my_stprintf_s(buffer, buffer_len, _T("stax d")); break;
1366                 case 0x13: my_stprintf_s(buffer, buffer_len, _T("inx  d")); break;
1367                 case 0x14: my_stprintf_s(buffer, buffer_len, _T("inr  d")); break;
1368                 case 0x15: my_stprintf_s(buffer, buffer_len, _T("dcr  d")); break;
1369                 case 0x16: my_stprintf_s(buffer, buffer_len, _T("mvi  d,$%02x"), ops[ptr++]); break;
1370                 case 0x17: my_stprintf_s(buffer, buffer_len, _T("ral")); break;
1371                 case 0x18: my_stprintf_s(buffer, buffer_len, _T("rlde (*)")); break;
1372                 case 0x19: my_stprintf_s(buffer, buffer_len, _T("dad  d")); break;
1373                 case 0x1a: my_stprintf_s(buffer, buffer_len, _T("ldax d")); break;
1374                 case 0x1b: my_stprintf_s(buffer, buffer_len, _T("dcx  d")); break;
1375                 case 0x1c: my_stprintf_s(buffer, buffer_len, _T("inr  e")); break;
1376                 case 0x1d: my_stprintf_s(buffer, buffer_len, _T("dcr  e")); break;
1377                 case 0x1e: my_stprintf_s(buffer, buffer_len, _T("mvi  e,$%02x"), ops[ptr++]); break;
1378                 case 0x1f: my_stprintf_s(buffer, buffer_len, _T("rar")); break;
1379                 case 0x20: my_stprintf_s(buffer, buffer_len, _T("rim")); break;
1380                 case 0x21: my_stprintf_s(buffer, buffer_len, _T("lxi  h,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1381                 case 0x22: my_stprintf_s(buffer, buffer_len, _T("shld %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1382                 case 0x23: my_stprintf_s(buffer, buffer_len, _T("inx  h")); break;
1383                 case 0x24: my_stprintf_s(buffer, buffer_len, _T("inr  h")); break;
1384                 case 0x25: my_stprintf_s(buffer, buffer_len, _T("dcr  h")); break;
1385                 case 0x26: my_stprintf_s(buffer, buffer_len, _T("mvi  h,$%02x"), ops[ptr++]); break;
1386                 case 0x27: my_stprintf_s(buffer, buffer_len, _T("daa")); break;
1387                 case 0x28: my_stprintf_s(buffer, buffer_len, _T("ldeh $%02x (*)"), ops[ptr++]); break;
1388                 case 0x29: my_stprintf_s(buffer, buffer_len, _T("dad  h")); break;
1389                 case 0x2a: my_stprintf_s(buffer, buffer_len, _T("lhld %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1390                 case 0x2b: my_stprintf_s(buffer, buffer_len, _T("dcx  h")); break;
1391                 case 0x2c: my_stprintf_s(buffer, buffer_len, _T("inr  l")); break;
1392                 case 0x2d: my_stprintf_s(buffer, buffer_len, _T("dcr  l")); break;
1393                 case 0x2e: my_stprintf_s(buffer, buffer_len, _T("mvi  l,$%02x"), ops[ptr++]); break;
1394                 case 0x2f: my_stprintf_s(buffer, buffer_len, _T("cma")); break;
1395                 case 0x30: my_stprintf_s(buffer, buffer_len, _T("sim")); break;
1396                 case 0x31: my_stprintf_s(buffer, buffer_len, _T("lxi  sp,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1397                 case 0x32: my_stprintf_s(buffer, buffer_len, _T("stax %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1398                 case 0x33: my_stprintf_s(buffer, buffer_len, _T("inx  sp")); break;
1399                 case 0x34: my_stprintf_s(buffer, buffer_len, _T("inr  m")); break;
1400                 case 0x35: my_stprintf_s(buffer, buffer_len, _T("dcr  m")); break;
1401                 case 0x36: my_stprintf_s(buffer, buffer_len, _T("mvi  m,$%02x"), ops[ptr++]); break;
1402                 case 0x37: my_stprintf_s(buffer, buffer_len, _T("stc")); break;
1403                 case 0x38: my_stprintf_s(buffer, buffer_len, _T("ldes $%02x"), ops[ptr++]); break;
1404                 case 0x39: my_stprintf_s(buffer, buffer_len, _T("dad sp")); break;
1405                 case 0x3a: my_stprintf_s(buffer, buffer_len, _T("ldax %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1406                 case 0x3b: my_stprintf_s(buffer, buffer_len, _T("dcx  sp")); break;
1407                 case 0x3c: my_stprintf_s(buffer, buffer_len, _T("inr  a")); break;
1408                 case 0x3d: my_stprintf_s(buffer, buffer_len, _T("dcr  a")); break;
1409                 case 0x3e: my_stprintf_s(buffer, buffer_len, _T("mvi  a,$%02x"), ops[ptr++]); break;
1410                 case 0x3f: my_stprintf_s(buffer, buffer_len, _T("cmf")); break;
1411                 case 0x40: my_stprintf_s(buffer, buffer_len, _T("mov  b,b")); break;
1412                 case 0x41: my_stprintf_s(buffer, buffer_len, _T("mov  b,c")); break;
1413                 case 0x42: my_stprintf_s(buffer, buffer_len, _T("mov  b,d")); break;
1414                 case 0x43: my_stprintf_s(buffer, buffer_len, _T("mov  b,e")); break;
1415                 case 0x44: my_stprintf_s(buffer, buffer_len, _T("mov  b,h")); break;
1416                 case 0x45: my_stprintf_s(buffer, buffer_len, _T("mov  b,l")); break;
1417                 case 0x46: my_stprintf_s(buffer, buffer_len, _T("mov  b,m")); break;
1418                 case 0x47: my_stprintf_s(buffer, buffer_len, _T("mov  b,a")); break;
1419                 case 0x48: my_stprintf_s(buffer, buffer_len, _T("mov  c,b")); break;
1420                 case 0x49: my_stprintf_s(buffer, buffer_len, _T("mov  c,c")); break;
1421                 case 0x4a: my_stprintf_s(buffer, buffer_len, _T("mov  c,d")); break;
1422                 case 0x4b: my_stprintf_s(buffer, buffer_len, _T("mov  c,e")); break;
1423                 case 0x4c: my_stprintf_s(buffer, buffer_len, _T("mov  c,h")); break;
1424                 case 0x4d: my_stprintf_s(buffer, buffer_len, _T("mov  c,l")); break;
1425                 case 0x4e: my_stprintf_s(buffer, buffer_len, _T("mov  c,m")); break;
1426                 case 0x4f: my_stprintf_s(buffer, buffer_len, _T("mov  c,a")); break;
1427                 case 0x50: my_stprintf_s(buffer, buffer_len, _T("mov  d,b")); break;
1428                 case 0x51: my_stprintf_s(buffer, buffer_len, _T("mov  d,c")); break;
1429                 case 0x52: my_stprintf_s(buffer, buffer_len, _T("mov  d,d")); break;
1430                 case 0x53: my_stprintf_s(buffer, buffer_len, _T("mov  d,e")); break;
1431                 case 0x54: my_stprintf_s(buffer, buffer_len, _T("mov  d,h")); break;
1432                 case 0x55: my_stprintf_s(buffer, buffer_len, _T("mov  d,l")); break;
1433                 case 0x56: my_stprintf_s(buffer, buffer_len, _T("mov  d,m")); break;
1434                 case 0x57: my_stprintf_s(buffer, buffer_len, _T("mov  d,a")); break;
1435                 case 0x58: my_stprintf_s(buffer, buffer_len, _T("mov  e,b")); break;
1436                 case 0x59: my_stprintf_s(buffer, buffer_len, _T("mov  e,c")); break;
1437                 case 0x5a: my_stprintf_s(buffer, buffer_len, _T("mov  e,d")); break;
1438                 case 0x5b: my_stprintf_s(buffer, buffer_len, _T("mov  e,e")); break;
1439                 case 0x5c: my_stprintf_s(buffer, buffer_len, _T("mov  e,h")); break;
1440                 case 0x5d: my_stprintf_s(buffer, buffer_len, _T("mov  e,l")); break;
1441                 case 0x5e: my_stprintf_s(buffer, buffer_len, _T("mov  e,m")); break;
1442                 case 0x5f: my_stprintf_s(buffer, buffer_len, _T("mov  e,a")); break;
1443                 case 0x60: my_stprintf_s(buffer, buffer_len, _T("mov  h,b")); break;
1444                 case 0x61: my_stprintf_s(buffer, buffer_len, _T("mov  h,c")); break;
1445                 case 0x62: my_stprintf_s(buffer, buffer_len, _T("mov  h,d")); break;
1446                 case 0x63: my_stprintf_s(buffer, buffer_len, _T("mov  h,e")); break;
1447                 case 0x64: my_stprintf_s(buffer, buffer_len, _T("mov  h,h")); break;
1448                 case 0x65: my_stprintf_s(buffer, buffer_len, _T("mov  h,l")); break;
1449                 case 0x66: my_stprintf_s(buffer, buffer_len, _T("mov  h,m")); break;
1450                 case 0x67: my_stprintf_s(buffer, buffer_len, _T("mov  h,a")); break;
1451                 case 0x68: my_stprintf_s(buffer, buffer_len, _T("mov  l,b")); break;
1452                 case 0x69: my_stprintf_s(buffer, buffer_len, _T("mov  l,c")); break;
1453                 case 0x6a: my_stprintf_s(buffer, buffer_len, _T("mov  l,d")); break;
1454                 case 0x6b: my_stprintf_s(buffer, buffer_len, _T("mov  l,e")); break;
1455                 case 0x6c: my_stprintf_s(buffer, buffer_len, _T("mov  l,h")); break;
1456                 case 0x6d: my_stprintf_s(buffer, buffer_len, _T("mov  l,l")); break;
1457                 case 0x6e: my_stprintf_s(buffer, buffer_len, _T("mov  l,m")); break;
1458                 case 0x6f: my_stprintf_s(buffer, buffer_len, _T("mov  l,a")); break;
1459                 case 0x70: my_stprintf_s(buffer, buffer_len, _T("mov  m,b")); break;
1460                 case 0x71: my_stprintf_s(buffer, buffer_len, _T("mov  m,c")); break;
1461                 case 0x72: my_stprintf_s(buffer, buffer_len, _T("mov  m,d")); break;
1462                 case 0x73: my_stprintf_s(buffer, buffer_len, _T("mov  m,e")); break;
1463                 case 0x74: my_stprintf_s(buffer, buffer_len, _T("mov  m,h")); break;
1464                 case 0x75: my_stprintf_s(buffer, buffer_len, _T("mov  m,l")); break;
1465                 case 0x76: my_stprintf_s(buffer, buffer_len, _T("hlt")); break;
1466                 case 0x77: my_stprintf_s(buffer, buffer_len, _T("mov  m,a")); break;
1467                 case 0x78: my_stprintf_s(buffer, buffer_len, _T("mov  a,b")); break;
1468                 case 0x79: my_stprintf_s(buffer, buffer_len, _T("mov  a,c")); break;
1469                 case 0x7a: my_stprintf_s(buffer, buffer_len, _T("mov  a,d")); break;
1470                 case 0x7b: my_stprintf_s(buffer, buffer_len, _T("mov  a,e")); break;
1471                 case 0x7c: my_stprintf_s(buffer, buffer_len, _T("mov  a,h")); break;
1472                 case 0x7d: my_stprintf_s(buffer, buffer_len, _T("mov  a,l")); break;
1473                 case 0x7e: my_stprintf_s(buffer, buffer_len, _T("mov  a,m")); break;
1474                 case 0x7f: my_stprintf_s(buffer, buffer_len, _T("mov  a,a")); break;
1475                 case 0x80: my_stprintf_s(buffer, buffer_len, _T("add  b")); break;
1476                 case 0x81: my_stprintf_s(buffer, buffer_len, _T("add  c")); break;
1477                 case 0x82: my_stprintf_s(buffer, buffer_len, _T("add  d")); break;
1478                 case 0x83: my_stprintf_s(buffer, buffer_len, _T("add  e")); break;
1479                 case 0x84: my_stprintf_s(buffer, buffer_len, _T("add  h")); break;
1480                 case 0x85: my_stprintf_s(buffer, buffer_len, _T("add  l")); break;
1481                 case 0x86: my_stprintf_s(buffer, buffer_len, _T("add  m")); break;
1482                 case 0x87: my_stprintf_s(buffer, buffer_len, _T("add  a")); break;
1483                 case 0x88: my_stprintf_s(buffer, buffer_len, _T("adc  b")); break;
1484                 case 0x89: my_stprintf_s(buffer, buffer_len, _T("adc  c")); break;
1485                 case 0x8a: my_stprintf_s(buffer, buffer_len, _T("adc  d")); break;
1486                 case 0x8b: my_stprintf_s(buffer, buffer_len, _T("adc  e")); break;
1487                 case 0x8c: my_stprintf_s(buffer, buffer_len, _T("adc  h")); break;
1488                 case 0x8d: my_stprintf_s(buffer, buffer_len, _T("adc  l")); break;
1489                 case 0x8e: my_stprintf_s(buffer, buffer_len, _T("adc  m")); break;
1490                 case 0x8f: my_stprintf_s(buffer, buffer_len, _T("adc  a")); break;
1491                 case 0x90: my_stprintf_s(buffer, buffer_len, _T("sub  b")); break;
1492                 case 0x91: my_stprintf_s(buffer, buffer_len, _T("sub  c")); break;
1493                 case 0x92: my_stprintf_s(buffer, buffer_len, _T("sub  d")); break;
1494                 case 0x93: my_stprintf_s(buffer, buffer_len, _T("sub  e")); break;
1495                 case 0x94: my_stprintf_s(buffer, buffer_len, _T("sub  h")); break;
1496                 case 0x95: my_stprintf_s(buffer, buffer_len, _T("sub  l")); break;
1497                 case 0x96: my_stprintf_s(buffer, buffer_len, _T("sub  m")); break;
1498                 case 0x97: my_stprintf_s(buffer, buffer_len, _T("sub  a")); break;
1499                 case 0x98: my_stprintf_s(buffer, buffer_len, _T("sbb  b")); break;
1500                 case 0x99: my_stprintf_s(buffer, buffer_len, _T("sbb  c")); break;
1501                 case 0x9a: my_stprintf_s(buffer, buffer_len, _T("sbb  d")); break;
1502                 case 0x9b: my_stprintf_s(buffer, buffer_len, _T("sbb  e")); break;
1503                 case 0x9c: my_stprintf_s(buffer, buffer_len, _T("sbb  h")); break;
1504                 case 0x9d: my_stprintf_s(buffer, buffer_len, _T("sbb  l")); break;
1505                 case 0x9e: my_stprintf_s(buffer, buffer_len, _T("sbb  m")); break;
1506                 case 0x9f: my_stprintf_s(buffer, buffer_len, _T("sbb  a")); break;
1507                 case 0xa0: my_stprintf_s(buffer, buffer_len, _T("ana  b")); break;
1508                 case 0xa1: my_stprintf_s(buffer, buffer_len, _T("ana  c")); break;
1509                 case 0xa2: my_stprintf_s(buffer, buffer_len, _T("ana  d")); break;
1510                 case 0xa3: my_stprintf_s(buffer, buffer_len, _T("ana  e")); break;
1511                 case 0xa4: my_stprintf_s(buffer, buffer_len, _T("ana  h")); break;
1512                 case 0xa5: my_stprintf_s(buffer, buffer_len, _T("ana  l")); break;
1513                 case 0xa6: my_stprintf_s(buffer, buffer_len, _T("ana  m")); break;
1514                 case 0xa7: my_stprintf_s(buffer, buffer_len, _T("ana  a")); break;
1515                 case 0xa8: my_stprintf_s(buffer, buffer_len, _T("xra  b")); break;
1516                 case 0xa9: my_stprintf_s(buffer, buffer_len, _T("xra  c")); break;
1517                 case 0xaa: my_stprintf_s(buffer, buffer_len, _T("xra  d")); break;
1518                 case 0xab: my_stprintf_s(buffer, buffer_len, _T("xra  e")); break;
1519                 case 0xac: my_stprintf_s(buffer, buffer_len, _T("xra  h")); break;
1520                 case 0xad: my_stprintf_s(buffer, buffer_len, _T("xra  l")); break;
1521                 case 0xae: my_stprintf_s(buffer, buffer_len, _T("xra  m")); break;
1522                 case 0xaf: my_stprintf_s(buffer, buffer_len, _T("xra  a")); break;
1523                 case 0xb0: my_stprintf_s(buffer, buffer_len, _T("ora  b")); break;
1524                 case 0xb1: my_stprintf_s(buffer, buffer_len, _T("ora  c")); break;
1525                 case 0xb2: my_stprintf_s(buffer, buffer_len, _T("ora  d")); break;
1526                 case 0xb3: my_stprintf_s(buffer, buffer_len, _T("ora  e")); break;
1527                 case 0xb4: my_stprintf_s(buffer, buffer_len, _T("ora  h")); break;
1528                 case 0xb5: my_stprintf_s(buffer, buffer_len, _T("ora  l")); break;
1529                 case 0xb6: my_stprintf_s(buffer, buffer_len, _T("ora  m")); break;
1530                 case 0xb7: my_stprintf_s(buffer, buffer_len, _T("ora  a")); break;
1531                 case 0xb8: my_stprintf_s(buffer, buffer_len, _T("cmp  b")); break;
1532                 case 0xb9: my_stprintf_s(buffer, buffer_len, _T("cmp  c")); break;
1533                 case 0xba: my_stprintf_s(buffer, buffer_len, _T("cmp  d")); break;
1534                 case 0xbb: my_stprintf_s(buffer, buffer_len, _T("cmp  e")); break;
1535                 case 0xbc: my_stprintf_s(buffer, buffer_len, _T("cmp  h")); break;
1536                 case 0xbd: my_stprintf_s(buffer, buffer_len, _T("cmp  l")); break;
1537                 case 0xbe: my_stprintf_s(buffer, buffer_len, _T("cmp  m")); break;
1538                 case 0xbf: my_stprintf_s(buffer, buffer_len, _T("cmp  a")); break;
1539                 case 0xc0: my_stprintf_s(buffer, buffer_len, _T("rnz")); break;
1540                 case 0xc1: my_stprintf_s(buffer, buffer_len, _T("pop  b")); break;
1541                 case 0xc2: my_stprintf_s(buffer, buffer_len, _T("jnz  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1542                 case 0xc3: my_stprintf_s(buffer, buffer_len, _T("jmp  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1543                 case 0xc4: my_stprintf_s(buffer, buffer_len, _T("cnz  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1544                 case 0xc5: my_stprintf_s(buffer, buffer_len, _T("push b")); break;
1545                 case 0xc6: my_stprintf_s(buffer, buffer_len, _T("adi  $%02x"), ops[ptr++]); break;
1546                 case 0xc7: my_stprintf_s(buffer, buffer_len, _T("rst  0")); break;
1547                 case 0xc8: my_stprintf_s(buffer, buffer_len, _T("rz")); break;
1548                 case 0xc9: my_stprintf_s(buffer, buffer_len, _T("ret")); break;
1549                 case 0xca: my_stprintf_s(buffer, buffer_len, _T("jz   %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1550                 case 0xcb: my_stprintf_s(buffer, buffer_len, _T("rstv 8 (*)")); break;
1551                 case 0xcc: my_stprintf_s(buffer, buffer_len, _T("cz   %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1552                 case 0xcd: my_stprintf_s(buffer, buffer_len, _T("call %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1553                 case 0xce: my_stprintf_s(buffer, buffer_len, _T("aci  $%02x"), ops[ptr++]); break;
1554                 case 0xcf: my_stprintf_s(buffer, buffer_len, _T("rst  1")); break;
1555                 case 0xd0: my_stprintf_s(buffer, buffer_len, _T("rnc")); break;
1556                 case 0xd1: my_stprintf_s(buffer, buffer_len, _T("pop  d")); break;
1557                 case 0xd2: my_stprintf_s(buffer, buffer_len, _T("jnc  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1558                 case 0xd3: my_stprintf_s(buffer, buffer_len, _T("out  $%02x"), ops[ptr++]); break;
1559                 case 0xd4: my_stprintf_s(buffer, buffer_len, _T("cnc  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1560                 case 0xd5: my_stprintf_s(buffer, buffer_len, _T("push d")); break;
1561                 case 0xd6: my_stprintf_s(buffer, buffer_len, _T("sui  $%02x"), ops[ptr++]); break;
1562                 case 0xd7: my_stprintf_s(buffer, buffer_len, _T("rst  2")); break;
1563                 case 0xd8: my_stprintf_s(buffer, buffer_len, _T("rc")); break;
1564                 case 0xd9: my_stprintf_s(buffer, buffer_len, _T("shlx d (*)")); break;
1565                 case 0xda: my_stprintf_s(buffer, buffer_len, _T("jc   %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1566                 case 0xdb: my_stprintf_s(buffer, buffer_len, _T("in   $%02x"), ops[ptr++]); break;
1567                 case 0xdc: my_stprintf_s(buffer, buffer_len, _T("cc   %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1568                 case 0xdd: my_stprintf_s(buffer, buffer_len, _T("jnx  %s (*)"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1569                 case 0xde: my_stprintf_s(buffer, buffer_len, _T("sbi  $%02x"), ops[ptr++]); break;
1570                 case 0xdf: my_stprintf_s(buffer, buffer_len, _T("rst  3")); break;
1571                 case 0xe0: my_stprintf_s(buffer, buffer_len, _T("rpo")); break;
1572                 case 0xe1: my_stprintf_s(buffer, buffer_len, _T("pop  h")); break;
1573                 case 0xe2: my_stprintf_s(buffer, buffer_len, _T("jpo  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1574                 case 0xe3: my_stprintf_s(buffer, buffer_len, _T("xthl")); break;
1575                 case 0xe4: my_stprintf_s(buffer, buffer_len, _T("cpo  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1576                 case 0xe5: my_stprintf_s(buffer, buffer_len, _T("push h")); break;
1577                 case 0xe6: my_stprintf_s(buffer, buffer_len, _T("ani  $%02x"), ops[ptr++]); break;
1578                 case 0xe7: my_stprintf_s(buffer, buffer_len, _T("rst  4")); break;
1579                 case 0xe8: my_stprintf_s(buffer, buffer_len, _T("rpe")); break;
1580                 case 0xe9: my_stprintf_s(buffer, buffer_len, _T("PChl")); break;
1581                 case 0xea: my_stprintf_s(buffer, buffer_len, _T("jpe  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1582                 case 0xeb: my_stprintf_s(buffer, buffer_len, _T("xchg")); break;
1583                 case 0xec: my_stprintf_s(buffer, buffer_len, _T("cpe  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1584                 case 0xed: my_stprintf_s(buffer, buffer_len, _T("lhlx d (*)")); break;
1585                 case 0xee: my_stprintf_s(buffer, buffer_len, _T("xri  $%02x"), ops[ptr++]); break;
1586                 case 0xef: my_stprintf_s(buffer, buffer_len, _T("rst  5")); break;
1587                 case 0xf0: my_stprintf_s(buffer, buffer_len, _T("rp")); break;
1588                 case 0xf1: my_stprintf_s(buffer, buffer_len, _T("pop  a")); break;
1589                 case 0xf2: my_stprintf_s(buffer, buffer_len, _T("jp   %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1590                 case 0xf3: my_stprintf_s(buffer, buffer_len, _T("di")); break;
1591                 case 0xf4: my_stprintf_s(buffer, buffer_len, _T("cp   %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1592                 case 0xf5: my_stprintf_s(buffer, buffer_len, _T("push a")); break;
1593                 case 0xf6: my_stprintf_s(buffer, buffer_len, _T("ori  $%02x"), ops[ptr++]); break;
1594                 case 0xf7: my_stprintf_s(buffer, buffer_len, _T("rst  6")); break;
1595                 case 0xf8: my_stprintf_s(buffer, buffer_len, _T("rm")); break;
1596                 case 0xf9: my_stprintf_s(buffer, buffer_len, _T("sphl")); break;
1597                 case 0xfa: my_stprintf_s(buffer, buffer_len, _T("jm   %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1598                 case 0xfb: my_stprintf_s(buffer, buffer_len, _T("ei")); break;
1599                 case 0xfc: my_stprintf_s(buffer, buffer_len, _T("cm   %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1600                 case 0xfd: my_stprintf_s(buffer, buffer_len, _T("jx   %s (*)"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
1601                 case 0xfe: my_stprintf_s(buffer, buffer_len, _T("cpi  $%02x"), ops[ptr++]); break;
1602                 case 0xff: my_stprintf_s(buffer, buffer_len, _T("rst  7")); break;
1603         }
1604         return ptr;
1605 }
1606 //#endif