Previous 15994 Revisions Next

r11082 Monday 4th April, 2011 at 13:12:07 UTC by Robbbert
[SUN1] Modernised, added terminal keyboard.
[src/mess/drivers]sun1.c

src/mess/drivers/sun1.c
r11081r11082
88
99        04/12/2009 Skeleton driver.
1010
11        04/04/2011 Modernised, added terminal keyboard.
12
1113****************************************************************************/
14#define ADDRESS_MAP_MODERN
1215
1316#include "emu.h"
1417#include "cpu/m68000/m68000.h"
1518#include "machine/upd7201.h"
1619#include "machine/terminal.h"
1720
21#define MACHINE_RESET_MEMBER(name) void name::machine_reset()
1822
1923class sun1_state : public driver_device
2024{
2125public:
2226   sun1_state(running_machine &machine, const driver_device_config_base &config)
23      : driver_device(machine, config) { }
27      : driver_device(machine, config),
28   m_maincpu(*this, "maincpu"),
29   m_terminal(*this, TERMINAL_TAG)
30   { }
2431
32   required_device<cpu_device> m_maincpu;
33   required_device<device_t> m_terminal;
34   DECLARE_READ16_MEMBER( sun1_upd7201_r );
35   DECLARE_WRITE16_MEMBER( sun1_upd7201_w );
36   DECLARE_WRITE8_MEMBER( sun1_kbd_put );
37   virtual void machine_reset();
2538   UINT16* m_ram;
39   UINT8 m_term_data;
2640};
2741
2842
2943
3044// Just hack to show output since upd7201 is not implemented yet
3145
32static READ16_HANDLER(sun1_upd7201_r)
46READ16_MEMBER(sun1_state::sun1_upd7201_r)
3347{
34   return 0xffff;
48   UINT16 ret;
49   if (offset == 0)
50   {
51      ret = m_term_data << 8;
52      m_term_data = 0;
53   }
54   else
55      ret = 0xfeff | (m_term_data ? 0x100 : 0);
56
57   return ret;
3558}
3659
37static WRITE16_HANDLER(sun1_upd7201_w)
60WRITE16_MEMBER(sun1_state::sun1_upd7201_w)
3861{
39   device_t *devconf = space->machine().device(TERMINAL_TAG);
40   if (offset==0) terminal_write(devconf,0,data >> 8);
62   if (offset == 0)
63      terminal_write(m_terminal, 0, data >> 8);
4164}
4265
43static ADDRESS_MAP_START(sun1_mem, AS_PROGRAM, 16)
66static ADDRESS_MAP_START(sun1_mem, AS_PROGRAM, 16, sun1_state)
4467   ADDRESS_MAP_UNMAP_HIGH
45   AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_BASE_MEMBER(sun1_state, m_ram) // 512 KB RAM / ROM at boot
68   AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_BASE(m_ram) // 512 KB RAM / ROM at boot
4669   AM_RANGE(0x00200000, 0x00203fff) AM_ROM AM_REGION("user1",0)
4770   AM_RANGE(0x00600000, 0x00600007) AM_READWRITE( sun1_upd7201_r, sun1_upd7201_w )
4871ADDRESS_MAP_END
r11081r11082
5275INPUT_PORTS_END
5376
5477
55static MACHINE_RESET(sun1)
78MACHINE_RESET_MEMBER(sun1_state)
5679{
57   sun1_state *state = machine.driver_data<sun1_state>();
58   UINT8* user1 = machine.region("user1")->base();
80   UINT8* user1 = m_machine.region("user1")->base();
5981
60   memcpy((UINT8*)state->m_ram,user1,0x4000);
82   memcpy((UINT8*)m_ram,user1,0x4000);
6183
62   machine.device("maincpu")->reset();
84   m_machine.device("maincpu")->reset();
85   m_term_data = 0;
6386}
6487
6588
66static WRITE8_DEVICE_HANDLER( sun1_kbd_put )
89WRITE8_MEMBER( sun1_state::sun1_kbd_put )
6790{
91   m_term_data = data;
6892}
6993
7094static GENERIC_TERMINAL_INTERFACE( sun1_terminal_intf )
7195{
72   DEVCB_HANDLER(sun1_kbd_put)
96   DEVCB_DRIVER_MEMBER(sun1_state, sun1_kbd_put)
7397};
7498
7599
76100static MACHINE_CONFIG_START( sun1, sun1_state )
77    /* basic machine hardware */
78    MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz)
79    MCFG_CPU_PROGRAM_MAP(sun1_mem)
101   /* basic machine hardware */
102   MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz)
103   MCFG_CPU_PROGRAM_MAP(sun1_mem)
80104
81    MCFG_MACHINE_RESET(sun1)
82
83    /* video hardware */
84    MCFG_FRAGMENT_ADD( generic_terminal )
105   /* video hardware */
106   MCFG_FRAGMENT_ADD( generic_terminal )
85107   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG,sun1_terminal_intf)
86108MACHINE_CONFIG_END
87109
88110/* ROM definition */
89111ROM_START( sun1 )
90    ROM_REGION( 0x4000, "user1", ROMREGION_ERASEFF )
112   ROM_REGION( 0x4000, "user1", ROMREGION_ERASEFF )
91113   ROM_LOAD16_BYTE( "v10.8.bin", 0x0001, 0x2000, CRC(3528a0f8) SHA1(be437dd93d1a44eccffa6f5e05935119482beab0))
92114   ROM_LOAD16_BYTE( "v10.0.bin", 0x0000, 0x2000, CRC(1ad4c52a) SHA1(4bc1a19e8f202378d5d7baa8b95319275c040a6d))
115
93116   ROM_REGION( 0x4000, "diag", ROMREGION_ERASEFF )
94117   ROM_LOAD16_BYTE( "8mhzdiag.8.bin", 0x0001, 0x2000, CRC(808a549e) SHA1(d2aba014a5507c1538f2c1a73e1d2524f28034f4))
95118   ROM_LOAD16_BYTE( "8mhzdiag.0.bin", 0x0000, 0x2000, CRC(7a92d506) SHA1(5df3800f7083293fc01bb6a7e7538ad425bbebfb))
119
96120   ROM_REGION( 0x10000, "gfx", ROMREGION_ERASEFF )
97121   ROM_LOAD( "gfxu605.g4.bin",  0x0000, 0x0200, CRC(274b7b3d) SHA1(40d8be2cfcbd03512a05925991bb5030d5d4b5e9))
98122   ROM_LOAD( "gfxu308.g21.bin", 0x0200, 0x0200, CRC(35a6eed8) SHA1(25cb2dd8e5343cd7927c3045eb4cb96dc9935a37))
r11081r11082
101125   ROM_LOAD( "gfxu104.g1.bin",  0x0800, 0x0200, CRC(86f7a483) SHA1(8eb3778f5497741cd4345e81ff1a903c9a63c8bb))
102126   ROM_LOAD( "gfxu307.g61.bin", 0x0a00, 0x0020, CRC(b190f25d) SHA1(80fbdc843f1eb68a2d3713499f04d99dab88ce83))
103127   ROM_LOAD( "gfxu107.g60.bin", 0x0a20, 0x0020, CRC(425d3a98) SHA1(9ae4ce3761c2f995d00bed8d752c55224d274062))
128
104129   ROM_REGION( 0x10000, "cpu", ROMREGION_ERASEFF )
105130   ROM_LOAD( "cpuu503.p2.bin", 0x0000, 0x0200, CRC(12d9a6be) SHA1(fca99f9c5afc630ac67cbd4e5ba4e5242b826848))
106131   ROM_LOAD( "cpuu602.p1.bin", 0x0200, 0x0020, CRC(ee1e5a14) SHA1(0d3346cb3b647fa2475bd7b4fa36ea6ecfdaf805))
107132   ROM_LOAD( "cpuu502.p0.bin", 0x0220, 0x0020, CRC(20eb1183) SHA1(9b268792b28d858d6b6a1b6c4148af88a8d6b735))
108
109133ROM_END
110134
111135/* Driver */

Previous 15994 Revisions Next


© 1998-2018 The MESS Team