Previous 199869 Revisions Next

r18163 Wednesday 26th September, 2012 at 17:09:12 UTC by Curt Coder
(MESS) cbm2: Promoted drivers to working. [Curt Coder]
[src/mess/drivers]cbm2.c
[src/mess/includes]cbm2.h

trunk/src/mess/includes/cbm2.h
r18162r18163
152152   UINT8 m_tpi2_pb;
153153   UINT8 m_cia_pa;
154154
155   // IEEE-488 state
156   int m_ieee_dc;
157   int m_ieee_te;
158
155159   // timers
156160   emu_timer *m_todclk_timer;
157161};
trunk/src/mess/drivers/cbm2.c
r18162r18163
22
33    TODO:
44
5   - basic does not work
65   - shift lock
76   - Hungarian keyboard
87   - cbm620hu charom banking?
98   - read VIC video/color RAM thru PLA (Sphi2 = 1, AE = 0)
109   - user port
1110   - co-processor bus
11   - 8088 co-processor board
1212
1313*/
1414
r18162r18163
159159      &casseg1, &casseg2, &casseg3, &casseg4, &buframcs, &extbufcs, &vidramcs,
160160      &diskromcs, &csbank1, &csbank2, &csbank3, &basiccs, &knbcs, &kernalcs,
161161      &crtccs, &cs1, &sidcs, &extprtcs, &ciacs, &aciacs, &tript1cs, &tript2cs);
162/*
163   if (!space.debugger_access())
164   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\n", offset, sysioen, dramen,
165      casseg1, casseg2, casseg3, casseg4, buframcs, extbufcs, vidramcs,
166      diskromcs, csbank1, csbank2, csbank3, basiccs, knbcs, kernalcs,
167      crtccs, cs1, sidcs, extprtcs, ciacs, aciacs, tript1cs, tript2cs);
168*/
169   UINT8 data = 0;
170162
163   UINT8 data = 0xff;
164
171165   if (!dramen)
172166   {
173167      if (!casseg1)
r18162r18163
260254      &casseg1, &casseg2, &casseg3, &casseg4, &buframcs, &extbufcs, &vidramcs,
261255      &diskromcs, &csbank1, &csbank2, &csbank3, &basiccs, &knbcs, &kernalcs,
262256      &crtccs, &cs1, &sidcs, &extprtcs, &ciacs, &aciacs, &tript1cs, &tript2cs);
263/*
264   if (!space.debugger_access())
265   logerror("w %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\n", offset, sysioen, dramen,
266      casseg1, casseg2, casseg3, casseg4, buframcs, extbufcs, vidramcs,
267      diskromcs, csbank1, csbank2, csbank3, basiccs, knbcs, kernalcs,
268      crtccs, cs1, sidcs, extprtcs, ciacs, aciacs, tript1cs, tript2cs);
269*/
257
270258   if (!dramen)
271259   {
272260      if (!casseg1)
r18162r18163
297285      {
298286         m_video_ram[offset & 0x7ff] = data;
299287      }
300      if (!basiccs || !knbcs)
301      {
302         m_basic[offset & 0x3fff] = data;
303      }
304      if (!kernalcs)
305      {
306         m_kernal[offset & 0x1fff] = data;
307      }
308288      if (!crtccs)
309289      {
310290         if (A0)
r18162r18163
471451      &clrnibcs, &extbufcs, &discromcs, &buframcs, &charomcs, &viccs, &vidmatcs,
472452      &csbank1, &csbank2, &csbank3, &basiclocs, &basichics, &kernalcs,
473453      &cs1, &sidcs, &extprtcs, &ciacs, &aciacs, &tript1cs, &tript2cs, &aec, &vsysaden);
474/*
475   if (!space.debugger_access())
476   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 : ",
477      va, datxen, dramxen, clrniben, _64kcasen, casenb, viddaten, viddat_tr,
478      clrnibcs, extbufcs, discromcs, buframcs, charomcs, viccs, vidmatcs,
479      csbank1, csbank2, csbank3, basiclocs, basichics, kernalcs,
480      cs1, sidcs, extprtcs, ciacs, aciacs, tript1cs, tript2cs, aec, vsysaden);
481*/
454
482455   UINT8 data = 0xff;
483456   *clrnib = 0xf;
484457
r18162r18163
601574      &clrnibcs, &extbufcs, &discromcs, &buframcs, &charomcs, &viccs, &vidmatcs,
602575      &csbank1, &csbank2, &csbank3, &basiclocs, &basichics, &kernalcs,
603576      &cs1, &sidcs, &extprtcs, &ciacs, &aciacs, &tript1cs, &tript2cs, &aec, &vsysaden);
604/*
605   if (!space.debugger_access())
606   logerror("w %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 : ",
607      offset, datxen, dramxen, clrniben, _64kcasen, casenb, viddaten, viddat_tr,
608      clrnibcs, extbufcs, discromcs, buframcs, charomcs, viccs, vidmatcs,
609      csbank1, csbank2, csbank3, basiclocs, basichics, kernalcs,
610      cs1, sidcs, extprtcs, ciacs, aciacs, tript1cs, tript2cs, aec, vsysaden);
611*/
612577
613578   if (clrniben)
614579   {
r18162r18163
10391004         data <<= 1;
10401005      }
10411006
1042      x++;
1007      bitmap.pix32(y, x++) = RGB_MONOCHROME_GREEN[BIT(code, 7)];
10431008   }
10441009}
10451010
r18162r18163
11421107   
11431108       bit     description
11441109   
1145       0       
1146       1       
1110       0       0
1111       1       0
11471112       2       REN
11481113       3       ATN
11491114       4       DAV
r18162r18163
11561121   UINT8 data = 0;
11571122
11581123   // IEEE-488
1159   data |= m_ieee->ren_r() << 2;
1160   data |= m_ieee->atn_r() << 3;
1161   data |= m_ieee->dav_r() << 4;
1162   data |= m_ieee->eoi_r() << 5;
1163   data |= m_ieee->ndac_r() << 6;
1164   data |= m_ieee->nrfd_r() << 7;
1124   if (m_ieee_dc) data |= m_ieee->ren_r() << 2;
1125   if (m_ieee_dc) data |= m_ieee->atn_r() << 3;
1126   if (!m_ieee_te) data |= m_ieee->dav_r() << 4;
1127   if (m_ieee->atn_r() && !m_ieee_te) data |= m_ieee->eoi_r() << 5;
1128   if (!m_ieee->atn_r() && !m_ieee_dc) data |= m_ieee->eoi_r() << 5;
1129   if (m_ieee_te) data |= m_ieee->ndac_r() << 6;
1130   if (m_ieee_te) data |= m_ieee->nrfd_r() << 7;
11651131
11661132   return data;
11671133}
r18162r18163
11841150   */
11851151
11861152   // IEEE-488
1187   m_ieee->ren_w(BIT(data, 2));
1188   m_ieee->atn_w(BIT(data, 3));
1189   m_ieee->dav_w(BIT(data, 4));
1190   m_ieee->eoi_w(BIT(data, 5));
1191   m_ieee->ndac_w(BIT(data, 6));
1192   m_ieee->nrfd_w(BIT(data, 7));
1153   m_ieee_dc = BIT(data, 0);
1154   m_ieee_te = BIT(data, 1);
1155
1156   if (!m_ieee_dc) m_ieee->ren_w(BIT(data, 2));
1157   if (!m_ieee_dc) m_ieee->atn_w(BIT(data, 3));
1158   if (m_ieee_te) m_ieee->dav_w(BIT(data, 4));
1159   if (m_ieee->atn_r() && m_ieee_te) m_ieee->eoi_w(BIT(data, 5));
1160   if (!m_ieee->atn_r() && m_ieee_dc) m_ieee->eoi_w(BIT(data, 5));
1161   if (!m_ieee_te) m_ieee->ndac_w(BIT(data, 6));
1162   if (!m_ieee_te) m_ieee->nrfd_w(BIT(data, 7));
11931163}
11941164
11951165READ8_MEMBER( cbm2_state::tpi1_pb_r )
r18162r18163
12001170   
12011171       0       IFC
12021172       1       SRQ
1203       2       user port
1204       3       user port
1173       2       user port PB2
1174       3       user port PB3
12051175       4       
12061176       5       
12071177       6       
r18162r18163
12091179   
12101180   */
12111181
1212   UINT8 data = 0;
1182   UINT8 data = 0xff;
12131183
12141184   // IEEE-488
1215   data |= m_ieee->ifc_r();
1216   data |= m_ieee->srq_r() << 1;
1185   if (m_ieee_dc) data &= m_ieee->ifc_r();
1186   if (!m_ieee_dc) data &= m_ieee->srq_r() << 1;
1187   
1188   // user port
1189   //data &= m_user->pb2_r() << 2;
1190   //data &= m_user->pb3_r() << 3;
12171191
12181192   // cassette
1219   data |= m_cassette->sense_r() << 7;
1193   data &= m_cassette->sense_r() << 7;
12201194
12211195   return data;
12221196}
r18162r18163
12291203   
12301204       0       IFC
12311205       1       SRQ
1232       2       user port
1233       3       user port
1206       2       user port PB2
1207       3       user port PB3
12341208       4       DRAMON
12351209       5       CASS WRT
12361210       6       CASS MTR
r18162r18163
12391213   */
12401214
12411215   // IEEE-488
1242   m_ieee->ifc_w(BIT(data, 0));
1243   m_ieee->srq_w(BIT(data, 1));
1216   if (!m_ieee_dc) m_ieee->ifc_w(BIT(data, 0));
1217   if (m_ieee_dc) m_ieee->srq_w(BIT(data, 1));
12441218
1219   // user port
1220   //m_user->pb2_w(BIT(data, 2));
1221   //m_user->pb3_w(BIT(data, 3));
1222
12451223   // memory
12461224   m_dramon = BIT(data, 4);
12471225
r18162r18163
13821360       3       COLUMN 3
13831361       4       COLUMN 4
13841362       5       COLUMN 5
1385       6       
1386       7       
1363       6       0
1364       7       0
13871365   
13881366   */
13891367
r18162r18163
14601438   
14611439       bit     description
14621440   
1463       0       user port
1464       1       user port
1465       2       user port
1466       3       user port
1467       4       user port
1468       5       user port
1469       6       LTPN, user port
1470       7       GAME TRIGGER 24, user port
1441       0       IEEE-488 D0, user port 1D0
1442       1       IEEE-488 D1, user port 1D1
1443       2       IEEE-488 D2, user port 1D2
1444       3       IEEE-488 D3, user port 1D3
1445       4       IEEE-488 D4, user port 1D4
1446       5       IEEE-488 D5, user port 1D5
1447       6       IEEE-488 D6, user port 1D6, LTPN
1448       7       IEEE-488 D7, user port 1D7, GAME TRIGGER 24
14711449   
14721450   */
14731451
1474   UINT8 data = 0;
1452   UINT8 data = 0xff;
14751453
1454   if (!m_ieee_te) data &= m_ieee->dio_r();
1455
1456   //data &= m_user->data1_r();
1457
14761458   // joystick
1477   data |= BIT(m_joy1->joy_r(), 5) << 6;
1478   data |= BIT(m_joy2->joy_r(), 5) << 7;
1459   //data &= BIT(m_joy1->joy_r(), 5) << 6;
1460   //data &= BIT(m_joy2->joy_r(), 5) << 7;
14791461
14801462   return data;
14811463}
r18162r18163
14861468   
14871469       bit     description
14881470   
1489       0       user port
1490       1       user port
1491       2       user port
1492       3       user port
1493       4       user port
1494       5       user port
1495       6       user port
1496       7       user port
1471       0       IEEE-488 D0, user port 1D0
1472       1       IEEE-488 D1, user port 1D1
1473       2       IEEE-488 D2, user port 1D2
1474       3       IEEE-488 D3, user port 1D3
1475       4       IEEE-488 D4, user port 1D4
1476       5       IEEE-488 D5, user port 1D5
1477       6       IEEE-488 D6, user port 1D6
1478       7       IEEE-488 D7, user port 1D7
14971479   
14981480   */
14991481
1482   if (m_ieee_te) m_ieee->dio_w(data);
1483
1484   //m_user->data1_w(data);
1485
15001486   m_cia_pa = data;
15011487}
15021488
r18162r18163
15061492   
15071493       bit     description
15081494   
1509       0       GAME 10, user port
1510       1       GAME 11, user port
1511       2       GAME 12, user port
1512       3       GAME 13, user port
1513       4       GAME 20, user port
1514       5       GAME 21, user port
1515       6       GAME 22, user port
1516       7       GAME 23, user port
1495       0       user port 2D0, GAME10
1496       1       user port 2D1, GAME11
1497       2       user port 2D2, GAME12
1498       3       user port 2D3, GAME13
1499       4       user port 2D4, GAME20
1500       5       user port 2D5, GAME21
1501       6       user port 2D6, GAME22
1502       7       user port 2D7, GAME23
15171503   
15181504   */
15191505
r18162r18163
15231509   data |= m_joy1->joy_r() & 0x0f;
15241510   data |= (m_joy2->joy_r() & 0x0f) << 4;
15251511
1512   // user port
1513   //data &= m_user->data2_r();
1514
15261515   return data;
15271516}
15281517
r18162r18163
15321521   
15331522       bit     description
15341523   
1535       0       user port
1536       1       user port
1537       2       user port
1538       3       user port
1539       4       user port
1540       5       user port
1541       6       user port
1542       7       user port
1524       0       user port 2D0
1525       1       user port 2D1
1526       2       user port 2D2
1527       3       user port 2D3
1528       4       user port 2D4
1529       5       user port 2D5
1530       6       user port 2D6
1531       7       user port 2D7
15431532   
15441533   */
1534
1535   //m_user->data2_w(data);
15451536}
15461537
15471538static const mos6526_interface cia_intf =
15481539{
15491540   DEVCB_DEVICE_LINE_MEMBER(MOS6525_1_TAG, tpi6525_device, i2_w),
1550   DEVCB_NULL, // user port
1551   DEVCB_NULL, // user port
1552   DEVCB_NULL, // user port
1541   DEVCB_NULL,//DEVCB_DEVICE_LINE_MEMBER(CBM2_USER_PORT_TAG, cbm2_user_port_device, pc_w),
1542   DEVCB_NULL,//DEVCB_DEVICE_LINE_MEMBER(CBM2_USER_PORT_TAG, cbm2_user_port_device, sp_w),
1543   DEVCB_NULL,//DEVCB_DEVICE_LINE_MEMBER(CBM2_USER_PORT_TAG, cbm2_user_port_device, cnt_w),
15531544   DEVCB_DRIVER_MEMBER(cbm2_state, cia_pa_r),
15541545   DEVCB_DRIVER_MEMBER(cbm2_state, cia_pa_w),
15551546   DEVCB_DRIVER_MEMBER(cbm2_state, cia_pb_r),
r18162r18163
16401631   save_item(NAME(m_tpi2_pa));
16411632   save_item(NAME(m_tpi2_pb));
16421633   save_item(NAME(m_cia_pa));
1634   save_item(NAME(m_ieee_dc));
1635   save_item(NAME(m_ieee_te));
16431636}
16441637
16451638
r18162r18163
23412334//**************************************************************************
23422335
23432336//    YEAR  NAME        PARENT  COMPAT  MACHINE     INPUT   INIT                        COMPANY                         FULLNAME                            FLAGS
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 )
2337COMP( 1983,   p500n,      0,      0,      p500_ntsc,   cbm2,   driver_device,      0,      "Commodore Business Machines",   "P500 ~ C128-40 ~ PET-II (NTSC)",   GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // VIC 64K RAM mode is not supported
2338COMP( 1983,   p500p,      p500n,   0,      p500_pal,   cbm2,   driver_device,      0,      "Commodore Business Machines",   "P500 ~ C128-40 ~ PET-II (PAL)",   GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // VIC 64K RAM mode is not supported
23462339
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 )
2340COMP( 1983,   b500,      p500n,   0,      b128,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "B500 (NTSC)",                  GAME_SUPPORTS_SAVE )
2341COMP( 1983,   b128,      p500n,   0,      b128,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "B128 (NTSC)",                  GAME_SUPPORTS_SAVE )
2342COMP( 1983,   b256,      p500n,   0,      b256,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "B256 (NTSC)",                  GAME_SUPPORTS_SAVE )
2343COMP( 1983,   cbm610,      p500n,   0,      cbm610,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "CBM 610 (PAL)",               GAME_SUPPORTS_SAVE )
2344COMP( 1983,   cbm620,      p500n,   0,      cbm620,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "CBM 620 (PAL)",               GAME_SUPPORTS_SAVE )
2345COMP( 1983,   cbm620hu,   p500n,   0,      cbm620,      cbm2hu,   driver_device,      0,      "Commodore Business Machines",   "CBM 620 (Hungary)",            GAME_SUPPORTS_SAVE )
23532346
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 )
2347COMP( 1983,   b128hp,      p500n,   0,      b128hp,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "B128-80HP (NTSC)",               GAME_SUPPORTS_SAVE )
2348COMP( 1983,   b256hp,      p500n,   0,      b256hp,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "B256-80HP (NTSC)",               GAME_SUPPORTS_SAVE )
2349COMP( 1983,   bx256hp,   p500n,   0,      bx256hp,   cbm2,   driver_device,      0,      "Commodore Business Machines",   "BX256-80HP (NTSC)",            GAME_NOT_WORKING ) // 8088 co-processor is missing
2350COMP( 1983,   cbm710,      p500n,   0,      cbm710,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "CBM 710 (PAL)",               GAME_SUPPORTS_SAVE )
2351COMP( 1983,   cbm720,      p500n,   0,      cbm720,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "CBM 720 (PAL)",               GAME_SUPPORTS_SAVE )
2352COMP( 1983,   cbm720sw,   p500n,   0,      cbm720,      cbm2sw,   driver_device,      0,      "Commodore Business Machines",   "CBM 720 (Sweden/Finland)",         GAME_SUPPORTS_SAVE )
2353COMP( 1983,   cbm730,      p500n,   0,      cbm730,      cbm2,   driver_device,      0,      "Commodore Business Machines",   "CBM 730 (PAL)",               GAME_NOT_WORKING ) // 8088 co-processor is missing

Previous 199869 Revisions Next


© 1997-2024 The MAME Team