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
|
/****************************************************************************
* *
* Function prototypes and constants used by the TMS34061 emulator *
* *
* Created by Zsolt Vasvari on 5/26/1998. *
* Updated by Aaron Giles on 11/21/2000. *
* *
****************************************************************************/
/* register constants */
enum
{
TMS34061_HORENDSYNC = 0,
TMS34061_HORENDBLNK,
TMS34061_HORSTARTBLNK,
TMS34061_HORTOTAL,
TMS34061_VERENDSYNC,
TMS34061_VERENDBLNK,
TMS34061_VERSTARTBLNK,
TMS34061_VERTOTAL,
TMS34061_DISPUPDATE,
TMS34061_DISPSTART,
TMS34061_VERINT,
TMS34061_CONTROL1,
TMS34061_CONTROL2,
TMS34061_STATUS,
TMS34061_XYOFFSET,
TMS34061_XYADDRESS,
TMS34061_DISPADDRESS,
TMS34061_VERCOUNTER,
TMS34061_REGCOUNT
};
/* interface structure */
struct tms34061_interface
{
int scrnum; /* the screen we are acting on */
UINT8 rowshift; /* VRAM address is (row << rowshift) | col */
UINT32 vramsize; /* size of video RAM */
void (*interrupt)(running_machine *machine, int state); /* interrupt gen callback */
};
/* display state structure */
struct tms34061_display
{
UINT8 blanked; /* true if blanked */
UINT8 *vram; /* base of VRAM */
UINT8 *latchram; /* base of latch RAM */
UINT16 *regs; /* pointer to array of registers */
offs_t dispstart; /* display start */
};
/* starts/stops the emulator */
void tms34061_start(running_machine *machine, const struct tms34061_interface *interface);
/* reads/writes to the 34061 */
UINT8 tms34061_r(int col, int row, int func);
void tms34061_w(int col, int row, int func, UINT8 data);
/* latch settings */
READ8_HANDLER( tms34061_latch_r );
WRITE8_HANDLER( tms34061_latch_w );
/* video update handling */
void tms34061_get_display_state(struct tms34061_display *state);
|