summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/drivers/vax11.c
blob: f1dcbb67b4fa9a0cc7b7f08fb62f10adab6d6657 (plain) (blame)
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
/***************************************************************************

        VAX-11

        VAX-11/785
        -------
        M7459 TRS, TERMINATOR & SILO
        M7460 KA785, SBL,CUP SBI LOW BITS
        M7461 KA785, SBH,SBI
        M7462 KA785, CAM, CACHE ADDRESS MATRIX
        M7463 KA785, CDM, CACHE DATA MATRIX
        M7464 KA785, TBM, CPU TRANSLATION BUFFER
        M7465 KA785, IDP, CPU INSTRUCTION DATA
        M7466 KA785, IRC, CPU INSTRUCTION DECODE
        M7467 KA785, DPB, CPU DATA PATH B
        M7468 KA785, DEP, CPU DATA PATH E
        M7469 KA785, DDP, CPU DATA PATH D
        M7470 KA785, DCP, CPU DATA PATH C
        M7471 KA785, DAP, CPU DATA PATH A
        M7472 KA785, CEW (CONDITION CODES, EXCEP
        M7473 KA785, ICL (INTERRUPT CONTROL, LOW
        M7474 KA785, CLK (CPU CLOCK)
        M7475 KA785, JCS, JOINT CONTROL STORE
        M7476 KA785, USC, MICRO SEQUENCER CONTROL
        M7477 KA785, CIB, CPU CONSOLE INTERFACE

                                                                                                                                                 +----------FP785--------+
        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
        M7459 M7460 M7461 M7462 M7463 M7464 M7465 M7466 M7467 M7468 M7469 M7470 M7471 M7472 M7473 M7474      M7475       M7475      UNUSED M7476 M7540 M7541 M7542 M7543 M7544 M7477
        TRS   SBL   SBH   CAM   CDM   TBM   IDP   IRC   DBP   DEP   DDP   DCP   DAP   CEH   ICL   CLK        JCS         JCS               USC   FNM   FMH   FML   FAD   FCT   CIB

        VAX-11/780
        -------
        M8237 TERMINATOR SILO
        M8218 SBL LOW BIT INTERFACE
        M8219 SBH HIGH BITS INTERFACE
        M8220 CAM CPU CACHE ADAPTER MATRIX
        M8221 CDM CPU CACHE DATA MATRIX
        M8222 TBM CPU TRANSLATION BUFFER MATRIX
        M8223 IRC CPU INSTRUCT DECODE&CLOCKS
        M8224 IDP CPU INSTRUCTION DATA PATH
        M8225 DBP DATA PATH B
        M8226 DEP DATA PATH E
        M8227 DDP DATA PATH D
        M8228 DCP DATA PATH C
        M8229 DAP DATA PATH A
        M8230 CEH CPU CONDITION CODE
        M8231 ICL CPU TRAPS AND INTERRUPT CONTROL
        M8232 CLK CPU CLOCK
        M8238 WCS KU780-A 2K WCS
        M8234 PCS KA780-A PCS, PROM CONTROL STORE
        M8235 USC MICRO SEQUENCE CONTROL
        M8236 CIB CONSOLE INTERFACE

                                                                                                                                                 +----------FP780--------+
        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
        M8237 M8218 M8219 M8220 M8221 M8222 M8223 M8224 M8225 M8226 M8227 M8228 M8229 M8230 M8231 M8232      M8233       M8233      M8234  M8235 M8285 M8286 M8287 M8288 M8289 M8236
        TRS   SBL   SBH   CAM   CDM   TBM   IDP   IRC   DBP   DEP   DDP   DCP   DAP   CEH   ICL   CLK        or          or         PCS    USC   FNM   FMH   FML   FAD   FCT   CIB
                                                                                                             M8238       M8238


        02/08/2012 Skeleton driver.

****************************************************************************/

#include "emu.h"
#include "cpu/t11/t11.h"
#include "machine/terminal.h"
#include "machine/rx01.h"

#define TERMINAL_TAG "terminal"

class vax11_state : public driver_device
{
public:
	vax11_state(const machine_config &mconfig, device_type type, const char *tag)
		: driver_device(mconfig, type, tag),
		m_maincpu(*this, "maincpu"),
		m_terminal(*this, TERMINAL_TAG)
	{
	}

	required_device<cpu_device> m_maincpu;
	required_device<generic_terminal_device> m_terminal;
	DECLARE_READ16_MEMBER( term_r );
	DECLARE_READ16_MEMBER( term_tx_status_r );
	DECLARE_READ16_MEMBER( term_rx_status_r );
	DECLARE_WRITE16_MEMBER( term_w );
	DECLARE_WRITE8_MEMBER( kbd_put );
	UINT8 m_term_data;
	UINT16 m_term_status;
};

WRITE16_MEMBER(vax11_state::term_w)
{
	m_terminal->write(space, 0, data);
}

READ16_MEMBER(vax11_state::term_r)
{
	m_term_status = 0x0000;
	return m_term_data;
}

READ16_MEMBER(vax11_state::term_tx_status_r)
{   // always ready
	return 0xffff;
}

READ16_MEMBER(vax11_state::term_rx_status_r)
{
	return m_term_status;
}

static ADDRESS_MAP_START(vax11_mem, AS_PROGRAM, 16, vax11_state)
	ADDRESS_MAP_UNMAP_HIGH
	AM_RANGE( 0x0000, 0xbfff ) AM_RAM  // RAM
	AM_RANGE( 0xc000, 0xd7ff ) AM_ROM

	AM_RANGE( 0xfe78, 0xfe7b ) AM_DEVREADWRITE("rx01", rx01_device, read, write)

	AM_RANGE( 0xff70, 0xff71 ) AM_READ(term_rx_status_r)
	AM_RANGE( 0xff72, 0xff73 ) AM_READ(term_r)
	AM_RANGE( 0xff74, 0xff75 ) AM_READ(term_tx_status_r)
	AM_RANGE( 0xff76, 0xff77 ) AM_WRITE(term_w)
ADDRESS_MAP_END

/* Input ports */
static INPUT_PORTS_START( vax11 )
INPUT_PORTS_END

WRITE8_MEMBER( vax11_state::kbd_put )
{
	m_term_data = data;
	m_term_status = 0xffff;
}

static MACHINE_CONFIG_START( vax11, vax11_state )
	/* basic machine hardware */
	MCFG_CPU_ADD("maincpu",T11, XTAL_4MHz) // Need proper CPU here
	MCFG_T11_INITIAL_MODE(0 << 13)
	MCFG_CPU_PROGRAM_MAP(vax11_mem)

	/* video hardware */
	MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
	MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(vax11_state, kbd_put))

	MCFG_RX01_ADD("rx01")
MACHINE_CONFIG_END

ROM_START( vax785 )
	ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
	// M7477
	ROMX_LOAD( "23-144f1-00.e56", 0xc000, 0x0400, CRC(99c1f117) SHA1(f05b6e97bf258392656058864abc1177379194da), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(1))
	ROMX_LOAD( "23-145f1-00.e68", 0xc000, 0x0400, CRC(098b63d2) SHA1(c2742aaccdac2921e1704c835ee5cef242cd7308), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(1))
	ROMX_LOAD( "23-146f1-00.e84", 0xc001, 0x0400, CRC(0f5f5d7b) SHA1(2fe325d2a78a8ce5146317cc39c084c4967c323c), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(1))
	ROMX_LOAD( "23-147f1-00.e72", 0xc001, 0x0400, CRC(bde386f2) SHA1(fcb5a1fa505912c5f44781619c9508cd142721e3), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(1))

	ROMX_LOAD( "23-148f1-00.e58", 0xc800, 0x0400, CRC(fe4c61e3) SHA1(4641a236761692a8f45b14ed6a73f535d57c2daa), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(1))
	ROMX_LOAD( "23-149f1-00.e70", 0xc800, 0x0400, CRC(a13f5f8a) SHA1(6a9d3b5a71a3249f3b9491d541c9854e071a320c), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(1))
	ROMX_LOAD( "23-150f1-00.e87", 0xc801, 0x0400, CRC(ca8d6419) SHA1(6d9c3e1e2f5a35f92c82240fcede14645aa83340), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(1))
	ROMX_LOAD( "23-151f1-00.e74", 0xc801, 0x0400, CRC(58ce48d3) SHA1(230dbcab1470752befb6733a89e3612ad7fba10d), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(1))

	ROMX_LOAD( "23-236f1-00.e57", 0xd000, 0x0400, CRC(6f23470a) SHA1(d90a0bc56f04c2830f8cfb6b870db207b96e75b1), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(1))
	ROMX_LOAD( "23-237f1-00.e69", 0xd000, 0x0400, CRC(2bf8cf0b) SHA1(6db79c5392b265e38b5b8b386528d7c138d995e9), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(1))
	ROMX_LOAD( "23-238f1-00.e85", 0xd001, 0x0400, CRC(ff569f71) SHA1(05985396047fb4639959000a1abe50d2f184deaa), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(1))
	ROMX_LOAD( "23-239f1-00.e73", 0xd001, 0x0400, CRC(cec7abe3) SHA1(8b8b52bd46340c58efa5adef3f306e0cdcb77520), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(1))

ROM_END

/*    YEAR  NAME    PARENT  COMPAT   MACHINE    INPUT    INIT    COMPANY   FULLNAME       FLAGS */
COMP( 1984, vax785,  0,       0,    vax11,    vax11, driver_device,  0,   "Digital Equipment Corporation",   "VAX-11/785",      GAME_NOT_WORKING | GAME_NO_SOUND)