trunk/src/mess/machine/mc80.c
r17388 | r17389 | |
137 | 137 | |
138 | 138 | Z80PIO_INTERFACE( mc8030_zve_z80pio_intf ) |
139 | 139 | { |
140 | | DEVCB_NULL, /* callback when change interrupt status */ |
| 140 | DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), /* callback when change interrupt status */ |
141 | 141 | DEVCB_DRIVER_MEMBER(mc80_state, zve_port_a_r), |
142 | 142 | DEVCB_DRIVER_MEMBER(mc80_state, zve_port_a_w), |
143 | 143 | DEVCB_NULL, |
r17388 | r17389 | |
166 | 166 | |
167 | 167 | Z80PIO_INTERFACE( mc8030_asp_z80pio_intf ) |
168 | 168 | { |
169 | | DEVCB_NULL, /* callback when change interrupt status */ |
| 169 | DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), /* callback when change interrupt status */ |
170 | 170 | DEVCB_DRIVER_MEMBER(mc80_state, asp_port_a_r), |
171 | 171 | DEVCB_DRIVER_MEMBER(mc80_state, asp_port_a_w), |
172 | 172 | DEVCB_NULL, |
r17388 | r17389 | |
177 | 177 | |
178 | 178 | Z80CTC_INTERFACE( mc8030_zve_z80ctc_intf ) |
179 | 179 | { |
180 | | DEVCB_NULL, |
181 | | DEVCB_NULL, |
182 | | DEVCB_NULL, |
183 | | DEVCB_NULL |
| 180 | DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), |
| 181 | DEVCB_NULL, // for user |
| 182 | DEVCB_NULL, // for user |
| 183 | DEVCB_NULL // for user |
184 | 184 | }; |
185 | 185 | |
186 | 186 | Z80CTC_INTERFACE( mc8030_asp_z80ctc_intf ) |
187 | 187 | { |
188 | | DEVCB_NULL, |
189 | | DEVCB_NULL, |
190 | | DEVCB_NULL, |
191 | | DEVCB_NULL |
| 188 | DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), |
| 189 | DEVCB_NULL, // to SIO CLK CH A |
| 190 | DEVCB_NULL, // to SIO CLK CH B |
| 191 | DEVCB_NULL // KMBG (??) |
192 | 192 | }; |
193 | 193 | |
| 194 | // SIO CH A in = keyboard; out = beeper; CH B = IFSS (??) |
194 | 195 | const z80sio_interface mc8030_asp_z80sio_intf = |
195 | 196 | { |
196 | 197 | 0, /* interrupt handler */ |
197 | 198 | 0, /* DTR changed handler */ |
198 | 199 | 0, /* RTS changed handler */ |
199 | 200 | 0, /* BREAK changed handler */ |
200 | | 0, /* transmit handler - which channel is this for? */ |
201 | | 0 /* receive handler - which channel is this for? */ |
| 201 | 0, /* transmit handler */ |
| 202 | 0 /* receive handler */ |
202 | 203 | }; |
203 | 204 | |
trunk/src/mess/drivers/mc80.c
r17388 | r17389 | |
6 | 6 | 12/05/2009 Skeleton driver. |
7 | 7 | 01/09/2011 Modernised, added a keyboard to mc8020 |
8 | 8 | |
9 | | Real workings of keyboard need to be understood and implemented. |
| 9 | Real workings of mc8020 keyboard need to be understood and implemented. |
10 | 10 | |
| 11 | mc8030: very little info available. The area from FFD8-FFFF is meant for |
| 12 | interrupt vectors and so on, but most of it is zeroes. Appears the keyboard |
| 13 | is an ascii keyboard with built-in beeper. It communicates via the SIO, |
| 14 | which needs a rewrite to become useful. The asp ctc needs at least 2 |
| 15 | triggers. The purpose of the zve pio is unknown. The system uses interrupts |
| 16 | for various things, but none of that is working. |
| 17 | |
11 | 18 | ****************************************************************************/ |
12 | 19 | |
13 | 20 | #include "includes/mc80.h" |
r17388 | r17389 | |
39 | 46 | |
40 | 47 | static ADDRESS_MAP_START(mc8030_io, AS_IO, 8, mc80_state) |
41 | 48 | ADDRESS_MAP_UNMAP_HIGH |
42 | | //ADDRESS_MAP_GLOBAL_MASK(0xff) |
43 | | //AM_RANGE(0x80, 0x84) AM_MIRROR(0xff00) AM_DEVREADWRITE("zve_ctc", z80ctc_device, read, write) |
44 | | //AM_RANGE(0x84, 0x87) AM_MIRROR(0xff00) AM_DEVREADWRITE("zve_pio", z80pio_device, read, write) |
45 | | AM_RANGE(0x8c, 0x8c) AM_MIRROR(0xff00) AM_WRITE(mc8030_zve_write_protect_w) |
| 49 | AM_RANGE(0x30, 0x3f) AM_MIRROR(0xff00) AM_NOP //"mass storage" |
| 50 | AM_RANGE(0x80, 0x83) AM_MIRROR(0xff00) AM_DEVREADWRITE("zve_ctc", z80ctc_device, read, write) // user CTC |
| 51 | AM_RANGE(0x84, 0x87) AM_MIRROR(0xff00) AM_DEVREADWRITE("zve_pio", z80pio_device, read, write) // PIO unknown usage |
| 52 | AM_RANGE(0x88, 0x8f) AM_MIRROR(0xff00) AM_WRITE(mc8030_zve_write_protect_w) |
46 | 53 | AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_WRITE(mc8030_vis_w) AM_MASK(0xffff) |
47 | | //AM_RANGE(0xd0, 0xd3) AM_MIRROR(0xff00) AM_DEVREADWRITE("asp_sio", z80ctc_device, read, write) |
48 | | AM_RANGE(0xd4, 0xd7) AM_MIRROR(0xff00) AM_DEVREADWRITE("asp_ctc", z80ctc_device, read, write) |
49 | | AM_RANGE(0xd8, 0xdb) AM_MIRROR(0xff00) AM_DEVREADWRITE("asp_pio", z80pio_device, read, write) |
| 54 | AM_RANGE(0xd0, 0xd3) AM_MIRROR(0xff00) AM_DEVREADWRITE("asp_sio", z80sio_device, read, write) // keyboard & IFSS? |
| 55 | AM_RANGE(0xd4, 0xd7) AM_MIRROR(0xff00) AM_DEVREADWRITE("asp_ctc", z80ctc_device, read, write) // sio bauds, KMBG? and kbd |
| 56 | AM_RANGE(0xd8, 0xdb) AM_MIRROR(0xff00) AM_DEVREADWRITE("asp_pio", z80pio_device, read, write) // external bus |
50 | 57 | AM_RANGE(0xe0, 0xef) AM_MIRROR(0xff00) AM_WRITE(mc8030_eprom_prog_w) |
51 | 58 | ADDRESS_MAP_END |
52 | 59 | |
r17388 | r17389 | |
140 | 147 | } |
141 | 148 | } |
142 | 149 | |
| 150 | // this is a guess there is no information available |
| 151 | static const z80_daisy_config mc8030_daisy_chain[] = |
| 152 | { |
| 153 | { "asp_ctc" }, /* System ctc */ |
| 154 | { "asp_pio" }, /* System pio */ |
| 155 | { "asp_sio" }, /* sio */ |
| 156 | { "zve_pio" }, /* User pio */ |
| 157 | { "zve_ctc" }, /* User ctc */ |
| 158 | { NULL } |
| 159 | }; |
| 160 | |
143 | 161 | static MACHINE_CONFIG_START( mc8020, mc80_state ) |
144 | 162 | /* basic machine hardware */ |
145 | 163 | MCFG_CPU_ADD("maincpu",Z80, XTAL_2_4576MHz) |
r17388 | r17389 | |
170 | 188 | MCFG_CPU_ADD("maincpu",Z80, XTAL_2_4576MHz) |
171 | 189 | MCFG_CPU_PROGRAM_MAP(mc8030_mem) |
172 | 190 | MCFG_CPU_IO_MAP(mc8030_io) |
| 191 | MCFG_CPU_CONFIG(mc8030_daisy_chain) |
173 | 192 | |
174 | 193 | MCFG_MACHINE_RESET(mc8030) |
175 | 194 | |