Previous 199869 Revisions Next

r34157 Friday 2nd January, 2015 at 04:15:24 UTC by R. Belmont
(MESS) New skeleton driver added: [R. Belmont, Al Kossow]
- HP16500a (ver 00.00)
[src/mess]mess.lst
[src/mess/drivers]hp16500.c

trunk/src/mess/drivers/hp16500.c
r242668r242669
11/***************************************************************************
22
3    Hewlett-Packard HP16500b Logic Analyzer
3  Hewlett-Packard HP16500a/b/c Logic Analyzer
44
5  These are weird, the "a" has more in common with the older 1650/1651
6  than the 16500b.
7
8  16500a rev 00.00:
9    MC68000 @ 10 MHz
10    MC68A45 CRTC
11    FDC9793 floppy controller (WD1793 type)
12    TMS9914A GPIB bus interface
13    SCN2661 DUART/timer
14
15  IRQ1 = VBL, IRQ2 = 20b007, IRQ3 = ?, IRQ4 = 20d000, IRQ5 = 20d007,
16  IRQ6 = ?, IRQ7 = ?
17
18  16500a rev 00.02:
19    MC68000 @ 10 MHz
20    MC68A45 CRTC
21    Z0765A08PSC floppy controller (NEC765 type)
22   TMS9914A GPIB bus interface
23    SCN2661 DUART/timer
24
25  16500b:
526    MC68EC030 @ 25 MHz
627
728    WD37C65C floppy controller (NEC765 type)
r242668r242669
2142
2243#include "emu.h"
2344#include "cpu/m68000/m68000.h"
45#include "video/mc6845.h"
2446
2547class hp16500_state : public driver_device
2648{
r242668r242669
3254
3355   virtual void video_start();
3456   UINT32 screen_update_hp16500(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
57   UINT32 screen_update_hp16500a(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
3558
3659   required_device<cpu_device> m_maincpu;
3760   dynamic_array<UINT8> m_vram;
r242668r242669
4669   DECLARE_WRITE8_MEMBER (val_w);
4770   DECLARE_READ32_MEMBER(vbl_state_r);
4871   DECLARE_WRITE32_MEMBER(vbl_ack_w);
72   DECLARE_WRITE16_MEMBER(vbl_ack16_w);
4973
74   DECLARE_WRITE8_MEMBER(pal_ctrl_w);
75   DECLARE_WRITE8_MEMBER(pal_r_w);
76   DECLARE_WRITE8_MEMBER(pal_g_w);
77   DECLARE_WRITE8_MEMBER(pal_b_w);
78
79   DECLARE_WRITE16_MEMBER(maskval_w);
80
81   DECLARE_WRITE_LINE_MEMBER(vsync_changed);
82   MC6845_UPDATE_ROW(crtc_update_row);
83
5084   INTERRUPT_GEN_MEMBER(vblank);
5185
5286private:
r242668r242669
6397   m_maincpu->set_input_line(M68K_IRQ_1, CLEAR_LINE);
6498}
6599
100WRITE16_MEMBER(hp16500_state::vbl_ack16_w)
101{
102   m_maincpu->set_input_line(M68K_IRQ_1, CLEAR_LINE);
103}
104
105WRITE_LINE_MEMBER( hp16500_state::vsync_changed )
106{
107   if (state)
108   {
109      m_maincpu->set_input_line(M68K_IRQ_1, ASSERT_LINE);
110   }
111}
112
113MC6845_UPDATE_ROW( hp16500_state::crtc_update_row )
114{
115   UINT32 *p = &bitmap.pix32(y);
116   int i, pos;
117
118   pos =  y * 144;
119
120   for (i = 0; i < x_count; i++)
121   {
122      *p++  = m_palette[m_vram[pos+0x00000]];
123      *p++  = m_palette[m_vram[pos+0x10000]];
124      *p++  = m_palette[m_vram[pos+0x20000]];
125      *p++  = m_palette[m_vram[pos+0x30000]];
126      pos++;
127      *p++  = m_palette[m_vram[pos+0x00000]];
128      *p++  = m_palette[m_vram[pos+0x10000]];
129      *p++  = m_palette[m_vram[pos+0x20000]];
130      *p++  = m_palette[m_vram[pos+0x30000]];
131      pos++;
132   }
133}
134
135WRITE8_MEMBER(hp16500_state::pal_ctrl_w)
136{
137   m_clutoffs = data & 0xf;
138}
139
140
141WRITE8_MEMBER(hp16500_state::pal_r_w)
142{
143   m_colors[0] = (data<<4);
144   m_palette[m_clutoffs] = rgb_t(m_colors[0], m_colors[1], m_colors[2]);
145}
146
147WRITE8_MEMBER(hp16500_state::pal_g_w)
148{
149   m_colors[1] = (data<<4);
150   m_palette[m_clutoffs] = rgb_t(m_colors[0], m_colors[1], m_colors[2]);
151}
152
153WRITE8_MEMBER(hp16500_state::pal_b_w)
154{
155   m_colors[2] = (data<<4);
156   m_palette[m_clutoffs] = rgb_t(m_colors[0], m_colors[1], m_colors[2]);
157}
158
159WRITE16_MEMBER(hp16500_state::maskval_w)
160{
161   // by analogy with the string printer code from the 16500b, which
162   // appears to be a direct port...
163   m_val =  ((data>>8) & 0xff) ^ 0xff;
164   m_mask = (data & 0xff) ^ 0xff;
165}
166
167static ADDRESS_MAP_START(hp16500a_map, AS_PROGRAM, 16, hp16500_state)
168   AM_RANGE(0x000000, 0x00ffff) AM_ROM AM_REGION("bios", 0)
169
170   AM_RANGE(0x201000, 0x201001) AM_WRITE(maskval_w)
171
172   AM_RANGE(0x204000, 0x204001) AM_WRITE8(pal_ctrl_w, 0x00ff)
173   AM_RANGE(0x205000, 0x205001) AM_WRITE8(pal_r_w, 0x00ff)
174   AM_RANGE(0x206000, 0x206001) AM_WRITE8(pal_g_w, 0x00ff)
175   AM_RANGE(0x207000, 0x207001) AM_WRITE8(pal_b_w, 0x00ff)
176
177   AM_RANGE(0x20c000, 0x20c001) AM_DEVREADWRITE8("crtc", mc6845_device, status_r, address_w, 0x00ff)
178   AM_RANGE(0x20c002, 0x20c003) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0x00ff)
179
180   AM_RANGE(0x20e000, 0x20e001) AM_WRITE(vbl_ack16_w)
181
182   AM_RANGE(0x600000, 0x61ffff) AM_WRITE(vram_w)
183   AM_RANGE(0x600000, 0x67ffff) AM_READ8(vram_r, 0x00ff)
184
185   AM_RANGE(0x980000, 0x9fffff) AM_RAM
186
187   AM_RANGE(0xa70000, 0xa7ffff) AM_RAM
188ADDRESS_MAP_END
189
190UINT32 hp16500_state::screen_update_hp16500a(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
191{
192   return 0;
193}
194
66195static ADDRESS_MAP_START(hp16500_map, AS_PROGRAM, 32, hp16500_state)
67196   AM_RANGE(0x00000000, 0x0001ffff) AM_ROM AM_REGION("bios", 0)
68197   AM_RANGE(0x0020f000, 0x0020f003) AM_WRITE(palette_w)
r242668r242669
174303   return 0;
175304}
176305
306static MACHINE_CONFIG_START( hp16500a, hp16500_state )
307   /* basic machine hardware */
308   MCFG_CPU_ADD("maincpu", M68000, 10000000)
309   MCFG_CPU_PROGRAM_MAP(hp16500a_map)
310
311   MCFG_SCREEN_ADD("screen", RASTER)
312   MCFG_SCREEN_RAW_PARAMS(10000000, 0x320, 0, 0x240, 0x19c, 0, 0x170 )
313   MCFG_SCREEN_UPDATE_DEVICE( "crtc", mc6845_device, screen_update )
314
315   MCFG_MC6845_ADD("crtc", MC6845, "screen", 10000000/9)
316   MCFG_MC6845_SHOW_BORDER_AREA(false)
317   MCFG_MC6845_CHAR_WIDTH(8)
318   MCFG_MC6845_UPDATE_ROW_CB(hp16500_state, crtc_update_row)
319   MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(hp16500_state, vsync_changed))
320
321   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
322MACHINE_CONFIG_END
323
177324static MACHINE_CONFIG_START( hp16500, hp16500_state )
178325   /* basic machine hardware */
179326   MCFG_CPU_ADD("maincpu", M68EC030, 25000000)
r242668r242669
192339static INPUT_PORTS_START( hp16500 )
193340INPUT_PORTS_END
194341
342ROM_START( hp165ka0 )
343   ROM_REGION16_BE(0x20000, "bios", 0)
344   ROM_LOAD16_BYTE( "16500-80002.bin", 0x000000, 0x008000, CRC(0324b75a) SHA1(837855fce9288139226c914cc0c43061e25b57d2) )
345   ROM_LOAD16_BYTE( "16500-80001.bin", 0x000001, 0x008000, CRC(362c8cbf) SHA1(812b79d1a31d09ec632a6842b11548168d82b5e7) )
346ROM_END
347
195348ROM_START( hp16500b )
196349   ROM_REGION32_BE(0x20000, "bios", 0)
197      ROM_LOAD32_BYTE( "16500-80014.bin", 0x000000, 0x008000, CRC(35187716) SHA1(82067737892ecd356a5454a43d9ce9b38ac2397f) )
198      ROM_LOAD32_BYTE( "16500-80015.bin", 0x000001, 0x008000, CRC(d8d26c1c) SHA1(b5b956c17c9d6e54519a686b5e4aa733b266bf6f) )
199      ROM_LOAD32_BYTE( "16500-80016.bin", 0x000002, 0x008000, CRC(61457b39) SHA1(f209315ec22a8ee9d44a0ec009b1afb47794bece) )
200      ROM_LOAD32_BYTE( "16500-80017.bin", 0x000003, 0x008000, CRC(e0b1096b) SHA1(426bb9a4756d8087bded4f6b61365d733ffbb09a) )
350   ROM_LOAD32_BYTE( "16500-80014.bin", 0x000000, 0x008000, CRC(35187716) SHA1(82067737892ecd356a5454a43d9ce9b38ac2397f) )
351   ROM_LOAD32_BYTE( "16500-80015.bin", 0x000001, 0x008000, CRC(d8d26c1c) SHA1(b5b956c17c9d6e54519a686b5e4aa733b266bf6f) )
352   ROM_LOAD32_BYTE( "16500-80016.bin", 0x000002, 0x008000, CRC(61457b39) SHA1(f209315ec22a8ee9d44a0ec009b1afb47794bece) )
353   ROM_LOAD32_BYTE( "16500-80017.bin", 0x000003, 0x008000, CRC(e0b1096b) SHA1(426bb9a4756d8087bded4f6b61365d733ffbb09a) )
201354ROM_END
202355
356COMP( 1994, hp165ka0, 0, 0, hp16500a, hp16500, driver_device, 0,  "Hewlett Packard", "HP 16500a", GAME_NOT_WORKING|GAME_NO_SOUND)
203357COMP( 1994, hp16500b, 0, 0, hp16500, hp16500, driver_device, 0,  "Hewlett Packard", "HP 16500b", GAME_NOT_WORKING|GAME_NO_SOUND)
trunk/src/mess/mess.lst
r242668r242669
17231723hp48gp  // HP 48G+
17241724hp49g
17251725hp49gp  // HP 49G+
1726hp165ka0
17261727hp16500b
17271728hp9816
17281729hp9845a


Previous 199869 Revisions Next


© 1997-2024 The MAME Team