trunk/src/mess/drivers/spectrum.c
| r32386 | r32387 | |
| 622 | 622 | { |
| 623 | 623 | m_port_7ffd_data = -1; |
| 624 | 624 | m_port_1ffd_data = -1; |
| 625 | |
| 626 | if (m_cart && m_cart->exists()) |
| 627 | m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x3fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart)); |
| 625 | 628 | } |
| 626 | 629 | |
| 627 | 630 | /* F4 Character Displayer */ |
| r32386 | r32387 | |
| 648 | 651 | device.execute().set_input_line(0, HOLD_LINE); |
| 649 | 652 | } |
| 650 | 653 | |
| 651 | | DEVICE_IMAGE_LOAD_MEMBER( spectrum_state,spectrum_cart ) |
| 654 | DEVICE_IMAGE_LOAD_MEMBER(spectrum_state, spectrum_cart) |
| 652 | 655 | { |
| 653 | | UINT32 filesize; |
| 654 | | |
| 655 | | if (image.software_entry() == NULL) |
| 656 | UINT32 size = m_cart->common_get_size("rom"); |
| 657 | |
| 658 | if (size != 0x4000) |
| 656 | 659 | { |
| 657 | | filesize = image.length(); |
| 658 | | |
| 659 | | if (filesize != 0x4000 ) |
| 660 | | { |
| 661 | | image.seterror(IMAGE_ERROR_UNSPECIFIED, "Incorrect or not support cartridge size"); |
| 662 | | return IMAGE_INIT_FAIL; |
| 663 | | } |
| 664 | | |
| 665 | | if (image.fread(memregion("maincpu")->base(), filesize) != filesize) |
| 666 | | { |
| 667 | | image.seterror(IMAGE_ERROR_UNSPECIFIED, "Error loading file"); |
| 668 | | return IMAGE_INIT_FAIL; |
| 669 | | } |
| 660 | image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported cartridge size"); |
| 661 | return IMAGE_INIT_FAIL; |
| 670 | 662 | } |
| 671 | | else |
| 672 | | { |
| 673 | | filesize = image.get_software_region_length("rom"); |
| 674 | | memcpy(memregion("maincpu")->base(), image.get_software_region("rom"), filesize); |
| 675 | | } |
| 663 | |
| 664 | m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE); |
| 665 | m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom"); |
| 666 | |
| 676 | 667 | return IMAGE_INIT_PASS; |
| 677 | 668 | } |
| 678 | 669 | |
| r32386 | r32387 | |
| 720 | 711 | MCFG_SOFTWARE_LIST_ADD("cass_list","spectrum_cass") |
| 721 | 712 | |
| 722 | 713 | /* cartridge */ |
| 723 | | MCFG_CARTSLOT_ADD("cart") |
| 724 | | MCFG_CARTSLOT_EXTENSION_LIST("rom") |
| 725 | | MCFG_CARTSLOT_NOT_MANDATORY |
| 726 | | MCFG_CARTSLOT_LOAD(spectrum_state,spectrum_cart) |
| 727 | | MCFG_CARTSLOT_INTERFACE("spectrum_cart") |
| 714 | MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "spectrum_cart") |
| 715 | MCFG_GENERIC_EXTENSIONS("bin,rom") |
| 716 | MCFG_GENERIC_LOAD(spectrum_state, spectrum_cart) |
| 717 | |
| 728 | 718 | MCFG_SOFTWARE_LIST_ADD("cart_list","spectrum") |
| 729 | 719 | MACHINE_CONFIG_END |
| 730 | 720 | |
| r32386 | r32387 | |
| 783 | 773 | ROMX_LOAD("isomoje.rom",0x0000,0x4000, CRC(62ab3640) SHA1(04adbdb1380d6ccd4ab26ddd61b9ccbba462a60f), ROM_BIOS(18)) |
| 784 | 774 | ROM_SYSTEM_BIOS(18, "iso8", "ISO ROM 8") |
| 785 | 775 | ROMX_LOAD("iso8bm.rom",0x0000,0x4000, CRC(43e9c2fd) SHA1(5752e6f789769475711b91e0a75911fa5232c767), ROM_BIOS(19)) |
| 786 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 787 | 776 | ROM_END |
| 788 | 777 | |
| 789 | 778 | ROM_START(specide) |
| 790 | 779 | ROM_REGION(0x10000,"maincpu",0) |
| 791 | 780 | ROM_LOAD("zxide.rom", 0x0000, 0x4000, CRC(bd48db54) SHA1(54c2aa958902b5395c260770a0b25c7ba5685de9)) |
| 792 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 793 | 781 | ROM_END |
| 794 | 782 | |
| 795 | 783 | ROM_START(spec80k) |
| 796 | 784 | ROM_REGION(0x10000,"maincpu",0) |
| 797 | 785 | ROM_LOAD("80-lec.rom", 0x0000, 0x4000, CRC(5b5c92b1) SHA1(bb7a77d66e95d2e28ebb610e543c065e0d428619)) |
| 798 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 799 | 786 | ROM_END |
| 800 | 787 | |
| 801 | 788 | ROM_START(tk90x) |
| 802 | 789 | ROM_REGION(0x10000,"maincpu",0) |
| 803 | 790 | ROM_LOAD("tk90x.rom",0x0000,0x4000, CRC(3e785f6f) SHA1(9a943a008be13194fb006bddffa7d22d2277813f)) |
| 804 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 805 | 791 | ROM_END |
| 806 | 792 | |
| 807 | 793 | ROM_START(tk95) |
| 808 | 794 | ROM_REGION(0x10000,"maincpu",0) |
| 809 | 795 | ROM_LOAD("tk95.rom",0x0000,0x4000, CRC(17368e07) SHA1(94edc401d43b0e9a9cdc1d35de4b6462dc414ab3)) |
| 810 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 811 | 796 | ROM_END |
| 812 | 797 | |
| 813 | 798 | ROM_START(inves) |
| 814 | 799 | ROM_REGION(0x10000,"maincpu",0) |
| 815 | 800 | ROM_LOAD("inves.rom",0x0000,0x4000, CRC(8ff7a4d1) SHA1(d020440638aff4d39467128413ef795677be9c23)) |
| 816 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 817 | 801 | ROM_END |
| 818 | 802 | |
| 819 | 803 | /* Romanian clones */ |
| 820 | 804 | ROM_START(hc85) |
| 821 | 805 | ROM_REGION(0x10000,"maincpu",0) |
| 822 | 806 | ROM_LOAD("hc85.rom",0x0000,0x4000, CRC(3ab60fb5) SHA1(a4189db0bcdf8b39ed782b398828efb408fc4817)) |
| 823 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 824 | 807 | ROM_END |
| 825 | 808 | |
| 826 | 809 | ROM_START( hc88 ) |
| 827 | 810 | ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) |
| 828 | 811 | ROM_LOAD( "hc88.bin", 0x0000, 0x0800, CRC(33be5134) SHA1(b15a6e7085710de8b818e42d329707cb737627e3)) |
| 829 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 830 | 812 | ROM_END |
| 831 | 813 | |
| 832 | 814 | ROM_START(hc90) |
| 833 | 815 | ROM_REGION(0x10000,"maincpu",0) |
| 834 | 816 | ROM_LOAD("hc90.rom",0x0000,0x4000, CRC(78c14d9a) SHA1(25ef81905bed90497a749770170c24632efb2039)) |
| 835 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 836 | 817 | ROM_END |
| 837 | 818 | |
| 838 | 819 | ROM_START(hc91) |
| 839 | 820 | ROM_REGION(0x10000,"maincpu",0) |
| 840 | 821 | ROM_LOAD("hc91.rom",0x0000,0x4000, CRC(8bf53761) SHA1(967d5179ba2823e9c8dd9ddfb0430465aaddb554)) |
| 841 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 842 | 822 | ROM_END |
| 843 | 823 | |
| 844 | 824 | ROM_START(cip03) |
| 845 | 825 | ROM_REGION(0x10000,"maincpu",0) |
| 846 | 826 | ROM_LOAD("cip03.rom",0x0000,0x4000, CRC(c7d0cd3c) SHA1(811055b44fc74076137e2bf8db206b2a70287cc2)) |
| 847 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 848 | 827 | ROM_END |
| 849 | 828 | |
| 850 | 829 | ROM_START(cip01) |
| 851 | 830 | ROM_REGION(0x10000,"maincpu",0) |
| 852 | 831 | ROM_LOAD("cip01.rom",0x0000,0x4000, CRC(0516a329) SHA1(4e3e0c5719a64d3b4fb224db499b4bef7d146917)) |
| 853 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 854 | 832 | ROM_END |
| 855 | 833 | |
| 856 | 834 | ROM_START(jet) |
| 857 | 835 | ROM_REGION(0x10000,"maincpu",0) |
| 858 | 836 | ROM_LOAD("jet.rom",0x0000,0x4000, CRC(e56a7d11) SHA1(e76be9ee71bae6aa1c2ff969276fb599ed68cb50)) |
| 859 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 860 | 837 | ROM_END |
| 861 | 838 | |
| 862 | 839 | ROM_START( cobrasp ) |
| r32386 | r32387 | |
| 865 | 842 | ROMX_LOAD( "boot64k_v1.bin", 0x0000, 0x0800, CRC(a54aae6d) SHA1(8f5134ce24aea59065ed166ad79e864e17ce812f), ROM_BIOS(1)) |
| 866 | 843 | ROM_SYSTEM_BIOS(1, "v2", "V2") |
| 867 | 844 | ROMX_LOAD( "boot64k_v2.bin", 0x0000, 0x0800, CRC(ee91cc89) SHA1(37dea7fe0734068adf99b91fdcbf3119095c350d), ROM_BIOS(2)) |
| 868 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 869 | 845 | ROM_END |
| 870 | 846 | |
| 871 | 847 | ROM_START( cobra80 ) |
| r32386 | r32387 | |
| 876 | 852 | ROMX_LOAD( "boot80k_v2.bin", 0x0000, 0x0800, CRC(df6bd954) SHA1(5b858b59e697d0368ea631ead14f5b2aa7954ccd), ROM_BIOS(2)) |
| 877 | 853 | ROM_SYSTEM_BIOS(2, "v3", "V3") |
| 878 | 854 | ROMX_LOAD( "boot80k_v3.bin", 0x0000, 0x0800, CRC(8580494c) SHA1(91af3f3fa50f2071f8ff081536bdf7e21e9823d9), ROM_BIOS(3)) |
| 879 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 880 | 855 | ROM_END |
| 881 | 856 | |
| 882 | 857 | /* Czechoslovakian clones*/ |
| r32386 | r32387 | |
| 886 | 861 | ROM_START(dgama87) |
| 887 | 862 | ROM_REGION(0x10000,"maincpu",0) |
| 888 | 863 | ROM_LOAD("dgama87.rom",0x0000,0x4000, CRC(43104909) SHA1(f62d1f3f35fda467cae468e890995614f6ec2357)) |
| 889 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 890 | 864 | ROM_END |
| 891 | 865 | |
| 892 | 866 | ROM_START(dgama88) |
| 893 | 867 | ROM_REGION(0x10000,"maincpu",0) |
| 894 | 868 | ROM_LOAD("dgama88.rom",0x0000,0x4000, CRC(4ec7e078) SHA1(09a91f85e82efa7f974d1b88c69636a02063d563)) |
| 895 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 896 | 869 | ROM_END |
| 897 | 870 | |
| 898 | 871 | ROM_START(dgama89) |
| r32386 | r32387 | |
| 905 | 878 | ROMX_LOAD("iso.rom",0x0000,0x4000, CRC(2ee3a992) SHA1(2e39995dd032036d33a6dd88a38b750057bca19d), ROM_BIOS(3)) |
| 906 | 879 | ROM_SYSTEM_BIOS(3, "isopolak", "ISO Polak") |
| 907 | 880 | ROMX_LOAD("isopolak.rom",0x0000,0x4000, CRC(5e3f1f66) SHA1(61713117c944fc6afcb96c647bdba5ad36fd6a4b), ROM_BIOS(4)) |
| 908 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 909 | 881 | ROM_END |
| 910 | 882 | |
| 911 | 883 | ROM_START(didakt90) |
| 912 | 884 | ROM_REGION(0x10000,"maincpu",0) |
| 913 | 885 | ROM_LOAD("didakt90.rom",0x0000,0x4000, CRC(76f2db1e) SHA1(daee355a8ee58bc406873c1dd81eecb6161dd4bd)) |
| 914 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 915 | 886 | ROM_END |
| 916 | 887 | |
| 917 | 888 | ROM_START(didakm91) |
| 918 | 889 | ROM_REGION(0x10000,"maincpu",0) |
| 919 | 890 | ROM_LOAD("didakm91.rom",0x0000,0x4000, CRC(beab69b8) SHA1(71d4d1a05fb936f616bcb05c3a276f79343ecd4d)) |
| 920 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 921 | 891 | ROM_END |
| 922 | 892 | |
| 923 | 893 | ROM_START(didakm92) |
| 924 | 894 | ROM_REGION(0x10000,"maincpu",0) |
| 925 | 895 | ROM_LOAD("didakm92.bin",0x0000,0x4000, CRC(57264d4f) SHA1(23644fe949cbf527747959d07b72db01de378c4c)) |
| 926 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 927 | 896 | ROM_END |
| 928 | 897 | |
| 929 | 898 | ROM_START(didaktk) |
| 930 | 899 | ROM_REGION(0x10000,"maincpu",0) |
| 931 | 900 | ROM_LOAD("didaktk.rom",0x0000,0x4000, CRC(8ec8a625) SHA1(cba35517d33a5c97e3d9110f12a417c6c5cdeca8)) |
| 932 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 933 | 901 | ROM_END |
| 934 | 902 | |
| 935 | 903 | ROM_START(didakm93) |
| 936 | 904 | ROM_REGION(0x10000,"maincpu",0) |
| 937 | 905 | ROM_LOAD("didakm93.rom",0x0000,0x4000, CRC(ec274b1b) SHA1(a3470d8d1a996ee2a1ffff8bd8044da6e907e07e)) |
| 938 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 939 | 906 | ROM_END |
| 940 | 907 | |
| 941 | 908 | ROM_START(mistrum) |
| 942 | 909 | ROM_REGION(0x10000,"maincpu",0) |
| 943 | 910 | ROM_LOAD("mistrum.rom",0x0000,0x4000, CRC(d496103e) SHA1(cca1c5b059dc3a29ca4282e8621e34a65efaa1a3)) |
| 944 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 945 | 911 | ROM_END |
| 946 | 912 | |
| 947 | 913 | /* Russian clones */ |
| r32386 | r32387 | |
| 949 | 915 | ROM_START(blitzs) |
| 950 | 916 | ROM_REGION(0x10000,"maincpu",0) |
| 951 | 917 | ROM_LOAD("blitz.rom",0x0000,0x4000, CRC(91e535a8) SHA1(14f09d45dc3803cbdb05c33adb28eb12dbad9dd0)) |
| 952 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 953 | 918 | ROM_END |
| 954 | 919 | |
| 955 | 920 | ROM_START(byte) |
| 956 | 921 | ROM_REGION(0x10000,"maincpu",0) |
| 957 | 922 | ROM_LOAD("byte.rom",0x0000,0x4000, CRC(c13ba473) SHA1(99f40727185abbb2413f218d69df021ae2e99e45)) |
| 958 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 959 | 923 | ROM_END |
| 960 | 924 | |
| 961 | 925 | ROM_START(orizon) |
| 962 | 926 | ROM_REGION(0x10000,"maincpu",0) |
| 963 | 927 | ROM_LOAD("orizon.rom",0x0000,0x4000, CRC(ed4d9787) SHA1(3e8b29862e06be03344393c320a64a109fd9aff5)) |
| 964 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 965 | 928 | ROM_END |
| 966 | 929 | |
| 967 | 930 | ROM_START(quorum48) |
| 968 | 931 | ROM_REGION(0x10000,"maincpu",0) |
| 969 | 932 | ROM_LOAD("quorum48.rom",0x0000,0x4000, CRC(48085b0e) SHA1(8e01581643f7bdfa773f68207a6437911b631e53)) |
| 970 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 971 | 933 | ROM_END |
| 972 | 934 | |
| 973 | 935 | ROM_START(magic6) |
| 974 | 936 | ROM_REGION(0x10000,"maincpu",0) |
| 975 | 937 | ROM_LOAD("magic6.rom",0x0000,0x4000, CRC(cb63ae06) SHA1(533ad1f50534e6bdeec50eb5a9a4976c3d010dc7)) |
| 976 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 977 | 938 | ROM_END |
| 978 | 939 | |
| 979 | 940 | ROM_START(compani1) |
| 980 | 941 | ROM_REGION(0x10000,"maincpu",0) |
| 981 | 942 | ROM_LOAD("compani1.rom",0x0000,0x4000, CRC(bcfa6068) SHA1(40074b55c91a947698598e9d6ac5b8495e8cc840)) |
| 982 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 983 | 943 | ROM_END |
| 984 | 944 | |
| 985 | 945 | ROM_START(spektrbk) |
| 986 | 946 | ROM_REGION(0x10000,"maincpu",0) |
| 987 | 947 | ROM_LOAD("spektr-bk001.rom", 0x0000, 0x4000, CRC(c011eecc) SHA1(35fdc8cd083e50452655997a997873627b131520)) |
| 988 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 989 | 948 | ROM_END |
| 990 | 949 | |
| 991 | 950 | ROM_START(zvezda) |
| 992 | 951 | ROM_REGION(0x10000,"maincpu",0) |
| 993 | 952 | ROM_LOAD( "2764-near-cpu_red.bin", 0x0000, 0x2000, CRC(a4ae4938) SHA1(ea1763b9dee29381ddcf882fbc4e404ba5366942)) |
| 994 | 953 | ROM_LOAD( "2764-far-cpu_blue.bin", 0x2000, 0x2000, CRC(ebab64bc) SHA1(8c98a8b6e927b02cf602c20a1b50838e60f7785b)) |
| 995 | | ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 996 | 954 | ROM_END |
| 997 | 955 | |
| 998 | 956 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ |
trunk/src/mess/drivers/spec128.c
| r32386 | r32387 | |
| 183 | 183 | void spectrum_state::spectrum_128_update_memory() |
| 184 | 184 | { |
| 185 | 185 | UINT8 *messram = m_ram->pointer(); |
| 186 | | unsigned char *ChosenROM; |
| 187 | | int ROMSelection; |
| 188 | 186 | |
| 189 | | if (m_port_7ffd_data & 8) |
| 190 | | { |
| 187 | /* select ram at 0x0c000-0x0ffff */ |
| 188 | int ram_page = m_port_7ffd_data & 0x07; |
| 189 | unsigned char *ram_data = messram + (ram_page<<14); |
| 190 | membank("bank4")->set_base(ram_data); |
| 191 | |
| 192 | if (BIT(m_port_7ffd_data, 3)) |
| 191 | 193 | m_screen_location = messram + (7<<14); |
| 192 | | } |
| 193 | 194 | else |
| 194 | | { |
| 195 | 195 | m_screen_location = messram + (5<<14); |
| 196 | | } |
| 197 | 196 | |
| 198 | | /* select ram at 0x0c000-0x0ffff */ |
| 197 | if (!m_cart->exists()) |
| 199 | 198 | { |
| 200 | | int ram_page; |
| 201 | | unsigned char *ram_data; |
| 199 | /* ROM switching */ |
| 200 | int ROMSelection = BIT(m_port_7ffd_data, 4); |
| 202 | 201 | |
| 203 | | ram_page = m_port_7ffd_data & 0x07; |
| 204 | | ram_data = messram + (ram_page<<14); |
| 202 | /* rom 0 is 128K rom, rom 1 is 48 BASIC */ |
| 203 | unsigned char *ChosenROM = memregion("maincpu")->base() + 0x010000 + (ROMSelection << 14); |
| 205 | 204 | |
| 206 | | membank("bank4")->set_base(ram_data); |
| 205 | membank("bank1")->set_base(ChosenROM); |
| 207 | 206 | } |
| 208 | | |
| 209 | | /* ROM switching */ |
| 210 | | ROMSelection = ((m_port_7ffd_data>>4) & 0x01); |
| 211 | | |
| 212 | | /* rom 0 is 128K rom, rom 1 is 48 BASIC */ |
| 213 | | |
| 214 | | ChosenROM = memregion("maincpu")->base() + 0x010000 + (ROMSelection<<14); |
| 215 | | |
| 216 | | membank("bank1")->set_base(ChosenROM); |
| 217 | 207 | } |
| 218 | 208 | |
| 219 | 209 | READ8_MEMBER( spectrum_state::spectrum_128_ula_r ) |
| r32386 | r32387 | |
| 291 | 281 | MCFG_CPU_VBLANK_INT_DRIVER("screen", spectrum_state, spec_interrupt) |
| 292 | 282 | MCFG_QUANTUM_TIME(attotime::from_hz(60)) |
| 293 | 283 | |
| 294 | | |
| 295 | 284 | MCFG_MACHINE_RESET_OVERRIDE(spectrum_state, spectrum_128 ) |
| 296 | 285 | |
| 297 | 286 | /* video hardware */ |
| r32386 | r32387 | |
| 328 | 317 | ROM_SYSTEM_BIOS( 1, "sp", "Spanish" ) |
| 329 | 318 | ROMX_LOAD("zx128s0.rom",0x10000,0x4000, CRC(453d86b2) SHA1(968937b1c750f0ef6205f01c6db4148da4cca4e3), ROM_BIOS(2)) |
| 330 | 319 | ROMX_LOAD("zx128s1.rom",0x14000,0x4000, CRC(6010e796) SHA1(bea3f397cc705eafee995ea629f4a82550562f90), ROM_BIOS(2)) |
| 331 | | ROM_CART_LOAD("cart", 0x10000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 332 | 320 | ROM_END |
| 333 | 321 | |
| 334 | 322 | ROM_START(specpls2) |
| r32386 | r32387 | |
| 347 | 335 | ROMX_LOAD("plus2c-1.rom",0x14000,0x4000, CRC(fd8552b6) SHA1(5ffcf79f2154ba2cf42cc1d9cb4be93cb5043e73), ROM_BIOS(4)) |
| 348 | 336 | ROM_SYSTEM_BIOS( 4, "namco", "ZX Spectrum +2c (Namco)" ) |
| 349 | 337 | ROMX_LOAD("pl2namco.rom",0x10000,0x8000, CRC(72a54e75) SHA1(311400157df689450dadc3620f4c4afa960b05ad), ROM_BIOS(5)) |
| 350 | | ROM_CART_LOAD("cart", 0x10000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 351 | 338 | ROM_END |
| 352 | 339 | |
| 353 | 340 | ROM_START(hc128) |
| 354 | 341 | ROM_REGION(0x18000,"maincpu",0) |
| 355 | 342 | ROM_LOAD("zx128_0.rom",0x10000,0x4000, CRC(e76799d2) SHA1(4f4b11ec22326280bdb96e3baf9db4b4cb1d02c5)) |
| 356 | 343 | ROM_LOAD("hc128.rom", 0x14000,0x4000, CRC(0241e960) SHA1(cea0d14391b9e571460a816088a1c00ecb24afa3)) |
| 357 | | ROM_CART_LOAD("cart", 0x10000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 358 | 344 | ROM_END |
| 359 | 345 | |
| 360 | 346 | ROM_START(hc2000) |
| r32386 | r32387 | |
| 365 | 351 | ROM_SYSTEM_BIOS( 1, "v2", "Version 2" ) |
| 366 | 352 | ROMX_LOAD("zx128_0.rom",0x10000,0x4000, CRC(e76799d2) SHA1(4f4b11ec22326280bdb96e3baf9db4b4cb1d02c5), ROM_BIOS(2)) |
| 367 | 353 | ROMX_LOAD("hc2000.v2", 0x14000,0x4000, CRC(65d90464) SHA1(5e2096e6460ff2120c8ada97579fdf82c1199c09), ROM_BIOS(2)) |
| 368 | | ROM_CART_LOAD("cart", 0x10000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 369 | 354 | ROM_END |
| 370 | 355 | |
| 371 | 356 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ |
trunk/src/mess/drivers/specpls3.c
| r32386 | r32387 | |
| 214 | 214 | |
| 215 | 215 | if ((m_port_1ffd_data & 0x01) == 0) |
| 216 | 216 | { |
| 217 | | int ram_page; |
| 218 | | unsigned char *ram_data; |
| 217 | /* select ram at 0x0c000-0x0ffff */ |
| 218 | int ram_page = m_port_7ffd_data & 0x07; |
| 219 | unsigned char *ram_data = messram + (ram_page<<14); |
| 220 | membank("bank4")->set_base(ram_data); |
| 221 | |
| 222 | logerror("RAM at 0xc000: %02x\n", ram_page); |
| 223 | |
| 224 | /* Reset memory between 0x4000 - 0xbfff in case extended paging was being used */ |
| 225 | /* Bank 5 in 0x4000 - 0x7fff */ |
| 226 | membank("bank2")->set_base(messram + (5 << 14)); |
| 227 | |
| 228 | /* Bank 2 in 0x8000 - 0xbfff */ |
| 229 | membank("bank3")->set_base(messram + (2 << 14)); |
| 219 | 230 | |
| 231 | if (!m_cart->exists()) |
| 232 | { |
| 220 | 233 | /* ROM switching */ |
| 221 | | unsigned char *ChosenROM; |
| 222 | | int ROMSelection; |
| 223 | | |
| 224 | | /* select ram at 0x0c000-0x0ffff */ |
| 225 | | ram_page = m_port_7ffd_data & 0x07; |
| 226 | | ram_data = messram + (ram_page<<14); |
| 227 | | |
| 228 | | membank("bank4")->set_base(ram_data); |
| 229 | | |
| 230 | | logerror("RAM at 0xc000: %02x\n", ram_page); |
| 231 | | |
| 232 | | /* Reset memory between 0x4000 - 0xbfff in case extended paging was being used */ |
| 233 | | /* Bank 5 in 0x4000 - 0x7fff */ |
| 234 | | membank("bank2")->set_base(messram + (5 << 14)); |
| 235 | | |
| 236 | | /* Bank 2 in 0x8000 - 0xbfff */ |
| 237 | | membank("bank3")->set_base(messram + (2 << 14)); |
| 238 | | |
| 239 | | |
| 240 | | ROMSelection = ((m_port_7ffd_data >> 4) & 0x01) | |
| 241 | | ((m_port_1ffd_data >> 1) & 0x02); |
| 242 | | |
| 234 | int ROMSelection = BIT(m_port_7ffd_data, 4) | ((m_port_1ffd_data >> 1) & 0x02); |
| 235 | |
| 243 | 236 | /* rom 0 is editor, rom 1 is syntax, rom 2 is DOS, rom 3 is 48 BASIC */ |
| 244 | | |
| 245 | | ChosenROM = memregion("maincpu")->base() + 0x010000 + (ROMSelection << 14); |
| 246 | | |
| 237 | unsigned char *ChosenROM = memregion("maincpu")->base() + 0x010000 + (ROMSelection << 14); |
| 238 | |
| 247 | 239 | membank("bank1")->set_base(ChosenROM); |
| 248 | 240 | space.unmap_write(0x0000, 0x3fff); |
| 249 | | |
| 241 | |
| 250 | 242 | logerror("rom switch: %02x\n", ROMSelection); |
| 243 | } |
| 251 | 244 | } |
| 252 | 245 | else |
| 253 | 246 | { |
| 254 | | /* Extended memory paging */ |
| 255 | | |
| 256 | | const int *memory_selection; |
| 257 | | int MemorySelection; |
| 258 | | unsigned char *ram_data; |
| 259 | | |
| 260 | | MemorySelection = (m_port_1ffd_data >> 1) & 0x03; |
| 261 | | |
| 262 | | memory_selection = &spectrum_plus3_memory_selections[(MemorySelection << 2)]; |
| 263 | | |
| 264 | | ram_data = messram + (memory_selection[0] << 14); |
| 265 | | membank("bank1")->set_base(ram_data); |
| 266 | | /* allow writes to 0x0000-0x03fff */ |
| 267 | | space.install_write_bank(0x0000, 0x3fff, "bank1"); |
| 268 | | |
| 269 | | ram_data = messram + (memory_selection[1] << 14); |
| 270 | | membank("bank2")->set_base(ram_data); |
| 271 | | |
| 272 | | ram_data = messram + (memory_selection[2] << 14); |
| 273 | | membank("bank3")->set_base(ram_data); |
| 274 | | |
| 275 | | ram_data = messram + (memory_selection[3] << 14); |
| 276 | | membank("bank4")->set_base(ram_data); |
| 277 | | |
| 278 | | logerror("extended memory paging: %02x\n", MemorySelection); |
| 247 | /* Extended memory paging */ |
| 248 | int MemorySelection = (m_port_1ffd_data >> 1) & 0x03; |
| 249 | const int *memory_selection = &spectrum_plus3_memory_selections[(MemorySelection << 2)]; |
| 250 | unsigned char *ram_data = messram + (memory_selection[0] << 14); |
| 251 | |
| 252 | membank("bank1")->set_base(ram_data); |
| 253 | /* allow writes to 0x0000-0x03fff */ |
| 254 | space.install_write_bank(0x0000, 0x3fff, "bank1"); |
| 255 | |
| 256 | ram_data = messram + (memory_selection[1] << 14); |
| 257 | membank("bank2")->set_base(ram_data); |
| 258 | |
| 259 | ram_data = messram + (memory_selection[2] << 14); |
| 260 | membank("bank3")->set_base(ram_data); |
| 261 | |
| 262 | ram_data = messram + (memory_selection[3] << 14); |
| 263 | membank("bank4")->set_base(ram_data); |
| 264 | |
| 265 | logerror("extended memory paging: %02x\n", MemorySelection); |
| 279 | 266 | } |
| 280 | 267 | } |
| 281 | 268 | |
| r32386 | r32387 | |
| 314 | 301 | /* disable paging? */ |
| 315 | 302 | if ((m_port_7ffd_data & 0x20)==0) |
| 316 | 303 | { |
| 317 | | /* no */ |
| 318 | | spectrum_plus3_update_memory(); |
| 304 | /* no */ |
| 305 | spectrum_plus3_update_memory(); |
| 319 | 306 | } |
| 320 | 307 | } |
| 321 | 308 | |
| r32386 | r32387 | |
| 411 | 398 | ROM_LOAD("p2a41_1.rom",0x14000,0x4000, CRC(a7916b3f) SHA1(1a7812c383a3701e90e88d1da086efb0c033ac72)) |
| 412 | 399 | ROM_LOAD("p2a41_2.rom",0x18000,0x4000, CRC(c9a0b748) SHA1(8df145d10ff78f98138682ea15ebccb2874bf759)) |
| 413 | 400 | ROM_LOAD("p2a41_3.rom",0x1c000,0x4000, CRC(b88fd6e3) SHA1(be365f331942ec7ec35456b641dac56a0dbfe1f0)) |
| 414 | | ROM_CART_LOAD("cart", 0x10000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 415 | 401 | ROM_END |
| 416 | 402 | |
| 417 | 403 | ROM_START(specpls3) |
| r32386 | r32387 | |
| 434 | 420 | ROM_SYSTEM_BIOS( 4, "12ms", "Customize 3.5\" 12ms" ) |
| 435 | 421 | ROMX_LOAD("p3_01_cm.rom",0x10000,0x8000, CRC(ad99380a) SHA1(4e5d114b72d464cefdde0566457f52a3c0c1cae2), ROM_BIOS(5)) |
| 436 | 422 | ROMX_LOAD("p3_23_cm.rom",0x18000,0x8000, CRC(61f2b50c) SHA1(d062765ceb1f3cd2c94ea51cb737cac7ad6151b4), ROM_BIOS(5)) |
| 437 | | ROM_CART_LOAD("cart", 0x10000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 438 | 423 | ROM_END |
| 439 | 424 | |
| 440 | 425 | ROM_START(specpl3e) |
| r32386 | r32387 | |
| 445 | 430 | ROM_SYSTEM_BIOS( 1, "sp", "Spanish" ) |
| 446 | 431 | ROMX_LOAD("roma-es.rom",0x10000,0x8000, CRC(ba694b4b) SHA1(d15d9e43950483cffc79f1cfa89ecb114a88f6c2), ROM_BIOS(2)) |
| 447 | 432 | ROMX_LOAD("romb-es.rom",0x18000,0x8000, CRC(61ed94db) SHA1(935b14c13db75d872de8ad0d591aade0adbbc355), ROM_BIOS(2)) |
| 448 | | ROM_CART_LOAD("cart", 0x10000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 449 | 433 | ROM_END |
| 450 | 434 | |
| 451 | 435 | ROM_START(sp3e8bit) |
| r32386 | r32387 | |
| 454 | 438 | ROMX_LOAD("3e8biten.rom",0x10000,0x10000, CRC(beee3bf6) SHA1(364ec903916282d5401901c5fb0cb93a142038b3), ROM_BIOS(1)) |
| 455 | 439 | ROM_SYSTEM_BIOS( 1, "sp", "Spanish" ) |
| 456 | 440 | ROMX_LOAD("3e8bites.rom",0x10000,0x10000, CRC(cafe4c35) SHA1(8331d273d29d3e37ec1324053bb050874d2c1434), ROM_BIOS(2)) |
| 457 | | ROM_CART_LOAD("cart", 0x10000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 458 | 441 | ROM_END |
| 459 | 442 | |
| 460 | 443 | ROM_START(sp3ezcf) |
| r32386 | r32387 | |
| 463 | 446 | ROMX_LOAD("3ezcfen.rom",0x10000,0x10000, CRC(43993f11) SHA1(27cbfbe8b5ef9eec6056026fa0b84fe158ba2f45), ROM_BIOS(1)) |
| 464 | 447 | ROM_SYSTEM_BIOS( 1, "sp", "Spanish" ) |
| 465 | 448 | ROMX_LOAD("3ezcfes.rom",0x10000,0x10000, CRC(1325a0d7) SHA1(521cf47e10f46c8a621c8889ef1f008454c7e10b), ROM_BIOS(2)) |
| 466 | | ROM_CART_LOAD("cart", 0x10000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 467 | 449 | ROM_END |
| 468 | 450 | |
| 469 | 451 | ROM_START(sp3eata) |
| r32386 | r32387 | |
| 472 | 454 | ROMX_LOAD("3ezxaen.rom",0x10000,0x10000, CRC(dfb676dc) SHA1(37618bc66ae33dbf686be8a92867e4a9144b65dc), ROM_BIOS(1)) |
| 473 | 455 | ROM_SYSTEM_BIOS( 1, "sp", "Spanish" ) |
| 474 | 456 | ROMX_LOAD("3ezxaes.rom",0x10000,0x10000, CRC(8f0ae91a) SHA1(71693e18b30c90914be58cba26682ca025c924ea), ROM_BIOS(2)) |
| 475 | | ROM_CART_LOAD("cart", 0x10000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL) |
| 476 | 457 | ROM_END |
| 477 | 458 | |
| 478 | 459 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ |