Previous 15994 Revisions Next

r8490 Tuesday 13th July, 2010 at 13:49:24 UTC by Miodrag Milanović
[PV2000] Initial driver with updated ROM [anondumper]
[docs]messnew.txt
[src/mess/drivers]pv2000.c

src/mess/drivers/pv2000.c
r8489r8490
1/***************************************************************************
2   
3        Driver for Casio PV-2000
1/*
42
5        13/07/2010 Skeleton driver.
3CASIO PV-2000
64
7****************************************************************************/
5(preliminary work by anondumper)
6Thanks for the loaner (Ianoid)
87
8NOTE:
9The PCB has printed names of components, not ICXY, etc
10but: "hn613128pc64.bin"
11
12SEE
13http://hou4gong1.mo-blog.jp/.shared/image.html?/photos/uncategorized/pv_2000_k1.jpg
14http://hou4gong1.mo-blog.jp/.shared/image.html?/photos/uncategorized/pv_2000_14.jpg
15http://hou4gong1.mo-blog.jp/.shared/image.html?/photos/uncategorized/pv_2000_15.jpg
16
17Also See:
18http://www2.odn.ne.jp/~haf09260/Pv2000/EnrPV.htm
19For BIOS CRC confirmation
20*/
21
22
923#include "emu.h"
1024#include "cpu/z80/z80.h"
25#include "sound/sn76496.h"
26#include "video/tms9928a.h"
27#include "devices/cartslot.h"
1128
12static ADDRESS_MAP_START(pv2000_mem, ADDRESS_SPACE_PROGRAM, 8)
13   ADDRESS_MAP_UNMAP_HIGH
14   AM_RANGE(0x0000, 0x3fff) AM_ROM
15   AM_RANGE(0x4000, 0xffff) AM_RAM
29
30static int last_state=0;
31
32static WRITE8_HANDLER( pv2000_keys_w )
33{
34   switch(offset){
35      default:break;
36   }
37}
38
39static READ8_HANDLER( pv2000_keys_r )
40{
41   switch(offset){
42      default:break;
43   }
44
45   return 0;
46}
47
48
49/* Memory Maps */
50
51static ADDRESS_MAP_START( pv2000_map, ADDRESS_SPACE_PROGRAM, 8 )
52   AM_RANGE(0x0000, 0x3FFF) AM_ROM
53
54   AM_RANGE(0x4000, 0x4000) AM_READWRITE(TMS9928A_vram_r, TMS9928A_vram_w)
55   AM_RANGE(0x4001, 0x4001) AM_READWRITE(TMS9928A_register_r, TMS9928A_register_w)
56
57   AM_RANGE(0x7000, 0x7FFF) AM_RAM
58  //AM_RANGE(0x8000, 0xBFFF) ext ram?
59   AM_RANGE(0xC000, 0xFFFF) AM_ROM  //cart
1660ADDRESS_MAP_END
1761
18static ADDRESS_MAP_START( pv2000_io , ADDRESS_SPACE_IO, 8)
19   ADDRESS_MAP_UNMAP_HIGH
62
63static ADDRESS_MAP_START( pv2000_io_map, ADDRESS_SPACE_IO, 8 )
64   ADDRESS_MAP_GLOBAL_MASK(0xff)
65
66   //theres also printer and tape I/O (TODO)
67
68   //keyboard/joystick
69   //AM_RANGE(0x10, 0x10) AM_READ(pv2000_keys_r)
70   AM_RANGE(0x20, 0x20) AM_READWRITE(pv2000_keys_r, pv2000_keys_w)
71   //AM_RANGE(0x40, 0x40) AM_READ(pv2000_keys_r)
72
73   //sn76489a
74   AM_RANGE(0x40, 0x40) AM_DEVWRITE("sn76489a", sn76496_w)
75
2076ADDRESS_MAP_END
2177
22/* Input ports */
78
2379static INPUT_PORTS_START( pv2000 )
80
2481INPUT_PORTS_END
2582
2683
27static MACHINE_RESET(pv2000)
28{   
84static INTERRUPT_GEN( pv2000_interrupt )
85{
86   TMS9928A_interrupt(device->machine);
2987}
3088
31static VIDEO_START( pv2000 )
89static void pv2000_vdp_interrupt(running_machine *machine, int state)
3290{
91    // only if it goes up
92   if (state && !last_state)
93      cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
94
95   last_state = state;
3396}
3497
35static VIDEO_UPDATE( pv2000 )
98
99
100/* Machine Initialization */
101
102static const TMS9928a_interface tms9928a_interface =
36103{
37    return 0;
104   TMS99x8A,
105   0x4000,
106   0, 0,
107   pv2000_vdp_interrupt
108};
109
110static MACHINE_START( pv2000 )
111{
112   TMS9928A_configure(&tms9928a_interface);
38113}
39114
115static MACHINE_RESET( pv2000 )
116{
117   last_state = 0;
118   cpu_set_input_line_vector(devtag_get_device(machine, "maincpu"), INPUT_LINE_IRQ0, 0xff);
119   memset(&memory_region(machine, "maincpu")[0x7000], 0xff, 0x1000);   // initialize RAM
120}
121
122
123/* Machine Drivers */
124
40125static MACHINE_DRIVER_START( pv2000 )
41    /* basic machine hardware */
42    MDRV_CPU_ADD("maincpu",Z80, XTAL_4MHz)
43    MDRV_CPU_PROGRAM_MAP(pv2000_mem)
44    MDRV_CPU_IO_MAP(pv2000_io)   
126   // basic machine hardware
127   MDRV_CPU_ADD("maincpu", Z80, XTAL_7_15909MHz/2)   // 3.579545 MHz
128   MDRV_CPU_PROGRAM_MAP(pv2000_map)
129   MDRV_CPU_IO_MAP(pv2000_io_map)
130   MDRV_CPU_VBLANK_INT("screen", pv2000_interrupt)
45131
46    MDRV_MACHINE_RESET(pv2000)
47   
48    /* video hardware */
49    MDRV_SCREEN_ADD("screen", RASTER)
50    MDRV_SCREEN_REFRESH_RATE(50)
51    MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
52    MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
53    MDRV_SCREEN_SIZE(640, 480)
54    MDRV_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
55    MDRV_PALETTE_LENGTH(2)
56    MDRV_PALETTE_INIT(black_and_white)
132   MDRV_MACHINE_START(pv2000)
133   MDRV_MACHINE_RESET(pv2000)
57134
58    MDRV_VIDEO_START(pv2000)
59    MDRV_VIDEO_UPDATE(pv2000)
135    // video hardware
136   MDRV_IMPORT_FROM(tms9928a)
137   MDRV_SCREEN_MODIFY("screen")
138   MDRV_SCREEN_REFRESH_RATE((float)XTAL_10_738635MHz/2/342/262)
139   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
140
141   // sound hardware
142   MDRV_SPEAKER_STANDARD_MONO("mono")
143   MDRV_SOUND_ADD("sn76489a", SN76489A, XTAL_7_15909MHz/2)   /* 3.579545 MHz */
144   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
145
146   /* cartridge */
147   MDRV_CARTSLOT_ADD("cart")
148   MDRV_CARTSLOT_EXTENSION_LIST("rom,col,bin")
149   MDRV_CARTSLOT_NOT_MANDATORY
60150MACHINE_DRIVER_END
61151
62/* ROM definition */
63ROM_START( pv2000 )
64    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
65   ROM_LOAD( "ipl.rom", 0x0000, 0x4000, CRC(78ecfb99) SHA1(cdf54cb713f65fd1197002cc5082eaafe13625aa))
152
153
154/* ROMs */
155ROM_START (pv2000)
156   ROM_REGION( 0x10000, "maincpu", 0 )
157   ROM_LOAD( "hn613128pc64.bin", 0x0000, 0x4000, CRC(8f31f297) SHA1(94b5f54dd7bce321e377fdaaf592acd3870cf621) )
158   ROM_CART_LOAD("cart", 0xC000, 0x4000, ROM_OPTIONAL)
66159ROM_END
67160
68/* Driver */
69161
70/*    YEAR  NAME    PARENT  COMPAT   MACHINE    INPUT    INIT     COMPANY   FULLNAME       FLAGS */
71COMP( ????, pv2000,  0,       0,    pv2000,    pv2000,     0,   "Casio",   "PV-2000",      GAME_NOT_WORKING | GAME_NO_SOUND)
162/* System Drivers */
72163
164//    YEAR  NAME     PARENT  COMPAT  MACHINE  INPUT     INIT COMPANY   FULLNAME    FLAGS
165CONS( 1983, pv2000,  0,      0,      pv2000,  pv2000,   0,   "Casio",  "PV-2000",  GAME_NOT_WORKING )
docs/messnew.txt
r8489r8490
55- Bally Home Library Computer [ranger_lennier]
66- Commodore 64C (Swedish/Finland) [Curt Coder]
77- Sega SC-3000 [Miodrag Milanovic]
8- Casio PV-2000 [anondumper]
89
9
1010Systems Promoted from GAME_NOT_WORKING:
1111---------------------------------------
1212- Canon X07 [Sandro Ronco]
r8489r8490
2020-----------------
2121- Salora Manager [Curt Coder]
2222- VTech PC Prestige Elite [Joseba Epalza, Curt Coder]
23- Casio PV-2000
2423- Sony SMC-777
2524- Mitsubishi Multi 8
2625- Bandai Gundam RX-78

Previous 15994 Revisions Next


© 1998-2018 The MESS Team