Previous 199869 Revisions Next

r18734 Saturday 27th October, 2012 at 12:32:44 UTC by Miodrag Milanović
spectrum and amiga changes from Haze (no whatsnew)
[hash]amiga1200_flop.xml* amigaaga_flop.xml* pentagon_cass.xml* spectrum_cass.xml
[src/mess]mess.lst mess.mak
[src/mess/drivers]ami1200.c amiga.c pentagon.c

trunk/hash/spectrum_cass.xml
r18733r18734
1818<!-- COMPATIBILITY
1919     The MESS emulation at the time of writing isn't very good, the following emulators are used to determine how things should work
2020     
21      EmuZWin (v2.7 release 2.8)         - Closed Source, runs some images (Gremlin 2 type*) which fail on the emulators below  - http://kolmck.net/apps/EmuZWin_Eng.htm
2122      Fuse (Free Unix Spectrum Emulator) - Free, High Compatibility can run some of the trickier images, Windows port available - http://fuse-emulator.sourceforge.net/
2223      Spectaculator                      - Commercial, a bit more user friendly than above, similar compatibility               - http://www.spectaculator.com/     
2324     
r18733r18734
3334 
3435     legacy emulators including Real Spectrum ( http://zxm.speccy.cz/realspec/ ) appear to struggle with some of the more complex tape protections
3536
36 
37     ToDo: Find an emulator which works with the 'Gremlin 2' protected tapes 'M.A.S.K' and 'Basil The Great Mouse Detective' all TZX images I've found fail in the
38     above emulators, although RealSpectrum does load some copies of MASK but fails loading the 2nd part of the game.
37     * Gremlin 2 type images include 'M.A.S.K' and 'Basil The Great Mouse Detective'
3938     
39     
4040
4141
4242-->
trunk/hash/amiga1200_flop.xml
r0r18734
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!-- This list contains the system floppies distributed with the Amiga 1200, it is not a general purpose Software List -->
5
6<softwarelist name="amiga1200_flop" description="Amiga 1200 System Floppies">
7
8   <software name="wb30">
9      <description>Workbench v3.0 rev 39.29</description>
10      <year>1992</year>
11      <publisher>Commodore</publisher>
12
13      <part name="flop1" interface="floppy_3_5">
14         <feature name="part_id" value="Install" />
15         <dataarea name="flop" size="901120">
16            <rom name="workbench v3.0 rev 39.29 (1992)(commodore)(a1200-a4000)(m10)(disk 1 of 6)(install).adf" size="901120" crc="6fa2d2b4" sha1="ba24b4172339b9198e4f724a6804d0c6eb5e394b" offset="0"/>
17         </dataarea>
18      </part>
19
20    <part name="flop2" interface="floppy_3_5">
21      <feature name="part_id" value="Workbench" />
22      <dataarea name="flop" size="901120">
23        <rom name="workbench v3.0 rev 39.29 (1992)(commodore)(a1200-a4000)(m10)(disk 2 of 6)(workbench)[!].adf" size="901120" crc="a4d9752d" sha1="e663c92a9c88fa38d02bbb299bea8ce70c56b417" offset="0"/>
24      </dataarea>
25    </part>
26
27    <part name="flop3" interface="floppy_3_5">
28      <feature name="part_id" value="Extras" />
29      <dataarea name="flop" size="901120">
30        <rom name="workbench v3.0 rev 39.29 (1992)(commodore)(a1200-a4000)(m10)(disk 3 of 6)(extras)[!].adf" size="901120" crc="95da642d" sha1="74304711678ebd3287f816ae250b47bd4d8f5195" offset="0"/>
31      </dataarea>
32    </part>
33
34    <part name="flop4" interface="floppy_3_5">
35      <feature name="part_id" value="Storage" />
36      <dataarea name="flop" size="901120">
37        <rom name="workbench v3.0 rev 39.29 (1992)(commodore)(a1200-a4000)(m10)(disk 4 of 6)(storage)[!].adf" size="901120" crc="0c8c24d5" sha1="93cab7cd05471e8fde63cb1d512b048cd593aebc" offset="0"/>
38      </dataarea>
39    </part>
40
41    <part name="flop5" interface="floppy_3_5">
42      <feature name="part_id" value="Locale" />
43      <dataarea name="flop" size="901120">
44        <rom name="workbench v3.0 rev 39.29 (1992)(commodore)(a1200-a4000)(m10)(disk 5 of 6)(locale)[!].adf" size="901120" crc="67835fe5" sha1="00d0670a9060ab7805dc2fa7e2e856b33a828043" offset="0"/>
45      </dataarea>
46    </part>
47
48    <part name="flop6" interface="floppy_3_5">
49      <feature name="part_id" value="Fonts" />
50      <dataarea name="flop" size="901120">
51        <rom name="workbench v3.0 rev 39.29 (1992)(commodore)(a1200-a4000)(m10)(disk 6 of 6)(fonts).adf" size="901120" crc="d7364bb4" sha1="4531651fe34a7f0a2dc1a1523ed4c2507670f5a6" offset="0"/>
52      </dataarea>
53    </part>
54   
55  </software>
56
57</softwarelist>
58
trunk/hash/amigaaga_flop.xml
r0r18734
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!-- General purpose software list for Amiga software requiring the AGA chipset (A1200 / A4000)
5       
6     the software listed here is not designed for use on systems without the AGA chipset and
7     will not function.
8-->
9
10
11
12<softwarelist name="amigaaga_flop" description="Amiga AGA Floppy Disks list">
13
14  <!-- has manual protection -->
15  <software name="pballfna">
16    <description>Pinball Fantasies AGA</description>
17    <year>1993</year>
18    <publisher>21st Century Entertainment</publisher>
19
20    <part name="flop1" interface="floppy_3_5">
21      <feature name="part_id" value="Disk 1" />
22      <dataarea name="flop" size="1049612">
23        <rom name="pinballfantasiesaga_pf1.ipf" size="1049612" crc="60e23065" sha1="0d401004a02c6e8af2532b0180ce42a3725c69ce" offset="0"/>
24      </dataarea>
25    </part>
26
27    <part name="flop2" interface="floppy_3_5">
28      <feature name="part_id" value="Disk 2" />
29      <dataarea name="flop" size="1049612">
30        <rom name="pinballfantasiesaga_pf2.ipf" size="1049612" crc="64e3b549" sha1="44d59c0660170eba8dee54d710cfec1f598a7a90" offset="0"/>
31      </dataarea>
32    </part>
33
34    <part name="flop3" interface="floppy_3_5">
35      <feature name="part_id" value="Disk 3" />
36      <dataarea name="flop" size="1049612">
37        <rom name="pinballfantasiesaga_pf3.ipf" size="1049612" crc="2a0d1c66" sha1="df95ae4ed9bda2d0563958c26fc23fdd5fe6f3d7" offset="0"/>
38      </dataarea>
39    </part>
40
41    <part name="flop4" interface="floppy_3_5">
42      <feature name="part_id" value="Disk 4" />
43      <dataarea name="flop" size="1049612">
44        <rom name="pinballfantasiesaga_pf4.ipf" size="1049612" crc="e5ab9484" sha1="83151b5738844bdc668c80b20dd2d742668063fb" offset="0"/>
45      </dataarea>
46    </part>
47  </software>
48
49  <!-- unprotected -->
50  <software name="pballfnapdy" cloneof="pballfna">
51    <description>Pinball Fantasies AGA (Cracked, PDY)</description>
52    <year>1993</year>
53    <publisher>21st Century Entertainment</publisher>
54
55    <part name="flop1" interface="floppy_3_5">
56      <feature name="part_id" value="Disk 1" />
57      <dataarea name="flop" size="1049612">
58        <rom name="pinball fantasies (1993)(21st century)(aga)(disk 1 of 4)[cr pdy].adf" size="901120" crc="708fc612" sha1="99e24713096bcfc90281e8c0ae4d57c395e66069" offset="0"/>
59      </dataarea>
60    </part>
61
62    <part name="flop2" interface="floppy_3_5">
63      <feature name="part_id" value="Disk 2" />
64      <dataarea name="flop" size="1049612">
65        <rom name="pinball fantasies (1993)(21st century)(aga)(disk 2 of 4).adf" size="901120" crc="eced3e6c" sha1="2f4669459021e0e756975061bf38d55982975281" offset="0"/>
66      </dataarea>
67    </part>
68
69    <part name="flop3" interface="floppy_3_5">
70      <feature name="part_id" value="Disk 3" />
71      <dataarea name="flop" size="1049612">
72        <rom name="pinball fantasies (1993)(21st century)(aga)(disk 3 of 4).adf" size="901120" crc="ff04b00c" sha1="ad12df201dea97987d0455e24fac0459e648da1a" offset="0"/>
73      </dataarea>
74    </part>
75
76    <part name="flop4" interface="floppy_3_5">
77      <feature name="part_id" value="Disk 4" />
78      <dataarea name="flop" size="1049612">
79        <rom name="pinball fantasies (1993)(21st century)(aga)(disk 4 of 4).adf" size="901120" crc="912a609f" sha1="0e6818ceabd9e362a9b15bac9a551d4a017fd536" offset="0"/>
80      </dataarea>
81    </part>
82
83  </software>
84
85
86  <!-- severe gfx problems -->
87  <software name="pballill" supported="no">
88    <description>Pinball Illusions</description>
89    <year>1995</year>
90    <publisher>21st Century Entertainment</publisher>
91
92    <part name="flop1" interface="floppy_3_5">
93      <feature name="part_id" value="Disk 1" />
94      <dataarea name="flop" size="1049612">
95        <rom name="pinballillusions_disk1.ipf" size="1049612" crc="0cf8949b" sha1="8970859b71aefdb13d47c9b16b279f52405dae4c" offset="0"/>
96      </dataarea>
97    </part>
98
99    <part name="flop2" interface="floppy_3_5">
100      <feature name="part_id" value="Disk 2" />
101      <dataarea name="flop" size="1049612">
102        <rom name="pinballillusions_disk2.ipf" size="1049612" crc="93ce1135" sha1="5dad662b278a45e4720043407bbf22c0a9932df5" offset="0"/>
103      </dataarea>
104    </part>
105
106    <part name="flop3" interface="floppy_3_5">
107      <feature name="part_id" value="Disk 3" />
108      <dataarea name="flop" size="1049612">
109        <rom name="pinballillusions_disk3.ipf" size="1049612" crc="282ea51d" sha1="39f78c077ee27f213ff3f07a991ba165212d780f" offset="0"/>
110      </dataarea>
111    </part>
112
113    <part name="flop4" interface="floppy_3_5">
114      <feature name="part_id" value="Disk 4" />
115      <dataarea name="flop" size="1049612">
116        <rom name="pinballillusions_disk4.ipf" size="1049612" crc="e551bc40" sha1="05757f0e6289385df204c2ced4fb0348aa4b39ee" offset="0"/>
117      </dataarea>
118    </part>
119   
120  </software>
121
122    <!-- simple 1 disk game using AGA mode -->
123  <software name="gigertet">
124    <description>Giger-Tetris</description>
125    <year>1993</year>
126    <publisher>Panic Production</publisher>
127
128    <part name="flop1" interface="floppy_3_5">
129      <feature name="part_id" value="Disk 1" />
130      <dataarea name="flop" size="901120">
131        <rom name="giger-tetris (1993)(panic production)(aga)(sw).adf" size="901120" crc="e58911f4" sha1="90d146454db7317e02f428aa24e01296db0ea2d4" offset="0"/>
132      </dataarea>
133    </part>
134  </software>
135
136  <!-- various gfx issues, good test case for bugfixing? -->
137  <software name="dxpacaga" supported="partial">
138    <description>Deluxe Pac-Man v1.7 AGA (1997-04-27)</description>
139    <year>1997</year>
140    <publisher>Edgar Vigdal</publisher>
141
142    <part name="flop1" interface="floppy_3_5">
143      <feature name="part_id" value="Disk 1" />
144      <dataarea name="flop" size="901120">
145        <rom name="deluxe pac-man v1.7 (1997-04-27)(vigdal, edgar)(aga)(sw-r).adf" size="901120" crc="0fb6d45d" sha1="378cb7c11d8f57d812469fcc8db1a1a848e8ce63" offset="0"/>
146      </dataarea>
147    </part>
148  </software>
149
150</softwarelist>
151
152
trunk/hash/pentagon_cass.xml
r0r18734
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!-- Preliminary list.
5
6     This list contains software for the Russian 'Pentagon 128' systems.
7     
8     These systems are Spectrum clones, but offer various extended features.
9     
10     The software listed here will not function correctly (if at all) on a regular Spectrum
11-->
12
13<softwarelist name="pentagon_cass" description="Pentagon (ZX Spectrum clone) cassettes">
14
15   <software name="bouldmix">
16      <description>Boulder Mix (Russia)</description>
17      <year>1996</year>
18      <publisher>Firesoft</publisher>
19      <part name="cass" interface="spectrum_cass">
20         <dataarea name="cass" size="45895">
21            <rom name="boulder mix (19xx)(firesoft)(ru)[pentagon 128].tzx" size="45895" crc="dd36b3bf" sha1="26430d66baaf04c2e7757f23169ffb201190d5c6" offset="0"/>
22         </dataarea>
23      </part>
24   </software>
25 
26</softwarelist>
27
28
29
30
31
32
trunk/src/mess/mess.lst
r18733r18734
654654ami500pln //
655655ami600    // Commodore Amiga 600
656656ami600n   //
657ami1200     // Commodore Amiga 1200
658ami1200n  //
657659cdtv     // Commodore CDTV
658660
659661a3000    // Commodore Amiga 3000
660a1200n   // Commodore Amiga 1200 - NTSC
661a1200p   // Commodore Amiga 1200 - PAL
662
662663cd32     // Commodore Amiga CD32
663664
664665c65      // 1991 C65 / C64DX (Prototype, NTSC)
trunk/src/mess/drivers/ami1200.c
r18733r18734
1/*
2    Amiga 1200
3
4    Preliminary MAME driver by Mariusz Wojcieszek
5    CD-ROM controller by Ernesto Corvi
6    Borrowed by incog for MESS
7
8    2009-05 Fabio Priuli:
9    Amiga 1200 support is just sketched (I basically took cd32 and removed Akiko). I connected
10    the floppy drive in the same way as in amiga.c but it seems to be not working, since I
11    tried to load WB3.1 with no success. However, this problem may be due to anything: maybe
12    the floppy code must be connected elsewhere, or the .adf image is broken, or I made some
13    stupid mistake in the CIA interfaces.
14    Later, it could be wise to re-factor this source and merge the non-AGA code with
15    mess/drivers/amiga.c
16*/
17
18#include "emu.h"
19#include "cpu/m68000/m68000.h"
20#include "machine/6526cia.h"
21#include "machine/i2cmem.h"
22#include "machine/amigafdc.h"
23#include "machine/amigakbd.h"
24
25#include "includes/amiga.h"
26#include "includes/cd32.h"
27
28
29
30class ami1200_state : public amiga_state
31{
32public:
33   ami1200_state(const machine_config &mconfig, device_type type, const char *tag)
34      : amiga_state(mconfig, type, tag) { }
35
36   UINT16 m_potgo_value;
37   int m_cd32_shifter[2];
38   int m_oldstate[2];
39   DECLARE_WRITE32_MEMBER(aga_overlay_w);
40   DECLARE_DRIVER_INIT(a1200);
41   DECLARE_WRITE8_MEMBER(ami1200_cia_0_porta_w);
42   DECLARE_READ8_MEMBER(ami1200_cia_0_portb_r);
43   DECLARE_WRITE8_MEMBER(ami1200_cia_0_portb_w);
44   DECLARE_READ8_MEMBER(a1200_cia_0_portA_r);
45};
46
47
48
49#define A1200PAL_XTAL_X1  XTAL_28_37516MHz
50#define A1200PAL_XTAL_X2  XTAL_4_433619MHz
51
52
53
54static void handle_cd32_joystick_cia(ami1200_state *state, UINT8 pra, UINT8 dra);
55
56WRITE32_MEMBER(ami1200_state::aga_overlay_w)
57{
58   if (ACCESSING_BITS_16_23)
59   {
60      data = (data >> 16) & 1;
61
62      /* switch banks as appropriate */
63      membank("bank1")->set_entry(data & 1);
64
65      /* swap the write handlers between ROM and bank 1 based on the bit */
66      if ((data & 1) == 0)
67         /* overlay disabled, map RAM on 0x000000 */
68         space.install_write_bank(0x000000, 0x1fffff, "bank1");
69      else
70         /* overlay enabled, map Amiga system ROM on 0x000000 */
71         space.unmap_write(0x000000, 0x1fffff);
72   }
73}
74
75/*************************************
76 *
77 *  CIA-A port A access:
78 *
79 *  PA7 = game port 1, pin 6 (fire)
80 *  PA6 = game port 0, pin 6 (fire)
81 *  PA5 = /RDY (disk ready)
82 *  PA4 = /TK0 (disk track 00)
83 *  PA3 = /WPRO (disk write protect)
84 *  PA2 = /CHNG (disk change)
85 *  PA1 = /LED (LED, 0=bright / audio filter control)
86 *  PA0 = MUTE
87 *
88 *************************************/
89
90WRITE8_MEMBER(ami1200_state::ami1200_cia_0_porta_w)
91{
92   device_t *device = machine().device("cia_0");
93
94   /* bit 2 = Power Led on Amiga */
95   set_led_status(machine(), 0, !BIT(data, 1));
96
97   handle_cd32_joystick_cia(this, data, mos6526_r(device, space, 2));
98}
99
100/*************************************
101 *
102 *  CIA-A port B access:
103 *
104 *  PB7 = parallel data 7
105 *  PB6 = parallel data 6
106 *  PB5 = parallel data 5
107 *  PB4 = parallel data 4
108 *  PB3 = parallel data 3
109 *  PB2 = parallel data 2
110 *  PB1 = parallel data 1
111 *  PB0 = parallel data 0
112 *
113 *************************************/
114
115READ8_MEMBER(ami1200_state::ami1200_cia_0_portb_r)
116{
117   /* parallel port */
118   logerror("%s:CIA0_portb_r\n", machine().describe_context());
119   return 0xff;
120}
121
122WRITE8_MEMBER(ami1200_state::ami1200_cia_0_portb_w)
123{
124   /* parallel port */
125   logerror("%s:CIA0_portb_w(%02x)\n", machine().describe_context(), data);
126}
127
128static ADDRESS_MAP_START( a1200_map, AS_PROGRAM, 32, ami1200_state )
129   ADDRESS_MAP_UNMAP_HIGH
130   AM_RANGE(0x000000, 0x1fffff) AM_RAMBANK("bank1") AM_SHARE("chip_ram")
131   AM_RANGE(0xbfa000, 0xbfa003) AM_WRITE(aga_overlay_w)
132   AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE16_LEGACY(amiga_cia_r, amiga_cia_w, 0xffffffff)
133   AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE16_LEGACY(amiga_custom_r, amiga_custom_w, 0xffffffff) AM_SHARE("custom_regs")
134   AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE16_LEGACY(amiga_autoconfig_r, amiga_autoconfig_w, 0xffffffff)
135   AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("user1", 0)   /* Kickstart */
136ADDRESS_MAP_END
137
138
139//int cd32_input_port_val = 0;
140//int cd32_input_select = 0;
141
142static void cd32_potgo_w(running_machine &machine, UINT16 data)
143{
144   ami1200_state *state = machine.driver_data<ami1200_state>();
145   int i;
146
147   state->m_potgo_value = state->m_potgo_value & 0x5500;
148   state->m_potgo_value |= data & 0xaa00;
149
150   for (i = 0; i < 8; i += 2)
151   {
152      UINT16 dir = 0x0200 << i;
153      if (data & dir)
154      {
155         UINT16 d = 0x0100 << i;
156         state->m_potgo_value &= ~d;
157         state->m_potgo_value |= data & d;
158      }
159   }
160   for (i = 0; i < 2; i++)
161   {
162      UINT16 p5dir = 0x0200 << (i * 4); /* output enable P5 */
163      UINT16 p5dat = 0x0100 << (i * 4); /* data P5 */
164      if ((state->m_potgo_value & p5dir) && (state->m_potgo_value & p5dat))
165         state->m_cd32_shifter[i] = 8;
166   }
167}
168
169static void handle_cd32_joystick_cia(ami1200_state *state, UINT8 pra, UINT8 dra)
170{
171   int i;
172
173   for (i = 0; i < 2; i++)
174   {
175      UINT8 but = 0x40 << i;
176      UINT16 p5dir = 0x0200 << (i * 4); /* output enable P5 */
177      UINT16 p5dat = 0x0100 << (i * 4); /* data P5 */
178      if (!(state->m_potgo_value & p5dir) || !(state->m_potgo_value & p5dat))
179      {
180         if ((dra & but) && (pra & but) != state->m_oldstate[i])
181         {
182            if (!(pra & but))
183            {
184               state->m_cd32_shifter[i]--;
185               if (state->m_cd32_shifter[i] < 0)
186                  state->m_cd32_shifter[i] = 0;
187            }
188         }
189      }
190      state->m_oldstate[i] = pra & but;
191   }
192}
193
194
195static INPUT_PORTS_START( a1200 )
196   PORT_START("CIA0PORTA")
197   PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_SPECIAL )
198   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
199   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
200
201   PORT_START("CIA0PORTB")
202   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
203
204   PORT_START("JOY0DAT")
205   PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, ami1200_state,amiga_joystick_convert, "P1JOY")
206   PORT_BIT( 0xfcfc, IP_ACTIVE_HIGH, IPT_UNUSED )
207
208   PORT_START("JOY1DAT")
209   PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, ami1200_state,amiga_joystick_convert, "P2JOY")
210   PORT_BIT( 0xfcfc, IP_ACTIVE_HIGH, IPT_UNUSED )
211
212   PORT_START("POTGO")
213   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED )
214   PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
215   PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNUSED )
216   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
217   PORT_BIT( 0xaaff, IP_ACTIVE_HIGH, IPT_UNUSED )
218
219   PORT_START("P1JOY")
220   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
221   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
222   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
223   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
224
225   PORT_START("P2JOY")
226   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
227   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
228   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
229   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
230
231   PORT_START("P0MOUSEX")
232   PORT_BIT( 0xff, 0x00, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_PLAYER(1)
233
234   PORT_START("P0MOUSEY")
235   PORT_BIT( 0xff, 0x00, IPT_MOUSE_Y) PORT_SENSITIVITY(100) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_PLAYER(1)
236
237   PORT_START("P1MOUSEX")
238   PORT_BIT( 0xff, 0x00, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_PLAYER(2)
239
240   PORT_START("P1MOUSEY")
241   PORT_BIT( 0xff, 0x00, IPT_MOUSE_Y) PORT_SENSITIVITY(100) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_PLAYER(2)
242INPUT_PORTS_END
243
244
245/*************************************
246 *
247 *  Sound definitions
248 *
249 *************************************/
250
251READ8_MEMBER(ami1200_state::a1200_cia_0_portA_r)
252{
253   UINT8 ret = machine().root_device().ioport("CIA0PORTA")->read() & 0xc0;   /* Gameport 1 and 0 buttons */
254   ret |= machine().device<amiga_fdc>("fdc")->ciaapra_r();
255   return ret;
256}
257
258
259static const legacy_mos6526_interface a1200_cia_0_intf =
260{
261   DEVCB_DEVICE_LINE("cia_0", amiga_cia_0_irq),                           /* irq_func */
262   DEVCB_NULL,   /* pc_func */
263   DEVCB_NULL,
264   DEVCB_NULL,
265   DEVCB_DRIVER_MEMBER(ami1200_state,a1200_cia_0_portA_r),
266   DEVCB_DRIVER_MEMBER(ami1200_state,ami1200_cia_0_porta_w),      /* port A */
267   DEVCB_DRIVER_MEMBER(ami1200_state,ami1200_cia_0_portb_r),
268   DEVCB_DRIVER_MEMBER(ami1200_state,ami1200_cia_0_portb_w)      /* port B */
269};
270
271static const legacy_mos6526_interface a1200_cia_1_intf =
272{
273   DEVCB_DEVICE_LINE("cia_1", amiga_cia_1_irq),                           /* irq_func */
274   DEVCB_NULL,   /* pc_func */
275   DEVCB_NULL,
276   DEVCB_NULL,
277   DEVCB_NULL,
278   DEVCB_NULL,                           /* port A */
279   DEVCB_NULL,
280   DEVCB_DEVICE_MEMBER("fdc", amiga_fdc, ciaaprb_w)         /* port B */
281};
282
283static SLOT_INTERFACE_START( amiga_floppies )
284   SLOT_INTERFACE( "35dd", FLOPPY_35_DD )
285SLOT_INTERFACE_END
286
287
288static MACHINE_CONFIG_START( a1200n, ami1200_state )
289
290   /* basic machine hardware */
291   MCFG_CPU_ADD("maincpu", M68EC020, AMIGA_68EC020_NTSC_CLOCK) /* 14.3 Mhz */
292   MCFG_CPU_PROGRAM_MAP(a1200_map)
293
294//  MCFG_CPU_ADD("keyboard_mpu", MC68HC05)
295
296   MCFG_MACHINE_RESET_OVERRIDE(ami1200_state,amiga)
297
298   /* video hardware */
299   MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
300
301   MCFG_SCREEN_ADD("screen", RASTER)
302   MCFG_SCREEN_REFRESH_RATE(59.997)
303   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
304   MCFG_SCREEN_SIZE(512*2, 312)
305   MCFG_SCREEN_VISIBLE_AREA((129-8-8)*2, (449+8-1+8)*2, 44-8, 300+8-1)
306   MCFG_SCREEN_UPDATE_DRIVER(ami1200_state, screen_update_amiga_aga)
307
308   MCFG_VIDEO_START_OVERRIDE(ami1200_state,amiga_aga)
309
310   /* sound hardware */
311   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
312
313   MCFG_SOUND_ADD("amiga", AMIGA, XTAL_28_63636MHz/8)
314   MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
315   MCFG_SOUND_ROUTE(1, "rspeaker", 0.25)
316   MCFG_SOUND_ROUTE(2, "rspeaker", 0.25)
317   MCFG_SOUND_ROUTE(3, "lspeaker", 0.25)
318
319   /* cia */
320   MCFG_LEGACY_MOS8520_ADD("cia_0", AMIGA_68EC020_NTSC_CLOCK / 10, 0, a1200_cia_0_intf)
321   MCFG_LEGACY_MOS8520_ADD("cia_1", AMIGA_68EC020_NTSC_CLOCK / 10, 0, a1200_cia_1_intf)
322
323   /* fdc */
324   MCFG_AMIGA_FDC_ADD("fdc", AMIGA_68EC020_NTSC_CLOCK/2)
325   MCFG_FLOPPY_DRIVE_ADD("fdc:0", amiga_floppies, "35dd", 0, amiga_fdc::floppy_formats)
326   MCFG_FLOPPY_DRIVE_ADD("fdc:1", amiga_floppies, 0,      0, amiga_fdc::floppy_formats)
327   MCFG_FLOPPY_DRIVE_ADD("fdc:2", amiga_floppies, 0,      0, amiga_fdc::floppy_formats)
328   MCFG_FLOPPY_DRIVE_ADD("fdc:3", amiga_floppies, 0,      0, amiga_fdc::floppy_formats)
329
330   MCFG_AMIGA_KEYBOARD_ADD("kbd")
331MACHINE_CONFIG_END
332
333static MACHINE_CONFIG_DERIVED( a1200p, a1200n )
334
335   /* adjust for PAL specs */
336   MCFG_CPU_MODIFY("maincpu")
337   MCFG_CPU_CLOCK(A1200PAL_XTAL_X1/2) /* 14.18758 MHz */
338
339   /* video hardware */
340   MCFG_SCREEN_MODIFY("screen")
341   MCFG_SCREEN_REFRESH_RATE(50)
342
343   /* sound hardware */
344   MCFG_SOUND_MODIFY("amiga")
345   MCFG_SOUND_CLOCK(A1200PAL_XTAL_X1/8) /* 3.546895 MHz */
346
347   /* cia */
348   MCFG_DEVICE_MODIFY("cia_0")
349   MCFG_DEVICE_CLOCK(A1200PAL_XTAL_X1/20)
350   MCFG_DEVICE_MODIFY("cia_1")
351   MCFG_DEVICE_CLOCK(A1200PAL_XTAL_X1/20)
352
353   /* fdc */
354   MCFG_DEVICE_MODIFY("fdc")
355   MCFG_DEVICE_CLOCK(A1200PAL_XTAL_X1/4)
356MACHINE_CONFIG_END
357
358
359/***************************************************************************
360    ROM DEFINITIONS
361***************************************************************************/
362
363ROM_START( a1200n )
364   ROM_REGION32_BE(0x080000, "user1", 0)
365   ROM_DEFAULT_BIOS("kick31")
366   ROM_SYSTEM_BIOS(0, "kick30", "Kickstart 3.0 (39.106)")
367   ROMX_LOAD("391523-01.u6a", 0x000000, 0x040000, CRC(c742a412) SHA1(999eb81c65dfd07a71ee19315d99c7eb858ab186), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(1))
368   ROMX_LOAD("391524-01.u6b", 0x000002, 0x040000, CRC(d55c6ec6) SHA1(3341108d3a402882b5ef9d3b242cbf3c8ab1a3e9), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(1))
369   ROM_SYSTEM_BIOS(1, "kick31", "Kickstart 3.1 (40.068)")
370   ROMX_LOAD("391773-01.u6a", 0x000000, 0x040000, CRC(08dbf275) SHA1(b8800f5f909298109ea69690b1b8523fa22ddb37), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(2))   // ROM_LOAD32_WORD_SWAP!
371   ROMX_LOAD("391774-01.u6b", 0x000002, 0x040000, CRC(16c07bf8) SHA1(90e331be1970b0e53f53a9b0390b51b59b3869c2), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(2))
372
373   // COMMODORE | 391508-01 REV0 | KEYBOARD MPU
374   ROM_REGION(0x1040, "keyboard_rev0", 0)
375   ROM_LOAD("391508-01.u13", 0x0000, 0x1040, NO_DUMP)
376
377   // Amiga Tech REV1 Keyboard MPU
378   ROM_REGION(0x2f40, "keyboard_rev1", 0)
379   ROM_LOAD("391508-02.u13", 0x0000, 0x2f40, NO_DUMP)
380ROM_END
381
382#define rom_a1200p    rom_a1200n
383
384
385/***************************************************************************************************/
386
387DRIVER_INIT_MEMBER(ami1200_state,a1200)
388{
389   static const amiga_machine_interface cd32_intf =
390   {
391      AGA_CHIP_RAM_MASK,
392      NULL, NULL,         /* joy0dat_r & joy1dat_r */
393      cd32_potgo_w,      /* potgo_w */
394      NULL,            /* serdat_w */
395      NULL,            /* scanline0_callback */
396      NULL,            /* reset_callback */
397      NULL,            /* nmi_callback */
398      FLAGS_AGA_CHIPSET   /* flags */
399   };
400
401   /* configure our Amiga setup */
402   amiga_machine_config(machine(), &cd32_intf);
403
404   /* set up memory */
405   membank("bank1")->configure_entry(0, m_chip_ram);
406   membank("bank1")->configure_entry(1, machine().root_device().memregion("user1")->base());
407}
408
409
410/***************************************************************************************************/
411
412/*    YEAR  NAME     PARENT   COMPAT  MACHINE INPUT   INIT      COMPANY       FULLNAME */
413COMP( 1992, a1200n,  0,       0,      a1200n, a1200, ami1200_state,  a1200,  "Commodore Business Machines",  "Amiga 1200 (NTSC)" , GAME_NOT_WORKING )
414COMP( 1992, a1200p,  a1200n,  0,      a1200p, a1200, ami1200_state,  a1200,  "Commodore Business Machines",  "Amiga 1200 (PAL)" , GAME_NOT_WORKING  )
trunk/src/mess/drivers/pentagon.c
r18733r18734
154154   GFXDECODE_ENTRY( "maincpu", 0x17d00, spectrum_charlayout, 0, 8 )
155155GFXDECODE_END
156156
157
158
157159static MACHINE_CONFIG_DERIVED_CLASS( pentagon, spectrum_128, pentagon_state )
158160   MCFG_CPU_MODIFY("maincpu")
159161   MCFG_CPU_IO_MAP(pentagon_io)
r18733r18734
161163
162164   MCFG_BETA_DISK_ADD(BETA_DISK_TAG)
163165   MCFG_GFXDECODE(pentagon)
166
167   MCFG_SOFTWARE_LIST_ADD("cass_list_pen","pentagon_cass")
164168MACHINE_CONFIG_END
165169
166170static MACHINE_CONFIG_DERIVED( pent1024, pentagon)
trunk/src/mess/drivers/amiga.c
r18733r18734
1515would commence ($C00000).
1616
1717***************************************************************************/
18/*
19    Amiga 1200
1820
21    Preliminary MAME driver by Mariusz Wojcieszek
22    CD-ROM controller by Ernesto Corvi
23    Borrowed by incog for MESS
24
25    2009-05 Fabio Priuli:
26    Amiga 1200 support is just sketched (I basically took cd32 and removed Akiko). I connected
27    the floppy drive in the same way as in amiga.c but it seems to be not working, since I
28    tried to load WB3.1 with no success. However, this problem may be due to anything: maybe
29    the floppy code must be connected elsewhere, or the .adf image is broken, or I made some
30    stupid mistake in the CIA interfaces.
31    Later, it could be wise to re-factor this source and merge the non-AGA code with
32    mess/drivers/amiga.c
33*/
34
35
36
37
38
39
40
41
42
43
1944/* Core includes */
2045#include "emu.h"
2146#include "includes/amiga.h"
47#include "includes/cd32.h"
2248
2349/* Components */
2450#include "cpu/m68000/m68000.h"
r18733r18734
3359#include "machine/ctronics.h"
3460#include "machine/nvram.h"
3561#include "sound/cdda.h"
62#include "machine/i2cmem.h"
3663
3764/* Devices */
3865#include "imagedev/chd_cd.h"
r18733r18734
4875   DECLARE_MACHINE_RESET(cdtv);
4976};
5077
78
79
80class ami1200_state : public amiga_state
81{
82public:
83   ami1200_state(const machine_config &mconfig, device_type type, const char *tag)
84      : amiga_state(mconfig, type, tag) { }
85
86   UINT16 m_potgo_value;
87   int m_cd32_shifter[2];
88   int m_oldstate[2];
89   DECLARE_WRITE32_MEMBER(aga_overlay_w);
90   DECLARE_DRIVER_INIT(a1200);
91   DECLARE_WRITE8_MEMBER(ami1200_cia_0_porta_w);
92   DECLARE_READ8_MEMBER(ami1200_cia_0_portb_r);
93   DECLARE_WRITE8_MEMBER(ami1200_cia_0_portb_w);
94   DECLARE_READ8_MEMBER(a1200_cia_0_portA_r);
95};
96
97
98
99#define A1200PAL_XTAL_X1  XTAL_28_37516MHz
100#define A1200PAL_XTAL_X2  XTAL_4_433619MHz
101
102
103
104
51105static DECLARE_READ8_DEVICE_HANDLER( amiga_cia_0_portA_r );
52106static DECLARE_READ8_DEVICE_HANDLER( amiga_cia_0_cdtv_portA_r );
53107static DECLARE_WRITE8_DEVICE_HANDLER( amiga_cia_0_portA_w );
r18733r18734
112166   AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("user1", 0)   /* System ROM - mirror */
113167ADDRESS_MAP_END
114168
169static ADDRESS_MAP_START( a1200_map, AS_PROGRAM, 32, ami1200_state )
170   ADDRESS_MAP_UNMAP_HIGH
171   AM_RANGE(0x000000, 0x1fffff) AM_RAMBANK("bank1") AM_SHARE("chip_ram")
172   AM_RANGE(0xbfa000, 0xbfa003) AM_WRITE(aga_overlay_w)
173   AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE16_LEGACY(amiga_cia_r, amiga_cia_w, 0xffffffff)
174   AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE16_LEGACY(amiga_custom_r, amiga_custom_w, 0xffffffff) AM_SHARE("custom_regs")
175   AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE16_LEGACY(amiga_autoconfig_r, amiga_autoconfig_w, 0xffffffff)
176   AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("user1", 0)   /* Kickstart */
177ADDRESS_MAP_END
178
179
115180static ADDRESS_MAP_START(keyboard_mem, AS_PROGRAM, 8, amiga_state )
116181   AM_RANGE(0x0000, 0x003f) AM_RAM /* internal user ram */
117182   AM_RANGE(0x0040, 0x007f) AM_NOP /* unassigned */
r18733r18734
269334   PORT_INCLUDE( amiga_common )
270335INPUT_PORTS_END
271336
337
272338/***************************************************************************
273339  Machine drivers
274340***************************************************************************/
275341
342
343static void handle_cd32_joystick_cia(ami1200_state *state, UINT8 pra, UINT8 dra);
344
345WRITE32_MEMBER(ami1200_state::aga_overlay_w)
346{
347   if (ACCESSING_BITS_16_23)
348   {
349      data = (data >> 16) & 1;
350
351      /* switch banks as appropriate */
352      membank("bank1")->set_entry(data & 1);
353
354      /* swap the write handlers between ROM and bank 1 based on the bit */
355      if ((data & 1) == 0)
356         /* overlay disabled, map RAM on 0x000000 */
357         space.install_write_bank(0x000000, 0x1fffff, "bank1");
358      else
359         /* overlay enabled, map Amiga system ROM on 0x000000 */
360         space.unmap_write(0x000000, 0x1fffff);
361   }
362}
363
364/*************************************
365 *
366 *  CIA-A port A access:
367 *
368 *  PA7 = game port 1, pin 6 (fire)
369 *  PA6 = game port 0, pin 6 (fire)
370 *  PA5 = /RDY (disk ready)
371 *  PA4 = /TK0 (disk track 00)
372 *  PA3 = /WPRO (disk write protect)
373 *  PA2 = /CHNG (disk change)
374 *  PA1 = /LED (LED, 0=bright / audio filter control)
375 *  PA0 = MUTE
376 *
377 *************************************/
378
379WRITE8_MEMBER(ami1200_state::ami1200_cia_0_porta_w)
380{
381   device_t *device = machine().device("cia_0");
382
383   /* bit 2 = Power Led on Amiga */
384   set_led_status(machine(), 0, !BIT(data, 1));
385
386   handle_cd32_joystick_cia(this, data, mos6526_r(device, space, 2));
387}
388
389/*************************************
390 *
391 *  CIA-A port B access:
392 *
393 *  PB7 = parallel data 7
394 *  PB6 = parallel data 6
395 *  PB5 = parallel data 5
396 *  PB4 = parallel data 4
397 *  PB3 = parallel data 3
398 *  PB2 = parallel data 2
399 *  PB1 = parallel data 1
400 *  PB0 = parallel data 0
401 *
402 *************************************/
403
404
405
406
407//int cd32_input_port_val = 0;
408//int cd32_input_select = 0;
409#if 0
410static void cd32_potgo_w(running_machine &machine, UINT16 data)
411{
412   ami1200_state *state = machine.driver_data<ami1200_state>();
413   int i;
414
415   state->m_potgo_value = state->m_potgo_value & 0x5500;
416   state->m_potgo_value |= data & 0xaa00;
417
418   for (i = 0; i < 8; i += 2)
419   {
420      UINT16 dir = 0x0200 << i;
421      if (data & dir)
422      {
423         UINT16 d = 0x0100 << i;
424         state->m_potgo_value &= ~d;
425         state->m_potgo_value |= data & d;
426      }
427   }
428   for (i = 0; i < 2; i++)
429   {
430      UINT16 p5dir = 0x0200 << (i * 4); /* output enable P5 */
431      UINT16 p5dat = 0x0100 << (i * 4); /* data P5 */
432      if ((state->m_potgo_value & p5dir) && (state->m_potgo_value & p5dat))
433         state->m_cd32_shifter[i] = 8;
434   }
435}
436#endif
437
438static void handle_cd32_joystick_cia(ami1200_state *state, UINT8 pra, UINT8 dra)
439{
440   int i;
441
442   for (i = 0; i < 2; i++)
443   {
444      UINT8 but = 0x40 << i;
445      UINT16 p5dir = 0x0200 << (i * 4); /* output enable P5 */
446      UINT16 p5dat = 0x0100 << (i * 4); /* data P5 */
447      if (!(state->m_potgo_value & p5dir) || !(state->m_potgo_value & p5dat))
448      {
449         if ((dra & but) && (pra & but) != state->m_oldstate[i])
450         {
451            if (!(pra & but))
452            {
453               state->m_cd32_shifter[i]--;
454               if (state->m_cd32_shifter[i] < 0)
455                  state->m_cd32_shifter[i] = 0;
456            }
457         }
458      }
459      state->m_oldstate[i] = pra & but;
460   }
461}
462
463
464
465READ8_MEMBER(ami1200_state::ami1200_cia_0_portb_r)
466{
467   /* parallel port */
468   logerror("%s:CIA0_portb_r\n", machine().describe_context());
469   return 0xff;
470}
471
472WRITE8_MEMBER(ami1200_state::ami1200_cia_0_portb_w)
473{
474   /* parallel port */
475   logerror("%s:CIA0_portb_w(%02x)\n", machine().describe_context(), data);
476}
477
478
479
276480MACHINE_START_MEMBER(cdtv_state,cdtv)
277481{
278482   MACHINE_START_CALL_LEGACY( amigacd );
r18733r18734
360564   DEVCB_NULL
361565};
362566
567READ8_MEMBER(ami1200_state::a1200_cia_0_portA_r)
568{
569   UINT8 ret = machine().root_device().ioport("CIA0PORTA")->read() & 0xc0;   /* Gameport 1 and 0 buttons */
570   ret |= machine().device<amiga_fdc>("fdc")->ciaapra_r();
571   return ret;
572}
573
574
575static const legacy_mos6526_interface a1200_cia_0_intf =
576{
577   DEVCB_DEVICE_LINE("cia_0", amiga_cia_0_irq),                           /* irq_func */
578   DEVCB_NULL,   /* pc_func */
579   DEVCB_NULL,
580   DEVCB_NULL,
581   DEVCB_DRIVER_MEMBER(ami1200_state,a1200_cia_0_portA_r),
582   DEVCB_DRIVER_MEMBER(ami1200_state,ami1200_cia_0_porta_w),      /* port A */
583   DEVCB_DRIVER_MEMBER(ami1200_state,ami1200_cia_0_portb_r),
584   DEVCB_DRIVER_MEMBER(ami1200_state,ami1200_cia_0_portb_w)      /* port B */
585};
586
587static const legacy_mos6526_interface a1200_cia_1_intf =
588{
589   DEVCB_DEVICE_LINE("cia_1", amiga_cia_1_irq),                           /* irq_func */
590   DEVCB_NULL,   /* pc_func */
591   DEVCB_NULL,
592   DEVCB_NULL,
593   DEVCB_NULL,
594   DEVCB_NULL,                           /* port A */
595   DEVCB_NULL,
596   DEVCB_DEVICE_MEMBER("fdc", amiga_fdc, ciaaprb_w)         /* port B */
597};
598
599
363600static SLOT_INTERFACE_START( amiga_floppies )
364601   SLOT_INTERFACE( "35dd", FLOPPY_35_DD )
365602SLOT_INTERFACE_END
r18733r18734
559796MACHINE_CONFIG_END
560797
561798
799
800static MACHINE_CONFIG_START( a1200n, ami1200_state )
801
802   /* basic machine hardware */
803   MCFG_CPU_ADD("maincpu", M68EC020, AMIGA_68EC020_NTSC_CLOCK) /* 14.3 Mhz */
804   MCFG_CPU_PROGRAM_MAP(a1200_map)
805
806   MCFG_CPU_ADD("keyboard", M6502, XTAL_1MHz) /* 1 MHz? */
807   MCFG_CPU_PROGRAM_MAP(keyboard_mem)
808   MCFG_DEVICE_DISABLE()
809
810   MCFG_MACHINE_RESET_OVERRIDE(amiga_state, amiga )
811
812   MCFG_SCREEN_ADD("screen", RASTER)
813   MCFG_SCREEN_REFRESH_RATE(59.997)
814   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
815   MCFG_SCREEN_SIZE(512*2, 312)
816   MCFG_SCREEN_VISIBLE_AREA((129-8-8)*2, (449+8-1+8)*2, 44-8, 300+8-1)
817   MCFG_SCREEN_UPDATE_DRIVER(ami1200_state, screen_update_amiga_aga)
818
819   MCFG_VIDEO_START_OVERRIDE(ami1200_state,amiga_aga)
820
821
822   MCFG_PALETTE_LENGTH(4096)
823   MCFG_PALETTE_INIT_OVERRIDE(amiga_state, amiga )
824
825   MCFG_VIDEO_START_OVERRIDE(amiga_state,amiga)
826
827   /* devices */
828   MCFG_MSM6242_ADD("rtc",amiga_rtc_intf)
829   MCFG_CENTRONICS_PRINTER_ADD("centronics", amiga_centronics_config)
830
831   /* sound hardware */
832   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
833
834   MCFG_SOUND_ADD("amiga", AMIGA, 3579545)
835   MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
836   MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
837   MCFG_SOUND_ROUTE(2, "rspeaker", 0.50)
838   MCFG_SOUND_ROUTE(3, "lspeaker", 0.50)
839
840   /* cia */
841   MCFG_LEGACY_MOS8520_ADD("cia_0", AMIGA_68EC020_NTSC_CLOCK /2 / 10, 60, cia_0_ntsc_intf)
842   MCFG_LEGACY_MOS8520_ADD("cia_1", AMIGA_68EC020_NTSC_CLOCK /2, 0, cia_1_intf)
843
844   /* fdc */
845   MCFG_AMIGA_FDC_ADD("fdc", AMIGA_68EC020_NTSC_CLOCK / 2)
846   MCFG_FLOPPY_DRIVE_ADD("fdc:0", amiga_floppies, "35dd", 0, amiga_fdc::floppy_formats)
847   MCFG_FLOPPY_DRIVE_ADD("fdc:1", amiga_floppies, 0,      0, amiga_fdc::floppy_formats)
848   MCFG_FLOPPY_DRIVE_ADD("fdc:2", amiga_floppies, 0,      0, amiga_fdc::floppy_formats)
849   MCFG_FLOPPY_DRIVE_ADD("fdc:3", amiga_floppies, 0,      0, amiga_fdc::floppy_formats)
850
851   MCFG_AMIGA_KEYBOARD_ADD("kbd")
852
853   MCFG_SOFTWARE_LIST_ADD("flop_common","amiga_flop")
854   MCFG_SOFTWARE_LIST_ADD("flop_list","amiga1200_flop")
855   MCFG_SOFTWARE_LIST_ADD("flop_aga","amigaaga_flop")
856
857
858MACHINE_CONFIG_END
859
860
861static MACHINE_CONFIG_DERIVED( a1200, a1200n )
862
863   /* adjust for PAL specs */
864   MCFG_CPU_MODIFY("maincpu")
865   MCFG_CPU_CLOCK(AMIGA_68EC020_PAL_CLOCK) /* 14.18758 MHz */
866
867   /* video hardware */
868   MCFG_SCREEN_MODIFY("screen")
869   MCFG_SCREEN_REFRESH_RATE(50)
870
871   /* sound hardware */
872   MCFG_SOUND_MODIFY("amiga")
873   MCFG_SOUND_CLOCK(AMIGA_68EC020_PAL_CLOCK/8) /* 3.546895 MHz */
874
875   /* cia */
876   MCFG_DEVICE_MODIFY("cia_0")
877   MCFG_DEVICE_CLOCK(AMIGA_68EC020_PAL_CLOCK/10/2)
878   MCFG_DEVICE_MODIFY("cia_1")
879   MCFG_DEVICE_CLOCK(AMIGA_68EC020_PAL_CLOCK/2)
880
881   /* fdc */
882   MCFG_DEVICE_MODIFY("fdc")
883   MCFG_DEVICE_CLOCK(AMIGA_68EC020_PAL_CLOCK/2)
884MACHINE_CONFIG_END
885
886
562887/***************************************************************************
563888
564889  Amiga specific stuff
r18733r18734
6751000   amiga_cart_init(machine());
6761001}
6771002
678#ifdef UNUSED_FUNCTION
679DRIVER_INIT_MEMBER(apollo_state,amiga_ecs)
1003
1004
1005DRIVER_INIT_MEMBER(amiga_state,cdtv)
6801006{
6811007   static const amiga_machine_interface amiga_intf =
6821008   {
6831009      ECS_CHIP_RAM_MASK,
684      amiga_cia_0_portA_r, NULL,               /* CIA0 port A & B read */
685      amiga_cia_0_portA_w, NULL,               /* CIA0 port A & B write */
686      NULL, NULL,                              /* CIA1 port A & B read */
687      NULL, amiga_fdc_control_w,               /* CIA1 port A & B write */
6881010      amiga_read_joy0dat,   amiga_read_joy1dat,  /* joy0dat_r & joy1dat_r */
6891011      NULL,                                    /* potgo_w */
6901012      NULL,                                    /* serdat_w */
6911013      NULL,                                    /* scanline0_callback */
692      amiga_reset,                             /* reset_callback */
693      amiga_cart_nmi,                          /* nmi_callback */
1014      NULL,                                    /* reset_callback */
1015      NULL,                                    /* nmi_callback */
6941016      0                                        /* flags */
6951017   };
6961018
6971019   amiga_machine_config(machine(), &amiga_intf);
6981020
6991021   /* set up memory */
700   1.root_device().membank(0)->configure_entries(1, m_chip_ram, 0);
701   1.root_device().membank(1)->configure_entries(1, machine().root_device().memregion("user1")->base(), 0);
702
703   /* initialize Action Replay (if present) */
704   amiga_cart_init(machine());
1022   membank("bank1")->configure_entry(0, m_chip_ram);
1023   membank("bank1")->configure_entry(1, machine().root_device().memregion("user1")->base());
7051024}
706#endif
7071025
708DRIVER_INIT_MEMBER(amiga_state,cdtv)
1026DRIVER_INIT_MEMBER(ami1200_state,a1200)
7091027{
710   static const amiga_machine_interface amiga_intf =
1028   static const amiga_machine_interface cd32_intf =
7111029   {
712      ECS_CHIP_RAM_MASK,
1030      AGA_CHIP_RAM_MASK,
7131031      amiga_read_joy0dat,   amiga_read_joy1dat,  /* joy0dat_r & joy1dat_r */
714      NULL,                                    /* potgo_w */
715      NULL,                                    /* serdat_w */
716      NULL,                                    /* scanline0_callback */
717      NULL,                                    /* reset_callback */
718      NULL,                                    /* nmi_callback */
719      0                                        /* flags */
1032      NULL,            /* potgo_w */
1033      NULL,            /* serdat_w */
1034      NULL,            /* scanline0_callback */
1035      NULL,            /* reset_callback */
1036      NULL,            /* nmi_callback */
1037      FLAGS_AGA_CHIPSET   /* flags */
7201038   };
7211039
722   amiga_machine_config(machine(), &amiga_intf);
1040   /* configure our Amiga setup */
1041   amiga_machine_config(machine(), &cd32_intf);
7231042
7241043   /* set up memory */
7251044   membank("bank1")->configure_entry(0, m_chip_ram);
r18733r18734
8161135#define rom_ami600n    rom_ami600
8171136
8181137
1138ROM_START( ami1200 )
1139   ROM_REGION32_BE(0x080000, "user1", 0)
1140   ROM_DEFAULT_BIOS("kick31")
1141   ROM_SYSTEM_BIOS(0, "kick30", "Kickstart 3.0 (39.106)")
1142   ROMX_LOAD("391523-01.u6a", 0x000000, 0x040000, CRC(c742a412) SHA1(999eb81c65dfd07a71ee19315d99c7eb858ab186), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(1))
1143   ROMX_LOAD("391524-01.u6b", 0x000002, 0x040000, CRC(d55c6ec6) SHA1(3341108d3a402882b5ef9d3b242cbf3c8ab1a3e9), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(1))
1144//   ROMX_LOAD("kickstart v3.0 r39.106 (1992)(commodore)(a1200)[!].rom", 0x000000, 0x080000, CRC(6c9b07d2) SHA1(70033828182fffc7ed106e5373a8b89dda76faa5), ROM_BIOS(1))
8191145
1146   ROM_SYSTEM_BIOS(1, "kick31", "Kickstart 3.1 (40.068)")
1147   ROMX_LOAD("391773-01.u6a", 0x000000, 0x040000, CRC(08dbf275) SHA1(b8800f5f909298109ea69690b1b8523fa22ddb37), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(2))
1148   ROMX_LOAD("391774-01.u6b", 0x000002, 0x040000, CRC(16c07bf8) SHA1(90e331be1970b0e53f53a9b0390b51b59b3869c2), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(2))
1149
1150   // COMMODORE | 391508-01 REV0 | KEYBOARD MPU
1151   ROM_REGION(0x1040, "keyboard", 0)
1152   ROM_LOAD("391508-01.u13", 0x0000, 0x1040, NO_DUMP)
1153
1154   // Amiga Tech REV1 Keyboard MPU
1155   ROM_REGION(0x2f40, "keyboard_rev1", 0)
1156   ROM_LOAD("391508-02.u13", 0x0000, 0x2f40, NO_DUMP)
1157ROM_END
1158
1159#define rom_ami1200n    rom_ami1200
1160
1161
1162
8201163ROM_START( cdtv )
8211164   ROM_REGION16_BE(0x100000, "user1", 0)
8221165   ROM_LOAD16_BYTE("391008-01.u34", 0x000000, 0x020000, CRC(791cb14b) SHA1(277a1778924496353ffe56be68063d2a334360e4))
r18733r18734
8651208COMP( 1992, ami600,    0,        0,      ami600,      amiga, amiga_state,  amiga,  "Commodore Business Machines",  "Amiga 600 (PAL, ECS)",  GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
8661209COMP( 1992, ami600n,   ami600,   0,      ami600n,     amiga, amiga_state,  amiga,  "Commodore Business Machines",  "Amiga 600 (NTSC, ECS)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
8671210
868/* Amiga 1200 - see ami1200.c */
1211COMP( 1992, ami1200,   0,        0,      a1200,  amiga, ami1200_state,  a1200,  "Commodore Business Machines",  "Amiga 1200 (PAL, AGA)" , GAME_NOT_WORKING  )
1212COMP( 1992, ami1200n,  ami1200,  0,      a1200n, amiga, ami1200_state,  a1200,  "Commodore Business Machines",  "Amiga 1200 (NTSC, AGA)" , GAME_NOT_WORKING )
8691213
8701214
8711215COMP( 1991, cdtv,   0,      0,      cdtv,   cdtv, amiga_state,   cdtv,   "Commodore Business Machines",  "CDTV (NTSC)",           GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
8721216
8731217/* CD32 - see cd32.c */
1218
1219
trunk/src/mess/mess.mak
r18733r18734
613613   $(MESS_MACHINE)/amigakbd.o   \
614614   $(MESS_DRIVERS)/amiga.o      \
615615   $(MESS_DRIVERS)/a3000.o      \
616   $(MESS_DRIVERS)/ami1200.o   \
617616
618617$(MESSOBJ)/amstrad.a:         \
619618   $(MESS_DRIVERS)/amstrad.o   \

Previous 199869 Revisions Next


© 1997-2024 The MAME Team