Previous 199869 Revisions Next

r31228 Monday 7th July, 2014 at 23:25:29 UTC by Alex Jackson
(MESS) c64 improvement & fix [Alex Jackson]
* Cache pointers to basic and kernal ROMs at startup (they can be in separate
  ROM regions or a single ROM depending on model) rather than branching on
  every read

* Moved "ProLogic-DOS Classic" BIOS from c64 to c64c, since it's clearly meant
  for, and only successfully boots on, the latter machine
[src/mess/drivers]c64.c
[src/mess/includes]c64.h

trunk/src/mess/drivers/c64.c
r31227r31228
127127   }
128128   if (!BIT(plaout, PLA_OUT_BASIC))
129129   {
130      if (m_basic != NULL)
131      {
132         data = m_basic->base()[offset & 0x1fff];
133      }
134      else
135      {
136         data = m_kernal->base()[offset & 0x1fff];
137      }
130      data = m_basic[offset & 0x1fff];
138131   }
139132   if (!BIT(plaout, PLA_OUT_KERNAL))
140133   {
141      if (m_basic != NULL)
142      {
143         data = m_kernal->base()[offset & 0x1fff];
144      }
145      else
146      {
147         data = m_kernal->base()[0x2000 | (offset & 0x1fff)];
148      }
134      data = m_kernal[offset & 0x1fff];
149135   }
150136   if (!BIT(plaout, PLA_OUT_CHAROM))
151137   {
152      data = m_charom->base()[offset & 0xfff];
138      data = m_charom[offset & 0xfff];
153139   }
154140   if (!BIT(plaout, PLA_OUT_IO))
155141   {
r31227r31228
10431029
10441030void c64_state::machine_start()
10451031{
1032   // get pointers to ROMs
1033   if (memregion("basic") != NULL)
1034   {
1035      m_basic = memregion("basic")->base();
1036      m_kernal = memregion("kernal")->base();
1037   }
1038   else
1039   {
1040      m_basic = memregion("kernal")->base();
1041      m_kernal = &m_basic[0x2000];
1042   }
1043   m_charom = memregion("charom")->base();
1044
10461045   // allocate memory
10471046   m_color_ram.allocate(0x400);
10481047
r31227r31228
14961495   ROM_REGION( 0x2000, "basic", 0 )
14971496   ROM_LOAD( "901226-01.u3", 0x0000, 0x2000, CRC(f833d117) SHA1(79015323128650c742a3694c9429aa91f355905e) )
14981497
1499   ROM_REGION( 0x4000, "kernal", 0 )
1498   ROM_REGION( 0x2000, "kernal", 0 )
15001499   ROM_DEFAULT_BIOS("r3")
15011500   ROM_SYSTEM_BIOS(0, "r1", "Kernal rev. 1" )
15021501   ROMX_LOAD( "901227-01.u4", 0x0000, 0x2000, CRC(dce782fa) SHA1(87cc04d61fc748b82df09856847bb5c2754a2033), ROM_BIOS(1) )
r31227r31228
15521551   ROMX_LOAD( "exos3.u4", 0x0000, 0x2000, CRC(4e54d020) SHA1(f8931b7c0b26807f4de0cc241f0b1e2c8f5271e9), ROM_BIOS(26) )
15531552   ROM_SYSTEM_BIOS(26, "exos4", "EXOS v4" )
15541553   ROMX_LOAD( "exos4.u4", 0x0000, 0x2000, CRC(d5cf83a9) SHA1(d5f03a5c0e9d00032d4751ecc6bcd6385879c9c7), ROM_BIOS(27) )
1555   ROM_SYSTEM_BIOS(27, "pdc", "ProLogic-DOS Classic" )
1556   ROMX_LOAD( "pdc.u4", 0x0000, 0x4000, CRC(6b653b9c) SHA1(0f44a9c62619424a0cd48a90e1b377b987b494e0), ROM_BIOS(28) )
1557   ROM_SYSTEM_BIOS(28, "digidos", "DigiDOS" )
1558   ROMX_LOAD( "digidos.u4", 0x0000, 0x2000, CRC(2b0c8e89) SHA1(542d6f61c318bced0642e7c2d4d3b34a0f13e634), ROM_BIOS(29) )
1559   ROM_SYSTEM_BIOS(29, "magnum", "Magnum Load" )
1560   ROMX_LOAD( "magnum.u4", 0x0000, 0x2000, CRC(b2cffcc6) SHA1(827c782c1723b5d0992c05c00738ae4b2133b641), ROM_BIOS(30) )
1554   ROM_SYSTEM_BIOS(27, "digidos", "DigiDOS" )
1555   ROMX_LOAD( "digidos.u4", 0x0000, 0x2000, CRC(2b0c8e89) SHA1(542d6f61c318bced0642e7c2d4d3b34a0f13e634), ROM_BIOS(28) )
1556   ROM_SYSTEM_BIOS(28, "magnum", "Magnum Load" )
1557   ROMX_LOAD( "magnum.u4", 0x0000, 0x2000, CRC(b2cffcc6) SHA1(827c782c1723b5d0992c05c00738ae4b2133b641), ROM_BIOS(29) )
15611558
15621559   ROM_REGION( 0x1000, "charom", 0 )
15631560   ROM_LOAD( "901225-01.u5", 0x0000, 0x1000, CRC(ec4272ee) SHA1(adc7c31e18c7c7413d54802ef2f4193da14711aa) )
r31227r31228
17071704
17081705ROM_START( c64c )
17091706   ROM_REGION( 0x4000, "kernal", 0 )
1710   ROM_LOAD( "251913-01.u4", 0x0000, 0x4000, CRC(0010ec31) SHA1(765372a0e16cbb0adf23a07b80f6b682b39fbf88) )
1707   ROM_DEFAULT_BIOS("kernal")
1708   ROM_SYSTEM_BIOS(0, "cbm", "Original" )
1709   ROMX_LOAD( "251913-01.u4", 0x0000, 0x4000, CRC(0010ec31) SHA1(765372a0e16cbb0adf23a07b80f6b682b39fbf88), ROM_BIOS(1) )
1710   ROM_SYSTEM_BIOS(1, "pdc", "ProLogic-DOS Classic" )
1711   ROMX_LOAD( "pdc.u4", 0x0000, 0x4000, CRC(6b653b9c) SHA1(0f44a9c62619424a0cd48a90e1b377b987b494e0), ROM_BIOS(2) )
17111712
17121713   ROM_REGION( 0x1000, "charom", 0 )
17131714   ROM_LOAD( "901225-01.u5", 0x0000, 0x1000, CRC(ec4272ee) SHA1(adc7c31e18c7c7413d54802ef2f4193da14711aa) )
trunk/src/mess/includes/c64.h
r31227r31228
4949         m_user(*this, PET_USER_PORT_TAG),
5050         m_ram(*this, RAM_TAG),
5151         m_cassette(*this, PET_DATASSETTE_PORT_TAG),
52         m_basic(*this, "basic"),
53         m_kernal(*this, "kernal"),
54         m_charom(*this, "charom"),
5552         m_color_ram(*this, "color_ram"),
5653         m_row0(*this, "ROW0"),
5754         m_row1(*this, "ROW1"),
r31227r31228
7572         m_exp_nmi(CLEAR_LINE)
7673   { }
7774
75   // ROM
76   UINT8 *m_basic;
77   UINT8 *m_kernal;
78   UINT8 *m_charom;
79
7880   required_device<m6510_device> m_maincpu;
7981   required_device<pls100_device> m_pla;
8082   required_device<mos6566_device> m_vic;
r31227r31228
8890   required_device<pet_user_port_device> m_user;
8991   required_device<ram_device> m_ram;
9092   optional_device<pet_datassette_port_device> m_cassette;
91   optional_memory_region m_basic;
92   required_memory_region m_kernal;
93   required_memory_region m_charom;
9493   optional_shared_ptr<UINT8> m_color_ram;
9594   optional_ioport m_row0;
9695   optional_ioport m_row1;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team