src/mess/includes/atom.h
| r2770 | r2771 | |
| 25 | 25 | WRITE8_HANDLER (atom_8255_portc_w ); |
| 26 | 26 | |
| 27 | 27 | /* for floppy disc interface */ |
| 28 | | READ8_HANDLER (atom_8271_r); |
| 28 | READ8_HANDLER (atom_8271_r); |
| 29 | 29 | WRITE8_HANDLER (atom_8271_w); |
| 30 | 30 | |
| 31 | 31 | DEVICE_IMAGE_LOAD( atom_floppy ); |
| 32 | 32 | |
| 33 | | READ8_HANDLER(atom_eprom_box_r); |
| 33 | READ8_HANDLER(atom_eprom_box_r); |
| 34 | 34 | WRITE8_HANDLER(atom_eprom_box_w); |
| 35 | | void atom_eprom_box_init(void); |
| 35 | void atom_eprom_box_init(running_machine *machine); |
| 36 | 36 | |
| 37 | 37 | MACHINE_RESET( atomeb ); |
| 38 | 38 | |
src/mess/includes/apple2.h
| r2770 | r2771 | |
| 56 | 56 | |
| 57 | 57 | INTERRUPT_GEN( apple2_interrupt ); |
| 58 | 58 | |
| 59 | | void apple2_setvar(UINT32 val, UINT32 mask); |
| 59 | void apple2_setvar(running_machine *machine, UINT32 val, UINT32 mask); |
| 60 | 60 | |
| 61 | 61 | |
| 62 | 62 | /*----------- defined in video/apple2.c -----------*/ |
| r2770 | r2771 | |
| 128 | 128 | |
| 129 | 129 | /*----------- defined in machine/apple2.c -----------*/ |
| 130 | 130 | |
| 131 | | void apple2_setup_memory(const apple2_memmap_config *config); |
| 132 | | void apple2_update_memory(void); |
| 131 | void apple2_setup_memory(running_machine *machine, const apple2_memmap_config *config); |
| 132 | void apple2_update_memory(running_machine *machine); |
| 133 | 133 | |
| 134 | 134 | |
| 135 | 135 | #endif /* APPLE2_H_ */ |
src/mess/machine/apple2gs.c
| r2770 | r2771 | |
| 1144 | 1144 | |
| 1145 | 1145 | case 0x2D: /* C02D - SLTROMSEL */ |
| 1146 | 1146 | apple2gs_sltromsel = data; |
| 1147 | | apple2_update_memory(); |
| 1147 | apple2_update_memory(machine); |
| 1148 | 1148 | break; |
| 1149 | 1149 | |
| 1150 | 1150 | case 0x31: /* C031 - DISKREG */ |
| r2770 | r2771 | |
| 1170 | 1170 | if (apple2gs_shadow != data) |
| 1171 | 1171 | { |
| 1172 | 1172 | apple2gs_shadow = data; |
| 1173 | | apple2_update_memory(); |
| 1173 | apple2_update_memory(machine); |
| 1174 | 1174 | } |
| 1175 | 1175 | break; |
| 1176 | 1176 | |
| r2770 | r2771 | |
| 1208 | 1208 | break; |
| 1209 | 1209 | |
| 1210 | 1210 | case 0x68: /* C068 - STATEREG */ |
| 1211 | | apple2_setvar( |
| 1211 | apple2_setvar(machine, |
| 1212 | 1212 | ((data & 0x80) ? VAR_ALTZP : 0) | |
| 1213 | 1213 | ((data & 0x40) ? VAR_PAGE2 : 0) | |
| 1214 | 1214 | ((data & 0x20) ? VAR_RAMRD : 0) | |
| r2770 | r2771 | |
| 1703 | 1703 | cfg.memmap = apple2gs_memmap_entries; |
| 1704 | 1704 | cfg.auxmem = apple2gs_slowmem; |
| 1705 | 1705 | cfg.auxmem_length = 0x20000; |
| 1706 | | apple2_setup_memory(&cfg); |
| 1706 | apple2_setup_memory(machine, &cfg); |
| 1707 | 1707 | } |
| 1708 | 1708 | |
| 1709 | 1709 | |
src/mess/machine/atom.c
| r2770 | r2771 | |
| 462 | 462 | /* emulates a 16-slot eprom box for the Atom */ |
| 463 | 463 | static unsigned char selected_eprom = 0; |
| 464 | 464 | |
| 465 | | static void atom_eprom_box_refresh(void) |
| 465 | static void atom_eprom_box_refresh(running_machine *machine) |
| 466 | 466 | { |
| 467 | 467 | unsigned char *eprom_data; |
| 468 | 468 | |
| r2770 | r2771 | |
| 472 | 472 | memory_set_bankptr(1, eprom_data); |
| 473 | 473 | } |
| 474 | 474 | |
| 475 | | void atom_eprom_box_init(void) |
| 475 | void atom_eprom_box_init(running_machine *machine) |
| 476 | 476 | { |
| 477 | 477 | /* set initial eprom */ |
| 478 | 478 | selected_eprom = 0; |
| 479 | 479 | /* set memory handler */ |
| 480 | 480 | /* init */ |
| 481 | | atom_eprom_box_refresh(); |
| 481 | atom_eprom_box_refresh(machine); |
| 482 | 482 | } |
| 483 | 483 | |
| 484 | 484 | /* write to eprom box, changes eprom selected */ |
| r2770 | r2771 | |
| 486 | 486 | { |
| 487 | 487 | selected_eprom = data & 0x0f; |
| 488 | 488 | |
| 489 | | atom_eprom_box_refresh(); |
| 489 | atom_eprom_box_refresh(machine); |
| 490 | 490 | } |
| 491 | 491 | |
| 492 | 492 | /* read from eprom box register, can this be done in the real hardware */ |
| r2770 | r2771 | |
| 498 | 498 | MACHINE_RESET( atomeb ) |
| 499 | 499 | { |
| 500 | 500 | MACHINE_RESET_CALL(atom); |
| 501 | | atom_eprom_box_init(); |
| 501 | atom_eprom_box_init(machine); |
| 502 | 502 | } |
| 503 | 503 | |
src/mess/machine/apple2.c
| r2770 | r2771 | |
| 90 | 90 | |
| 91 | 91 | |
| 92 | 92 | |
| 93 | | void apple2_setup_memory(const apple2_memmap_config *config) |
| 93 | void apple2_setup_memory(running_machine *machine, const apple2_memmap_config *config) |
| 94 | 94 | { |
| 95 | 95 | apple2_mem_config = *config; |
| 96 | 96 | apple2_current_meminfo = NULL; |
| 97 | | apple2_update_memory(); |
| 97 | apple2_update_memory(machine); |
| 98 | 98 | } |
| 99 | 99 | |
| 100 | 100 | |
| 101 | 101 | |
| 102 | | void apple2_update_memory(void) |
| 102 | void apple2_update_memory(running_machine *machine) |
| 103 | 103 | { |
| 104 | 104 | int i, bank, rbank, wbank; |
| 105 | 105 | int full_update = 0; |
| r2770 | r2771 | |
| 293 | 293 | |
| 294 | 294 | static STATE_POSTLOAD( apple2_update_memory_postload ) |
| 295 | 295 | { |
| 296 | | apple2_update_memory(); |
| 296 | apple2_update_memory(machine); |
| 297 | 297 | } |
| 298 | 298 | |
| 299 | 299 | |
| r2770 | r2771 | |
| 567 | 567 | |
| 568 | 568 | |
| 569 | 569 | |
| 570 | | void apple2_setvar(UINT32 val, UINT32 mask) |
| 570 | void apple2_setvar(running_machine *machine, UINT32 val, UINT32 mask) |
| 571 | 571 | { |
| 572 | 572 | LOG(("apple2_setvar(): val=0x%06x mask=0x%06x pc=0x%04x\n", val, mask, (unsigned int) cpunum_get_reg(0, REG_PC))); |
| 573 | 573 | |
| r2770 | r2771 | |
| 581 | 581 | a2 &= ~mask; |
| 582 | 582 | a2 |= val; |
| 583 | 583 | |
| 584 | | apple2_update_memory(); |
| 584 | apple2_update_memory(machine); |
| 585 | 585 | } |
| 586 | 586 | |
| 587 | 587 | |
| r2770 | r2771 | |
| 748 | 748 | || !strcmp(machine->gamedrv->name, "apple2c3") |
| 749 | 749 | || !strcmp(machine->gamedrv->name, "apple2cp") |
| 750 | 750 | || !strncmp(machine->gamedrv->name, "apple2g", 7); |
| 751 | | apple2_setvar(need_intcxrom ? VAR_INTCXROM : 0, ~0); |
| 751 | apple2_setvar(machine, need_intcxrom ? VAR_INTCXROM : 0, ~0); |
| 752 | 752 | |
| 753 | 753 | // ROM 0 cannot boot unless language card bank 2 is write-enabled (but read ROM) on startup |
| 754 | 754 | if (!strncmp(machine->gamedrv->name, "apple2g", 7)) |
| 755 | 755 | { |
| 756 | | apple2_setvar(VAR_LCWRITE|VAR_LCRAM2, VAR_LCWRITE | VAR_LCRAM | VAR_LCRAM2); |
| 756 | apple2_setvar(machine, VAR_LCWRITE|VAR_LCRAM2, VAR_LCWRITE | VAR_LCRAM | VAR_LCRAM2); |
| 757 | 757 | } |
| 758 | 758 | |
| 759 | 759 | a2_speaker_state = 0; |
| r2770 | r2771 | |
| 870 | 870 | { |
| 871 | 871 | UINT32 mask; |
| 872 | 872 | mask = 1 << (offset / 2); |
| 873 | | apple2_setvar((offset & 1) ? mask : 0, mask); |
| 873 | apple2_setvar(machine, (offset & 1) ? mask : 0, mask); |
| 874 | 874 | } |
| 875 | 875 | |
| 876 | 876 | |
| r2770 | r2771 | |
| 947 | 947 | switch(offset) |
| 948 | 948 | { |
| 949 | 949 | case 0x08: |
| 950 | | apple2_setvar((a2 & VAR_ROMSWITCH) ^ VAR_ROMSWITCH, VAR_ROMSWITCH); |
| 950 | apple2_setvar(machine, (a2 & VAR_ROMSWITCH) ^ VAR_ROMSWITCH, VAR_ROMSWITCH); |
| 951 | 951 | break; |
| 952 | 952 | } |
| 953 | 953 | } |
| r2770 | r2771 | |
| 997 | 997 | offset ^= 1; |
| 998 | 998 | |
| 999 | 999 | mask = 0x100 << (offset / 2); |
| 1000 | | apple2_setvar((offset & 1) ? mask : 0, mask); |
| 1000 | apple2_setvar(machine, (offset & 1) ? mask : 0, mask); |
| 1001 | 1001 | return apple2_getfloatingbusvalue(); |
| 1002 | 1002 | } |
| 1003 | 1003 | |
| r2770 | r2771 | |
| 1312 | 1312 | mem_cfg.first_bank = 1; |
| 1313 | 1313 | mem_cfg.memmap = apple2_memmap_entries; |
| 1314 | 1314 | mem_cfg.auxmem = apple2cp_ce00_ram; |
| 1315 | | apple2_setup_memory(&mem_cfg); |
| 1315 | apple2_setup_memory(machine, &mem_cfg); |
| 1316 | 1316 | |
| 1317 | 1317 | /* perform initial reset */ |
| 1318 | 1318 | apple2_reset(machine); |