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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
#ifndef HEADER__G65816
#define HEADER__G65816
/* ======================================================================== */
/* =============================== COPYRIGHT ============================== */
/* ======================================================================== */
/*
G65C816 CPU Emulator V0.92
Copyright (c) 2000 Karl Stenerud
All rights reserved.
Permission is granted to use this source code for non-commercial purposes.
To use this code for commercial purposes, you must get permission from the
author (Karl Stenerud) at karl@higashiyama-unet.ocn.ne.jp.
*/
/* ======================================================================== */
/* ============================= Configuration ============================ */
/* ======================================================================== */
/* GTE Microcircuits G65816 */
/* ======================================================================== */
/* =============================== DEFINES ================================ */
/* ======================================================================== */
/* Interrupt lines - used with g65816_set_irq_line() */
enum
{
G65816_LINE_NONE,
G65816_LINE_IRQ,
G65816_LINE_NMI,
G65816_LINE_ABORT,
G65816_LINE_SO,
G65816_LINE_RDY,
G65816_LINE_RESET
};
#define G65816_INT_NONE G65816_LINE_NONE
#define G65816_INT_IRQ G65816_LINE_IRQ
#define G65816_INT_NMI G65816_LINE_NMI
/* Registers - used by g65816_set_reg() and g65816_get_reg() */
enum
{
G65816_PC=1, G65816_S, G65816_P, G65816_A, G65816_X, G65816_Y,
G65816_PB, G65816_DB, G65816_D, G65816_E,
G65816_NMI_STATE, G65816_IRQ_STATE
};
/* ======================================================================== */
/* =================== Functions Implemented by the Host ================== */
/* ======================================================================== */
/* Read data from RAM */
unsigned int g65816_read_8(unsigned int address);
/* Read data from ROM */
unsigned int g65816_read_8_immediate(unsigned int address);
/* Write data to RAM */
void g65816_write_8(unsigned int address, unsigned int value);
/* Notification of PC changes */
void g65816_jumping(unsigned int new_pc);
void g65816_branching(unsigned int new_pc);
/* ======================================================================== */
/* ================================= MAME ================================= */
/* ======================================================================== */
#include "cpuintrf.h"
#include "debugger.h"
enum
{
CPUINFO_PTR_G65816_READVECTOR_CALLBACK = CPUINFO_PTR_CPU_SPECIFIC
};
/* Main interface function */
void g65816_get_info(UINT32 state, cpuinfo *info);
#undef G65816_CALL_DEBUGGER
#define G65816_CALL_DEBUGGER CALL_MAME_DEBUG
#define g65816_read_8(addr) program_read_byte_8(addr)
#define g65816_write_8(addr,data) program_write_byte_8(addr,data)
#define g65816_read_8_immediate(A) program_read_byte_8(A)
#define g65816_jumping(A) change_pc(A)
#define g65816_branching(A)
/* ======================================================================== */
/* ============================== END OF FILE ============================= */
/* ======================================================================== */
#endif /* HEADER__G65816 */
|