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
|
/***************************************************************************
h8priv.h : Private constants and other definitions for the H8/3002 emulator.
****************************************************************************/
#pragma once
#ifndef __H8PRIV_H__
#define __H8PRIV_H__
typedef struct _h83xx_state h83xx_state;
struct _h83xx_state
{
// main CPU stuff
UINT32 h8err;
UINT32 regs[8];
UINT32 pc, ppc;
UINT32 h8_IRQrequestH, h8_IRQrequestL;
INT32 cyccnt;
UINT8 ccr;
UINT8 h8nflag, h8vflag, h8cflag, h8zflag, h8iflag, h8hflag;
UINT8 h8uflag, h8uiflag;
UINT8 incheckirqs;
device_irq_callback irq_cb;
legacy_cpu_device *device;
address_space *program;
direct_read_data *direct;
address_space *io;
// onboard peripherals stuff
UINT8 per_regs[256];
UINT16 h8TCNT[5];
UINT8 h8TSTR;
UINT8 STCR, TCR[2], TCSR[2], TCORA[2], TCORB[2], TCNT[2];
UINT16 FRC;
emu_timer *timer[5];
emu_timer *frctimer;
int mode_8bit;
};
INLINE h83xx_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->type() == H83002 ||
device->type() == H83007 ||
device->type() == H83044 ||
device->type() == H83334);
return (h83xx_state *)downcast<legacy_cpu_device *>(device)->token();
}
UINT8 h8_register_read8(h83xx_state *h8, UINT32 address);
UINT8 h8_3007_register_read8(h83xx_state *h8, UINT32 address);
UINT8 h8_3007_register1_read8(h83xx_state *h8, UINT32 address);
void h8_register_write8(h83xx_state *h8, UINT32 address, UINT8 val);
void h8_3007_register_write8(h83xx_state *h8, UINT32 address, UINT8 val);
void h8_3007_register1_write8(h83xx_state *h8, UINT32 address, UINT8 val);
void h8_itu_init(h83xx_state *h8);
void h8_3007_itu_init(h83xx_state *h8);
void h8_itu_reset(h83xx_state *h8);
UINT8 h8_itu_read8(h83xx_state *h8, UINT8 reg);
UINT8 h8_3007_itu_read8(h83xx_state *h8, UINT8 reg);
void h8_itu_write8(h83xx_state *h8, UINT8 reg, UINT8 val);
void h8_3007_itu_write8(h83xx_state *h8, UINT8 reg, UINT8 val);
#endif /* __H8PRIV_H__ */
|