summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/ibm3153.cpp
blob: 92e85303e8109745ba087aee2f5c7f42161301cf (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
// license:BSD-3-Clause
// copyright-holders:Robbbert
/***************************************************************************

IBM 3153 Terminal.

2016-05-04 Skeleton driver.

A green-screen terminal with a beeper.
Chip complement:
U1    K6T0808C10-DB70 (32k static ram)
U2    D-80C32-16 (cpu)
U3    DM74LS373N
U5    LM339N
U6    DM74LS125AN
U7    K6T0808C10-DB70 (ram)
U8    K6T0808C10-DB70 (ram)
U9    598-0013040 6491 3.19 (boot rom)
U10   DS1488N
U11   74LS377N
U12   DS1489AN
U13   LSI VICTOR 006-9802760 REV B WDB36003 Y9936 (video processor)
U14   74F00PC
U16   DM74LS125AN
U17   DS1488N
U18   DS1489AN
U25   SN74F04N
U100  74F07N
Crystals:
Y1    16.000 MHz
Y2    65.089 MHz
Y3    44.976 MHz


ToDo:
- Everything!

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

#include "emu.h"
#include "cpu/mcs51/mcs51.h"
#include "screen.h"


class ibm3153_state : public driver_device
{
public:
	ibm3153_state(const machine_config &mconfig, device_type type, const char *tag)
		: driver_device(mconfig, type, tag)
		, m_maincpu(*this, "maincpu")
		, m_p_chargen(*this, "chargen")
		{ }

	DECLARE_PALETTE_INIT(ibm3153);
	uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);

	void ibm3153(machine_config &config);
	void io_map(address_map &map);
	void mem_map(address_map &map);
private:
	virtual void machine_reset() override;
	required_device<cpu_device> m_maincpu;
	required_region_ptr<u8> m_p_chargen;
};


void ibm3153_state::mem_map(address_map &map)
{
	map.unmap_value_high();
	map(0x00000, 0x0ffff).rom().region("user1", 0);
}

void ibm3153_state::io_map(address_map &map)
{
	map(0x0000, 0xffff).ram();
	//ADDRESS_MAP_UNMAP_HIGH
	//ADDRESS_MAP_GLOBAL_MASK(0xff)
}


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

uint32_t ibm3153_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
	return 0;
}

PALETTE_INIT_MEMBER( ibm3153_state, ibm3153 )
{
	palette.set_pen_color(0, 0, 0, 0 ); /* Black */
	palette.set_pen_color(1, 0, 255, 0 );   /* Full */
	palette.set_pen_color(2, 0, 128, 0 );   /* Dimmed */
}

void ibm3153_state::machine_reset()
{
}

MACHINE_CONFIG_START(ibm3153_state::ibm3153)
	/* basic machine hardware */
	MCFG_DEVICE_ADD("maincpu", I80C32, XTAL(16'000'000)) // no idea of clock
	MCFG_DEVICE_PROGRAM_MAP(mem_map)
	MCFG_DEVICE_IO_MAP(io_map)

	/* video hardware */
	MCFG_SCREEN_ADD("screen", RASTER)
	MCFG_SCREEN_REFRESH_RATE(60)
	MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
	MCFG_SCREEN_UPDATE_DRIVER(ibm3153_state, screen_update)
	MCFG_SCREEN_SIZE(640, 240)
	MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 239)
	MCFG_SCREEN_PALETTE("palette")

	MCFG_PALETTE_ADD("palette", 3)
	MCFG_PALETTE_INIT_OWNER(ibm3153_state, ibm3153)
MACHINE_CONFIG_END

/* ROM definition */
ROM_START( ibm3153 )
	ROM_REGION( 0x40000, "user1", 0 )
	ROM_LOAD("598-0013040_6491_3.19.u9", 0x0000, 0x040000, CRC(7092d690) SHA1(a23a5bd5eae90e9b31fa32ef4be1258612eaaa0a) )

	ROM_REGION( 0x2000, "chargen", 0 )
	ROM_LOAD( "char.bin", 0x0000, 0x2000, NO_DUMP ) // probably inside the video processor
ROM_END

/* Driver */

//    YEAR   NAME     PARENT  COMPAT  MACHINE  INPUT    CLASS          INIT        COMPANY  FULLNAME             FLAGS
COMP( 1999?, ibm3153, 0,      0,      ibm3153, ibm3153, ibm3153_state, empty_init, "IBM",   "IBM 3153 Terminal", MACHINE_IS_SKELETON)