128
128
log_debug("Read IO1 %02x.", addr);
130
130
switch (mem_cartridge_type) {
131
case CARTRIDGE_STARDOS:
132
return stardos_io1_read(addr);
133
case CARTRIDGE_ACTION_REPLAY3:
134
return actionreplay3_io1_read(addr);
135
case CARTRIDGE_ACTION_REPLAY:
136
return actionreplay_io1_read(addr);
137
case CARTRIDGE_ATOMIC_POWER:
138
return atomicpower_io1_read(addr);
139
case CARTRIDGE_RETRO_REPLAY:
140
return retroreplay_io1_read(addr);
141
case CARTRIDGE_IDE64:
142
return ide64_io1_read(addr);
143
case CARTRIDGE_KCS_POWER:
144
return kcs_io1_read(addr);
145
case CARTRIDGE_FINAL_III:
146
return final_v3_io1_read(addr);
147
case CARTRIDGE_FINAL_I:
148
return final_v1_io1_read(addr);
149
case CARTRIDGE_MIKRO_ASSEMBLER:
150
return mikroass_io1_read(addr);
151
case CARTRIDGE_SIMONS_BASIC:
153
cartridge_config_changed(0, 0, CMODE_READ);
154
return vicii_read_phi1();
155
case CARTRIDGE_WARPSPEED:
156
io_source=IO_SOURCE_WARPSPEED;
157
return roml_banks[0x1e00 + (addr & 0xff)];
158
case CARTRIDGE_DINAMIC:
159
cartridge_romlbank_set(addr & 0x0f);
161
case CARTRIDGE_SUPER_SNAPSHOT:
162
return supersnapshot_v4_io1_read(addr);
163
case CARTRIDGE_SUPER_SNAPSHOT_V5:
164
return supersnapshot_v5_io1_read(addr);
165
case CARTRIDGE_EXPERT:
166
return expert_io1_read(addr);
167
case CARTRIDGE_MAGIC_FORMEL:
168
return magicformel_io1_read(addr);
170
return ross_io1_read(addr);
171
case CARTRIDGE_STRUCTURED_BASIC:
172
return stb_io1_read(addr);
173
case CARTRIDGE_DELA_EP64:
174
return delaep64_io1_read(addr);
131
case CARTRIDGE_STARDOS:
132
return stardos_io1_read(addr);
133
case CARTRIDGE_ACTION_REPLAY3:
134
return actionreplay3_io1_read(addr);
135
case CARTRIDGE_ACTION_REPLAY:
136
return actionreplay_io1_read(addr);
137
case CARTRIDGE_ATOMIC_POWER:
138
return atomicpower_io1_read(addr);
139
case CARTRIDGE_RETRO_REPLAY:
140
return retroreplay_io1_read(addr);
141
case CARTRIDGE_IDE64:
142
return ide64_io1_read(addr);
143
case CARTRIDGE_KCS_POWER:
144
return kcs_io1_read(addr);
145
case CARTRIDGE_FINAL_III:
146
return final_v3_io1_read(addr);
147
case CARTRIDGE_FINAL_I:
148
return final_v1_io1_read(addr);
149
case CARTRIDGE_MIKRO_ASSEMBLER:
150
return mikroass_io1_read(addr);
151
case CARTRIDGE_SIMONS_BASIC:
153
cartridge_config_changed(0, 0, CMODE_READ);
154
return vicii_read_phi1();
155
case CARTRIDGE_WARPSPEED:
156
io_source = IO_SOURCE_WARPSPEED;
157
return roml_banks[0x1e00 + (addr & 0xff)];
158
case CARTRIDGE_DINAMIC:
159
cartridge_romlbank_set(addr & 0x0f);
161
case CARTRIDGE_SUPER_SNAPSHOT:
162
return supersnapshot_v4_io1_read(addr);
163
case CARTRIDGE_SUPER_SNAPSHOT_V5:
164
return supersnapshot_v5_io1_read(addr);
165
case CARTRIDGE_EXPERT:
166
return expert_io1_read(addr);
167
case CARTRIDGE_MAGIC_FORMEL:
168
return magicformel_io1_read(addr);
170
return ross_io1_read(addr);
171
case CARTRIDGE_STRUCTURED_BASIC:
172
return stb_io1_read(addr);
173
case CARTRIDGE_DELA_EP64:
174
return delaep64_io1_read(addr);
176
176
return vicii_read_phi1();
185
185
switch (mem_cartridge_type) {
186
case CARTRIDGE_ACTION_REPLAY4:
187
actionreplay4_io1_store(addr, value);
189
case CARTRIDGE_ACTION_REPLAY3:
190
actionreplay3_io1_store(addr, value);
192
case CARTRIDGE_ACTION_REPLAY:
193
actionreplay_io1_store(addr, value);
195
case CARTRIDGE_RETRO_REPLAY:
196
retroreplay_io1_store(addr, value);
198
case CARTRIDGE_IDE64:
199
ide64_io1_store(addr, value);
201
case CARTRIDGE_ATOMIC_POWER:
202
atomicpower_io1_store(addr, value);
204
case CARTRIDGE_KCS_POWER:
205
kcs_io1_store(addr, value);
207
case CARTRIDGE_FINAL_I:
208
final_v1_io1_store(addr, value);
210
case CARTRIDGE_FINAL_III:
211
final_v3_io1_store(addr, value);
213
case CARTRIDGE_COMAL80:
214
comal80_io1_store(addr, value);
216
case CARTRIDGE_SIMONS_BASIC:
217
cartridge_config_changed(1, 1, CMODE_WRITE);
219
case CARTRIDGE_WARPSPEED:
220
cartridge_config_changed(1, 1, CMODE_WRITE);
222
case CARTRIDGE_SUPER_SNAPSHOT:
223
supersnapshot_v4_io1_store(addr, value);
225
case CARTRIDGE_SUPER_SNAPSHOT_V5:
226
supersnapshot_v5_io1_store(addr, value);
228
case CARTRIDGE_OCEAN:
229
case CARTRIDGE_FUNPLAY:
230
switch (mem_cartridge_type) {
231
case CARTRIDGE_OCEAN:
232
cartridge_romhbank_set(value & 0x3f);
186
case CARTRIDGE_ACTION_REPLAY4:
187
actionreplay4_io1_store(addr, value);
189
case CARTRIDGE_ACTION_REPLAY3:
190
actionreplay3_io1_store(addr, value);
192
case CARTRIDGE_ACTION_REPLAY:
193
actionreplay_io1_store(addr, value);
195
case CARTRIDGE_RETRO_REPLAY:
196
retroreplay_io1_store(addr, value);
198
case CARTRIDGE_IDE64:
199
ide64_io1_store(addr, value);
201
case CARTRIDGE_ATOMIC_POWER:
202
atomicpower_io1_store(addr, value);
204
case CARTRIDGE_KCS_POWER:
205
kcs_io1_store(addr, value);
207
case CARTRIDGE_FINAL_I:
208
final_v1_io1_store(addr, value);
210
case CARTRIDGE_FINAL_III:
211
final_v3_io1_store(addr, value);
213
case CARTRIDGE_COMAL80:
214
comal80_io1_store(addr, value);
216
case CARTRIDGE_SIMONS_BASIC:
217
cartridge_config_changed(1, 1, CMODE_WRITE);
219
case CARTRIDGE_WARPSPEED:
220
cartridge_config_changed(1, 1, CMODE_WRITE);
222
case CARTRIDGE_SUPER_SNAPSHOT:
223
supersnapshot_v4_io1_store(addr, value);
225
case CARTRIDGE_SUPER_SNAPSHOT_V5:
226
supersnapshot_v5_io1_store(addr, value);
228
case CARTRIDGE_OCEAN:
229
case CARTRIDGE_FUNPLAY:
230
switch (mem_cartridge_type) {
231
case CARTRIDGE_OCEAN:
232
cartridge_romhbank_set(value & 0x3f);
233
cartridge_romlbank_set(value & 0x3f);
235
case CARTRIDGE_FUNPLAY:
236
cartridge_romhbank_set(((value >> 2) | (value & 1)) & 15);
237
cartridge_romlbank_set(((value >> 2) | (value & 1)) & 15);
240
export.game = export.exrom = 1;
241
mem_pla_config_changed();
242
cart_ultimax_phi1 = 0;
243
cart_ultimax_phi2 = 0;
246
cartridge_romlbank_set(addr & 0x3f);
250
case CARTRIDGE_EXPERT:
251
expert_io1_store(addr, value);
253
case CARTRIDGE_MAGIC_DESK:
233
254
cartridge_romlbank_set(value & 0x3f);
235
case CARTRIDGE_FUNPLAY:
236
cartridge_romhbank_set(((value >> 2) | (value & 1)) & 15);
237
cartridge_romlbank_set(((value >> 2) | (value & 1)) & 15);
240
export.game = export.exrom = 1;
241
mem_pla_config_changed();
242
cart_ultimax_phi1 = 0;
243
cart_ultimax_phi2 = 0;
246
cartridge_romlbank_set(addr & 0x3f);
250
case CARTRIDGE_EXPERT:
251
expert_io1_store(addr, value);
253
case CARTRIDGE_MAGIC_DESK:
254
cartridge_romlbank_set(value & 0x3f);
259
export.exrom = 1; /* turn off cart ROM */
260
mem_pla_config_changed();
262
case CARTRIDGE_MAGIC_FORMEL:
263
magicformel_io1_store(addr, value);
265
case CARTRIDGE_STRUCTURED_BASIC:
266
stb_io1_store(addr, value);
268
case CARTRIDGE_DELA_EP64:
269
delaep64_io1_store(addr, value);
271
case CARTRIDGE_DELA_EP7x8:
272
delaep7x8_io1_store(addr, value);
274
case CARTRIDGE_DELA_EP256:
275
delaep256_io1_store(addr, value);
259
export.exrom = 1; /* turn off cart ROM */
261
mem_pla_config_changed();
263
case CARTRIDGE_MAGIC_FORMEL:
264
magicformel_io1_store(addr, value);
266
case CARTRIDGE_STRUCTURED_BASIC:
267
stb_io1_store(addr, value);
269
case CARTRIDGE_DELA_EP64:
270
delaep64_io1_store(addr, value);
272
case CARTRIDGE_DELA_EP7x8:
273
delaep7x8_io1_store(addr, value);
275
case CARTRIDGE_DELA_EP256:
276
delaep256_io1_store(addr, value);
278
case CARTRIDGE_EASYFLASH:
279
easyflash_io1_store(addr, value);
284
288
log_debug("Read IO2 %02x.", addr);
286
290
switch (mem_cartridge_type) {
287
case CARTRIDGE_STARDOS:
288
return stardos_io2_read(addr);
289
case CARTRIDGE_ACTION_REPLAY4:
290
return actionreplay4_io2_read(addr);
291
case CARTRIDGE_ACTION_REPLAY3:
292
return actionreplay3_io2_read(addr);
293
case CARTRIDGE_ACTION_REPLAY:
294
return actionreplay_io2_read(addr);
295
case CARTRIDGE_ATOMIC_POWER:
296
return atomicpower_io2_read(addr);
297
case CARTRIDGE_RETRO_REPLAY:
298
return retroreplay_io2_read(addr);
299
case CARTRIDGE_SUPER_SNAPSHOT:
300
return supersnapshot_v4_io2_read(addr);
301
case CARTRIDGE_FINAL_III:
302
return final_v3_io2_read(addr);
303
case CARTRIDGE_FINAL_I:
304
return final_v1_io2_read(addr);
305
case CARTRIDGE_KCS_POWER:
306
return kcs_io2_read(addr);
307
case CARTRIDGE_IEEE488:
308
return tpi_read((WORD)(addr & 0x07));
309
case CARTRIDGE_EPYX_FASTLOAD:
310
return epyxfastload_io2_read(addr);
311
case CARTRIDGE_MIKRO_ASSEMBLER:
312
return mikroass_io2_read(addr);
313
case CARTRIDGE_WESTERMANN:
314
cartridge_config_changed(0, 0, CMODE_READ);
315
return vicii_read_phi1();
317
if ((addr & 0xff) < 0xc0)
318
cartridge_config_changed(2, 2, CMODE_READ);
291
case CARTRIDGE_STARDOS:
292
return stardos_io2_read(addr);
293
case CARTRIDGE_ACTION_REPLAY4:
294
return actionreplay4_io2_read(addr);
295
case CARTRIDGE_ACTION_REPLAY3:
296
return actionreplay3_io2_read(addr);
297
case CARTRIDGE_ACTION_REPLAY:
298
return actionreplay_io2_read(addr);
299
case CARTRIDGE_ATOMIC_POWER:
300
return atomicpower_io2_read(addr);
301
case CARTRIDGE_RETRO_REPLAY:
302
return retroreplay_io2_read(addr);
303
case CARTRIDGE_SUPER_SNAPSHOT:
304
return supersnapshot_v4_io2_read(addr);
305
case CARTRIDGE_FINAL_III:
306
return final_v3_io2_read(addr);
307
case CARTRIDGE_FINAL_I:
308
return final_v1_io2_read(addr);
309
case CARTRIDGE_KCS_POWER:
310
return kcs_io2_read(addr);
311
case CARTRIDGE_IEEE488:
312
return tpi_read((WORD)(addr & 0x07));
313
case CARTRIDGE_EPYX_FASTLOAD:
314
return epyxfastload_io2_read(addr);
315
case CARTRIDGE_MIKRO_ASSEMBLER:
316
return mikroass_io2_read(addr);
317
case CARTRIDGE_WESTERMANN:
320
318
cartridge_config_changed(0, 0, CMODE_READ);
322
case CARTRIDGE_WARPSPEED:
323
io_source=IO_SOURCE_WARPSPEED;
324
return roml_banks[0x1f00 + (addr & 0xff)];
325
case CARTRIDGE_MAGIC_FORMEL:
326
return magicformel_io2_read(addr);
328
return ross_io2_read(addr);
329
case CARTRIDGE_REX_EP256:
330
return rexep256_io2_read(addr);
319
return vicii_read_phi1();
321
if ((addr & 0xff) < 0xc0) {
322
cartridge_config_changed(2, 2, CMODE_READ);
324
cartridge_config_changed(0, 0, CMODE_READ);
327
case CARTRIDGE_WARPSPEED:
328
io_source = IO_SOURCE_WARPSPEED;
329
return roml_banks[0x1f00 + (addr & 0xff)];
330
case CARTRIDGE_MAGIC_FORMEL:
331
return magicformel_io2_read(addr);
333
return ross_io2_read(addr);
334
case CARTRIDGE_REX_EP256:
335
return rexep256_io2_read(addr);
336
case CARTRIDGE_EASYFLASH:
337
return easyflash_io2_read(addr);
332
339
return vicii_read_phi1();
338
345
log_debug("Store IO2 %02x <- %02x.", addr, value);
340
347
switch (mem_cartridge_type) {
341
case CARTRIDGE_ACTION_REPLAY:
342
actionreplay_io2_store(addr, value);
344
case CARTRIDGE_ATOMIC_POWER:
345
atomicpower_io2_store(addr, value);
347
case CARTRIDGE_RETRO_REPLAY:
348
retroreplay_io2_store(addr, value);
350
case CARTRIDGE_FINAL_I:
351
final_v1_io2_store(addr, value);
353
case CARTRIDGE_KCS_POWER:
354
kcs_io2_store(addr, value);
356
case CARTRIDGE_WARPSPEED:
357
cartridge_config_changed(2, 2, CMODE_WRITE);
359
case CARTRIDGE_SUPER_SNAPSHOT:
360
supersnapshot_v4_io2_store(addr, value);
362
case CARTRIDGE_FINAL_III:
363
final_v3_io2_store(addr, value);
365
case CARTRIDGE_SUPER_GAMES:
366
supergames_io2_store(addr, value);
368
case CARTRIDGE_IEEE488:
369
tpi_store((WORD)(addr & 0x07), value);
371
case CARTRIDGE_MAGIC_FORMEL:
372
magicformel_io2_store(addr, value);
374
case CARTRIDGE_REX_EP256:
375
rexep256_io2_store(addr, value);
348
case CARTRIDGE_ACTION_REPLAY:
349
actionreplay_io2_store(addr, value);
351
case CARTRIDGE_ATOMIC_POWER:
352
atomicpower_io2_store(addr, value);
354
case CARTRIDGE_RETRO_REPLAY:
355
retroreplay_io2_store(addr, value);
357
case CARTRIDGE_FINAL_I:
358
final_v1_io2_store(addr, value);
360
case CARTRIDGE_KCS_POWER:
361
kcs_io2_store(addr, value);
363
case CARTRIDGE_WARPSPEED:
364
cartridge_config_changed(2, 2, CMODE_WRITE);
366
case CARTRIDGE_SUPER_SNAPSHOT:
367
supersnapshot_v4_io2_store(addr, value);
369
case CARTRIDGE_FINAL_III:
370
final_v3_io2_store(addr, value);
372
case CARTRIDGE_SUPER_GAMES:
373
supergames_io2_store(addr, value);
375
case CARTRIDGE_IEEE488:
376
tpi_store((WORD)(addr & 0x07), value);
378
case CARTRIDGE_MAGIC_FORMEL:
379
magicformel_io2_store(addr, value);
381
case CARTRIDGE_REX_EP256:
382
rexep256_io2_store(addr, value);
384
case CARTRIDGE_EASYFLASH:
385
easyflash_io2_store(addr, value);
380
390
BYTE REGPARM1 roml_read(WORD addr)
383
return mmc64_roml_read(addr);
393
return mmc64_roml_read(addr);
396
if (ramcart_enabled) {
386
397
return ramcart_roml_read(addr);
388
400
switch (mem_cartridge_type) {
389
case CARTRIDGE_STARDOS:
390
return stardos_roml_read(addr);
391
case CARTRIDGE_ZAXXON:
392
return zaxxon_roml_read(addr);
393
case CARTRIDGE_SUPER_SNAPSHOT:
394
return supersnapshot_v4_roml_read(addr);
395
case CARTRIDGE_SUPER_SNAPSHOT_V5:
396
return supersnapshot_v5_roml_read(addr);
397
case CARTRIDGE_ACTION_REPLAY4:
398
return actionreplay4_roml_read(addr);
399
case CARTRIDGE_ACTION_REPLAY:
400
return actionreplay_roml_read(addr);
401
case CARTRIDGE_RETRO_REPLAY:
402
return retroreplay_roml_read(addr);
403
case CARTRIDGE_IDE64:
404
return roml_banks[(addr & 0x3fff) | (roml_bank << 14)];
405
case CARTRIDGE_ATOMIC_POWER:
406
return atomicpower_roml_read(addr);
407
case CARTRIDGE_EXPERT:
408
return expert_roml_read(addr);
409
case CARTRIDGE_FINAL_I:
410
return final_v1_roml_read(addr);
411
case CARTRIDGE_FINAL_III:
412
return final_v3_roml_read(addr);
413
case CARTRIDGE_MAGIC_FORMEL:
414
return magicformel_roml_read(addr);
401
case CARTRIDGE_STARDOS:
402
return stardos_roml_read(addr);
403
case CARTRIDGE_ZAXXON:
404
return zaxxon_roml_read(addr);
405
case CARTRIDGE_SUPER_SNAPSHOT:
406
return supersnapshot_v4_roml_read(addr);
407
case CARTRIDGE_SUPER_SNAPSHOT_V5:
408
return supersnapshot_v5_roml_read(addr);
409
case CARTRIDGE_ACTION_REPLAY4:
410
return actionreplay4_roml_read(addr);
411
case CARTRIDGE_ACTION_REPLAY:
412
return actionreplay_roml_read(addr);
413
case CARTRIDGE_RETRO_REPLAY:
414
return retroreplay_roml_read(addr);
415
case CARTRIDGE_IDE64:
416
return roml_banks[(addr & 0x3fff) | (roml_bank << 14)];
417
case CARTRIDGE_ATOMIC_POWER:
418
return atomicpower_roml_read(addr);
419
case CARTRIDGE_EXPERT:
420
return expert_roml_read(addr);
421
case CARTRIDGE_FINAL_I:
422
return final_v1_roml_read(addr);
423
case CARTRIDGE_FINAL_III:
424
return final_v3_roml_read(addr);
425
case CARTRIDGE_MAGIC_FORMEL:
426
return magicformel_roml_read(addr);
427
case CARTRIDGE_EASYFLASH:
428
return easyflash_roml_read(addr);
418
431
return dqbb_roml_read(addr);
422
435
return export_ram0[addr & 0x1fff];
424
438
return roml_banks[(addr & 0x1fff) + (roml_bank << 13)];
427
441
void REGPARM2 roml_store(WORD addr, BYTE value)
443
if (ramcart_enabled) {
431
444
ramcart_roml_store(addr,value);
435
448
switch (mem_cartridge_type) {
436
case CARTRIDGE_SUPER_SNAPSHOT:
437
supersnapshot_v4_roml_store(addr, value);
439
case CARTRIDGE_SUPER_SNAPSHOT_V5:
440
supersnapshot_v5_roml_store(addr, value);
442
case CARTRIDGE_ACTION_REPLAY:
443
actionreplay_roml_store(addr, value);
445
case CARTRIDGE_RETRO_REPLAY:
446
retroreplay_roml_store(addr, value);
448
case CARTRIDGE_ATOMIC_POWER:
449
atomicpower_roml_store(addr, value);
451
case CARTRIDGE_EXPERT:
452
expert_roml_store(addr, value);
454
case CARTRIDGE_FINAL_I:
455
final_v1_roml_store(addr, value);
457
case CARTRIDGE_FINAL_III:
458
final_v3_roml_store(addr, value);
460
case CARTRIDGE_MAGIC_FORMEL:
461
magicformel_roml_store(addr, value);
449
case CARTRIDGE_SUPER_SNAPSHOT:
450
supersnapshot_v4_roml_store(addr, value);
452
case CARTRIDGE_SUPER_SNAPSHOT_V5:
453
supersnapshot_v5_roml_store(addr, value);
455
case CARTRIDGE_ACTION_REPLAY:
456
actionreplay_roml_store(addr, value);
458
case CARTRIDGE_RETRO_REPLAY:
459
retroreplay_roml_store(addr, value);
461
case CARTRIDGE_ATOMIC_POWER:
462
atomicpower_roml_store(addr, value);
464
case CARTRIDGE_EXPERT:
465
expert_roml_store(addr, value);
467
case CARTRIDGE_FINAL_I:
468
final_v1_roml_store(addr, value);
470
case CARTRIDGE_FINAL_III:
471
final_v3_roml_store(addr, value);
473
case CARTRIDGE_MAGIC_FORMEL:
474
magicformel_roml_store(addr, value);
476
case CARTRIDGE_EASYFLASH:
477
easyflash_roml_store(addr, value);
466
482
export_ram0[addr & 0x1fff] = value;
469
486
BYTE REGPARM1 romh_read(WORD addr)
471
488
switch (mem_cartridge_type) {
472
case CARTRIDGE_ATOMIC_POWER:
473
return atomicpower_romh_read(addr);
474
case CARTRIDGE_EXPERT:
475
return expert_romh_read(addr);
476
case CARTRIDGE_OCEAN:
477
/* 256 kB OCEAN carts may access memory either at $8000 or $a000 */
478
return roml_banks[(addr & 0x1fff) + (romh_bank << 13)];
479
case CARTRIDGE_IDE64:
480
return romh_banks[(addr & 0x3fff) | (romh_bank << 14)];
489
case CARTRIDGE_ATOMIC_POWER:
490
return atomicpower_romh_read(addr);
491
case CARTRIDGE_EXPERT:
492
return expert_romh_read(addr);
493
case CARTRIDGE_OCEAN:
494
/* 256 kB OCEAN carts may access memory either at $8000 or $a000 */
495
return roml_banks[(addr & 0x1fff) + (romh_bank << 13)];
496
case CARTRIDGE_IDE64:
497
return romh_banks[(addr & 0x3fff) | (romh_bank << 14)];
498
case CARTRIDGE_EASYFLASH:
499
return easyflash_romh_read(addr);
482
if (isepic_enabled && isepic_switch)
501
if (isepic_enabled && isepic_switch) {
484
502
return isepic_romh_read(addr);
488
505
return dqbb_romh_read(addr);
490
507
return romh_banks[(addr & 0x1fff) + (romh_bank << 13)];
631
641
void REGPARM2 ultimax_d000_dfff_store(WORD addr, BYTE value)
633
643
switch (mem_cartridge_type) {
634
case CARTRIDGE_MAGIC_FORMEL:
635
magicformel_d000_dfff_store(addr, value);
644
case CARTRIDGE_MAGIC_FORMEL:
645
magicformel_d000_dfff_store(addr, value);
638
648
store_bank_io(addr, value);
641
void REGPARM1 cartridge_decode_address(WORD addr)
643
switch (mem_cartridge_type) {
647
651
void cartridge_init_config(void)
649
653
switch (mem_cartridge_type) {
650
case CARTRIDGE_STARDOS:
651
stardos_config_init();
653
case CARTRIDGE_ACTION_REPLAY4:
654
actionreplay4_config_init();
656
case CARTRIDGE_ACTION_REPLAY3:
657
actionreplay3_config_init();
659
case CARTRIDGE_ACTION_REPLAY:
660
actionreplay_config_init();
662
case CARTRIDGE_ATOMIC_POWER:
663
atomicpower_config_init();
665
case CARTRIDGE_RETRO_REPLAY:
666
retroreplay_config_init();
668
case CARTRIDGE_IDE64:
671
case CARTRIDGE_KCS_POWER:
674
case CARTRIDGE_SUPER_GAMES:
675
supergames_config_init();
677
case CARTRIDGE_COMAL80:
678
comal80_config_init();
680
case CARTRIDGE_GENERIC_8KB:
682
generic_8kb_config_init();
684
case CARTRIDGE_EPYX_FASTLOAD:
685
epyxfastload_config_init();
687
case CARTRIDGE_MIKRO_ASSEMBLER:
688
mikroass_config_init();
690
case CARTRIDGE_FINAL_I:
691
final_v1_config_init();
693
case CARTRIDGE_FINAL_III:
694
final_v3_config_init();
696
case CARTRIDGE_SIMONS_BASIC:
697
case CARTRIDGE_GENERIC_16KB:
698
case CARTRIDGE_WESTERMANN:
699
case CARTRIDGE_WARPSPEED:
700
generic_16kb_config_init();
702
case CARTRIDGE_ZAXXON:
703
zaxxon_config_init();
705
case CARTRIDGE_ULTIMAX:
706
generic_ultimax_config_init();
708
case CARTRIDGE_SUPER_SNAPSHOT:
709
supersnapshot_v4_config_init();
711
case CARTRIDGE_SUPER_SNAPSHOT_V5:
712
supersnapshot_v5_config_init();
714
case CARTRIDGE_OCEAN:
715
case CARTRIDGE_FUNPLAY:
716
cartridge_config_changed(1, 1, CMODE_READ);
717
cartridge_store_io1((WORD)0xde00, 0);
720
cartridge_config_changed(0, 0, CMODE_READ);
721
cartridge_store_io1((WORD)0xde00, 0);
723
case CARTRIDGE_DINAMIC:
724
cartridge_config_changed(0, 0, CMODE_READ);
725
cartridge_read_io1((WORD)0xde00);
727
case CARTRIDGE_IEEE488:
728
cartridge_config_changed(0, 0, CMODE_READ);
729
/* FIXME: Insert interface init here. */
731
case CARTRIDGE_EXPERT:
732
expert_config_init();
734
case CARTRIDGE_MAGIC_DESK:
735
cartridge_config_changed(0, 0, CMODE_READ);
736
cartridge_store_io1((WORD)0xde00, 0);
738
case CARTRIDGE_MAGIC_FORMEL:
739
magicformel_config_init();
744
case CARTRIDGE_STRUCTURED_BASIC:
747
case CARTRIDGE_DELA_EP64:
748
delaep64_config_init();
750
case CARTRIDGE_DELA_EP7x8:
751
delaep7x8_config_init();
753
case CARTRIDGE_DELA_EP256:
754
delaep256_config_init();
756
case CARTRIDGE_REX_EP256:
757
rexep256_config_init();
760
cartridge_config_changed(2, 2, CMODE_READ);
654
case CARTRIDGE_STARDOS:
655
stardos_config_init();
657
case CARTRIDGE_ACTION_REPLAY4:
658
actionreplay4_config_init();
660
case CARTRIDGE_ACTION_REPLAY3:
661
actionreplay3_config_init();
663
case CARTRIDGE_ACTION_REPLAY:
664
actionreplay_config_init();
666
case CARTRIDGE_ATOMIC_POWER:
667
atomicpower_config_init();
669
case CARTRIDGE_RETRO_REPLAY:
670
retroreplay_config_init();
672
case CARTRIDGE_IDE64:
675
case CARTRIDGE_KCS_POWER:
678
case CARTRIDGE_SUPER_GAMES:
679
supergames_config_init();
681
case CARTRIDGE_COMAL80:
682
comal80_config_init();
684
case CARTRIDGE_GENERIC_8KB:
686
generic_8kb_config_init();
688
case CARTRIDGE_EPYX_FASTLOAD:
689
epyxfastload_config_init();
691
case CARTRIDGE_MIKRO_ASSEMBLER:
692
mikroass_config_init();
694
case CARTRIDGE_FINAL_I:
695
final_v1_config_init();
697
case CARTRIDGE_FINAL_III:
698
final_v3_config_init();
700
case CARTRIDGE_SIMONS_BASIC:
701
case CARTRIDGE_GENERIC_16KB:
702
case CARTRIDGE_WESTERMANN:
703
case CARTRIDGE_WARPSPEED:
704
generic_16kb_config_init();
706
case CARTRIDGE_ZAXXON:
707
zaxxon_config_init();
709
case CARTRIDGE_ULTIMAX:
710
generic_ultimax_config_init();
712
case CARTRIDGE_SUPER_SNAPSHOT:
713
supersnapshot_v4_config_init();
715
case CARTRIDGE_SUPER_SNAPSHOT_V5:
716
supersnapshot_v5_config_init();
718
case CARTRIDGE_OCEAN:
719
case CARTRIDGE_FUNPLAY:
720
cartridge_config_changed(1, 1, CMODE_READ);
721
cartridge_store_io1((WORD)0xde00, 0);
723
case CARTRIDGE_EASYFLASH:
724
easyflash_config_init();
727
cartridge_config_changed(0, 0, CMODE_READ);
728
cartridge_store_io1((WORD)0xde00, 0);
730
case CARTRIDGE_DINAMIC:
731
cartridge_config_changed(0, 0, CMODE_READ);
732
cartridge_read_io1((WORD)0xde00);
734
case CARTRIDGE_IEEE488:
735
cartridge_config_changed(0, 0, CMODE_READ);
736
/* FIXME: Insert interface init here. */
738
case CARTRIDGE_EXPERT:
739
expert_config_init();
741
case CARTRIDGE_MAGIC_DESK:
742
cartridge_config_changed(0, 0, CMODE_READ);
743
cartridge_store_io1((WORD)0xde00, 0);
745
case CARTRIDGE_MAGIC_FORMEL:
746
magicformel_config_init();
751
case CARTRIDGE_STRUCTURED_BASIC:
754
case CARTRIDGE_DELA_EP64:
755
delaep64_config_init();
757
case CARTRIDGE_DELA_EP7x8:
758
delaep7x8_config_init();
760
case CARTRIDGE_DELA_EP256:
761
delaep256_config_init();
763
case CARTRIDGE_REX_EP256:
764
rexep256_config_init();
767
cartridge_config_changed(2, 2, CMODE_READ);
764
771
void cartridge_reset(void)
766
773
switch (mem_cartridge_type) {
767
case CARTRIDGE_ACTION_REPLAY4:
768
actionreplay4_reset();
770
case CARTRIDGE_ACTION_REPLAY3:
771
actionreplay3_reset();
773
case CARTRIDGE_ACTION_REPLAY:
774
actionreplay_reset();
776
case CARTRIDGE_RETRO_REPLAY:
774
case CARTRIDGE_ACTION_REPLAY4:
775
actionreplay4_reset();
777
case CARTRIDGE_ACTION_REPLAY3:
778
actionreplay3_reset();
780
case CARTRIDGE_ACTION_REPLAY:
781
actionreplay_reset();
783
case CARTRIDGE_RETRO_REPLAY:
787
794
cartridge_romhbank_set(0);
788
795
cartridge_romlbank_set(0);
790
case CARTRIDGE_GENERIC_8KB:
791
case CARTRIDGE_IEEE488:
793
generic_8kb_config_setup(rawcart);
795
case CARTRIDGE_EPYX_FASTLOAD:
796
epyxfastload_config_setup(rawcart);
798
case CARTRIDGE_MIKRO_ASSEMBLER:
799
mikroass_config_setup(rawcart);
801
case CARTRIDGE_GENERIC_16KB:
802
case CARTRIDGE_SIMONS_BASIC:
803
case CARTRIDGE_WESTERMANN:
804
case CARTRIDGE_WARPSPEED:
805
generic_16kb_config_setup(rawcart);
807
case CARTRIDGE_FINAL_I:
808
final_v1_config_setup(rawcart);
810
case CARTRIDGE_STARDOS:
811
stardos_config_setup(rawcart);
813
case CARTRIDGE_ACTION_REPLAY4:
814
actionreplay4_config_setup(rawcart);
816
case CARTRIDGE_ACTION_REPLAY3:
817
actionreplay3_config_setup(rawcart);
819
case CARTRIDGE_ACTION_REPLAY:
820
actionreplay_config_setup(rawcart);
822
case CARTRIDGE_ATOMIC_POWER:
823
atomicpower_config_setup(rawcart);
825
case CARTRIDGE_RETRO_REPLAY:
826
retroreplay_config_setup(rawcart);
828
case CARTRIDGE_IDE64:
829
ide64_config_setup(rawcart);
831
case CARTRIDGE_KCS_POWER:
832
kcs_config_setup(rawcart);
834
case CARTRIDGE_FINAL_III:
835
final_v3_config_setup(rawcart);
837
case CARTRIDGE_SUPER_SNAPSHOT:
838
supersnapshot_v4_config_setup(rawcart);
840
case CARTRIDGE_SUPER_SNAPSHOT_V5:
841
supersnapshot_v5_config_setup(rawcart);
843
case CARTRIDGE_OCEAN:
844
case CARTRIDGE_FUNPLAY:
846
case CARTRIDGE_DINAMIC:
847
memcpy(roml_banks, rawcart, 0x2000 * 64);
848
memcpy(romh_banks, &rawcart[0x2000 * 16], 0x2000 * 16);
849
/* Hack: using 16kB configuration, but some carts are 8kB only */
850
cartridge_config_changed(1, 1, CMODE_READ);
852
case CARTRIDGE_ULTIMAX:
853
generic_ultimax_config_setup(rawcart);
855
case CARTRIDGE_SUPER_GAMES:
856
supergames_config_setup(rawcart);
858
case CARTRIDGE_COMAL80:
859
comal80_config_setup(rawcart);
861
case CARTRIDGE_EXPERT:
862
expert_config_setup(rawcart);
864
case CARTRIDGE_ZAXXON:
865
zaxxon_config_setup(rawcart);
867
case CARTRIDGE_MAGIC_DESK:
868
memcpy(roml_banks, rawcart, 0x2000 * 64);
869
cartridge_config_changed(0, 0, CMODE_READ);
871
case CARTRIDGE_MAGIC_FORMEL:
872
magicformel_config_setup(rawcart);
875
ross_config_setup(rawcart);
877
case CARTRIDGE_STRUCTURED_BASIC:
878
stb_config_setup(rawcart);
880
case CARTRIDGE_DELA_EP64:
881
delaep64_config_setup(rawcart);
883
case CARTRIDGE_DELA_EP7x8:
884
delaep7x8_config_setup(rawcart);
886
case CARTRIDGE_DELA_EP256:
887
delaep256_config_setup(rawcart);
889
case CARTRIDGE_REX_EP256:
890
rexep256_config_setup(rawcart);
893
mem_cartridge_type = CARTRIDGE_NONE;
797
case CARTRIDGE_GENERIC_8KB:
798
case CARTRIDGE_IEEE488:
800
generic_8kb_config_setup(rawcart);
802
case CARTRIDGE_EPYX_FASTLOAD:
803
epyxfastload_config_setup(rawcart);
805
case CARTRIDGE_MIKRO_ASSEMBLER:
806
mikroass_config_setup(rawcart);
808
case CARTRIDGE_GENERIC_16KB:
809
case CARTRIDGE_SIMONS_BASIC:
810
case CARTRIDGE_WESTERMANN:
811
case CARTRIDGE_WARPSPEED:
812
generic_16kb_config_setup(rawcart);
814
case CARTRIDGE_FINAL_I:
815
final_v1_config_setup(rawcart);
817
case CARTRIDGE_STARDOS:
818
stardos_config_setup(rawcart);
820
case CARTRIDGE_ACTION_REPLAY4:
821
actionreplay4_config_setup(rawcart);
823
case CARTRIDGE_ACTION_REPLAY3:
824
actionreplay3_config_setup(rawcart);
826
case CARTRIDGE_ACTION_REPLAY:
827
actionreplay_config_setup(rawcart);
829
case CARTRIDGE_ATOMIC_POWER:
830
atomicpower_config_setup(rawcart);
832
case CARTRIDGE_RETRO_REPLAY:
833
retroreplay_config_setup(rawcart);
835
case CARTRIDGE_IDE64:
836
ide64_config_setup(rawcart);
838
case CARTRIDGE_KCS_POWER:
839
kcs_config_setup(rawcart);
841
case CARTRIDGE_FINAL_III:
842
final_v3_config_setup(rawcart);
844
case CARTRIDGE_SUPER_SNAPSHOT:
845
supersnapshot_v4_config_setup(rawcart);
847
case CARTRIDGE_SUPER_SNAPSHOT_V5:
848
supersnapshot_v5_config_setup(rawcart);
850
case CARTRIDGE_OCEAN:
851
case CARTRIDGE_FUNPLAY:
853
case CARTRIDGE_DINAMIC:
854
memcpy(roml_banks, rawcart, 0x2000 * 64);
855
memcpy(romh_banks, &rawcart[0x2000 * 16], 0x2000 * 16);
856
/* Hack: using 16kB configuration, but some carts are 8kB only */
857
cartridge_config_changed(1, 1, CMODE_READ);
859
case CARTRIDGE_EASYFLASH:
860
easyflash_config_setup(rawcart);
862
case CARTRIDGE_ULTIMAX:
863
generic_ultimax_config_setup(rawcart);
865
case CARTRIDGE_SUPER_GAMES:
866
supergames_config_setup(rawcart);
868
case CARTRIDGE_COMAL80:
869
comal80_config_setup(rawcart);
871
case CARTRIDGE_EXPERT:
872
expert_config_setup(rawcart);
874
case CARTRIDGE_ZAXXON:
875
zaxxon_config_setup(rawcart);
877
case CARTRIDGE_MAGIC_DESK:
878
memcpy(roml_banks, rawcart, 0x2000 * 64);
879
cartridge_config_changed(0, 0, CMODE_READ);
881
case CARTRIDGE_MAGIC_FORMEL:
882
magicformel_config_setup(rawcart);
885
ross_config_setup(rawcart);
887
case CARTRIDGE_STRUCTURED_BASIC:
888
stb_config_setup(rawcart);
890
case CARTRIDGE_DELA_EP64:
891
delaep64_config_setup(rawcart);
893
case CARTRIDGE_DELA_EP7x8:
894
delaep7x8_config_setup(rawcart);
896
case CARTRIDGE_DELA_EP256:
897
delaep256_config_setup(rawcart);
899
case CARTRIDGE_REX_EP256:
900
rexep256_config_setup(rawcart);
903
mem_cartridge_type = CARTRIDGE_NONE;
896
906
resources_get_int("CartridgeReset", &cartridge_reset);
908
918
int cartridge_reset;
911
case CARTRIDGE_STARDOS:
914
case CARTRIDGE_ACTION_REPLAY4:
915
actionreplay4_detach();
917
case CARTRIDGE_ACTION_REPLAY3:
918
actionreplay3_detach();
920
case CARTRIDGE_ACTION_REPLAY:
921
actionreplay_detach();
923
case CARTRIDGE_ATOMIC_POWER:
924
atomicpower_detach();
926
case CARTRIDGE_EPYX_FASTLOAD:
927
epyxfastload_detach();
929
case CARTRIDGE_MIKRO_ASSEMBLER:
935
case CARTRIDGE_EXPERT:
938
case CARTRIDGE_FINAL_I:
941
case CARTRIDGE_WESTERMANN:
944
case CARTRIDGE_WARPSPEED:
947
case CARTRIDGE_FINAL_III:
950
case CARTRIDGE_GENERIC_16KB:
951
generic_16kb_detach();
953
case CARTRIDGE_GENERIC_8KB:
954
generic_8kb_detach();
956
case CARTRIDGE_IDE64:
959
case CARTRIDGE_IEEE488:
960
/* FIXME: Insert interface removal here. */
962
case CARTRIDGE_KCS_POWER:
965
case CARTRIDGE_SIMONS_BASIC:
968
case CARTRIDGE_MAGIC_FORMEL:
969
magicformel_detach();
971
case CARTRIDGE_RETRO_REPLAY:
972
retroreplay_detach();
974
case CARTRIDGE_SUPER_GAMES:
977
case CARTRIDGE_COMAL80:
980
case CARTRIDGE_STRUCTURED_BASIC:
986
case CARTRIDGE_SUPER_SNAPSHOT:
987
supersnapshot_v4_detach();
989
case CARTRIDGE_SUPER_SNAPSHOT_V5:
990
supersnapshot_v5_detach();
992
case CARTRIDGE_ULTIMAX:
993
generic_ultimax_detach();
995
case CARTRIDGE_ZAXXON:
998
case CARTRIDGE_DELA_EP64:
1001
case CARTRIDGE_DELA_EP7x8:
1004
case CARTRIDGE_DELA_EP256:
1007
case CARTRIDGE_REX_EP256:
921
case CARTRIDGE_STARDOS:
924
case CARTRIDGE_ACTION_REPLAY4:
925
actionreplay4_detach();
927
case CARTRIDGE_ACTION_REPLAY3:
928
actionreplay3_detach();
930
case CARTRIDGE_ACTION_REPLAY:
931
actionreplay_detach();
933
case CARTRIDGE_ATOMIC_POWER:
934
atomicpower_detach();
936
case CARTRIDGE_EPYX_FASTLOAD:
937
epyxfastload_detach();
939
case CARTRIDGE_MIKRO_ASSEMBLER:
945
case CARTRIDGE_EXPERT:
948
case CARTRIDGE_FINAL_I:
951
case CARTRIDGE_EASYFLASH:
954
case CARTRIDGE_WESTERMANN:
957
case CARTRIDGE_WARPSPEED:
960
case CARTRIDGE_FINAL_III:
963
case CARTRIDGE_GENERIC_16KB:
964
generic_16kb_detach();
966
case CARTRIDGE_GENERIC_8KB:
967
generic_8kb_detach();
969
case CARTRIDGE_IDE64:
972
case CARTRIDGE_IEEE488:
973
/* FIXME: Insert interface removal here. */
975
case CARTRIDGE_KCS_POWER:
978
case CARTRIDGE_SIMONS_BASIC:
981
case CARTRIDGE_MAGIC_FORMEL:
982
magicformel_detach();
984
case CARTRIDGE_RETRO_REPLAY:
985
retroreplay_detach();
987
case CARTRIDGE_SUPER_GAMES:
990
case CARTRIDGE_COMAL80:
993
case CARTRIDGE_STRUCTURED_BASIC:
999
case CARTRIDGE_SUPER_SNAPSHOT:
1000
supersnapshot_v4_detach();
1002
case CARTRIDGE_SUPER_SNAPSHOT_V5:
1003
supersnapshot_v5_detach();
1005
case CARTRIDGE_ULTIMAX:
1006
generic_ultimax_detach();
1008
case CARTRIDGE_ZAXXON:
1011
case CARTRIDGE_DELA_EP64:
1014
case CARTRIDGE_DELA_EP7x8:
1017
case CARTRIDGE_DELA_EP256:
1020
case CARTRIDGE_REX_EP256:
1011
1024
cartridge_config_changed(6, 6, CMODE_READ);
1012
1025
mem_cartridge_type = CARTRIDGE_NONE;