82
82
*************************************/
84
READ8_HANDLER( cerberus_dial_1_r )
84
READ8_MEMBER(leland_state::cerberus_dial_1_r)
86
int original = input_port_read(space->machine(), "IN0");
87
int modified = dial_compute_value(space->machine(), input_port_read(space->machine(), "AN0"), 0);
86
int original = ioport("IN0")->read();
87
int modified = dial_compute_value(machine(), ioport("AN0")->read(), 0);
88
88
return (original & 0xc0) | ((modified & 0x80) >> 2) | (modified & 0x1f);
92
READ8_HANDLER( cerberus_dial_2_r )
92
READ8_MEMBER(leland_state::cerberus_dial_2_r)
94
int original = input_port_read(space->machine(), "IN0");
95
int modified = dial_compute_value(space->machine(), input_port_read(space->machine(), "AN1"), 1);
94
int original = ioport("IN0")->read();
95
int modified = dial_compute_value(machine(), ioport("AN1")->read(), 1);
96
96
return (original & 0xc0) | ((modified & 0x80) >> 2) | (modified & 0x1f);
105
105
*************************************/
108
WRITE8_HANDLER( alleymas_joystick_kludge )
108
WRITE8_MEMBER(leland_state::alleymas_joystick_kludge)
110
leland_state *state = space->machine().driver_data<leland_state>();
111
110
/* catch the case where they clear this memory location at PC $1827 and change */
112
111
/* the value written to be a 1 */
113
if (cpu_get_previouspc(&space->device()) == 0x1827)
114
*state->m_alleymas_kludge_mem = 1;
112
if (cpu_get_previouspc(&space.device()) == 0x1827)
113
*m_alleymas_kludge_mem = 1;
116
*state->m_alleymas_kludge_mem = data;
115
*m_alleymas_kludge_mem = data;
118
117
/* while we're here, make sure the first 3 characters in battery RAM are a */
119
118
/* valid name; otherwise, it will crash if you start a game and don't enter */
121
if (state->m_battery_ram[0] == 0)
120
if (m_battery_ram[0] == 0)
123
state->m_battery_ram[0] = 'C';
124
state->m_battery_ram[1] = 'I';
125
state->m_battery_ram[2] = 'N';
122
m_battery_ram[0] = 'C';
123
m_battery_ram[1] = 'I';
124
m_battery_ram[2] = 'N';
162
READ8_HANDLER( dangerz_input_y_r )
164
leland_state *state = space->machine().driver_data<leland_state>();
165
update_dangerz_xy(space->machine());
166
return state->m_dangerz_y & 0xff;
170
READ8_HANDLER( dangerz_input_x_r )
172
leland_state *state = space->machine().driver_data<leland_state>();
173
update_dangerz_xy(space->machine());
174
return state->m_dangerz_x & 0xff;
178
READ8_HANDLER( dangerz_input_upper_r )
180
leland_state *state = space->machine().driver_data<leland_state>();
181
update_dangerz_xy(space->machine());
182
return ((state->m_dangerz_y >> 2) & 0xc0) | ((state->m_dangerz_x >> 8) & 0x03);
161
READ8_MEMBER(leland_state::dangerz_input_y_r)
163
update_dangerz_xy(machine());
164
return m_dangerz_y & 0xff;
168
READ8_MEMBER(leland_state::dangerz_input_x_r)
170
update_dangerz_xy(machine());
171
return m_dangerz_x & 0xff;
175
READ8_MEMBER(leland_state::dangerz_input_upper_r)
177
update_dangerz_xy(machine());
178
return ((m_dangerz_y >> 2) & 0xc0) | ((m_dangerz_x >> 8) & 0x03);
193
189
static const UINT8 redline_pedal_value[8] = { 0xf0, 0xe0, 0xc0, 0xd0, 0x90, 0xb0, 0x30, 0x70 };
195
READ8_HANDLER( redline_pedal_1_r )
197
int pedal = input_port_read(space->machine(), "IN0");
198
return redline_pedal_value[pedal >> 5] | 0x0f;
202
READ8_HANDLER( redline_pedal_2_r )
204
int pedal = input_port_read(space->machine(), "IN2");
205
return redline_pedal_value[pedal >> 5] | 0x0f;
209
READ8_HANDLER( redline_wheel_1_r )
211
return dial_compute_value(space->machine(), input_port_read(space->machine(), "AN0"), 0);
215
READ8_HANDLER( redline_wheel_2_r )
217
return dial_compute_value(space->machine(), input_port_read(space->machine(), "AN1"), 1);
191
READ8_MEMBER(leland_state::redline_pedal_1_r)
193
int pedal = ioport("IN0")->read();
194
return redline_pedal_value[pedal >> 5] | 0x0f;
198
READ8_MEMBER(leland_state::redline_pedal_2_r)
200
int pedal = ioport("IN2")->read();
201
return redline_pedal_value[pedal >> 5] | 0x0f;
205
READ8_MEMBER(leland_state::redline_wheel_1_r)
207
return dial_compute_value(machine(), ioport("AN0")->read(), 0);
211
READ8_MEMBER(leland_state::redline_wheel_2_r)
213
return dial_compute_value(machine(), ioport("AN1")->read(), 1);
226
222
*************************************/
228
READ8_HANDLER( offroad_wheel_1_r )
230
return dial_compute_value(space->machine(), input_port_read(space->machine(), "AN3"), 0);
234
READ8_HANDLER( offroad_wheel_2_r )
236
return dial_compute_value(space->machine(), input_port_read(space->machine(), "AN4"), 1);
240
READ8_HANDLER( offroad_wheel_3_r )
242
return dial_compute_value(space->machine(), input_port_read(space->machine(), "AN5"), 2);
224
READ8_MEMBER(leland_state::offroad_wheel_1_r)
226
return dial_compute_value(machine(), ioport("AN3")->read(), 0);
230
READ8_MEMBER(leland_state::offroad_wheel_2_r)
232
return dial_compute_value(machine(), ioport("AN4")->read(), 1);
236
READ8_MEMBER(leland_state::offroad_wheel_3_r)
238
return dial_compute_value(machine(), ioport("AN5")->read(), 2);
360
354
state->m_alternate_bank = 0;
362
356
/* initialize the master banks */
363
state->m_master_length = machine.region("master")->bytes();
364
state->m_master_base = machine.region("master")->base();
357
state->m_master_length = state->memregion("master")->bytes();
358
state->m_master_base = state->memregion("master")->base();
365
359
(*state->m_update_master_bank)(machine);
367
361
/* initialize the slave banks */
368
state->m_slave_length = machine.region("slave")->bytes();
369
state->m_slave_base = machine.region("slave")->base();
362
state->m_slave_length = state->memregion("slave")->bytes();
363
state->m_slave_base = state->memregion("slave")->base();
370
364
if (state->m_slave_length > 0x10000)
371
memory_set_bankptr(machine, "bank3", &state->m_slave_base[0x10000]);
365
state->membank("bank3")->set_base(&state->m_slave_base[0x10000]);
406
400
state->m_master_bank = 0;
408
402
/* initialize the master banks */
409
state->m_master_length = machine.region("master")->bytes();
410
state->m_master_base = machine.region("master")->base();
403
state->m_master_length = state->memregion("master")->bytes();
404
state->m_master_base = state->memregion("master")->base();
411
405
ataxx_bankswitch(machine);
413
407
/* initialize the slave banks */
414
state->m_slave_length = machine.region("slave")->bytes();
415
state->m_slave_base = machine.region("slave")->base();
408
state->m_slave_length = state->memregion("slave")->bytes();
409
state->m_slave_base = state->memregion("slave")->base();
416
410
if (state->m_slave_length > 0x10000)
417
memory_set_bankptr(machine, "bank3", &state->m_slave_base[0x10000]);
411
state->membank("bank3")->set_base(&state->m_slave_base[0x10000]);
471
465
*************************************/
473
WRITE8_HANDLER( leland_master_alt_bankswitch_w )
467
WRITE8_MEMBER(leland_state::leland_master_alt_bankswitch_w)
475
leland_state *state = space->machine().driver_data<leland_state>();
476
469
/* update any bankswitching */
477
470
if (LOG_BANKSWITCHING_M)
478
if ((state->m_alternate_bank ^ data) & 0x0f)
479
logerror("%04X:alternate_bank = %02X\n", cpu_get_pc(&space->device()), data & 0x0f);
480
state->m_alternate_bank = data & 15;
481
(*state->m_update_master_bank)(space->machine());
471
if ((m_alternate_bank ^ data) & 0x0f)
472
logerror("%04X:alternate_bank = %02X\n", cpu_get_pc(&space.device()), data & 0x0f);
473
m_alternate_bank = data & 15;
474
(*m_update_master_bank)(machine());
483
476
/* sound control is in the rest */
484
leland_80186_control_w(space->machine().device("custom"), offset, data);
477
leland_80186_control_w(machine().device("custom"), offset, data);
856
849
*************************************/
858
WRITE8_HANDLER( leland_battery_ram_w )
851
WRITE8_MEMBER(leland_state::leland_battery_ram_w)
860
leland_state *state = space->machine().driver_data<leland_state>();
861
if (state->m_battery_ram_enable)
853
if (m_battery_ram_enable)
863
if (LOG_BATTERY_RAM) logerror("%04X:BatteryW@%04X=%02X\n", cpu_get_pc(&space->device()), offset, data);
864
state->m_battery_ram[offset] = data;
855
if (LOG_BATTERY_RAM) logerror("%04X:BatteryW@%04X=%02X\n", cpu_get_pc(&space.device()), offset, data);
856
m_battery_ram[offset] = data;
867
logerror("%04X:BatteryW@%04X (invalid!)\n", cpu_get_pc(&space->device()), offset);
859
logerror("%04X:BatteryW@%04X (invalid!)\n", cpu_get_pc(&space.device()), offset);
871
WRITE8_HANDLER( ataxx_battery_ram_w )
863
WRITE8_MEMBER(leland_state::ataxx_battery_ram_w)
873
leland_state *state = space->machine().driver_data<leland_state>();
874
if (state->m_battery_ram_enable)
865
if (m_battery_ram_enable)
876
if (LOG_BATTERY_RAM) logerror("%04X:BatteryW@%04X=%02X\n", cpu_get_pc(&space->device()), offset, data);
877
state->m_battery_ram[offset] = data;
867
if (LOG_BATTERY_RAM) logerror("%04X:BatteryW@%04X=%02X\n", cpu_get_pc(&space.device()), offset, data);
868
m_battery_ram[offset] = data;
879
else if ((state->m_master_bank & 0x30) == 0x20)
880
state->m_ataxx_qram[((state->m_master_bank & 0xc0) << 8) + offset] = data;
870
else if ((m_master_bank & 0x30) == 0x20)
871
m_ataxx_qram[((m_master_bank & 0xc0) << 8) + offset] = data;
882
logerror("%04X:BatteryW@%04X (invalid!)\n", cpu_get_pc(&space->device()), offset);
873
logerror("%04X:BatteryW@%04X (invalid!)\n", cpu_get_pc(&space.device()), offset);
1073
1062
case 0x01: /* FE = analog port select/bankswitch */
1074
state->m_analog_result = input_port_read(space->machine(), portnames[data & 15]);
1063
m_analog_result = ioport(portnames[data & 15])->read();
1076
1065
/* update top board banking for some games */
1077
1066
if (LOG_BANKSWITCHING_M)
1078
if ((state->m_top_board_bank ^ data) & 0xc0)
1079
logerror("%04X:top_board_bank = %02X\n", cpu_get_pc(&space->device()), data & 0xc0);
1080
state->m_top_board_bank = data & 0xc0;
1081
(*state->m_update_master_bank)(space->machine());
1067
if ((m_top_board_bank ^ data) & 0xc0)
1068
logerror("%04X:top_board_bank = %02X\n", cpu_get_pc(&space.device()), data & 0xc0);
1069
m_top_board_bank = data & 0xc0;
1070
(*m_update_master_bank)(machine());
1084
1073
case 0x02: /* FF = keycard data write */
1085
keycard_w(space->machine(), data);
1074
keycard_w(machine(), data);
1096
1085
*************************************/
1098
READ8_HANDLER( leland_master_input_r )
1087
READ8_MEMBER(leland_state::leland_master_input_r)
1100
1089
int result = 0xff;
1102
1091
switch (offset)
1104
1093
case 0x00: /* /GIN0 */
1105
result = input_port_read(space->machine(), "IN0");
1094
result = ioport("IN0")->read();
1108
1097
case 0x01: /* /GIN1 */
1109
result = input_port_read(space->machine(), "IN1");
1110
if (cpu_get_reg(space->machine().device("slave"), Z80_HALT))
1098
result = ioport("IN1")->read();
1099
if (cpu_get_reg(machine().device("slave"), Z80_HALT))
1111
1100
result ^= 0x01;
1114
1103
case 0x02: /* /GIN2 */
1116
cputag_set_input_line(space->machine(), "master", INPUT_LINE_NMI, CLEAR_LINE);
1105
cputag_set_input_line(machine(), "master", INPUT_LINE_NMI, CLEAR_LINE);
1119
1108
case 0x03: /* /IGID */
1121
result = ay8910_r(space->machine().device("ay8910.1"), offset);
1110
result = ay8910_r(machine().device("ay8910.1"), offset);
1124
1113
case 0x10: /* /GIN0 */
1125
result = input_port_read(space->machine(), "IN2");
1114
result = ioport("IN2")->read();
1128
1117
case 0x11: /* /GIN1 */
1129
result = input_port_read(space->machine(), "IN3");
1130
if (LOG_EEPROM) logerror("%04X:EE read\n", cpu_get_pc(&space->device()));
1118
result = ioport("IN3")->read();
1119
if (LOG_EEPROM) logerror("%04X:EE read\n", cpu_get_pc(&space.device()));
1141
WRITE8_HANDLER( leland_master_output_w )
1130
WRITE8_MEMBER(leland_state::leland_master_output_w)
1143
leland_state *state = space->machine().driver_data<leland_state>();
1144
1132
eeprom_device *eeprom;
1146
1134
switch (offset)
1148
1136
case 0x09: /* /MCONT */
1149
cputag_set_input_line(space->machine(), "slave", INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
1150
state->m_wcol_enable = (data & 0x02);
1151
cputag_set_input_line(space->machine(), "slave", INPUT_LINE_NMI, (data & 0x04) ? CLEAR_LINE : ASSERT_LINE);
1152
cputag_set_input_line(space->machine(), "slave", 0, (data & 0x08) ? CLEAR_LINE : ASSERT_LINE);
1137
cputag_set_input_line(machine(), "slave", INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
1138
m_wcol_enable = (data & 0x02);
1139
cputag_set_input_line(machine(), "slave", INPUT_LINE_NMI, (data & 0x04) ? CLEAR_LINE : ASSERT_LINE);
1140
cputag_set_input_line(machine(), "slave", 0, (data & 0x08) ? CLEAR_LINE : ASSERT_LINE);
1154
eeprom = space->machine().device<eeprom_device>("eeprom");
1155
if (LOG_EEPROM) logerror("%04X:EE write %d%d%d\n", cpu_get_pc(&space->device()),
1142
eeprom = machine().device<eeprom_device>("eeprom");
1143
if (LOG_EEPROM) logerror("%04X:EE write %d%d%d\n", cpu_get_pc(&space.device()),
1156
1144
(data >> 6) & 1, (data >> 5) & 1, (data >> 4) & 1);
1157
1145
eeprom->write_bit ((data & 0x10) >> 4);
1158
1146
eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
1217
1204
case 0x04: /* /MBNK */
1218
1205
if (LOG_BANKSWITCHING_M)
1219
if ((state->m_master_bank ^ data) & 0xff)
1220
logerror("%04X:master_bank = %02X\n", cpu_get_pc(&space->device()), data & 0xff);
1221
state->m_master_bank = data;
1222
ataxx_bankswitch(space->machine());
1206
if ((m_master_bank ^ data) & 0xff)
1207
logerror("%04X:master_bank = %02X\n", cpu_get_pc(&space.device()), data & 0xff);
1208
m_master_bank = data;
1209
ataxx_bankswitch(machine());
1225
1212
case 0x05: /* /SLV0 */
1226
cputag_set_input_line(space->machine(), "slave", 0, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
1227
cputag_set_input_line(space->machine(), "slave", INPUT_LINE_NMI, (data & 0x04) ? CLEAR_LINE : ASSERT_LINE);
1228
cputag_set_input_line(space->machine(), "slave", INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
1213
cputag_set_input_line(machine(), "slave", 0, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
1214
cputag_set_input_line(machine(), "slave", INPUT_LINE_NMI, (data & 0x04) ? CLEAR_LINE : ASSERT_LINE);
1215
cputag_set_input_line(machine(), "slave", INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
1231
1218
case 0x08: /* */
1232
state->m_master_int_timer->adjust(space->machine().primary_screen->time_until_pos(data + 1), data + 1);
1219
m_master_int_timer->adjust(machine().primary_screen->time_until_pos(data + 1), data + 1);
1247
1234
*************************************/
1249
WRITE8_HANDLER( leland_gated_paletteram_w )
1236
WRITE8_MEMBER(leland_state::leland_gated_paletteram_w)
1251
leland_state *state = space->machine().driver_data<leland_state>();
1252
if (state->m_wcol_enable)
1253
paletteram_BBGGGRRR_w(space, offset, data);
1239
paletteram_BBGGGRRR_byte_w(space, offset, data);
1257
READ8_HANDLER( leland_gated_paletteram_r )
1243
READ8_MEMBER(leland_state::leland_gated_paletteram_r)
1259
leland_state *state = space->machine().driver_data<leland_state>();
1260
if (state->m_wcol_enable)
1261
return space->machine().generic.paletteram.u8[offset];
1246
return m_generic_paletteram_8[offset];
1266
WRITE8_HANDLER( ataxx_paletteram_and_misc_w )
1251
WRITE8_MEMBER(leland_state::ataxx_paletteram_and_misc_w)
1268
leland_state *state = space->machine().driver_data<leland_state>();
1269
if (state->m_wcol_enable)
1270
paletteram_xxxxRRRRGGGGBBBB_le_w(space, offset, data);
1254
paletteram_xxxxRRRRGGGGBBBB_byte_le_w(space, offset, data);
1271
1255
else if (offset == 0x7f8 || offset == 0x7f9)
1272
1256
leland_master_video_addr_w(space, offset - 0x7f8, data);
1273
1257
else if (offset == 0x7fc)
1275
state->m_xrom1_addr = (state->m_xrom1_addr & 0xff00) | (data & 0x00ff);
1276
if (LOG_XROM) logerror("%04X:XROM1 address low write = %02X (addr=%04X)\n", cpu_get_pc(&space->device()), data, state->m_xrom1_addr);
1259
m_xrom1_addr = (m_xrom1_addr & 0xff00) | (data & 0x00ff);
1260
if (LOG_XROM) logerror("%04X:XROM1 address low write = %02X (addr=%04X)\n", cpu_get_pc(&space.device()), data, m_xrom1_addr);
1278
1262
else if (offset == 0x7fd)
1280
state->m_xrom1_addr = (state->m_xrom1_addr & 0x00ff) | ((data << 8) & 0xff00);
1281
if (LOG_XROM) logerror("%04X:XROM1 address high write = %02X (addr=%04X)\n", cpu_get_pc(&space->device()), data, state->m_xrom1_addr);
1264
m_xrom1_addr = (m_xrom1_addr & 0x00ff) | ((data << 8) & 0xff00);
1265
if (LOG_XROM) logerror("%04X:XROM1 address high write = %02X (addr=%04X)\n", cpu_get_pc(&space.device()), data, m_xrom1_addr);
1283
1267
else if (offset == 0x7fe)
1285
state->m_xrom2_addr = (state->m_xrom2_addr & 0xff00) | (data & 0x00ff);
1286
if (LOG_XROM) logerror("%04X:XROM2 address low write = %02X (addr=%04X)\n", cpu_get_pc(&space->device()), data, state->m_xrom2_addr);
1269
m_xrom2_addr = (m_xrom2_addr & 0xff00) | (data & 0x00ff);
1270
if (LOG_XROM) logerror("%04X:XROM2 address low write = %02X (addr=%04X)\n", cpu_get_pc(&space.device()), data, m_xrom2_addr);
1288
1272
else if (offset == 0x7ff)
1290
state->m_xrom2_addr = (state->m_xrom2_addr & 0x00ff) | ((data << 8) & 0xff00);
1291
if (LOG_XROM) logerror("%04X:XROM2 address high write = %02X (addr=%04X)\n", cpu_get_pc(&space->device()), data, state->m_xrom2_addr);
1274
m_xrom2_addr = (m_xrom2_addr & 0x00ff) | ((data << 8) & 0xff00);
1275
if (LOG_XROM) logerror("%04X:XROM2 address high write = %02X (addr=%04X)\n", cpu_get_pc(&space.device()), data, m_xrom2_addr);
1294
state->m_extra_tram[offset] = data;
1278
m_extra_tram[offset] = data;
1298
READ8_HANDLER( ataxx_paletteram_and_misc_r )
1282
READ8_MEMBER(leland_state::ataxx_paletteram_and_misc_r)
1300
leland_state *state = space->machine().driver_data<leland_state>();
1301
if (state->m_wcol_enable)
1302
return space->machine().generic.paletteram.u8[offset];
1285
return m_generic_paletteram_8[offset];
1303
1286
else if (offset == 0x7fc || offset == 0x7fd)
1305
int result = state->m_xrom_base[0x00000 | state->m_xrom1_addr | ((offset & 1) << 16)];
1306
if (LOG_XROM) logerror("%04X:XROM1 read(%d) = %02X (addr=%04X)\n", cpu_get_pc(&space->device()), offset - 0x7fc, result, state->m_xrom1_addr);
1288
int result = m_xrom_base[0x00000 | m_xrom1_addr | ((offset & 1) << 16)];
1289
if (LOG_XROM) logerror("%04X:XROM1 read(%d) = %02X (addr=%04X)\n", cpu_get_pc(&space.device()), offset - 0x7fc, result, m_xrom1_addr);
1309
1292
else if (offset == 0x7fe || offset == 0x7ff)
1311
int result = state->m_xrom_base[0x20000 | state->m_xrom2_addr | ((offset & 1) << 16)];
1312
if (LOG_XROM) logerror("%04X:XROM2 read(%d) = %02X (addr=%04X)\n", cpu_get_pc(&space->device()), offset - 0x7fc, result, state->m_xrom2_addr);
1294
int result = m_xrom_base[0x20000 | m_xrom2_addr | ((offset & 1) << 16)];
1295
if (LOG_XROM) logerror("%04X:XROM2 read(%d) = %02X (addr=%04X)\n", cpu_get_pc(&space.device()), offset - 0x7fc, result, m_xrom2_addr);
1316
return state->m_extra_tram[offset];
1299
return m_extra_tram[offset];
1358
1341
*************************************/
1360
WRITE8_HANDLER( leland_slave_small_banksw_w )
1343
WRITE8_MEMBER(leland_state::leland_slave_small_banksw_w)
1362
leland_state *state = space->machine().driver_data<leland_state>();
1363
1345
int bankaddress = 0x10000 + 0xc000 * (data & 1);
1365
if (bankaddress >= state->m_slave_length)
1347
if (bankaddress >= m_slave_length)
1367
logerror("%04X:Slave bank %02X out of range!", cpu_get_pc(&space->device()), data & 1);
1349
logerror("%04X:Slave bank %02X out of range!", cpu_get_pc(&space.device()), data & 1);
1368
1350
bankaddress = 0x10000;
1370
memory_set_bankptr(space->machine(), "bank3", &state->m_slave_base[bankaddress]);
1352
membank("bank3")->set_base(&m_slave_base[bankaddress]);
1372
if (LOG_BANKSWITCHING_S) logerror("%04X:Slave bank = %02X (%05X)\n", cpu_get_pc(&space->device()), data & 1, bankaddress);
1354
if (LOG_BANKSWITCHING_S) logerror("%04X:Slave bank = %02X (%05X)\n", cpu_get_pc(&space.device()), data & 1, bankaddress);
1376
WRITE8_HANDLER( leland_slave_large_banksw_w )
1358
WRITE8_MEMBER(leland_state::leland_slave_large_banksw_w)
1378
leland_state *state = space->machine().driver_data<leland_state>();
1379
1360
int bankaddress = 0x10000 + 0x8000 * (data & 15);
1381
if (bankaddress >= state->m_slave_length)
1362
if (bankaddress >= m_slave_length)
1383
logerror("%04X:Slave bank %02X out of range!", cpu_get_pc(&space->device()), data & 15);
1364
logerror("%04X:Slave bank %02X out of range!", cpu_get_pc(&space.device()), data & 15);
1384
1365
bankaddress = 0x10000;
1386
memory_set_bankptr(space->machine(), "bank3", &state->m_slave_base[bankaddress]);
1367
membank("bank3")->set_base(&m_slave_base[bankaddress]);
1388
if (LOG_BANKSWITCHING_S) logerror("%04X:Slave bank = %02X (%05X)\n", cpu_get_pc(&space->device()), data & 15, bankaddress);
1369
if (LOG_BANKSWITCHING_S) logerror("%04X:Slave bank = %02X (%05X)\n", cpu_get_pc(&space.device()), data & 15, bankaddress);
1392
WRITE8_HANDLER( ataxx_slave_banksw_w )
1373
WRITE8_MEMBER(leland_state::ataxx_slave_banksw_w)
1394
leland_state *state = space->machine().driver_data<leland_state>();
1395
1375
int bankaddress, bank = data & 15;
1401
1381
bankaddress = 0x10000 * bank + 0x8000 * ((data >> 4) & 1);
1402
if (state->m_slave_length > 0x100000)
1382
if (m_slave_length > 0x100000)
1403
1383
bankaddress += 0x100000 * ((data >> 5) & 1);
1406
if (bankaddress >= state->m_slave_length)
1386
if (bankaddress >= m_slave_length)
1408
logerror("%04X:Slave bank %02X out of range!", cpu_get_pc(&space->device()), data & 0x3f);
1388
logerror("%04X:Slave bank %02X out of range!", cpu_get_pc(&space.device()), data & 0x3f);
1409
1389
bankaddress = 0x2000;
1411
memory_set_bankptr(space->machine(), "bank3", &state->m_slave_base[bankaddress]);
1391
membank("bank3")->set_base(&m_slave_base[bankaddress]);
1413
if (LOG_BANKSWITCHING_S) logerror("%04X:Slave bank = %02X (%05X)\n", cpu_get_pc(&space->device()), data, bankaddress);
1393
if (LOG_BANKSWITCHING_S) logerror("%04X:Slave bank = %02X (%05X)\n", cpu_get_pc(&space.device()), data, bankaddress);