trunk/src/mame/drivers/segaxbd.c
| r249143 | r249144 | |
| 3388 | 3388 | // Custom Chip 315-5304 (IC 127) |
| 3389 | 3389 | // IC BD Number: 834-7626-03 (roms are "MPR") / 834-7626-05 (roms are "EPR") |
| 3390 | 3390 | // |
| 3391 | | ROM_START( gpriders ) |
| 3391 | ROM_START( gprider ) |
| 3392 | 3392 | ROM_REGION( 0x80000, "mainpcb:maincpu", 0 ) // 68000 code |
| 3393 | 3393 | ROM_LOAD16_BYTE( "epr-13409.ic58", 0x00000, 0x20000, CRC(9abb81b6) SHA1(f6308f3ec99ee66677e86f6a915e4dff8557d25f) ) |
| 3394 | 3394 | ROM_LOAD16_BYTE( "epr-13408.ic63", 0x00001, 0x20000, CRC(8e410e97) SHA1(2021d738064e57d175b59ba053d9ee35ed4516c8) ) |
| r249143 | r249144 | |
| 3438 | 3438 | ROM_END |
| 3439 | 3439 | |
| 3440 | 3440 | // Twin setup |
| 3441 | | ROM_START( gprider ) |
| 3441 | ROM_START( gpridert ) |
| 3442 | 3442 | ROM_REGION( 0x80000, "mainpcb:maincpu", 0 ) // 68000 code |
| 3443 | 3443 | ROM_LOAD16_BYTE( "epr-13409.ic58", 0x00000, 0x20000, CRC(9abb81b6) SHA1(f6308f3ec99ee66677e86f6a915e4dff8557d25f) ) |
| 3444 | 3444 | ROM_LOAD16_BYTE( "epr-13408.ic63", 0x00001, 0x20000, CRC(8e410e97) SHA1(2021d738064e57d175b59ba053d9ee35ed4516c8) ) |
| r249143 | r249144 | |
| 3541 | 3541 | // Custom Chip 315-5304 (IC 127) |
| 3542 | 3542 | // IC BD Number: 834-7626-01 (roms are "MPR") / 834-7626-04 (roms are "EPR") |
| 3543 | 3543 | // |
| 3544 | | ROM_START( gpriderus ) |
| 3545 | | ROM_REGION( 0x80000, "mainpcb:maincpu", 0 ) // 68000 code |
| 3546 | | ROM_LOAD16_BYTE( "epr-13407.ic58", 0x00000, 0x20000, CRC(03553ebd) SHA1(041a71a2dce2ad56360f500cb11e29a629020160) ) |
| 3547 | | ROM_LOAD16_BYTE( "epr-13406.ic63", 0x00001, 0x20000, CRC(122c711f) SHA1(2bcc51347e771a7e7f770e68b24d82497d24aa2e) ) |
| 3548 | | |
| 3549 | | ROM_REGION( 0x2000, "mainpcb:maincpu:key", 0 ) // decryption key |
| 3550 | | ROM_LOAD( "317-0162.key", 0x0000, 0x2000, CRC(8067de53) SHA1(e8cd1dfbad94856c6bd51569557667e72f0a5dd4) ) |
| 3551 | | |
| 3552 | | ROM_REGION( 0x80000, "mainpcb:subcpu", 0 ) // 2nd 68000 code |
| 3553 | | ROM_LOAD16_BYTE( "epr-13395.ic20", 0x00000, 0x20000,CRC(d6ccfac7) SHA1(9287ab08600163a0d9bd33618c629f99391316bd) ) |
| 3554 | | ROM_LOAD16_BYTE( "epr-13394.ic29", 0x00001, 0x20000,CRC(914a55ec) SHA1(84fe1df12478990418b46b6800425e5599e9eff9) ) |
| 3555 | | ROM_LOAD16_BYTE( "epr-13393.ic21", 0x40000, 0x20000,CRC(08d023cc) SHA1(d008d57e494f484a1a84896065d53fb9b1d8d60e) ) |
| 3556 | | ROM_LOAD16_BYTE( "epr-13392.ic30", 0x40001, 0x20000,CRC(f927cd42) SHA1(67eab328c1fb878fe3d086d0639f5051b135a037) ) |
| 3557 | | |
| 3558 | | ROM_REGION( 0x30000, "mainpcb:gfx1", 0 ) // tiles |
| 3559 | | ROM_LOAD( "epr-13383.ic154", 0x00000, 0x10000, CRC(24f897a7) SHA1(68ba17067d90f07bb5a549017be4773b33ae81d0) ) |
| 3560 | | ROM_LOAD( "epr-13384.ic153", 0x10000, 0x10000, CRC(fe8238bd) SHA1(601910bd86536e6b08f5308b298c8f01fa60f233) ) |
| 3561 | | ROM_LOAD( "epr-13385.ic152", 0x20000, 0x10000, CRC(6df1b995) SHA1(5aab19b87a9ef162c30ccf5974cb795e37dba91f) ) |
| 3562 | | |
| 3563 | | ROM_REGION32_LE( 0x200000, "mainpcb:sprites", 0 ) // sprites |
| 3564 | | ROM_LOAD32_BYTE( "epr-13382.ic90", 0x000000, 0x20000, CRC(01dac209) SHA1(4c6b03308193c472f6cdbcede306f8ce6db0cc4b) ) |
| 3565 | | ROM_LOAD32_BYTE( "epr-13381.ic94", 0x000001, 0x20000, CRC(3a50d931) SHA1(9d9cb1793f3b8f562ce0ea49f2afeef099f20859) ) |
| 3566 | | ROM_LOAD32_BYTE( "epr-13380.ic98", 0x000002, 0x20000, CRC(ad1024c8) SHA1(86e941424b2e2e00940886e5daed640a78ed7403) ) |
| 3567 | | ROM_LOAD32_BYTE( "epr-13379.ic102", 0x000003, 0x20000, CRC(1ac17625) SHA1(7aefd382041dd3f97936ecb8738a3f2c9780c58f) ) |
| 3568 | | ROM_LOAD32_BYTE( "epr-13378.ic91", 0x080000, 0x20000, CRC(50c9b867) SHA1(dd9702b369ea8abd50da22ce721b7040428e9d4b) ) |
| 3569 | | ROM_LOAD32_BYTE( "epr-13377.ic95", 0x080001, 0x20000, CRC(9b12f5c0) SHA1(2060420611b3354974c49bc80f556f945512570b) ) |
| 3570 | | ROM_LOAD32_BYTE( "epr-13376.ic99", 0x080002, 0x20000, CRC(449ac518) SHA1(0438a72e53a7889d39ea7e2530e49a2594d97e90) ) |
| 3571 | | ROM_LOAD32_BYTE( "epr-13375.ic103", 0x080003, 0x20000, CRC(5489a9ff) SHA1(c458cb55d957edae340535f54189438296f3ec2f) ) |
| 3572 | | ROM_LOAD32_BYTE( "epr-13374.ic92", 0x100000, 0x20000, CRC(6a319e4f) SHA1(d9f92b15f4baa14745048073205add35b7d42d27) ) |
| 3573 | | ROM_LOAD32_BYTE( "epr-13373.ic96", 0x100001, 0x20000, CRC(eca5588b) SHA1(11def0c293868193d457958fe7459fd8c31dbd2b) ) |
| 3574 | | ROM_LOAD32_BYTE( "epr-13372.ic100", 0x100002, 0x20000, CRC(0b45a433) SHA1(82fa2b208eaf70b70524681fbc3ec70085e70d83) ) |
| 3575 | | ROM_LOAD32_BYTE( "epr-13371.ic104", 0x100003, 0x20000, CRC(b68f4cff) SHA1(166f2a685cbc230c098fdc1646b6e632dd2b09dd) ) |
| 3576 | | ROM_LOAD32_BYTE( "epr-13370.ic93", 0x180000, 0x20000, CRC(78276620) SHA1(2c4505c57a1e765f9cfd48fb1637d67d199a2f1d) ) |
| 3577 | | ROM_LOAD32_BYTE( "epr-13369.ic97", 0x180001, 0x20000, CRC(8625bf0f) SHA1(0ae70bc0d54e25eecf4a11cf0600225dca35914d) ) |
| 3578 | | ROM_LOAD32_BYTE( "epr-13368.ic101", 0x180002, 0x20000, CRC(0f50716c) SHA1(eb4c7f47e11c58fe0d58f67e6dafabc6291eabb8) ) |
| 3579 | | ROM_LOAD32_BYTE( "epr-13367.ic105", 0x180003, 0x20000, CRC(4b1bb51f) SHA1(17fd5ac9e18dd6097a015e9d7b6815826f9c53f1) ) |
| 3580 | | |
| 3581 | | ROM_REGION( 0x10000, "mainpcb:gfx3", ROMREGION_ERASE00 ) // road gfx |
| 3582 | | // none?? |
| 3583 | | |
| 3584 | | ROM_REGION( 0x10000, "mainpcb:soundcpu", 0 ) // sound CPU |
| 3585 | | ROM_LOAD( "epr-13388.ic17", 0x00000, 0x10000, CRC(706581e4) SHA1(51c9dbf2bf0d6b8826de24cd33596f5c95136870) ) |
| 3586 | | |
| 3587 | | ROM_REGION( 0x80000, "mainpcb:pcm", ROMREGION_ERASEFF ) // Sega PCM sound data |
| 3588 | | ROM_LOAD( "epr-13391.ic11", 0x00000, 0x20000, CRC(8c30c867) SHA1(0d735291b1311890938f8a1143fae6af9feb2a69) ) |
| 3589 | | ROM_LOAD( "epr-13390.ic12", 0x20000, 0x20000, CRC(8c93cd05) SHA1(bb08094abac6c104eddf14f634e9791f03122946) ) |
| 3590 | | ROM_LOAD( "epr-13389.ic13", 0x40000, 0x20000, CRC(4e4c758e) SHA1(181750dfcdd6d5b28b063c980c251991163d9474) ) |
| 3591 | | ROM_END |
| 3592 | | |
| 3593 | | // twin setup |
| 3594 | 3544 | ROM_START( gprideru ) |
| 3595 | 3545 | ROM_REGION( 0x80000, "mainpcb:maincpu", 0 ) // 68000 code |
| 3596 | 3546 | ROM_LOAD16_BYTE( "epr-13407.ic58", 0x00000, 0x20000, CRC(03553ebd) SHA1(041a71a2dce2ad56360f500cb11e29a629020160) ) |
| r249143 | r249144 | |
| 3638 | 3588 | ROM_LOAD( "epr-13391.ic11", 0x00000, 0x20000, CRC(8c30c867) SHA1(0d735291b1311890938f8a1143fae6af9feb2a69) ) |
| 3639 | 3589 | ROM_LOAD( "epr-13390.ic12", 0x20000, 0x20000, CRC(8c93cd05) SHA1(bb08094abac6c104eddf14f634e9791f03122946) ) |
| 3640 | 3590 | ROM_LOAD( "epr-13389.ic13", 0x40000, 0x20000, CRC(4e4c758e) SHA1(181750dfcdd6d5b28b063c980c251991163d9474) ) |
| 3641 | | |
| 3642 | | ROM_REGION( 0x80000, "subpcb:maincpu", 0 ) // 68000 code |
| 3643 | | ROM_LOAD16_BYTE( "epr-13407.ic58", 0x00000, 0x20000, CRC(03553ebd) SHA1(041a71a2dce2ad56360f500cb11e29a629020160) ) |
| 3644 | | ROM_LOAD16_BYTE( "epr-13406.ic63", 0x00001, 0x20000, CRC(122c711f) SHA1(2bcc51347e771a7e7f770e68b24d82497d24aa2e) ) |
| 3645 | | |
| 3646 | | ROM_REGION( 0x2000, "subpcb:maincpu:key", 0 ) // decryption key |
| 3647 | | ROM_LOAD( "317-0162.key", 0x0000, 0x2000, CRC(8067de53) SHA1(e8cd1dfbad94856c6bd51569557667e72f0a5dd4) ) |
| 3648 | | |
| 3649 | | ROM_REGION( 0x80000, "subpcb:subcpu", 0 ) // 2nd 68000 code |
| 3650 | | ROM_LOAD16_BYTE( "epr-13395.ic20", 0x00000, 0x20000,CRC(d6ccfac7) SHA1(9287ab08600163a0d9bd33618c629f99391316bd) ) |
| 3651 | | ROM_LOAD16_BYTE( "epr-13394.ic29", 0x00001, 0x20000,CRC(914a55ec) SHA1(84fe1df12478990418b46b6800425e5599e9eff9) ) |
| 3652 | | ROM_LOAD16_BYTE( "epr-13393.ic21", 0x40000, 0x20000,CRC(08d023cc) SHA1(d008d57e494f484a1a84896065d53fb9b1d8d60e) ) |
| 3653 | | ROM_LOAD16_BYTE( "epr-13392.ic30", 0x40001, 0x20000,CRC(f927cd42) SHA1(67eab328c1fb878fe3d086d0639f5051b135a037) ) |
| 3654 | | |
| 3655 | | ROM_REGION( 0x30000, "subpcb:gfx1", 0 ) // tiles |
| 3656 | | ROM_LOAD( "epr-13383.ic154", 0x00000, 0x10000, CRC(24f897a7) SHA1(68ba17067d90f07bb5a549017be4773b33ae81d0) ) |
| 3657 | | ROM_LOAD( "epr-13384.ic153", 0x10000, 0x10000, CRC(fe8238bd) SHA1(601910bd86536e6b08f5308b298c8f01fa60f233) ) |
| 3658 | | ROM_LOAD( "epr-13385.ic152", 0x20000, 0x10000, CRC(6df1b995) SHA1(5aab19b87a9ef162c30ccf5974cb795e37dba91f) ) |
| 3659 | | |
| 3660 | | ROM_REGION32_LE( 0x200000, "subpcb:sprites", 0 ) // sprites |
| 3661 | | ROM_LOAD32_BYTE( "epr-13382.ic90", 0x000000, 0x20000, CRC(01dac209) SHA1(4c6b03308193c472f6cdbcede306f8ce6db0cc4b) ) |
| 3662 | | ROM_LOAD32_BYTE( "epr-13381.ic94", 0x000001, 0x20000, CRC(3a50d931) SHA1(9d9cb1793f3b8f562ce0ea49f2afeef099f20859) ) |
| 3663 | | ROM_LOAD32_BYTE( "epr-13380.ic98", 0x000002, 0x20000, CRC(ad1024c8) SHA1(86e941424b2e2e00940886e5daed640a78ed7403) ) |
| 3664 | | ROM_LOAD32_BYTE( "epr-13379.ic102", 0x000003, 0x20000, CRC(1ac17625) SHA1(7aefd382041dd3f97936ecb8738a3f2c9780c58f) ) |
| 3665 | | ROM_LOAD32_BYTE( "epr-13378.ic91", 0x080000, 0x20000, CRC(50c9b867) SHA1(dd9702b369ea8abd50da22ce721b7040428e9d4b) ) |
| 3666 | | ROM_LOAD32_BYTE( "epr-13377.ic95", 0x080001, 0x20000, CRC(9b12f5c0) SHA1(2060420611b3354974c49bc80f556f945512570b) ) |
| 3667 | | ROM_LOAD32_BYTE( "epr-13376.ic99", 0x080002, 0x20000, CRC(449ac518) SHA1(0438a72e53a7889d39ea7e2530e49a2594d97e90) ) |
| 3668 | | ROM_LOAD32_BYTE( "epr-13375.ic103", 0x080003, 0x20000, CRC(5489a9ff) SHA1(c458cb55d957edae340535f54189438296f3ec2f) ) |
| 3669 | | ROM_LOAD32_BYTE( "epr-13374.ic92", 0x100000, 0x20000, CRC(6a319e4f) SHA1(d9f92b15f4baa14745048073205add35b7d42d27) ) |
| 3670 | | ROM_LOAD32_BYTE( "epr-13373.ic96", 0x100001, 0x20000, CRC(eca5588b) SHA1(11def0c293868193d457958fe7459fd8c31dbd2b) ) |
| 3671 | | ROM_LOAD32_BYTE( "epr-13372.ic100", 0x100002, 0x20000, CRC(0b45a433) SHA1(82fa2b208eaf70b70524681fbc3ec70085e70d83) ) |
| 3672 | | ROM_LOAD32_BYTE( "epr-13371.ic104", 0x100003, 0x20000, CRC(b68f4cff) SHA1(166f2a685cbc230c098fdc1646b6e632dd2b09dd) ) |
| 3673 | | ROM_LOAD32_BYTE( "epr-13370.ic93", 0x180000, 0x20000, CRC(78276620) SHA1(2c4505c57a1e765f9cfd48fb1637d67d199a2f1d) ) |
| 3674 | | ROM_LOAD32_BYTE( "epr-13369.ic97", 0x180001, 0x20000, CRC(8625bf0f) SHA1(0ae70bc0d54e25eecf4a11cf0600225dca35914d) ) |
| 3675 | | ROM_LOAD32_BYTE( "epr-13368.ic101", 0x180002, 0x20000, CRC(0f50716c) SHA1(eb4c7f47e11c58fe0d58f67e6dafabc6291eabb8) ) |
| 3676 | | ROM_LOAD32_BYTE( "epr-13367.ic105", 0x180003, 0x20000, CRC(4b1bb51f) SHA1(17fd5ac9e18dd6097a015e9d7b6815826f9c53f1) ) |
| 3677 | | |
| 3678 | | ROM_REGION( 0x10000, "subpcb:gfx3", ROMREGION_ERASE00 ) // road gfx |
| 3679 | | // none?? |
| 3680 | | |
| 3681 | | ROM_REGION( 0x10000, "subpcb:soundcpu", 0 ) // sound CPU |
| 3682 | | ROM_LOAD( "epr-13388.ic17", 0x00000, 0x10000, CRC(706581e4) SHA1(51c9dbf2bf0d6b8826de24cd33596f5c95136870) ) |
| 3683 | | |
| 3684 | | ROM_REGION( 0x80000, "subpcb:pcm", ROMREGION_ERASEFF ) // Sega PCM sound data |
| 3685 | | ROM_LOAD( "epr-13391.ic11", 0x00000, 0x20000, CRC(8c30c867) SHA1(0d735291b1311890938f8a1143fae6af9feb2a69) ) |
| 3686 | | ROM_LOAD( "epr-13390.ic12", 0x20000, 0x20000, CRC(8c93cd05) SHA1(bb08094abac6c104eddf14f634e9791f03122946) ) |
| 3687 | | ROM_LOAD( "epr-13389.ic13", 0x40000, 0x20000, CRC(4e4c758e) SHA1(181750dfcdd6d5b28b063c980c251991163d9474) ) |
| 3688 | 3591 | ROM_END |
| 3689 | 3592 | |
| 3690 | 3593 | //************************************************************************************************************************* |
| r249143 | r249144 | |
| 3693 | 3596 | // Custom Chip 315-5304 (IC 127) |
| 3694 | 3597 | // IC BD Number: 834-7626-01 (roms are "MPR") / 834-7626-04 (roms are "EPR") |
| 3695 | 3598 | // |
| 3696 | | ROM_START( gpriderjs ) |
| 3697 | | ROM_REGION( 0x80000, "mainpcb:maincpu", 0 ) // 68000 code |
| 3698 | | ROM_LOAD16_BYTE( "epr-13387.ic58", 0x00000, 0x20000, CRC(a1e8b2c5) SHA1(22b70a9074263af808bb9dffee29cbcff7e304e3) ) |
| 3699 | | ROM_LOAD16_BYTE( "epr-13386.ic63", 0x00001, 0x20000, CRC(d8be9e66) SHA1(d81c03b08fd6b971554b94e0adac131a1dcf3248) ) |
| 3700 | | |
| 3701 | | ROM_REGION( 0x2000, "mainpcb:maincpu:key", 0 ) // decryption key |
| 3702 | | ROM_LOAD( "317-0161.key", 0x0000, 0x2000, CRC(e38ddc16) SHA1(d1f7f261320cbc605b4f7e5a9c28f49af5471d87) ) |
| 3703 | | |
| 3704 | | ROM_REGION( 0x80000, "mainpcb:subcpu", 0 ) // 2nd 68000 code |
| 3705 | | ROM_LOAD16_BYTE( "epr-13395.ic20", 0x00000, 0x20000,CRC(d6ccfac7) SHA1(9287ab08600163a0d9bd33618c629f99391316bd) ) |
| 3706 | | ROM_LOAD16_BYTE( "epr-13394.ic29", 0x00001, 0x20000,CRC(914a55ec) SHA1(84fe1df12478990418b46b6800425e5599e9eff9) ) |
| 3707 | | ROM_LOAD16_BYTE( "epr-13393.ic21", 0x40000, 0x20000,CRC(08d023cc) SHA1(d008d57e494f484a1a84896065d53fb9b1d8d60e) ) |
| 3708 | | ROM_LOAD16_BYTE( "epr-13392.ic30", 0x40001, 0x20000,CRC(f927cd42) SHA1(67eab328c1fb878fe3d086d0639f5051b135a037) ) |
| 3709 | | |
| 3710 | | ROM_REGION( 0x30000, "mainpcb:gfx1", 0 ) // tiles |
| 3711 | | ROM_LOAD( "epr-13383.ic154", 0x00000, 0x10000, CRC(24f897a7) SHA1(68ba17067d90f07bb5a549017be4773b33ae81d0) ) |
| 3712 | | ROM_LOAD( "epr-13384.ic153", 0x10000, 0x10000, CRC(fe8238bd) SHA1(601910bd86536e6b08f5308b298c8f01fa60f233) ) |
| 3713 | | ROM_LOAD( "epr-13385.ic152", 0x20000, 0x10000, CRC(6df1b995) SHA1(5aab19b87a9ef162c30ccf5974cb795e37dba91f) ) |
| 3714 | | |
| 3715 | | ROM_REGION32_LE( 0x200000, "mainpcb:sprites", 0 ) // sprites |
| 3716 | | ROM_LOAD32_BYTE( "epr-13382.ic90", 0x000000, 0x20000, CRC(01dac209) SHA1(4c6b03308193c472f6cdbcede306f8ce6db0cc4b) ) |
| 3717 | | ROM_LOAD32_BYTE( "epr-13381.ic94", 0x000001, 0x20000, CRC(3a50d931) SHA1(9d9cb1793f3b8f562ce0ea49f2afeef099f20859) ) |
| 3718 | | ROM_LOAD32_BYTE( "epr-13380.ic98", 0x000002, 0x20000, CRC(ad1024c8) SHA1(86e941424b2e2e00940886e5daed640a78ed7403) ) |
| 3719 | | ROM_LOAD32_BYTE( "epr-13379.ic102", 0x000003, 0x20000, CRC(1ac17625) SHA1(7aefd382041dd3f97936ecb8738a3f2c9780c58f) ) |
| 3720 | | ROM_LOAD32_BYTE( "epr-13378.ic91", 0x080000, 0x20000, CRC(50c9b867) SHA1(dd9702b369ea8abd50da22ce721b7040428e9d4b) ) |
| 3721 | | ROM_LOAD32_BYTE( "epr-13377.ic95", 0x080001, 0x20000, CRC(9b12f5c0) SHA1(2060420611b3354974c49bc80f556f945512570b) ) |
| 3722 | | ROM_LOAD32_BYTE( "epr-13376.ic99", 0x080002, 0x20000, CRC(449ac518) SHA1(0438a72e53a7889d39ea7e2530e49a2594d97e90) ) |
| 3723 | | ROM_LOAD32_BYTE( "epr-13375.ic103", 0x080003, 0x20000, CRC(5489a9ff) SHA1(c458cb55d957edae340535f54189438296f3ec2f) ) |
| 3724 | | ROM_LOAD32_BYTE( "epr-13374.ic92", 0x100000, 0x20000, CRC(6a319e4f) SHA1(d9f92b15f4baa14745048073205add35b7d42d27) ) |
| 3725 | | ROM_LOAD32_BYTE( "epr-13373.ic96", 0x100001, 0x20000, CRC(eca5588b) SHA1(11def0c293868193d457958fe7459fd8c31dbd2b) ) |
| 3726 | | ROM_LOAD32_BYTE( "epr-13372.ic100", 0x100002, 0x20000, CRC(0b45a433) SHA1(82fa2b208eaf70b70524681fbc3ec70085e70d83) ) |
| 3727 | | ROM_LOAD32_BYTE( "epr-13371.ic104", 0x100003, 0x20000, CRC(b68f4cff) SHA1(166f2a685cbc230c098fdc1646b6e632dd2b09dd) ) |
| 3728 | | ROM_LOAD32_BYTE( "epr-13370.ic93", 0x180000, 0x20000, CRC(78276620) SHA1(2c4505c57a1e765f9cfd48fb1637d67d199a2f1d) ) |
| 3729 | | ROM_LOAD32_BYTE( "epr-13369.ic97", 0x180001, 0x20000, CRC(8625bf0f) SHA1(0ae70bc0d54e25eecf4a11cf0600225dca35914d) ) |
| 3730 | | ROM_LOAD32_BYTE( "epr-13368.ic101", 0x180002, 0x20000, CRC(0f50716c) SHA1(eb4c7f47e11c58fe0d58f67e6dafabc6291eabb8) ) |
| 3731 | | ROM_LOAD32_BYTE( "epr-13367.ic105", 0x180003, 0x20000, CRC(4b1bb51f) SHA1(17fd5ac9e18dd6097a015e9d7b6815826f9c53f1) ) |
| 3732 | | |
| 3733 | | ROM_REGION( 0x10000, "mainpcb:gfx3", ROMREGION_ERASE00 ) // road gfx |
| 3734 | | // none?? |
| 3735 | | |
| 3736 | | ROM_REGION( 0x10000, "mainpcb:soundcpu", 0 ) // sound CPU |
| 3737 | | ROM_LOAD( "epr-13388.ic17", 0x00000, 0x10000, CRC(706581e4) SHA1(51c9dbf2bf0d6b8826de24cd33596f5c95136870) ) |
| 3738 | | |
| 3739 | | ROM_REGION( 0x80000, "mainpcb:pcm", ROMREGION_ERASEFF ) // Sega PCM sound data |
| 3740 | | ROM_LOAD( "epr-13391.ic11", 0x00000, 0x20000, CRC(8c30c867) SHA1(0d735291b1311890938f8a1143fae6af9feb2a69) ) |
| 3741 | | ROM_LOAD( "epr-13390.ic12", 0x20000, 0x20000, CRC(8c93cd05) SHA1(bb08094abac6c104eddf14f634e9791f03122946) ) |
| 3742 | | ROM_LOAD( "epr-13389.ic13", 0x40000, 0x20000, CRC(4e4c758e) SHA1(181750dfcdd6d5b28b063c980c251991163d9474) ) |
| 3743 | | ROM_END |
| 3744 | | |
| 3745 | | // twin setup |
| 3746 | 3599 | ROM_START( gpriderj ) |
| 3747 | 3600 | ROM_REGION( 0x80000, "mainpcb:maincpu", 0 ) // 68000 code |
| 3748 | 3601 | ROM_LOAD16_BYTE( "epr-13387.ic58", 0x00000, 0x20000, CRC(a1e8b2c5) SHA1(22b70a9074263af808bb9dffee29cbcff7e304e3) ) |
| r249143 | r249144 | |
| 3790 | 3643 | ROM_LOAD( "epr-13391.ic11", 0x00000, 0x20000, CRC(8c30c867) SHA1(0d735291b1311890938f8a1143fae6af9feb2a69) ) |
| 3791 | 3644 | ROM_LOAD( "epr-13390.ic12", 0x20000, 0x20000, CRC(8c93cd05) SHA1(bb08094abac6c104eddf14f634e9791f03122946) ) |
| 3792 | 3645 | ROM_LOAD( "epr-13389.ic13", 0x40000, 0x20000, CRC(4e4c758e) SHA1(181750dfcdd6d5b28b063c980c251991163d9474) ) |
| 3793 | | |
| 3794 | | ROM_REGION( 0x80000, "subpcb:maincpu", 0 ) // 68000 code |
| 3795 | | ROM_LOAD16_BYTE( "epr-13387.ic58", 0x00000, 0x20000, CRC(a1e8b2c5) SHA1(22b70a9074263af808bb9dffee29cbcff7e304e3) ) |
| 3796 | | ROM_LOAD16_BYTE( "epr-13386.ic63", 0x00001, 0x20000, CRC(d8be9e66) SHA1(d81c03b08fd6b971554b94e0adac131a1dcf3248) ) |
| 3797 | | |
| 3798 | | ROM_REGION( 0x2000, "subpcb:maincpu:key", 0 ) // decryption key |
| 3799 | | ROM_LOAD( "317-0161.key", 0x0000, 0x2000, CRC(e38ddc16) SHA1(d1f7f261320cbc605b4f7e5a9c28f49af5471d87) ) |
| 3800 | | |
| 3801 | | ROM_REGION( 0x80000, "subpcb:subcpu", 0 ) // 2nd 68000 code |
| 3802 | | ROM_LOAD16_BYTE( "epr-13395.ic20", 0x00000, 0x20000,CRC(d6ccfac7) SHA1(9287ab08600163a0d9bd33618c629f99391316bd) ) |
| 3803 | | ROM_LOAD16_BYTE( "epr-13394.ic29", 0x00001, 0x20000,CRC(914a55ec) SHA1(84fe1df12478990418b46b6800425e5599e9eff9) ) |
| 3804 | | ROM_LOAD16_BYTE( "epr-13393.ic21", 0x40000, 0x20000,CRC(08d023cc) SHA1(d008d57e494f484a1a84896065d53fb9b1d8d60e) ) |
| 3805 | | ROM_LOAD16_BYTE( "epr-13392.ic30", 0x40001, 0x20000,CRC(f927cd42) SHA1(67eab328c1fb878fe3d086d0639f5051b135a037) ) |
| 3806 | | |
| 3807 | | ROM_REGION( 0x30000, "subpcb:gfx1", 0 ) // tiles |
| 3808 | | ROM_LOAD( "epr-13383.ic154", 0x00000, 0x10000, CRC(24f897a7) SHA1(68ba17067d90f07bb5a549017be4773b33ae81d0) ) |
| 3809 | | ROM_LOAD( "epr-13384.ic153", 0x10000, 0x10000, CRC(fe8238bd) SHA1(601910bd86536e6b08f5308b298c8f01fa60f233) ) |
| 3810 | | ROM_LOAD( "epr-13385.ic152", 0x20000, 0x10000, CRC(6df1b995) SHA1(5aab19b87a9ef162c30ccf5974cb795e37dba91f) ) |
| 3811 | | |
| 3812 | | ROM_REGION32_LE( 0x200000, "subpcb:sprites", 0 ) // sprites |
| 3813 | | ROM_LOAD32_BYTE( "epr-13382.ic90", 0x000000, 0x20000, CRC(01dac209) SHA1(4c6b03308193c472f6cdbcede306f8ce6db0cc4b) ) |
| 3814 | | ROM_LOAD32_BYTE( "epr-13381.ic94", 0x000001, 0x20000, CRC(3a50d931) SHA1(9d9cb1793f3b8f562ce0ea49f2afeef099f20859) ) |
| 3815 | | ROM_LOAD32_BYTE( "epr-13380.ic98", 0x000002, 0x20000, CRC(ad1024c8) SHA1(86e941424b2e2e00940886e5daed640a78ed7403) ) |
| 3816 | | ROM_LOAD32_BYTE( "epr-13379.ic102", 0x000003, 0x20000, CRC(1ac17625) SHA1(7aefd382041dd3f97936ecb8738a3f2c9780c58f) ) |
| 3817 | | ROM_LOAD32_BYTE( "epr-13378.ic91", 0x080000, 0x20000, CRC(50c9b867) SHA1(dd9702b369ea8abd50da22ce721b7040428e9d4b) ) |
| 3818 | | ROM_LOAD32_BYTE( "epr-13377.ic95", 0x080001, 0x20000, CRC(9b12f5c0) SHA1(2060420611b3354974c49bc80f556f945512570b) ) |
| 3819 | | ROM_LOAD32_BYTE( "epr-13376.ic99", 0x080002, 0x20000, CRC(449ac518) SHA1(0438a72e53a7889d39ea7e2530e49a2594d97e90) ) |
| 3820 | | ROM_LOAD32_BYTE( "epr-13375.ic103", 0x080003, 0x20000, CRC(5489a9ff) SHA1(c458cb55d957edae340535f54189438296f3ec2f) ) |
| 3821 | | ROM_LOAD32_BYTE( "epr-13374.ic92", 0x100000, 0x20000, CRC(6a319e4f) SHA1(d9f92b15f4baa14745048073205add35b7d42d27) ) |
| 3822 | | ROM_LOAD32_BYTE( "epr-13373.ic96", 0x100001, 0x20000, CRC(eca5588b) SHA1(11def0c293868193d457958fe7459fd8c31dbd2b) ) |
| 3823 | | ROM_LOAD32_BYTE( "epr-13372.ic100", 0x100002, 0x20000, CRC(0b45a433) SHA1(82fa2b208eaf70b70524681fbc3ec70085e70d83) ) |
| 3824 | | ROM_LOAD32_BYTE( "epr-13371.ic104", 0x100003, 0x20000, CRC(b68f4cff) SHA1(166f2a685cbc230c098fdc1646b6e632dd2b09dd) ) |
| 3825 | | ROM_LOAD32_BYTE( "epr-13370.ic93", 0x180000, 0x20000, CRC(78276620) SHA1(2c4505c57a1e765f9cfd48fb1637d67d199a2f1d) ) |
| 3826 | | ROM_LOAD32_BYTE( "epr-13369.ic97", 0x180001, 0x20000, CRC(8625bf0f) SHA1(0ae70bc0d54e25eecf4a11cf0600225dca35914d) ) |
| 3827 | | ROM_LOAD32_BYTE( "epr-13368.ic101", 0x180002, 0x20000, CRC(0f50716c) SHA1(eb4c7f47e11c58fe0d58f67e6dafabc6291eabb8) ) |
| 3828 | | ROM_LOAD32_BYTE( "epr-13367.ic105", 0x180003, 0x20000, CRC(4b1bb51f) SHA1(17fd5ac9e18dd6097a015e9d7b6815826f9c53f1) ) |
| 3829 | | |
| 3830 | | ROM_REGION( 0x10000, "subpcb:gfx3", ROMREGION_ERASE00 ) // road gfx |
| 3831 | | // none?? |
| 3832 | | |
| 3833 | | ROM_REGION( 0x10000, "subpcb:soundcpu", 0 ) // sound CPU |
| 3834 | | ROM_LOAD( "epr-13388.ic17", 0x00000, 0x10000, CRC(706581e4) SHA1(51c9dbf2bf0d6b8826de24cd33596f5c95136870) ) |
| 3835 | | |
| 3836 | | ROM_REGION( 0x80000, "subpcb:pcm", ROMREGION_ERASEFF ) // Sega PCM sound data |
| 3837 | | ROM_LOAD( "epr-13391.ic11", 0x00000, 0x20000, CRC(8c30c867) SHA1(0d735291b1311890938f8a1143fae6af9feb2a69) ) |
| 3838 | | ROM_LOAD( "epr-13390.ic12", 0x20000, 0x20000, CRC(8c93cd05) SHA1(bb08094abac6c104eddf14f634e9791f03122946) ) |
| 3839 | | ROM_LOAD( "epr-13389.ic13", 0x40000, 0x20000, CRC(4e4c758e) SHA1(181750dfcdd6d5b28b063c980c251991163d9474) ) |
| 3840 | 3646 | ROM_END |
| 3841 | 3647 | |
| 3648 | |
| 3842 | 3649 | //************************************************************************************************************************* |
| 3843 | 3650 | //************************************************************************************************************************* |
| 3844 | 3651 | //************************************************************************************************************************* |
| r249143 | r249144 | |
| 3999 | 3806 | GAME( 1989, smgpja, smgp, sega_smgp_fd1094, smgp, segaxbd_new_state, smgp, ROT0, "Sega", "Super Monaco GP (Japan, Rev A, FD1094 317-0124a)", 0 ) |
| 4000 | 3807 | GAME( 1990, abcop, 0, sega_xboard_fd1094, abcop, driver_device, 0, ROT0, "Sega", "A.B. Cop (World, FD1094 317-0169b)", 0 ) |
| 4001 | 3808 | GAME( 1990, abcopj, abcop, sega_xboard_fd1094, abcop, driver_device, 0, ROT0, "Sega", "A.B. Cop (Japan, FD1094 317-0169b)", 0 ) |
| 4002 | | // wasn't officially available as a single PCB setup, but runs anyway albeit with messages suggesting you can compete against a rival that doesn't exist? |
| 4003 | | GAME( 1990, gpriders, gprider, sega_xboard_fd1094, gprider, segaxbd_new_state, gprider, ROT0, "Sega", "GP Rider (World, FD1094 317-0163)", 0 ) |
| 4004 | | GAME( 1990, gpriderus,gprider, sega_xboard_fd1094, gprider, segaxbd_new_state, gprider, ROT0, "Sega", "GP Rider (US, FD1094 317-0162)", 0 ) |
| 4005 | | GAME( 1990, gpriderjs,gprider, sega_xboard_fd1094, gprider, segaxbd_new_state, gprider, ROT0, "Sega", "GP Rider (Japan, FD1094 317-0161)", 0 ) |
| 3809 | GAME( 1990, gprider, 0, sega_xboard_fd1094, gprider, segaxbd_new_state, gprider, ROT0, "Sega", "GP Rider (World, FD1094 317-0163)", 0 ) |
| 3810 | GAME( 1990, gprideru, gprider, sega_xboard_fd1094, gprider, segaxbd_new_state, gprider, ROT0, "Sega", "GP Rider (US, FD1094 317-0162)", 0 ) |
| 3811 | GAME( 1990, gpriderj, gprider, sega_xboard_fd1094, gprider, segaxbd_new_state, gprider, ROT0, "Sega", "GP Rider (Japan, FD1094 317-0161)", 0 ) |
| 4006 | 3812 | |
| 4007 | | // multi X-Board (2 stacks directly connected, shared RAM on bridge PCB - not networked) |
| 4008 | | GAME( 1990, gprider, 0, sega_xboard_fd1094_double, gprider_double, segaxbd_new_state_double, gprider_double, ROT0, "Sega", "GP Rider (World, FD1094 317-0163) (Twin setup)", 0 ) |
| 4009 | | GAME( 1990, gprideru,gprider, sega_xboard_fd1094_double, gprider_double, segaxbd_new_state_double, gprider_double, ROT0, "Sega", "GP Rider (US, FD1094 317-0162) (Twin setup)", 0 ) |
| 4010 | | GAME( 1990, gpriderj,gprider, sega_xboard_fd1094_double, gprider_double, segaxbd_new_state_double, gprider_double, ROT0, "Sega", "GP Rider (Japan, FD1094 317-0161) (Twin setup)", 0 ) |
| 3813 | // multi X-Board (2 stacks directly connected, shared RAM on bridge PCB?) |
| 3814 | GAME( 1990, gpridert, gprider, sega_xboard_fd1094_double, gprider_double, segaxbd_new_state_double, gprider_double, ROT0, "Sega", "GP Rider (World, FD1094 317-0163) (master-slave setup)", MACHINE_NOT_WORKING ) // communication breaks down |
| 4011 | 3815 | |
| 4012 | 3816 | // X-Board + other boards? |
| 4013 | 3817 | GAME( 1991, rascot, 0, sega_rascot, rascot, segaxbd_new_state, rascot, ROT0, "Sega", "Royal Ascot (Japan, terminal?)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) |
trunk/src/mess/drivers/bbc.c
| r249143 | r249144 | |
| 48 | 48 | #include "cpu/m6502/m6502.h" |
| 49 | 49 | #include "cpu/m6502/m65sc02.h" |
| 50 | 50 | #include "machine/6522via.h" |
| 51 | | #include "machine/mc146818.h" /* RTC & CMOS RAM */ |
| 52 | 51 | #include "bus/centronics/ctronics.h" |
| 53 | 52 | #include "bus/econet/econet.h" |
| 54 | 53 | #include "sound/tms5220.h" /* Speech */ |
| r249143 | r249144 | |
| 58 | 57 | /* Devices */ |
| 59 | 58 | #include "imagedev/flopdrv.h" |
| 60 | 59 | #include "formats/bbc_dsk.h" |
| 61 | | #include "formats/basicdsk.h" |
| 62 | 60 | #include "imagedev/cassette.h" |
| 63 | 61 | #include "formats/uef_cas.h" |
| 64 | 62 | #include "formats/csw_cas.h" |
| r249143 | r249144 | |
| 138 | 136 | } |
| 139 | 137 | |
| 140 | 138 | static ADDRESS_MAP_START( bbca_mem, AS_PROGRAM, 8, bbc_state ) |
| 141 | | ADDRESS_MAP_UNMAP_HIGH /* Hardware marked with a # is not present in a Model A */ |
| 139 | ADDRESS_MAP_UNMAP_HIGH /* Hardware marked with a # is not present in a Model A */ |
| 142 | 140 | |
| 143 | | AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorya1_w) /* 0000-3fff Regular Ram */ |
| 144 | | AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w) /* 4000-7fff Repeat of the Regular Ram */ |
| 145 | | AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") /* 8000-bfff Paged ROM */ |
| 146 | | AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7") /* c000-fbff OS ROM */ |
| 147 | | AM_RANGE(0xfc00, 0xfdff) AM_NOP /* fc00-fdff FRED & JIM Pages */ |
| 148 | | /* fe00-feff Shiela Address Page */ |
| 149 | | AM_RANGE(0xfe00, 0xfe07) AM_READWRITE(bbc_6845_r, bbc_6845_w) /* fe00-fe07 6845 CRTC Video controller */ |
| 150 | | AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w) |
| 141 | AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorya1_w) /* 0000-3fff Regular Ram */ |
| 142 | AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w) /* 4000-7fff Repeat of the Regular Ram */ |
| 143 | AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w) /* 8000-bfff Paged ROM */ |
| 144 | AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7") /* c000-fbff OS ROM */ |
| 145 | AM_RANGE(0xfc00, 0xfdff) AM_NOP /* fc00-fdff FRED & JIM Pages */ |
| 146 | /* fe00-feff SHEILA Address Page */ |
| 147 | AM_RANGE(0xfe00, 0xfe00) AM_MIRROR(0x06) AM_DEVREADWRITE("mc6845", mc6845_device, status_r, address_w) /* fe00-fe07 6845 CRTC Video controller */ |
| 148 | AM_RANGE(0xfe01, 0xfe01) AM_MIRROR(0x06) AM_DEVREADWRITE("mc6845", mc6845_device, register_r, register_w) |
| 149 | AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w) /* fe08-fe0F 6850 ACIA Serial controller */ |
| 151 | 150 | AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w) |
| 152 | | AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w) /* fe10-fe17 Serial ULA Serial system chip */ |
| 153 | | AM_RANGE(0xfe18, 0xfe1f) AM_NOP /* fe18-fe1f INTOFF/STATID # ECONET Interrupt Off / ID No. */ |
| 154 | | AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w) /* R: fe20-fe2f INTON # ECONET Interrupt On */ |
| 155 | | /* W: fe20-fe2f Video ULA Video system chip */ |
| 156 | | AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selecta_w) /* R: fe30-fe3f NC Not Connected */ |
| 157 | | /* W: fe30-fe3f 84LS161 Paged ROM selector */ |
| 158 | | AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) /* fe40-fe5f 6522 VIA SYSTEM VIA */ |
| 159 | | AM_RANGE(0xfe60, 0xfe7f) AM_NOP /* fe60-fe7f 6522 VIA # USER VIA */ |
| 160 | | AM_RANGE(0xfe80, 0xfe9f) AM_NOP /* fe80-fe9f 8271/1770 FDC # Floppy disc controller */ |
| 161 | | AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r) /* fea0-febf 68B54 ADLC # ECONET controller */ |
| 162 | | AM_RANGE(0xfec0, 0xfedf) AM_NOP /* fec0-fedf uPD7002 # Analogue to digital converter */ |
| 163 | | AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r) /* fee0-feff Tube ULA # Tube system interface */ |
| 164 | | AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00) /* ff00-ffff OS Rom (continued) */ |
| 151 | AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w) /* fe10-fe17 Serial ULA Serial system chip */ |
| 152 | AM_RANGE(0xfe18, 0xfe1f) AM_NOP /* fe18-fe1f INTOFF/STATID # ECONET Interrupt Off / ID No. */ |
| 153 | AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w) /* R: fe20-fe2f INTON # ECONET Interrupt On */ |
| 154 | /* W: fe20-fe2f Video ULA Video system chip */ |
| 155 | AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selecta_w) /* R: fe30-fe3f NC Not Connected */ |
| 156 | /* W: fe30-fe3f 84LS161 Paged ROM selector */ |
| 157 | AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) /* fe40-fe5f 6522 VIA SYSTEM VIA */ |
| 158 | AM_RANGE(0xfe60, 0xfe7f) AM_NOP /* fe60-fe7f 6522 VIA # USER VIA */ |
| 159 | AM_RANGE(0xfe80, 0xfe9f) AM_NOP /* fe80-fe9f 8271/1770 FDC # Floppy disc controller */ |
| 160 | AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r) /* fea0-febf 68B54 ADLC # ECONET controller */ |
| 161 | AM_RANGE(0xfec0, 0xfedf) AM_NOP /* fec0-fedf uPD7002 # Analogue to digital converter */ |
| 162 | AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r) /* fee0-feff Tube ULA # Tube system interface */ |
| 163 | AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00) /* ff00-ffff OS Rom (continued) */ |
| 165 | 164 | ADDRESS_MAP_END |
| 166 | 165 | |
| 167 | 166 | |
| 168 | | static ADDRESS_MAP_START( bbcb_mem, AS_PROGRAM, 8, bbc_state ) |
| 167 | static ADDRESS_MAP_START( bbc_base, AS_PROGRAM, 8, bbc_state ) |
| 169 | 168 | ADDRESS_MAP_UNMAP_HIGH |
| 170 | 169 | |
| 170 | AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7") /* c000-fbff OS ROM */ |
| 171 | AM_RANGE(0xfc00, 0xfdff) AM_NOP /* fc00-fdff FRED & JIM Pages */ |
| 172 | /* fe00-feff SHEILA Address Page */ |
| 173 | AM_RANGE(0xfe00, 0xfe00) AM_MIRROR(0x06) AM_DEVREADWRITE("mc6845", mc6845_device, status_r, address_w) /* fe00-fe07 6845 CRTC Video controller */ |
| 174 | AM_RANGE(0xfe01, 0xfe01) AM_MIRROR(0x06) AM_DEVREADWRITE("mc6845", mc6845_device, register_r, register_w) |
| 175 | AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w) /* fe08-fe0F 6850 ACIA Serial controller */ |
| 176 | AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w) |
| 177 | AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w) /* fe10-fe17 Serial ULA Serial system chip */ |
| 178 | AM_RANGE(0xfe18, 0xfe1f) AM_READ_PORT("S11") /* fe18-fe1f INTOFF/STATID ECONET Interrupt Off / ID No. */ |
| 179 | AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w) /* R: fe20-fe2f INTON ECONET Interrupt On */ |
| 180 | /* W: fe20-fe2f Video ULA Video system chip */ |
| 181 | AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) /* fe40-fe5f 6522 VIA SYSTEM VIA */ |
| 182 | AM_RANGE(0xfe60, 0xfe7f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) /* fe60-fe7f 6522 VIA USER VIA */ |
| 183 | /* fe80-fe9f FDC Floppy disc controller */ |
| 184 | AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r) /* fea0-febf 68B54 ADLC ECONET controller */ |
| 185 | AM_RANGE(0xfec0, 0xfedf) AM_DEVREADWRITE("upd7002", upd7002_device, read, write) /* fec0-fedf uPD7002 Analogue to digital converter */ |
| 186 | AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r) /* fee0-feff Tube ULA Tube system interface */ |
| 187 | AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00) /* ff00-ffff OS ROM (continued) */ |
| 188 | ADDRESS_MAP_END |
| 189 | |
| 190 | |
| 191 | static ADDRESS_MAP_START( bbcb_mem, AS_PROGRAM, 8, bbc_state ) |
| 171 | 192 | AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorya1_w) /* 0000-3fff Regular Ram */ |
| 172 | | AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w) /* 4000-7fff Repeat of the Regular Ram */ |
| 193 | AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w) /* 4000-7fff Regular Ram */ |
| 173 | 194 | AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w) /* 8000-bfff Paged ROM */ |
| 174 | | AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7") /* c000-fbff OS ROM */ |
| 175 | | AM_RANGE(0xfc00, 0xfdff) AM_READWRITE(bbc_opus_read, bbc_opus_write) /* fc00-fdff OPUS Disc Controller */ |
| 176 | | /* fe00-feff Shiela Address Page */ |
| 177 | | AM_RANGE(0xfe00, 0xfe07) AM_READWRITE(bbc_6845_r, bbc_6845_w) /* fe00-fe07 6845 CRTC Video controller */ |
| 178 | | AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w) |
| 179 | | AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w) |
| 180 | | AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w) /* fe10-fe17 Serial ULA Serial system chip */ |
| 181 | | AM_RANGE(0xfe18, 0xfe1f) AM_NOP /* fe18-fe1f INTOFF/STATID ECONET Interrupt Off / ID No. */ |
| 182 | | AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w) /* R: fe20-fe2f INTON ECONET Interrupt On */ |
| 183 | | /* W: fe20-fe2f Video ULA Video system chip */ |
| 184 | 195 | AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectb_w) /* R: fe30-fe3f NC Not Connected */ |
| 185 | | /* W: fe30-fe3f 84LS161 Paged ROM selector */ |
| 186 | | AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) /* fe40-fe5f 6522 VIA SYSTEM VIA */ |
| 187 | | AM_RANGE(0xfe60, 0xfe7f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) /* fe60-fe7f 6522 VIA USER VIA */ |
| 188 | | AM_RANGE(0xfe80, 0xfe9f) AM_READWRITE(bbc_disc_r, bbc_disc_w) /* fe80-fe9f 8271 FDC Floppy disc controller */ |
| 189 | | AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r) /* fea0-febf 68B54 ADLC ECONET controller */ |
| 190 | | AM_RANGE(0xfec0, 0xfedf) AM_DEVREADWRITE("upd7002", upd7002_device, read, write) /* fec0-fedf uPD7002 Analogue to digital converter */ |
| 191 | | AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r) /* fee0-feff Tube ULA Tube system interface */ |
| 192 | | AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00) /* ff00-ffff OS Rom (continued) */ |
| 196 | /* W: fe30-fe3f 84LS161 Paged ROM selector */ |
| 197 | AM_RANGE(0xfe80, 0xfe83) AM_DEVREADWRITE("i8271", i8271_device, read, write) /* fe80-fe9f 8271 FDC Floppy disc controller */ |
| 198 | AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("i8271", i8271_device, dack_r, dack_w) /* fe80-fe9f 8271 FDC Floppy disc controller */ |
| 199 | AM_IMPORT_FROM(bbc_base) |
| 193 | 200 | ADDRESS_MAP_END |
| 194 | 201 | |
| 195 | 202 | |
| 203 | static ADDRESS_MAP_START(bbcb1770_mem, AS_PROGRAM, 8, bbc_state) |
| 204 | AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorya1_w) /* 0000-3fff Regular Ram */ |
| 205 | AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w) /* 4000-7fff Regular Ram */ |
| 206 | AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w) /* 8000-bfff Paged ROM */ |
| 207 | AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectb_w) /* R: fe30-fe3f NC Not Connected */ |
| 208 | /* W: fe30-fe3f 84LS161 Paged ROM selector */ |
| 209 | AM_RANGE(0xfe80, 0xfe83) AM_WRITE(bbc_wd1770_status_w) /* fe80-fe83 1770 FDC Drive control register */ |
| 210 | AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_t, read, write) /* fe84-fe9f 1770 FDC Floppy disc controller */ |
| 211 | AM_IMPORT_FROM(bbc_base) |
| 212 | ADDRESS_MAP_END |
| 213 | |
| 214 | |
| 196 | 215 | static ADDRESS_MAP_START( bbcbp_mem, AS_PROGRAM, 8, bbc_state ) |
| 197 | | ADDRESS_MAP_UNMAP_HIGH |
| 198 | | |
| 199 | 216 | AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorybp1_w) /* 0000-2fff Regular Ram */ |
| 200 | 217 | AM_RANGE(0x3000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE(bbc_memorybp2_w) /* 3000-7fff Video/Shadow Ram */ |
| 201 | 218 | AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_w) /* 8000-afff Paged ROM or 12K of SWRAM */ |
| 202 | 219 | AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6") /* b000-bfff Rest of paged ROM area */ |
| 203 | | AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7") /* c000-fbff OS ROM */ |
| 204 | | AM_RANGE(0xfc00, 0xfdff) AM_NOP /* fc00-fdff FRED & JIM Pages */ |
| 205 | | /* fe00-feff Shiela Address Page */ |
| 206 | | AM_RANGE(0xfe00, 0xfe07) AM_READWRITE(bbc_6845_r, bbc_6845_w) /* fe00-fe07 6845 CRTC Video controller */ |
| 207 | | AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w) |
| 208 | | AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w) |
| 209 | | AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w) /* fe10-fe17 Serial ULA Serial system chip */ |
| 210 | | AM_RANGE(0xfe18, 0xfe1f) AM_NOP /* fe18-fe1f INTOFF/STATID ECONET Interrupt Off / ID No. */ |
| 211 | | AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w) /* R: fe20-fe2f INTON ECONET Interrupt On */ |
| 212 | | /* W: fe20-fe2f Video ULA Video system chip */ |
| 213 | 220 | AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w) /* R: fe30-fe3f NC Not Connected */ |
| 214 | | /* W: fe30-fe3f 84LS161 Paged ROM selector */ |
| 215 | | AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) /* fe40-fe5f 6522 VIA SYSTEM VIA */ |
| 216 | | AM_RANGE(0xfe60, 0xfe7f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) /* fe60-fe7f 6522 VIA USER VIA */ |
| 217 | | AM_RANGE(0xfe80, 0xfe9f) AM_READWRITE(bbc_wd1770_read, bbc_wd1770_write) /* fe80-fe9f 1770 FDC Floppy disc controller */ |
| 218 | | AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r) /* fea0-febf 68B54 ADLC ECONET controller */ |
| 219 | | AM_RANGE(0xfec0, 0xfedf) AM_DEVREADWRITE("upd7002", upd7002_device, read, write) /* fec0-fedf uPD7002 Analogue to digital converter */ |
| 220 | | AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r) /* fee0-feff Tube ULA Tube system interface */ |
| 221 | | AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00) /* ff00-ffff OS Rom (continued) */ |
| 221 | /* W: fe30-fe3f 84LS161 Paged ROM selector */ |
| 222 | AM_RANGE(0xfe80, 0xfe83) AM_WRITE(bbc_wd1770_status_w) /* fe80-fe83 1770 FDC Drive control register */ |
| 223 | AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_t, read, write) /* fe84-fe9f 1770 FDC Floppy disc controller */ |
| 224 | AM_IMPORT_FROM(bbc_base) |
| 222 | 225 | ADDRESS_MAP_END |
| 223 | 226 | |
| 224 | 227 | |
| 225 | 228 | static ADDRESS_MAP_START( bbcbp128_mem, AS_PROGRAM, 8, bbc_state ) |
| 226 | | ADDRESS_MAP_UNMAP_HIGH |
| 227 | | |
| 228 | 229 | AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorybp1_w) /* 0000-2fff Regular Ram */ |
| 229 | 230 | AM_RANGE(0x3000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE(bbc_memorybp2_w) /* 3000-7fff Video/Shadow Ram */ |
| 230 | 231 | AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_128_w) /* 8000-afff Paged ROM or 12K of SWRAM */ |
| 231 | 232 | AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6") AM_WRITE(bbc_memorybp6_128_w) /* b000-bfff Rest of paged ROM area */ |
| 232 | | AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7") /* c000-fbff OS ROM */ |
| 233 | | AM_RANGE(0xfc00, 0xfdff) AM_NOP /* fc00-fdff FRED & JIM Pages */ |
| 234 | | /* fe00-feff Shiela Address Page */ |
| 235 | | AM_RANGE(0xfe00, 0xfe07) AM_READWRITE(bbc_6845_r, bbc_6845_w) /* fe00-fe07 6845 CRTC Video controller */ |
| 236 | | AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w) |
| 237 | | AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w) |
| 238 | | AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w) /* fe10-fe17 Serial ULA Serial system chip */ |
| 239 | | AM_RANGE(0xfe10, 0xfe17) AM_NOP /* fe10-fe17 Serial ULA Serial system chip */ |
| 240 | | AM_RANGE(0xfe18, 0xfe1f) AM_NOP /* fe18-fe1f INTOFF/STATID ECONET Interrupt Off / ID No. */ |
| 241 | | AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w) /* R: fe20-fe2f INTON ECONET Interrupt On */ |
| 242 | | /* W: fe20-fe2f Video ULA Video system chip */ |
| 243 | 233 | AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w) /* R: fe30-fe3f NC Not Connected */ |
| 244 | | /* W: fe30-fe3f 84LS161 Paged ROM selector */ |
| 245 | | AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) /* fe40-fe5f 6522 VIA SYSTEM VIA */ |
| 246 | | AM_RANGE(0xfe60, 0xfe7f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) /* fe60-fe7f 6522 VIA USER VIA */ |
| 247 | | AM_RANGE(0xfe80, 0xfe9f) AM_READWRITE(bbc_wd1770_read, bbc_wd1770_write) /* fe80-fe9f 1770 FDC Floppy disc controller */ |
| 248 | | AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r) /* fea0-febf 68B54 ADLC ECONET controller */ |
| 249 | | AM_RANGE(0xfec0, 0xfedf) AM_DEVREADWRITE("upd7002", upd7002_device, read, write) /* fec0-fedf uPD7002 Analogue to digital converter */ |
| 250 | | AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r) /* fee0-feff Tube ULA Tube system interface */ |
| 251 | | AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00) /* ff00-ffff OS Rom (continued) */ |
| 234 | /* W: fe30-fe3f 84LS161 Paged ROM selector */ |
| 235 | AM_RANGE(0xfe80, 0xfe83) AM_WRITE(bbc_wd1770_status_w) /* fe80-fe83 1770 FDC Drive control register */ |
| 236 | AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_t, read, write) /* fe84-fe9f 1770 FDC Floppy disc controller */ |
| 237 | AM_IMPORT_FROM(bbc_base) |
| 252 | 238 | ADDRESS_MAP_END |
| 253 | 239 | |
| 254 | 240 | |
| 241 | static ADDRESS_MAP_START( reutapm_mem, AS_PROGRAM, 8, bbc_state ) |
| 242 | AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorybp1_w) /* 0000-2fff Regular Ram */ |
| 243 | AM_RANGE(0x3000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE(bbc_memorybp2_w) /* 3000-7fff Video/Shadow Ram */ |
| 244 | AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_w) /* 8000-afff Paged ROM or 12K of SWRAM */ |
| 245 | AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6") /* b000-bfff Rest of paged ROM area */ |
| 246 | AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w) /* R: fe30-fe3f NC Not Connected */ |
| 247 | /* W: fe30-fe3f 84LS161 Paged ROM selector */ |
| 248 | AM_RANGE(0xfe80, 0xfe83) AM_NOP /* fe80-fe83 1770 FDC Drive control register */ |
| 249 | AM_RANGE(0xfe84, 0xfe9f) AM_NOP /* fe84-fe9f 1770 FDC Floppy disc controller */ |
| 250 | AM_IMPORT_FROM(bbc_base) |
| 251 | ADDRESS_MAP_END |
| 252 | |
| 255 | 253 | /****************************************************************************** |
| 256 | 254 | &FC00-&FCFF FRED |
| 257 | 255 | &FD00-&FDFF JIM |
| r249143 | r249144 | |
| 263 | 261 | |
| 264 | 262 | &20-&23 Video ULA - Video system chip 4 ( 2 bytes x 2 ) |
| 265 | 263 | &24-&27 FDC Latch 1770 Control latch 1770 Control latch 4 ( 1 byte x 4 ) |
| 266 | | &28-&2F 1770 registers 1770 Disc Controller 1170 Disc Controller 8 ( 4 bytes x 2 ) |
| 264 | &28-&2F 1770 registers 1770 Disc Controller 1770 Disc Controller 8 ( 4 bytes x 2 ) |
| 267 | 265 | &30-&33 ROMSEL - ROM Select 4 ( 1 byte x 4 ) |
| 268 | 266 | &34-&37 ACCCON ACCCON select reg. ACCCON select reg 4 ( 1 byte x 4 ) |
| 269 | 267 | &38-&3F NC - - |
| r249143 | r249144 | |
| 282 | 280 | AM_RANGE(0x8000, 0x8fff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybm4_w) /* 8000-8fff Paged ROM/RAM or 4K of RAM ANDY */ |
| 283 | 281 | AM_RANGE(0x9000, 0xbfff) AM_READ_BANK("bank5") AM_WRITE(bbc_memorybm5_w) /* 9000-bfff Rest of paged ROM/RAM area */ |
| 284 | 282 | AM_RANGE(0xc000, 0xdfff) AM_READ_BANK("bank7") AM_WRITE(bbc_memorybm7_w) /* c000-dfff OS ROM or 8K of RAM HAZEL */ |
| 285 | | AM_RANGE(0xe000, 0xfbff) AM_ROM AM_REGION("os", 0x2000) /* e000-fbff OS ROM */ |
| 286 | | AM_RANGE(0xfc00, 0xfeff) AM_READ_BANK("bank8") AM_WRITE(bbcm_w) /* this is now processed directly because it can be ROM or hardware */ |
| 287 | | AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00) /* ff00-ffff OS ROM (continued) */ |
| 283 | AM_RANGE(0xe000, 0xfbff) AM_ROM AM_REGION("os", 0x2000) /* e000-fbff OS ROM */ |
| 284 | AM_RANGE(0xfc00, 0xfeff) AM_READ_BANK("bank8") AM_WRITE(bbcm_w) /* processed directly because it can be ROM or hardware */ |
| 285 | AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00) /* ff00-ffff OS ROM (continued) */ |
| 288 | 286 | ADDRESS_MAP_END |
| 289 | 287 | |
| 290 | 288 | |
| r249143 | r249144 | |
| 464 | 462 | |
| 465 | 463 | static INPUT_PORTS_START(bbc_dipswitch) |
| 466 | 464 | PORT_MODIFY("COL2") |
| 467 | | PORT_DIPNAME(0x01, 0x01, "DIP 8 (Default File System)") |
| 465 | PORT_DIPNAME(0x01, 0x01, "Default File System") PORT_DIPLOCATION("KBD:1") |
| 468 | 466 | PORT_DIPSETTING( 0x00, "NFS" ) |
| 469 | 467 | PORT_DIPSETTING( 0x01, "DFS" ) |
| 470 | 468 | |
| 471 | 469 | PORT_MODIFY("COL3") |
| 472 | | PORT_DIPNAME(0x01, 0x01, "DIP 7 (Not Used)") |
| 470 | PORT_DIPNAME(0x01, 0x01, "Not Used") PORT_DIPLOCATION("KBD:2") |
| 473 | 471 | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 474 | 472 | PORT_DIPSETTING( 0x01, DEF_STR( On )) |
| 475 | 473 | |
| 476 | 474 | PORT_MODIFY("COL4") |
| 477 | | PORT_DIPNAME(0x01, 0x01, "DIP 6 (Disc Timings)") |
| 475 | PORT_DIPNAME(0x01, 0x01, "Disc Timings") PORT_DIPLOCATION("KBD:3") |
| 478 | 476 | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 479 | 477 | PORT_DIPSETTING( 0x01, DEF_STR( On )) |
| 480 | 478 | |
| 481 | 479 | PORT_MODIFY("COL5") |
| 482 | | PORT_DIPNAME(0x01, 0x01, "DIP 5 (Disc Timings)") |
| 480 | PORT_DIPNAME(0x01, 0x01, "Disc Timings") PORT_DIPLOCATION("KBD:4") |
| 483 | 481 | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 484 | 482 | PORT_DIPSETTING( 0x01, DEF_STR( On )) |
| 485 | 483 | |
| 486 | 484 | PORT_MODIFY("COL6") |
| 487 | | PORT_DIPNAME(0x01, 0x01, "DIP 4 (Boot)") |
| 485 | PORT_DIPNAME(0x01, 0x01, "Boot") PORT_DIPLOCATION("KBD:5") |
| 488 | 486 | PORT_DIPSETTING( 0x00, "SHIFT" ) |
| 489 | 487 | PORT_DIPSETTING( 0x01, "SHIFT-BREAK" ) |
| 490 | 488 | |
| 491 | 489 | PORT_MODIFY("COL7") |
| 492 | | PORT_DIPNAME(0x01, 0x01, "DIP 3 (Screen Mode)") |
| 490 | PORT_DIPNAME(0x01, 0x01, "Screen Mode") PORT_DIPLOCATION("KBD:6") |
| 493 | 491 | PORT_DIPSETTING( 0x00, "+0" ) |
| 494 | 492 | PORT_DIPSETTING( 0x01, "+4" ) |
| 495 | | |
| 493 | |
| 496 | 494 | PORT_MODIFY("COL8") |
| 497 | | PORT_DIPNAME(0x01, 0x01, "DIP 2 (Screen Mode)") |
| 495 | PORT_DIPNAME(0x01, 0x01, "Screen Mode") PORT_DIPLOCATION("KBD:7") |
| 498 | 496 | PORT_DIPSETTING( 0x00, "+0" ) |
| 499 | 497 | PORT_DIPSETTING( 0x01, "+2" ) |
| 500 | 498 | |
| 501 | 499 | PORT_MODIFY("COL9") |
| 502 | | PORT_DIPNAME(0x01, 0x01, "DIP 1 (Screen Mode)") |
| 500 | PORT_DIPNAME(0x01, 0x01, "Screen Mode") PORT_DIPLOCATION("KBD:8") |
| 503 | 501 | PORT_DIPSETTING( 0x00, "+0" ) |
| 504 | 502 | PORT_DIPSETTING( 0x01, "+1" ) |
| 505 | 503 | INPUT_PORTS_END |
| 506 | 504 | |
| 507 | 505 | |
| 506 | static INPUT_PORTS_START(bbc_links) |
| 507 | PORT_START("S11") |
| 508 | PORT_DIPNAME(0xff, 0xfe, "Econet ID") PORT_DIPLOCATION("S11:1,2,3,4,5,6,7,8") |
| 509 | PORT_DIPSETTING( 0x00, "0" ) PORT_DIPSETTING( 0x01, "1" ) PORT_DIPSETTING( 0x02, "2" ) PORT_DIPSETTING( 0x03, "3" ) PORT_DIPSETTING( 0x04, "4" ) |
| 510 | PORT_DIPSETTING( 0x05, "5" ) PORT_DIPSETTING( 0x06, "6" ) PORT_DIPSETTING( 0x07, "7" ) PORT_DIPSETTING( 0x08, "8" ) PORT_DIPSETTING( 0x09, "9" ) |
| 511 | PORT_DIPSETTING( 0x0a, "10" ) PORT_DIPSETTING( 0x0b, "11" ) PORT_DIPSETTING( 0x0c, "12" ) PORT_DIPSETTING( 0x0d, "13" ) PORT_DIPSETTING( 0x0e, "14" ) |
| 512 | PORT_DIPSETTING( 0x0f, "15" ) PORT_DIPSETTING( 0x10, "16" ) PORT_DIPSETTING( 0x11, "17" ) PORT_DIPSETTING( 0x12, "18" ) PORT_DIPSETTING( 0x13, "19" ) |
| 513 | PORT_DIPSETTING( 0x14, "20" ) PORT_DIPSETTING( 0x15, "21" ) PORT_DIPSETTING( 0x16, "22" ) PORT_DIPSETTING( 0x17, "23" ) PORT_DIPSETTING( 0x18, "24" ) |
| 514 | PORT_DIPSETTING( 0x19, "25" ) PORT_DIPSETTING( 0x1a, "26" ) PORT_DIPSETTING( 0x1b, "27" ) PORT_DIPSETTING( 0x1c, "28" ) PORT_DIPSETTING( 0x1d, "29" ) |
| 515 | PORT_DIPSETTING( 0x1e, "30" ) PORT_DIPSETTING( 0x1f, "31" ) PORT_DIPSETTING( 0x20, "32" ) PORT_DIPSETTING( 0x21, "33" ) PORT_DIPSETTING( 0x22, "34" ) |
| 516 | PORT_DIPSETTING( 0x23, "35" ) PORT_DIPSETTING( 0x24, "36" ) PORT_DIPSETTING( 0x25, "37" ) PORT_DIPSETTING( 0x26, "38" ) PORT_DIPSETTING( 0x27, "39" ) |
| 517 | PORT_DIPSETTING( 0x28, "40" ) PORT_DIPSETTING( 0x29, "41" ) PORT_DIPSETTING( 0x2a, "42" ) PORT_DIPSETTING( 0x2b, "43" ) PORT_DIPSETTING( 0x2c, "44" ) |
| 518 | PORT_DIPSETTING( 0x2d, "45" ) PORT_DIPSETTING( 0x2e, "46" ) PORT_DIPSETTING( 0x2f, "47" ) PORT_DIPSETTING( 0x30, "48" ) PORT_DIPSETTING( 0x31, "49" ) |
| 519 | PORT_DIPSETTING( 0x32, "50" ) PORT_DIPSETTING( 0x33, "51" ) PORT_DIPSETTING( 0x34, "52" ) PORT_DIPSETTING( 0x35, "53" ) PORT_DIPSETTING( 0x36, "54" ) |
| 520 | PORT_DIPSETTING( 0x37, "15" ) PORT_DIPSETTING( 0x38, "56" ) PORT_DIPSETTING( 0x39, "57" ) PORT_DIPSETTING( 0x3a, "58" ) PORT_DIPSETTING( 0x3b, "59" ) |
| 521 | PORT_DIPSETTING( 0x3c, "60" ) PORT_DIPSETTING( 0x3d, "61" ) PORT_DIPSETTING( 0x3e, "62" ) PORT_DIPSETTING( 0x3f, "63" ) PORT_DIPSETTING( 0x40, "64" ) |
| 522 | PORT_DIPSETTING( 0x41, "65" ) PORT_DIPSETTING( 0x42, "66" ) PORT_DIPSETTING( 0x43, "67" ) PORT_DIPSETTING( 0x44, "68" ) PORT_DIPSETTING( 0x45, "69" ) |
| 523 | PORT_DIPSETTING( 0x46, "70" ) PORT_DIPSETTING( 0x47, "71" ) PORT_DIPSETTING( 0x48, "72" ) PORT_DIPSETTING( 0x49, "73" ) PORT_DIPSETTING( 0x4a, "74" ) |
| 524 | PORT_DIPSETTING( 0x4b, "75" ) PORT_DIPSETTING( 0x4c, "76" ) PORT_DIPSETTING( 0x4d, "77" ) PORT_DIPSETTING( 0x4e, "78" ) PORT_DIPSETTING( 0x4f, "79" ) |
| 525 | PORT_DIPSETTING( 0x50, "80" ) PORT_DIPSETTING( 0x51, "81" ) PORT_DIPSETTING( 0x52, "82" ) PORT_DIPSETTING( 0x53, "83" ) PORT_DIPSETTING( 0x54, "84" ) |
| 526 | PORT_DIPSETTING( 0x55, "85" ) PORT_DIPSETTING( 0x56, "86" ) PORT_DIPSETTING( 0x57, "87" ) PORT_DIPSETTING( 0x58, "88" ) PORT_DIPSETTING( 0x59, "89" ) |
| 527 | PORT_DIPSETTING( 0x5a, "90" ) PORT_DIPSETTING( 0x5b, "91" ) PORT_DIPSETTING( 0x5c, "92" ) PORT_DIPSETTING( 0x5d, "93" ) PORT_DIPSETTING( 0x5e, "94" ) |
| 528 | PORT_DIPSETTING( 0x5f, "95" ) PORT_DIPSETTING( 0x60, "96" ) PORT_DIPSETTING( 0x61, "97" ) PORT_DIPSETTING( 0x62, "98" ) PORT_DIPSETTING( 0x63, "99" ) |
| 529 | PORT_DIPSETTING( 0x64, "100" ) PORT_DIPSETTING( 0x65, "101" ) PORT_DIPSETTING( 0x66, "102" ) PORT_DIPSETTING( 0x67, "103" ) PORT_DIPSETTING( 0x68, "104" ) |
| 530 | PORT_DIPSETTING( 0x69, "105" ) PORT_DIPSETTING( 0x6a, "106" ) PORT_DIPSETTING( 0x6b, "107" ) PORT_DIPSETTING( 0x6c, "108" ) PORT_DIPSETTING( 0x6d, "109" ) |
| 531 | PORT_DIPSETTING( 0x6e, "110" ) PORT_DIPSETTING( 0x6f, "111" ) PORT_DIPSETTING( 0x70, "112" ) PORT_DIPSETTING( 0x71, "113" ) PORT_DIPSETTING( 0x72, "114" ) |
| 532 | PORT_DIPSETTING( 0x73, "115" ) PORT_DIPSETTING( 0x74, "116" ) PORT_DIPSETTING( 0x75, "117" ) PORT_DIPSETTING( 0x76, "118" ) PORT_DIPSETTING( 0x77, "119" ) |
| 533 | PORT_DIPSETTING( 0x78, "120" ) PORT_DIPSETTING( 0x79, "121" ) PORT_DIPSETTING( 0x7a, "122" ) PORT_DIPSETTING( 0x7b, "123" ) PORT_DIPSETTING( 0x7c, "124" ) |
| 534 | PORT_DIPSETTING( 0x7d, "125" ) PORT_DIPSETTING( 0x7e, "126" ) PORT_DIPSETTING( 0x7f, "127" ) PORT_DIPSETTING( 0x80, "128" ) PORT_DIPSETTING( 0x81, "129" ) |
| 535 | PORT_DIPSETTING( 0x82, "130" ) PORT_DIPSETTING( 0x83, "131" ) PORT_DIPSETTING( 0x84, "132" ) PORT_DIPSETTING( 0x85, "133" ) PORT_DIPSETTING( 0x86, "134" ) |
| 536 | PORT_DIPSETTING( 0x87, "135" ) PORT_DIPSETTING( 0x88, "136" ) PORT_DIPSETTING( 0x89, "137" ) PORT_DIPSETTING( 0x8a, "138" ) PORT_DIPSETTING( 0x8b, "139" ) |
| 537 | PORT_DIPSETTING( 0x8c, "140" ) PORT_DIPSETTING( 0x8d, "141" ) PORT_DIPSETTING( 0x8e, "142" ) PORT_DIPSETTING( 0x8f, "143" ) PORT_DIPSETTING( 0x90, "144" ) |
| 538 | PORT_DIPSETTING( 0x91, "145" ) PORT_DIPSETTING( 0x92, "146" ) PORT_DIPSETTING( 0x93, "147" ) PORT_DIPSETTING( 0x94, "148" ) PORT_DIPSETTING( 0x95, "149" ) |
| 539 | PORT_DIPSETTING( 0x96, "150" ) PORT_DIPSETTING( 0x97, "151" ) PORT_DIPSETTING( 0x98, "152" ) PORT_DIPSETTING( 0x99, "153" ) PORT_DIPSETTING( 0x9a, "154" ) |
| 540 | PORT_DIPSETTING( 0x9b, "155" ) PORT_DIPSETTING( 0x9c, "156" ) PORT_DIPSETTING( 0x9d, "157" ) PORT_DIPSETTING( 0x9e, "158" ) PORT_DIPSETTING( 0x9f, "159" ) |
| 541 | PORT_DIPSETTING( 0xa0, "160" ) PORT_DIPSETTING( 0xa1, "161" ) PORT_DIPSETTING( 0xa2, "162" ) PORT_DIPSETTING( 0xa3, "163" ) PORT_DIPSETTING( 0xa4, "164" ) |
| 542 | PORT_DIPSETTING( 0xa5, "165" ) PORT_DIPSETTING( 0xa6, "166" ) PORT_DIPSETTING( 0xa7, "167" ) PORT_DIPSETTING( 0xa8, "168" ) PORT_DIPSETTING( 0xa9, "169" ) |
| 543 | PORT_DIPSETTING( 0xaa, "170" ) PORT_DIPSETTING( 0xab, "171" ) PORT_DIPSETTING( 0xac, "172" ) PORT_DIPSETTING( 0xad, "173" ) PORT_DIPSETTING( 0xae, "174" ) |
| 544 | PORT_DIPSETTING( 0xaf, "175" ) PORT_DIPSETTING( 0xb0, "176" ) PORT_DIPSETTING( 0xb1, "177" ) PORT_DIPSETTING( 0xb2, "178" ) PORT_DIPSETTING( 0xb3, "179" ) |
| 545 | PORT_DIPSETTING( 0xb4, "180" ) PORT_DIPSETTING( 0xb5, "181" ) PORT_DIPSETTING( 0xb6, "182" ) PORT_DIPSETTING( 0xb7, "183" ) PORT_DIPSETTING( 0xb8, "184" ) |
| 546 | PORT_DIPSETTING( 0xb9, "185" ) PORT_DIPSETTING( 0xba, "186" ) PORT_DIPSETTING( 0xbb, "187" ) PORT_DIPSETTING( 0xbc, "188" ) PORT_DIPSETTING( 0xbd, "189" ) |
| 547 | PORT_DIPSETTING( 0xbe, "190" ) PORT_DIPSETTING( 0xbf, "191" ) PORT_DIPSETTING( 0xc0, "192" ) PORT_DIPSETTING( 0xc1, "193" ) PORT_DIPSETTING( 0xc2, "194" ) |
| 548 | PORT_DIPSETTING( 0xc3, "195" ) PORT_DIPSETTING( 0xc4, "196" ) PORT_DIPSETTING( 0xc5, "197" ) PORT_DIPSETTING( 0xc6, "198" ) PORT_DIPSETTING( 0xc7, "199" ) |
| 549 | PORT_DIPSETTING( 0xc8, "200" ) PORT_DIPSETTING( 0xc9, "201" ) PORT_DIPSETTING( 0xca, "202" ) PORT_DIPSETTING( 0xcb, "203" ) PORT_DIPSETTING( 0xcc, "204" ) |
| 550 | PORT_DIPSETTING( 0xcd, "205" ) PORT_DIPSETTING( 0xce, "206" ) PORT_DIPSETTING( 0xcf, "207" ) PORT_DIPSETTING( 0xd0, "208" ) PORT_DIPSETTING( 0xd1, "209" ) |
| 551 | PORT_DIPSETTING( 0xd2, "210" ) PORT_DIPSETTING( 0xd3, "211" ) PORT_DIPSETTING( 0xd4, "212" ) PORT_DIPSETTING( 0xd5, "213" ) PORT_DIPSETTING( 0xd6, "214" ) |
| 552 | PORT_DIPSETTING( 0xd7, "215" ) PORT_DIPSETTING( 0xd8, "216" ) PORT_DIPSETTING( 0xd9, "217" ) PORT_DIPSETTING( 0xda, "218" ) PORT_DIPSETTING( 0xdb, "219" ) |
| 553 | PORT_DIPSETTING( 0xdc, "220" ) PORT_DIPSETTING( 0xdd, "221" ) PORT_DIPSETTING( 0xde, "222" ) PORT_DIPSETTING( 0xdf, "223" ) PORT_DIPSETTING( 0xe0, "224" ) |
| 554 | PORT_DIPSETTING( 0xe1, "225" ) PORT_DIPSETTING( 0xe2, "226" ) PORT_DIPSETTING( 0xe3, "227" ) PORT_DIPSETTING( 0xe4, "228" ) PORT_DIPSETTING( 0xe5, "229" ) |
| 555 | PORT_DIPSETTING( 0xe6, "230" ) PORT_DIPSETTING( 0xe7, "231" ) PORT_DIPSETTING( 0xe8, "232" ) PORT_DIPSETTING( 0xe9, "233" ) PORT_DIPSETTING( 0xea, "234" ) |
| 556 | PORT_DIPSETTING( 0xeb, "235" ) PORT_DIPSETTING( 0xec, "236" ) PORT_DIPSETTING( 0xed, "237" ) PORT_DIPSETTING( 0xee, "238" ) PORT_DIPSETTING( 0xef, "239" ) |
| 557 | PORT_DIPSETTING( 0xf0, "240" ) PORT_DIPSETTING( 0xf1, "241" ) PORT_DIPSETTING( 0xf2, "242" ) PORT_DIPSETTING( 0xf3, "243" ) PORT_DIPSETTING( 0xf4, "244" ) |
| 558 | PORT_DIPSETTING( 0xf5, "245" ) PORT_DIPSETTING( 0xf6, "246" ) PORT_DIPSETTING( 0xf7, "247" ) PORT_DIPSETTING( 0xf8, "248" ) PORT_DIPSETTING( 0xf9, "249" ) |
| 559 | PORT_DIPSETTING( 0xfa, "250" ) PORT_DIPSETTING( 0xfb, "251" ) PORT_DIPSETTING( 0xfc, "252" ) PORT_DIPSETTING( 0xfd, "253" ) PORT_DIPSETTING( 0xfe, "254" ) |
| 560 | PORT_DIPSETTING( 0xff, "255" ) |
| 561 | INPUT_PORTS_END |
| 562 | |
| 563 | |
| 508 | 564 | static INPUT_PORTS_START(bbc_joy) |
| 509 | 565 | PORT_START("JOY0") |
| 510 | 566 | PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_MINMAX(0x0,0xff ) PORT_PLAYER(1) |
| r249143 | r249144 | |
| 523 | 579 | static INPUT_PORTS_START(bbc_config) |
| 524 | 580 | PORT_START("BBCCONFIG") |
| 525 | 581 | |
| 526 | | // PORT_CONFNAME( 0x01, 0x00, "Speech Upgrade" ) |
| 527 | | // PORT_CONFSETTING( 0x00, DEF_STR( On ) ) |
| 528 | | // PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) |
| 582 | PORT_CONFNAME( 0x01, 0x00, "Speech Upgrade" ) |
| 583 | PORT_CONFSETTING( 0x00, DEF_STR( On ) ) |
| 584 | PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) |
| 529 | 585 | |
| 530 | | PORT_CONFNAME( 0x07, 0x00, "DFS Select" ) |
| 531 | | PORT_CONFSETTING( 0x00, "Acorn DFS 0.90 (read only)" ) |
| 532 | | PORT_CONFSETTING( 0x01, "Acorn DNFS 1.20 (read only)" ) |
| 533 | | PORT_CONFSETTING( 0x02, "Watford DFS 1.44 (read only)" ) |
| 534 | | PORT_CONFSETTING( 0x03, "Acorn DFS E00 (hack / read only)" ) |
| 535 | | PORT_CONFSETTING( 0x04, "Acorn DDFS" ) |
| 536 | | PORT_CONFSETTING( 0x05, "Watford DDFS (not working)" ) |
| 537 | | PORT_CONFSETTING( 0x06, "Opus Challenger 512K (RAM drive only)" ) |
| 538 | | PORT_CONFSETTING( 0x07, DEF_STR( None ) ) |
| 539 | | |
| 540 | 586 | PORT_CONFNAME( 0x18, 0x00, "Sideways RAM Type" ) |
| 541 | 587 | PORT_CONFSETTING( 0x00, DEF_STR( None ) ) |
| 542 | 588 | PORT_CONFSETTING( 0x08, "Solidisk 128K (fe62)" ) |
| r249143 | r249144 | |
| 554 | 600 | PORT_INCLUDE(bbc_config) |
| 555 | 601 | PORT_INCLUDE(bbc_keyboard) |
| 556 | 602 | PORT_INCLUDE(bbc_dipswitch) |
| 603 | PORT_INCLUDE(bbc_links) |
| 557 | 604 | PORT_INCLUDE(bbc_joy) |
| 558 | 605 | INPUT_PORTS_END |
| 559 | 606 | |
| 607 | static INPUT_PORTS_START(abc) |
| 608 | PORT_INCLUDE(bbc_keyboard) |
| 609 | PORT_INCLUDE(bbc_keypad) |
| 610 | PORT_INCLUDE(bbc_dipswitch) |
| 611 | PORT_INCLUDE(bbc_links) |
| 612 | PORT_INCLUDE(bbc_joy) |
| 613 | INPUT_PORTS_END |
| 614 | |
| 560 | 615 | static INPUT_PORTS_START(bbcm) |
| 561 | 616 | PORT_INCLUDE(bbc_keyboard) |
| 562 | 617 | PORT_INCLUDE(bbc_keypad) |
| r249143 | r249144 | |
| 572 | 627 | } |
| 573 | 628 | |
| 574 | 629 | |
| 575 | | //static const struct TMS5220interface tms5220_interface = |
| 576 | | //{ |
| 577 | | // 680000L, |
| 578 | | // 50, |
| 579 | | // bbc_TMSint |
| 580 | | //}; |
| 581 | | |
| 582 | | |
| 583 | | |
| 584 | 630 | WRITE_LINE_MEMBER(bbc_state::bbcb_acia6850_irq_w) |
| 585 | 631 | { |
| 586 | 632 | m_acia_irq = state; |
| r249143 | r249144 | |
| 588 | 634 | check_interrupts(); |
| 589 | 635 | } |
| 590 | 636 | |
| 591 | | static LEGACY_FLOPPY_OPTIONS_START(bbc) |
| 592 | | LEGACY_FLOPPY_OPTION( ssd80, "bbc,img,ssd", "BBC SSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL, |
| 593 | | HEADS([1]) |
| 594 | | TRACKS([80]) |
| 595 | | SECTORS([10]) |
| 596 | | SECTOR_LENGTH([256]) |
| 597 | | FIRST_SECTOR_ID([0])) |
| 598 | | LEGACY_FLOPPY_OPTION( dsd80, "dsd", "BBC DSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL, |
| 599 | | HEADS([2]) |
| 600 | | TRACKS([80]) |
| 601 | | SECTORS([10]) |
| 602 | | SECTOR_LENGTH([256]) |
| 603 | | FIRST_SECTOR_ID([0])) |
| 604 | | LEGACY_FLOPPY_OPTIONS_END |
| 605 | 637 | |
| 606 | 638 | static const floppy_interface bbc_floppy_interface = |
| 607 | 639 | { |
| r249143 | r249144 | |
| 610 | 642 | "floppy_5_25" |
| 611 | 643 | }; |
| 612 | 644 | |
| 613 | | FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats ) |
| 614 | | FLOPPY_BBC_FORMAT |
| 645 | FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats_525sd ) |
| 646 | FLOPPY_BBC_SSD_525_FORMAT, |
| 647 | FLOPPY_BBC_DSD_525_FORMAT |
| 615 | 648 | FLOPPY_FORMATS_END |
| 616 | 649 | |
| 617 | | static SLOT_INTERFACE_START( bbc_floppies ) |
| 650 | FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats_525dd ) |
| 651 | FLOPPY_BBC_SSD_525_FORMAT, |
| 652 | FLOPPY_BBC_DSD_525_FORMAT, |
| 653 | FLOPPY_BBC_ADF_525_FORMAT |
| 654 | FLOPPY_FORMATS_END |
| 655 | |
| 656 | FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats_35dd ) |
| 657 | FLOPPY_BBC_ADF_35_FORMAT |
| 658 | FLOPPY_FORMATS_END |
| 659 | |
| 660 | static SLOT_INTERFACE_START( bbc_floppies_525 ) |
| 618 | 661 | SLOT_INTERFACE("sssd", FLOPPY_525_SSSD) |
| 619 | 662 | SLOT_INTERFACE("sd", FLOPPY_525_SD) |
| 620 | 663 | SLOT_INTERFACE("ssdd", FLOPPY_525_SSDD) |
| r249143 | r249144 | |
| 623 | 666 | SLOT_INTERFACE("qd", FLOPPY_525_QD) |
| 624 | 667 | SLOT_INTERFACE_END |
| 625 | 668 | |
| 669 | static SLOT_INTERFACE_START( bbc_floppies_35 ) |
| 670 | SLOT_INTERFACE("qd", FLOPPY_35_DD) |
| 671 | SLOT_INTERFACE_END |
| 672 | |
| 626 | 673 | WRITE_LINE_MEMBER(bbc_state::econet_clk_w) |
| 627 | 674 | { |
| 628 | 675 | m_adlc->rxc_w(state); |
| r249143 | r249144 | |
| 649 | 696 | MACHINE_CONFIG_END |
| 650 | 697 | |
| 651 | 698 | |
| 699 | /*************************************************************************** |
| 700 | |
| 701 | BBC Micro |
| 702 | |
| 703 | ****************************************************************************/ |
| 704 | |
| 705 | |
| 652 | 706 | static MACHINE_CONFIG_START( bbca, bbc_state ) |
| 653 | 707 | /* basic machine hardware */ |
| 654 | 708 | MCFG_CPU_ADD("maincpu", M6502, 2000000) /* 2.00 MHz */ |
| r249143 | r249144 | |
| 747 | 801 | MCFG_RAM_DEFAULT_VALUE(0x00) |
| 748 | 802 | |
| 749 | 803 | /* speech hardware */ |
| 750 | | // MCFG_SOUND_ADD("tms5220", TMS5220, 640000) |
| 751 | | // MCFG_TMS52XX_SPEECHROM("vsm") |
| 804 | MCFG_DEVICE_ADD("vsm", SPEECHROM, 0) |
| 805 | MCFG_SOUND_ADD("tms5220", TMS5220, 640000) |
| 806 | MCFG_TMS52XX_SPEECHROM("vsm") |
| 752 | 807 | |
| 753 | 808 | /* user via */ |
| 754 | 809 | MCFG_DEVICE_ADD("via6522_1", VIA6522, 1000000) |
| r249143 | r249144 | |
| 766 | 821 | /* printer */ |
| 767 | 822 | MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer") |
| 768 | 823 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */ |
| 769 | | |
| 770 | 824 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
| 771 | 825 | |
| 772 | 826 | /* fdc */ |
| r249143 | r249144 | |
| 776 | 830 | |
| 777 | 831 | MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(bbc_floppy_interface) |
| 778 | 832 | |
| 779 | | MCFG_WD1770_ADD("wd177x", XTAL_16MHz / 2) |
| 780 | | MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w)) |
| 781 | | MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w)) |
| 782 | | |
| 783 | | MCFG_FLOPPY_DRIVE_ADD("wd177x:0", bbc_floppies, "qd", bbc_state::floppy_formats) |
| 784 | | MCFG_FLOPPY_DRIVE_ADD("wd177x:1", bbc_floppies, "qd", bbc_state::floppy_formats) |
| 785 | | |
| 786 | 833 | /* software lists */ |
| 787 | 834 | MCFG_DEVICE_REMOVE("cass_ls_a") |
| 788 | 835 | MCFG_SOFTWARE_LIST_ADD("cass_ls_b", "bbcb_cass") |
| r249143 | r249144 | |
| 790 | 837 | MACHINE_CONFIG_END |
| 791 | 838 | |
| 792 | 839 | |
| 793 | | static MACHINE_CONFIG_DERIVED( bbcb_us, bbca ) |
| 840 | static MACHINE_CONFIG_DERIVED(bbcb1770, bbcb) |
| 794 | 841 | /* basic machine hardware */ |
| 795 | | MCFG_CPU_MODIFY( "maincpu" ) |
| 796 | | MCFG_CPU_PROGRAM_MAP(bbcb_mem) |
| 842 | MCFG_CPU_MODIFY("maincpu") |
| 843 | MCFG_CPU_PROGRAM_MAP(bbcb1770_mem) |
| 797 | 844 | |
| 798 | | MCFG_MACHINE_START_OVERRIDE(bbc_state, bbcb ) |
| 799 | | MCFG_MACHINE_RESET_OVERRIDE(bbc_state, bbcb ) |
| 800 | | MCFG_VIDEO_START_OVERRIDE(bbc_state, bbcb ) |
| 845 | /* fdc */ |
| 846 | MCFG_DEVICE_REMOVE("i8271") |
| 847 | MCFG_DEVICE_REMOVE(FLOPPY_0) |
| 848 | MCFG_DEVICE_REMOVE(FLOPPY_1) |
| 801 | 849 | |
| 802 | | /* internal ram */ |
| 803 | | MCFG_RAM_MODIFY(RAM_TAG) |
| 804 | | MCFG_RAM_DEFAULT_SIZE("32K") |
| 805 | | MCFG_RAM_DEFAULT_VALUE(0x00) |
| 850 | MCFG_WD1770_ADD("wd1770", XTAL_16MHz / 2) |
| 851 | MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w)) |
| 852 | MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w)) |
| 806 | 853 | |
| 807 | | /* speech hardware */ |
| 808 | | // MCFG_SOUND_ADD("tms5220", TMS5220, 640000) |
| 809 | | // MCFG_TMS52XX_SPEECHROM("vsm") |
| 854 | MCFG_FLOPPY_DRIVE_ADD("wd1770:0", bbc_floppies_525, "qd", bbc_state::floppy_formats_525dd) |
| 855 | MCFG_FLOPPY_DRIVE_SOUND(true) |
| 856 | MCFG_FLOPPY_DRIVE_ADD("wd1770:1", bbc_floppies_525, "qd", bbc_state::floppy_formats_525dd) |
| 857 | MCFG_FLOPPY_DRIVE_SOUND(true) |
| 858 | MACHINE_CONFIG_END |
| 810 | 859 | |
| 860 | |
| 861 | static MACHINE_CONFIG_DERIVED( bbcb_de, bbcb ) |
| 862 | /* software lists */ |
| 863 | MCFG_DEVICE_REMOVE("cass_ls_b") |
| 864 | MCFG_SOFTWARE_LIST_ADD("flop_ls_b_de", "bbcb_de_cass") |
| 865 | MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_b", "bbcb_cass") |
| 866 | MACHINE_CONFIG_END |
| 867 | |
| 868 | |
| 869 | static MACHINE_CONFIG_DERIVED( bbcb_us, bbcb ) |
| 811 | 870 | /* video hardware */ |
| 812 | 871 | MCFG_SCREEN_MODIFY("screen") |
| 813 | 872 | MCFG_SCREEN_SIZE(640, 200) |
| 814 | 873 | MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1) |
| 815 | 874 | MCFG_SCREEN_REFRESH_RATE(60) |
| 816 | 875 | |
| 817 | | /* system via */ |
| 818 | | MCFG_DEVICE_ADD("via6522_1", VIA6522, 1000000) |
| 819 | | MCFG_VIA6522_READPB_HANDLER(READ8(bbc_state, bbcb_via_user_read_portb)) |
| 820 | | MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8("cent_data_out", output_latch_device, write)) |
| 821 | | MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(bbc_state, bbcb_via_user_write_portb)) |
| 822 | | MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE("centronics", centronics_device, write_strobe)) |
| 823 | | MCFG_VIA6522_IRQ_HANDLER(WRITELINE(bbc_state, bbcb_via_user_irq_w)) |
| 824 | | |
| 825 | | /* adc */ |
| 826 | | MCFG_DEVICE_ADD("upd7002", UPD7002, 0) |
| 827 | | MCFG_UPD7002_GET_ANALOGUE_CB(bbc_state, BBC_get_analogue_input) |
| 828 | | MCFG_UPD7002_EOC_CB(bbc_state, BBC_uPD7002_EOC) |
| 829 | | |
| 830 | | /* printer */ |
| 831 | | MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer") |
| 832 | | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */ |
| 833 | | |
| 834 | | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
| 835 | | |
| 836 | | /* fdc */ |
| 837 | | MCFG_DEVICE_ADD("i8271", I8271, 0) |
| 838 | | MCFG_I8271_IRQ_CALLBACK(WRITELINE(bbc_state, bbc_i8271_interrupt)) |
| 839 | | MCFG_I8271_FLOPPIES(FLOPPY_0, FLOPPY_1) |
| 840 | | |
| 841 | | MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(bbc_floppy_interface) |
| 842 | | |
| 843 | | MCFG_WD1770_ADD("wd177x", XTAL_16MHz / 2) |
| 844 | | MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w)) |
| 845 | | MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w)) |
| 846 | | |
| 847 | | MCFG_FLOPPY_DRIVE_ADD("wd177x:0", bbc_floppies, "qd", bbc_state::floppy_formats) |
| 848 | | MCFG_FLOPPY_DRIVE_ADD("wd177x:1", bbc_floppies, "qd", bbc_state::floppy_formats) |
| 849 | | |
| 850 | 876 | /* software lists */ |
| 851 | | MCFG_DEVICE_REMOVE("cass_ls_a") |
| 852 | | MCFG_SOFTWARE_LIST_ADD("cass_ls_b", "bbcb_cass") |
| 853 | | MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_a", "bbca_cass") |
| 877 | MCFG_DEVICE_REMOVE("cass_ls_b") |
| 878 | MCFG_SOFTWARE_LIST_ADD("flop_ls_b_us", "bbcb_us_flop") |
| 879 | MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_b", "bbcb_cass") |
| 854 | 880 | MACHINE_CONFIG_END |
| 855 | 881 | |
| 856 | 882 | |
| 857 | | static MACHINE_CONFIG_DERIVED( bbcbp, bbcb ) |
| 883 | static MACHINE_CONFIG_DERIVED( bbcbp, bbcb1770 ) |
| 858 | 884 | /* basic machine hardware */ |
| 859 | 885 | MCFG_CPU_MODIFY( "maincpu" ) /* M6512 */ |
| 860 | 886 | MCFG_CPU_PROGRAM_MAP(bbcbp_mem) |
| r249143 | r249144 | |
| 867 | 893 | MCFG_RAM_MODIFY(RAM_TAG) |
| 868 | 894 | MCFG_RAM_DEFAULT_SIZE("64K") |
| 869 | 895 | MCFG_RAM_DEFAULT_VALUE(0x00) |
| 870 | | |
| 871 | | /* fdc */ |
| 872 | | MCFG_DEVICE_REMOVE("i8271") |
| 873 | | MCFG_DEVICE_REMOVE(FLOPPY_0) |
| 874 | | MCFG_DEVICE_REMOVE(FLOPPY_1) |
| 875 | 896 | MACHINE_CONFIG_END |
| 876 | 897 | |
| 877 | 898 | |
| 878 | | static MACHINE_CONFIG_DERIVED( bbcbp128, bbcbp ) |
| 899 | static MACHINE_CONFIG_DERIVED( bbcbp128, bbcb1770 ) |
| 879 | 900 | /* basic machine hardware */ |
| 880 | 901 | MCFG_CPU_MODIFY( "maincpu" ) /* M6512 */ |
| 881 | 902 | MCFG_CPU_PROGRAM_MAP(bbcbp128_mem) |
| 903 | |
| 882 | 904 | MCFG_MACHINE_START_OVERRIDE(bbc_state, bbcbp) |
| 883 | 905 | MCFG_MACHINE_RESET_OVERRIDE(bbc_state, bbcbp) |
| 884 | 906 | MCFG_VIDEO_START_OVERRIDE(bbc_state, bbcbp) |
| r249143 | r249144 | |
| 890 | 912 | MACHINE_CONFIG_END |
| 891 | 913 | |
| 892 | 914 | |
| 893 | | /* BBC Master Series */ |
| 915 | /*************************************************************************** |
| 894 | 916 | |
| 917 | Acorn Business Computers |
| 918 | |
| 919 | ****************************************************************************/ |
| 920 | |
| 921 | |
| 922 | static MACHINE_CONFIG_DERIVED( abc110, bbcbp ) |
| 923 | /* fdc */ |
| 924 | MCFG_DEVICE_REMOVE("wd1770:1") |
| 925 | |
| 926 | /* Add Z80 co-processor */ |
| 927 | |
| 928 | /* Add ADAPTEC ACB-4000 Winchester Disc Controller */ |
| 929 | |
| 930 | /* Add 10MB ST-412 Winchester */ |
| 931 | |
| 932 | MACHINE_CONFIG_END |
| 933 | |
| 934 | |
| 935 | static MACHINE_CONFIG_DERIVED( abc210, bbcbp ) |
| 936 | /* fdc */ |
| 937 | MCFG_DEVICE_REMOVE("wd1770:1") |
| 938 | |
| 939 | /* Add 32016 co-processor */ |
| 940 | |
| 941 | /* Add ADAPTEC ACB-4000 Winchester Disc Controller */ |
| 942 | |
| 943 | /* Add 10MB ST-412 Winchester ABC210 */ |
| 944 | |
| 945 | /* Add 20MB ST-412 Winchester Cambridge */ |
| 946 | |
| 947 | MACHINE_CONFIG_END |
| 948 | |
| 949 | |
| 950 | static MACHINE_CONFIG_DERIVED( abc310, bbcbp ) |
| 951 | /* fdc */ |
| 952 | MCFG_DEVICE_REMOVE("wd1770:1") |
| 953 | |
| 954 | /* Add 80286 co-processor */ |
| 955 | |
| 956 | /* Add ADAPTEC ACB-4000 Winchester Disc Controller */ |
| 957 | |
| 958 | /* Add 10MB ST-412 Winchester */ |
| 959 | |
| 960 | MACHINE_CONFIG_END |
| 961 | |
| 962 | |
| 963 | /*************************************************************************** |
| 964 | |
| 965 | Reuters APM Board (Application Processor Module) |
| 966 | |
| 967 | ****************************************************************************/ |
| 968 | |
| 969 | |
| 970 | static MACHINE_CONFIG_DERIVED( reutapm, bbcbp ) |
| 971 | /* basic machine hardware */ |
| 972 | MCFG_CPU_MODIFY( "maincpu" ) /* M6512 */ |
| 973 | MCFG_CPU_PROGRAM_MAP(reutapm_mem) |
| 974 | |
| 975 | /* sound hardware */ |
| 976 | MCFG_DEVICE_REMOVE("mono") |
| 977 | MCFG_DEVICE_REMOVE("sn76489") |
| 978 | MCFG_DEVICE_REMOVE("vsm") |
| 979 | MCFG_DEVICE_REMOVE("tms5220") |
| 980 | |
| 981 | /* cassette */ |
| 982 | MCFG_DEVICE_REMOVE( "cassette" ) |
| 983 | |
| 984 | /* fdc */ |
| 985 | MCFG_DEVICE_REMOVE("wd1770") |
| 986 | |
| 987 | /* software lists */ |
| 988 | MCFG_DEVICE_REMOVE("cass_ls_a") |
| 989 | MCFG_DEVICE_REMOVE("cass_ls_b") |
| 990 | MACHINE_CONFIG_END |
| 991 | |
| 992 | |
| 993 | /*************************************************************************** |
| 994 | |
| 995 | BBC Master Series |
| 996 | |
| 997 | ****************************************************************************/ |
| 998 | |
| 999 | |
| 895 | 1000 | static MACHINE_CONFIG_START( bbcm, bbc_state ) |
| 896 | 1001 | /* basic machine hardware */ |
| 897 | 1002 | MCFG_CPU_ADD("maincpu", M65SC02, 2000000) /* 2.00 MHz */ |
| r249143 | r249144 | |
| 943 | 1048 | /* printer */ |
| 944 | 1049 | MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer") |
| 945 | 1050 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */ |
| 946 | | |
| 947 | 1051 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
| 948 | 1052 | |
| 949 | 1053 | /* cassette */ |
| r249143 | r249144 | |
| 1001 | 1105 | MCFG_VIA6522_IRQ_HANDLER(WRITELINE(bbc_state, bbcb_via_user_irq_w)) |
| 1002 | 1106 | |
| 1003 | 1107 | /* fdc */ |
| 1004 | | MCFG_WD1770_ADD("wd177x", XTAL_16MHz / 2) |
| 1108 | MCFG_WD1770_ADD("wd1770", XTAL_16MHz / 2) |
| 1005 | 1109 | MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w)) |
| 1006 | 1110 | MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w)) |
| 1007 | 1111 | |
| 1008 | | MCFG_FLOPPY_DRIVE_ADD("wd177x:0", bbc_floppies, "qd", bbc_state::floppy_formats) |
| 1009 | | MCFG_FLOPPY_DRIVE_ADD("wd177x:1", bbc_floppies, "qd", bbc_state::floppy_formats) |
| 1112 | MCFG_FLOPPY_DRIVE_ADD("wd1770:0", bbc_floppies_525, "qd", bbc_state::floppy_formats_525dd) |
| 1113 | MCFG_FLOPPY_DRIVE_SOUND(true) |
| 1114 | MCFG_FLOPPY_DRIVE_ADD("wd1770:1", bbc_floppies_525, "qd", bbc_state::floppy_formats_525dd) |
| 1115 | MCFG_FLOPPY_DRIVE_SOUND(true) |
| 1010 | 1116 | |
| 1011 | 1117 | /* econet */ |
| 1012 | 1118 | MCFG_DEVICE_ADD("mc6854", MC6854, 0) |
| r249143 | r249144 | |
| 1037 | 1143 | |
| 1038 | 1144 | |
| 1039 | 1145 | static MACHINE_CONFIG_DERIVED( bbcmet, bbcm ) |
| 1040 | | |
| 1041 | | /* Remove all devices not present in this model */ |
| 1042 | | |
| 1043 | 1146 | /* sound hardware */ |
| 1044 | | // MCFG_DEVICE_REMOVE("mono") |
| 1045 | | // MCFG_DEVICE_REMOVE("sn76489") |
| 1147 | MCFG_DEVICE_REMOVE("mono") |
| 1148 | MCFG_DEVICE_REMOVE("sn76489") |
| 1046 | 1149 | |
| 1047 | 1150 | /* printer */ |
| 1048 | | // MCFG_DEVICE_REMOVE("centronics") |
| 1151 | MCFG_DEVICE_REMOVE("centronics") |
| 1049 | 1152 | |
| 1050 | 1153 | /* cassette */ |
| 1051 | 1154 | MCFG_DEVICE_REMOVE("cassette") |
| r249143 | r249144 | |
| 1056 | 1159 | MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b") |
| 1057 | 1160 | |
| 1058 | 1161 | /* acia */ |
| 1059 | | // MCFG_DEVICE_REMOVE("acia6850") |
| 1162 | MCFG_DEVICE_REMOVE("acia6850") |
| 1060 | 1163 | MCFG_DEVICE_REMOVE(RS232_TAG) |
| 1164 | MCFG_DEVICE_REMOVE("acia_clock") |
| 1061 | 1165 | |
| 1062 | 1166 | /* devices */ |
| 1063 | | // MCFG_DEVICE_REMOVE("upd7002") |
| 1064 | | // MCFG_DEVICE_REMOVE("via6522_1") |
| 1167 | MCFG_DEVICE_REMOVE("upd7002") |
| 1168 | MCFG_DEVICE_REMOVE("via6522_1") |
| 1065 | 1169 | |
| 1066 | 1170 | /* fdc */ |
| 1067 | | // MCFG_DEVICE_REMOVE("wd177x") |
| 1171 | MCFG_DEVICE_REMOVE("wd1770") |
| 1068 | 1172 | MACHINE_CONFIG_END |
| 1069 | 1173 | |
| 1070 | 1174 | |
| r249143 | r249144 | |
| 1082 | 1186 | MACHINE_CONFIG_END |
| 1083 | 1187 | |
| 1084 | 1188 | |
| 1189 | /*************************************************************************** |
| 1190 | |
| 1191 | BBC Master Compact |
| 1192 | |
| 1193 | ****************************************************************************/ |
| 1194 | |
| 1195 | |
| 1085 | 1196 | static MACHINE_CONFIG_DERIVED( bbcmc, bbcm ) |
| 1197 | /* cassette */ |
| 1198 | MCFG_DEVICE_REMOVE("cassette") |
| 1086 | 1199 | |
| 1087 | | // MCFG_DEVICE_REMOVE("rtc") |
| 1088 | | |
| 1089 | 1200 | /* fdc */ |
| 1090 | | MCFG_DEVICE_REMOVE("wd177x") |
| 1201 | MCFG_DEVICE_REMOVE("wd1770") |
| 1091 | 1202 | |
| 1092 | | // MCFG_WD1772_ADD("wd177x", XTAL_16MHz / 2) |
| 1093 | | MCFG_WD1770_ADD("wd177x", XTAL_16MHz / 2) |
| 1203 | MCFG_WD1772_ADD("wd1772", XTAL_16MHz / 2) |
| 1094 | 1204 | MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w)) |
| 1095 | 1205 | MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w)) |
| 1096 | 1206 | |
| 1097 | | MCFG_FLOPPY_DRIVE_ADD("wd177x:0", bbc_floppies, "qd", bbc_state::floppy_formats) |
| 1098 | | MCFG_FLOPPY_DRIVE_ADD("wd177x:1", bbc_floppies, "qd", bbc_state::floppy_formats) |
| 1207 | MCFG_FLOPPY_DRIVE_ADD("wd1772:0", bbc_floppies_35, "qd", bbc_state::floppy_formats_35dd) |
| 1208 | MCFG_FLOPPY_DRIVE_SOUND(true) |
| 1209 | MCFG_FLOPPY_DRIVE_ADD("wd1772:1", bbc_floppies_35, NULL, bbc_state::floppy_formats_35dd) |
| 1210 | MCFG_FLOPPY_DRIVE_SOUND(true) |
| 1099 | 1211 | |
| 1212 | /* eeprom pcd8572 */ |
| 1213 | //MCFG_DEVICE_REMOVE("rtc") |
| 1214 | |
| 1100 | 1215 | /* software lists */ |
| 1216 | MCFG_SOFTWARE_LIST_REMOVE("cass_ls_m") |
| 1217 | MCFG_SOFTWARE_LIST_REMOVE("cass_ls_a") |
| 1218 | MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b") |
| 1101 | 1219 | MCFG_SOFTWARE_LIST_REMOVE("cart_ls_m") |
| 1102 | 1220 | MCFG_SOFTWARE_LIST_ADD("flop_ls_mc", "bbcmc_flop") |
| 1103 | 1221 | MACHINE_CONFIG_END |
| 1104 | 1222 | |
| 1105 | 1223 | |
| 1224 | static MACHINE_CONFIG_DERIVED(pro128s, bbcmc) |
| 1225 | /* software lists */ |
| 1226 | MCFG_SOFTWARE_LIST_REMOVE("flop_ls_mc") |
| 1227 | MCFG_SOFTWARE_LIST_ADD("flop_ls_pro128s", "pro128s_flop") |
| 1228 | MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("flop_ls_mc", "bbcmc_flop") |
| 1229 | MACHINE_CONFIG_END |
| 1230 | |
| 1231 | |
| 1106 | 1232 | /* the BBC came with 4 rom sockets on the motherboard as shown in the model A driver */ |
| 1107 | 1233 | /* you could get a number of rom upgrade boards that took this up to 16 roms as in the */ |
| 1108 | 1234 | /* model B driver */ |
| r249143 | r249144 | |
| 1111 | 1237 | ROM_REGION(0x08000,"maincpu",ROMREGION_ERASEFF) /* RAM */ |
| 1112 | 1238 | |
| 1113 | 1239 | ROM_REGION(0x14000,"option",0) /* ROM */ |
| 1114 | | /* rom page 0 00000 */ |
| 1115 | | /* rom page 1 04000 */ |
| 1116 | | /* rom page 2 08000 */ |
| 1240 | /* rom page 0 00000 SPARE SOCKET */ |
| 1241 | /* rom page 1 04000 SPARE SOCKET */ |
| 1242 | /* rom page 2 08000 SPARE SOCKET */ |
| 1117 | 1243 | /* rom page 3 0c000 BASIC */ |
| 1118 | 1244 | ROM_DEFAULT_BIOS("os12b2") |
| 1119 | 1245 | ROM_SYSTEM_BIOS( 0, "os12b2", "OS 1.20 / BASIC2" ) |
| r249143 | r249144 | |
| 1128 | 1254 | ROM_SYSTEM_BIOS( 3, "os10b1", "OS 1.00 / BASIC1" ) |
| 1129 | 1255 | ROMX_LOAD("os10.rom", 0x10000, 0x4000, CRC(9679b8f8) SHA1(d35f6723132aabe3c4d00fc16fd9ecc6768df753), ROM_BIOS(4)) /* os */ |
| 1130 | 1256 | ROMX_LOAD("basic1.rom", 0x0c000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(4)) /* rom page 3 0c000 */ |
| 1257 | /* OS0.1 does not support rom paging, load BASIC into all pages */ |
| 1131 | 1258 | ROM_SYSTEM_BIOS( 4, "os01b2", "OS 0.10 / BASIC2" ) |
| 1132 | 1259 | ROMX_LOAD("os01.rom", 0x10000, 0x4000, CRC(45ee0980) SHA1(4b0ece6dc139d5d3f4fabd023716fb6f25149b80), ROM_BIOS(5)) /* os */ |
| 1133 | 1260 | ROMX_LOAD("basic2.rom", 0x00000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(5)) /* rom page 0 00000 */ |
| r249143 | r249144 | |
| 1146 | 1273 | ROM_END |
| 1147 | 1274 | |
| 1148 | 1275 | |
| 1149 | | |
| 1150 | 1276 | /* 0000- 7fff ram */ |
| 1151 | 1277 | /* 8000- bfff this area is mapped over with one of the roms from "option" region 0x00000-0x40000 */ |
| 1152 | 1278 | /* c000- ffff OS rom and memory mapped hardware at fc00-feff, from "option" region 0x40000-0x44000 */ |
| r249143 | r249144 | |
| 1168 | 1294 | /* rom page 9 24000 */ |
| 1169 | 1295 | /* rom page 10 28000 */ |
| 1170 | 1296 | /* rom page 11 2c000 */ |
| 1171 | | /* rom page 12 30000 */ |
| 1172 | | /* rom page 13 34000 */ |
| 1173 | | /* rom page 14 38000 */ |
| 1297 | /* rom page 12 30000 SPARE SOCKET */ |
| 1298 | /* rom page 13 34000 SPARE SOCKET */ |
| 1299 | /* rom page 14 38000 DFS */ |
| 1174 | 1300 | /* rom page 15 3c000 BASIC */ |
| 1175 | 1301 | ROM_DEFAULT_BIOS("os12b2") |
| 1176 | 1302 | ROM_SYSTEM_BIOS( 0, "os12b2", "OS 1.20 / BASIC2" ) |
| r249143 | r249144 | |
| 1186 | 1312 | ROMX_LOAD("os10.rom", 0x40000, 0x4000, CRC(9679b8f8) SHA1(d35f6723132aabe3c4d00fc16fd9ecc6768df753), ROM_BIOS(4)) /* os */ |
| 1187 | 1313 | ROMX_LOAD("basic1.rom", 0x3c000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(4)) /* rom page 15 3c000 */ |
| 1188 | 1314 | |
| 1315 | ROM_LOAD("dnfs.rom", 0x38000, 0x4000, CRC(8ccd2157) SHA1(7e3c536baeae84d6498a14e8405319e01ee78232)) |
| 1316 | |
| 1189 | 1317 | ROM_REGION(0x4000, "os", 0) |
| 1190 | 1318 | ROM_COPY("option", 0x40000, 0, 0x4000) |
| 1191 | 1319 | |
| 1192 | | ROM_REGION(0x20000,"dfs",0) /* DFS ROMS */ |
| 1193 | | ROM_LOAD("dfs09.rom", 0x00000, 0x2000, CRC(3ce609cf) SHA1(5cc0f14b8f46855c70eaa653cca4ad079b458732)) |
| 1194 | | ROM_RELOAD( 0x02000, 0x2000 ) |
| 1195 | | ROM_LOAD("dnfs.rom", 0x04000, 0x4000, CRC(8ccd2157) SHA1(7e3c536baeae84d6498a14e8405319e01ee78232)) |
| 1196 | | ROM_LOAD("dfs144.rom", 0x08000, 0x4000, CRC(9fb8d13f) SHA1(387d2468c6e1360f5b531784ce95d5f71a50c2b5)) |
| 1197 | | ROM_LOAD("zdfs-0.90.rom",0x0C000, 0x2000, CRC(ea579d4d) SHA1(59ad2a8994f4bddad6687891f1a2bc29f2fd32b8)) |
| 1198 | | ROM_LOAD("ddfs223.rom", 0x10000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa)) |
| 1199 | | ROM_LOAD("ddfs-1.53.rom",0x14000, 0x4000, CRC(e1be4ee4) SHA1(6719dc958f2631e6dc8f045429797b289bfe649a)) |
| 1200 | | ROM_LOAD("ch103.rom", 0x18000, 0x4000, CRC(98367cf4) SHA1(eca3631aa420691f96b72bfdf2e9c2b613e1bf33)) |
| 1201 | | /*NONE*/ |
| 1202 | | ROM_REGION(0x80000, "disks", ROMREGION_ERASEFF) /* Opus Ram Disc Space */ |
| 1320 | ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */ |
| 1321 | ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6)) |
| 1322 | ROM_END |
| 1203 | 1323 | |
| 1204 | | //ROM_REGION(0x2000, "torch", 0) |
| 1205 | | //ROM_LOAD("torchz80_094.bin", 0x0000, 0x2000, CRC(49989bd4) SHA1(62b57c858a3baa4ff943c31f77d331c414772a61)) |
| 1206 | | //ROM_LOAD("torchz80_102.bin", 0x0000, 0x2000, CRC(2eb40a21) SHA1(e6ee738e5f2f8556002b79d18caa8ef21f14e08d)) |
| 1207 | 1324 | |
| 1208 | | //ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */ |
| 1209 | | //ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6)) |
| 1325 | ROM_START(bbcb1770) |
| 1326 | ROM_REGION(0x08000,"maincpu",ROMREGION_ERASEFF) /* RAM */ |
| 1327 | |
| 1328 | ROM_REGION(0x44000,"option",0) /* ROM */ |
| 1329 | /* rom page 0 00000 */ |
| 1330 | /* rom page 1 04000 */ |
| 1331 | /* rom page 2 08000 */ |
| 1332 | /* rom page 3 0c000 */ |
| 1333 | /* rom page 4 10000 */ |
| 1334 | /* rom page 5 14000 */ |
| 1335 | /* rom page 6 18000 */ |
| 1336 | /* rom page 7 1c000 */ |
| 1337 | /* rom page 8 20000 */ |
| 1338 | /* rom page 9 24000 */ |
| 1339 | /* rom page 10 28000 */ |
| 1340 | /* rom page 11 2c000 */ |
| 1341 | /* rom page 12 30000 SPARE SOCKET */ |
| 1342 | /* rom page 13 34000 SPARE SOCKET */ |
| 1343 | /* rom page 14 38000 DDFS */ |
| 1344 | /* rom page 15 3c000 BASIC */ |
| 1345 | ROM_DEFAULT_BIOS("os12b2") |
| 1346 | ROM_SYSTEM_BIOS( 0, "os12b2", "OS 1.20 / BASIC2" ) |
| 1347 | ROMX_LOAD("os12.rom", 0x40000, 0x4000, CRC(3c14fc70) SHA1(0d9bcaf6a393c9ce2359ed700ddb53c232c2c45d), ROM_BIOS(1)) /* os */ |
| 1348 | ROMX_LOAD("basic2.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(1)) /* rom page 15 3c000 */ |
| 1349 | ROM_SYSTEM_BIOS( 1, "os12b1", "OS 1.20 / BASIC1" ) |
| 1350 | ROMX_LOAD("os12.rom", 0x40000, 0x4000, CRC(3c14fc70) SHA1(0d9bcaf6a393c9ce2359ed700ddb53c232c2c45d), ROM_BIOS(2)) /* os */ |
| 1351 | ROMX_LOAD("basic1.rom", 0x3c000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(2)) /* rom page 15 3c000 */ |
| 1352 | ROM_SYSTEM_BIOS( 2, "os10b2", "OS 1.00 / BASIC2" ) |
| 1353 | ROMX_LOAD("os10.rom", 0x40000, 0x4000, CRC(9679b8f8) SHA1(d35f6723132aabe3c4d00fc16fd9ecc6768df753), ROM_BIOS(3)) /* os */ |
| 1354 | ROMX_LOAD("basic2.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(3)) /* rom page 15 3c000 */ |
| 1355 | ROM_SYSTEM_BIOS( 3, "os10b1", "OS 1.00 / BASIC1" ) |
| 1356 | ROMX_LOAD("os10.rom", 0x40000, 0x4000, CRC(9679b8f8) SHA1(d35f6723132aabe3c4d00fc16fd9ecc6768df753), ROM_BIOS(4)) /* os */ |
| 1357 | ROMX_LOAD("basic1.rom", 0x3c000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(4)) /* rom page 15 3c000 */ |
| 1358 | |
| 1359 | ROM_LOAD("ddfs223.rom", 0x38000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa)) |
| 1360 | |
| 1361 | ROM_REGION(0x4000, "os", 0) |
| 1362 | ROM_COPY("option", 0x40000, 0, 0x4000) |
| 1363 | |
| 1364 | ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */ |
| 1365 | ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6)) |
| 1210 | 1366 | ROM_END |
| 1211 | 1367 | |
| 1368 | |
| 1212 | 1369 | ROM_START(bbcb_de) |
| 1213 | 1370 | ROM_REGION(0x08000,"maincpu",ROMREGION_ERASEFF) /* RAM */ |
| 1214 | 1371 | |
| r249143 | r249144 | |
| 1225 | 1382 | /* rom page 9 24000 */ |
| 1226 | 1383 | /* rom page 10 28000 */ |
| 1227 | 1384 | /* rom page 11 2c000 */ |
| 1228 | | /* rom page 12 30000 */ |
| 1229 | | /* rom page 13 34000 */ |
| 1230 | | /* rom page 14 38000 */ |
| 1385 | /* rom page 12 30000 SPARE SOCKET */ |
| 1386 | /* rom page 13 34000 SPARE SOCKET */ |
| 1387 | /* rom page 14 38000 DFS */ |
| 1231 | 1388 | /* rom page 15 3c000 BASIC */ |
| 1232 | 1389 | ROM_DEFAULT_BIOS("os12") |
| 1233 | 1390 | ROM_SYSTEM_BIOS( 0, "os12", "OS 1.20 / BASIC2" ) |
| 1234 | 1391 | ROMX_LOAD("os_de.rom", 0x40000, 0x4000, CRC(b7262caf) SHA1(aadf90338ee9d1c85dfa73beba50e930c2a38f10), ROM_BIOS(1)) |
| 1235 | 1392 | ROMX_LOAD("basic2.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(1)) /* rom page 15 3c000 */ |
| 1236 | 1393 | |
| 1394 | ROM_LOAD("dfs10.rom", 0x38000, 0x4000, CRC(7e367e8c) SHA1(161f585dc45665ea77433c84afd2f95049f7f5a0)) |
| 1395 | |
| 1237 | 1396 | ROM_REGION(0x4000, "os", 0) |
| 1238 | 1397 | ROM_COPY("option", 0x40000, 0, 0x4000) |
| 1239 | 1398 | |
| 1240 | | ROM_REGION(0x20000,"dfs",0) /* DFS ROMS */ |
| 1241 | | ROM_LOAD("dfs09.rom", 0x00000, 0x2000, CRC(3ce609cf) SHA1(5cc0f14b8f46855c70eaa653cca4ad079b458732)) |
| 1242 | | ROM_RELOAD( 0x02000, 0x2000 ) |
| 1243 | | |
| 1244 | | ROM_LOAD("dnfs.rom", 0x04000, 0x4000, CRC(8ccd2157) SHA1(7e3c536baeae84d6498a14e8405319e01ee78232)) |
| 1245 | | ROM_LOAD("dfs144.rom", 0x08000, 0x4000, CRC(9fb8d13f) SHA1(387d2468c6e1360f5b531784ce95d5f71a50c2b5)) |
| 1246 | | ROM_LOAD("zdfs-0.90.rom",0x0C000, 0x2000, CRC(ea579d4d) SHA1(59ad2a8994f4bddad6687891f1a2bc29f2fd32b8)) |
| 1247 | | ROM_LOAD("ddfs223.rom", 0x10000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa)) |
| 1248 | | ROM_LOAD("ddfs-1.53.rom",0x14000, 0x4000, CRC(e1be4ee4) SHA1(6719dc958f2631e6dc8f045429797b289bfe649a)) |
| 1249 | | ROM_LOAD("ch103.rom", 0x18000, 0x4000, CRC(98367cf4) SHA1(eca3631aa420691f96b72bfdf2e9c2b613e1bf33)) |
| 1250 | | /*NONE*/ |
| 1251 | | ROM_REGION(0x80000, "disks", ROMREGION_ERASEFF) /* Opus Ram Disc Space */ |
| 1399 | ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */ |
| 1400 | ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6)) |
| 1252 | 1401 | ROM_END |
| 1253 | 1402 | |
| 1403 | |
| 1254 | 1404 | ROM_START(bbcb_us) |
| 1255 | 1405 | ROM_REGION(0x08000,"maincpu",ROMREGION_ERASEFF) /* RAM */ |
| 1256 | 1406 | |
| r249143 | r249144 | |
| 1267 | 1417 | /* rom page 9 24000 */ |
| 1268 | 1418 | /* rom page 10 28000 */ |
| 1269 | 1419 | /* rom page 11 2c000 */ |
| 1270 | | /* rom page 12 30000 */ |
| 1271 | | /* rom page 13 34000 */ |
| 1272 | | /* rom page 14 38000 */ |
| 1420 | /* rom page 12 30000 SPARE SOCKET */ |
| 1421 | /* rom page 13 34000 SPARE SOCKET */ |
| 1422 | /* rom page 14 38000 DFS */ |
| 1273 | 1423 | /* rom page 15 3c000 BASIC */ |
| 1274 | 1424 | ROM_DEFAULT_BIOS("os10b3") |
| 1275 | 1425 | ROM_SYSTEM_BIOS( 0, "os10b3", "OS A1.0 / BASIC3" ) |
| 1276 | 1426 | ROMX_LOAD("os10_us.rom", 0x40000, 0x4000, CRC(c8e946a9) SHA1(83d91d089dca092d2c8b7c3650ff8143c9069b89), ROM_BIOS(1)) |
| 1277 | 1427 | ROMX_LOAD("basic3.rom", 0x3c000, 0x4000, CRC(161b9539) SHA1(b39014610a968789afd7695aa04d1277d874405c), ROM_BIOS(1)) /* rom page 15 3c000 */ |
| 1278 | 1428 | |
| 1429 | ROM_LOAD("dfs10.rom", 0x38000, 0x4000, CRC(7e367e8c) SHA1(161f585dc45665ea77433c84afd2f95049f7f5a0)) |
| 1430 | |
| 1279 | 1431 | ROM_REGION(0x4000, "os", 0) |
| 1280 | 1432 | ROM_COPY("option", 0x40000, 0, 0x4000) |
| 1281 | 1433 | |
| 1282 | | ROM_REGION(0x20000,"dfs",0) /* DFS ROMS */ |
| 1283 | | ROM_LOAD("dfs09.rom", 0x00000, 0x2000, CRC(3ce609cf) SHA1(5cc0f14b8f46855c70eaa653cca4ad079b458732)) |
| 1284 | | ROM_RELOAD( 0x02000, 0x2000 ) |
| 1285 | | |
| 1286 | | ROM_LOAD("dnfs.rom", 0x04000, 0x4000, CRC(8ccd2157) SHA1(7e3c536baeae84d6498a14e8405319e01ee78232)) |
| 1287 | | ROM_LOAD("dfs144.rom", 0x08000, 0x4000, CRC(9fb8d13f) SHA1(387d2468c6e1360f5b531784ce95d5f71a50c2b5)) |
| 1288 | | ROM_LOAD("zdfs-0.90.rom",0x0C000, 0x2000, CRC(ea579d4d) SHA1(59ad2a8994f4bddad6687891f1a2bc29f2fd32b8)) |
| 1289 | | ROM_LOAD("ddfs223.rom", 0x10000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa)) |
| 1290 | | ROM_LOAD("ddfs-1.53.rom",0x14000, 0x4000, CRC(e1be4ee4) SHA1(6719dc958f2631e6dc8f045429797b289bfe649a)) |
| 1291 | | ROM_LOAD("ch103.rom", 0x18000, 0x4000, CRC(98367cf4) SHA1(eca3631aa420691f96b72bfdf2e9c2b613e1bf33)) |
| 1292 | | /*NONE*/ |
| 1293 | | ROM_REGION(0x80000, "disks", ROMREGION_ERASEFF) /* Opus Ram Disc Space */ |
| 1294 | | |
| 1295 | 1434 | ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */ |
| 1296 | 1435 | ROM_LOAD("phrom_us.bin", 0x0000, 0x4000, CRC(bf4b3b64) SHA1(66876702d1d95eecc034d20f25047f893a27cde5)) |
| 1297 | 1436 | ROM_END |
| 1298 | 1437 | |
| 1438 | |
| 1299 | 1439 | ROM_START(bbcbp) |
| 1300 | 1440 | ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */ |
| 1301 | 1441 | |
| r249143 | r249144 | |
| 1309 | 1449 | /* rom page 2 08000 32K IN PAGE 3 */ |
| 1310 | 1450 | /* rom page 3 0c000 SPARE SOCKET */ |
| 1311 | 1451 | /* rom page 4 10000 32K IN PAGE 5 */ |
| 1312 | | /* rom page 5 14000 SPARE SOCKET */ |
| 1452 | /* rom page 5 14000 ADFS */ |
| 1313 | 1453 | /* rom page 6 18000 32K IN PAGE 7 */ |
| 1314 | 1454 | /* rom page 7 1c000 DDFS */ |
| 1315 | 1455 | /* rom page 8 20000 32K IN PAGE 9 */ |
| r249143 | r249144 | |
| 1320 | 1460 | /* rom page 13 34000 */ |
| 1321 | 1461 | /* rom page 14 38000 32K IN PAGE 15 */ |
| 1322 | 1462 | /* rom page 15 3C000 BASIC */ |
| 1323 | | /* ddfs 2.23 this is acorns 1770 disc controller Double density disc filing system */ |
| 1463 | ROM_LOAD("adfs130.rom", 0x14000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8)) |
| 1324 | 1464 | ROM_LOAD("ddfs223.rom", 0x1c000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa)) |
| 1325 | 1465 | |
| 1326 | 1466 | ROM_REGION(0x4000, "os", 0) |
| 1327 | 1467 | ROM_COPY("option", 0x40000, 0, 0x4000) |
| 1468 | |
| 1469 | ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */ |
| 1470 | ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6)) |
| 1328 | 1471 | ROM_END |
| 1329 | 1472 | |
| 1330 | 1473 | |
| r249143 | r249144 | |
| 1341 | 1484 | /* rom page 2 08000 32K IN PAGE 3 */ |
| 1342 | 1485 | /* rom page 3 0c000 SPARE SOCKET */ |
| 1343 | 1486 | /* rom page 4 10000 32K IN PAGE 5 */ |
| 1344 | | /* rom page 5 14000 SPARE SOCKET */ |
| 1487 | /* rom page 5 14000 ADFS */ |
| 1345 | 1488 | /* rom page 6 18000 32K IN PAGE 7 */ |
| 1346 | 1489 | /* rom page 7 1c000 DDFS */ |
| 1347 | 1490 | /* rom page 8 20000 32K IN PAGE 9 */ |
| r249143 | r249144 | |
| 1352 | 1495 | /* rom page 13 34000 */ |
| 1353 | 1496 | /* rom page 14 38000 32K IN PAGE 15 */ |
| 1354 | 1497 | /* rom page 15 3C000 BASIC */ |
| 1355 | | /* ddfs 2.23 this is acorns 1770 disc controller Double density disc filing system */ |
| 1498 | ROM_LOAD("adfs130.rom", 0x14000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8)) |
| 1356 | 1499 | ROM_LOAD("ddfs223.rom", 0x1c000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa)) |
| 1357 | 1500 | |
| 1358 | 1501 | ROM_REGION(0x4000, "os", 0) |
| 1359 | 1502 | ROM_COPY("option", 0x40000, 0, 0x4000) |
| 1503 | |
| 1504 | ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */ |
| 1505 | ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6)) |
| 1360 | 1506 | ROM_END |
| 1361 | 1507 | |
| 1362 | 1508 | |
| 1509 | ROM_START(abc110) |
| 1510 | ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */ |
| 1511 | |
| 1512 | ROM_REGION(0x44000,"option",0) /* ROM */ |
| 1513 | ROM_DEFAULT_BIOS("mos200") |
| 1514 | ROM_SYSTEM_BIOS( 0, "mos200", "MOS2.00" ) |
| 1515 | ROMX_LOAD("mos200.rom", 0x40000, 0x4000, CRC(5e88f994) SHA1(76235ff15d736f5def338f73ac7497c41b916505), ROM_BIOS(1)) |
| 1516 | ROM_SYSTEM_BIOS( 1, "mos123", "MOS1.23" ) |
| 1517 | ROMX_LOAD("mos123.rom", 0x40000, 0x4000, CRC(90d31d08) SHA1(42a01892cf8bd2ada4db1c8b36aff80c85eb5dcb), ROM_BIOS(2)) |
| 1518 | ROM_SYSTEM_BIOS( 2, "mos120", "MOS1.20" ) |
| 1519 | ROMX_LOAD("mos120.rom", 0x40000, 0x4000, CRC(0a1e83a0) SHA1(21dc3a94eef7c003b194686730fb461779f44925), ROM_BIOS(3)) |
| 1520 | /* rom page 0 00000 */ |
| 1521 | /* rom page 1 04000 */ |
| 1522 | /* rom page 2 08000 32K IN PAGE 3 */ |
| 1523 | /* rom page 3 0c000 SPARE SOCKET */ |
| 1524 | /* rom page 4 10000 32K IN PAGE 5 */ |
| 1525 | /* rom page 5 14000 DDFS */ |
| 1526 | /* rom page 6 18000 32K IN PAGE 7 */ |
| 1527 | /* rom page 7 1c000 ADFS */ |
| 1528 | /* rom page 8 20000 32K IN PAGE 9 */ |
| 1529 | /* rom page 9 24000 SPARE SOCKET */ |
| 1530 | /* rom page 10 28000 32K IN PAGE 11 */ |
| 1531 | /* rom page 11 2c000 SPARE SOCKET */ |
| 1532 | /* rom page 12 30000 */ |
| 1533 | /* rom page 13 34000 */ |
| 1534 | /* rom page 14 38000 32K IN PAGE 15 */ |
| 1535 | /* rom page 15 3C000 BASIC */ |
| 1536 | ROM_LOAD("ddfs223.rom", 0x14000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa)) |
| 1537 | ROM_LOAD("adfs130.rom", 0x1c000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8)) |
| 1538 | ROM_LOAD("basic200.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281)) |
| 1539 | |
| 1540 | ROM_REGION(0x4000, "os", 0) |
| 1541 | ROM_COPY("option", 0x40000, 0, 0x4000) |
| 1542 | |
| 1543 | ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */ |
| 1544 | ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6)) |
| 1545 | ROM_END |
| 1546 | |
| 1547 | |
| 1548 | ROM_START(abc210) |
| 1549 | ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */ |
| 1550 | |
| 1551 | ROM_REGION(0x44000,"option",0) /* ROM */ |
| 1552 | ROM_DEFAULT_BIOS("mos200") |
| 1553 | ROM_SYSTEM_BIOS( 0, "mos200", "MOS2.00" ) |
| 1554 | ROMX_LOAD("mos200.rom", 0x40000, 0x4000, CRC(5e88f994) SHA1(76235ff15d736f5def338f73ac7497c41b916505), ROM_BIOS(1)) |
| 1555 | ROM_SYSTEM_BIOS( 1, "mos123", "MOS1.23" ) |
| 1556 | ROMX_LOAD("mos123.rom", 0x40000, 0x4000, CRC(90d31d08) SHA1(42a01892cf8bd2ada4db1c8b36aff80c85eb5dcb), ROM_BIOS(2)) |
| 1557 | ROM_SYSTEM_BIOS( 2, "mos120", "MOS1.20" ) |
| 1558 | ROMX_LOAD("mos120.rom", 0x40000, 0x4000, CRC(0a1e83a0) SHA1(21dc3a94eef7c003b194686730fb461779f44925), ROM_BIOS(3)) |
| 1559 | /* rom page 0 00000 */ |
| 1560 | /* rom page 1 04000 */ |
| 1561 | /* rom page 2 08000 32K IN PAGE 3 */ |
| 1562 | /* rom page 3 0c000 SPARE SOCKET */ |
| 1563 | /* rom page 4 10000 32K IN PAGE 5 */ |
| 1564 | /* rom page 5 14000 DDFS */ |
| 1565 | /* rom page 6 18000 32K IN PAGE 7 */ |
| 1566 | /* rom page 7 1c000 ADFS */ |
| 1567 | /* rom page 8 20000 32K IN PAGE 9 */ |
| 1568 | /* rom page 9 24000 SPARE SOCKET */ |
| 1569 | /* rom page 10 28000 32K IN PAGE 11 */ |
| 1570 | /* rom page 11 2c000 SPARE SOCKET */ |
| 1571 | /* rom page 12 30000 */ |
| 1572 | /* rom page 13 34000 */ |
| 1573 | /* rom page 14 38000 32K IN PAGE 15 */ |
| 1574 | /* rom page 15 3C000 BASIC */ |
| 1575 | ROM_LOAD("ddfs223.rom", 0x14000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa)) |
| 1576 | ROM_LOAD("adfs130.rom", 0x1c000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8)) |
| 1577 | ROM_LOAD("basic200.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281)) |
| 1578 | |
| 1579 | ROM_REGION(0x4000, "os", 0) |
| 1580 | ROM_COPY("option", 0x40000, 0, 0x4000) |
| 1581 | |
| 1582 | ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */ |
| 1583 | ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6)) |
| 1584 | ROM_END |
| 1585 | |
| 1586 | |
| 1587 | ROM_START(abc310) |
| 1588 | ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */ |
| 1589 | |
| 1590 | ROM_REGION(0x44000,"option",0) /* ROM */ |
| 1591 | ROM_DEFAULT_BIOS("mos200") |
| 1592 | ROM_SYSTEM_BIOS( 0, "mos200", "MOS2.00" ) |
| 1593 | ROMX_LOAD("mos200.rom", 0x40000, 0x4000, CRC(5e88f994) SHA1(76235ff15d736f5def338f73ac7497c41b916505), ROM_BIOS(1)) |
| 1594 | ROM_SYSTEM_BIOS( 1, "mos123", "MOS1.23" ) |
| 1595 | ROMX_LOAD("mos123.rom", 0x40000, 0x4000, CRC(90d31d08) SHA1(42a01892cf8bd2ada4db1c8b36aff80c85eb5dcb), ROM_BIOS(2)) |
| 1596 | ROM_SYSTEM_BIOS( 2, "mos120", "MOS1.20" ) |
| 1597 | ROMX_LOAD("mos120.rom", 0x40000, 0x4000, CRC(0a1e83a0) SHA1(21dc3a94eef7c003b194686730fb461779f44925), ROM_BIOS(3)) |
| 1598 | /* rom page 0 00000 */ |
| 1599 | /* rom page 1 04000 */ |
| 1600 | /* rom page 2 08000 32K IN PAGE 3 */ |
| 1601 | /* rom page 3 0c000 SPARE SOCKET */ |
| 1602 | /* rom page 4 10000 32K IN PAGE 5 */ |
| 1603 | /* rom page 5 14000 DDFS */ |
| 1604 | /* rom page 6 18000 32K IN PAGE 7 */ |
| 1605 | /* rom page 7 1c000 ADFS */ |
| 1606 | /* rom page 8 20000 32K IN PAGE 9 */ |
| 1607 | /* rom page 9 24000 SPARE SOCKET */ |
| 1608 | /* rom page 10 28000 32K IN PAGE 11 */ |
| 1609 | /* rom page 11 2c000 SPARE SOCKET */ |
| 1610 | /* rom page 12 30000 */ |
| 1611 | /* rom page 13 34000 */ |
| 1612 | /* rom page 14 38000 32K IN PAGE 15 */ |
| 1613 | /* rom page 15 3C000 BASIC */ |
| 1614 | ROM_LOAD("ddfs223.rom", 0x14000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa)) |
| 1615 | ROM_LOAD("adfs130.rom", 0x1c000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8)) |
| 1616 | ROM_LOAD("basic200.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281)) |
| 1617 | |
| 1618 | ROM_REGION(0x4000, "os", 0) |
| 1619 | ROM_COPY("option", 0x40000, 0, 0x4000) |
| 1620 | |
| 1621 | ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */ |
| 1622 | ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6)) |
| 1623 | ROM_END |
| 1624 | |
| 1625 | |
| 1626 | ROM_START(reutapm) |
| 1627 | ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */ |
| 1628 | |
| 1629 | ROM_REGION(0x44000,"option",0) /* ROM */ |
| 1630 | /* rom page 0 00000 */ |
| 1631 | /* rom page 1 04000 */ |
| 1632 | /* rom page 2 08000 32K IN PAGE 3 */ |
| 1633 | /* rom page 3 0c000 SPARE SOCKET */ |
| 1634 | /* rom page 4 10000 32K IN PAGE 5 */ |
| 1635 | /* rom page 5 14000 SPARE SOCKET */ |
| 1636 | /* rom page 6 18000 32K IN PAGE 7 */ |
| 1637 | /* rom page 7 1c000 SPARE SOCKET */ |
| 1638 | /* rom page 8 20000 32K IN PAGE 9 */ |
| 1639 | /* rom page 9 24000 SPARE SOCKET */ |
| 1640 | /* rom page 10 28000 32K IN PAGE 11 */ |
| 1641 | /* rom page 11 2c000 SPARE SOCKET */ |
| 1642 | /* rom page 12 30000 */ |
| 1643 | /* rom page 13 34000 */ |
| 1644 | /* rom page 14 38000 32K IN PAGE 15 */ |
| 1645 | /* rom page 15 3C000 SPARE SOCKET */ |
| 1646 | ROM_LOAD("reutera100.rom", 0x1c000, 0x4000, CRC(98ebabfb) SHA1(a7887e1e5c206203491e1e06682b9508b0fef49d)) |
| 1647 | ROM_LOAD("reuterb.rom", 0x2c000, 0x4000, CRC(9e02f59b) SHA1(1e63aa3bf4b37bf9ba41e454f95db05c3d15bfbf)) |
| 1648 | |
| 1649 | ROM_REGION(0x4000, "os", 0) |
| 1650 | ROM_LOAD("mos_r030.rom", 0x0000, 0x4000, CRC(8b652337) SHA1(6a5c7ace255c8ac96c983d5ba67084fbd71ff61e)) |
| 1651 | ROM_END |
| 1652 | |
| 1653 | |
| 1363 | 1654 | ROM_START(bbcm) |
| 1364 | 1655 | ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */ |
| 1365 | 1656 | |
| r249143 | r249144 | |
| 1480 | 1771 | ROM_REGION(0x44000,"option",0) /* ROM */ |
| 1481 | 1772 | ROM_DEFAULT_BIOS("mos400") |
| 1482 | 1773 | ROM_SYSTEM_BIOS( 0, "mos400", "Econet MOS 4.00" ) |
| 1483 | | ROMX_LOAD("mos400.ic24", 0x20000, 0x10000, BAD_DUMP CRC(81729034) SHA1(d4bc2c7f5e66b5298786138f395908e70c772971), ROM_BIOS(1)) /* Merged individual ROM bank dumps */ |
| 1484 | | ROM_COPY("option", 0x24000, 0x34000, 0xC000) /* Mirror */ |
| 1485 | | ROM_COPY("option", 0x20000, 0x40000, 0x4000) /* Move loaded roms into place */ |
| 1486 | | ROM_FILL(0x20000, 0x4000, 0xFFFF) |
| 1774 | ROMX_LOAD("mos400.ic24", 0x30000, 0x10000, BAD_DUMP CRC(81729034) SHA1(d4bc2c7f5e66b5298786138f395908e70c772971), ROM_BIOS(1)) /* Merged individual ROM bank dumps */ |
| 1775 | ROM_COPY("option", 0x34000, 0x24000, 0xC000) /* Mirror */ |
| 1776 | ROM_COPY("option", 0x30000, 0x40000, 0x4000) /* Move loaded roms into place */ |
| 1777 | ROM_FILL(0x30000, 0x4000, 0xFFFF) |
| 1487 | 1778 | /* 00000 rom 0 Rear Cartridge bottom 16K */ |
| 1488 | 1779 | /* 04000 rom 1 Rear Cartridge top 16K */ |
| 1489 | 1780 | /* 08000 rom 2 Front Cartridge bottom 16K */ |
| r249143 | r249144 | |
| 1659 | 1950 | ROM_END |
| 1660 | 1951 | |
| 1661 | 1952 | |
| 1662 | | /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */ |
| 1663 | | COMP ( 1981, bbcb, 0, bbca, bbcb, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B", 0) |
| 1664 | | COMP ( 1981, bbca, bbcb, 0, bbca, bbca, bbc_state, bbc, "Acorn", "BBC Micro Model A", 0) |
| 1665 | | COMP ( 1981, bbcb_us, bbcb, 0, bbcb_us, bbcb, bbc_state, bbc, "Acorn", "Acorn Proton (US)", 0) |
| 1666 | | COMP ( 1981, bbcb_de, bbcb, 0, bbcb, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B (German)", 0) |
| 1667 | | COMP ( 1985, bbcbp, 0, bbcb, bbcbp, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B+ 64K", 0) |
| 1668 | | COMP ( 1985, bbcbp128, bbcbp, 0, bbcbp128, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B+ 128K", 0) |
| 1669 | | COMP ( 1986, bbcm, 0, bbcb, bbcm, bbcm, bbc_state, bbcm, "Acorn", "BBC Master 128", 0) |
| 1670 | | COMP ( 1986, bbcmt, bbcm, 0, bbcmt, bbcm, bbc_state, bbcm, "Acorn", "BBC Master Turbo", MACHINE_NOT_WORKING) |
| 1671 | | COMP ( 1986, bbcmaiv, bbcm, 0, bbcmaiv, bbcm, bbc_state, bbcm, "Acorn", "BBC Master AIV", MACHINE_NOT_WORKING) |
| 1672 | | COMP ( 1986, bbcmet, bbcm, 0, bbcmet, bbcm, bbc_state, bbcm, "Acorn", "BBC Master ET", 0) |
| 1673 | | COMP ( 1986, bbcm512, bbcm, 0, bbcm512, bbcm, bbc_state, bbcm, "Acorn", "BBC Master 512", MACHINE_NOT_WORKING) |
| 1674 | | COMP ( 1986, bbcmarm, bbcm, 0, bbcmarm, bbcm, bbc_state, bbcm, "Acorn", "ARM Evaluation System", MACHINE_NOT_WORKING) |
| 1675 | | COMP ( 1986, bbcmc, 0, bbcm, bbcmc, bbcm, bbc_state, bbcm, "Acorn", "BBC Master Compact", 0) |
| 1676 | | COMP ( 1986, bbcmc_ar, bbcmc, 0, bbcmc, bbcm, bbc_state, bbcm, "Acorn", "BBC Master Compact (Arabic)", 0) |
| 1953 | ROM_START(pro128s) |
| 1954 | ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) /* ROM MEMORY */ |
| 1955 | |
| 1956 | ROM_REGION(0x44000, "option", 0) /* ROM */ |
| 1957 | ROM_DEFAULT_BIOS("mos510o") |
| 1958 | ROM_SYSTEM_BIOS(0, "mos510o", "Olivetti MOS 5.10") |
| 1959 | ROMX_LOAD("mos510o.ic49", 0x30000, 0x10000, CRC(c16858d3) SHA1(ad231ed21a55e493b553703285530d1cacd3de7a), ROM_BIOS(1)) |
| 1960 | ROM_COPY("option", 0x30000, 0x40000, 0x4000) /* Move loaded roms into place */ |
| 1961 | ROM_FILL(0x30000, 0x4000, 0xFFFF) |
| 1962 | /* 00000 rom 0 EXTERNAL */ |
| 1963 | /* 04000 rom 1 EXTERNAL */ |
| 1964 | /* 08000 rom 2 SPARE SOCKET */ |
| 1965 | /* 0c000 rom 3 SPARE SOCKET */ |
| 1966 | /* 10000 rom 4 SWRAM */ |
| 1967 | /* 14000 rom 5 SWRAM */ |
| 1968 | /* 18000 rom 6 SWRAM */ |
| 1969 | /* 1c000 rom 7 SWRAM */ |
| 1970 | /* 20000 rom 8 SPARE SOCKET */ |
| 1971 | /* 24000 rom 9 UNUSED */ |
| 1972 | /* 28000 rom 10 UNUSED */ |
| 1973 | /* 2c000 rom 11 UNUSED */ |
| 1974 | /* 30000 rom 12 UNUSED */ |
| 1975 | /* 34000 rom 13 ADFS */ |
| 1976 | /* 38000 rom 14 BASIC */ |
| 1977 | /* 3c000 rom 15 Utils */ |
| 1978 | |
| 1979 | ROM_REGION(0x4000, "os", 0) |
| 1980 | ROM_COPY("option", 0x40000, 0, 0x4000) |
| 1981 | |
| 1982 | // ROM_REGION(0x80,"eeprom",0) /* pcd8572 */ |
| 1983 | /* Factory defaulted EEPROM, sets default language ROM, etc. */ |
| 1984 | // ROM_LOAD("mos510o.epr", 0x00, 0x80, CRC(d8458039) SHA1(72c056d493e74ceca41f48936012b012b496a226)) |
| 1985 | ROM_END |
| 1986 | |
| 1987 | /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ |
| 1988 | COMP ( 1981, bbcb, 0, bbca, bbcb, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B w/8271 FDC", MACHINE_IMPERFECT_GRAPHICS) |
| 1989 | COMP ( 1981, bbca, bbcb, 0, bbca, bbca, bbc_state, bbc, "Acorn", "BBC Micro Model A", MACHINE_IMPERFECT_GRAPHICS) |
| 1990 | COMP ( 1981, bbcb_de, bbcb, 0, bbcb_de, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B (German)", MACHINE_IMPERFECT_GRAPHICS) |
| 1991 | COMP ( 1983, bbcb_us, bbcb, 0, bbcb_us, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B (US)", MACHINE_IMPERFECT_GRAPHICS) |
| 1992 | COMP ( 1985, bbcb1770, bbcb, 0, bbcb1770, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B w/1770 FDC", MACHINE_IMPERFECT_GRAPHICS) |
| 1993 | COMP ( 1985, bbcbp, 0, bbcb, bbcbp, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B+ 64K", MACHINE_IMPERFECT_GRAPHICS) |
| 1994 | COMP ( 1985, bbcbp128, bbcbp, 0, bbcbp128, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B+ 128K", MACHINE_IMPERFECT_GRAPHICS) |
| 1995 | COMP ( 1985, abc110, abc210, 0, abc110, abc, bbc_state, bbc, "Acorn", "ABC 110", MACHINE_NOT_WORKING) |
| 1996 | COMP ( 1985, abc210, 0, 0, abc210, abc, bbc_state, bbc, "Acorn", "ABC 210/Cambridge Workstation", MACHINE_NOT_WORKING) |
| 1997 | COMP ( 1985, abc310, abc210, 0, abc310, abc, bbc_state, bbc, "Acorn", "ABC 310", MACHINE_NOT_WORKING) |
| 1998 | COMP ( 1985, reutapm, 0, 0, reutapm, bbcb, bbc_state, bbc, "Acorn", "Reuters APM", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) |
| 1999 | COMP ( 1986, bbcm, 0, bbcb, bbcm, bbcm, bbc_state, bbc, "Acorn", "BBC Master 128", MACHINE_IMPERFECT_GRAPHICS) |
| 2000 | COMP ( 1986, bbcmt, bbcm, 0, bbcmt, bbcm, bbc_state, bbc, "Acorn", "BBC Master Turbo", MACHINE_NOT_WORKING) |
| 2001 | COMP ( 1986, bbcmaiv, bbcm, 0, bbcmaiv, bbcm, bbc_state, bbc, "Acorn", "BBC Master AIV", MACHINE_NOT_WORKING) |
| 2002 | COMP ( 1986, bbcmet, bbcm, 0, bbcmet, bbcm, bbc_state, bbc, "Acorn", "BBC Master ET", MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS) |
| 2003 | COMP ( 1986, bbcm512, bbcm, 0, bbcm512, bbcm, bbc_state, bbc, "Acorn", "BBC Master 512", MACHINE_NOT_WORKING) |
| 2004 | COMP ( 1986, bbcmarm, bbcm, 0, bbcmarm, bbcm, bbc_state, bbc, "Acorn", "ARM Evaluation System", MACHINE_NOT_WORKING) |
| 2005 | COMP ( 1986, bbcmc, 0, bbcm, bbcmc, bbcm, bbc_state, bbc, "Acorn", "BBC Master Compact", MACHINE_IMPERFECT_GRAPHICS) |
| 2006 | COMP ( 1986, bbcmc_ar, bbcmc, 0, bbcmc, bbcm, bbc_state, bbc, "Acorn", "BBC Master Compact (Arabic)", MACHINE_IMPERFECT_GRAPHICS) |
| 2007 | COMP ( 1987, pro128s, bbcmc, 0, pro128s, bbcm, bbc_state, bbc, "Olivetti", "Prodest PC 128S", MACHINE_IMPERFECT_GRAPHICS) |
trunk/src/mess/machine/bbc.c
| r249143 | r249144 | |
| 51 | 51 | *************************/ |
| 52 | 52 | |
| 53 | 53 | /* the model B address all 16 of the ROM sockets */ |
| 54 | | /* I have set bank 1 as a special case to load different DFS roms selectable from MESS's CONF settings var:bbc_DFSTypes */ |
| 55 | 54 | WRITE8_MEMBER(bbc_state::bbc_page_selectb_w) |
| 56 | 55 | { |
| 57 | 56 | m_rombank = data & 0x0f; |
| 58 | | if (m_rombank != 1) |
| 59 | | { |
| 60 | | m_bank4->set_entry(m_rombank); |
| 61 | | } |
| 62 | | else |
| 63 | | { |
| 64 | | m_bank4->set_entry(0x10 + m_DFSType); |
| 65 | | } |
| 57 | m_bank4->set_entry(m_rombank); |
| 66 | 58 | } |
| 67 | 59 | |
| 68 | 60 | |
| r249143 | r249144 | |
| 80 | 72 | |
| 81 | 73 | /* I have setup 3 types of sideways ram: |
| 82 | 74 | 0: none |
| 83 | | 1: 128K (bank 8 to 15) Solidisc sidewaysram userport bank latch |
| 75 | 1: 128K (bank 8 to 15) Solidisc sideways ram userport bank latch |
| 84 | 76 | 2: 64K (banks 4 to 7) for Acorn sideways ram FE30 bank latch |
| 85 | 77 | 3: 128K (banks 8 to 15) for Acown sideways ram FE30 bank latch |
| 86 | 78 | */ |
| r249143 | r249144 | |
| 90 | 82 | |
| 91 | 83 | WRITE8_MEMBER(bbc_state::bbc_memoryb4_w) |
| 92 | 84 | { |
| 93 | | if (m_rombank == 1) |
| 85 | switch (m_SWRAMtype) |
| 94 | 86 | { |
| 95 | | // special DFS case for Acorn DFS E00 Hack that can write to the DFS RAM Bank; |
| 96 | | if (m_DFSType == 3) m_region_dfs->base()[((m_DFSType) << 14) + offset] = data; |
| 87 | case 1: if (bbc_SWRAMtype1[m_userport]) m_region_opt->base()[(m_userport << 14) + offset] = data; |
| 88 | case 2: if (bbc_SWRAMtype2[m_rombank]) m_region_opt->base()[(m_rombank << 14) + offset] = data; |
| 89 | case 3: if (bbc_SWRAMtype3[m_rombank]) m_region_opt->base()[(m_rombank << 14) + offset] = data; |
| 97 | 90 | } |
| 98 | | else |
| 99 | | { |
| 100 | | switch (m_SWRAMtype) |
| 101 | | { |
| 102 | | case 1: if (bbc_SWRAMtype1[m_userport]) m_region_opt->base()[(m_userport << 14) + offset] = data; |
| 103 | | case 2: if (bbc_SWRAMtype2[m_rombank]) m_region_opt->base()[(m_rombank << 14) + offset] = data; |
| 104 | | case 3: if (bbc_SWRAMtype3[m_rombank]) m_region_opt->base()[(m_rombank << 14) + offset] = data; |
| 105 | | } |
| 106 | | } |
| 107 | 91 | } |
| 108 | 92 | |
| 109 | 93 | /****************************************/ |
| r249143 | r249144 | |
| 377 | 361 | m_bank2->set_base(m_region_maincpu->base() + 0x3000); |
| 378 | 362 | } |
| 379 | 363 | |
| 380 | | /* ACCCON_TST controls paging of rom reads in the 0xFC00-0xFEFF reigon */ |
| 364 | /* ACCCON_TST controls paging of rom reads in the 0xFC00-0xFEFF region */ |
| 381 | 365 | /* if 0 the I/O is paged for both reads and writes */ |
| 382 | 366 | /* if 1 the ROM is paged in for reads but writes still go to I/O */ |
| 383 | 367 | if (m_ACCCON_TST) |
| r249143 | r249144 | |
| 538 | 522 | &FE18-&FE1F uPD7002 A to D converter A to D converter 8 ( 4 bytes x 2 ) |
| 539 | 523 | &FE20-&FE23 Video ULA - Video system chip 4 ( 2 bytes x 2 ) |
| 540 | 524 | &FE24-&FE27 FDC Latch 1770 Control latch 1770 Control latch 4 ( 1 byte x 4 ) |
| 541 | | &FE28-&FE2F 1770 registers 1770 Disc Controller 1170 Disc Controller 8 ( 4 bytes x 2 ) |
| 525 | &FE28-&FE2F 1770 registers 1770 Disc Controller 1770 Disc Controller 8 ( 4 bytes x 2 ) |
| 542 | 526 | &FE30-&FE33 ROMSEL - ROM Select 4 ( 1 byte x 4 ) |
| 543 | 527 | &FE34-&3FE7 ACCCON ACCCON select reg. ACCCON select reg 4 ( 1 byte x 4 ) |
| 544 | 528 | &FE38-&FE3F NC - - |
| r249143 | r249144 | |
| 554 | 538 | { |
| 555 | 539 | long myo; |
| 556 | 540 | |
| 557 | | /* Now handled in bbcm_ACCCON_write PHS - 2008-10-11 */ |
| 558 | | // if ( m_ACCCON_TST ) |
| 559 | | // { |
| 560 | | // return m_region_os->base()[offset + 0x3c00]; |
| 561 | | // }; |
| 562 | | |
| 563 | 541 | if (offset<=0x0ff) /* FRED */ |
| 564 | 542 | { |
| 565 | 543 | return 0xff; |
| r249143 | r249144 | |
| 573 | 551 | if ((offset>=0x200) && (offset<=0x2ff)) /* SHEILA */ |
| 574 | 552 | { |
| 575 | 553 | myo = offset-0x200; |
| 576 | | if ((myo>=0x00) && (myo<=0x07)) return bbc_6845_r(space, myo-0x00); /* Video Controller */ |
| 577 | | if ((myo>=0x08) && (myo<=0x0f)) |
| 578 | | { |
| 579 | | if ((myo - 0x08) & 1) |
| 580 | | return m_acia->status_r(space,0); |
| 581 | | else |
| 582 | | return m_acia->data_r(space,0); |
| 583 | | } |
| 584 | | if ((myo>=0x10) && (myo<=0x17)) return 0xfe; /* Serial System Chip */ |
| 585 | | if ((myo>=0x18) && (myo<=0x1f)) return m_upd7002->read(space, myo-0x18); /* A to D converter */ |
| 586 | | if ((myo>=0x20) && (myo<=0x23)) return 0xfe; /* VideoULA */ |
| 587 | | if ((myo>=0x24) && (myo<=0x27)) return bbcm_wd1770l_read(space, myo-0x24); /* 1770 */ |
| 588 | | if ((myo>=0x28) && (myo<=0x2f)) return bbcm_wd1770_read(space, myo-0x28); /* disc control latch */ |
| 589 | | if ((myo>=0x30) && (myo<=0x33)) return 0xfe; /* page select */ |
| 590 | | if ((myo>=0x34) && (myo<=0x37)) return bbcm_ACCCON_read(space, myo-0x34); /* ACCCON */ |
| 591 | | if ((myo>=0x38) && (myo<=0x3f)) return 0xfe; /* NC ?? */ |
| 592 | | if ((myo>=0x40) && (myo<=0x5f)) return m_via6522_0->read(space, myo-0x40); |
| 593 | | if ((myo>=0x60) && (myo<=0x7f)) return m_via6522_1->read(space, myo-0x60); |
| 594 | | if ((myo>=0x80) && (myo<=0x9f)) return 0xfe; |
| 595 | | if ((myo>=0xa0) && (myo<=0xbf)) return m_adlc->read(space, myo & 0x03); |
| 596 | | if ((myo>=0xc0) && (myo<=0xdf)) return 0xfe; |
| 597 | | if ((myo>=0xe0) && (myo<=0xff)) return 0xfe; |
| 554 | if ((myo>=0x00) && (myo<=0x06) && (myo+0x01) & 1) return m_mc6845->status_r(space, myo-0x00); /* Video controller */ |
| 555 | if ((myo>=0x01) && (myo<=0x07) && (myo & 1)) return m_mc6845->register_r(space, myo-0x01); |
| 556 | if ((myo>=0x08) && (myo<=0x0e) && (myo+0x01) & 1) return m_acia ? m_acia->status_r(space, myo-0x08) : 0xfe; /* Serial controller */ |
| 557 | if ((myo>=0x09) && (myo<=0x0f) && (myo & 1)) return m_acia ? m_acia->data_r(space, myo-0x09) : 0xfe; |
| 558 | if ((myo>=0x10) && (myo<=0x17)) return 0xfe; /* Serial System Chip */ |
| 559 | if ((myo>=0x18) && (myo<=0x1f)) return m_upd7002 ? m_upd7002->read(space, myo-0x18) : 0xfe; /* A to D converter */ |
| 560 | if ((myo>=0x20) && (myo<=0x23)) return 0xfe; /* VideoULA */ |
| 561 | if ((myo>=0x24) && (myo<=0x27)) return bbcm_wd177xl_read(space, myo - 0x24); /* 177x Control Latch */ |
| 562 | if ((myo>=0x28) && (myo<=0x2f) && (m_wd1770)) return m_wd1770->read(space, myo-0x28); /* 1770 Controller */ |
| 563 | if ((myo>=0x28) && (myo<=0x2f) && (m_wd1772)) return m_wd1772->read(space, myo-0x28); /* 1772 Controller */ |
| 564 | if ((myo>=0x28) && (myo<=0x2f)) return 0xfe; /* No Controller */ |
| 565 | if ((myo>=0x30) && (myo<=0x33)) return 0xfe; |
| 566 | if ((myo>=0x34) && (myo<=0x37)) return bbcm_ACCCON_read(space, myo-0x34); /* ACCCON */ |
| 567 | if ((myo>=0x38) && (myo<=0x3f)) return 0xfe; /* NC ?? */ |
| 568 | if ((myo>=0x40) && (myo<=0x5f)) return m_via6522_0->read(space, myo-0x40); |
| 569 | if ((myo>=0x60) && (myo<=0x7f)) return m_via6522_1 ? m_via6522_1->read(space, myo-0x60) : 0xfe; |
| 570 | if ((myo>=0x80) && (myo<=0x9f)) return 0xfe; |
| 571 | if ((myo>=0xa0) && (myo<=0xbf)) return m_adlc ? m_adlc->read(space, myo & 0x03) : 0xfe; |
| 572 | if ((myo>=0xc0) && (myo<=0xdf)) return 0xfe; |
| 573 | if ((myo>=0xe0) && (myo<=0xff)) return 0xfe; |
| 598 | 574 | } |
| 599 | | |
| 600 | 575 | return 0xfe; |
| 601 | 576 | } |
| 602 | 577 | |
| r249143 | r249144 | |
| 607 | 582 | if ((offset>=0x200) && (offset<=0x2ff)) /* SHEILA */ |
| 608 | 583 | { |
| 609 | 584 | myo=offset-0x200; |
| 610 | | if ((myo>=0x00) && (myo<=0x07)) bbc_6845_w(space, myo-0x00, data); /* Video Controller */ |
| 611 | | if ((myo>=0x08) && (myo<=0x0f)) |
| 612 | | { |
| 613 | | if ((myo - 0x08) & 1) |
| 614 | | m_acia->control_w(space, 0, data); |
| 615 | | else |
| 616 | | m_acia->data_w(space, 0, data); |
| 617 | | } |
| 618 | | if ((myo>=0x10) && (myo<=0x17)) bbc_SerialULA_w(space, myo-0x10, data); /* Serial System Chip */ |
| 619 | | if ((myo>=0x18) && (myo<=0x1f)) m_upd7002->write(space, myo-0x18, data); /* A to D converter */ |
| 620 | | if ((myo>=0x20) && (myo<=0x23)) bbc_videoULA_w(space, myo-0x20, data); /* VideoULA */ |
| 621 | | if ((myo>=0x24) && (myo<=0x27)) bbcm_wd1770l_write(space, myo-0x24, data); /* 1770 */ |
| 622 | | if ((myo>=0x28) && (myo<=0x2f)) bbcm_wd1770_write(space, myo-0x28, data); /* disc control latch */ |
| 623 | | if ((myo>=0x30) && (myo<=0x33)) page_selectbm_w(space, myo-0x30, data); /* page select */ |
| 624 | | if ((myo>=0x34) && (myo<=0x37)) bbcm_ACCCON_write(space, myo-0x34, data); /* ACCCON */ |
| 625 | | //if ((myo>=0x38) && (myo<=0x3f)) /* NC ?? */ |
| 626 | | if ((myo>=0x40) && (myo<=0x5f)) m_via6522_0->write(space, myo-0x40, data); |
| 627 | | if ((myo>=0x60) && (myo<=0x7f)) m_via6522_1->write(space, myo-0x60, data); |
| 585 | if ((myo>=0x00) && (myo<=0x06) && (myo+0x01) & 1) m_mc6845->address_w(space, myo-0x00, data); /* Video Controller */ |
| 586 | if ((myo>=0x01) && (myo<=0x07) && (myo & 1)) m_mc6845->register_w(space, myo-0x01, data); |
| 587 | if ((myo>=0x08) && (myo<=0x0e) && (myo+0x01) & 1) if (m_acia) m_acia->control_w(space, myo-0x08, data); /* Serial controller */ |
| 588 | if ((myo>=0x09) && (myo<=0x0f) && (myo & 1)) if (m_acia) m_acia->data_w(space, myo-0x09, data); |
| 589 | if ((myo>=0x10) && (myo<=0x17)) bbc_SerialULA_w(space, myo-0x10, data); /* Serial System Chip */ |
| 590 | if ((myo>=0x18) && (myo<=0x1f) && (m_upd7002)) m_upd7002->write(space, myo-0x18, data); /* A to D converter */ |
| 591 | if ((myo>=0x20) && (myo<=0x23)) bbc_videoULA_w(space, myo-0x20, data); /* VideoULA */ |
| 592 | if ((myo>=0x24) && (myo<=0x27) && (m_wd1770)) bbcm_wd1770l_write(space, myo-0x24, data); /* disc control latch */ |
| 593 | if ((myo>=0x28) && (myo<=0x2f) && (m_wd1770)) m_wd1770->write(space, myo-0x28, data); /* 1770 Controller */ |
| 594 | if ((myo>=0x24) && (myo<=0x27) && (m_wd1772)) bbcm_wd1772l_write(space, myo-0x24, data); /* disc control latch */ |
| 595 | if ((myo>=0x28) && (myo<=0x2f) && (m_wd1772)) m_wd1772->write(space, myo-0x28, data); /* 1772 Controller */ |
| 596 | if ((myo>=0x30) && (myo<=0x33)) page_selectbm_w(space, myo-0x30, data); /* ROMSEL */ |
| 597 | if ((myo>=0x34) && (myo<=0x37)) bbcm_ACCCON_write(space, myo-0x34, data); /* ACCCON */ |
| 598 | //if ((myo>=0x38) && (myo<=0x3f)) /* NC ?? */ |
| 599 | if ((myo>=0x40) && (myo<=0x5f)) m_via6522_0->write(space, myo-0x40, data); |
| 600 | if ((myo>=0x60) && (myo<=0x7f) && (m_via6522_1)) m_via6522_1->write(space, myo-0x60, data); |
| 628 | 601 | //if ((myo>=0x80) && (myo<=0x9f)) |
| 629 | | if ((myo>=0xa0) && (myo<=0xbf)) m_adlc->write(space, myo & 0x03, data); |
| 602 | if ((myo>=0xa0) && (myo<=0xbf) && (m_adlc)) m_adlc->write(space, myo & 0x03, data); |
| 630 | 603 | //if ((myo>=0xc0) && (myo<=0xdf)) |
| 631 | 604 | //if ((myo>=0xe0) && (myo<=0xff)) |
| 632 | 605 | } |
| r249143 | r249144 | |
| 665 | 638 | normally at logic 1 with no button pressed and change to 0 |
| 666 | 639 | when a button is pressed. |
| 667 | 640 | |
| 668 | | PB6 and PB7 inputs from the speech processor |
| 669 | | -------------------------------------------- |
| 641 | PB6 and PB7 inputs from the speech processor (model B and B+) |
| 642 | ------------------------------------------------------------- |
| 670 | 643 | PB6 is the speech processor 'ready' output and PB7 is from the |
| 671 | 644 | speech processor 'interrupt' output. |
| 672 | 645 | |
| 646 | PB6 and PB7 outputs to Master CMOS RAM/RTC |
| 647 | ------------------------------------------ |
| 648 | PB6 operates the 146818 chip enable when set to '1'. PB7 operates |
| 649 | the 146818 address strobe line. |
| 650 | |
| 673 | 651 | CA1 input |
| 674 | 652 | --------- |
| 675 | 653 | This is the vertical sync input from the 6845. CA1 is set up to |
| 676 | 654 | interrupt the 6502 every 20ms (50Hz) as a vertical sync from |
| 677 | | the video circuity is detected. The operation system changes |
| 678 | | the flash colours on the display in this interrupt time so that |
| 679 | | they maintain synchronisation with the rest of the picture. |
| 655 | the video circuitry is detected. The operation system changes |
| 656 | the display flash colours on this interrupt so that they occur |
| 657 | during the screen blanking period. |
| 680 | 658 | ---------------------------------------------------------------- |
| 681 | 659 | This is required for a lot of time function within the machine |
| 682 | 660 | and must be triggered every 20ms. (Should check at some point |
| r249143 | r249144 | |
| 830 | 808 | /* This the BBC Masters Real Time Clock and NVRAM IC */ |
| 831 | 809 | void bbc_state::MC146818_set(address_space &space) |
| 832 | 810 | { |
| 833 | | logerror ("146181 WR=%d DS=%d AS=%d CE=%d \n",m_MC146818_WR,m_MC146818_DS,m_MC146818_AS,m_MC146818_CE); |
| 834 | | mc146818_device *rtc = space.machine().device<mc146818_device>("rtc"); |
| 811 | //logerror ("146181 WR=%d DS=%d AS=%d CE=%d \n",m_MC146818_WR,m_MC146818_DS,m_MC146818_AS,m_MC146818_CE); |
| 812 | //mc146818_device *rtc = space.machine().device<mc146818_device>("rtc"); |
| 835 | 813 | |
| 836 | 814 | // if chip enabled |
| 837 | 815 | if (m_MC146818_CE) |
| r249143 | r249144 | |
| 841 | 819 | { |
| 842 | 820 | if (m_MC146818_WR) |
| 843 | 821 | { |
| 844 | | m_via_system_porta=rtc->read(space, 1); |
| 822 | m_via_system_porta = m_rtc->read(space, 1); |
| 845 | 823 | //logerror("read 146818 data %d \n",m_via_system_porta); |
| 846 | 824 | } |
| 847 | 825 | else |
| 848 | 826 | { |
| 849 | | rtc->write(space, 1, m_via_system_porta); |
| 827 | m_rtc->write(space, 1, m_via_system_porta); |
| 850 | 828 | //logerror("write 146818 data %d \n",m_via_system_porta); |
| 851 | 829 | } |
| 852 | 830 | } |
| r249143 | r249144 | |
| 854 | 832 | // if address select is set then set the address in the 146818 |
| 855 | 833 | if (m_MC146818_AS) |
| 856 | 834 | { |
| 857 | | rtc->write(space, 0, m_via_system_porta); |
| 835 | m_rtc->write(space, 0, m_via_system_porta); |
| 858 | 836 | //logerror("write 146818 address %d \n",m_via_system_porta); |
| 859 | 837 | } |
| 860 | 838 | } |
| r249143 | r249144 | |
| 869 | 847 | if (m_b0_sound == 0) |
| 870 | 848 | { |
| 871 | 849 | //logerror("Doing an unsafe write to the sound chip %d \n",data); |
| 872 | | m_sn->write(space, 0, m_via_system_porta); |
| 850 | if (m_sn) m_sn->write(space, 0, m_via_system_porta); |
| 873 | 851 | } |
| 852 | if (m_b1_speech_read == 0) |
| 853 | { |
| 854 | if (m_tms) m_via_system_porta = m_tms->status_r(space, 0); |
| 855 | //logerror("Doing an unsafe read to the speech chip %d \n",m_via_system_porta); |
| 856 | } |
| 857 | if (m_b2_speech_write == 0) |
| 858 | { |
| 859 | //logerror("Doing an unsafe write to the speech chip %d \n",data); |
| 860 | if (m_tms) m_tms->data_w(space, 0, m_via_system_porta); |
| 861 | } |
| 874 | 862 | if (m_b3_keyboard == 0) |
| 875 | 863 | { |
| 876 | 864 | //logerror("Doing an unsafe write to the keyboard %d \n",data); |
| 877 | 865 | m_via_system_porta = bbc_keyboard(space, m_via_system_porta); |
| 878 | 866 | } |
| 879 | | if (m_Master) MC146818_set(space); |
| 867 | if (m_rtc) MC146818_set(space); |
| 880 | 868 | } |
| 881 | 869 | |
| 882 | 870 | |
| r249143 | r249144 | |
| 899 | 887 | } |
| 900 | 888 | break; |
| 901 | 889 | case 1: |
| 902 | | if (m_Master) |
| 890 | if (m_rtc && m_MC146818_WR == 0) |
| 903 | 891 | { |
| 904 | | if (m_MC146818_WR == 0) |
| 905 | | { |
| 906 | | /* BBC MASTER has NVRAM Here */ |
| 907 | | m_MC146818_WR = 1; |
| 908 | | MC146818_set(space); |
| 909 | | } |
| 892 | /* BBC Master has NVRAM Here */ |
| 893 | m_MC146818_WR = 1; |
| 894 | MC146818_set(space); |
| 910 | 895 | } |
| 911 | 896 | else |
| 912 | 897 | { |
| r249143 | r249144 | |
| 914 | 899 | { |
| 915 | 900 | /* VSP TMS 5220 */ |
| 916 | 901 | m_b1_speech_read = 1; |
| 902 | //logerror("Speech read select TRUE\n"); |
| 903 | if (m_tms) m_tms->rsq_w(TRUE); |
| 917 | 904 | } |
| 918 | 905 | } |
| 919 | 906 | break; |
| 920 | 907 | case 2: |
| 921 | | if (m_Master) |
| 908 | if (m_rtc && m_MC146818_DS == 0) |
| 922 | 909 | { |
| 923 | | if (m_MC146818_DS == 0) |
| 924 | | { |
| 925 | | /* BBC MASTER has NVRAM Here */ |
| 926 | | m_MC146818_DS = 1; |
| 927 | | MC146818_set(space); |
| 928 | | } |
| 910 | /* BBC Master has NVRAM Here */ |
| 911 | m_MC146818_DS = 1; |
| 912 | MC146818_set(space); |
| 929 | 913 | } |
| 930 | 914 | else |
| 931 | 915 | { |
| r249143 | r249144 | |
| 933 | 917 | { |
| 934 | 918 | /* VSP TMS 5220 */ |
| 935 | 919 | m_b2_speech_write = 1; |
| 920 | //logerror("Speech write select TRUE\n"); |
| 921 | if (m_tms) m_tms->wsq_w(TRUE); |
| 936 | 922 | } |
| 937 | 923 | } |
| 938 | 924 | break; |
| r249143 | r249144 | |
| 980 | 966 | if (m_b0_sound == 1) |
| 981 | 967 | { |
| 982 | 968 | m_b0_sound = 0; |
| 983 | | m_sn->write(space, 0, m_via_system_porta); |
| 969 | if (m_sn) m_sn->write(space, 0, m_via_system_porta); |
| 984 | 970 | } |
| 985 | 971 | break; |
| 986 | 972 | case 1: |
| 987 | | if (m_Master) |
| 973 | if (m_rtc && m_MC146818_WR == 1) |
| 988 | 974 | { |
| 989 | | if (m_MC146818_WR == 1) |
| 990 | | { |
| 991 | | /* BBC MASTER has NV RAM Here */ |
| 992 | | m_MC146818_WR = 0; |
| 993 | | MC146818_set(space); |
| 994 | | } |
| 975 | /* BBC Master has NVRAM Here */ |
| 976 | m_MC146818_WR = 0; |
| 977 | MC146818_set(space); |
| 995 | 978 | } |
| 996 | 979 | else |
| 997 | 980 | { |
| r249143 | r249144 | |
| 999 | 982 | { |
| 1000 | 983 | /* VSP TMS 5220 */ |
| 1001 | 984 | m_b1_speech_read = 0; |
| 985 | //logerror("Speech read select FALSE\n"); |
| 986 | if (m_tms) m_tms->rsq_w(FALSE); |
| 1002 | 987 | } |
| 1003 | 988 | } |
| 1004 | 989 | break; |
| 1005 | 990 | case 2: |
| 1006 | | if (m_Master) |
| 991 | if (m_rtc && m_MC146818_DS == 1) |
| 1007 | 992 | { |
| 1008 | | if (m_MC146818_DS == 1) |
| 1009 | | { |
| 1010 | | /* BBC MASTER has NV RAM Here */ |
| 1011 | | m_MC146818_DS = 0; |
| 1012 | | MC146818_set(space); |
| 1013 | | } |
| 993 | /* BBC Master has NVRAM Here */ |
| 994 | m_MC146818_DS = 0; |
| 995 | MC146818_set(space); |
| 1014 | 996 | } |
| 1015 | 997 | else |
| 1016 | 998 | { |
| r249143 | r249144 | |
| 1018 | 1000 | { |
| 1019 | 1001 | /* VSP TMS 5220 */ |
| 1020 | 1002 | m_b2_speech_write = 0; |
| 1003 | //logerror("Speech write select FALSE\n"); |
| 1004 | if (m_tms) m_tms->wsq_w(FALSE); |
| 1021 | 1005 | } |
| 1022 | 1006 | } |
| 1023 | 1007 | break; |
| r249143 | r249144 | |
| 1026 | 1010 | { |
| 1027 | 1011 | m_b3_keyboard = 0; |
| 1028 | 1012 | /* *** call keyboard enabled *** */ |
| 1029 | | m_via_system_porta=bbc_keyboard(space, m_via_system_porta); |
| 1013 | m_via_system_porta = bbc_keyboard(space, m_via_system_porta); |
| 1030 | 1014 | } |
| 1031 | 1015 | break; |
| 1032 | 1016 | case 4: |
| r249143 | r249144 | |
| 1061 | 1045 | } |
| 1062 | 1046 | |
| 1063 | 1047 | |
| 1064 | | if (m_Master) |
| 1048 | if (m_rtc) |
| 1065 | 1049 | { |
| 1066 | 1050 | //set the Address Select |
| 1067 | 1051 | if (m_MC146818_AS != ((data>>7)&1)) |
| r249143 | r249144 | |
| 1086 | 1070 | return m_via_system_porta; |
| 1087 | 1071 | } |
| 1088 | 1072 | |
| 1089 | | // D4 of portb is joystick fire button 1 |
| 1090 | | // D5 of portb is joystick fire button 2 |
| 1091 | | // D6 VSPINT |
| 1092 | | // D7 VSPRDY |
| 1093 | 1073 | |
| 1094 | | /* this is the interupt and ready signal from the BBC B Speech processor */ |
| 1095 | | static const int TMSint=1; |
| 1096 | | static const int TMSrdy=1; |
| 1097 | | |
| 1098 | | #ifdef UNUSED_FUNCTION |
| 1099 | | void bbc_state::bbc_TMSint(int status) |
| 1100 | | { |
| 1101 | | TMSint=(!status)&1; |
| 1102 | | TMSrdy=(!tms5220_readyq_r())&1; |
| 1103 | | via_0_portb_w(0,(0xf | ioport("IN0")->read()|(TMSint<<6)|(TMSrdy<<7))); |
| 1104 | | } |
| 1105 | | #endif |
| 1106 | | |
| 1107 | | |
| 1108 | 1074 | READ8_MEMBER(bbc_state::bbcb_via_system_read_portb) |
| 1109 | 1075 | { |
| 1110 | | //TMSint=(!tms5220_int_r())&1; |
| 1111 | | //TMSrdy=(!tms5220_readyq_r())&1; |
| 1112 | | |
| 1113 | | //logerror("SYSTEM read portb %d\n",0xf | input_port(machine, "IN0") | (TMSint<<6)|(TMSrdy<<7)); |
| 1114 | | |
| 1115 | | return (0xf | ioport("IN0")->read() | (TMSint<<6)|(TMSrdy<<7)); |
| 1076 | // D4 of portb is joystick fire button 1 |
| 1077 | // D5 of portb is joystick fire button 2 |
| 1078 | // D6 VSPINT |
| 1079 | // D7 VSPRDY |
| 1080 | int TMSint = m_tms ? m_tms->intq_r() : 0; |
| 1081 | int TMSrdy = m_tms ? m_tms->readyq_r() : 0; |
| 1082 | //logerror("TMSint %d\n",TMSint); |
| 1083 | //logerror("TMSrdy %d\n",TMSrdy); |
| 1084 | return (0xf | ioport("IN0")->read() | (!TMSrdy << 7) | (!TMSint << 6)); |
| 1116 | 1085 | } |
| 1117 | 1086 | |
| 1118 | 1087 | |
| r249143 | r249144 | |
| 1129 | 1098 | This means that they can only be operated as output lines. |
| 1130 | 1099 | CA1 is pulled high by a 4K7 resistor. CA1 normally acts as an acknowledge |
| 1131 | 1100 | line when a printer is used. CA2 is buffered so that it has become an open |
| 1132 | | collector output only. It usially acts as the printer strobe line. |
| 1101 | collector output only. It usually acts as the printer strobe line. |
| 1133 | 1102 | ***********************************************************************/ |
| 1134 | 1103 | |
| 1135 | 1104 | /* USER VIA 6522 port B is connected to the BBC user port */ |
| r249143 | r249144 | |
| 1430 | 1399 | update_acia_rxd(); |
| 1431 | 1400 | update_acia_dcd(); |
| 1432 | 1401 | update_acia_cts(); |
| 1433 | | BBC_Cassette_motor(m_serproc_data & 0x80); |
| 1402 | if (m_cassette) BBC_Cassette_motor(m_serproc_data & 0x80); |
| 1434 | 1403 | |
| 1435 | 1404 | // Set transmit clock rate |
| 1436 | 1405 | m_acia_clock->set_clock_scale( (double) 1 / serial_clocks[ data & 0x07 ] ); |
| r249143 | r249144 | |
| 1463 | 1432 | { |
| 1464 | 1433 | /* I'll pulse it because if I used hold-line I'm not sure |
| 1465 | 1434 | it would clear - to be checked */ |
| 1466 | | m_maincpu->set_input_line(INPUT_LINE_NMI,PULSE_LINE); |
| 1435 | m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); |
| 1467 | 1436 | } |
| 1468 | 1437 | } |
| 1469 | 1438 | |
| r249143 | r249144 | |
| 1471 | 1440 | } |
| 1472 | 1441 | |
| 1473 | 1442 | |
| 1474 | | READ8_MEMBER(bbc_state::bbc_i8271_read) |
| 1475 | | { |
| 1476 | | int ret; |
| 1477 | | logerror("i8271 read %d ",offset); |
| 1478 | | switch (offset) |
| 1479 | | { |
| 1480 | | case 0: |
| 1481 | | case 1: |
| 1482 | | case 2: |
| 1483 | | case 3: |
| 1484 | | /* 8271 registers */ |
| 1485 | | ret=m_i8271->read(space, offset); |
| 1486 | | logerror(" %d\n",ret); |
| 1487 | | break; |
| 1488 | | case 4: |
| 1489 | | ret=m_i8271->data_r(space, offset); |
| 1490 | | logerror(" %d\n",ret); |
| 1491 | | break; |
| 1492 | | default: |
| 1493 | | ret=0x0ff; |
| 1494 | | break; |
| 1495 | | } |
| 1496 | | logerror(" void\n"); |
| 1497 | | return ret; |
| 1498 | | } |
| 1499 | | |
| 1500 | | WRITE8_MEMBER(bbc_state::bbc_i8271_write) |
| 1501 | | { |
| 1502 | | logerror("i8271 write %d %d\n",offset,data); |
| 1503 | | |
| 1504 | | switch (offset) |
| 1505 | | { |
| 1506 | | case 0: |
| 1507 | | case 1: |
| 1508 | | case 2: |
| 1509 | | case 3: |
| 1510 | | /* 8271 registers */ |
| 1511 | | m_i8271->write(space, offset, data); |
| 1512 | | return; |
| 1513 | | case 4: |
| 1514 | | m_i8271->data_w(space, offset, data); |
| 1515 | | return; |
| 1516 | | default: |
| 1517 | | break; |
| 1518 | | } |
| 1519 | | } |
| 1520 | | |
| 1521 | | |
| 1522 | | |
| 1523 | 1443 | /************************************** |
| 1524 | 1444 | WD1770 disc control function |
| 1525 | 1445 | ***************************************/ |
| r249143 | r249144 | |
| 1543 | 1463 | density select |
| 1544 | 1464 | single density is as the 8271 disc format |
| 1545 | 1465 | double density is as the 8271 disc format but with 16 sectors per track |
| 1546 | | |
| 1547 | | At some point we need to check the size of the disc image to work out if it is a single or double |
| 1548 | | density disc image |
| 1549 | 1466 | */ |
| 1550 | 1467 | |
| 1551 | 1468 | |
| r249143 | r249144 | |
| 1566 | 1483 | int bbc_state; |
| 1567 | 1484 | |
| 1568 | 1485 | /* if drq or irq is set, and interrupt is enabled */ |
| 1569 | | if ((m_wd177x_irq_state || m_wd177x_drq_state) && (m_1770_IntEnabled)) |
| 1486 | if ((m_wd177x_irq_state || m_wd177x_drq_state) && (m_177x_IntEnabled)) |
| 1570 | 1487 | { |
| 1571 | 1488 | /* int trigger */ |
| 1572 | 1489 | bbc_state = 1; |
| r249143 | r249144 | |
| 1576 | 1493 | /* do not trigger int */ |
| 1577 | 1494 | bbc_state = 0; |
| 1578 | 1495 | } |
| 1579 | | //printf("bbc_state %d prev %d\n", bbc_state, m_previous_wd177x_int_state); |
| 1580 | 1496 | /* nmi is edge triggered, and triggers when the state goes from clear->set. |
| 1581 | 1497 | Here we are checking this transition before triggering the nmi */ |
| 1582 | | if (bbc_state!=m_previous_wd177x_int_state) |
| 1498 | if (bbc_state != m_previous_wd177x_int_state) |
| 1583 | 1499 | { |
| 1584 | 1500 | if (bbc_state) |
| 1585 | 1501 | { |
| r249143 | r249144 | |
| 1594 | 1510 | |
| 1595 | 1511 | WRITE_LINE_MEMBER(bbc_state::bbc_wd177x_intrq_w) |
| 1596 | 1512 | { |
| 1597 | | //printf("bbc_wd177x_intrq_w %d \n", state); |
| 1598 | 1513 | m_wd177x_irq_state = state; |
| 1599 | 1514 | bbc_update_fdq_int(state); |
| 1600 | 1515 | } |
| r249143 | r249144 | |
| 1605 | 1520 | bbc_update_fdq_int(state); |
| 1606 | 1521 | } |
| 1607 | 1522 | |
| 1608 | | WRITE8_MEMBER(bbc_state::bbc_wd177x_status_w) |
| 1523 | WRITE8_MEMBER(bbc_state::bbc_wd1770_status_w) |
| 1609 | 1524 | { |
| 1610 | | wd1770_t *fdc = machine().device<wd1770_t>("wd177x"); |
| 1611 | | floppy_image_device *floppy0 = machine().device<floppy_connector>("wd177x:0")->get_device(); |
| 1612 | | floppy_image_device *floppy1 = machine().device<floppy_connector>("wd177x:1")->get_device(); |
| 1613 | 1525 | floppy_image_device *floppy = NULL; |
| 1614 | 1526 | |
| 1615 | 1527 | m_drive_control = data; |
| 1528 | logerror("Drive control %d \n", data); |
| 1616 | 1529 | |
| 1530 | // bit 5: reset |
| 1531 | if (!BIT(data, 5)) m_wd1770->reset(); |
| 1532 | |
| 1617 | 1533 | // bit 0, 1: drive select |
| 1618 | | if (BIT(data, 0)) floppy = floppy0; |
| 1619 | | if (BIT(data, 1)) floppy = floppy1; |
| 1534 | if (BIT(data, 0)) floppy = m_wd1770->subdevice<floppy_connector>("0")->get_device(); |
| 1535 | if (BIT(data, 1)) floppy = m_wd1770->subdevice<floppy_connector>("1")->get_device(); |
| 1536 | m_wd1770->set_floppy(floppy); |
| 1620 | 1537 | |
| 1621 | | fdc->set_floppy(floppy); |
| 1622 | | |
| 1623 | 1538 | // bit 2: side select |
| 1624 | 1539 | if (floppy) |
| 1625 | 1540 | floppy->ss_w(BIT(data, 2)); |
| 1626 | 1541 | |
| 1627 | 1542 | // bit 3: density |
| 1628 | | fdc->dden_w(BIT(data, 3)); |
| 1543 | m_wd1770->dden_w(BIT(data, 3)); |
| 1629 | 1544 | |
| 1630 | 1545 | // bit 4: interrupt enable |
| 1631 | | m_1770_IntEnabled = !BIT(data, 4); |
| 1546 | m_177x_IntEnabled = !BIT(data, 4); |
| 1632 | 1547 | } |
| 1633 | 1548 | |
| 1549 | /*************************************** |
| 1550 | BBC MASTER DISC SUPPORT |
| 1551 | ***************************************/ |
| 1634 | 1552 | |
| 1635 | | |
| 1636 | | READ8_MEMBER(bbc_state::bbc_wd1770_read) |
| 1553 | READ8_MEMBER(bbc_state::bbcm_wd177xl_read) |
| 1637 | 1554 | { |
| 1638 | | int retval=0xff; |
| 1639 | | wd1770_t *fdc = machine().device<wd1770_t>("wd177x"); |
| 1640 | | switch (offset) |
| 1641 | | { |
| 1642 | | case 4: |
| 1643 | | retval=fdc->status_r(space, 0); |
| 1644 | | break; |
| 1645 | | case 5: |
| 1646 | | retval=fdc->track_r(space, 0); |
| 1647 | | break; |
| 1648 | | case 6: |
| 1649 | | retval=fdc->sector_r(space, 0); |
| 1650 | | break; |
| 1651 | | case 7: |
| 1652 | | retval=fdc->data_r(space, 0); |
| 1653 | | break; |
| 1654 | | default: |
| 1655 | | break; |
| 1656 | | } |
| 1657 | | //logerror("wd177x read: $%02X $%02X\n", offset,retval); |
| 1658 | | |
| 1659 | | return retval; |
| 1555 | return m_drive_control; |
| 1660 | 1556 | } |
| 1661 | 1557 | |
| 1662 | | WRITE8_MEMBER(bbc_state::bbc_wd1770_write) |
| 1558 | WRITE8_MEMBER(bbc_state::bbcm_wd1770l_write) |
| 1663 | 1559 | { |
| 1664 | | wd1770_t *fdc = machine().device<wd1770_t>("wd177x"); |
| 1665 | | //logerror("wd177x write: $%02X $%02X\n", offset,data); |
| 1666 | | switch (offset) |
| 1667 | | { |
| 1668 | | case 0: |
| 1669 | | bbc_wd177x_status_w(space, 0, data); |
| 1670 | | break; |
| 1671 | | case 4: |
| 1672 | | fdc->cmd_w(space, 0, data); |
| 1673 | | break; |
| 1674 | | case 5: |
| 1675 | | fdc->track_w(space, 0, data); |
| 1676 | | break; |
| 1677 | | case 6: |
| 1678 | | fdc->sector_w(space, 0, data); |
| 1679 | | break; |
| 1680 | | case 7: |
| 1681 | | fdc->data_w(space, 0, data); |
| 1682 | | break; |
| 1683 | | default: |
| 1684 | | break; |
| 1685 | | } |
| 1686 | | } |
| 1687 | | |
| 1688 | | |
| 1689 | | /********************************************* |
| 1690 | | OPUS CHALLENGER MEMORY MAP |
| 1691 | | Read Write |
| 1692 | | |
| 1693 | | &FCF8 1770 Status register 1770 command register |
| 1694 | | &FCF9 1770 track register |
| 1695 | | &FCFA 1770 sector register |
| 1696 | | &FCFB 1770 data register |
| 1697 | | &FCFC 1770 drive control |
| 1698 | | |
| 1699 | | |
| 1700 | | drive control register bits |
| 1701 | | 0 select side 0= side 0 1= side 1 |
| 1702 | | 1 select drive 0 |
| 1703 | | 2 select drive 1 |
| 1704 | | 3 ?unused? |
| 1705 | | 4 ?Always Set |
| 1706 | | 5 Density Select 0=double, 1=single |
| 1707 | | 6 ?unused? |
| 1708 | | 7 ?unused? |
| 1709 | | |
| 1710 | | The RAM is accessible through JIM (page &FD). One page is visible in JIM at a time. |
| 1711 | | The selected page is controlled by the two paging registers: |
| 1712 | | |
| 1713 | | &FCFE Paging register MSB |
| 1714 | | &FCFF Paging register LSB |
| 1715 | | |
| 1716 | | 256K model has 1024 pages &000 to &3ff |
| 1717 | | 512K model has 2048 pages &000 to &7ff |
| 1718 | | |
| 1719 | | AM_RANGE(0xfc00, 0xfdff) AM_READWRITE(bbc_opus_read , bbc_opus_write ) |
| 1720 | | |
| 1721 | | |
| 1722 | | **********************************************/ |
| 1723 | | |
| 1724 | | |
| 1725 | | WRITE8_MEMBER(bbc_state::bbc_opus_status_w) |
| 1726 | | { |
| 1727 | | wd1770_t *fdc = machine().device<wd1770_t>("wd177x"); |
| 1728 | | floppy_image_device *floppy0 = machine().device<floppy_connector>("wd177x:0")->get_device(); |
| 1729 | | floppy_image_device *floppy1 = machine().device<floppy_connector>("wd177x:1")->get_device(); |
| 1730 | 1560 | floppy_image_device *floppy = NULL; |
| 1731 | 1561 | |
| 1732 | 1562 | m_drive_control = data; |
| 1563 | //logerror("Drive control %d \n", data); |
| 1733 | 1564 | |
| 1734 | | // bit 1, 2: drive select |
| 1735 | | if (BIT(data, 1)) floppy = floppy0; |
| 1736 | | if (BIT(data, 2)) floppy = floppy1; |
| 1565 | // bit 2: reset |
| 1566 | if (!BIT(data, 5)) m_wd1770->reset(); |
| 1737 | 1567 | |
| 1738 | | fdc->set_floppy(floppy); |
| 1568 | // bit 0, 1, 3: drive select |
| 1569 | if (BIT(data, 0)) floppy = m_wd1770->subdevice<floppy_connector>("0")->get_device(); |
| 1570 | if (BIT(data, 1)) floppy = m_wd1770->subdevice<floppy_connector>("1")->get_device(); |
| 1571 | if (BIT(data, 3)) floppy = m_wd1770->subdevice<floppy_connector>("2")->get_device(); |
| 1572 | m_wd1770->set_floppy(floppy); |
| 1739 | 1573 | |
| 1740 | | // bit 0: side select |
| 1574 | // bit 4: side select |
| 1741 | 1575 | if (floppy) |
| 1742 | | floppy->ss_w(BIT(data, 0)); |
| 1576 | floppy->ss_w(BIT(data, 4)); |
| 1743 | 1577 | |
| 1744 | 1578 | // bit 5: density |
| 1745 | | fdc->dden_w(BIT(data, 5)); |
| 1579 | m_wd1770->dden_w(BIT(data, 5)); |
| 1746 | 1580 | |
| 1747 | | // bit 4: interrupt enable |
| 1748 | | m_1770_IntEnabled = BIT(data, 4); |
| 1581 | m_177x_IntEnabled = 1; |
| 1749 | 1582 | } |
| 1750 | 1583 | |
| 1751 | | READ8_MEMBER(bbc_state::bbc_opus_read) |
| 1584 | WRITE8_MEMBER(bbc_state::bbcm_wd1772l_write) |
| 1752 | 1585 | { |
| 1753 | | wd1770_t *fdc = machine().device<wd1770_t>("wd177x"); |
| 1754 | | //logerror("wd177x read: $%02X\n", offset); |
| 1755 | | |
| 1756 | | if (m_DFSType==6) |
| 1757 | | { |
| 1758 | | if (offset<0x100) |
| 1759 | | { |
| 1760 | | switch (offset) |
| 1761 | | { |
| 1762 | | case 0xf8: |
| 1763 | | return fdc->status_r(space, 0); |
| 1764 | | case 0xf9: |
| 1765 | | return fdc->track_r(space, 0); |
| 1766 | | case 0xfa: |
| 1767 | | return fdc->sector_r(space, 0); |
| 1768 | | case 0xfb: |
| 1769 | | return fdc->data_r(space, 0); |
| 1770 | | } |
| 1771 | | } |
| 1772 | | else |
| 1773 | | { |
| 1774 | | return memregion("disks")->base()[offset + (m_opusbank << 8)]; |
| 1775 | | } |
| 1776 | | } |
| 1777 | | return 0xff; |
| 1778 | | } |
| 1779 | | |
| 1780 | | WRITE8_MEMBER(bbc_state::bbc_opus_write) |
| 1781 | | { |
| 1782 | | wd1770_t *fdc = machine().device<wd1770_t>("wd177x"); |
| 1783 | | //logerror("wd177x write: $%02X $%02X\n", offset,data); |
| 1784 | | |
| 1785 | | if (m_DFSType==6) |
| 1786 | | { |
| 1787 | | if (offset<0x100) |
| 1788 | | { |
| 1789 | | switch (offset) |
| 1790 | | { |
| 1791 | | case 0xf8: |
| 1792 | | fdc->cmd_w(space, 0, data); |
| 1793 | | break; |
| 1794 | | case 0xf9: |
| 1795 | | fdc->track_w(space, 0, data); |
| 1796 | | break; |
| 1797 | | case 0xfa: |
| 1798 | | fdc->sector_w(space, 0, data); |
| 1799 | | break; |
| 1800 | | case 0xfb: |
| 1801 | | fdc->data_w(space, 0, data); |
| 1802 | | break; |
| 1803 | | case 0xfc: |
| 1804 | | bbc_opus_status_w(space, 0,data); |
| 1805 | | break; |
| 1806 | | case 0xfe: |
| 1807 | | m_opusbank=(m_opusbank & 0xff) | (data<<8); |
| 1808 | | break; |
| 1809 | | case 0xff: |
| 1810 | | m_opusbank=(m_opusbank & 0xff00) | data; |
| 1811 | | break; |
| 1812 | | } |
| 1813 | | } |
| 1814 | | else |
| 1815 | | { |
| 1816 | | memregion("disks")->base()[offset + (m_opusbank << 8)] = data; |
| 1817 | | } |
| 1818 | | } |
| 1819 | | } |
| 1820 | | |
| 1821 | | |
| 1822 | | /*************************************** |
| 1823 | | BBC MASTER DISC SUPPORT |
| 1824 | | ***************************************/ |
| 1825 | | |
| 1826 | | |
| 1827 | | READ8_MEMBER(bbc_state::bbcm_wd1770_read) |
| 1828 | | { |
| 1829 | | int retval=0xff; |
| 1830 | | wd1770_t *fdc = machine().device<wd1770_t>("wd177x"); |
| 1831 | | switch (offset) |
| 1832 | | { |
| 1833 | | case 0: |
| 1834 | | retval=fdc->status_r(space, 0); |
| 1835 | | break; |
| 1836 | | case 1: |
| 1837 | | retval=fdc->track_r(space, 0); |
| 1838 | | break; |
| 1839 | | case 2: |
| 1840 | | retval=fdc->sector_r(space, 0); |
| 1841 | | break; |
| 1842 | | case 3: |
| 1843 | | retval=fdc->data_r(space, 0); |
| 1844 | | break; |
| 1845 | | default: |
| 1846 | | break; |
| 1847 | | } |
| 1848 | | return retval; |
| 1849 | | } |
| 1850 | | |
| 1851 | | |
| 1852 | | WRITE8_MEMBER(bbc_state::bbcm_wd1770_write) |
| 1853 | | { |
| 1854 | | wd1770_t *fdc = machine().device<wd1770_t>("wd177x"); |
| 1855 | | //logerror("wd177x write: $%02X $%02X\n", offset,data); |
| 1856 | | switch (offset) |
| 1857 | | { |
| 1858 | | case 0: |
| 1859 | | fdc->cmd_w(space, 0, data); |
| 1860 | | break; |
| 1861 | | case 1: |
| 1862 | | fdc->track_w(space, 0, data); |
| 1863 | | break; |
| 1864 | | case 2: |
| 1865 | | fdc->sector_w(space, 0, data); |
| 1866 | | break; |
| 1867 | | case 3: |
| 1868 | | fdc->data_w(space, 0, data); |
| 1869 | | break; |
| 1870 | | default: |
| 1871 | | break; |
| 1872 | | } |
| 1873 | | } |
| 1874 | | |
| 1875 | | |
| 1876 | | READ8_MEMBER(bbc_state::bbcm_wd1770l_read) |
| 1877 | | { |
| 1878 | | return m_drive_control; |
| 1879 | | } |
| 1880 | | |
| 1881 | | WRITE8_MEMBER(bbc_state::bbcm_wd1770l_write) |
| 1882 | | { |
| 1883 | | wd1770_t *fdc = machine().device<wd1770_t>("wd177x"); |
| 1884 | | floppy_image_device *floppy0 = machine().device<floppy_connector>("wd177x:0")->get_device(); |
| 1885 | | floppy_image_device *floppy1 = machine().device<floppy_connector>("wd177x:1")->get_device(); |
| 1886 | 1586 | floppy_image_device *floppy = NULL; |
| 1887 | 1587 | |
| 1888 | 1588 | m_drive_control = data; |
| 1589 | //logerror("Drive control %d \n", data); |
| 1889 | 1590 | |
| 1890 | | // bit 0, 1: drive select |
| 1891 | | if (BIT(data, 0)) floppy = floppy0; |
| 1892 | | if (BIT(data, 1)) floppy = floppy1; |
| 1591 | // bit 2: reset |
| 1592 | if (!BIT(data, 5)) m_wd1772->reset(); |
| 1893 | 1593 | |
| 1594 | // bit 0, 1, 3: drive select |
| 1595 | if (BIT(data, 0)) floppy = m_wd1772->subdevice<floppy_connector>("0")->get_device(); |
| 1596 | if (BIT(data, 1)) floppy = m_wd1772->subdevice<floppy_connector>("1")->get_device(); |
| 1597 | if (BIT(data, 3)) floppy = m_wd1772->subdevice<floppy_connector>("2")->get_device(); |
| 1598 | m_wd1772->set_floppy(floppy); |
| 1599 | |
| 1894 | 1600 | // bit 4: side select |
| 1895 | 1601 | if (floppy) |
| 1896 | 1602 | floppy->ss_w(BIT(data, 4)); |
| 1897 | 1603 | |
| 1898 | 1604 | // bit 5: density |
| 1899 | | fdc->dden_w(BIT(data, 5)); |
| 1605 | m_wd1772->dden_w(BIT(data, 5)); |
| 1900 | 1606 | |
| 1901 | | // m_1770_IntEnabled=(((data>>4) & 0x01)==0); |
| 1902 | | m_1770_IntEnabled=1; |
| 1607 | m_177x_IntEnabled = 1; |
| 1903 | 1608 | } |
| 1904 | 1609 | |
| 1905 | | |
| 1906 | 1610 | /************************************** |
| 1907 | | DFS Hardware mapping for different Disc Controller types |
| 1908 | | ***************************************/ |
| 1909 | | |
| 1910 | | READ8_MEMBER(bbc_state::bbc_disc_r) |
| 1911 | | { |
| 1912 | | switch (m_DFSType){ |
| 1913 | | /* case 0 to 3 are all standard 8271 interfaces */ |
| 1914 | | case 0: case 1: case 2: case 3: |
| 1915 | | return bbc_i8271_read(space, offset); |
| 1916 | | /* case 4 is the acorn 1770 interface */ |
| 1917 | | case 4: |
| 1918 | | return bbc_wd1770_read(space, offset); |
| 1919 | | /* case 5 is the watford 1770 interface */ |
| 1920 | | case 5: |
| 1921 | | return bbc_wd1770_read(space, offset); |
| 1922 | | /* case 6 is the Opus challenger interface */ |
| 1923 | | case 6: |
| 1924 | | /* not connected here, opus drive is connected via the 1MHz Bus */ |
| 1925 | | break; |
| 1926 | | /* case 7 in no disc controller */ |
| 1927 | | case 7: |
| 1928 | | break; |
| 1929 | | } |
| 1930 | | return 0x0ff; |
| 1931 | | } |
| 1932 | | |
| 1933 | | WRITE8_MEMBER(bbc_state::bbc_disc_w) |
| 1934 | | { |
| 1935 | | switch (m_DFSType){ |
| 1936 | | /* case 0 to 3 are all standard 8271 interfaces */ |
| 1937 | | case 0: case 1: case 2: case 3: |
| 1938 | | bbc_i8271_write(space, offset,data); |
| 1939 | | break; |
| 1940 | | /* case 4 is the acorn 1770 interface */ |
| 1941 | | case 4: |
| 1942 | | bbc_wd1770_write(space, offset,data); |
| 1943 | | break; |
| 1944 | | /* case 5 is the watford 1770 interface */ |
| 1945 | | case 5: |
| 1946 | | bbc_wd1770_write(space, offset,data); |
| 1947 | | break; |
| 1948 | | /* case 6 is the Opus challenger interface */ |
| 1949 | | case 6: |
| 1950 | | /* not connected here, opus drive is connected via the 1MHz Bus */ |
| 1951 | | break; |
| 1952 | | /* case 7 in no disc controller */ |
| 1953 | | case 7: |
| 1954 | | break; |
| 1955 | | } |
| 1956 | | } |
| 1957 | | |
| 1958 | | |
| 1959 | | |
| 1960 | | /************************************** |
| 1961 | 1611 | BBC B Rom loading functions |
| 1962 | 1612 | ***************************************/ |
| 1963 | 1613 | |
| r249143 | r249144 | |
| 2023 | 1673 | |
| 2024 | 1674 | DRIVER_INIT_MEMBER(bbc_state,bbc) |
| 2025 | 1675 | { |
| 2026 | | m_Master=0; |
| 2027 | 1676 | m_rxd_cass = 0; |
| 2028 | 1677 | m_nr_high_tones = 0; |
| 2029 | 1678 | m_serproc_data = 0; |
| r249143 | r249144 | |
| 2037 | 1686 | m_via6522_0->write_cb2(1); |
| 2038 | 1687 | } |
| 2039 | 1688 | |
| 2040 | | DRIVER_INIT_MEMBER(bbc_state,bbcm) |
| 2041 | | { |
| 2042 | | m_Master=1; |
| 2043 | | m_rxd_cass = 0; |
| 2044 | | m_nr_high_tones = 0; |
| 2045 | | m_serproc_data = 0; |
| 2046 | | m_cass_out_enabled = 0; |
| 2047 | | m_tape_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(bbc_state::bbc_tape_timer_cb),this)); |
| 2048 | | |
| 2049 | | /* vertical sync pulse from video circuit */ |
| 2050 | | m_via6522_0->write_ca1(1); |
| 2051 | | |
| 2052 | | /* light pen strobe detect (not emulated) */ |
| 2053 | | m_via6522_0->write_cb2(1); |
| 2054 | | } |
| 2055 | | |
| 2056 | 1689 | // setup pointers for optional EPROMs |
| 2057 | 1690 | void bbc_state::bbc_setup_banks(memory_bank *membank, int banks, UINT32 shift, UINT32 size) |
| 2058 | 1691 | { |
| r249143 | r249144 | |
| 2076 | 1709 | else |
| 2077 | 1710 | eprom[3] = m_region_opt->base() + 0xc000 + shift; |
| 2078 | 1711 | |
| 2079 | | membank->configure_entries(0, 1, eprom[0], size); |
| 2080 | | membank->configure_entries(1, 1, eprom[1], size); |
| 2081 | | membank->configure_entries(2, 1, eprom[2], size); |
| 2082 | | membank->configure_entries(3, 1, eprom[3], size); |
| 1712 | membank->configure_entries(0, 1, eprom[0], size); |
| 1713 | membank->configure_entries(1, 1, eprom[1], size); |
| 1714 | membank->configure_entries(2, 1, eprom[2], size); |
| 1715 | membank->configure_entries(3, 1, eprom[3], size); |
| 2083 | 1716 | |
| 2084 | 1717 | if (banks > 4) |
| 2085 | 1718 | { |
| r249143 | r249144 | |
| 2102 | 1735 | else |
| 2103 | 1736 | eprom[1] = m_region_opt->base() + 0x8000 + shift; |
| 2104 | 1737 | |
| 2105 | | membank->configure_entries(0, 1, eprom[0], size); |
| 2106 | | membank->configure_entries(1, 1, eprom[0] + 0x4000, size); |
| 2107 | | membank->configure_entries(2, 1, eprom[1], size); |
| 2108 | | membank->configure_entries(3, 1, eprom[1] + 0x4000, size); |
| 1738 | membank->configure_entries(0, 1, eprom[0], size); |
| 1739 | membank->configure_entries(1, 1, eprom[0] + 0x4000, size); |
| 1740 | membank->configure_entries(2, 1, eprom[1], size); |
| 1741 | membank->configure_entries(3, 1, eprom[1] + 0x4000, size); |
| 2109 | 1742 | |
| 2110 | 1743 | if (banks > 4) |
| 2111 | 1744 | { |
| r249143 | r249144 | |
| 2149 | 1782 | m_previous_i8271_int_state=0; |
| 2150 | 1783 | m_previous_wd177x_int_state=1; |
| 2151 | 1784 | bbc_setup_banks(m_bank4, 16, 0, 0x4000); |
| 2152 | | if (m_region_dfs) |
| 2153 | | m_bank4->configure_entries(16, 8, m_region_dfs->base(), 0x4000); // additional bank for paged ram |
| 2154 | 1785 | } |
| 2155 | 1786 | |
| 2156 | 1787 | MACHINE_RESET_MEMBER(bbc_state, bbcb) |
| 2157 | 1788 | { |
| 2158 | 1789 | UINT8 *RAM = m_region_maincpu->base(); |
| 2159 | | m_DFSType= (ioport("BBCCONFIG")->read() >> 0) & 0x07; |
| 1790 | m_Speech = (ioport("BBCCONFIG")->read() >> 0) & 0x01; |
| 2160 | 1791 | m_SWRAMtype = (ioport("BBCCONFIG")->read() >> 3) & 0x03; |
| 2161 | 1792 | m_bank1->set_base(RAM); |
| 2162 | 1793 | m_bank3->set_base(RAM + 0x4000); |
| r249143 | r249144 | |
| 2166 | 1797 | m_bank7->set_base(m_region_os->base()); /* bank 7 points at the OS rom from c000 to ffff */ |
| 2167 | 1798 | |
| 2168 | 1799 | bbcb_IC32_initialise(this); |
| 2169 | | |
| 2170 | | m_opusbank = 0; |
| 2171 | 1800 | } |
| 2172 | 1801 | |
| 2173 | 1802 | |
| r249143 | r249144 | |
| 2184 | 1813 | |
| 2185 | 1814 | MACHINE_RESET_MEMBER(bbc_state, bbcbp) |
| 2186 | 1815 | { |
| 1816 | m_Speech = 1; |
| 2187 | 1817 | m_bank1->set_base(m_region_maincpu->base()); |
| 2188 | 1818 | m_bank2->set_base(m_region_maincpu->base() + 0x03000); /* bank 2 screen/shadow ram from 3000 to 7fff */ |
| 2189 | 1819 | m_bank4->set_entry(0); |
| 2190 | 1820 | m_bank6->set_entry(0); |
| 2191 | | m_bank7->set_base(m_region_os->base()); /* bank 7 points at the OS rom from c000 to ffff */ |
| 1821 | m_bank7->set_base(m_region_os->base()); /* bank 7 points at the OS rom from c000 to ffff */ |
| 2192 | 1822 | |
| 2193 | 1823 | bbcb_IC32_initialise(this); |
| 2194 | 1824 | |
| r249143 | r249144 | |
| 2217 | 1847 | m_bank2->set_base(m_region_maincpu->base() + 0x3000); /* bank 2 screen/shadow ram from 3000 to 7fff */ |
| 2218 | 1848 | m_bank4->set_entry(0); |
| 2219 | 1849 | m_bank5->set_entry(0); |
| 2220 | | m_bank7->set_base(m_region_os->base()); /* bank 6 OS rom of RAM from c000 to dfff */ |
| 1850 | m_bank7->set_base(m_region_os->base()); /* bank 6 OS rom of RAM from c000 to dfff */ |
| 2221 | 1851 | |
| 2222 | 1852 | bbcb_IC32_initialise(this); |
| 2223 | 1853 | |