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, 0, "IBM", "IBM 3153 Terminal", MACHINE_IS_SKELETON)
|