static MACHINE_START( kinst ) { kinst_state *state = machine.driver_data<kinst_state>(); device_t *ide = machine.device("ide"); UINT8 *features = ide_get_features(ide,0); if (strncmp(machine.system().name, "kinst2", 6) != 0) { /* kinst: tweak the model number so we pass the check */ features[27*2+0] = 0x54; features[27*2+1] = 0x53; features[28*2+0] = 0x31; features[28*2+1] = 0x39; features[29*2+0] = 0x30; features[29*2+1] = 0x35; features[30*2+0] = 0x47; features[30*2+1] = 0x41; features[31*2+0] = 0x20; features[31*2+1] = 0x20; } else { /* kinst2: tweak the model number so we pass the check */ features[10*2+0] = 0x30; features[10*2+1] = 0x30; features[11*2+0] = 0x54; features[11*2+1] = 0x53; features[12*2+0] = 0x31; features[12*2+1] = 0x39; features[13*2+0] = 0x30; features[13*2+1] = 0x35; features[14*2+0] = 0x47; features[14*2+1] = 0x41; } /* set the fastest DRC options */ mips3drc_set_options(machine.device("maincpu"), MIPS3DRC_FASTEST_OPTIONS); /* configure fast RAM regions for DRC */ mips3drc_add_fastram(machine.device("maincpu"), 0x08000000, 0x087fffff, FALSE, state->m_rambase2); mips3drc_add_fastram(machine.device("maincpu"), 0x00000000, 0x0007ffff, FALSE, state->m_rambase); mips3drc_add_fastram(machine.device("maincpu"), 0x1fc00000, 0x1fc7ffff, TRUE, state->m_rombase); }
ROM_END /************************************* * * Driver initialization * *************************************/ static DRIVER_INIT( kinst ) { static const UINT8 kinst_control_map[8] = { 0,1,2,3,4,5,6,7 }; UINT8 *features; dcs_init(); /* set up the control register mapping */ control_map = kinst_control_map; /* spin up the hard disk */ ide_controller_init(0, &ide_intf); /* tweak the model number so we pass the check */ features = ide_get_features(0); features[27*2+0] = 0x54; features[27*2+1] = 0x53; features[28*2+0] = 0x31; features[28*2+1] = 0x39; features[29*2+0] = 0x30; features[29*2+1] = 0x35; features[30*2+0] = 0x47; features[30*2+1] = 0x41; features[31*2+0] = 0x20; features[31*2+1] = 0x20; /* optimize one of the non-standard loops */ kinst_speedup = memory_install_read32_handler(0, ADDRESS_SPACE_PROGRAM, 0x8808f5bc, 0x8808f5bf, 0, 0, kinst_speedup_r); }
static DRIVER_INIT( kinst2 ) { static const UINT8 kinst2_control_map[8] = { 2,4,1,0,3,5,6,7 }; UINT8 *features; // read: $80 on ki2 = $90 on ki // read: $88 on ki2 = $a0 on ki // write: $80 on ki2 = $90 on ki // write: $90 on ki2 = $88 on ki // write: $98 on ki2 = $80 on ki // write: $a0 on ki2 = $98 on ki dcs_init(); /* set up the control register mapping */ control_map = kinst2_control_map; /* spin up the hard disk */ ide_controller_init(0, &ide_intf); /* tweak the model number so we pass the check */ features = ide_get_features(0); features[10*2+0] = 0x30; features[10*2+1] = 0x30; features[11*2+0] = 0x54; features[11*2+1] = 0x53; features[12*2+0] = 0x31; features[12*2+1] = 0x39; features[13*2+0] = 0x30; features[13*2+1] = 0x35; features[14*2+0] = 0x47; features[14*2+1] = 0x41; /* optimize one of the non-standard loops */ kinst_speedup = memory_install_read32_handler(0, ADDRESS_SPACE_PROGRAM, 0x887ff544, 0x887ff547, 0, 0, kinst_speedup_r); }