Previous 15994 Revisions Next

r9474 Saturday 30th October, 2010 at 12:31:49 UTC by R. Belmont
[MAC] A little cleanup before we modernize the driver
[src/mess/drivers]mac.c
[src/mess/includes]mac.h
[src/mess/machine]mac.c

src/mess/machine/mac.c
r9473r9474
6363        - What on earth are 0x700000-0x7fffff mapped to ?
6464
6565     Egret version spotting:
66     341S0417 - 0x???? - Color Classic
67     341S0850 - 0x???? - LC, LC II
68     341S0851 - 0x0101 - Classic II, IIsi, IIvx, LC III (probably also IIvi?)
66     341S0417 - 0x???? (?.??) - Color Classic
67     341S0850 - 0x???? (?.??) - LC, LC II
68     341S0851 - 0x0101 (1.01) - Classic II, IIsi, IIvx, LC III (probably also IIvi?)
6969
7070     Cuda version spotting:
7171     341S0060 - 0x00020028 (2.40) - Performa/Quadra 6xx, PMac 6200, x400, some x500, Pippin, Gossamer G3, others?
r9473r9474
7474     341S0788 - 0x00020025 (2.37) - LC 475/575/Quadra 605, Quadra 660AV/840AV, PMac 7200
7575     343S0788 - 0x???????? (?.??) - PMac x100 (typo - actually 341S0788?)
7676
77     Caboose version spotting:
78     341S0853 - 0x0100 (1.00) - Quadra 950
7779
7880****************************************************************************/
7981
r9473r9474
457459   }
458460}
459461
460static void set_memory_overlay(running_machine *machine, int overlay)
462void mac_set_memory_overlay(running_machine *machine, int overlay)
461463{
462464   offs_t memory_size;
463465   UINT8 *memory_data;
r9473r9474
486488      }
487489
488490      /* install the memory */
489      if (((mac->model >= MODEL_MAC_LC) && (mac->model <= MODEL_MAC_COLOR_CLASSIC) && (mac->model != MODEL_MAC_LC_III)) || (mac->model == MODEL_MAC_CLASSIC_II))
491      if (((mac->model >= MODEL_MAC_LC) && (mac->model <= MODEL_MAC_COLOR_CLASSIC) && ((mac->model != MODEL_MAC_LC_III) && (mac->model != MODEL_MAC_LC_III_PLUS))) || (mac->model == MODEL_MAC_CLASSIC_II))
490492      {
491493         mac->overlay = overlay;
492494         mac_v8_resize(machine, mac);
493495      }
494      else if (mac->model == MODEL_MAC_POWERMAC_6100)
496      else if ((mac->model >= MODEL_MAC_POWERMAC_6100) && (mac->model >= MODEL_MAC_POWERMAC_8100))
495497      {
496         mac_install_memory(machine, 0x00000000, memory_size-1, memory_size, memory_data, is_rom, "bank1");
498//         mac_install_memory(machine, 0x00000000, memory_size-1, memory_size, memory_data, is_rom, "bank1");
497499      }
498500      else if ((mac->model == MODEL_MAC_IICI) || (mac->model == MODEL_MAC_IISI))
499501      {
r9473r9474
515517      {
516518         mac_install_memory(machine, 0x00000000, 0x3fffffff, memory_size, memory_data, is_rom, "bank1");
517519      }
518      else if (mac->model == MODEL_MAC_LC_III)   // up to 36 MB
520      else if ((mac->model == MODEL_MAC_LC_III) || (mac->model == MODEL_MAC_LC_III_PLUS))   // up to 36 MB
519521      {
520522         mac_install_memory(machine, 0x00000000, memory_size-1, memory_size, memory_data, is_rom, "bank1");
521523      }
r9473r9474
527529      mac->overlay = overlay;
528530
529531      if (LOG_GENERAL)
530         logerror("set_memory_overlay: overlay=%i\n", overlay);
532         logerror("mac_set_memory_overlay: overlay=%i\n", overlay);
531533   }
532534}
533535
r9473r9474
26262628      case MODEL_MAC_II_FDHD:
26272629      case MODEL_MAC_IIX:
26282630      case MODEL_MAC_POWERMAC_6100:
2631      case MODEL_MAC_POWERMAC_7100:
2632      case MODEL_MAC_POWERMAC_8100:
26292633         return 0x81;      // bit 0 must be set on most Macs to avoid attempting to boot from AppleTalk
26302634
26312635      case MODEL_MAC_SE30:
r9473r9474
27572761     * first access to the ROM. */
27582762   if (mac->model < MODEL_MAC_SE)
27592763   {
2760      set_memory_overlay(device->machine, (data & 0x10) >> 4);
2764      mac_set_memory_overlay(device->machine, (data & 0x10) >> 4);
27612765   }
27622766}
27632767
r9473r9474
30583062   if (mac->model < MODEL_MAC_POWERMAC_6100)   // no overlay for PowerPC
30593063   {
30603064      mac->overlay = -1;   // insure no match
3061      set_memory_overlay(machine, 1);
3065      mac_set_memory_overlay(machine, 1);
30623066   }
30633067
30643068   /* setup videoram */
r9473r9474
31293133
31303134   overlay = mac->overlay;
31313135   mac->overlay = -1;
3132   set_memory_overlay(machine, overlay);
3136   mac_set_memory_overlay(machine, overlay);
31333137}
31343138
31353139
r9473r9474
31433147      {
31443148         if ((address >= 0x900000) && (address <= 0x9fffff))
31453149         {
3146            set_memory_overlay(machine, 0);      // kill the overlay
3150            mac_set_memory_overlay(machine, 0);      // kill the overlay
31473151         }
31483152      }
31493153      else if ((mac->model == MODEL_MAC_SE) || (mac->model == MODEL_MAC_CLASSIC))
31503154      {
31513155         if ((address >= 0x400000) && (address <= 0x4fffff))
31523156         {
3153            set_memory_overlay(machine, 0);      // kill the overlay
3157            mac_set_memory_overlay(machine, 0);      // kill the overlay
31543158         }
31553159      }
31563160      else if ((mac->model == MODEL_MAC_LC) || (mac->model == MODEL_MAC_LC_II) || (mac->model == MODEL_MAC_CLASSIC_II))
31573161      {
31583162         if ((address >= 0xa00000) && (address <= 0xafffff))
31593163         {
3160            set_memory_overlay(machine, 0);      // kill the overlay
3164            mac_set_memory_overlay(machine, 0);      // kill the overlay
31613165         }
31623166      }
31633167      else
31643168      {
31653169         if ((address >= 0x40000000) && (address <= 0x4fffffff))
31663170         {
3167            set_memory_overlay(machine, 0);      // kill the overlay
3171            mac_set_memory_overlay(machine, 0);      // kill the overlay
31683172         }
31693173      }
31703174   }
r9473r9474
31943198   }
31953199
31963200   mac->overlay = -1;
3197   set_memory_overlay(machine, 1);
3201   mac_set_memory_overlay(machine, 1);
31983202
31993203   memset(messram_get_ptr(machine->device("messram")), 0, messram_get_size(machine->device("messram")));
32003204
32013205   if ((model == MODEL_MAC_SE) || (model == MODEL_MAC_CLASSIC) || (model == MODEL_MAC_CLASSIC_II) || (model == MODEL_MAC_LC) ||
3202       (model == MODEL_MAC_LC_II) || (model == MODEL_MAC_LC_III) || ((mac->model >= MODEL_MAC_II) && (mac->model <= MODEL_MAC_SE30)) ||
3206       (model == MODEL_MAC_LC_II) || (model == MODEL_MAC_LC_III) || (model == MODEL_MAC_LC_III_PLUS) || ((mac->model >= MODEL_MAC_II) && (mac->model <= MODEL_MAC_SE30)) ||
32033207       (model == MODEL_MAC_PORTABLE) || (model == MODEL_MAC_PB100))
32043208   {
32053209      cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM)->set_direct_update_handler(direct_update_delegate_create_static(overlay_opbaseoverride, *machine));
r9473r9474
32293233MAC_DRIVER_INIT(maclc, MODEL_MAC_LC)
32303234MAC_DRIVER_INIT(maclc2, MODEL_MAC_LC_II)
32313235MAC_DRIVER_INIT(maclc3, MODEL_MAC_LC_III)
3236MAC_DRIVER_INIT(maclc3plus, MODEL_MAC_LC_III_PLUS)
32323237MAC_DRIVER_INIT(maciici, MODEL_MAC_IICI)
32333238MAC_DRIVER_INIT(maciisi, MODEL_MAC_IISI)
32343239MAC_DRIVER_INIT(macii, MODEL_MAC_II)
r9473r9474
32363241MAC_DRIVER_INIT(macclassic2, MODEL_MAC_CLASSIC_II)
32373242MAC_DRIVER_INIT(maclrcclassic, MODEL_MAC_COLOR_CLASSIC)
32383243MAC_DRIVER_INIT(macpm6100, MODEL_MAC_POWERMAC_6100)
3244MAC_DRIVER_INIT(macpm7100, MODEL_MAC_POWERMAC_7100)
3245MAC_DRIVER_INIT(macpm8100, MODEL_MAC_POWERMAC_8100)
32393246MAC_DRIVER_INIT(macprtb, MODEL_MAC_PORTABLE)
32403247MAC_DRIVER_INIT(macpb100, MODEL_MAC_PB100)
32413248
src/mess/includes/mac.h
r9473r9474
5454   MODEL_MAC_LC,      // LC class 68030 machines, generally using a V8 or compatible gate array
5555   MODEL_MAC_LC_II,
5656   MODEL_MAC_LC_III,
57   MODEL_MAC_LC_III_PLUS,
5758   MODEL_MAC_CLASSIC_II,
5859   MODEL_MAC_TV,
5960   MODEL_MAC_COLOR_CLASSIC,
r9473r9474
9293   MODEL_MAC_PB190,
9394   MODEL_MAC_PB190cs,
9495
95   MODEL_MAC_POWERMAC_6100   // original PowerMac
96   MODEL_MAC_POWERMAC_6100,   // original-series PowerMacs
97   MODEL_MAC_POWERMAC_7100,
98   MODEL_MAC_POWERMAC_8100
9699} model_t;
97100
98101// video parameters for classic Macs
r9473r9474
291294
292295// defined in machine/mac.c
293296void mac_v8_resize(running_machine *machine, mac_state *mac);
297void mac_set_memory_overlay(running_machine *machine, int overlay);
294298
295299#endif /* MAC_H_ */
296300
src/mess/drivers/mac.c
r9473r9474
3939#include "emu.h"
4040#include "cpu/m68000/m68000.h"
4141#include "cpu/powerpc/ppc.h"
42#include "cpu/m6805/m6805.h"
4243#include "includes/mac.h"
4344#include "machine/6522via.h"
4445#include "machine/ncr5380.h"
r9473r9474
326327   }
327328}
328329
329static READ32_HANDLER(mac_lc3_id)
330static READ32_HANDLER(mac_read_id)
330331{
331//  printf("Sonora ID register read, PC=%x\n", cpu_get_pc(space->cpu));
332   mac_state *mac = space->machine->driver_data<mac_state>();
332333
333   return 0xa55a0001;   // 25 MHz LC III
334   logerror("Mac read ID reg @ PC=%x\n", cpu_get_pc(space->cpu));
335
336   switch (mac->model)
337   {
338      case MODEL_MAC_LC_III:
339         return 0xa55a0001;   // 25 MHz LC III
340
341      case MODEL_MAC_LC_III_PLUS:
342         return 0xa55a0003;   // 33 MHz LC III+
343
344      case MODEL_MAC_POWERMAC_6100:
345         return 0xa55a3011;
346
347      case MODEL_MAC_POWERMAC_7100:
348         return 0xa55a3012;
349
350      case MODEL_MAC_POWERMAC_8100:
351         return 0xa55a3013;
352
353      case MODEL_MAC_PBDUO_210:
354         return 0xa55a1004;
355
356      case MODEL_MAC_PBDUO_230:
357         return 0xa55a1005;
358
359      case MODEL_MAC_PBDUO_250:
360         return 0xa55a1006;
361
362      default:
363         return 0;
364   }
334365}
335366
336367// Portable/PB100 video
r9473r9474
443474   AM_RANGE(0x50026000, 0x50027fff) AM_READWRITE16(mac_rbv_r, mac_rbv_w, 0xffffffff) AM_MIRROR(0x00f00000)
444475   AM_RANGE(0x50028000, 0x50028003) AM_READWRITE8(mac_sonora_vctl_r, mac_sonora_vctl_w, 0xffffffff) AM_MIRROR(0x00f00000)
445476
446   AM_RANGE(0x5ffffffc, 0x5fffffff) AM_READ(mac_lc3_id)
477   AM_RANGE(0x5ffffffc, 0x5fffffff) AM_READ(mac_read_id)
447478
448479   AM_RANGE(0x60000000, 0x600fffff) AM_RAM AM_MIRROR(0x0ff00000) AM_BASE_MEMBER(mac_state, rbv_vram)
449480ADDRESS_MAP_END
r9473r9474
505536ADDRESS_MAP_END
506537
507538static ADDRESS_MAP_START(pwrmac_map, ADDRESS_SPACE_PROGRAM, 64)
539   AM_RANGE(0x00000000, 0x007fffff) AM_RAM   // 8 MB standard
540
508541   AM_RANGE(0x40000000, 0x403fffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0fc00000)
509542
510543   AM_RANGE(0x50000000, 0x50001fff) AM_READWRITE16(mac_via_r, mac_via_w, U64(0xffffffffffffffff)) AM_MIRROR(0x00f00000)
r9473r9474
514547   AM_RANGE(0x50006060, 0x50006067) AM_READ32(macii_scsi_drq_r,U64(0xffffffffffffffff)) AM_MIRROR(0x00f00000)
515548   AM_RANGE(0x50010000, 0x50011fff) AM_READWRITE16(macplus_scsi_r, macii_scsi_w, U64(0xffffffffffffffff)) AM_MIRROR(0x00f00000)
516549   AM_RANGE(0x50012060, 0x50012067) AM_READ32(macii_scsi_drq_r,U64(0xffffffffffffffff)) AM_MIRROR(0x00f00000)
517   AM_RANGE(0x50014000, 0x50015fff) AM_READWRITE8(mac_asc_r, mac_asc_w, U64(0xffffffffffffffff)) AM_MIRROR(0x00f00000)
518550   AM_RANGE(0x50016000, 0x50017fff) AM_READWRITE16(mac_iwm_r, mac_iwm_w, U64(0xffffffffffffffff)) AM_MIRROR(0x00f00000)
519551
552   AM_RANGE(0x5ffffff8, 0x5fffffff) AM_READ32(mac_read_id, U64(0xffffffffffffffff))
553
520554   AM_RANGE(0xffc00000, 0xffffffff) AM_ROM AM_REGION("bootrom", 0)
521555ADDRESS_MAP_END
522556

Previous 15994 Revisions Next


© 1998-2018 The MESS Team