trunk/src/mess/drivers/c64.c
| r20728 | r20729 | |
| 1189 | 1189 | MCFG_SOUND_ADD(MOS6581_TAG, SID6581, VIC6567_CLOCK) |
| 1190 | 1190 | MCFG_SOUND_CONFIG(sid_intf) |
| 1191 | 1191 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) |
| 1192 | | MCFG_SOUND_ADD("dac", DAC, 0) |
| 1193 | | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 1194 | 1192 | |
| 1195 | 1193 | // devices |
| 1196 | 1194 | MCFG_PLS100_ADD(PLA_TAG) |
| 1197 | 1195 | MCFG_MOS6526_ADD(MOS6526_1_TAG, VIC6567_CLOCK, 60, cia1_intf) |
| 1198 | 1196 | MCFG_MOS6526_ADD(MOS6526_2_TAG, VIC6567_CLOCK, 60, cia2_intf) |
| 1199 | | MCFG_QUICKLOAD_ADD("quickload", cbm_c64, "p00,prg,t64", CBM_QUICKLOAD_DELAY_SECONDS) |
| 1200 | 1197 | MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, datassette_intf, cbm_datassette_devices, "c1530", NULL) |
| 1201 | 1198 | MCFG_CBM_IEC_ADD(iec_intf, "c1541") |
| 1202 | 1199 | MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL) |
| 1203 | 1200 | MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, "joy", NULL) |
| 1204 | 1201 | MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6567_CLOCK, expansion_intf, c64_expansion_cards, NULL, NULL) |
| 1205 | 1202 | MCFG_C64_USER_PORT_ADD(C64_USER_PORT_TAG, user_intf, c64_user_port_cards, NULL, NULL) |
| 1203 | MCFG_QUICKLOAD_ADD("quickload", cbm_c64, "p00,prg,t64", CBM_QUICKLOAD_DELAY_SECONDS) |
| 1206 | 1204 | |
| 1207 | 1205 | // software list |
| 1208 | 1206 | MCFG_SOFTWARE_LIST_ADD("cart_list_vic10", "vic10") |
| 1209 | | MCFG_SOFTWARE_LIST_FILTER("cart_list_vic10", "NTSC") |
| 1210 | 1207 | MCFG_SOFTWARE_LIST_ADD("cart_list_c64", "c64_cart") |
| 1208 | MCFG_SOFTWARE_LIST_ADD("cass_list", "c64_cass") |
| 1209 | MCFG_SOFTWARE_LIST_ADD("flop_list", "c64_flop") |
| 1210 | MCFG_SOFTWARE_LIST_FILTER("cart_list_vic10", "NTSC") |
| 1211 | 1211 | MCFG_SOFTWARE_LIST_FILTER("cart_list_c64", "NTSC") |
| 1212 | | MCFG_SOFTWARE_LIST_ADD("disk_list", "c64_flop") |
| 1213 | | MCFG_SOFTWARE_LIST_FILTER("disk_list", "NTSC") |
| 1212 | MCFG_SOFTWARE_LIST_FILTER("cass_list", "NTSC") |
| 1213 | MCFG_SOFTWARE_LIST_FILTER("flop_list", "NTSC") |
| 1214 | 1214 | |
| 1215 | 1215 | // internal ram |
| 1216 | 1216 | MCFG_RAM_ADD(RAM_TAG) |
| r20728 | r20729 | |
| 1254 | 1254 | |
| 1255 | 1255 | // devices |
| 1256 | 1256 | MCFG_DEVICE_REMOVE("iec9") |
| 1257 | | MCFG_CBM_IEC_SLOT_ADD("iec9", 8, sx1541_iec_devices, "sx1541", NULL) |
| 1257 | MCFG_CBM_IEC_SLOT_ADD("iec9", 9, sx1541_iec_devices, "sx1541", NULL) |
| 1258 | 1258 | MACHINE_CONFIG_END |
| 1259 | 1259 | |
| 1260 | 1260 | |
| r20728 | r20729 | |
| 1289 | 1289 | MCFG_SOUND_ADD(MOS6581_TAG, SID6581, VIC6569_CLOCK) |
| 1290 | 1290 | MCFG_SOUND_CONFIG(sid_intf) |
| 1291 | 1291 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) |
| 1292 | | MCFG_SOUND_ADD("dac", DAC, 0) |
| 1293 | | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 1294 | 1292 | |
| 1295 | 1293 | // devices |
| 1296 | 1294 | MCFG_PLS100_ADD(PLA_TAG) |
| 1297 | 1295 | MCFG_MOS6526_ADD(MOS6526_1_TAG, VIC6569_CLOCK, 50, cia1_intf) |
| 1298 | 1296 | MCFG_MOS6526_ADD(MOS6526_2_TAG, VIC6569_CLOCK, 50, cia2_intf) |
| 1299 | | MCFG_QUICKLOAD_ADD("quickload", cbm_c64, "p00,prg,t64", CBM_QUICKLOAD_DELAY_SECONDS) |
| 1300 | 1297 | MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, datassette_intf, cbm_datassette_devices, "c1530", NULL) |
| 1301 | 1298 | MCFG_CBM_IEC_ADD(iec_intf, "c1541") |
| 1302 | 1299 | MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL) |
| 1303 | 1300 | MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, "joy", NULL) |
| 1304 | 1301 | MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6569_CLOCK, expansion_intf, c64_expansion_cards, NULL, NULL) |
| 1305 | 1302 | MCFG_C64_USER_PORT_ADD(C64_USER_PORT_TAG, user_intf, c64_user_port_cards, NULL, NULL) |
| 1303 | MCFG_QUICKLOAD_ADD("quickload", cbm_c64, "p00,prg,t64", CBM_QUICKLOAD_DELAY_SECONDS) |
| 1306 | 1304 | |
| 1307 | 1305 | // software list |
| 1308 | 1306 | MCFG_SOFTWARE_LIST_ADD("cart_list_vic10", "vic10") |
| 1309 | | MCFG_SOFTWARE_LIST_FILTER("cart_list_vic10", "PAL") |
| 1310 | 1307 | MCFG_SOFTWARE_LIST_ADD("cart_list_c64", "c64_cart") |
| 1308 | MCFG_SOFTWARE_LIST_ADD("cass_list", "c64_cass") |
| 1309 | MCFG_SOFTWARE_LIST_ADD("flop_list", "c64_flop") |
| 1310 | MCFG_SOFTWARE_LIST_FILTER("cart_list_vic10", "PAL") |
| 1311 | 1311 | MCFG_SOFTWARE_LIST_FILTER("cart_list_c64", "PAL") |
| 1312 | | MCFG_SOFTWARE_LIST_ADD("disk_list", "c64_flop") |
| 1313 | | MCFG_SOFTWARE_LIST_FILTER("disk_list", "PAL") |
| 1312 | MCFG_SOFTWARE_LIST_FILTER("cass_list", "PAL") |
| 1313 | MCFG_SOFTWARE_LIST_FILTER("flop_list", "PAL") |
| 1314 | 1314 | |
| 1315 | 1315 | // internal ram |
| 1316 | 1316 | MCFG_RAM_ADD(RAM_TAG) |
| r20728 | r20729 | |
| 1367 | 1367 | MCFG_SOUND_ADD(MOS6581_TAG, SID8580, VIC6569_CLOCK) |
| 1368 | 1368 | MCFG_SOUND_CONFIG(sid_intf) |
| 1369 | 1369 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) |
| 1370 | | MCFG_SOUND_ADD("dac", DAC, 0) |
| 1371 | | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 1372 | 1370 | |
| 1373 | 1371 | // devices |
| 1374 | 1372 | MCFG_PLS100_ADD(PLA_TAG) |
| r20728 | r20729 | |
| 1379 | 1377 | MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, "joy", NULL) |
| 1380 | 1378 | MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6569_CLOCK, expansion_intf, c64_expansion_cards, NULL, NULL) |
| 1381 | 1379 | MCFG_C64_USER_PORT_ADD(C64_USER_PORT_TAG, user_intf, c64_user_port_cards, NULL, NULL) |
| 1380 | MCFG_QUICKLOAD_ADD("quickload", cbm_c64, "p00,prg,t64", CBM_QUICKLOAD_DELAY_SECONDS) |
| 1382 | 1381 | |
| 1383 | 1382 | // software list |
| 1384 | 1383 | MCFG_SOFTWARE_LIST_ADD("cart_list_vic10", "vic10") |
| 1385 | | MCFG_SOFTWARE_LIST_FILTER("cart_list_vic10", "PAL") |
| 1386 | 1384 | MCFG_SOFTWARE_LIST_ADD("cart_list_c64", "c64_cart") |
| 1385 | MCFG_SOFTWARE_LIST_FILTER("cart_list_vic10", "PAL") |
| 1387 | 1386 | MCFG_SOFTWARE_LIST_FILTER("cart_list_c64", "PAL") |
| 1388 | 1387 | |
| 1389 | 1388 | // internal ram |
trunk/src/mess/drivers/pet2001.c
| r20728 | r20729 | |
| 141 | 141 | - PLA dumps |
| 142 | 142 | - high resolution graphics |
| 143 | 143 | - rom software list |
| 144 | | - user port |
| 145 | | - memory expansion port |
| 146 | 144 | |
| 147 | 145 | */ |
| 148 | 146 | |
| r20728 | r20729 | |
| 158 | 156 | // check_interrupts - |
| 159 | 157 | //------------------------------------------------- |
| 160 | 158 | |
| 161 | | void pet2001_state::check_interrupts() |
| 159 | void pet_state::check_interrupts() |
| 162 | 160 | { |
| 163 | 161 | int irq = m_via_irq || m_pia1a_irq || m_pia1b_irq || m_pia2a_irq || m_pia2b_irq || m_exp_irq; |
| 164 | 162 | |
| r20728 | r20729 | |
| 170 | 168 | // update_speaker - |
| 171 | 169 | //------------------------------------------------- |
| 172 | 170 | |
| 173 | | void pet2001_state::update_speaker() |
| 171 | void pet_state::update_speaker() |
| 174 | 172 | { |
| 175 | 173 | if (m_speaker) |
| 176 | 174 | { |
| r20728 | r20729 | |
| 183 | 181 | // read - |
| 184 | 182 | //------------------------------------------------- |
| 185 | 183 | |
| 186 | | READ8_MEMBER( pet2001_state::read ) |
| 184 | READ8_MEMBER( pet_state::read ) |
| 187 | 185 | { |
| 186 | int sel = offset >> 12; |
| 187 | int norom = m_exp->norom_r(space, offset, sel); |
| 188 | 188 | UINT8 data = 0; |
| 189 | 189 | |
| 190 | | switch (offset >> 12) |
| 190 | switch (sel) |
| 191 | 191 | { |
| 192 | 192 | case SEL0: case SEL1: case SEL2: case SEL3: case SEL4: case SEL5: case SEL6: case SEL7: |
| 193 | 193 | if (offset < m_ram->size()) |
| r20728 | r20729 | |
| 201 | 201 | break; |
| 202 | 202 | |
| 203 | 203 | case SEL9: case SELA: case SELB: case SELC: case SELD: case SELF: |
| 204 | | data = m_rom->base()[offset - 0x9000]; |
| 204 | if (norom) |
| 205 | { |
| 206 | data = m_rom->base()[offset - 0x9000]; |
| 207 | } |
| 205 | 208 | break; |
| 206 | 209 | |
| 207 | 210 | case SELE: |
| r20728 | r20729 | |
| 224 | 227 | data = m_crtc->register_r(space, 0); |
| 225 | 228 | } |
| 226 | 229 | } |
| 227 | | else |
| 230 | else if (norom) |
| 228 | 231 | { |
| 229 | 232 | data = m_rom->base()[offset - 0x9000]; |
| 230 | 233 | } |
| 231 | 234 | break; |
| 232 | 235 | } |
| 233 | 236 | |
| 234 | | return data; |
| 237 | return m_exp->read(space, offset, data, sel); |
| 235 | 238 | } |
| 236 | 239 | |
| 237 | 240 | |
| r20728 | r20729 | |
| 239 | 242 | // write - |
| 240 | 243 | //------------------------------------------------- |
| 241 | 244 | |
| 242 | | WRITE8_MEMBER( pet2001_state::write ) |
| 245 | WRITE8_MEMBER( pet_state::write ) |
| 243 | 246 | { |
| 244 | | switch (offset >> 12) |
| 247 | int sel = offset >> 12; |
| 248 | |
| 249 | switch (sel) |
| 245 | 250 | { |
| 246 | 251 | case SEL0: case SEL1: case SEL2: case SEL3: case SEL4: case SEL5: case SEL6: case SEL7: |
| 247 | 252 | if (offset < m_ram->size()) |
| r20728 | r20729 | |
| 283 | 288 | } |
| 284 | 289 | break; |
| 285 | 290 | } |
| 291 | |
| 292 | m_exp->write(space, offset, data, sel); |
| 286 | 293 | } |
| 287 | 294 | |
| 288 | 295 | |
| r20728 | r20729 | |
| 295 | 302 | // ADDRESS_MAP( pet2001_mem ) |
| 296 | 303 | //------------------------------------------------- |
| 297 | 304 | |
| 298 | | static ADDRESS_MAP_START( pet2001_mem, AS_PROGRAM, 8, pet2001_state ) |
| 305 | static ADDRESS_MAP_START( pet2001_mem, AS_PROGRAM, 8, pet_state ) |
| 299 | 306 | AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write) |
| 300 | 307 | ADDRESS_MAP_END |
| 301 | 308 | |
| r20728 | r20729 | |
| 554 | 561 | // via6522_interface via_intf |
| 555 | 562 | //------------------------------------------------- |
| 556 | 563 | |
| 557 | | WRITE_LINE_MEMBER( pet2001_state::via_irq_w ) |
| 564 | WRITE_LINE_MEMBER( pet_state::via_irq_w ) |
| 558 | 565 | { |
| 559 | 566 | m_via_irq = state; |
| 560 | 567 | |
| 561 | 568 | check_interrupts(); |
| 562 | 569 | } |
| 563 | 570 | |
| 564 | | READ8_MEMBER( pet2001_state::via_pb_r ) |
| 571 | READ8_MEMBER( pet_state::via_pb_r ) |
| 565 | 572 | { |
| 566 | 573 | /* |
| 567 | 574 | |
| r20728 | r20729 | |
| 591 | 598 | return data; |
| 592 | 599 | } |
| 593 | 600 | |
| 594 | | WRITE8_MEMBER( pet2001_state::via_pb_w ) |
| 601 | WRITE8_MEMBER( pet_state::via_pb_w ) |
| 595 | 602 | { |
| 596 | 603 | /* |
| 597 | 604 | |
| r20728 | r20729 | |
| 618 | 625 | m_cassette2->motor_w(BIT(data, 4)); |
| 619 | 626 | } |
| 620 | 627 | |
| 621 | | WRITE_LINE_MEMBER( pet2001_state::via_ca2_w ) |
| 628 | WRITE_LINE_MEMBER( pet_state::via_ca2_w ) |
| 622 | 629 | { |
| 623 | 630 | m_graphic = state; |
| 624 | 631 | } |
| 625 | 632 | |
| 626 | | WRITE_LINE_MEMBER( pet2001_state::via_cb2_w ) |
| 633 | WRITE_LINE_MEMBER( pet_state::via_cb2_w ) |
| 627 | 634 | { |
| 628 | 635 | m_via_cb2 = state; |
| 629 | 636 | update_speaker(); |
| 630 | 637 | |
| 631 | | //m_user->cb2_w(state); |
| 638 | m_user->cb2_w(state); |
| 632 | 639 | } |
| 633 | 640 | |
| 634 | 641 | const via6522_interface via_intf = |
| 635 | 642 | { |
| 636 | | DEVCB_NULL,//DEVCB_DEVICE_MEMBER(PET_USER_PORT_TAG, pet_user_port_device, pa_r), |
| 637 | | DEVCB_DRIVER_MEMBER(pet2001_state, via_pb_r), |
| 643 | DEVCB_DEVICE_MEMBER(PET_USER_PORT_TAG, pet_user_port_device, pa_r), |
| 644 | DEVCB_DRIVER_MEMBER(pet_state, via_pb_r), |
| 638 | 645 | DEVCB_NULL, |
| 639 | 646 | DEVCB_DEVICE_LINE_MEMBER(PET_DATASSETTE_PORT2_TAG, pet_datassette_port_device, read), |
| 640 | 647 | DEVCB_NULL, |
| 641 | 648 | DEVCB_NULL, |
| 642 | | DEVCB_NULL,//DEVCB_DEVICE_MEMBER(PET_USER_PORT_TAG, pet_user_port_device, pa_w), |
| 643 | | DEVCB_DRIVER_MEMBER(pet2001_state, via_pb_w), |
| 644 | | DEVCB_NULL,//DEVCB_DEVICE_LINE_MEMBER(PET_USER_PORT_TAG, pet_user_port_device, ca1_w), |
| 645 | | DEVCB_DRIVER_LINE_MEMBER(pet2001_state, via_ca2_w), |
| 649 | DEVCB_DEVICE_MEMBER(PET_USER_PORT_TAG, pet_user_port_device, pa_w), |
| 650 | DEVCB_DRIVER_MEMBER(pet_state, via_pb_w), |
| 651 | DEVCB_DEVICE_LINE_MEMBER(PET_USER_PORT_TAG, pet_user_port_device, ca1_w), |
| 652 | DEVCB_DRIVER_LINE_MEMBER(pet_state, via_ca2_w), |
| 646 | 653 | DEVCB_NULL, |
| 647 | | DEVCB_DRIVER_LINE_MEMBER(pet2001_state, via_cb2_w), |
| 648 | | DEVCB_DRIVER_LINE_MEMBER(pet2001_state, via_irq_w) |
| 654 | DEVCB_DRIVER_LINE_MEMBER(pet_state, via_cb2_w), |
| 655 | DEVCB_DRIVER_LINE_MEMBER(pet_state, via_irq_w) |
| 649 | 656 | }; |
| 650 | 657 | |
| 651 | 658 | |
| r20728 | r20729 | |
| 653 | 660 | // pia6821_interface pia1_intf |
| 654 | 661 | //------------------------------------------------- |
| 655 | 662 | |
| 656 | | WRITE_LINE_MEMBER( pet2001_state::pia1_irqa_w ) |
| 663 | WRITE_LINE_MEMBER( pet_state::pia1_irqa_w ) |
| 657 | 664 | { |
| 658 | 665 | m_pia1a_irq = state; |
| 659 | 666 | |
| 660 | 667 | check_interrupts(); |
| 661 | 668 | } |
| 662 | 669 | |
| 663 | | WRITE_LINE_MEMBER( pet2001_state::pia1_irqb_w ) |
| 670 | WRITE_LINE_MEMBER( pet_state::pia1_irqb_w ) |
| 664 | 671 | { |
| 665 | 672 | m_pia1b_irq = state; |
| 666 | 673 | |
| 667 | 674 | check_interrupts(); |
| 668 | 675 | } |
| 669 | 676 | |
| 670 | | READ8_MEMBER( pet2001_state::pia1_pa_r ) |
| 677 | READ8_MEMBER( pet_state::pia1_pa_r ) |
| 671 | 678 | { |
| 672 | 679 | /* |
| 673 | 680 | |
| r20728 | r20729 | |
| 702 | 709 | return data; |
| 703 | 710 | } |
| 704 | 711 | |
| 705 | | WRITE8_MEMBER( pet2001_state::pia1_pa_w ) |
| 712 | WRITE8_MEMBER( pet_state::pia1_pa_w ) |
| 706 | 713 | { |
| 707 | 714 | /* |
| 708 | 715 | |
| r20728 | r20729 | |
| 727 | 734 | update_speaker(); |
| 728 | 735 | } |
| 729 | 736 | |
| 730 | | READ8_MEMBER( pet2001_state::pia1_pb_r ) |
| 737 | READ8_MEMBER( pet_state::pia1_pb_r ) |
| 731 | 738 | { |
| 732 | 739 | UINT8 data = 0xff; |
| 733 | 740 | |
| r20728 | r20729 | |
| 769 | 776 | return data; |
| 770 | 777 | } |
| 771 | 778 | |
| 772 | | READ_LINE_MEMBER( pet2001_state::pia1_cb1_r ) |
| 779 | READ_LINE_MEMBER( pet_state::pia1_cb1_r ) |
| 773 | 780 | { |
| 774 | 781 | return (m_crtc ? m_crtc->vsync_r() : m_sync); |
| 775 | 782 | } |
| 776 | 783 | |
| 777 | | WRITE_LINE_MEMBER( pet2001_state::pia1_ca2_w ) |
| 784 | WRITE_LINE_MEMBER( pet_state::pia1_ca2_w ) |
| 778 | 785 | { |
| 779 | 786 | m_ieee->eoi_w(state); |
| 780 | 787 | |
| r20728 | r20729 | |
| 783 | 790 | |
| 784 | 791 | const pia6821_interface pia1_intf = |
| 785 | 792 | { |
| 786 | | DEVCB_DRIVER_MEMBER(pet2001_state, pia1_pa_r), |
| 787 | | DEVCB_DRIVER_MEMBER(pet2001_state, pia1_pb_r), |
| 793 | DEVCB_DRIVER_MEMBER(pet_state, pia1_pa_r), |
| 794 | DEVCB_DRIVER_MEMBER(pet_state, pia1_pb_r), |
| 788 | 795 | DEVCB_DEVICE_LINE_MEMBER(PET_DATASSETTE_PORT_TAG, pet_datassette_port_device, read), |
| 789 | | DEVCB_DRIVER_LINE_MEMBER(pet2001_state, pia1_cb1_r), |
| 796 | DEVCB_DRIVER_LINE_MEMBER(pet_state, pia1_cb1_r), |
| 790 | 797 | DEVCB_NULL, |
| 791 | 798 | DEVCB_NULL, |
| 792 | | DEVCB_DRIVER_MEMBER(pet2001_state, pia1_pa_w), |
| 799 | DEVCB_DRIVER_MEMBER(pet_state, pia1_pa_w), |
| 793 | 800 | DEVCB_NULL, |
| 794 | | DEVCB_DRIVER_LINE_MEMBER(pet2001_state, pia1_ca2_w), |
| 801 | DEVCB_DRIVER_LINE_MEMBER(pet_state, pia1_ca2_w), |
| 795 | 802 | DEVCB_DEVICE_LINE_MEMBER(PET_DATASSETTE_PORT_TAG, pet_datassette_port_device, motor_w), |
| 796 | | DEVCB_DRIVER_LINE_MEMBER(pet2001_state, pia1_irqa_w), |
| 797 | | DEVCB_DRIVER_LINE_MEMBER(pet2001_state, pia1_irqb_w) |
| 803 | DEVCB_DRIVER_LINE_MEMBER(pet_state, pia1_irqa_w), |
| 804 | DEVCB_DRIVER_LINE_MEMBER(pet_state, pia1_irqb_w) |
| 798 | 805 | }; |
| 799 | 806 | |
| 800 | 807 | const pia6821_interface pet2001b_pia1_intf = |
| 801 | 808 | { |
| 802 | | DEVCB_DRIVER_MEMBER(pet2001_state, pia1_pa_r), |
| 809 | DEVCB_DRIVER_MEMBER(pet_state, pia1_pa_r), |
| 803 | 810 | DEVCB_DRIVER_MEMBER(pet2001b_state, pia1_pb_r), |
| 804 | 811 | DEVCB_DEVICE_LINE_MEMBER(PET_DATASSETTE_PORT_TAG, pet_datassette_port_device, read), |
| 805 | | DEVCB_DRIVER_LINE_MEMBER(pet2001_state, pia1_cb1_r), |
| 812 | DEVCB_DRIVER_LINE_MEMBER(pet_state, pia1_cb1_r), |
| 806 | 813 | DEVCB_NULL, |
| 807 | 814 | DEVCB_NULL, |
| 808 | | DEVCB_DRIVER_MEMBER(pet2001_state, pia1_pa_w), |
| 815 | DEVCB_DRIVER_MEMBER(pet_state, pia1_pa_w), |
| 809 | 816 | DEVCB_NULL, |
| 810 | | DEVCB_DRIVER_LINE_MEMBER(pet2001_state, pia1_ca2_w), |
| 817 | DEVCB_DRIVER_LINE_MEMBER(pet_state, pia1_ca2_w), |
| 811 | 818 | DEVCB_DEVICE_LINE_MEMBER(PET_DATASSETTE_PORT_TAG, pet_datassette_port_device, motor_w), |
| 812 | | DEVCB_DRIVER_LINE_MEMBER(pet2001_state, pia1_irqa_w), |
| 813 | | DEVCB_DRIVER_LINE_MEMBER(pet2001_state, pia1_irqb_w) |
| 819 | DEVCB_DRIVER_LINE_MEMBER(pet_state, pia1_irqa_w), |
| 820 | DEVCB_DRIVER_LINE_MEMBER(pet_state, pia1_irqb_w) |
| 814 | 821 | }; |
| 815 | 822 | |
| 816 | 823 | |
| r20728 | r20729 | |
| 818 | 825 | // pia6821_interface pia2_intf |
| 819 | 826 | //------------------------------------------------- |
| 820 | 827 | |
| 821 | | WRITE_LINE_MEMBER( pet2001_state::pia2_irqa_w ) |
| 828 | WRITE_LINE_MEMBER( pet_state::pia2_irqa_w ) |
| 822 | 829 | { |
| 823 | 830 | m_pia2a_irq = state; |
| 824 | 831 | |
| 825 | 832 | check_interrupts(); |
| 826 | 833 | } |
| 827 | 834 | |
| 828 | | WRITE_LINE_MEMBER( pet2001_state::pia2_irqb_w ) |
| 835 | WRITE_LINE_MEMBER( pet_state::pia2_irqb_w ) |
| 829 | 836 | { |
| 830 | 837 | m_pia2b_irq = state; |
| 831 | 838 | |
| r20728 | r20729 | |
| 844 | 851 | DEVCB_DEVICE_MEMBER(IEEE488_TAG, ieee488_device, dio_w), |
| 845 | 852 | DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, ndac_w), |
| 846 | 853 | DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, dav_w), |
| 847 | | DEVCB_DRIVER_LINE_MEMBER(pet2001_state, pia2_irqa_w), |
| 848 | | DEVCB_DRIVER_LINE_MEMBER(pet2001_state, pia2_irqb_w) |
| 854 | DEVCB_DRIVER_LINE_MEMBER(pet_state, pia2_irqa_w), |
| 855 | DEVCB_DRIVER_LINE_MEMBER(pet_state, pia2_irqb_w) |
| 849 | 856 | }; |
| 850 | 857 | |
| 851 | 858 | |
| r20728 | r20729 | |
| 886 | 893 | }; |
| 887 | 894 | |
| 888 | 895 | |
| 896 | //------------------------------------------------- |
| 897 | // PET_USER_PORT_INTERFACE( user_intf ) |
| 898 | //------------------------------------------------- |
| 889 | 899 | |
| 900 | static PET_USER_PORT_INTERFACE( user_intf ) |
| 901 | { |
| 902 | DEVCB_DEVICE_LINE_MEMBER(M6522_TAG, via6522_device, write_ca1), |
| 903 | DEVCB_DEVICE_LINE_MEMBER(M6522_TAG, via6522_device, write_cb2) |
| 904 | }; |
| 905 | |
| 906 | |
| 907 | |
| 890 | 908 | //************************************************************************** |
| 891 | 909 | // VIDEO |
| 892 | 910 | //************************************************************************** |
| r20728 | r20729 | |
| 895 | 913 | // TIMER_DEVICE_CALLBACK( sync_tick ) |
| 896 | 914 | //------------------------------------------------- |
| 897 | 915 | |
| 898 | | TIMER_DEVICE_CALLBACK_MEMBER( pet2001_state::sync_tick ) |
| 916 | TIMER_DEVICE_CALLBACK_MEMBER( pet_state::sync_tick ) |
| 899 | 917 | { |
| 900 | 918 | m_sync = !m_sync; |
| 901 | 919 | |
| r20728 | r20729 | |
| 907 | 925 | // SCREEN_UPDATE( pet2001 ) |
| 908 | 926 | //------------------------------------------------- |
| 909 | 927 | |
| 910 | | UINT32 pet2001_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) |
| 928 | UINT32 pet_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) |
| 911 | 929 | { |
| 912 | 930 | for (int y = 0; y < 200; y++) |
| 913 | 931 | { |
| r20728 | r20729 | |
| 1004 | 1022 | // MACHINE_START( pet ) |
| 1005 | 1023 | //------------------------------------------------- |
| 1006 | 1024 | |
| 1007 | | MACHINE_START_MEMBER( pet2001_state, pet ) |
| 1025 | MACHINE_START_MEMBER( pet_state, pet ) |
| 1008 | 1026 | { |
| 1009 | 1027 | // allocate memory |
| 1010 | 1028 | m_video_ram.allocate(m_video_ram_size); |
| r20728 | r20729 | |
| 1044 | 1062 | // MACHINE_START( pet2001 ) |
| 1045 | 1063 | //------------------------------------------------- |
| 1046 | 1064 | |
| 1047 | | MACHINE_START_MEMBER( pet2001_state, pet2001 ) |
| 1065 | MACHINE_START_MEMBER( pet_state, pet2001 ) |
| 1048 | 1066 | { |
| 1049 | 1067 | m_video_ram_size = 0x400; |
| 1050 | 1068 | |
| r20728 | r20729 | |
| 1056 | 1074 | // MACHINE_RESET( pet ) |
| 1057 | 1075 | //------------------------------------------------- |
| 1058 | 1076 | |
| 1059 | | MACHINE_RESET_MEMBER( pet2001_state, pet ) |
| 1077 | MACHINE_RESET_MEMBER( pet_state, pet ) |
| 1060 | 1078 | { |
| 1061 | 1079 | m_maincpu->reset(); |
| 1062 | 1080 | |
| r20728 | r20729 | |
| 1064 | 1082 | m_pia1->reset(); |
| 1065 | 1083 | m_pia2->reset(); |
| 1066 | 1084 | |
| 1067 | | //m_exp->reset(); |
| 1085 | m_exp->reset(); |
| 1068 | 1086 | } |
| 1069 | 1087 | |
| 1070 | 1088 | |
| r20728 | r20729 | |
| 1144 | 1162 | // MACHINE_CONFIG( pet ) |
| 1145 | 1163 | //------------------------------------------------- |
| 1146 | 1164 | |
| 1147 | | static MACHINE_CONFIG_START( pet, pet2001_state ) |
| 1148 | | MCFG_MACHINE_START_OVERRIDE(pet2001_state, pet2001) |
| 1149 | | MCFG_MACHINE_RESET_OVERRIDE(pet2001_state, pet) |
| 1165 | static MACHINE_CONFIG_START( pet, pet_state ) |
| 1166 | MCFG_MACHINE_START_OVERRIDE(pet_state, pet2001) |
| 1167 | MCFG_MACHINE_RESET_OVERRIDE(pet_state, pet) |
| 1150 | 1168 | |
| 1151 | 1169 | // basic machine hardware |
| 1152 | 1170 | MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_8MHz/8) |
| r20728 | r20729 | |
| 1158 | 1176 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) |
| 1159 | 1177 | MCFG_SCREEN_SIZE(320, 200) |
| 1160 | 1178 | MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1) |
| 1161 | | MCFG_SCREEN_UPDATE_DRIVER(pet2001_state, screen_update) |
| 1162 | | MCFG_TIMER_DRIVER_ADD_PERIODIC("sync_timer", pet2001_state, sync_tick, attotime::from_hz(120)) |
| 1179 | MCFG_SCREEN_UPDATE_DRIVER(pet_state, screen_update) |
| 1180 | MCFG_TIMER_DRIVER_ADD_PERIODIC("sync_timer", pet_state, sync_tick, attotime::from_hz(120)) |
| 1163 | 1181 | |
| 1164 | 1182 | // devices |
| 1165 | 1183 | MCFG_VIA6522_ADD(M6522_TAG, XTAL_8MHz/8, via_intf) |
| 1166 | 1184 | MCFG_PIA6821_ADD(M6520_1_TAG, pia1_intf) |
| 1167 | 1185 | MCFG_PIA6821_ADD(M6520_2_TAG, pia2_intf) |
| 1168 | 1186 | MCFG_CBM_IEEE488_ADD(ieee488_intf, "c4040") |
| 1169 | | MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, datassette_intf, cbm_datassette_devices, "c1530", NULL) |
| 1187 | MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, datassette_intf, cbm_datassette_devices, "c2n", NULL) |
| 1170 | 1188 | MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT2_TAG, datassette2_intf, cbm_datassette_devices, NULL, NULL) |
| 1171 | | //MCFG_QUICKLOAD_ADD("quickload", cbm_pet, "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS) |
| 1172 | | //MCFG_PET_EXPANSION_SLOT_ADD(PET_EXPANSION_SLOT_TAG, XTAL_8MHz/8, pet_expansion_cards, NULL, NULL) |
| 1173 | | //MCFG_PET_USER_PORT_ADD(PET_USER_PORT_TAG, user_intf, pet_user_port_cards, NULL, NULL) |
| 1189 | MCFG_PET_EXPANSION_SLOT_ADD(PET_EXPANSION_SLOT_TAG, XTAL_8MHz/8, pet_expansion_cards, NULL, NULL) |
| 1190 | MCFG_PET_USER_PORT_ADD(PET_USER_PORT_TAG, user_intf, pet_user_port_cards, NULL, NULL) |
| 1191 | MCFG_QUICKLOAD_ADD("quickload", cbm_pet, "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS) |
| 1174 | 1192 | |
| 1175 | 1193 | // software lists |
| 1194 | MCFG_SOFTWARE_LIST_ADD("cass_list", "pet_cass") |
| 1176 | 1195 | MCFG_SOFTWARE_LIST_ADD("flop_list", "pet_flop") |
| 1177 | 1196 | MACHINE_CONFIG_END |
| 1178 | 1197 | |
| r20728 | r20729 | |
| 1441 | 1460 | MCFG_PIA6821_ADD(M6520_1_TAG, pia1_intf) |
| 1442 | 1461 | MCFG_PIA6821_ADD(M6520_2_TAG, pia2_intf) |
| 1443 | 1462 | MCFG_CBM_IEEE488_ADD(ieee488_intf, "c8050") |
| 1444 | | MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, datassette_intf, cbm_datassette_devices, "c1530", NULL) |
| 1463 | MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, datassette_intf, cbm_datassette_devices, "c2n", NULL) |
| 1445 | 1464 | MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT2_TAG, datassette2_intf, cbm_datassette_devices, NULL, NULL) |
| 1446 | 1465 | //MCFG_QUICKLOAD_ADD("quickload", cbm_pet, "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS) |
| 1447 | | //MCFG_PET_EXPANSION_SLOT_ADD(PET_EXPANSION_SLOT_TAG, XTAL_16MHz/16, pet_expansion_cards, NULL, NULL) |
| 1448 | | //MCFG_PET_USER_PORT_ADD(PET_USER_PORT_TAG, user_intf, pet_user_port_cards, NULL, NULL) |
| 1466 | MCFG_PET_EXPANSION_SLOT_ADD(PET_EXPANSION_SLOT_TAG, XTAL_16MHz/16, pet_expansion_cards, NULL, NULL) |
| 1467 | MCFG_PET_USER_PORT_ADD(PET_USER_PORT_TAG, user_intf, pet_user_port_cards, NULL, NULL) |
| 1449 | 1468 | |
| 1450 | 1469 | // software lists |
| 1470 | MCFG_SOFTWARE_LIST_ADD("cass_list", "pet_cass") |
| 1451 | 1471 | MCFG_SOFTWARE_LIST_ADD("flop_list", "pet_flop") |
| 1452 | 1472 | MACHINE_CONFIG_END |
| 1453 | 1473 | |
trunk/src/mess/drivers/cbm2.c
| r20728 | r20729 | |
| 4 | 4 | |
| 5 | 5 | - 8088 board |
| 6 | 6 | - CIA timers fail in burn-in test |
| 7 | | - shift lock |
| 8 | | - Hungarian keyboard |
| 9 | 7 | - cbm620hu charom banking? |
| 10 | | - DIN roms 324866-03a / 324867-02 |
| 11 | | - user port |
| 12 | 8 | |
| 13 | 9 | */ |
| 14 | 10 | |
| r20728 | r20729 | |
| 1041 | 1037 | |
| 1042 | 1038 | |
| 1043 | 1039 | //------------------------------------------------- |
| 1044 | | // INPUT_PORTS( cbm2hu ) |
| 1040 | // INPUT_PORTS( cbm2_de ) |
| 1045 | 1041 | //------------------------------------------------- |
| 1046 | 1042 | |
| 1047 | | static INPUT_PORTS_START( cbm2hu ) |
| 1043 | static INPUT_PORTS_START( cbm2_de ) |
| 1048 | 1044 | PORT_INCLUDE(cbm2) |
| 1049 | 1045 | INPUT_PORTS_END |
| 1050 | 1046 | |
| 1051 | 1047 | |
| 1052 | 1048 | //------------------------------------------------- |
| 1053 | | // INPUT_PORTS( cbm2sw ) |
| 1049 | // INPUT_PORTS( cbm2_hu ) |
| 1054 | 1050 | //------------------------------------------------- |
| 1055 | 1051 | |
| 1056 | | static INPUT_PORTS_START( cbm2sw ) |
| 1052 | static INPUT_PORTS_START( cbm2_hu ) |
| 1057 | 1053 | PORT_INCLUDE(cbm2) |
| 1054 | INPUT_PORTS_END |
| 1058 | 1055 | |
| 1056 | |
| 1057 | //------------------------------------------------- |
| 1058 | // INPUT_PORTS( cbm2_se ) |
| 1059 | //------------------------------------------------ |
| 1060 | |
| 1061 | static INPUT_PORTS_START( cbm2_se ) |
| 1062 | PORT_INCLUDE(cbm2) |
| 1063 | |
| 1059 | 1064 | PORT_MODIFY("PA0") |
| 1060 | 1065 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON) PORT_CHAR(0x00F6) PORT_CHAR(0x00D6) |
| 1061 | 1066 | |
| r20728 | r20729 | |
| 1153 | 1158 | { |
| 1154 | 1159 | case 1: data = m_joy1->pot_x_r(); break; |
| 1155 | 1160 | case 2: data = m_joy2->pot_x_r(); break; |
| 1156 | | case 3: break; // TODO pot1 and pot2 in series |
| 1161 | case 3: |
| 1162 | if (m_joy1->has_pot_x() && m_joy2->has_pot_x()) |
| 1163 | { |
| 1164 | data = 1 / (1 / m_joy1->pot_x_r() + 1 / m_joy2->pot_x_r()); |
| 1165 | } |
| 1166 | else if (m_joy1->has_pot_x()) |
| 1167 | { |
| 1168 | data = m_joy1->pot_x_r(); |
| 1169 | } |
| 1170 | else if (m_joy2->has_pot_x()) |
| 1171 | { |
| 1172 | data = m_joy2->pot_x_r(); |
| 1173 | } |
| 1174 | break; |
| 1157 | 1175 | } |
| 1158 | 1176 | |
| 1159 | 1177 | return data; |
| r20728 | r20729 | |
| 1167 | 1185 | { |
| 1168 | 1186 | case 1: data = m_joy1->pot_y_r(); break; |
| 1169 | 1187 | case 2: data = m_joy2->pot_y_r(); break; |
| 1170 | | case 3: break; // TODO pot1 and pot2 in series |
| 1188 | case 3: |
| 1189 | if (m_joy1->has_pot_y() && m_joy2->has_pot_y()) |
| 1190 | { |
| 1191 | data = 1 / (1 / m_joy1->pot_y_r() + 1 / m_joy2->pot_y_r()); |
| 1192 | } |
| 1193 | else if (m_joy1->has_pot_y()) |
| 1194 | { |
| 1195 | data = m_joy1->pot_y_r(); |
| 1196 | } |
| 1197 | else if (m_joy2->has_pot_y()) |
| 1198 | { |
| 1199 | data = m_joy2->pot_y_r(); |
| 1200 | } |
| 1201 | break; |
| 1171 | 1202 | } |
| 1172 | 1203 | |
| 1173 | 1204 | return data; |
| r20728 | r20729 | |
| 1283 | 1314 | data |= m_ieee2->srq_r() << 1; |
| 1284 | 1315 | |
| 1285 | 1316 | // user port |
| 1286 | | //data |= m_user->pb2_r() << 2; |
| 1287 | | //data |= m_user->pb3_r() << 3; |
| 1317 | data |= m_user->pb2_r() << 2; |
| 1318 | data |= m_user->pb3_r() << 3; |
| 1288 | 1319 | |
| 1289 | 1320 | // cassette |
| 1290 | 1321 | data |= m_cassette->sense_r() << 7; |
| r20728 | r20729 | |
| 1314 | 1345 | m_ieee2->srq_w(BIT(data, 1)); |
| 1315 | 1346 | |
| 1316 | 1347 | // user port |
| 1317 | | //m_user->pb2_w(BIT(data, 2)); |
| 1318 | | //m_user->pb3_w(BIT(data, 3)); |
| 1348 | m_user->pb2_w(BIT(data, 2)); |
| 1349 | m_user->pb3_w(BIT(data, 3)); |
| 1319 | 1350 | |
| 1320 | 1351 | // memory |
| 1321 | 1352 | m_dramon = BIT(data, 4); |
| r20728 | r20729 | |
| 1553 | 1584 | data |= m_ieee1->read(space, 0); |
| 1554 | 1585 | |
| 1555 | 1586 | // user port |
| 1556 | | //data |= m_user->data1_r(); |
| 1587 | data |= m_user->d1_r(space, 0); |
| 1557 | 1588 | |
| 1558 | 1589 | // joystick |
| 1559 | | //data |= BIT(m_joy1->joy_r(), 5) << 6; |
| 1560 | | //data |= BIT(m_joy2->joy_r(), 5) << 7; |
| 1590 | data &= ~(!BIT(m_joy1->joy_r(), 5) << 6); |
| 1591 | data &= ~(!BIT(m_joy2->joy_r(), 5) << 7); |
| 1561 | 1592 | |
| 1562 | 1593 | return data; |
| 1563 | 1594 | } |
| r20728 | r20729 | |
| 1583 | 1614 | m_ieee1->write(space, 0, data); |
| 1584 | 1615 | |
| 1585 | 1616 | // user port |
| 1586 | | //m_user->data1_w(data); |
| 1617 | m_user->d1_w(space, 0, data); |
| 1587 | 1618 | |
| 1588 | 1619 | // joystick |
| 1589 | 1620 | m_cia_pa = data; |
| r20728 | r20729 | |
| 1613 | 1644 | data |= (m_joy2->joy_r() & 0x0f) << 4; |
| 1614 | 1645 | |
| 1615 | 1646 | // user port |
| 1616 | | //data &= m_user->data2_r(); |
| 1647 | data &= m_user->d2_r(space, 0); |
| 1617 | 1648 | |
| 1618 | 1649 | return data; |
| 1619 | 1650 | } |
| 1620 | 1651 | |
| 1621 | | WRITE8_MEMBER( cbm2_state::cia_pb_w ) |
| 1622 | | { |
| 1623 | | /* |
| 1624 | | |
| 1625 | | bit description |
| 1626 | | |
| 1627 | | 0 user port 2D0 |
| 1628 | | 1 user port 2D1 |
| 1629 | | 2 user port 2D2 |
| 1630 | | 3 user port 2D3 |
| 1631 | | 4 user port 2D4 |
| 1632 | | 5 user port 2D5 |
| 1633 | | 6 user port 2D6 |
| 1634 | | 7 user port 2D7 |
| 1635 | | |
| 1636 | | */ |
| 1637 | | |
| 1638 | | //m_user->data2_w(data); |
| 1639 | | } |
| 1640 | | |
| 1641 | 1652 | static MOS6526_INTERFACE( cia_intf ) |
| 1642 | 1653 | { |
| 1643 | 1654 | DEVCB_DEVICE_LINE_MEMBER(MOS6525_1_TAG, tpi6525_device, i2_w), |
| 1644 | | DEVCB_NULL,//DEVCB_DEVICE_LINE_MEMBER(CBM2_USER_PORT_TAG, cbm2_user_port_device, pc_w), |
| 1645 | | DEVCB_NULL,//DEVCB_DEVICE_LINE_MEMBER(CBM2_USER_PORT_TAG, cbm2_user_port_device, sp_w), |
| 1646 | | DEVCB_NULL,//DEVCB_DEVICE_LINE_MEMBER(CBM2_USER_PORT_TAG, cbm2_user_port_device, cnt_w), |
| 1655 | DEVCB_DEVICE_LINE_MEMBER(CBM2_USER_PORT_TAG, cbm2_user_port_device, pc_w), |
| 1656 | DEVCB_DEVICE_LINE_MEMBER(CBM2_USER_PORT_TAG, cbm2_user_port_device, sp_w), |
| 1657 | DEVCB_DEVICE_LINE_MEMBER(CBM2_USER_PORT_TAG, cbm2_user_port_device, cnt_w), |
| 1647 | 1658 | DEVCB_DRIVER_MEMBER(cbm2_state, cia_pa_r), |
| 1648 | 1659 | DEVCB_DRIVER_MEMBER(cbm2_state, cia_pa_w), |
| 1649 | 1660 | DEVCB_DRIVER_MEMBER(cbm2_state, cia_pb_r), |
| 1650 | | DEVCB_DRIVER_MEMBER(cbm2_state, cia_pb_w), |
| 1661 | DEVCB_DEVICE_MEMBER(CBM2_USER_PORT_TAG, cbm2_user_port_device, d2_w) |
| 1651 | 1662 | }; |
| 1652 | 1663 | |
| 1653 | 1664 | |
| r20728 | r20729 | |
| 1918 | 1929 | }; |
| 1919 | 1930 | |
| 1920 | 1931 | |
| 1932 | //------------------------------------------------- |
| 1933 | // CBM2_USER_PORT_INTERFACE( user_intf ) |
| 1934 | //------------------------------------------------- |
| 1921 | 1935 | |
| 1936 | WRITE_LINE_MEMBER( cbm2_state::user_irq_w ) |
| 1937 | { |
| 1938 | m_user_irq = state; |
| 1939 | |
| 1940 | m_maincpu->set_input_line(INPUT_LINE_IRQ0, m_tpi1_irq || m_user_irq); |
| 1941 | } |
| 1942 | |
| 1943 | static CBM2_USER_PORT_INTERFACE( user_intf ) |
| 1944 | { |
| 1945 | DEVCB_DRIVER_LINE_MEMBER(cbm2_state, user_irq_w), |
| 1946 | DEVCB_DEVICE_LINE_MEMBER(MOS6526_TAG, mos6526_device, sp_w), |
| 1947 | DEVCB_DEVICE_LINE_MEMBER(MOS6526_TAG, mos6526_device, cnt_w), |
| 1948 | DEVCB_DEVICE_LINE_MEMBER(MOS6526_TAG, mos6526_device, flag_w) |
| 1949 | }; |
| 1950 | |
| 1951 | |
| 1952 | //------------------------------------------------- |
| 1953 | // CBM2_USER_PORT_INTERFACE( p500_user_intf ) |
| 1954 | //------------------------------------------------- |
| 1955 | |
| 1956 | WRITE_LINE_MEMBER( p500_state::user_irq_w ) |
| 1957 | { |
| 1958 | m_user_irq = state; |
| 1959 | |
| 1960 | m_maincpu->set_input_line(INPUT_LINE_IRQ0, m_vic_irq || m_tpi1_irq || m_user_irq); |
| 1961 | } |
| 1962 | |
| 1963 | static CBM2_USER_PORT_INTERFACE( p500_user_intf ) |
| 1964 | { |
| 1965 | DEVCB_DRIVER_LINE_MEMBER(p500_state, user_irq_w), |
| 1966 | DEVCB_DEVICE_LINE_MEMBER(MOS6526_TAG, mos6526_device, sp_w), |
| 1967 | DEVCB_DEVICE_LINE_MEMBER(MOS6526_TAG, mos6526_device, cnt_w), |
| 1968 | DEVCB_DEVICE_LINE_MEMBER(MOS6526_TAG, mos6526_device, flag_w) |
| 1969 | }; |
| 1970 | |
| 1971 | |
| 1972 | |
| 1922 | 1973 | //************************************************************************** |
| 1923 | 1974 | // MACHINE INITIALIZATION |
| 1924 | 1975 | //************************************************************************** |
| r20728 | r20729 | |
| 2157 | 2208 | MCFG_SOUND_ADD(MOS6851_TAG, SID6581, VIC6567_CLOCK) |
| 2158 | 2209 | MCFG_SOUND_CONFIG(sid_intf) |
| 2159 | 2210 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) |
| 2160 | | MCFG_SOUND_ADD("dac", DAC, 0) |
| 2161 | | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 2162 | 2211 | |
| 2163 | 2212 | // devices |
| 2164 | 2213 | MCFG_PLS100_ADD(PLA1_TAG) |
| r20728 | r20729 | |
| 2174 | 2223 | MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL) |
| 2175 | 2224 | MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, NULL, NULL) |
| 2176 | 2225 | MCFG_CBM2_EXPANSION_SLOT_ADD(CBM2_EXPANSION_SLOT_TAG, VIC6567_CLOCK, cbm2_expansion_cards, NULL, NULL) |
| 2177 | | //MCFG_CBM2_USER_PORT_ADD(CBM2_USER_PORT_TAG, user_intf, cbm2_user_port_cards, NULL, NULL) |
| 2226 | MCFG_CBM2_USER_PORT_ADD(CBM2_USER_PORT_TAG, p500_user_intf, cbm2_user_port_cards, NULL, NULL) |
| 2227 | MCFG_QUICKLOAD_ADD("quickload", p500, "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS) |
| 2178 | 2228 | |
| 2179 | 2229 | // internal ram |
| 2180 | 2230 | MCFG_FRAGMENT_ADD(128k) |
| 2181 | 2231 | |
| 2182 | 2232 | // software list |
| 2233 | MCFG_SOFTWARE_LIST_ADD("cart_list", "cbm2_cart") |
| 2183 | 2234 | MCFG_SOFTWARE_LIST_ADD("flop_list", "p500_flop") |
| 2184 | | MCFG_SOFTWARE_LIST_ADD("cart_list", "cbm2_cart") |
| 2235 | MCFG_SOFTWARE_LIST_FILTER("cart_list", "NTSC") |
| 2236 | MCFG_SOFTWARE_LIST_FILTER("flop_list", "NTSC") |
| 2185 | 2237 | MACHINE_CONFIG_END |
| 2186 | 2238 | |
| 2187 | 2239 | |
| r20728 | r20729 | |
| 2206 | 2258 | MCFG_SOUND_ADD(MOS6851_TAG, SID6581, VIC6569_CLOCK) |
| 2207 | 2259 | MCFG_SOUND_CONFIG(sid_intf) |
| 2208 | 2260 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) |
| 2209 | | MCFG_SOUND_ADD("dac", DAC, 0) |
| 2210 | | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 2211 | 2261 | |
| 2212 | 2262 | // devices |
| 2213 | 2263 | MCFG_PLS100_ADD(PLA1_TAG) |
| r20728 | r20729 | |
| 2223 | 2273 | MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL) |
| 2224 | 2274 | MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, NULL, NULL) |
| 2225 | 2275 | MCFG_CBM2_EXPANSION_SLOT_ADD(CBM2_EXPANSION_SLOT_TAG, VIC6569_CLOCK, cbm2_expansion_cards, NULL, NULL) |
| 2226 | | //MCFG_CBM2_USER_PORT_ADD(CBM2_USER_PORT_TAG, user_intf, cbm2_user_port_cards, NULL, NULL) |
| 2276 | MCFG_CBM2_USER_PORT_ADD(CBM2_USER_PORT_TAG, p500_user_intf, cbm2_user_port_cards, NULL, NULL) |
| 2277 | MCFG_QUICKLOAD_ADD("quickload", p500, "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS) |
| 2227 | 2278 | |
| 2228 | 2279 | // internal ram |
| 2229 | 2280 | MCFG_FRAGMENT_ADD(128k) |
| 2230 | 2281 | |
| 2231 | 2282 | // software list |
| 2283 | MCFG_SOFTWARE_LIST_ADD("cart_list", "cbm2_cart") |
| 2232 | 2284 | MCFG_SOFTWARE_LIST_ADD("flop_list", "p500_flop") |
| 2233 | | MCFG_SOFTWARE_LIST_ADD("cart_list", "cbm2_cart") |
| 2285 | MCFG_SOFTWARE_LIST_FILTER("cart_list", "PAL") |
| 2286 | MCFG_SOFTWARE_LIST_FILTER("flop_list", "PAL") |
| 2234 | 2287 | MACHINE_CONFIG_END |
| 2235 | 2288 | |
| 2236 | 2289 | |
| r20728 | r20729 | |
| 2263 | 2316 | MCFG_SOUND_ADD(MOS6851_TAG, SID6581, XTAL_18MHz/9) |
| 2264 | 2317 | MCFG_SOUND_CONFIG(sid_intf) |
| 2265 | 2318 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) |
| 2266 | | MCFG_SOUND_ADD("dac", DAC, 0) |
| 2267 | | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 2268 | 2319 | |
| 2269 | 2320 | // devices |
| 2270 | 2321 | MCFG_PLS100_ADD(PLA1_TAG) |
| r20728 | r20729 | |
| 2279 | 2330 | MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL) |
| 2280 | 2331 | MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, NULL, NULL) |
| 2281 | 2332 | MCFG_CBM2_EXPANSION_SLOT_ADD(CBM2_EXPANSION_SLOT_TAG, XTAL_18MHz/9, cbm2_expansion_cards, NULL, NULL) |
| 2282 | | //MCFG_CBM2_USER_PORT_ADD(CBM2_USER_PORT_TAG, user_intf, cbm2_user_port_cards, NULL, NULL) |
| 2333 | MCFG_CBM2_USER_PORT_ADD(CBM2_USER_PORT_TAG, user_intf, cbm2_user_port_cards, NULL, NULL) |
| 2334 | MCFG_QUICKLOAD_ADD("quickload", cbmb, "p00,prg,t64", CBM_QUICKLOAD_DELAY_SECONDS) |
| 2283 | 2335 | |
| 2284 | 2336 | // software list |
| 2337 | MCFG_SOFTWARE_LIST_ADD("cart_list", "cbm2_cart") |
| 2285 | 2338 | MCFG_SOFTWARE_LIST_ADD("flop_list", "cbm2_flop") |
| 2286 | | MCFG_SOFTWARE_LIST_ADD("cart_list", "cbm2_cart") |
| 2339 | MCFG_SOFTWARE_LIST_FILTER("cart_list", "NTSC") |
| 2340 | MCFG_SOFTWARE_LIST_FILTER("flop_list", "NTSC") |
| 2287 | 2341 | MACHINE_CONFIG_END |
| 2288 | 2342 | |
| 2289 | 2343 | |
| r20728 | r20729 | |
| 2507 | 2561 | ROM_LOAD( "901237-01.u25", 0x0000, 0x1000, CRC(1acf5098) SHA1(e63bf18da48e5a53c99ef127c1ae721333d1d102) ) |
| 2508 | 2562 | |
| 2509 | 2563 | ROM_REGION( 0xf5, PLA1_TAG, 0 ) |
| 2510 | | ROM_LOAD( "906114-04.bin", 0x00, 0xf5, CRC(ae3ec265) SHA1(334e0bc4b2c957ecb240c051d84372f7b47efba3) ) |
| 2564 | ROM_LOAD( "906114-04.u18", 0x00, 0xf5, CRC(ae3ec265) SHA1(334e0bc4b2c957ecb240c051d84372f7b47efba3) ) |
| 2511 | 2565 | ROM_END |
| 2512 | 2566 | |
| 2513 | 2567 | |
| r20728 | r20729 | |
| 2533 | 2587 | ROM_LOAD( "901237-01.u25", 0x0000, 0x1000, CRC(1acf5098) SHA1(e63bf18da48e5a53c99ef127c1ae721333d1d102) ) |
| 2534 | 2588 | |
| 2535 | 2589 | ROM_REGION( 0xf5, PLA1_TAG, 0 ) |
| 2536 | | ROM_LOAD( "906114-04.bin", 0x00, 0xf5, CRC(ae3ec265) SHA1(334e0bc4b2c957ecb240c051d84372f7b47efba3) ) |
| 2590 | ROM_LOAD( "906114-04.u18", 0x00, 0xf5, CRC(ae3ec265) SHA1(334e0bc4b2c957ecb240c051d84372f7b47efba3) ) |
| 2537 | 2591 | ROM_END |
| 2538 | 2592 | |
| 2539 | 2593 | |
| r20728 | r20729 | |
| 2557 | 2611 | ROM_LOAD( "901237-01.u25", 0x0000, 0x1000, CRC(1acf5098) SHA1(e63bf18da48e5a53c99ef127c1ae721333d1d102) ) |
| 2558 | 2612 | |
| 2559 | 2613 | ROM_REGION( 0xf5, PLA1_TAG, 0 ) |
| 2560 | | ROM_LOAD( "906114-04.bin", 0x00, 0xf5, CRC(ae3ec265) SHA1(334e0bc4b2c957ecb240c051d84372f7b47efba3) ) |
| 2614 | ROM_LOAD( "906114-04.u18", 0x00, 0xf5, CRC(ae3ec265) SHA1(334e0bc4b2c957ecb240c051d84372f7b47efba3) ) |
| 2561 | 2615 | ROM_END |
| 2562 | 2616 | |
| 2563 | 2617 | |
| r20728 | r20729 | |
| 2584 | 2638 | ROM_LOAD( "610.u60", 0x0000, 0x4000, CRC(8eed0d7e) SHA1(9d06c5c3c012204eaaef8b24b1801759b62bf57e) ) |
| 2585 | 2639 | |
| 2586 | 2640 | ROM_REGION( 0x2000, "kernal", 0 ) |
| 2587 | | ROM_LOAD( "kernhun.bin", 0x0000, 0x2000, CRC(0ea8ca4d) SHA1(9977c9f1136ee9c04963e0b50ae0c056efa5663f) ) |
| 2641 | ROM_LOAD( "kernhun.u61", 0x0000, 0x2000, CRC(0ea8ca4d) SHA1(9977c9f1136ee9c04963e0b50ae0c056efa5663f) ) |
| 2588 | 2642 | |
| 2589 | 2643 | ROM_REGION( 0x2000, "charom", 0 ) |
| 2590 | | ROM_LOAD( "charhun.bin", 0x0000, 0x2000, CRC(1fb5e596) SHA1(3254e069f8691b30679b19a9505b6afdfedce6ac) ) |
| 2644 | ROM_LOAD( "charhun.u25", 0x0000, 0x2000, CRC(1fb5e596) SHA1(3254e069f8691b30679b19a9505b6afdfedce6ac) ) |
| 2591 | 2645 | |
| 2592 | 2646 | ROM_REGION( 0xf5, PLA1_TAG, 0 ) |
| 2593 | | ROM_LOAD( "906114-04.bin", 0x00, 0xf5, CRC(ae3ec265) SHA1(334e0bc4b2c957ecb240c051d84372f7b47efba3) ) |
| 2647 | ROM_LOAD( "906114-04.u18", 0x00, 0xf5, CRC(ae3ec265) SHA1(334e0bc4b2c957ecb240c051d84372f7b47efba3) ) |
| 2594 | 2648 | ROM_END |
| 2595 | 2649 | |
| 2596 | 2650 | |
| r20728 | r20729 | |
| 2616 | 2670 | ROM_LOAD( "901232-01.u25", 0x0000, 0x1000, CRC(3a350bc3) SHA1(e7f3cbc8e282f79a00c3e95d75c8d725ee3c6287) ) |
| 2617 | 2671 | |
| 2618 | 2672 | ROM_REGION( 0xf5, PLA1_TAG, 0 ) |
| 2619 | | ROM_LOAD( "906114-05.bin", 0x00, 0xf5, CRC(ff6ba6b6) SHA1(45808c570eb2eda7091c51591b3dbd2db1ac646a) ) |
| 2673 | ROM_LOAD( "906114-05.u75", 0x00, 0xf5, CRC(ff6ba6b6) SHA1(45808c570eb2eda7091c51591b3dbd2db1ac646a) ) |
| 2620 | 2674 | ROM_END |
| 2621 | 2675 | |
| 2622 | 2676 | |
| r20728 | r20729 | |
| 2640 | 2694 | ROM_LOAD( "901232-01.u25", 0x0000, 0x1000, CRC(3a350bc3) SHA1(e7f3cbc8e282f79a00c3e95d75c8d725ee3c6287) ) |
| 2641 | 2695 | |
| 2642 | 2696 | ROM_REGION( 0xf5, PLA1_TAG, 0 ) |
| 2643 | | ROM_LOAD( "906114-05.bin", 0x00, 0xf5, CRC(ff6ba6b6) SHA1(45808c570eb2eda7091c51591b3dbd2db1ac646a) ) |
| 2697 | ROM_LOAD( "906114-05.u75", 0x00, 0xf5, CRC(ff6ba6b6) SHA1(45808c570eb2eda7091c51591b3dbd2db1ac646a) ) |
| 2644 | 2698 | ROM_END |
| 2645 | 2699 | |
| 2646 | 2700 | |
| r20728 | r20729 | |
| 2667 | 2721 | ROM_LOAD( "901232-01.u25", 0x0000, 0x1000, CRC(3a350bc3) SHA1(e7f3cbc8e282f79a00c3e95d75c8d725ee3c6287) ) |
| 2668 | 2722 | |
| 2669 | 2723 | ROM_REGION( 0xf5, PLA1_TAG, 0 ) |
| 2670 | | ROM_LOAD( "906114-05.bin", 0x00, 0xf5, CRC(ff6ba6b6) SHA1(45808c570eb2eda7091c51591b3dbd2db1ac646a) ) |
| 2724 | ROM_LOAD( "906114-05.u75", 0x00, 0xf5, CRC(ff6ba6b6) SHA1(45808c570eb2eda7091c51591b3dbd2db1ac646a) ) |
| 2671 | 2725 | ROM_END |
| 2672 | 2726 | |
| 2673 | 2727 | |
| r20728 | r20729 | |
| 2693 | 2747 | |
| 2694 | 2748 | |
| 2695 | 2749 | //------------------------------------------------- |
| 2750 | // ROM( cbm720_de ) |
| 2751 | //------------------------------------------------- |
| 2752 | |
| 2753 | ROM_START( cbm720_de ) |
| 2754 | ROM_REGION( 0x4000, "basic", 0 ) |
| 2755 | ROM_LOAD( "901241-03.u59", 0x0000, 0x2000, CRC(5c1f3347) SHA1(2d46be2cd89594b718cdd0a86d51b6f628343f42) ) |
| 2756 | ROM_LOAD( "901240-03.u60", 0x2000, 0x2000, CRC(72aa44e1) SHA1(0d7f77746290afba8d0abeb87c9caab9a3ad89ce) ) |
| 2757 | |
| 2758 | ROM_REGION( 0x2000, "kernal", 0 ) |
| 2759 | ROM_LOAD( "324886-03a.u61", 0x0000, 0x2000, CRC(554b008d) SHA1(1483a46924308d86f4c7f9cb71c34851c510fcf4) ) |
| 2760 | |
| 2761 | ROM_REGION( 0x1000, "charom", 0 ) |
| 2762 | ROM_LOAD( "324867-02.u25", 0x0000, 0x1000, NO_DUMP ) |
| 2763 | |
| 2764 | ROM_REGION( 0xf5, PLA1_TAG, 0 ) |
| 2765 | ROM_LOAD( "906114-05.u75", 0x00, 0xf5, CRC(ff6ba6b6) SHA1(45808c570eb2eda7091c51591b3dbd2db1ac646a) ) |
| 2766 | ROM_END |
| 2767 | |
| 2768 | |
| 2769 | //------------------------------------------------- |
| 2696 | 2770 | // ROM( cbm720_se ) |
| 2697 | 2771 | //------------------------------------------------- |
| 2698 | 2772 | |
| r20728 | r20729 | |
| 2708 | 2782 | ROM_LOAD( "901233-03.u25", 0x0000, 0x1000, CRC(09518b19) SHA1(2e28491e31e2c0a3b6db388055216140a637cd09) ) |
| 2709 | 2783 | |
| 2710 | 2784 | ROM_REGION( 0xf5, PLA1_TAG, 0 ) |
| 2711 | | ROM_LOAD( "906114-05.bin", 0x00, 0xf5, CRC(ff6ba6b6) SHA1(45808c570eb2eda7091c51591b3dbd2db1ac646a) ) |
| 2785 | ROM_LOAD( "906114-05.u75", 0x00, 0xf5, CRC(ff6ba6b6) SHA1(45808c570eb2eda7091c51591b3dbd2db1ac646a) ) |
| 2712 | 2786 | ROM_END |
| 2713 | 2787 | |
| 2714 | 2788 | |
| r20728 | r20729 | |
| 2717 | 2791 | // SYSTEM DRIVERS |
| 2718 | 2792 | //************************************************************************** |
| 2719 | 2793 | |
| 2720 | | // YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS |
| 2721 | | COMP( 1983, p500, 0, 0, p500_ntsc, cbm2, driver_device, 0, "Commodore Business Machines", "P500 (NTSC)", GAME_SUPPORTS_SAVE ) |
| 2722 | | COMP( 1983, p500p, p500, 0, p500_pal, cbm2, driver_device, 0, "Commodore Business Machines", "P500 (PAL)", GAME_SUPPORTS_SAVE ) |
| 2723 | | |
| 2724 | | COMP( 1983, b500, p500, 0, b128, cbm2, driver_device, 0, "Commodore Business Machines", "B500", GAME_SUPPORTS_SAVE ) |
| 2725 | | COMP( 1983, b128, p500, 0, b128, cbm2, driver_device, 0, "Commodore Business Machines", "B128", GAME_SUPPORTS_SAVE ) |
| 2726 | | COMP( 1983, b256, p500, 0, b256, cbm2, driver_device, 0, "Commodore Business Machines", "B256", GAME_SUPPORTS_SAVE ) |
| 2727 | | COMP( 1983, cbm610, p500, 0, cbm610, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 610", GAME_SUPPORTS_SAVE ) |
| 2728 | | COMP( 1983, cbm620, p500, 0, cbm620, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 620", GAME_SUPPORTS_SAVE ) |
| 2729 | | COMP( 1983, cbm620_hu, p500, 0, cbm620, cbm2hu, driver_device, 0, "Commodore Business Machines", "CBM 620 (Hungary)", GAME_SUPPORTS_SAVE ) |
| 2730 | | |
| 2731 | | COMP( 1983, b128hp, p500, 0, b128hp, cbm2, driver_device, 0, "Commodore Business Machines", "B128-80HP", GAME_SUPPORTS_SAVE ) |
| 2732 | | COMP( 1983, b256hp, p500, 0, b256hp, cbm2, driver_device, 0, "Commodore Business Machines", "B256-80HP", GAME_SUPPORTS_SAVE ) |
| 2733 | | COMP( 1983, bx256hp, p500, 0, bx256hp, cbm2, driver_device, 0, "Commodore Business Machines", "BX256-80HP", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // 8088 co-processor is missing |
| 2734 | | COMP( 1983, cbm710, p500, 0, cbm710, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 710", GAME_SUPPORTS_SAVE ) |
| 2735 | | COMP( 1983, cbm720, p500, 0, cbm720, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 720", GAME_SUPPORTS_SAVE ) |
| 2736 | | COMP( 1983, cbm720_se, p500, 0, cbm720, cbm2sw, driver_device, 0, "Commodore Business Machines", "CBM 720 (Sweden/Finland)", GAME_SUPPORTS_SAVE ) |
| 2737 | | COMP( 1983, cbm730, p500, 0, cbm730, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 730", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // 8088 co-processor is missing |
| 2794 | // YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS |
| 2795 | COMP( 1983, p500, 0, 0, p500_ntsc, cbm2, driver_device, 0, "Commodore Business Machines", "P500 (NTSC)", GAME_SUPPORTS_SAVE ) |
| 2796 | COMP( 1983, p500p, p500, 0, p500_pal, cbm2, driver_device, 0, "Commodore Business Machines", "P500 (PAL)", GAME_SUPPORTS_SAVE ) |
| 2797 | COMP( 1983, b500, 0, 0, b128, cbm2, driver_device, 0, "Commodore Business Machines", "B500", GAME_SUPPORTS_SAVE ) |
| 2798 | COMP( 1983, b128, b500, 0, b128, cbm2, driver_device, 0, "Commodore Business Machines", "B128", GAME_SUPPORTS_SAVE ) |
| 2799 | COMP( 1983, b256, b500, 0, b256, cbm2, driver_device, 0, "Commodore Business Machines", "B256", GAME_SUPPORTS_SAVE ) |
| 2800 | COMP( 1983, cbm610, b500, 0, cbm610, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 610", GAME_SUPPORTS_SAVE ) |
| 2801 | COMP( 1983, cbm620, b500, 0, cbm620, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 620", GAME_SUPPORTS_SAVE ) |
| 2802 | COMP( 1983, cbm620_hu, b500, 0, cbm620, cbm2_hu, driver_device, 0, "Commodore Business Machines", "CBM 620 (Hungary)", GAME_SUPPORTS_SAVE ) |
| 2803 | COMP( 1983, b128hp, 0, 0, b128hp, cbm2, driver_device, 0, "Commodore Business Machines", "B128-80HP", GAME_SUPPORTS_SAVE ) |
| 2804 | COMP( 1983, b256hp, b128hp, 0, b256hp, cbm2, driver_device, 0, "Commodore Business Machines", "B256-80HP", GAME_SUPPORTS_SAVE ) |
| 2805 | COMP( 1983, bx256hp, b128hp, 0, bx256hp, cbm2, driver_device, 0, "Commodore Business Machines", "BX256-80HP", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // 8088 co-processor is missing |
| 2806 | COMP( 1983, cbm710, b128hp, 0, cbm710, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 710", GAME_SUPPORTS_SAVE ) |
| 2807 | COMP( 1983, cbm720, b128hp, 0, cbm720, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 720", GAME_SUPPORTS_SAVE ) |
| 2808 | COMP( 1983, cbm720_de, b128hp, 0, cbm720, cbm2_de, driver_device, 0, "Commodore Business Machines", "CBM 720 (Germany)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) |
| 2809 | COMP( 1983, cbm720_se, b128hp, 0, cbm720, cbm2_se, driver_device, 0, "Commodore Business Machines", "CBM 720 (Sweden/Finland)", GAME_SUPPORTS_SAVE ) |
| 2810 | COMP( 1983, cbm730, b128hp, 0, cbm730, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 730", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // 8088 co-processor is missing |