Previous 199869 Revisions Next

r33754 Tuesday 9th December, 2014 at 01:56:59 UTC by Robbbert
(MESS) excalibur : added some devices (nw)
[src/mess/drivers]excali64.c

trunk/src/mess/drivers/excali64.c
r242265r242266
1111****************************************************************************/
1212
1313#include "emu.h"
14//#include "bus/rs232/rs232.h"
1514#include "cpu/z80/z80.h"
16//#include "machine/6850acia.h"
15#include "machine/i8251.h"
16#include "bus/rs232/rs232.h"
1717//#include "machine/clock.h"
18#include "machine/pit8253.h"
19#include "machine/i8255.h"
1820//#include "bus/centronics/ctronics.h"
21#include "imagedev/cassette.h"
22#include "sound/wave.h"
23#include "sound/speaker.h"
1924
2025
2126class excali64_state : public driver_device
r242265r242266
2429   excali64_state(const machine_config &mconfig, device_type type, const char *tag)
2530      : driver_device(mconfig, type, tag)
2631      , m_maincpu(*this, "maincpu")
32      , m_cass(*this, "cassette")
2733   { }
2834
35   DECLARE_READ8_MEMBER(ppic_r);
36   DECLARE_WRITE8_MEMBER(ppic_w);
37   DECLARE_READ8_MEMBER(port50_r);
38   DECLARE_WRITE8_MEMBER(port70_w);
39   
2940private:
41   UINT8 m_sys_status;
3042   required_device<cpu_device> m_maincpu;
43   required_device<cassette_image_device> m_cass;
3144};
3245
3346static ADDRESS_MAP_START(excali64_mem, AS_PROGRAM, 8, excali64_state)
r242265r242266
3649ADDRESS_MAP_END
3750
3851static ADDRESS_MAP_START(excali64_io, AS_IO, 8, excali64_state)
39   ADDRESS_MAP_GLOBAL_MASK(0x7f)
52   ADDRESS_MAP_GLOBAL_MASK(0xff)
53   AM_RANGE(0x10, 0x10) AM_MIRROR(0x0e) AM_DEVREADWRITE("uart",i8251_device, data_r, data_w)
54   AM_RANGE(0x11, 0x11) AM_MIRROR(0x0e) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
55   AM_RANGE(0x20, 0x23) AM_MIRROR(0x0c) AM_DEVREADWRITE("pit", pit8253_device, read, write)
56   AM_RANGE(0x60, 0x63) AM_MIRROR(0x0c) AM_DEVREADWRITE("ppi", i8255_device, read, write)
4057ADDRESS_MAP_END
4158
4259
r242265r242266
4461static INPUT_PORTS_START( excali64 )
4562INPUT_PORTS_END
4663
64READ8_MEMBER( excali64_state::ppic_r )
65{
66   UINT8 data = 0xf7;
67   data |= (m_cass->input() > 0.1) << 3;
68   return data;
69}
4770
71/*
72d0 : /rom ; screen
73d1 : ram on
74d2 : /low ; high res
75d3 : dispen
76d4 : vsync
77*/
78READ8_MEMBER( excali64_state::port50_r )
79{
80   UINT8 data = m_sys_status & 7;
81   return data;
82}
83
84WRITE8_MEMBER( excali64_state::ppic_w )
85{
86   m_cass->output(BIT(data, 7) ? -1.0 : +1.0);
87}
88
89/*
90d0,1,2 : same as port50
91d7 : 2nd col
92*/
93WRITE8_MEMBER( excali64_state::port70_w )
94{
95   m_sys_status = data;
96}
97
4898static MACHINE_CONFIG_START( excali64, excali64_state )
4999   /* basic machine hardware */
50100   MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz / 4)
51101   MCFG_CPU_PROGRAM_MAP(excali64_mem)
52102   MCFG_CPU_IO_MAP(excali64_io)
53103
54   //MCFG_DEVICE_ADD("acia", ACIA6850, 0)
55   //MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd))
56   //MCFG_ACIA6850_RTS_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_rts))
104   MCFG_DEVICE_ADD("uart", I8251, 0)
105   //MCFG_I8251_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd))
106   //MCFG_I8251_RTS_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_rts))
57107
58   //MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "terminal")
59   //MCFG_RS232_RXD_HANDLER(DEVWRITELINE("acia", acia6850_device, write_rxd))
60   //MCFG_RS232_CTS_HANDLER(DEVWRITELINE("acia", acia6850_device, write_cts))
108   MCFG_DEVICE_ADD("pit", PIT8253, 0)
109   MCFG_PIT8253_CLK0(XTAL_16MHz / 8) /* Timer 0: tone gen for speaker */
110   MCFG_PIT8253_OUT0_HANDLER(DEVWRITELINE("speaker", speaker_sound_device, level_w))
111   MCFG_PIT8253_CLK1(XTAL_16MHz / 8) /* Timer 1: baud rate gen for 8251 */
112   //MCFG_PIT8253_OUT1_HANDLER(WRITELINE(excali64_state, write_uart_clock))
113   //MCFG_PIT8253_CLK2(XTAL_16MHz / 8) /* Timer 2: not used */
61114
115   MCFG_DEVICE_ADD("ppi", I8255A, 0 )
116   //MCFG_I8255_IN_PORTA_CB(READ8(excali64_state, ppia_r))
117   //MCFG_I8255_OUT_PORTA_CB(WRITE8(excali64_state, ppia_w))
118   //MCFG_I8255_IN_PORTB_CB(READ8(excali64_state, ppib_r))
119   //MCFG_I8255_OUT_PORTB_CB(WRITE8(excali64_state, ppib_w))
120   MCFG_I8255_IN_PORTC_CB(READ8(excali64_state, ppic_r))
121   MCFG_I8255_OUT_PORTC_CB(WRITE8(excali64_state, ppic_w))
122
62123   //MCFG_DEVICE_ADD("acia_clock", CLOCK, 153600)
63124   //MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(excali64_state, write_acia_clock))
64MACHINE_CONFIG_END
65125
126   /* sound hardware */
127   MCFG_SPEAKER_STANDARD_MONO("mono")
128   MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
129   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
130   MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
131   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
132
133   /* Devices */
134   MCFG_CASSETTE_ADD( "cassette" )
135   MACHINE_CONFIG_END
136
66137/* ROM definition */
67138ROM_START( excali64 )
68139   ROM_REGION(0x10000, "maincpu", 0)


Previous 199869 Revisions Next


© 1997-2024 The MAME Team