Previous 199869 Revisions Next

r18117 Monday 24th September, 2012 at 15:48:18 UTC by Curt Coder
(MESS) cbm2: Address decoding WIP, added floppy softlists, added PAL P500. (nw)
[hash]cbm2_cart.xml cbm2_flop.xml* p500_flop.xml*
[src/mess]mess.lst
[src/mess/drivers]cbm2.c
[src/mess/includes]cbm2.h

trunk/hash/p500_flop.xml
r0r18117
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3<softwarelist name="p500_flop" description="Commodore P500 diskettes">
4   
5   <software name="burnin">
6      <description>Factory Burn In Diagnostics for P500</description>
7      <year>1983</year>
8      <publisher>Commodore</publisher>
9
10      <part name="flop" interface="floppy_5_25">
11         <dataarea name="flop" size="533248">
12            <rom name="p500-burnin.d80" size="533248" crc="e49b3b21" sha1="5255fc8faa361c6ee67b86b09b1f98a4f162ba87" offset="0" />
13         </dataarea>
14      </part>
15   </software>
16
17</softwarelist>
trunk/hash/cbm2_cart.xml
r18116r18117
7676      </part>
7777   </software>
7878
79   <software name="vt52">
80      <description>VT52 Emulator</description>
81      <year>1986</year>
82      <publisher>&lt;unknown&gt;</publisher>
83     
84      <part name="cart" interface="cbm2_cart">
85         <dataarea name="bank2" size="0x2000">
86            <rom name="vt52emu.bin" size="0x2000" crc="b3b6173a" sha1="dd4a412a1a6ce4272b02d731364dd6dc96a4570b" offset="0" />
87         </dataarea>
88      </part>
89   </software>
90
7991</softwarelist>
trunk/hash/cbm2_flop.xml
r0r18117
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3<softwarelist name="cbm2_flop" description="Commodore CBM-II diskettes">
4   
5   <software name="burnin">
6      <description>Factory Burn In Diagnostics for B Series</description>
7      <year>1983</year>
8      <publisher>Commodore</publisher>
9
10      <part name="flop" interface="floppy_5_25">
11         <dataarea name="flop" size="533248">
12            <rom name="cbm2-burnin.d80" size="533248" crc="b716a2af" sha1="b9c12437a178a574675168ec3f751afc7d24b638" offset="0" />
13         </dataarea>
14      </part>
15   </software>
16   
17   <software name="termv2">
18      <description>Terminal Version 2.0 for B Series</description>
19      <year>1983</year>
20      <publisher>Commodore</publisher>
21
22      <part name="flop" interface="floppy_5_25">
23         <dataarea name="flop" size="533248">
24            <rom name="cbmtermv2.d80" size="533248" crc="cd0d4cd4" sha1="e0064bfe4576171cf852cb0bf4b61630a653529a" offset="0" />
25         </dataarea>
26      </part>
27   </software>
28
29   <software name="b700demo">
30      <description>B700 Demo (UK)</description>
31      <year>1983</year>
32      <publisher>Commodore</publisher>
33
34      <part name="flop" interface="floppy_5_25">
35         <dataarea name="flop" size="533248">
36            <rom name="ukb700-demo.d80" size="533248" crc="dc7f9f48" sha1="b1778b7d8e8c2f1749ec05485b01878e4271b4f9" offset="0" />
37         </dataarea>
38      </part>
39   </software>
40
41</softwarelist>
trunk/src/mess/includes/cbm2.h
r18116r18117
5959        m_buffer_ram(*this, "buffer_ram"),
6060        m_dramon(1),
6161        m_video_ram(*this, "video_ram"),
62        m_video_ram_size(0x800),
63        m_graphics(1),
6264        m_todclk(0),
6365        m_tpi1_irq(CLEAR_LINE),
6466        m_cass_rd(1),
r18116r18117
9092   DECLARE_MACHINE_START( cbm2_pal );
9193   DECLARE_MACHINE_RESET( cbm2 );
9294
93   virtual void read_pla(offs_t offset, int busy2, int eras, int ecas, int refen, int cas, int ras, int *casseg1, int *casseg2, int *casseg3, int *casseg4);
95   virtual void read_pla(offs_t offset, int ras, int cas, int refen, int eras, int ecas, int busy2,
96      int *casseg1, int *casseg2, int *casseg3, int *casseg4, int *rasseg1, int *rasseg2, int *rasseg3, int *rasseg4);
9497
9598   void bankswitch(offs_t offset, int busy2, int eras, int ecas, int refen, int cas, int ras, int *sysioen, int *dramen,
9699      int *casseg1, int *casseg2, int *casseg3, int *casseg4, int *buframcs, int *extbufcs, int *vidramcs,
r18116r18117
161164      : cbm2_state(mconfig, type, tag)
162165   { }
163166
164   virtual void read_pla(offs_t offset, int busy2, int eras, int ecas, int refen, int cas, int ras, int *casseg1, int *casseg2, int *casseg3, int *casseg4);
167   virtual void read_pla(offs_t offset, int ras, int cas, int refen, int eras, int ecas, int busy2,
168      int *casseg1, int *casseg2, int *casseg3, int *casseg4, int *rasseg1, int *rasseg2, int *rasseg3, int *rasseg4);
165169
166170   DECLARE_READ8_MEMBER( tpi2_pc_r );
167171};
r18116r18117
185189   required_device<mos6566_device> m_vic;
186190
187191   DECLARE_MACHINE_START( p500 );
192   DECLARE_MACHINE_START( p500_ntsc );
193   DECLARE_MACHINE_START( p500_pal );
188194   DECLARE_MACHINE_RESET( p500 );
189195
196   void read_pla1(offs_t offset, int bras, int busy2, int sphi2, int clrnibcsb, int procvid, int refen, int ba, int aec, int srw,
197      int *datxen, int *dramxen, int *clrniben, int *segf, int *_64kcasen, int *casenb, int *viddaten, int *viddat_tr);
198   
199   void read_pla2(offs_t offset, offs_t va, int ba, int sphi2, int vicen, int ae, int segf, int bcas, int bank0,
200      int *clrnibcsb, int *extbufcs, int *discromcs, int *buframcs, int *charomcs, int *procvid, int *viccs, int *vidmatcs);
201
190202   void bankswitch(offs_t offset, offs_t va, int srw, int sphi0, int sphi1, int sphi2, int ba, int ae, int bras, int bcas, int busy2, int refen,
191203      int *datxen, int *dramxen, int *clrniben, int *_64kcasen, int *casenb, int *viddaten, int *viddat_tr,
192204      int *clrnibcs, int *extbufcs, int *discromcs, int *buframcs, int *charomcs, int *viccs, int *vidmatcs,
193205      int *csbank1, int *csbank2, int *csbank3, int *basiclocs, int *basichics, int *kernalcs,
194206      int *cs1, int *sidcs, int *extprtcs, int *ciacs, int *aciacs, int *tript1cs, int *tript2cs, int *aec, int *vsysaden);
195   UINT8 read_memory(address_space &space, offs_t offset, offs_t va, int sphi0, int sphi1, int sphi2, int ba, int ae, int bras, int bcas);
207   
208   UINT8 read_memory(address_space &space, offs_t offset, offs_t va, int sphi0, int sphi1, int sphi2, int ba, int ae, int bras, int bcas, UINT8 *clrnib);
196209   void write_memory(address_space &space, offs_t offset, UINT8 data, int sphi0, int sphi1, int sphi2, int ba, int ae, int bras, int bcas);
197210
198211   DECLARE_READ8_MEMBER( read );
trunk/src/mess/mess.lst
r18116r18117
620620cbm720   // Commodore CBM 720
621621cbm720sw  // Commodore CBM 720 (Sweden / Finland)
622622cbm730
623p500     // Commodore P500 (proto, a.k.a. C128-40, PET-II)
623p500n     // Commodore P500 (proto, a.k.a. C128-40, PET-II)
624p500p
624625
625626c264
626627plus4n
trunk/src/mess/drivers/cbm2.c
r18116r18117
22
33    TODO:
44
5   - foreign keyboard inputs
5   - basic does not work
6   - shift lock
7   - Hungarian keyboard
68   - cbm620hu charom banking?
7   - read VIC video RAM thru PLA
8   - read VIC color RAM thru PLA
9   - read VIC video/color RAM thru PLA (Sphi2 = 1, AE = 0)
910   - user port
1011   - co-processor bus
1112
r18116r18117
3940//**************************************************************************
4041
4142//-------------------------------------------------
42//  read_pla -
43//  read_pla - low profile PLA read
4344//-------------------------------------------------
4445
45void cbm2_state::read_pla(offs_t offset, int busy2, int eras, int ecas, int refen, int cas, int ras, int *casseg1, int *casseg2, int *casseg3, int *casseg4)
46void cbm2_state::read_pla(offs_t offset, int ras, int cas, int refen, int eras, int ecas, int busy2,
47   int *casseg1, int *casseg2, int *casseg3, int *casseg4, int *rasseg1, int *rasseg2, int *rasseg3, int *rasseg4)
4648{
4749   UINT32 input = P0 << 15 | P1 << 14 | P2 << 13 | P3 << 12 | busy2 << 11 | eras << 10 | ecas << 9 | refen << 8 | cas << 7 | ras << 6;
4850   UINT32 data = m_pla1->read(input);
4951
5052   *casseg1 = BIT(data, 0);
51   //*rasseg1 = BIT(data, 1);
52   //*rasseg2 = BIT(data, 2);
53   *rasseg1 = BIT(data, 1);
54   *rasseg2 = BIT(data, 2);
5355   *casseg2 = BIT(data, 3);
54   //*rasseg4 = BIT(data, 4);
56   *rasseg4 = BIT(data, 4);
5557   *casseg4 = BIT(data, 5);
5658   *casseg3 = BIT(data, 6);
57   //*rasseg3 = BIT(data, 7);
59   *rasseg3 = BIT(data, 7);
5860}
5961
60void cbm2hp_state::read_pla(offs_t offset, int busy2, int eras, int ecas, int refen, int cas, int ras, int *casseg1, int *casseg2, int *casseg3, int *casseg4)
62
63//-------------------------------------------------
64//  read_pla - high profile PLA read
65//-------------------------------------------------
66
67void cbm2hp_state::read_pla(offs_t offset, int ras, int cas, int refen, int eras, int ecas, int busy2,
68   int *casseg1, int *casseg2, int *casseg3, int *casseg4, int *rasseg1, int *rasseg2, int *rasseg3, int *rasseg4)
6169{
6270   UINT32 input = ras << 13 | cas << 12 | refen << 11 | eras << 10 | ecas << 9 | busy2 << 8 | P3 << 3 | P2 << 2 | P1 << 1 | P0;
6371   UINT32 data = m_pla1->read(input);
r18116r18117
6674   *casseg2 = BIT(data, 1);
6775   *casseg3 = BIT(data, 2);
6876   *casseg4 = BIT(data, 3);
69   //*rasseg1 = BIT(data, 4);
70   //*rasseg2 = BIT(data, 5);
71   //*rasseg3 = BIT(data, 6);
72   //*rasseg4 = BIT(data, 7);
77   *rasseg1 = BIT(data, 4);
78   *rasseg2 = BIT(data, 5);
79   *rasseg3 = BIT(data, 6);
80   *rasseg4 = BIT(data, 7);
7381}
7482
7583
r18116r18117
8290   int *diskromcs, int *csbank1, int *csbank2, int *csbank3, int *basiccs, int *knbcs, int *kernalcs,
8391   int *crtccs, int *cs1, int *sidcs, int *extprtcs, int *ciacs, int *aciacs, int *tript1cs, int *tript2cs)
8492{
85   this->read_pla(offset, busy2, eras, ecas, refen, cas, ras, casseg1, casseg2, casseg3, casseg4);
93   int rasseg1 = 1, rasseg2 = 1, rasseg3 = 1, rasseg4 = 1;
8694
95   this->read_pla(offset, ras, cas, refen, eras, ecas, busy2, casseg1, casseg2, casseg3, casseg4, &rasseg1, &rasseg2, &rasseg3, &rasseg4);
96
8797   int busen1 = m_dramon;
88   int decoden = 0; // TODO
98   int decoden = 0;
8999   *sysioen = !(P0 && P1 && P2 && P3) && busen1;
90100   *dramen = !((!(P0 && P1 && P2 && P3)) && busen1);
91101
r18116r18117
164174      {
165175         data = m_ram->pointer()[offset & 0xffff];
166176      }
167      else if (!casseg2)
177      if (!casseg2)
168178      {
169179         data = m_ram->pointer()[0x10000 | (offset & 0xffff)];
170180      }
171      else if (!casseg3 && (m_ram->size() > 0x20000))
181      if (!casseg3 && (m_ram->size() > 0x20000))
172182      {
173183         data = m_ram->pointer()[0x20000 | (offset & 0xffff)];
174184      }
175      else if (!casseg4 && (m_ram->size() > 0x30000))
185      if (!casseg4 && (m_ram->size() > 0x30000))
176186      {
177187         data = m_ram->pointer()[0x30000 | (offset & 0xffff)];
178188      }
r18116r18117
184194      {
185195         data = m_buffer_ram[offset & 0x7ff];
186196      }
187      else if (!vidramcs)
197      if (!vidramcs)
188198      {
189199         data = m_video_ram[offset & 0x7ff];
190200      }
191      else if (!basiccs || !knbcs)
201      if (!basiccs || !knbcs)
192202      {
193203         data = m_basic[offset & 0x3fff];
194204      }
195      else if (!kernalcs)
205      if (!kernalcs)
196206      {
197207         data = m_kernal[offset & 0x1fff];
198208      }
199      else if (!crtccs)
209      if (!crtccs)
200210      {
201211         if (A0)
202212         {
r18116r18117
207217            data = m_crtc->status_r(space, 0);
208218         }
209219      }
210      else if (!sidcs)
220      if (!sidcs)
211221      {
212222         data = m_sid->read(space, offset & 0x1f);
213223      }
214      else if (!ciacs)
224      if (!ciacs)
215225      {
216226         data = m_cia->read(space, offset & 0x0f);
217227      }
218      else if (!aciacs)
228      if (!aciacs)
219229      {
220230         data = m_acia->read(space, offset & 0x03);
221231      }
222      else if (!tript1cs)
232      if (!tript1cs)
223233      {
224234         data = m_tpi1->read(space, offset & 0x07);
225235      }
226      else if (!tript2cs)
236      if (!tript2cs)
227237      {
228238         data = m_tpi2->read(space, offset & 0x07);
229239      }
r18116r18117
263273      {
264274         m_ram->pointer()[offset & 0xffff] = data;
265275      }
266      else if (!casseg2)
276      if (!casseg2)
267277      {
268278         m_ram->pointer()[0x10000 | (offset & 0xffff)] = data;
269279      }
270      else if (!casseg3 && (m_ram->size() > 0x20000))
280      if (!casseg3 && (m_ram->size() > 0x20000))
271281      {
272282         m_ram->pointer()[0x20000 | (offset & 0xffff)] = data;
273283      }
274      else if (!casseg4 && (m_ram->size() > 0x30000))
284      if (!casseg4 && (m_ram->size() > 0x30000))
275285      {
276286         m_ram->pointer()[0x30000 | (offset & 0xffff)] = data;
277287      }
r18116r18117
283293      {
284294         m_buffer_ram[offset & 0x7ff] = data;
285295      }
286      else if (!vidramcs)
296      if (!vidramcs)
287297      {
288298         m_video_ram[offset & 0x7ff] = data;
289299      }
290      else if (!basiccs || !knbcs)
300      if (!basiccs || !knbcs)
291301      {
292302         m_basic[offset & 0x3fff] = data;
293303      }
294      else if (!kernalcs)
304      if (!kernalcs)
295305      {
296306         m_kernal[offset & 0x1fff] = data;
297307      }
298      else if (!crtccs)
308      if (!crtccs)
299309      {
300310         if (A0)
301311         {
r18116r18117
306316            m_crtc->address_w(space, 0, data);
307317         }
308318      }
309      else if (!sidcs)
319      if (!sidcs)
310320      {
311321         m_sid->write(space, offset & 0x1f, data);
312322      }
313      else if (!ciacs)
323      if (!ciacs)
314324      {
315325         m_cia->write(space, offset & 0x0f, data);
316326      }
317      else if (!aciacs)
327      if (!aciacs)
318328      {
319329         m_acia->write(space, offset & 0x03, data);
320330      }
321      else if (!tript1cs)
331      if (!tript1cs)
322332      {
323333         m_tpi1->write(space, offset & 0x07, data);
324334      }
325      else if (!tript2cs)
335      if (!tript2cs)
326336      {
327337         m_tpi2->write(space, offset & 0x07, data);
328338      }
r18116r18117
333343
334344
335345//-------------------------------------------------
346//  read_pla1 - P500 PLA #1 read
347//-------------------------------------------------
348
349void p500_state::read_pla1(offs_t offset, int bras, int busy2, int sphi2, int clrnibcsb, int procvid, int refen, int ba, int aec, int srw,
350   int *datxen, int *dramxen, int *clrniben, int *segf, int *_64kcasen, int *casenb, int *viddaten, int *viddat_tr)
351{
352   UINT32 input = P0 << 15 | P2 << 14 | bras << 13 | P1 << 12 | P3 << 11 | busy2 << 10 | m_statvid << 9 | sphi2 << 8 |
353         clrnibcsb << 7 | m_dramon << 6 | procvid << 5 | refen << 4 | m_vicdotsel << 3 | ba << 2 | aec << 1 | srw;
354   
355   UINT32 data = m_pla1->read(input);
356
357   *datxen = BIT(data, 0);
358   *dramxen = BIT(data, 1);
359   *clrniben = BIT(data, 2);
360   *segf = BIT(data, 3);
361   *_64kcasen = BIT(data, 4);
362   *casenb = BIT(data, 5);
363   *viddaten = BIT(data, 6);
364   *viddat_tr = BIT(data, 7);
365}
366
367
368//-------------------------------------------------
369//  read_pla2 - P500 PLA #2 read
370//-------------------------------------------------
371
372void p500_state::read_pla2(offs_t offset, offs_t va, int ba, int sphi2, int vicen, int ae, int segf, int bcas, int bank0,
373   int *clrnibcsb, int *extbufcs, int *discromcs, int *buframcs, int *charomcs, int *procvid, int *viccs, int *vidmatcs)
374{
375   UINT32 input = VA12 << 15 | ba << 14 | A13 << 13 | A15 << 12 | A14 << 11 | A11 << 10 | A10 << 9 | A12 << 8 |
376         sphi2 << 7 | vicen << 6 | m_statvid << 5 | m_vicdotsel << 4 | ae << 3 | segf << 2 | bcas << 1 | bank0;
377   
378   UINT32 data = m_pla2->read(input);
379
380   *clrnibcsb = BIT(data, 0);
381   *extbufcs = BIT(data, 1);
382   *discromcs = BIT(data, 2);
383   *buframcs = BIT(data, 3);
384   *charomcs = BIT(data, 4);
385   *procvid = BIT(data, 5);
386   *viccs = BIT(data, 6);
387   *vidmatcs = BIT(data, 7);
388}
389
390
391//-------------------------------------------------
336392//  bankswitch -
337393//-------------------------------------------------
338394
r18116r18117
343399   int *cs1, int *sidcs, int *extprtcs, int *ciacs, int *aciacs, int *tript1cs, int *tript2cs, int *aec, int *vsysaden)
344400{
345401   *aec = !((m_statvid || ae) && sphi2);
402   *vsysaden = sphi1 || ba;
346403
347   int clrnibcsb = 1;
348   int procvid = 1;
404   int clrnibcsb = 1, procvid = 1, segf = 1;
349405
350   UINT32 input = P0 << 15 | P2 << 14 | bras << 13 | P1 << 12 | P3 << 11 | busy2 << 10 | m_statvid << 9 | sphi2 << 8 |
351               clrnibcsb << 7 | m_dramon << 6 | procvid << 5 | refen << 4 | m_vicdotsel << 3 | ba << 2 | *aec << 1 | srw;
352   UINT32 data = m_pla1->read(input);
406   read_pla1(offset, bras, busy2, sphi2, clrnibcsb, procvid, refen, ba, *aec, srw,
407      datxen, dramxen, clrniben, &segf, _64kcasen, casenb, viddaten, viddat_tr);
353408
354   int segf = BIT(data, 3);
355
356409   int bank0 = 1, vicen = 1;
357410
358411   if (!*aec && !segf)
r18116r18117
386439      }
387440   }
388441
389   input = VA12 << 15 | ba << 14 | A13 << 13 | A15 << 12 | A14 << 11 | A11 << 10 | A10 << 9 | A12 << 8 |
390         sphi2 << 7 | vicen << 6 | m_statvid << 5 | m_vicdotsel << 4 | ae << 3 | segf << 2 | bcas << 1 | bank0;
391   data = m_pla2->read(input);
442   int vidmatcsb = 1;
392443
393   clrnibcsb = BIT(data, 0);
394   if (!bcas) *clrnibcs = clrnibcsb;
395   *extbufcs = BIT(data, 1);
396   *discromcs = BIT(data, 2);
397   *buframcs = BIT(data, 3);
398   *charomcs = BIT(data, 4);
399   procvid = BIT(data, 5);
400   *viccs = BIT(data, 6);
401   if (!bcas) *vidmatcs = BIT(data, 7);
444   read_pla2(offset, va, ba, sphi2, vicen, ae, segf, bcas, bank0,
445      &clrnibcsb, extbufcs, discromcs, buframcs, charomcs, &procvid, viccs, &vidmatcsb);
402446
403   input = P0 << 15 | P2 << 14 | bras << 13 | P1 << 12 | P3 << 11 | busy2 << 10 | m_statvid << 9 | sphi2 << 8 |
404         clrnibcsb << 7 | m_dramon << 6 | procvid << 5 | refen << 4 | m_vicdotsel << 3 | ba << 2 | *aec << 1 | srw;
405   data = m_pla1->read(input);
447   *clrnibcs = clrnibcsb || bcas;
448   *vidmatcs = vidmatcsb || bcas;
406449
407   *datxen = BIT(data, 0);
408   *dramxen = BIT(data, 1);
409   *clrniben = BIT(data, 2);
410   //*segf = BIT(data, 3);
411   *_64kcasen = BIT(data, 4);
412   *casenb = BIT(data, 5);
413   *viddaten = BIT(data, 6);
414   *viddat_tr = BIT(data, 7);
415
416   *vsysaden = sphi1 || ba;
450   read_pla1(offset, bras, busy2, sphi2, clrnibcsb, procvid, refen, ba, *aec, srw,
451      datxen, dramxen, clrniben, &segf, _64kcasen, casenb, viddaten, viddat_tr);
417452}
418453
419454
r18116r18117
421456//  read_memory -
422457//-------------------------------------------------
423458
424UINT8 p500_state::read_memory(address_space &space, offs_t offset, offs_t va, int sphi0, int sphi1, int sphi2, int ba, int ae, int bras, int bcas)
459UINT8 p500_state::read_memory(address_space &space, offs_t offset, offs_t va, int sphi0, int sphi1, int sphi2, int ba, int ae, int bras, int bcas, UINT8 *clrnib)
425460{
426461   int srw = 1, busy2 = 1, refen = 0;
427462   
r18116r18117
439474/*
440475   if (!space.debugger_access())
441476   logerror("r %05x %u %u %u %u %u %u %u - %u %u %u %u %u %u %u - %u %u %u %u %u %u - %u %u %u %u %u %u %u - %u %u : ",
442      offset, datxen, dramxen, clrniben, _64kcasen, casenb, viddaten, viddat_tr,
477      va, datxen, dramxen, clrniben, _64kcasen, casenb, viddaten, viddat_tr,
443478      clrnibcs, extbufcs, discromcs, buframcs, charomcs, viccs, vidmatcs,
444479      csbank1, csbank2, csbank3, basiclocs, basichics, kernalcs,
445480      cs1, sidcs, extprtcs, ciacs, aciacs, tript1cs, tript2cs, aec, vsysaden);
446481*/
447482   UINT8 data = 0xff;
483   *clrnib = 0xf;
448484
449   if (aec && !datxen && !_64kcasen)
485   if (vsysaden)
450486   {
451      data = m_ram->pointer()[offset & 0xffff];
452      //if (!space.debugger_access()) logerror("64K\n");
487      if (!_64kcasen && !aec && !viddaten && !viddat_tr)
488      {
489         data = m_ram->pointer()[(m_vicbnksel << 14) | va];
490      }
491      if (!clrnibcs)
492      {
493         *clrnib = m_color_ram[va & 0x3ff];
494      }
495      if (!vidmatcs)
496      {
497         data = m_video_ram[va & 0x3ff];
498      }
499      if (!charomcs)
500      {
501         data = m_charom[va & 0xfff];
502      }
453503   }
454   else if (!aec && !viddaten && viddat_tr && !_64kcasen)
504   
505   if (clrniben)
455506   {
456      data = m_ram->pointer()[(m_vicbnksel << 14) | va];
457      //if (!space.debugger_access()) logerror("64K\n");
507      if (!clrnibcs && !vsysaden)
508      {
509         data = m_color_ram[offset & 0x3ff];
510      }
458511   }
459   else if (!dramxen && casenb && !P3)
512
513   if (!dramxen)
460514   {
461      switch ((offset >> 15) & 0x07)
515      if (casenb)
462516      {
463      case 1: data = m_ram->pointer()[0x10000 + (offset & 0xffff)]; break;
464      case 2: if (m_ram->size() > 0x20000) data = m_ram->pointer()[0x20000 + (offset & 0xffff)]; break;
465      case 3: if (m_ram->size() > 0x30000) data = m_ram->pointer()[0x30000 + (offset & 0xffff)]; break;
517         switch (offset >> 16)
518         {
519         case 1: data = m_ram->pointer()[0x10000 + (offset & 0xffff)]; break;
520         case 2: if (m_ram->size() > 0x20000) data = m_ram->pointer()[0x20000 + (offset & 0xffff)]; break;
521         case 3: if (m_ram->size() > 0x30000) data = m_ram->pointer()[0x30000 + (offset & 0xffff)]; break;
522         }
466523      }
467      //if (!space.debugger_access()) logerror("CASEN\n");
468524   }
469   else if (!datxen && !buframcs)
525
526   if (!datxen)
470527   {
471      data = m_buffer_ram[offset & 0x7ff];
472      //if (!space.debugger_access()) logerror("BUFRAM\n");
528      if (!_64kcasen && !aec)
529      {
530         data = m_ram->pointer()[offset & 0xffff];
531      }
532      if (!buframcs)
533      {
534         data = m_buffer_ram[offset & 0x7ff];
535      }
536      if (!vidmatcs && !vsysaden && !viddaten && viddat_tr)
537      {
538         data = m_video_ram[offset & 0x3ff];
539      }
540      if (!basiclocs || !basichics)
541      {
542         data = m_basic[offset & 0x3fff];
543      }
544      if (!kernalcs)
545      {
546         data = m_kernal[offset & 0x1fff];
547      }
548      if (!charomcs && !vsysaden && !viddaten && viddat_tr)
549      {
550         data = m_charom[offset & 0xfff];
551      }
552      if (!viccs && !viddaten && viddat_tr)
553      {
554         data = m_vic->read(space, offset & 0x3f);
555      }
556      if (!sidcs)
557      {
558         data = m_sid->read(space, offset & 0x1f);
559      }
560      if (!ciacs)
561      {
562         data = m_cia->read(space, offset & 0x0f);
563      }
564      if (!aciacs)
565      {
566         data = m_acia->read(space, offset & 0x03);
567      }
568      if (!tript1cs)
569      {
570         data = m_tpi1->read(space, offset & 0x07);
571      }
572      if (!tript2cs)
573      {
574         data = m_tpi2->read(space, offset & 0x07);
575      }
576
577      data = m_exp->read(space, offset & 0x1fff, data, csbank1, csbank2, csbank3);
473578   }
474   else if (!vsysaden && clrniben && !clrnibcs)
475   {
476      data = m_color_ram[offset & 0x3ff];
477      //if (!space.debugger_access()) logerror("CLRNIB\n");
478   }
479   else if (vsysaden && !clrnibcs)
480   {
481      data = m_color_ram[va & 0x3ff];
482      //if (!space.debugger_access()) logerror("CLRNIB\n");
483   }
484   else if (!datxen && !vsysaden && !viddaten && viddat_tr && !vidmatcs)
485   {
486      data = m_video_ram[offset & 0x3ff];
487      //if (!space.debugger_access()) logerror("VIDMAT\n");
488   }
489   else if (vsysaden && !vidmatcs)
490   {
491      data = m_video_ram[va & 0x3ff];
492      //if (!space.debugger_access()) logerror("VIDMAT\n");
493   }
494   else if (!datxen && (!basiclocs || !basichics))
495   {
496      data = m_basic[offset & 0x3fff];
497      //if (!space.debugger_access()) logerror("BASIC\n");
498   }
499   else if (!datxen && !kernalcs)
500   {
501      data = m_kernal[offset & 0x1fff];
502      //if (!space.debugger_access()) logerror("KERNAL\n");
503   }
504   else if (!datxen && !vsysaden && !viddaten && viddat_tr && !charomcs)
505   {
506      data = m_charom[offset & 0xfff];
507      //if (!space.debugger_access()) logerror("CHAROM\n");
508   }
509   else if (vsysaden && !charomcs)
510   {
511      data = m_charom[va & 0xfff];
512      //if (!space.debugger_access()) logerror("CHAROM\n");
513   }
514   else if (!datxen && !viddaten && viddat_tr && !viccs)
515   {
516      data = m_vic->read(space, offset & 0x3f);
517      //if (!space.debugger_access()) logerror("VIC\n");
518   }
519   else if (!datxen && !sidcs)
520   {
521      data = m_sid->read(space, offset & 0x1f);
522      //if (!space.debugger_access()) logerror("SID\n");
523   }
524   else if (!datxen && !ciacs)
525   {
526      data = m_cia->read(space, offset & 0x0f);
527      //if (!space.debugger_access()) logerror("CIA\n");
528   }
529   else if (!datxen && !aciacs)
530   {
531      data = m_acia->read(space, offset & 0x03);
532      //if (!space.debugger_access()) logerror("ACIA\n");
533   }
534   else if (!datxen && !tript1cs)
535   {
536      data = m_tpi1->read(space, offset & 0x07);
537      //if (!space.debugger_access()) logerror("TPI1\n");
538   }
539   else if (!datxen && !tript2cs)
540   {
541      data = m_tpi2->read(space, offset & 0x07);
542      //if (!space.debugger_access()) logerror("TPI2\n");
543   }
544   //else //if (!space.debugger_access()) logerror("\n");
545579
546   if (!datxen) data = m_exp->read(space, offset & 0x1fff, data, csbank1, csbank2, csbank3);
547
548580   return data;
549581}
550582
r18116r18117
577609      csbank1, csbank2, csbank3, basiclocs, basichics, kernalcs,
578610      cs1, sidcs, extprtcs, ciacs, aciacs, tript1cs, tript2cs, aec, vsysaden);
579611*/
580   if (!aec && !datxen && !_64kcasen)
612
613   if (clrniben)
581614   {
582      //if (!space.debugger_access()) logerror("64K RAM\n");
583      m_ram->pointer()[offset & 0xffff] = data;
615      if (!clrnibcs && !vsysaden)
616      {
617         m_color_ram[offset & 0x3ff] = data & 0x0f;
618      }
584619   }
585   else if (!dramxen && casenb && !P3)
620
621   if (!dramxen)
586622   {
587      //if (!space.debugger_access()) logerror("CASENB\n");
588      switch ((offset >> 15) & 0x07)
623      if (casenb)
589624      {
590      case 1: m_ram->pointer()[0x10000 + (offset & 0xffff)] = data; break;
591      case 2: if (m_ram->size() > 0x20000) m_ram->pointer()[0x20000 + (offset & 0xffff)] = data; break;
592      case 3: if (m_ram->size() > 0x30000) m_ram->pointer()[0x30000 + (offset & 0xffff)] = data; break;
625         switch (offset >> 16)
626         {
627         case 1: m_ram->pointer()[0x10000 + (offset & 0xffff)] = data; break;
628         case 2: if (m_ram->size() > 0x20000) m_ram->pointer()[0x20000 + (offset & 0xffff)] = data; break;
629         case 3: if (m_ram->size() > 0x30000) m_ram->pointer()[0x30000 + (offset & 0xffff)] = data; break;
630         }
593631      }
594632   }
595   else if (!datxen && !buframcs)
633
634   if (!datxen)
596635   {
597      //if (!space.debugger_access()) logerror("BUFRAM\n");
598      m_buffer_ram[offset & 0x7ff] = data;
636      if (!_64kcasen && !aec)
637      {
638         m_ram->pointer()[offset & 0xffff] = data;
639      }
640      if (!buframcs)
641      {
642         m_buffer_ram[offset & 0x7ff] = data;
643      }
644      if (!vidmatcs && !vsysaden && !viddaten && !viddat_tr)
645      {
646         m_video_ram[offset & 0x3ff] = data;
647      }
648      if (!viccs && !viddaten && !viddat_tr)
649      {
650         m_vic->write(space, offset & 0x3f, data);
651      }
652      if (!sidcs)
653      {
654         m_sid->write(space, offset & 0x1f, data);
655      }
656      if (!ciacs)
657      {
658         m_cia->write(space, offset & 0x0f, data);
659      }
660      if (!aciacs)
661      {
662         m_acia->write(space, offset & 0x03, data);
663      }
664      if (!tript1cs)
665      {
666         m_tpi1->write(space, offset & 0x07, data);
667      }
668      if (!tript2cs)
669      {
670         m_tpi2->write(space, offset & 0x07, data);
671      }
672
673      m_exp->write(space, offset & 0x1fff, data, csbank1, csbank2, csbank3);
599674   }
600   else if (!vsysaden && clrniben && !clrnibcs)
601   {
602      //if (!space.debugger_access()) logerror("CLRNIB\n");
603      m_color_ram[offset & 0x3ff] = data;
604   }
605   else if (!datxen && !vsysaden && !viddaten && !viddat_tr && !vidmatcs)
606   {
607      //if (!space.debugger_access()) logerror("VIDMAT\n");
608      m_video_ram[offset & 0x3ff] = data;
609   }
610   else if (vsysaden && !vidmatcs)
611   {
612      //if (!space.debugger_access()) logerror("VIDMAT\n");
613      m_video_ram[va & 0x3ff] = data;
614   }
615   else if (!datxen && !viddaten && !viddat_tr && !viccs)
616   {
617      //if (!space.debugger_access()) logerror("VIC\n");
618      m_vic->write(space, offset & 0x3f, data);
619   }
620   else if (!datxen && !sidcs)
621   {
622      //if (!space.debugger_access()) logerror("SID\n");
623      m_sid->write(space, offset & 0x1f, data);
624   }
625   else if (!datxen && !ciacs)
626   {
627      //if (!space.debugger_access()) logerror("CIA\n");
628      m_cia->write(space, offset & 0x0f, data);
629   }
630   else if (!datxen && !aciacs)
631   {
632      //if (!space.debugger_access()) logerror("ACIA\n");
633      m_acia->write(space, offset & 0x03, data);
634   }
635   else if (!datxen && !tript1cs)
636   {
637      //if (!space.debugger_access()) logerror("TPI1\n");
638      m_tpi1->write(space, offset & 0x07, data);
639   }
640   else if (!datxen && !tript2cs)
641   {
642      //if (!space.debugger_access()) logerror("TPI2\n");
643      m_tpi2->write(space, offset & 0x07, data);
644   }
645   //else //if (!space.debugger_access()) logerror("\n");
646
647   if (!datxen) m_exp->write(space, offset & 0x1fff, data, csbank1, csbank2, csbank3);
648675}
649676
650677
r18116r18117
656683{
657684   int sphi0 = 1, sphi1 = 0, sphi2 = 1, ba = 0, ae = 1, bras = 1, bcas = 0;
658685   offs_t va = 0xffff;
686   UINT8 clrnib = 0xf;
659687
660   return read_memory(space, offset, va, sphi0, sphi1, sphi2, ba, ae, bras, bcas);
688   return read_memory(space, offset, va, sphi0, sphi1, sphi2, ba, ae, bras, bcas, &clrnib);
661689}
662690
663691
r18116r18117
679707
680708READ8_MEMBER( p500_state::vic_videoram_r )
681709{
682/*   int sphi0 = 0, sphi1 = 1, sphi2 = 0, ba = 1, ae = 0, bras = 0, bcas = 0;
710   /*
711   int sphi0 = 0, sphi1 = 1, sphi2 = 0, ba = 1, ae = 0, bras = 0, bcas = 0;
683712   offs_t va = offset;
684713
685   return read_memory(space, 0, va, sphi0, sphi1, sphi2, ba, ae, bras, bcas);*/
714   return read_memory(space, 0, va, sphi0, sphi1, sphi2, ba, ae, bras, bcas);
715   */
716   /*
717   int ba = 1, ae = 0, bras = 1, bcas = 0;
718   UINT8 clrnib = 0xf;
686719
687720   if (offset < 0x1000)
688721   {
722      return read_memory(space, 0, offset, 0, 1, 0, ba, ae, bras, bcas, &clrnib);
723   }
724   else
725   {
726      return read_memory(space, 0, offset, 1, 0, 1, ba, ae, bras, bcas, &clrnib);
727   }
728   */
729   
730   if (offset < 0x1000)
731   {
689732      return m_charom[offset & 0xfff];
690733   }
691734   else
r18116r18117
889932   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad ENTER") PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD))
890933   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
891934   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
935
936   PORT_START("LOCK")
937   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("SHIFT LOCK") PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK)) PORT_TOGGLE
938   PORT_BIT( 0xef, IP_ACTIVE_LOW, IPT_UNUSED )
892939INPUT_PORTS_END
893940
894941
r18116r18117
12611308   if (!BIT(m_tpi2_pa, 5)) data &= ioport("PA5")->read();
12621309   if (!BIT(m_tpi2_pa, 6)) data &= ioport("PA6")->read();
12631310   if (!BIT(m_tpi2_pa, 7)) data &= ioport("PA7")->read();
1264   if (!BIT(m_tpi2_pb, 0)) data &= ioport("PB0")->read();
1311   if (!BIT(m_tpi2_pb, 0)) data &= ioport("PB0")->read() & ioport("LOCK")->read();
12651312   if (!BIT(m_tpi2_pb, 1)) data &= ioport("PB1")->read();
12661313   if (!BIT(m_tpi2_pb, 2)) data &= ioport("PB2")->read();
12671314   if (!BIT(m_tpi2_pb, 3)) data &= ioport("PB3")->read();
r18116r18117
16021649
16031650MACHINE_START_MEMBER( cbm2_state, cbm2_ntsc )
16041651{
1605   m_video_ram_size = 0x800;
16061652   m_ntsc = 1;
16071653
16081654   MACHINE_START_CALL_MEMBER(cbm2);
r18116r18117
16151661
16161662MACHINE_START_MEMBER( cbm2_state, cbm2_pal )
16171663{
1618   m_video_ram_size = 0x800;
16191664   m_ntsc = 0;
16201665
16211666   MACHINE_START_CALL_MEMBER(cbm2);
r18116r18117
16291674MACHINE_START_MEMBER( p500_state, p500 )
16301675{
16311676   m_video_ram_size = 0x400;
1632   m_ntsc = 1;
16331677
16341678   MACHINE_START_CALL_MEMBER(cbm2);
16351679
r18116r18117
16421686
16431687
16441688//-------------------------------------------------
1689//  MACHINE_START( p500_ntsc )
1690//-------------------------------------------------
1691
1692MACHINE_START_MEMBER( p500_state, p500_ntsc )
1693{
1694   m_ntsc = 1;
1695
1696   MACHINE_START_CALL_MEMBER(p500);
1697}
1698
1699
1700//-------------------------------------------------
1701//  MACHINE_START( p500_pal )
1702//-------------------------------------------------
1703
1704MACHINE_START_MEMBER( p500_state, p500_pal )
1705{
1706   m_ntsc = 0;
1707
1708   MACHINE_START_CALL_MEMBER(p500);
1709}
1710
1711
1712//-------------------------------------------------
16451713//  MACHINE_RESET( cbm2 )
16461714//-------------------------------------------------
16471715
r18116r18117
16891757//-------------------------------------------------
16901758
16911759static MACHINE_CONFIG_FRAGMENT( 128k )
1692   // internal ram
16931760   MCFG_RAM_ADD(RAM_TAG)
16941761   MCFG_RAM_DEFAULT_SIZE("128K")
16951762   MCFG_RAM_EXTRA_OPTIONS("256K")
r18116r18117
17011768//-------------------------------------------------
17021769
17031770static MACHINE_CONFIG_FRAGMENT( 256k )
1704   // internal ram
17051771   MCFG_RAM_ADD(RAM_TAG)
17061772   MCFG_RAM_DEFAULT_SIZE("256K")
17071773MACHINE_CONFIG_END
17081774
17091775
17101776//-------------------------------------------------
1711//  MACHINE_CONFIG( p500 )
1777//  MACHINE_CONFIG( p500_ntsc )
17121778//-------------------------------------------------
17131779
1714static MACHINE_CONFIG_START( p500, p500_state )
1715   MCFG_MACHINE_START_OVERRIDE(p500_state, p500)
1780static MACHINE_CONFIG_START( p500_ntsc, p500_state )
1781   MCFG_MACHINE_START_OVERRIDE(p500_state, p500_ntsc)
17161782   MCFG_MACHINE_RESET_OVERRIDE(p500_state, p500)
17171783
17181784   // basic hardware
r18116r18117
17381804   MCFG_TPI6525_ADD(MOS6525_2_TAG, p500_tpi2_intf)
17391805   MCFG_ACIA6551_ADD(MOS6551A_TAG)
17401806   MCFG_MOS6526R1_ADD(MOS6526_TAG, VIC6567_CLOCK, 60, cia_intf)
1741   MCFG_CBM_IEEE488_ADD(ieee488_intf, "sfd1001")
1807   MCFG_CBM_IEEE488_ADD(ieee488_intf, "c8050")
17421808   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, datassette_intf, cbm_datassette_devices, NULL, NULL)
17431809   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL)
17441810   MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, NULL, NULL)
r18116r18117
17481814
17491815   // internal ram
17501816   MCFG_FRAGMENT_ADD(128k)
1817
1818   // software list
1819   MCFG_SOFTWARE_LIST_ADD("flop_list", "p500_flop")
1820   MCFG_SOFTWARE_LIST_ADD("cart_list", "cbm2_cart")
17511821MACHINE_CONFIG_END
17521822
17531823
17541824//-------------------------------------------------
1825//  MACHINE_CONFIG( p500_pal )
1826//-------------------------------------------------
1827
1828static MACHINE_CONFIG_START( p500_pal, p500_state )
1829   MCFG_MACHINE_START_OVERRIDE(p500_state, p500_pal)
1830   MCFG_MACHINE_RESET_OVERRIDE(p500_state, p500)
1831
1832   // basic hardware
1833   MCFG_CPU_ADD(M6509_TAG, M6509, VIC6569_CLOCK)
1834   MCFG_CPU_PROGRAM_MAP(p500_mem)
1835   MCFG_QUANTUM_PERFECT_CPU(M6509_TAG)
1836
1837   // video hardware
1838   MCFG_MOS6569_ADD(MOS6569_TAG, SCREEN_TAG, VIC6569_CLOCK, vic_intf, vic_videoram_map, vic_colorram_map)
1839
1840   // sound hardware
1841   MCFG_SPEAKER_STANDARD_MONO("mono")
1842   MCFG_SOUND_ADD(MOS6851_TAG, SID6581, VIC6569_CLOCK)
1843   MCFG_SOUND_CONFIG(sid_intf)
1844   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
1845   MCFG_SOUND_ADD("dac", DAC, 0)
1846   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
1847
1848   // devices
1849   MCFG_PLS100_ADD(PLA1_TAG)
1850   MCFG_PLS100_ADD(PLA2_TAG)
1851   MCFG_TPI6525_ADD(MOS6525_1_TAG, p500_tpi1_intf)
1852   MCFG_TPI6525_ADD(MOS6525_2_TAG, p500_tpi2_intf)
1853   MCFG_ACIA6551_ADD(MOS6551A_TAG)
1854   MCFG_MOS6526R1_ADD(MOS6526_TAG, VIC6569_CLOCK, 50, cia_intf)
1855   MCFG_CBM_IEEE488_ADD(ieee488_intf, "c8050")
1856   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, datassette_intf, cbm_datassette_devices, NULL, NULL)
1857   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL)
1858   MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, NULL, NULL)
1859   MCFG_CBM2_EXPANSION_SLOT_ADD(CBM2_EXPANSION_SLOT_TAG, VIC6569_CLOCK, cbm2_expansion_cards, NULL, NULL)
1860   //MCFG_CBM2_USER_PORT_ADD(CBM2_USER_PORT_TAG, user_intf, cbm2_user_port_cards, NULL, NULL)
1861   //MCFG_CBM2_SYSTEM_PORT_ADD(CBM2_SYSTEM_PORT_TAG, system_intf, cbm2_system_port_cards, NULL, NULL)
1862
1863   // internal ram
1864   MCFG_FRAGMENT_ADD(128k)
1865
1866   // software list
1867   MCFG_SOFTWARE_LIST_ADD("flop_list", "p500_flop")
1868   MCFG_SOFTWARE_LIST_ADD("cart_list", "cbm2_cart")
1869MACHINE_CONFIG_END
1870
1871
1872//-------------------------------------------------
17551873//  MACHINE_CONFIG( cbm2lp_ntsc )
17561874//-------------------------------------------------
17571875
r18116r18117
17891907   MCFG_TPI6525_ADD(MOS6525_2_TAG, tpi2_intf)
17901908   MCFG_ACIA6551_ADD(MOS6551A_TAG)
17911909   MCFG_MOS6526R1_ADD(MOS6526_TAG, XTAL_18MHz/8, 60, cia_intf)
1792   MCFG_CBM_IEEE488_ADD(ieee488_intf, "sfd1001")
1910   MCFG_CBM_IEEE488_ADD(ieee488_intf, "c8050")
17931911   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, datassette_intf, cbm_datassette_devices, NULL, NULL)
17941912   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL)
17951913   MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, NULL, NULL)
r18116r18117
17981916   //MCFG_CBM2_SYSTEM_PORT_ADD(CBM2_SYSTEM_PORT_TAG, system_intf, cbm2_system_port_cards, NULL, NULL)
17991917
18001918   // software list
1919   MCFG_SOFTWARE_LIST_ADD("flop_list", "cbm2_flop")
18011920   MCFG_SOFTWARE_LIST_ADD("cart_list", "cbm2_cart")
18021921MACHINE_CONFIG_END
18031922
r18116r18117
19602079//**************************************************************************
19612080
19622081//-------------------------------------------------
1963//  ROM( p500 )
2082//  ROM( p500n )
19642083//-------------------------------------------------
19652084
1966ROM_START( p500 )
2085ROM_START( p500n )
19672086   ROM_REGION( 0x4000, "basic", 0 )
19682087   ROM_DEFAULT_BIOS("r2")
19692088   ROM_SYSTEM_BIOS( 0, "r1", "Revision 1" )
r18116r18117
19892108
19902109
19912110//-------------------------------------------------
2111//  ROM( p500p )
2112//-------------------------------------------------
2113
2114#define rom_p500p   rom_p500n
2115
2116
2117//-------------------------------------------------
19922118//  ROM( b500 )
19932119//-------------------------------------------------
19942120
r18116r18117
22152341//**************************************************************************
22162342
22172343//    YEAR  NAME        PARENT  COMPAT  MACHINE     INPUT   INIT                        COMPANY                         FULLNAME                            FLAGS
2218COMP( 1983,   p500,      0,      0,      p500,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "P500 ~ C128-40 ~ PET-II (NTSC)",   GAME_NOT_WORKING )
2344COMP( 1983,   p500n,      0,      0,      p500_ntsc,   cbm2,   driver_device,      0,      "Commodore Business Machines",   "P500 ~ C128-40 ~ PET-II (NTSC)",   GAME_NOT_WORKING )
2345COMP( 1983,   p500p,      p500n,   0,      p500_pal,   cbm2,   driver_device,      0,      "Commodore Business Machines",   "P500 ~ C128-40 ~ PET-II (PAL)",   GAME_NOT_WORKING )
22192346
2220COMP( 1983,   b500,      p500,   0,      b128,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "B500 (NTSC)",                  GAME_NOT_WORKING )
2221COMP( 1983,   b128,      p500,   0,      b128,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "B128 (NTSC)",                  GAME_NOT_WORKING )
2222COMP( 1983,   b256,      p500,   0,      b256,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "B256 (NTSC)",                  GAME_NOT_WORKING )
2223COMP( 1983,   cbm610,      p500,   0,      cbm610,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "CBM 610 (PAL)",               GAME_NOT_WORKING )
2224COMP( 1983,   cbm620,      p500,   0,      cbm620,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "CBM 620 (PAL)",               GAME_NOT_WORKING )
2225COMP( 1983,   cbm620hu,   p500,   0,      cbm620,      cbm2hu,   driver_device,      0,      "Commodore Business Machines",   "CBM 620 (Hungary)",            GAME_NOT_WORKING )
2347COMP( 1983,   b500,      p500n,   0,      b128,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "B500 (NTSC)",                  GAME_NOT_WORKING )
2348COMP( 1983,   b128,      p500n,   0,      b128,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "B128 (NTSC)",                  GAME_NOT_WORKING )
2349COMP( 1983,   b256,      p500n,   0,      b256,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "B256 (NTSC)",                  GAME_NOT_WORKING )
2350COMP( 1983,   cbm610,      p500n,   0,      cbm610,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "CBM 610 (PAL)",               GAME_NOT_WORKING )
2351COMP( 1983,   cbm620,      p500n,   0,      cbm620,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "CBM 620 (PAL)",               GAME_NOT_WORKING )
2352COMP( 1983,   cbm620hu,   p500n,   0,      cbm620,      cbm2hu,   driver_device,      0,      "Commodore Business Machines",   "CBM 620 (Hungary)",            GAME_NOT_WORKING )
22262353
2227COMP( 1983,   b128hp,      p500,   0,      b128hp,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "B128-80HP (NTSC)",               GAME_NOT_WORKING )
2228COMP( 1983,   b256hp,      p500,   0,      b256hp,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "B256-80HP (NTSC)",               GAME_NOT_WORKING )
2229COMP( 1983,   bx256hp,   p500,   0,      bx256hp,   cbm2,   driver_device,      0,      "Commodore Business Machines",   "BX256-80HP (NTSC)",            GAME_NOT_WORKING )
2230COMP( 1983,   cbm710,      p500,   0,      cbm710,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "CBM 710 (PAL)",               GAME_NOT_WORKING )
2231COMP( 1983,   cbm720,      p500,   0,      cbm720,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "CBM 720 (PAL)",               GAME_NOT_WORKING )
2232COMP( 1983,   cbm720sw,   p500,   0,      cbm720,      cbm2sw,   driver_device,      0,      "Commodore Business Machines",   "CBM 720 (Sweden/Finland)",         GAME_NOT_WORKING )
2233COMP( 1983,   cbm730,      p500,   0,      cbm730,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "CBM 730 (PAL)",               GAME_NOT_WORKING )
2354COMP( 1983,   b128hp,      p500n,   0,      b128hp,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "B128-80HP (NTSC)",               GAME_NOT_WORKING )
2355COMP( 1983,   b256hp,      p500n,   0,      b256hp,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "B256-80HP (NTSC)",               GAME_NOT_WORKING )
2356COMP( 1983,   bx256hp,   p500n,   0,      bx256hp,   cbm2,   driver_device,      0,      "Commodore Business Machines",   "BX256-80HP (NTSC)",            GAME_NOT_WORKING )
2357COMP( 1983,   cbm710,      p500n,   0,      cbm710,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "CBM 710 (PAL)",               GAME_NOT_WORKING )
2358COMP( 1983,   cbm720,      p500n,   0,      cbm720,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "CBM 720 (PAL)",               GAME_NOT_WORKING )
2359COMP( 1983,   cbm720sw,   p500n,   0,      cbm720,      cbm2sw,   driver_device,      0,      "Commodore Business Machines",   "CBM 720 (Sweden/Finland)",         GAME_NOT_WORKING )
2360COMP( 1983,   cbm730,      p500n,   0,      cbm730,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "CBM 730 (PAL)",               GAME_NOT_WORKING )

Previous 199869 Revisions Next


© 1997-2024 The MAME Team