summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/telex274.cpp
blob: aaa6f7bdce9cc0d83eb585ddf0e1c1400eb87c5c (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
173
174
175
176
177
178
179
// license:BSD-3-Clause
// copyright-holders:AJR
/************************************************************************************************************

    Skeleton driver for Telex 274 IBM 3274-compatible coaxial controllers.

    The three main boards have the following components identified by PCB silkscreening and/or serial
    numbers:

    COMM IIS

        U1      Am27128A(?)-2DC         ODD (203981-053)
        U2      Am27128A(?)-2DC         EVEN (203982-053)
        U3      NEC D4361C-70           ODD PARITY
        U9      HM62256LP-12            ODD
        U10     HM62256LP-12            EVEN
        U11     NEC D4361C-70           EVEN PARITY
        U13     unknown 64-pin SDIP     DMA
        U45     PAL20L8ANC              ADD DECODE PAL (205264-002)
        U56     SCN68000CAN64           CPU
        U81     10.000000MHz            10 MHZ CLK
        U84     4.0000MHz               4 MHZ CLK
        U98     P8274                   COMM CHIP
        U99     Am9513APC               TIMER

    16 PORT COAX CONTROLLER

        U1      M5M4464P-12             BANK 0 D8:11
        U2      M5M4464P-12             BANK 1 D8:11
        U3      M5M4464P-12             BANK 0 D12:15
        U4      M5M4464P-12             BANK 1 D12:15
        U6      S 74F245N               BUF D8:15
        U7      S 74F245N               BUF D0:7
        U12     M5M4464P-12             BANK 0 D0:3
        U13     M5M4464P-12             BANK 1 D0:3
        U14     M5M4464P-12             BANK 0 D4:7
        U15     M5M4464P-12             BANK 1 D4:7
        U25     KM4164B-12              BANK 0 LOW
        U26     KM4164B-12              BANK 1 LOW
        U27     KM4164B-12              BANK 0 HIGH
        U28     KM4164B-12              BANK 1 HIGH
        U30     SN74LS195AN             WATCHDOG TIMER
        U38     AMPAL16R8PC             (205263-002)
        U41     PAL16R4ACN              (204143-02)
        U44     S 74LS138N              STATE DECODER
        U48     PAL20L8ANC              MEMORY DECODER (205264-002)
        U64/89  PAL16R4ACN              (204140-003)
        U65/90  PAL16R4ACN              (204141-003)
        U66     TC17G022AP-0091         DEV 0-7 COAX
        U67/102 PAL16L8ANC              (204142-001)
        U68     N82S129N                (204570-002)
        U69     SN74LS273N              MISC PORT OUT
        U83     S 74LS541N              MISC PORT IN
        U84/107 S 74LS541N              EXEC FIFO DRIVERS
        U101    TC17G022AP-0091         DEV 8-15 COAX

    EXAM BD  SS-B

        U1/16   TMS 4464-15NL           D12:D15
        U2/17   TMS 4464-15NL           D8:D11
        U3/18   TMS 4464-15NL           D4:D7
        U4/19   TMS 4464-15NL           D0:D3
        U41     AMPAL16R8PC             MEM CONTROL (205261-002)
        U62     PAL20L8ANC              MEM DECODE (205264-002)
        U85     AMPAL16R8PC             MEM CONTROL (205263-002)
        U92     PAL16R8BNC              BUS ARB (205266-002)
        U105    HYB 41256-15            D15
        U106    HYB 41256-15            D14
        U107    HYB 41256-15            D13
        U108    HYB 41256-15            D12
        U109    HYB 41256-15            D11
        U110    HYB 41256-15            D10
        U113    MK48Z02BU-25            (0678A)
        U120    HYB 41256-15            D9
        U121    HYB 41256-15            D8
        U122    HYB 41256-15            D7
        U123    HYB 41256-15            D6
        U124    HYB 41256-15            D5
        U125    HYB 41256-15            D4
        U134    HYB 41256-15            D3
        U135    HYB 41256-15            D2
        U136    HYB 41256-15            D1
        U137    HYB 41256-15            D0
        U138    HYB 41256-15            HI PAR
        U139    HYB 41256-15            LO PAR

    While each of these boards has a CPU, program ROMs are present only on the "COMM" board. Programs for
    the other two boards should be loaded off floppy disk through the WD2797A-PL FDC which resides on the
    front panel. There are also no visible oscillators on this front panel or the "EXAM BD" and only one
    on the "COAX" board (18.8696MHz, likely used to generate data clocks for the protocol gate arrays).

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

#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "machine/am9513.h"
#include "machine/z80sio.h"
//#include "machine/wd_fdc.h"

class telex274_state : public driver_device
{
public:
	telex274_state(const machine_config &mconfig, device_type type, const char *tag)
		: driver_device(mconfig, type, tag)
		, m_maincpu(*this, "maincpu")
		, m_coaxcpu(*this, "coaxcpu")
		, m_examcpu(*this, "examcpu")
	{
	}

	void telex274(machine_config &config);

private:
	void main_mem(address_map &map);
	void coax_mem(address_map &map);
	void exam_mem(address_map &map);

	required_device<cpu_device> m_maincpu;
	required_device<cpu_device> m_coaxcpu;
	required_device<cpu_device> m_examcpu;
};


void telex274_state::main_mem(address_map &map)
{
	map(0x000000, 0x007fff).rom().region("program", 0);
	map(0x008000, 0x01ffff).ram();
	map(0x080000, 0x09ffff).ram();
	map(0xff811e, 0xff811f).nopr();
	map(0xff8810, 0xff8817).rw("mpsc", FUNC(i8274_device::cd_ba_r), FUNC(i8274_device::cd_ba_w)).umask16(0x00ff);
	map(0xff8818, 0xff881b).rw("maintimer", FUNC(am9513a_device::read8), FUNC(am9513a_device::write8)).umask16(0x00ff);
}

void telex274_state::coax_mem(address_map &map)
{
}

void telex274_state::exam_mem(address_map &map)
{
}


static INPUT_PORTS_START(telex274)
INPUT_PORTS_END


void telex274_state::telex274(machine_config &config)
{
	M68000(config, m_maincpu, 10_MHz_XTAL);
	m_maincpu->set_addrmap(AS_PROGRAM, &telex274_state::main_mem);

	am9513a_device &maintimer(AM9513A(config, "maintimer", 4_MHz_XTAL));
	maintimer.out4_cb().set("mpsc", FUNC(i8274_device::rxca_w)); // ?
	maintimer.out4_cb().append("mpsc", FUNC(i8274_device::txca_w)); // ?
	maintimer.out5_cb().set("mpsc", FUNC(i8274_device::rxtxcb_w)); // ?

	I8274(config, "mpsc", 4'000'000);

	M68000(config, m_coaxcpu, 10'000'000);
	m_coaxcpu->set_addrmap(AS_PROGRAM, &telex274_state::coax_mem);
	m_coaxcpu->set_disable();

	M68000(config, m_examcpu, 10'000'000);
	m_examcpu->set_addrmap(AS_PROGRAM, &telex274_state::exam_mem);
	m_examcpu->set_disable();

	//AM9513A(config, "examtimer", 4'000'000);

	//WD2797(config, "fdc", 1'000'000);
}


ROM_START(telex274)
	ROM_REGION16_BE(0x8000, "program", 0)
	ROM_LOAD16_BYTE("203982-053_even.u2", 0x0000, 0x4000, CRC(56914ba9) SHA1(7a2a9e16491a024b4109c8589a2277d65536e629))
	ROM_LOAD16_BYTE("203981-053_odd.u1", 0x0001, 0x4000, CRC(04a9e2cf) SHA1(58255d6275b76aecd8b81d2ea23ca69167caf232))
ROM_END

COMP(1986, telex274, 0, 0, telex274, telex274, telex274_state, empty_init, "Telex Computer Products", "Telex 274-61C Sixteen Station Control Unit", MACHINE_IS_SKELETON)