Previous 199869 Revisions Next

r34177 Sunday 4th January, 2015 at 03:16:35 UTC by R. Belmont
(MESS) New skeleton drivers added: [R. Belmont, Al Kossow]
- HP 1650b
- HP 1651b
[src/mess]mess.lst
[src/mess/drivers]hp16500.c

trunk/src/mess/drivers/hp16500.c
r242688r242689
3838    IRQ 6 = 35c8 (jump 840120)
3939    IRQ 7 = 35d4 (jump 840120)
4040
41  16500c:
42    Same as 16500b, but add:
43    53C720 SCSI controller
44    DP83934 SONIC ethernet
45
4146****************************************************************************/
4247
4348#include "emu.h"
4449#include "cpu/m68000/m68000.h"
4550#include "video/mc6845.h"
51#include "machine/mc68681.h"
4652
53#define MAINCPU_TAG   "maincpu"
54#define CRTC_TAG   "crtc"
55#define SCREEN_TAG   "screen"
56#define DUART_TAG   "duart"
57
4758class hp16500_state : public driver_device
4859{
4960public:
5061   hp16500_state(const machine_config &mconfig, device_type type, const char *tag)
5162      : driver_device(mconfig, type, tag),
52      m_maincpu(*this, "maincpu")
63      m_maincpu(*this, MAINCPU_TAG)
5364      { }
5465
5566   virtual void video_start();
r242688r242689
6980   DECLARE_WRITE8_MEMBER (val_w);
7081   DECLARE_READ32_MEMBER(vbl_state_r);
7182   DECLARE_WRITE32_MEMBER(vbl_ack_w);
83   DECLARE_READ16_MEMBER(vbl_ack16_r);
7284   DECLARE_WRITE16_MEMBER(vbl_ack16_w);
7385
7486   DECLARE_WRITE8_MEMBER(pal_ctrl_w);
r242688r242689
8092
8193   DECLARE_WRITE_LINE_MEMBER(vsync_changed);
8294   MC6845_UPDATE_ROW(crtc_update_row);
95   MC6845_UPDATE_ROW(crtc_update_row_1650);
8396
8497   INTERRUPT_GEN_MEMBER(vblank);
8598
r242688r242689
97110   m_maincpu->set_input_line(M68K_IRQ_1, CLEAR_LINE);
98111}
99112
113READ16_MEMBER(hp16500_state::vbl_ack16_r)
114{
115   m_maincpu->set_input_line(M68K_IRQ_1, CLEAR_LINE);
116   return 0;
117}
118
100119WRITE16_MEMBER(hp16500_state::vbl_ack16_w)
101120{
102121   m_maincpu->set_input_line(M68K_IRQ_1, CLEAR_LINE);
r242688r242689
132151   }
133152}
134153
154MC6845_UPDATE_ROW( hp16500_state::crtc_update_row_1650 )
155{
156   UINT32 *p = &bitmap.pix32(y);
157   int i, pos;
158
159   pos =  y * 148;
160
161   for (i = 0; i < x_count; i++)
162   {
163      *p++  = m_palette[m_vram[pos+0x00000]];
164      *p++  = m_palette[m_vram[pos+0x10000]];
165      *p++  = m_palette[m_vram[pos+0x20000]];
166      *p++  = m_palette[m_vram[pos+0x30000]];
167      pos++;
168      *p++  = m_palette[m_vram[pos+0x00000]];
169      *p++  = m_palette[m_vram[pos+0x10000]];
170      *p++  = m_palette[m_vram[pos+0x20000]];
171      *p++  = m_palette[m_vram[pos+0x30000]];
172      pos++;
173   }
174}
175
135176WRITE8_MEMBER(hp16500_state::pal_ctrl_w)
136177{
137178   m_clutoffs = data & 0xf;
r242688r242689
164205   m_mask = (data & 0xff) ^ 0xff;
165206}
166207
208static ADDRESS_MAP_START(hp1650_map, AS_PROGRAM, 16, hp16500_state)
209   AM_RANGE(0x000000, 0x00ffff) AM_ROM AM_REGION("bios", 0)
210
211   AM_RANGE(0x201000, 0x201001) AM_WRITE(maskval_w)
212
213   AM_RANGE(0x204000, 0x204001) AM_WRITE8(pal_ctrl_w, 0x00ff)
214   AM_RANGE(0x205000, 0x205001) AM_WRITE8(pal_r_w, 0x00ff)
215   AM_RANGE(0x206000, 0x206001) AM_WRITE8(pal_g_w, 0x00ff)
216   AM_RANGE(0x207000, 0x207001) AM_WRITE8(pal_b_w, 0x00ff)
217
218   AM_RANGE(0x20c000, 0x20c001) AM_DEVREADWRITE8(CRTC_TAG, mc6845_device, status_r, address_w, 0x00ff)
219   AM_RANGE(0x20c002, 0x20c003) AM_DEVREADWRITE8(CRTC_TAG, mc6845_device, register_r, register_w, 0x00ff)
220
221   AM_RANGE(0x20e000, 0x20e001) AM_READWRITE(vbl_ack16_r, vbl_ack16_w)
222
223   AM_RANGE(0x2050fe, 0x2050ff) AM_NOP
224   AM_RANGE(0x206000, 0x206001) AM_NOP
225   AM_RANGE(0x20f000, 0x20f001) AM_NOP
226
227   AM_RANGE(0x600000, 0x61ffff) AM_WRITE(vram_w)
228   AM_RANGE(0x600000, 0x67ffff) AM_READ8(vram_r, 0x00ff)
229
230   AM_RANGE(0x900000, 0x9fffff) AM_RAM
231ADDRESS_MAP_END
232
233// like 1650 but moves main RAM to match 16500a
234static ADDRESS_MAP_START(hp1651_map, AS_PROGRAM, 16, hp16500_state)
235   AM_RANGE(0x000000, 0x00ffff) AM_ROM AM_REGION("bios", 0)
236
237   AM_RANGE(0x201000, 0x201001) AM_WRITE(maskval_w)
238
239   AM_RANGE(0x204000, 0x204001) AM_WRITE8(pal_ctrl_w, 0x00ff)
240   AM_RANGE(0x205000, 0x205001) AM_WRITE8(pal_r_w, 0x00ff)
241   AM_RANGE(0x206000, 0x206001) AM_WRITE8(pal_g_w, 0x00ff)
242   AM_RANGE(0x207000, 0x207001) AM_WRITE8(pal_b_w, 0x00ff)
243
244   AM_RANGE(0x20c000, 0x20c001) AM_DEVREADWRITE8(CRTC_TAG, mc6845_device, status_r, address_w, 0x00ff)
245   AM_RANGE(0x20c002, 0x20c003) AM_DEVREADWRITE8(CRTC_TAG, mc6845_device, register_r, register_w, 0x00ff)
246
247   AM_RANGE(0x20e000, 0x20e001) AM_READWRITE(vbl_ack16_r, vbl_ack16_w)
248
249   AM_RANGE(0x2050fe, 0x2050ff) AM_NOP
250   AM_RANGE(0x206000, 0x206001) AM_NOP
251   AM_RANGE(0x20f000, 0x20f001) AM_NOP
252
253   AM_RANGE(0x600000, 0x61ffff) AM_WRITE(vram_w)
254   AM_RANGE(0x600000, 0x67ffff) AM_READ8(vram_r, 0x00ff)
255
256   AM_RANGE(0x980000, 0xa7ffff) AM_RAM
257ADDRESS_MAP_END
258
167259static ADDRESS_MAP_START(hp16500a_map, AS_PROGRAM, 16, hp16500_state)
168260   AM_RANGE(0x000000, 0x00ffff) AM_ROM AM_REGION("bios", 0)
169261
r242688r242689
174266   AM_RANGE(0x206000, 0x206001) AM_WRITE8(pal_g_w, 0x00ff)
175267   AM_RANGE(0x207000, 0x207001) AM_WRITE8(pal_b_w, 0x00ff)
176268
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)
269   AM_RANGE(0x20c000, 0x20c001) AM_DEVREADWRITE8(CRTC_TAG, mc6845_device, status_r, address_w, 0x00ff)
270   AM_RANGE(0x20c002, 0x20c003) AM_DEVREADWRITE8(CRTC_TAG, mc6845_device, register_r, register_w, 0x00ff)
179271
180   AM_RANGE(0x20e000, 0x20e001) AM_WRITE(vbl_ack16_w)
272   AM_RANGE(0x20e000, 0x20e001) AM_READWRITE(vbl_ack16_r, vbl_ack16_w)
181273
182274   AM_RANGE(0x600000, 0x61ffff) AM_WRITE(vram_w)
183275   AM_RANGE(0x600000, 0x67ffff) AM_READ8(vram_r, 0x00ff)
r242688r242689
301393   return 0;
302394}
303395
396static MACHINE_CONFIG_START( hp1650, hp16500_state )
397   /* basic machine hardware */
398   MCFG_CPU_ADD(MAINCPU_TAG, M68000, 10000000)
399   MCFG_CPU_PROGRAM_MAP(hp1650_map)
400
401   MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
402   MCFG_SCREEN_RAW_PARAMS(25000000, 0x330, 0, 0x250, 0x198, 0, 0x180 )
403   MCFG_SCREEN_UPDATE_DEVICE( CRTC_TAG, mc6845_device, screen_update )
404
405   MCFG_MC6845_ADD(CRTC_TAG, MC6845, SCREEN_TAG, 25000000/9)
406   MCFG_MC6845_SHOW_BORDER_AREA(false)
407   MCFG_MC6845_CHAR_WIDTH(8)
408   MCFG_MC6845_UPDATE_ROW_CB(hp16500_state, crtc_update_row_1650)
409   MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(hp16500_state, vsync_changed))
410
411   MCFG_DEVICE_ADD(DUART_TAG, MC68681, 20000000)
412
413   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
414MACHINE_CONFIG_END
415
416static MACHINE_CONFIG_START( hp1651, hp16500_state )
417   /* basic machine hardware */
418   MCFG_CPU_ADD(MAINCPU_TAG, M68000, 10000000)
419   MCFG_CPU_PROGRAM_MAP(hp1651_map)
420
421   MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
422   MCFG_SCREEN_RAW_PARAMS(25000000, 0x330, 0, 0x250, 0x198, 0, 0x180 )
423   MCFG_SCREEN_UPDATE_DEVICE( CRTC_TAG, mc6845_device, screen_update )
424
425   MCFG_MC6845_ADD(CRTC_TAG, MC6845, SCREEN_TAG, 25000000/9)
426   MCFG_MC6845_SHOW_BORDER_AREA(false)
427   MCFG_MC6845_CHAR_WIDTH(8)
428   MCFG_MC6845_UPDATE_ROW_CB(hp16500_state, crtc_update_row_1650)
429   MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(hp16500_state, vsync_changed))
430
431   MCFG_DEVICE_ADD(DUART_TAG, MC68681, 20000000)
432
433   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
434MACHINE_CONFIG_END
435
304436static MACHINE_CONFIG_START( hp16500a, hp16500_state )
305437   /* basic machine hardware */
306   MCFG_CPU_ADD("maincpu", M68000, 10000000)
438   MCFG_CPU_ADD(MAINCPU_TAG, M68000, 10000000)
307439   MCFG_CPU_PROGRAM_MAP(hp16500a_map)
308440
309   MCFG_SCREEN_ADD("screen", RASTER)
310   MCFG_SCREEN_RAW_PARAMS(10000000, 0x320, 0, 0x240, 0x19c, 0, 0x170 )
311   MCFG_SCREEN_UPDATE_DEVICE( "crtc", mc6845_device, screen_update )
441   MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
442   MCFG_SCREEN_RAW_PARAMS(25000000, 0x320, 0, 0x240, 0x19c, 0, 0x170 )
443   MCFG_SCREEN_UPDATE_DEVICE( CRTC_TAG, mc6845_device, screen_update )
312444
313   MCFG_MC6845_ADD("crtc", MC6845, "screen", 10000000/9)
445   MCFG_MC6845_ADD(CRTC_TAG, MC6845, SCREEN_TAG, 25000000/9)
314446   MCFG_MC6845_SHOW_BORDER_AREA(false)
315447   MCFG_MC6845_CHAR_WIDTH(8)
316448   MCFG_MC6845_UPDATE_ROW_CB(hp16500_state, crtc_update_row)
317449   MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(hp16500_state, vsync_changed))
318450
451   MCFG_DEVICE_ADD(DUART_TAG, MC68681, 20000000)
452
319453   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
320454MACHINE_CONFIG_END
321455
322456static MACHINE_CONFIG_START( hp16500, hp16500_state )
323457   /* basic machine hardware */
324   MCFG_CPU_ADD("maincpu", M68EC030, 25000000)
458   MCFG_CPU_ADD(MAINCPU_TAG, M68EC030, 25000000)
325459   MCFG_CPU_PROGRAM_MAP(hp16500_map)
326   MCFG_CPU_VBLANK_INT_DRIVER("screen", hp16500_state, vblank)
460   MCFG_CPU_VBLANK_INT_DRIVER(SCREEN_TAG, hp16500_state, vblank)
327461
328   MCFG_SCREEN_ADD("screen", RASTER)
462   MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
329463   MCFG_SCREEN_UPDATE_DRIVER(hp16500_state, screen_update_hp16500)
330464   MCFG_SCREEN_SIZE(576,384)
331465   MCFG_SCREEN_VISIBLE_AREA(0, 576-1, 0, 384-1)
332466   MCFG_SCREEN_REFRESH_RATE(60)
333467
468   MCFG_DEVICE_ADD(DUART_TAG, MC68681, 20000000)
469
334470   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
335471MACHINE_CONFIG_END
336472
337473static INPUT_PORTS_START( hp16500 )
338474INPUT_PORTS_END
339475
476ROM_START( hp1650b )
477   ROM_REGION16_BE(0x20000, "bios", 0)
478   ROM_LOAD16_BYTE( "la1.bin",      0x000000, 0x008000, CRC(7c60e334) SHA1(c3661e4bb58e0951e9c13208b4991f5d9dda633b) )
479   ROM_LOAD16_BYTE( "la2.bin",      0x000001, 0x008000, CRC(b0c6fe60) SHA1(a77b2e7098f26af93b0946abe6e89711b3332210) )
480ROM_END
481
482ROM_START( hp1651b )
483   ROM_REGION16_BE(0x20000, "bios", 0)
484   ROM_LOAD16_BYTE( "u102.bin",     0x000000, 0x008000, CRC(d7e1b091) SHA1(af813cc7ae748aedf1b1d9d522ee2154961315c2) )
485   ROM_LOAD16_BYTE( "u103.bin",     0x000001, 0x008000, CRC(f32a37c7) SHA1(8addda59923f64fd9b7e909eb0e3a17cc02bb70e) )
486ROM_END
487
340488ROM_START( hp165ka0 )
341489   ROM_REGION16_BE(0x20000, "bios", 0)
342490   ROM_LOAD16_BYTE( "16500-80002.bin", 0x000000, 0x008000, CRC(0324b75a) SHA1(837855fce9288139226c914cc0c43061e25b57d2) )
r242688r242689
351499   ROM_LOAD32_BYTE( "16500-80017.bin", 0x000003, 0x008000, CRC(e0b1096b) SHA1(426bb9a4756d8087bded4f6b61365d733ffbb09a) )
352500ROM_END
353501
354COMP( 1994, hp165ka0, 0, 0, hp16500a, hp16500, driver_device, 0,  "Hewlett Packard", "HP 16500a", GAME_NOT_WORKING|GAME_NO_SOUND)
355COMP( 1994, hp16500b, 0, 0, hp16500, hp16500, driver_device, 0,  "Hewlett Packard", "HP 16500b", GAME_NOT_WORKING|GAME_NO_SOUND)
502COMP( 1989, hp1650b,  0, 0, hp1650,  hp16500, driver_device, 0,  "Hewlett Packard", "HP 1650b", GAME_NOT_WORKING|GAME_NO_SOUND)
503COMP( 1989, hp1651b,  0, 0, hp1651,  hp16500, driver_device, 0,  "Hewlett Packard", "HP 1651b", GAME_NOT_WORKING|GAME_NO_SOUND)
504COMP( 1991, hp165ka0, 0, 0, hp16500a, hp16500, driver_device, 0, "Hewlett Packard", "HP 16500a", GAME_NOT_WORKING|GAME_NO_SOUND)
505COMP( 1991, hp16500b, 0, 0, hp16500, hp16500, driver_device, 0,  "Hewlett Packard", "HP 16500b", GAME_NOT_WORKING|GAME_NO_SOUND)
trunk/src/mess/mess.lst
r242688r242689
17231723hp48gp  // HP 48G+
17241724hp49g
17251725hp49gp  // HP 49G+
1726hp1650b
1727hp1651b
17261728hp165ka0
17271729hp16500b
17281730hp9816


Previous 199869 Revisions Next


© 1997-2024 The MAME Team