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
|
// license:BSD-3-Clause
// copyright-holders:Robbbert
/********************************************************************************
Data RD100
2015-10-02 Skeleton [Robbbert]
Little is known about this system except for a few PCB pictures. No
manuals, schematic or circuit description have been found.
The RD100 was apparently sold in France under the "Superkit" brand. There
appear to have been several versions. Earlier models had 7-segment LEDs
and rudimentary keyboards. The model dumped here is apparently the K32K,
which had a 16x2 character LCD display, a QWERTY keyboard and non-numeric
keypad, Centronics and RS-232 ports, and an extension board for prototyping.
*********************************************************************************/
#include "emu.h"
#include "cpu/m6809/m6809.h"
#include "machine/6821pia.h"
#include "screen.h"
class rd100_state : public driver_device
{
public:
rd100_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
{ }
DECLARE_DRIVER_INIT(rd100);
DECLARE_MACHINE_RESET(rd100);
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void rd100(machine_config &config);
void mem_map(address_map &map);
private:
required_device<cpu_device> m_maincpu;
};
void rd100_state::mem_map(address_map &map)
{
map.unmap_value_high();
map(0x0000, 0x7fff).ram();
//AM_RANGE(0x8608, 0x860f) AM_DEVREADWRITE("timer", ptm6840_device, read, write)
map(0x8640, 0x8643).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
map(0x8680, 0x8683).rw("pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
//AM_RANGE(0x8700, 0x8700) // device
map(0x8800, 0xffff).rom().region("roms", 0x800);
}
/* Input ports */
static INPUT_PORTS_START( rd100 )
INPUT_PORTS_END
uint32_t rd100_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
// for (int y = 0; y < 32*8; y++)
// {
// offs_t offset = (y / 8) * 128;
// for (int sx = 0; sx < 64; sx++)
// {
// uint8_t code = m_video_ram[offset++];
// uint8_t attr = m_video_ram[offset++];
// offs_t char_offs = ((code & 0x7f) << 3) | (y & 0x07);
// if (BIT(code, 7)) char_offs = ((code & 0x7f) << 3) | ((y >> 1) & 0x07);
// uint8_t data = m_char_rom->base()[char_offs];
// rgb_t fg = m_palette->pen_color(attr & 0x07);
// rgb_t bg = m_palette->pen_color((attr >> 3) & 0x07);
// for (int x = 0; x < 6; x++)
// {
// bitmap.pix32(y, (sx * 6) + x) = BIT(data, 7) ? fg : bg;
// data <<= 1;
// }
// }
// }
return 0;
}
DRIVER_INIT_MEMBER( rd100_state, rd100 )
{
}
MACHINE_RESET_MEMBER( rd100_state, rd100 )
{
}
MACHINE_CONFIG_START(rd100_state::rd100)
// basic machine hardware
MCFG_DEVICE_ADD("maincpu", MC6809, XTAL(4'000'000)) // MC6809P???
MCFG_DEVICE_PROGRAM_MAP(mem_map)
MCFG_MACHINE_RESET_OVERRIDE(rd100_state, rd100)
MCFG_DEVICE_ADD("pia1", PIA6821, 0)
MCFG_DEVICE_ADD("pia2", PIA6821, 0)
// video hardware
MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(250))
MCFG_SCREEN_UPDATE_DRIVER(rd100_state, screen_update)
MCFG_SCREEN_SIZE(64*6, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 64*6-1, 0, 32*8-1)
MCFG_PALETTE_ADD_MONOCHROME("palette")
//MCFG_GFXDECODE_ADD("gfxdecode", "palette", rd100)
MACHINE_CONFIG_END
ROM_START( rd100 )
ROM_REGION( 0x8000, "roms", 0 )
ROM_LOAD( "pak3-01.bin", 0x0000, 0x8000, CRC(cf5bbf01) SHA1(0673f4048d700b84c30781af23fbeabe0b994306) )
ROM_END
/* Driver */
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
COMP( 1989, rd100, 0, 0, rd100, rd100, rd100_state, rd100, "Data R.D.", "RD100", MACHINE_IS_SKELETON )
|