Previous 15994 Revisions Next

r13656 Wednesday 21st December, 2011 at 15:41:50 UTC by Angelo Salese
Moved x1twin into x1twin.c
[src/mess]mess.mak
[src/mess/drivers]x1.c
[src/mess/includes]x1.h

src/mess/includes/x1.h
r13655r13656
5656{
5757public:
5858   x1_state(const machine_config &mconfig, device_type type, const char *tag)
59      : driver_device(mconfig, type, tag) { }
59      : driver_device(mconfig, type, tag),
60      m_x1_cpu(*this,"x1_cpu")
61      { }
6062
6163   UINT8 *m_tvram;
6264   UINT8 *m_avram;
r13655r13656
107109   UINT8 m_is_turbo;
108110   UINT8 m_ex_bank;
109111   UINT8 m_ram_bank;
112
113   required_device<cpu_device> m_x1_cpu;
110114};
111115
116VIDEO_START( x1 );
112117SCREEN_UPDATE( x1 );
118
113119READ8_HANDLER( x1_sub_io_r );
114120WRITE8_HANDLER( x1_sub_io_w );
115121READ8_HANDLER( x1_rom_r );
r13655r13656
163169
164170TIMER_DEVICE_CALLBACK(x1_keyboard_callback);
165171TIMER_CALLBACK(x1_rtc_increment);
172TIMER_DEVICE_CALLBACK( x1_cmt_wind_timer );
166173
167174MACHINE_RESET( x1 );
168175MACHINE_RESET( x1turbo );
169176MACHINE_START( x1 );
170177PALETTE_INIT(x1);
171178
179DRIVER_INIT( x1_kanji );
172180
181
173182/*----------- defined in machine/x1.c -----------*/
174183
175184extern const device_type X1_KEYBOARD;
src/mess/mess.mak
r13655r13656
14251425   $(MESS_DRIVERS)/mz2000.o   \
14261426   $(MESS_DRIVERS)/x1.o      \
14271427   $(MESS_MACHINE)/x1.o      \
1428   $(MESS_DRIVERS)/x1twin.o   \
14281429   $(MESS_DRIVERS)/mz2500.o   \
14291430   $(MESS_DRIVERS)/pce220.o   \
14301431   $(MESS_MACHINE)/pce220_ser.o   \
src/mess/drivers/x1.c
r13655r13656
217217#include "video/mc6845.h"
218218#include "sound/2151intf.h"
219219#include "sound/wave.h"
220
221220#include "machine/wd17xx.h"
222221#include "imagedev/cassette.h"
223222#include "imagedev/flopdrv.h"
r13655r13656
242241 *
243242 *************************************/
244243
245static VIDEO_START( x1 )
244VIDEO_START( x1 )
246245{
247246   x1_state *state = machine.driver_data<x1_state>();
248247
r13655r13656
827826   logerror("CMT: Command 0xe9-0x%02x received.\n",cmd);
828827}
829828
830static TIMER_DEVICE_CALLBACK( x1_cmt_wind_timer )
829TIMER_DEVICE_CALLBACK( x1_cmt_wind_timer )
831830{
832831   x1_state *state = timer.machine().driver_data<x1_state>();
833832   cassette_image_device* cmt = timer.machine().device<cassette_image_device>(CASSETTE_TAG);
r13655r13656
16111610WRITE8_HANDLER( x1turbo_bank_w )
16121611{
16131612   x1_state *state = space->machine().driver_data<x1_state>();
1614   //UINT8 *RAM = space->machine().region("maincpu")->base();
1613   //UINT8 *RAM = space->machine().region("x1_cpu")->base();
16151614   /*
16161615    --x- ---- BML5: latch bit (doesn't have any real function)
16171616    ---x ---- BMCS: select bank RAM, active low
r13655r13656
20072006
20082007static Z80DMA_INTERFACE( x1_dma )
20092008{
2010   DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_HALT),
2011   DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0),
2009   DEVCB_CPU_INPUT_LINE("x1_cpu", INPUT_LINE_HALT),
2010   DEVCB_CPU_INPUT_LINE("x1_cpu", INPUT_LINE_IRQ0),
20122011   DEVCB_NULL,
2013   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_read_byte),
2014   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_write_byte),
2015   DEVCB_MEMORY_HANDLER("maincpu", IO, memory_read_byte),
2016   DEVCB_MEMORY_HANDLER("maincpu", IO, memory_write_byte)
2012   DEVCB_MEMORY_HANDLER("x1_cpu", PROGRAM, memory_read_byte),
2013   DEVCB_MEMORY_HANDLER("x1_cpu", PROGRAM, memory_write_byte),
2014   DEVCB_MEMORY_HANDLER("x1_cpu", IO, memory_read_byte),
2015   DEVCB_MEMORY_HANDLER("x1_cpu", IO, memory_write_byte)
20172016};
20182017
20192018/*************************************
r13655r13656
20242023
20252024static INPUT_CHANGED( ipl_reset )
20262025{
2027   //address_space *space = field.machine().device("maincpu")->memory().space(AS_PROGRAM);
2026   //address_space *space = field.machine().device("x1_cpu")->memory().space(AS_PROGRAM);
20282027   x1_state *state = field.machine().driver_data<x1_state>();
20292028
2030   cputag_set_input_line(field.machine(), "maincpu", INPUT_LINE_RESET, newval ? CLEAR_LINE : ASSERT_LINE);
2029   device_set_input_line(state->m_x1_cpu, INPUT_LINE_RESET, newval ? CLEAR_LINE : ASSERT_LINE);
20312030
20322031   state->m_ram_bank = 0x00;
20332032   if(state->m_is_turbo) { state->m_ex_bank = 0x10; }
r13655r13656
20372036/* Apparently most games doesn't support this (not even the Konami ones!), one that does is...177 :o */
20382037static INPUT_CHANGED( nmi_reset )
20392038{
2040   cputag_set_input_line(field.machine(), "maincpu", INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
2039   x1_state *state = field.machine().driver_data<x1_state>();
2040
2041   device_set_input_line(state->m_x1_cpu, INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
20412042}
20422043
20432044INPUT_PORTS_START( x1 )
r13655r13656
23712372static Z80CTC_INTERFACE( ctc_intf )
23722373{
23732374   0,               // timer disables
2374   DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0),      // interrupt handler
2375   DEVCB_CPU_INPUT_LINE("x1_cpu", INPUT_LINE_IRQ0),      // interrupt handler
23752376   DEVCB_LINE(z80ctc_trg3_w),      // ZC/TO0 callback
23762377   DEVCB_LINE(z80ctc_trg1_w),      // ZC/TO1 callback
23772378   DEVCB_LINE(z80ctc_trg2_w),      // ZC/TO2 callback
r13655r13656
24082409   DEVCB_NULL,
24092410   DEVCB_NULL,
24102411
2411   DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0)
2412   DEVCB_CPU_INPUT_LINE("x1_cpu", INPUT_LINE_IRQ0)
24122413};
24132414
24142415static const z80_daisy_config x1_daisy[] =
r13655r13656
24922493TIMER_DEVICE_CALLBACK(x1_keyboard_callback)
24932494{
24942495   x1_state *state = timer.machine().driver_data<x1_state>();
2495   address_space *space = timer.machine().device("maincpu")->memory().space(AS_PROGRAM);
2496   address_space *space = timer.machine().device("x1_cpu")->memory().space(AS_PROGRAM);
24962497   UINT32 key1 = input_port_read(timer.machine(),"key1");
24972498   UINT32 key2 = input_port_read(timer.machine(),"key2");
24982499   UINT32 key3 = input_port_read(timer.machine(),"key3");
r13655r13656
25102511         x1_sub_io_w(space,0,0xe6);
25112512         state->m_irq_vector = state->m_key_irq_vector;
25122513         state->m_key_irq_flag = 1;
2513         cputag_set_input_line(timer.machine(),"maincpu",0,ASSERT_LINE);
2514         cputag_set_input_line(timer.machine(),"x1_cpu",0,ASSERT_LINE);
25142515         state->m_old_key1 = key1;
25152516         state->m_old_key2 = key2;
25162517         state->m_old_key3 = key3;
r13655r13656
25512552MACHINE_RESET( x1 )
25522553{
25532554   x1_state *state = machine.driver_data<x1_state>();
2554   //UINT8 *ROM = machine.region("maincpu")->base();
2555   //UINT8 *ROM = machine.region("x1_cpu")->base();
25552556   UINT8 *PCG_RAM = machine.region("pcg")->base();
25562557   int i;
25572558
r13655r13656
25672568
25682569   state->m_io_bank_mode = 0;
25692570
2570   //device_set_irq_callback(machine.device("maincpu"), x1_irq_callback);
2571   //device_set_irq_callback(machine.device("x1_cpu"), x1_irq_callback);
25712572
25722573   state->m_cmt_current_cmd = 0;
25732574   state->m_cmt_test = 0;
r13655r13656
26572658
26582659static MACHINE_CONFIG_START( x1, x1_state )
26592660   /* basic machine hardware */
2660   MCFG_CPU_ADD("maincpu", Z80, MAIN_CLOCK/4)
2661   MCFG_CPU_ADD("x1_cpu", Z80, MAIN_CLOCK/4)
26612662   MCFG_CPU_PROGRAM_MAP(x1_mem)
26622663   MCFG_CPU_IO_MAP(x1_io)
26632664   MCFG_CPU_CONFIG(x1_daisy)
r13655r13656
27142715   MCFG_SOFTWARE_LIST_ADD("flop_list","x1_flop")
27152716
27162717   MCFG_TIMER_ADD_PERIODIC("keyboard_timer", x1_keyboard_callback, attotime::from_hz(250))
2717   MCFG_TIMER_ADD_PERIODIC("x1_cmt_wind_timer", x1_cmt_wind_timer, attotime::from_hz(16))
2718   MCFG_TIMER_ADD_PERIODIC("cmt_wind_timer", x1_cmt_wind_timer, attotime::from_hz(16))
27182719MACHINE_CONFIG_END
27192720
27202721static MACHINE_CONFIG_DERIVED( x1turbo, x1 )
27212722
2722   MCFG_CPU_MODIFY("maincpu")
2723   MCFG_CPU_MODIFY("x1_cpu")
27232724   MCFG_CPU_PROGRAM_MAP(x1turbo_mem)
27242725   MCFG_CPU_IO_MAP(x1turbo_io)
27252726   MCFG_CPU_CONFIG(x1turbo_daisy)
r13655r13656
27462747 *************************************/
27472748
27482749 ROM_START( x1 )
2749   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
2750   ROM_REGION( 0x10000, "x1_cpu", ROMREGION_ERASEFF )
27502751
27512752   ROM_REGION( 0x8000, "ipl", ROMREGION_ERASEFF )
27522753   ROM_LOAD( "ipl.x1", 0x0000, 0x1000, CRC(7b28d9de) SHA1(c4db9a6e99873808c8022afd1c50fef556a8b44d) )
r13655r13656
27752776   ROM_CART_LOAD("cart", 0x0000, 0xffffff, ROM_OPTIONAL | ROM_NOMIRROR)
27762777ROM_END
27772778
2778ROM_START( x1twin )
2779   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
2780
2781   ROM_REGION( 0x8000, "ipl", ROMREGION_ERASEFF )
2782   ROM_LOAD( "ipl.rom", 0x0000, 0x1000, CRC(e70011d3) SHA1(d3395e9aeb5b8bbba7654dd471bcd8af228ee69a) )
2783
2784   ROM_REGION( 0x10000, "wram", ROMREGION_ERASE00 )
2785
2786   ROM_REGION(0x1000, "mcu", ROMREGION_ERASEFF) //MCU for the Keyboard, "sub cpu"
2787   ROM_LOAD( "80c48", 0x0000, 0x1000, NO_DUMP )
2788
2789   ROM_REGION( 0x1000000, "emm", ROMREGION_ERASEFF )
2790
2791   ROM_REGION(0x1800, "pcg", ROMREGION_ERASEFF)
2792
2793   ROM_REGION(0x1000, "font", 0) //TODO: this contains 8x16 charset only, maybe it's possible that it derivates a 8x8 charset by skipping gfx lines?
2794   ROM_LOAD( "ank16.rom", 0x0000, 0x1000, CRC(8f9fb213) SHA1(4f06d20c997a79ee6af954b69498147789bf1847) )
2795
2796   ROM_REGION(0x1800, "cgrom", 0)
2797   ROM_LOAD("ank8.rom", 0x00000, 0x00800, CRC(e3995a57) SHA1(1c1a0d8c9f4c446ccd7470516b215ddca5052fb2) )
2798   ROM_COPY("font",    0x00000, 0x00800, 0x1000 )
2799
2800   ROM_REGION(0x20000, "kanji", ROMREGION_ERASEFF)
2801
2802   ROM_REGION(0x20000, "raw_kanji", ROMREGION_ERASEFF) // these comes from x1 turbo
2803   ROM_LOAD("kanji4.rom", 0x00000, 0x8000, BAD_DUMP CRC(3e39de89) SHA1(d3fd24892bb1948c4697dedf5ff065ff3eaf7562) )
2804   ROM_LOAD("kanji2.rom", 0x08000, 0x8000, BAD_DUMP CRC(e710628a) SHA1(103bbe459dc8da27a9400aa45b385255c18fcc75) )
2805   ROM_LOAD("kanji3.rom", 0x10000, 0x8000, BAD_DUMP CRC(8cae13ae) SHA1(273f3329c70b332f6a49a3a95e906bbfe3e9f0a1) )
2806   ROM_LOAD("kanji1.rom", 0x18000, 0x8000, BAD_DUMP CRC(5874f70b) SHA1(dad7ada1b70c45f1e9db11db273ef7b385ef4f17) )
2807
2808   ROM_REGION( 0x1000000, "cart_img", ROMREGION_ERASE00 )
2809   ROM_CART_LOAD("cart", 0x0000, 0xffffff, ROM_OPTIONAL | ROM_NOMIRROR)
2810ROM_END
2811
28122779ROM_START( x1turbo )
2813   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
2780   ROM_REGION( 0x10000, "x1_cpu", ROMREGION_ERASEFF )
28142781
28152782   ROM_REGION( 0x8000, "ipl", ROMREGION_ERASEFF )
28162783   ROM_LOAD( "ipl.x1t", 0x0000, 0x8000, CRC(2e8b767c) SHA1(44620f57a25f0bcac2b57ca2b0f1ebad3bf305d3) )
r13655r13656
28462813ROM_END
28472814
28482815ROM_START( x1turbo40 )
2849   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
2816   ROM_REGION( 0x10000, "x1_cpu", ROMREGION_ERASEFF )
28502817
28512818   ROM_REGION( 0x8000, "ipl", ROMREGION_ERASEFF )
28522819   ROM_LOAD( "ipl.bin", 0x0000, 0x8000, CRC(112f80a2) SHA1(646cc3fb5d2d24ff4caa5167b0892a4196e9f843) )
r13655r13656
28812848
28822849
28832850/* Convert the ROM interleaving into something usable by the write handlers */
2884static DRIVER_INIT( kanji )
2851DRIVER_INIT( x1_kanji )
28852852{
28862853   UINT32 i,j,k,l;
28872854   UINT8 *kanji = machine.region("kanji")->base();
r13655r13656
29042871
29052872
29062873/*    YEAR  NAME       PARENT  COMPAT   MACHINE  INPUT       INIT   COMPANY   FULLNAME      FLAGS */
2907COMP( 1982, x1,        0,      0,       x1,      x1,         0,    "Sharp",  "X1 (CZ-800C)",         0 )
2908COMP( 1986, x1twin,    x1,     0,       x1,     x1,         kanji,"Sharp",  "X1 Twin (CZ-830C)",    GAME_NOT_WORKING )
2909COMP( 1984, x1turbo,   x1,     0,       x1turbo, x1turbo,    kanji,"Sharp",  "X1 Turbo (CZ-850C)",   GAME_NOT_WORKING ) //model 10
2910COMP( 1985, x1turbo40, x1,     0,       x1turbo, x1turbo,    kanji,"Sharp",  "X1 Turbo (CZ-862C)",   0 ) //model 40
2874COMP( 1982, x1,        0,      0,       x1,      x1,         0,       "Sharp",  "X1 (CZ-800C)",         0 )
2875// x1twin in x1twin.c
2876COMP( 1984, x1turbo,   x1,     0,       x1turbo, x1turbo,    x1_kanji,"Sharp",  "X1 Turbo (CZ-850C)",   GAME_NOT_WORKING ) //model 10
2877COMP( 1985, x1turbo40, x1,     0,       x1turbo, x1turbo,    x1_kanji,"Sharp",  "X1 Turbo (CZ-862C)",   0 ) //model 40
29112878// x1turboz  /* 1986 Sharp X1 TurboZ  */

Previous 15994 Revisions Next


© 1998-2018 The MESS Team