Previous 15994 Revisions Next

r10554 Wednesday 23rd February, 2011 at 11:11:15 UTC by Robbbert
[AL8800BT] Modernised.
[src/mess/drivers]altair.c

src/mess/drivers/altair.c
r10553r10554
44
55        04/12/2009 Initial driver by Miodrag Milanovic
66
7        Commands:
8        All commands must be in uppercase. Address and data is
9        specified in Octal format (not hex).
10
11        Press space to input your command line (not return).
12
13        D - ? (prints random characters)
14        J - ? (does nothing noticeable)
15        M - Modify memory
16
717****************************************************************************/
18#define ADDRESS_MAP_MODERN
819
920#include "emu.h"
1021#include "cpu/i8085/i8085.h"
r10553r10554
1627{
1728public:
1829   altair_state(running_machine &machine, const driver_device_config_base &config)
19      : driver_device(machine, config) { }
30      : driver_device(machine, config),
31      m_maincpu(*this, "maincpu")
32      { }
2033
34   required_device<cpu_device> m_maincpu;
35   DECLARE_READ8_MEMBER( sio_status_r );
36   DECLARE_READ8_MEMBER( sio_data_r );
37   DECLARE_READ8_MEMBER( sio_key_status_r );
38   DECLARE_WRITE8_MEMBER( sio_command_w );
39   DECLARE_WRITE8_MEMBER( altair_kbd_put );
2140   UINT8 term_data;
2241   UINT8* ram;
2342};
2443
2544
2645
27static READ8_HANDLER(sio_status_r)
46READ8_MEMBER(altair_state::sio_status_r)
2847{
29   altair_state *state = space->machine->driver_data<altair_state>();
30   if (state->term_data!=0) return 0x01; // data in
48   if (term_data!=0) return 0x01; // data in
3149   return 0x02; // ready
3250}
3351
34static WRITE8_HANDLER(sio_command_w)
52WRITE8_MEMBER(altair_state::sio_command_w)
3553{
3654
3755}
3856
39static READ8_HANDLER(sio_data_r)
57READ8_MEMBER(altair_state::sio_data_r)
4058{
41   altair_state *state = space->machine->driver_data<altair_state>();
42   UINT8 retVal = state->term_data;
43   state->term_data = 0;
59   UINT8 retVal = term_data;
60   term_data = 0;
4461   return retVal;
4562}
4663
47static WRITE8_HANDLER(sio_data_w)
64READ8_MEMBER(altair_state::sio_key_status_r)
4865{
49   device_t *devconf = space->machine->device(TERMINAL_TAG);
50   terminal_write(devconf,0,data);
66   return (term_data!=0) ? 0x40 : 0x01;
5167}
5268
53static READ8_HANDLER(sio_key_status_r)
54{
55   altair_state *state = space->machine->driver_data<altair_state>();
56   return (state->term_data!=0) ? 0x40 : 0x01;
57}
58
59static ADDRESS_MAP_START(altair_mem, ADDRESS_SPACE_PROGRAM, 8)
69static ADDRESS_MAP_START(altair_mem, ADDRESS_SPACE_PROGRAM, 8, altair_state)
6070   ADDRESS_MAP_UNMAP_HIGH
61   AM_RANGE( 0x0000, 0xfcff ) AM_RAM AM_BASE_MEMBER(altair_state, ram)
71   AM_RANGE( 0x0000, 0xfcff ) AM_RAM AM_BASE(ram)
6272   AM_RANGE( 0xfd00, 0xfdff ) AM_ROM
6373   AM_RANGE( 0xff00, 0xffff ) AM_ROM
6474ADDRESS_MAP_END
6575
66static ADDRESS_MAP_START( altair_io , ADDRESS_SPACE_IO, 8)
76static ADDRESS_MAP_START(altair_io, ADDRESS_SPACE_IO, 8, altair_state)
6777   ADDRESS_MAP_UNMAP_HIGH
78   ADDRESS_MAP_GLOBAL_MASK(0xff)
6879   AM_RANGE( 0x00, 0x00 ) AM_READ(sio_key_status_r)
69   AM_RANGE( 0x01, 0x01 ) AM_READWRITE(sio_data_r,sio_data_w)
80   AM_RANGE( 0x01, 0x01 ) AM_MIRROR(0x10) AM_READ(sio_data_r)
81   AM_RANGE( 0x01, 0x01 ) AM_MIRROR(0x10) AM_DEVWRITE_LEGACY(TERMINAL_TAG, terminal_write)
7082   AM_RANGE( 0x10, 0x10 ) AM_READWRITE(sio_status_r,sio_command_w)
71   AM_RANGE( 0x11, 0x11 ) AM_READWRITE(sio_data_r,sio_data_w)
7283ADDRESS_MAP_END
7384
7485/* Input ports */
r10553r10554
101112   state->term_data = 0;
102113}
103114
104static WRITE8_DEVICE_HANDLER( altair_kbd_put )
115WRITE8_MEMBER( altair_state::altair_kbd_put )
105116{
106   altair_state *state = device->machine->driver_data<altair_state>();
107   state->term_data = data;
117   term_data = data;
108118}
109119
110120static GENERIC_TERMINAL_INTERFACE( altair_terminal_intf )
111121{
112   DEVCB_HANDLER(altair_kbd_put)
122   DEVCB_DRIVER_MEMBER(altair_state, altair_kbd_put)
113123};
114124
115125static MACHINE_CONFIG_START( altair, altair_state )
116    /* basic machine hardware */
117    MCFG_CPU_ADD("maincpu", I8080, XTAL_2MHz)
118    MCFG_CPU_PROGRAM_MAP(altair_mem)
119    MCFG_CPU_IO_MAP(altair_io)
126   /* basic machine hardware */
127   MCFG_CPU_ADD("maincpu", I8080, XTAL_2MHz)
128   MCFG_CPU_PROGRAM_MAP(altair_mem)
129   MCFG_CPU_IO_MAP(altair_io)
120130
121    MCFG_MACHINE_RESET(altair)
131   MCFG_MACHINE_RESET(altair)
122132
123133   /* video hardware */
124134   MCFG_FRAGMENT_ADD( generic_terminal )
r10553r10554
130140
131141/* ROM definition */
132142ROM_START( al8800bt )
133    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
143   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
134144   ROM_LOAD( "turnmon.bin",  0xfd00, 0x0100, CRC(5c629294) SHA1(125c76216954b681721fff84a3aca05094b21a28))
135145   ROM_LOAD( "88dskrom.bin", 0xff00, 0x0100, CRC(7c5232f3) SHA1(24f940ad70ad2829e1bc800c6790b6e993e6ebf6))
136146ROM_END
r10553r10554
138148/* Driver */
139149
140150/*    YEAR  NAME    PARENT  COMPAT   MACHINE    INPUT    INIT     COMPANY   FULLNAME       FLAGS */
141COMP( 1975, al8800bt,  0,       0,   altair,    altair,     0,   "MITS",   "Altair 8800bt",      GAME_NOT_WORKING | GAME_NO_SOUND)
151COMP( 1975, al8800bt,  0,       0,   altair,    altair,     0,   "MITS",   "Altair 8800bt", GAME_NOT_WORKING | GAME_NO_SOUND_HW)
142152

Previous 15994 Revisions Next


© 1998-2018 The MESS Team