src/mess/machine/c2040.c
| r7063 | r7064 | |
| 94 | 94 | WRITE_LINE_DEVICE_HANDLER( c2040_ieee488_atn_w ) |
| 95 | 95 | { |
| 96 | 96 | c2040_t *c2040 = get_safe_token(device); |
| 97 | | int nrfd = c2040->nrfd_out; |
| 98 | | int ndac = c2040->ndac_out; |
| 97 | int nrfd = (state ^ c2040->atna) ? c2040->nrfd_out : 0; |
| 98 | int ndac = (state | c2040->atna) ? !c2040->ndac_out : 0; |
| 99 | 99 | |
| 100 | | if (!state ^ c2040->atna) |
| 101 | | { |
| 102 | | nrfd = ndac = 0; |
| 103 | | } |
| 104 | | |
| 105 | 100 | ieee488_nrfd_w(c2040->bus, device, nrfd); |
| 106 | 101 | ieee488_ndac_w(c2040->bus, device, ndac); |
| 107 | 102 | } |
| r7063 | r7064 | |
| 156 | 151 | -------------------------------------------------*/ |
| 157 | 152 | |
| 158 | 153 | static ADDRESS_MAP_START( c3040_dos_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 159 | | ADDRESS_MAP_GLOBAL_MASK(0x7fff) |
| 160 | | AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x0f00) AM_RAM // 6532 #1 |
| 161 | | AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x0f00) AM_RAM // 6532 #2 |
| 162 | | AM_RANGE(0x0200, 0x020f) AM_MIRROR(0x0d70) AM_DEVREADWRITE(M6532_0_TAG, riot6532_r, riot6532_w) |
| 163 | | AM_RANGE(0x0280, 0x028f) AM_MIRROR(0x0d70) AM_DEVREADWRITE(M6532_1_TAG, riot6532_r, riot6532_w) |
| 164 | | AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x0c00) AM_RAM AM_SHARE("share1") |
| 165 | | AM_RANGE(0x2000, 0x23ff) AM_MIRROR(0x0c00) AM_RAM AM_SHARE("share2") |
| 166 | | AM_RANGE(0x3000, 0x33ff) AM_MIRROR(0x0c00) AM_RAM AM_SHARE("share3") |
| 167 | | AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0c00) AM_RAM AM_SHARE("share4") |
| 168 | | AM_RANGE(0x5000, 0x7fff) AM_MIRROR(0x0000) AM_ROM AM_REGION("c3040", 0x0000) |
| 154 | AM_IMPORT_FROM(c2040_dos_map) |
| 155 | AM_RANGE(0x5000, 0x7fff) AM_ROM AM_REGION("c3040", 0x0000) |
| 169 | 156 | ADDRESS_MAP_END |
| 170 | 157 | |
| 171 | 158 | /*------------------------------------------------- |
| r7063 | r7064 | |
| 173 | 160 | -------------------------------------------------*/ |
| 174 | 161 | |
| 175 | 162 | static ADDRESS_MAP_START( c3040_fdc_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 176 | | ADDRESS_MAP_GLOBAL_MASK(0x1fff) |
| 177 | | AM_RANGE(0x0000, 0x003f) AM_MIRROR(0x0300) AM_RAM // 6530 |
| 178 | | AM_RANGE(0x0040, 0x004f) AM_MIRROR(0x0330) AM_DEVREADWRITE(M6522_TAG, via_r, via_w) |
| 179 | | AM_RANGE(0x0080, 0x008f) AM_MIRROR(0x0330) AM_DEVREADWRITE(M6530_TAG, riot6532_r, riot6532_w) |
| 180 | | AM_RANGE(0x0400, 0x07ff) AM_RAM AM_SHARE("share1") |
| 181 | | AM_RANGE(0x0800, 0x0bff) AM_RAM AM_SHARE("share2") |
| 182 | | AM_RANGE(0x0c00, 0x0fff) AM_RAM AM_SHARE("share3") |
| 183 | | AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("share4") |
| 163 | AM_IMPORT_FROM(c2040_fdc_map) |
| 184 | 164 | AM_RANGE(0x1c00, 0x1fff) AM_ROM AM_REGION("c3040", 0x3000) |
| 185 | 165 | ADDRESS_MAP_END |
| 186 | 166 | |
| r7063 | r7064 | |
| 189 | 169 | -------------------------------------------------*/ |
| 190 | 170 | |
| 191 | 171 | static ADDRESS_MAP_START( c4040_dos_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 192 | | ADDRESS_MAP_GLOBAL_MASK(0x7fff) |
| 193 | | AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x0f00) AM_RAM // 6532 #1 |
| 194 | | AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x0f00) AM_RAM // 6532 #2 |
| 195 | | AM_RANGE(0x0200, 0x020f) AM_MIRROR(0x0d70) AM_DEVREADWRITE(M6532_0_TAG, riot6532_r, riot6532_w) |
| 196 | | AM_RANGE(0x0280, 0x028f) AM_MIRROR(0x0d70) AM_DEVREADWRITE(M6532_1_TAG, riot6532_r, riot6532_w) |
| 197 | | AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x0c00) AM_RAM AM_SHARE("share1") |
| 198 | | AM_RANGE(0x2000, 0x23ff) AM_MIRROR(0x0c00) AM_RAM AM_SHARE("share2") |
| 199 | | AM_RANGE(0x3000, 0x33ff) AM_MIRROR(0x0c00) AM_RAM AM_SHARE("share3") |
| 200 | | AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0c00) AM_RAM AM_SHARE("share4") |
| 201 | | AM_RANGE(0x5000, 0x7fff) AM_MIRROR(0x0000) AM_ROM AM_REGION("c4040", 0x0000) |
| 172 | AM_IMPORT_FROM(c2040_dos_map) |
| 173 | AM_RANGE(0x5000, 0x7fff) AM_ROM AM_REGION("c4040", 0x0000) |
| 202 | 174 | ADDRESS_MAP_END |
| 203 | 175 | |
| 204 | 176 | /*------------------------------------------------- |
| r7063 | r7064 | |
| 206 | 178 | -------------------------------------------------*/ |
| 207 | 179 | |
| 208 | 180 | static ADDRESS_MAP_START( c4040_fdc_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 209 | | ADDRESS_MAP_GLOBAL_MASK(0x1fff) |
| 210 | | AM_RANGE(0x0000, 0x003f) AM_MIRROR(0x0300) AM_RAM // 6530 |
| 211 | | AM_RANGE(0x0040, 0x004f) AM_MIRROR(0x0330) AM_DEVREADWRITE(M6522_TAG, via_r, via_w) |
| 212 | | AM_RANGE(0x0080, 0x008f) AM_MIRROR(0x0330) AM_DEVREADWRITE(M6530_TAG, riot6532_r, riot6532_w) |
| 213 | | AM_RANGE(0x0400, 0x07ff) AM_RAM AM_SHARE("share1") |
| 214 | | AM_RANGE(0x0800, 0x0bff) AM_RAM AM_SHARE("share2") |
| 215 | | AM_RANGE(0x0c00, 0x0fff) AM_RAM AM_SHARE("share3") |
| 216 | | AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("share4") |
| 181 | AM_IMPORT_FROM(c2040_fdc_map) |
| 217 | 182 | AM_RANGE(0x1c00, 0x1fff) AM_ROM AM_REGION("c4040", 0x3000) |
| 218 | 183 | ADDRESS_MAP_END |
| 219 | 184 | |
| r7063 | r7064 | |
| 234 | 199 | ADDRESS_MAP_END |
| 235 | 200 | |
| 236 | 201 | /*------------------------------------------------- |
| 202 | ADDRESS_MAP( c8050_fdc_map ) |
| 203 | -------------------------------------------------*/ |
| 204 | |
| 205 | static ADDRESS_MAP_START( c8050_fdc_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 206 | ADDRESS_MAP_GLOBAL_MASK(0x1fff) |
| 207 | AM_RANGE(0x0000, 0x003f) AM_MIRROR(0x0300) AM_RAM // 6530 |
| 208 | AM_RANGE(0x0040, 0x004f) AM_MIRROR(0x0330) AM_DEVREADWRITE(M6522_TAG, via_r, via_w) |
| 209 | AM_RANGE(0x0080, 0x008f) AM_MIRROR(0x0330) AM_DEVREADWRITE(M6530_TAG, riot6532_r, riot6532_w) |
| 210 | AM_RANGE(0x0400, 0x07ff) AM_RAM AM_SHARE("share1") |
| 211 | AM_RANGE(0x0800, 0x0bff) AM_RAM AM_SHARE("share2") |
| 212 | AM_RANGE(0x0c00, 0x0fff) AM_RAM AM_SHARE("share3") |
| 213 | AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("share4") |
| 214 | AM_RANGE(0x1c00, 0x1fff) AM_ROM AM_REGION("c8050", 0x4000) |
| 215 | ADDRESS_MAP_END |
| 216 | |
| 217 | /*------------------------------------------------- |
| 237 | 218 | ADDRESS_MAP( sfd1001_dos_map ) |
| 238 | 219 | -------------------------------------------------*/ |
| 239 | 220 | |
| 240 | 221 | static ADDRESS_MAP_START( sfd1001_dos_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 241 | | AM_RANGE(0x0000, 0x01ff) AM_RAM |
| 242 | | AM_RANGE(0x0200, 0x020f) AM_DEVREADWRITE(M6532_0_TAG, riot6532_r, riot6532_w) |
| 243 | | AM_RANGE(0x0280, 0x028f) AM_DEVREADWRITE(M6532_1_TAG, riot6532_r, riot6532_w) |
| 244 | | AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x0c00) AM_RAM AM_SHARE("share1") |
| 245 | | AM_RANGE(0x2000, 0x23ff) AM_MIRROR(0x0c00) AM_RAM AM_SHARE("share2") |
| 246 | | AM_RANGE(0x3000, 0x33ff) AM_MIRROR(0x0c00) AM_RAM AM_SHARE("share3") |
| 247 | | AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0c00) AM_RAM AM_SHARE("share4") |
| 222 | AM_IMPORT_FROM(c8050_dos_map) |
| 248 | 223 | AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("sfd1001", 0x0000) |
| 249 | 224 | ADDRESS_MAP_END |
| 250 | 225 | |
| r7063 | r7064 | |
| 253 | 228 | -------------------------------------------------*/ |
| 254 | 229 | |
| 255 | 230 | static ADDRESS_MAP_START( sfd1001_fdc_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 256 | | ADDRESS_MAP_GLOBAL_MASK(0x1fff) |
| 257 | | AM_RANGE(0x0000, 0x003f) AM_RAM |
| 258 | | AM_RANGE(0x0040, 0x004f) AM_DEVREADWRITE(M6522_TAG, via_r, via_w) |
| 259 | | AM_RANGE(0x0080, 0x008f) AM_DEVREADWRITE(M6530_TAG, riot6532_r, riot6532_w) |
| 260 | | AM_RANGE(0x0100, 0x013f) AM_RAM |
| 261 | | AM_RANGE(0x0400, 0x07ff) AM_RAM AM_SHARE("share1") |
| 262 | | AM_RANGE(0x0800, 0x0bff) AM_RAM AM_SHARE("share2") |
| 263 | | AM_RANGE(0x0c00, 0x0fff) AM_RAM AM_SHARE("share3") |
| 264 | | AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("share4") |
| 265 | | AM_RANGE(0x1c00, 0x1fff) AM_ROM AM_REGION("sfd1001", 0x4000) |
| 231 | AM_IMPORT_FROM(c8050_fdc_map) |
| 232 | AM_RANGE(0x1800, 0x1fff) AM_ROM AM_REGION("sfd1001", 0x4000) |
| 266 | 233 | ADDRESS_MAP_END |
| 267 | 234 | |
| 268 | 235 | /*------------------------------------------------- |
| r7063 | r7064 | |
| 378 | 345 | |
| 379 | 346 | c2040_t *c2040 = get_safe_token(device->owner); |
| 380 | 347 | |
| 348 | int atn = ieee488_atn_r(c2040->bus); |
| 381 | 349 | int atna = BIT(data, 0); |
| 382 | 350 | int ndac = BIT(data, 1); |
| 383 | 351 | int nrfd = BIT(data, 2); |
| 384 | 352 | |
| 385 | 353 | /* end or identify */ |
| 386 | | ieee488_eoi_w(c2040->bus, device->owner, BIT(data, 5)); |
| 354 | ieee488_eoi_w(c2040->bus, device->owner, BIT(data, 3)); |
| 387 | 355 | |
| 388 | 356 | /* data valid */ |
| 389 | | ieee488_dav_w(c2040->bus, device->owner, BIT(data, 6)); |
| 357 | ieee488_dav_w(c2040->bus, device->owner, BIT(data, 4)); |
| 390 | 358 | |
| 391 | 359 | /* TODO attention acknowledge */ |
| 392 | 360 | c2040->atna = atna; |
| 361 | c2040->nrfd_out = nrfd; |
| 362 | c2040->ndac_out = ndac; |
| 393 | 363 | |
| 394 | | if (!ieee488_atn_r(c2040->bus) ^ atna) |
| 395 | | { |
| 396 | | nrfd = ndac = 0; |
| 397 | | } |
| 364 | nrfd = (atn ^ atna) ? nrfd : 0; |
| 365 | ndac = (atn | atna) ? !ndac : 0; |
| 398 | 366 | |
| 399 | 367 | ieee488_nrfd_w(c2040->bus, device->owner, nrfd); |
| 400 | 368 | ieee488_ndac_w(c2040->bus, device->owner, ndac); |
| r7063 | r7064 | |
| 509 | 477 | PB3 SOB |
| 510 | 478 | PB4 MTR1 |
| 511 | 479 | PB5 MTR0 |
| 512 | | PB6 PLL SYN |
| 513 | | PB7 SYNC |
| 480 | PB6 |
| 481 | PB7 |
| 514 | 482 | |
| 515 | 483 | */ |
| 516 | 484 | |
| r7063 | r7064 | |
| 529 | 497 | PB3 SOB |
| 530 | 498 | PB4 MTR1 |
| 531 | 499 | PB5 MTR0 |
| 532 | | PB6 PLL SYN |
| 500 | PB6 |
| 501 | PB7 |
| 502 | |
| 503 | */ |
| 504 | } |
| 505 | |
| 506 | static READ8_DEVICE_HANDLER( c8050_via_pb_r ) |
| 507 | { |
| 508 | /* |
| 509 | |
| 510 | bit description |
| 511 | |
| 512 | PB0 SIA |
| 513 | PB1 SIB |
| 514 | PB2 SOA |
| 515 | PB3 SOB |
| 516 | PB4 MTR1 |
| 517 | PB5 MTR0 |
| 518 | PB6 PULL SYNC |
| 533 | 519 | PB7 SYNC |
| 534 | 520 | |
| 535 | 521 | */ |
| 522 | |
| 523 | return 0; |
| 536 | 524 | } |
| 537 | 525 | |
| 526 | static WRITE8_DEVICE_HANDLER( c8050_via_pb_w ) |
| 527 | { |
| 528 | /* |
| 529 | |
| 530 | bit description |
| 531 | |
| 532 | PB0 SIA |
| 533 | PB1 SIB |
| 534 | PB2 SOA |
| 535 | PB3 SOB |
| 536 | PB4 MTR1 |
| 537 | PB5 MTR0 |
| 538 | PB6 PULL SYNC |
| 539 | PB7 SYNC |
| 540 | |
| 541 | */ |
| 542 | } |
| 543 | |
| 538 | 544 | static READ_LINE_DEVICE_HANDLER( ready_r ) |
| 539 | 545 | { |
| 540 | 546 | return 0; |
| r7063 | r7064 | |
| 580 | 586 | DEVCB_NULL |
| 581 | 587 | }; |
| 582 | 588 | |
| 589 | static const via6522_interface c8050_via_intf = |
| 590 | { |
| 591 | DEVCB_HANDLER(c2040_via_pa_r), |
| 592 | DEVCB_HANDLER(c8050_via_pb_r), |
| 593 | DEVCB_LINE(ready_r), |
| 594 | DEVCB_LINE(err_r), |
| 595 | DEVCB_NULL, |
| 596 | DEVCB_NULL, |
| 597 | |
| 598 | DEVCB_NULL, |
| 599 | DEVCB_HANDLER(c8050_via_pb_w), |
| 600 | DEVCB_NULL, |
| 601 | DEVCB_NULL, |
| 602 | DEVCB_LINE(mode_sel_w), |
| 603 | DEVCB_LINE(rw_sel_w), |
| 604 | |
| 605 | DEVCB_NULL |
| 606 | }; |
| 607 | |
| 583 | 608 | /*------------------------------------------------- |
| 584 | 609 | riot6532_interface c2040_riot2_intf uk3 |
| 585 | 610 | -------------------------------------------------*/ |
| r7063 | r7064 | |
| 632 | 657 | PB1 DS0 |
| 633 | 658 | PB2 DS1 |
| 634 | 659 | PB3 WPS |
| 660 | PB4 |
| 661 | PB5 |
| 662 | PB6 SYNC |
| 663 | PB7 |
| 664 | |
| 665 | */ |
| 666 | |
| 667 | c2040_t *c2040 = get_safe_token(device->owner); |
| 668 | |
| 669 | UINT8 data = 0; |
| 670 | |
| 671 | /* write protect sense */ |
| 672 | data |= floppy_wpt_r(c2040->image[c2040->drive]) << 3; |
| 673 | |
| 674 | /* TODO sync */ |
| 675 | |
| 676 | return data; |
| 677 | } |
| 678 | |
| 679 | static WRITE8_DEVICE_HANDLER( c2040_riot2_pb_w ) |
| 680 | { |
| 681 | /* |
| 682 | |
| 683 | bit description |
| 684 | |
| 685 | PB0 DRV SEL |
| 686 | PB1 DS0 |
| 687 | PB2 DS1 |
| 688 | PB3 WPS |
| 689 | PB4 |
| 690 | PB5 |
| 691 | PB6 SYNC |
| 692 | PB7 |
| 693 | |
| 694 | */ |
| 695 | |
| 696 | c2040_t *c2040 = get_safe_token(device->owner); |
| 697 | |
| 698 | /* drive select */ |
| 699 | c2040->drive = BIT(data, 0); |
| 700 | |
| 701 | /* TODO density select */ |
| 702 | |
| 703 | /* side select */ |
| 704 | c2040->side = !BIT(data, 4); |
| 705 | } |
| 706 | |
| 707 | static READ8_DEVICE_HANDLER( c8050_riot2_pb_r ) |
| 708 | { |
| 709 | /* |
| 710 | |
| 711 | bit description |
| 712 | |
| 713 | PB0 DRV SEL |
| 714 | PB1 DS0 |
| 715 | PB2 DS1 |
| 716 | PB3 WPS |
| 635 | 717 | PB4 ODD HD, SIDE SELECT (0=78-154, 1=1-77) |
| 636 | 718 | PB5 |
| 637 | 719 | PB6 (0=DS, 1=SS) |
| r7063 | r7064 | |
| 652 | 734 | return data; |
| 653 | 735 | } |
| 654 | 736 | |
| 655 | | static WRITE8_DEVICE_HANDLER( c2040_riot2_pb_w ) |
| 737 | static WRITE8_DEVICE_HANDLER( c8050_riot2_pb_w ) |
| 656 | 738 | { |
| 657 | 739 | /* |
| 658 | 740 | |
| r7063 | r7064 | |
| 696 | 778 | DEVCB_LINE(c2040_riot2_irq_w) |
| 697 | 779 | }; |
| 698 | 780 | |
| 781 | static const riot6532_interface c8050_riot2_intf = |
| 782 | { |
| 783 | DEVCB_HANDLER(c2040_riot2_pa_r), |
| 784 | DEVCB_HANDLER(c8050_riot2_pb_r), |
| 785 | DEVCB_HANDLER(c2040_riot2_pa_w), |
| 786 | DEVCB_HANDLER(c8050_riot2_pb_w), |
| 787 | DEVCB_LINE(c2040_riot2_irq_w) |
| 788 | }; |
| 789 | |
| 699 | 790 | /*------------------------------------------------- |
| 700 | 791 | FLOPPY_OPTIONS( c2040 ) |
| 701 | 792 | -------------------------------------------------*/ |
| 702 | 793 | |
| 703 | 794 | static FLOPPY_OPTIONS_START( c2040 ) |
| 704 | 795 | // FLOPPY_OPTION( c2040, "d67", "Commodore 2040 (DOS 1) Disk Image", d67_dsk_identify, d67_dsk_construct, NULL ) |
| 705 | | // FLOPPY_OPTION( c1541, "d64", "Commodore 1541 Disk Image", d64_dsk_identify, d64_dsk_construct, NULL ) |
| 796 | // FLOPPY_OPTION( c2040, "d64", "Commodore 1541 Disk Image", d64_dsk_identify, d64_dsk_construct, NULL ) |
| 706 | 797 | FLOPPY_OPTION( c2040, "g64", "Commodore 1541 GCR Disk Image", g64_dsk_identify, g64_dsk_construct, NULL ) |
| 707 | 798 | FLOPPY_OPTIONS_END |
| 708 | 799 | |
| r7063 | r7064 | |
| 711 | 802 | -------------------------------------------------*/ |
| 712 | 803 | |
| 713 | 804 | static FLOPPY_OPTIONS_START( c3040 ) |
| 714 | | // FLOPPY_OPTION( c1541, "d64", "Commodore 1541 Disk Image", d64_dsk_identify, d64_dsk_construct, NULL ) |
| 805 | // FLOPPY_OPTION( c3040, "d64", "Commodore 1541 Disk Image", d64_dsk_identify, d64_dsk_construct, NULL ) |
| 715 | 806 | FLOPPY_OPTION( c3040, "g64", "Commodore 1541 GCR Disk Image", g64_dsk_identify, g64_dsk_construct, NULL ) |
| 716 | 807 | FLOPPY_OPTIONS_END |
| 717 | 808 | |
| r7063 | r7064 | |
| 765 | 856 | }; |
| 766 | 857 | |
| 767 | 858 | /*------------------------------------------------- |
| 859 | floppy_config c8050_floppy_config |
| 860 | -------------------------------------------------*/ |
| 861 | |
| 862 | static const floppy_config c8050_floppy_config = |
| 863 | { |
| 864 | DEVCB_NULL, |
| 865 | DEVCB_NULL, |
| 866 | DEVCB_NULL, |
| 867 | DEVCB_NULL, |
| 868 | DEVCB_NULL, |
| 869 | FLOPPY_DRIVE_SS_80, |
| 870 | FLOPPY_OPTIONS_NAME(c8050), |
| 871 | DO_NOT_KEEP_GEOMETRY |
| 872 | }; |
| 873 | |
| 874 | /*------------------------------------------------- |
| 768 | 875 | floppy_config c8250_floppy_config |
| 769 | 876 | -------------------------------------------------*/ |
| 770 | 877 | |
| r7063 | r7064 | |
| 853 | 960 | |
| 854 | 961 | /* controller */ |
| 855 | 962 | MDRV_CPU_ADD(M6502_FDC_TAG, M6502, XTAL_12MHz/3) |
| 856 | | MDRV_CPU_PROGRAM_MAP(c2040_fdc_map) |
| 857 | | MDRV_VIA6522_ADD(M6522_TAG, XTAL_12MHz/3, c2040_via_intf) |
| 858 | | MDRV_RIOT6532_ADD(M6530_TAG, XTAL_12MHz/3, c2040_riot2_intf) |
| 963 | MDRV_CPU_PROGRAM_MAP(c8050_fdc_map) |
| 964 | MDRV_VIA6522_ADD(M6522_TAG, XTAL_12MHz/3, c8050_via_intf) |
| 965 | MDRV_RIOT6532_ADD(M6530_TAG, XTAL_12MHz/3, c8050_riot2_intf) |
| 859 | 966 | |
| 860 | | MDRV_FLOPPY_2_DRIVES_ADD(c3040_floppy_config) |
| 967 | MDRV_FLOPPY_2_DRIVES_ADD(c8050_floppy_config) |
| 861 | 968 | MACHINE_DRIVER_END |
| 862 | 969 | |
| 863 | 970 | /*------------------------------------------------- |
| r7063 | r7064 | |
| 873 | 980 | |
| 874 | 981 | /* controller */ |
| 875 | 982 | MDRV_CPU_ADD(M6502_FDC_TAG, M6502, XTAL_12MHz/3) |
| 876 | | MDRV_CPU_PROGRAM_MAP(c2040_fdc_map) |
| 877 | | MDRV_VIA6522_ADD(M6522_TAG, XTAL_12MHz/3, c2040_via_intf) |
| 878 | | MDRV_RIOT6532_ADD(M6530_TAG, XTAL_12MHz/3, c2040_riot2_intf) |
| 983 | MDRV_CPU_PROGRAM_MAP(c8050_fdc_map) |
| 984 | MDRV_VIA6522_ADD(M6522_TAG, XTAL_12MHz/3, c8050_via_intf) |
| 985 | MDRV_RIOT6532_ADD(M6530_TAG, XTAL_12MHz/3, c8050_riot2_intf) |
| 879 | 986 | |
| 880 | 987 | MDRV_FLOPPY_2_DRIVES_ADD(c8250_floppy_config) |
| 881 | 988 | MACHINE_DRIVER_END |
| r7063 | r7064 | |
| 894 | 1001 | /* controller */ |
| 895 | 1002 | MDRV_CPU_ADD(M6502_FDC_TAG, M6502, XTAL_12MHz/3) |
| 896 | 1003 | MDRV_CPU_PROGRAM_MAP(sfd1001_fdc_map) |
| 897 | | MDRV_VIA6522_ADD(M6522_TAG, XTAL_12MHz/3, c2040_via_intf) |
| 898 | | MDRV_RIOT6532_ADD(M6530_TAG, XTAL_12MHz/3, c2040_riot2_intf) |
| 1004 | MDRV_VIA6522_ADD(M6522_TAG, XTAL_12MHz/3, c8050_via_intf) |
| 1005 | MDRV_RIOT6532_ADD(M6530_TAG, XTAL_12MHz/3, c8050_riot2_intf) |
| 899 | 1006 | |
| 900 | 1007 | MDRV_FLOPPY_DRIVE_ADD(FLOPPY_0, c8250_floppy_config) |
| 901 | 1008 | MACHINE_DRIVER_END |
| r7063 | r7064 | |
| 914 | 1021 | ROM_LOAD( "901466-02.uk3", 0x2000, 0x0400, NO_DUMP ) |
| 915 | 1022 | |
| 916 | 1023 | /* ROM GCR */ |
| 917 | | ROM_LOAD( "901467-01.uk6", 0x2400, 0x0800, CRC(a23337eb) SHA1(97df576397608455616331f8e837cb3404363fa2) ) |
| 1024 | ROM_LOAD( "901467.uk6", 0x2400, 0x0800, CRC(a23337eb) SHA1(97df576397608455616331f8e837cb3404363fa2) ) |
| 918 | 1025 | ROM_END |
| 919 | 1026 | |
| 920 | 1027 | /*------------------------------------------------- |
| r7063 | r7064 | |
| 922 | 1029 | -------------------------------------------------*/ |
| 923 | 1030 | |
| 924 | 1031 | ROM_START( c3040 ) |
| 925 | | ROM_REGION( 0x3c00, "c2040", ROMREGION_LOADBYNAME ) |
| 1032 | ROM_REGION( 0x3c00, "c3040", ROMREGION_LOADBYNAME ) |
| 926 | 1033 | /* DOS 2 */ |
| 927 | 1034 | ROM_LOAD( "901468-11.uj1", 0x0000, 0x1000, CRC(b7157458) SHA1(8415f3159dea73161e0cef7960afa6c76953b6f8) ) |
| 928 | 1035 | ROM_LOAD( "901468-12.ul1", 0x1000, 0x1000, CRC(02c44ff9) SHA1(e8a94f239082d45f64f01b2d8e488d18fe659cbb) ) |
| r7063 | r7064 | |
| 932 | 1039 | ROM_LOAD( "901466-04.uk3", 0x3000, 0x0400, CRC(0ab338dc) SHA1(6645fa40b81be1ff7d1384e9b52df06a26ab0bfb) ) |
| 933 | 1040 | |
| 934 | 1041 | /* ROM GCR */ |
| 935 | | ROM_LOAD( "901467-01.uk6", 0x3400, 0x800, CRC(a23337eb) SHA1(97df576397608455616331f8e837cb3404363fa2) ) |
| 1042 | ROM_LOAD( "901467.uk6", 0x3400, 0x800, CRC(a23337eb) SHA1(97df576397608455616331f8e837cb3404363fa2) ) |
| 936 | 1043 | ROM_END |
| 937 | 1044 | |
| 938 | 1045 | /*------------------------------------------------- |
| r7063 | r7064 | |
| 940 | 1047 | -------------------------------------------------*/ |
| 941 | 1048 | |
| 942 | 1049 | ROM_START( c4040 ) |
| 943 | | ROM_REGION( 0x3c00, "c2040", ROMREGION_LOADBYNAME ) |
| 1050 | ROM_REGION( 0x3c00, "c4040", ROMREGION_LOADBYNAME ) |
| 944 | 1051 | /* DOS 2 rev */ |
| 945 | 1052 | ROM_LOAD( "901468-14.uj1", 0x0000, 0x1000, CRC(bc4d4872) SHA1(ffb992b82ec913ddff7be964d7527aca3e21580c) ) |
| 946 | 1053 | ROM_LOAD( "901468-15.ul1", 0x1000, 0x1000, CRC(b6970533) SHA1(f702d6917fe8a798740ba4d467b500944ae7b70a) ) |
| r7063 | r7064 | |
| 950 | 1057 | ROM_LOAD( "901466-04.uk3", 0x3000, 0x0400, CRC(0ab338dc) SHA1(6645fa40b81be1ff7d1384e9b52df06a26ab0bfb) ) |
| 951 | 1058 | |
| 952 | 1059 | /* ROM GCR */ |
| 953 | | ROM_LOAD( "901467-01.uk6", 0x3400, 0x800, CRC(a23337eb) SHA1(97df576397608455616331f8e837cb3404363fa2) ) |
| 1060 | ROM_LOAD( "901467.uk6", 0x3400, 0x800, CRC(a23337eb) SHA1(97df576397608455616331f8e837cb3404363fa2) ) |
| 954 | 1061 | ROM_END |
| 955 | 1062 | |
| 956 | 1063 | /*------------------------------------------------- |
| r7063 | r7064 | |
| 992 | 1099 | ROM_LOAD( "901869-01.uk3", 0x4000, 0x400, CRC(2915327a) SHA1(3a9a80f72ce76e5f5c72513f8ef7553212912ae3) ) |
| 993 | 1100 | |
| 994 | 1101 | /* GCR decoder */ |
| 995 | | ROM_LOAD( "901467-01.uk6", 0x4400, 0x800, CRC(a23337eb) SHA1(97df576397608455616331f8e837cb3404363fa2) ) |
| 1102 | ROM_LOAD( "901467.uk6", 0x4400, 0x800, CRC(a23337eb) SHA1(97df576397608455616331f8e837cb3404363fa2) ) |
| 996 | 1103 | ROM_END |
| 997 | 1104 | |
| 998 | 1105 | /*------------------------------------------------- |
| 999 | | ROM( c8250 ) |
| 1000 | | -------------------------------------------------*/ |
| 1001 | | |
| 1002 | | #define rom_c8250 rom_c8050 |
| 1003 | | |
| 1004 | | /*------------------------------------------------- |
| 1005 | 1106 | ROM( sfd1001 ) |
| 1006 | 1107 | -------------------------------------------------*/ |
| 1007 | 1108 | |
| 1008 | 1109 | ROM_START( sfd1001 ) // schematic |
| 1009 | | ROM_REGION( 0x4c00, "sfd1001", ROMREGION_LOADBYNAME ) |
| 1110 | ROM_REGION( 0x5000, "sfd1001", ROMREGION_LOADBYNAME ) |
| 1010 | 1111 | ROM_LOAD( "901887-01.1j", 0x0000, 0x2000, CRC(0073b8b2) SHA1(b10603195f240118fe5fb6c6dfe5c5097463d890) ) |
| 1011 | 1112 | ROM_LOAD( "901888-01.3j", 0x2000, 0x2000, CRC(de9b6132) SHA1(2e6c2d7ca934e5c550ad14bd5e9e7749686b7af4) ) |
| 1012 | 1113 | |
| r7063 | r7064 | |
| 1014 | 1115 | ROM_LOAD( "251257-02a.u2", 0x4000, 0x0800, CRC(b51150de) SHA1(3b954eb34f7ea088eed1d33ebc6d6e83a3e9be15) ) |
| 1015 | 1116 | |
| 1016 | 1117 | /* GCR decoder */ |
| 1017 | | ROM_LOAD( "901467-01.5c", 0x4400, 0x800, CRC(a23337eb) SHA1(97df576397608455616331f8e837cb3404363fa2) ) |
| 1118 | ROM_LOAD( "901467.5c", 0x4800, 0x800, CRC(a23337eb) SHA1(97df576397608455616331f8e837cb3404363fa2) ) |
| 1018 | 1119 | ROM_END |
| 1019 | 1120 | |
| 1020 | 1121 | /*------------------------------------------------- |