trunk/src/mess/drivers/apollo.c
| r17646 | r17647 | |
| 107 | 107 | static UINT32 ram_base_address; |
| 108 | 108 | static UINT32 ram_end_address; |
| 109 | 109 | |
| 110 | | static generic_ptr messram_ptr; |
| 111 | | static size_t messram_size = 0; |
| 112 | | |
| 113 | 110 | static int node_type; |
| 114 | 111 | |
| 115 | 112 | // FIXME: value of ram_config_byte must match with default/selected RAM size |
| r17646 | r17647 | |
| 445 | 442 | ***************************************************************************/ |
| 446 | 443 | |
| 447 | 444 | READ32_MEMBER(apollo_state::ram_with_parity_r){ |
| 448 | | UINT32 data = messram_ptr.u32[parity_error_offset+offset]; |
| 445 | UINT32 data = m_messram_ptr[parity_error_offset+offset]; |
| 449 | 446 | |
| 450 | 447 | SLOG2(("memory dword read with parity error at %08x = %08x & %08x parity_byte=%04x", |
| 451 | 448 | ram_base_address + parity_error_offset*4 + offset*4,data, mem_mask, parity_error_byte_mask)); |
| r17646 | r17647 | |
| 467 | 464 | |
| 468 | 465 | WRITE32_MEMBER(apollo_state::ram_with_parity_w){ |
| 469 | 466 | |
| 470 | | COMBINE_DATA(messram_ptr.u32+offset); |
| 467 | COMBINE_DATA(m_messram_ptr+offset); |
| 471 | 468 | |
| 472 | 469 | if (apollo_csr_get_control_register() & APOLLO_CSR_CR_FORCE_BAD_PARITY) { |
| 473 | 470 | parity_error_byte_mask = (apollo_csr_get_control_register() |
| r17646 | r17647 | |
| 499 | 496 | // uninstall not supported, reinstall previous read handler instead |
| 500 | 497 | |
| 501 | 498 | // memory_install_rom(&space, ram_base_address, ram_end_address, 0xffffffff, 0, messram_ptr.v); |
| 502 | | space.install_rom(ram_base_address,ram_end_address,0xffffffff,0,messram_ptr.v); |
| 499 | space.install_rom(ram_base_address,ram_end_address,0xffffffff,0,&m_messram_ptr[0]); |
| 503 | 500 | |
| 504 | 501 | parity_error_handler_is_installed = 0; |
| 505 | 502 | parity_error_byte_mask = 0; |
| r17646 | r17647 | |
| 765 | 762 | |
| 766 | 763 | // FIXME: must match with RAM size in driver/apollo_sio.c |
| 767 | 764 | // AM_RANGE(DN3500_RAM_BASE, DN3500_RAM_END) AM_RAM /* 8MB RAM */ |
| 768 | | AM_RANGE(DN3500_RAM_BASE, DN3500_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_BASE_LEGACY(&messram_ptr.u32) AM_SIZE_LEGACY(&messram_size) |
| 765 | AM_RANGE(DN3500_RAM_BASE, DN3500_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_SHARE("messram") |
| 769 | 766 | |
| 770 | 767 | AM_RANGE(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END) AM_READWRITE(apollo_atbus_memory_r, apollo_atbus_memory_w) |
| 771 | 768 | |
| r17646 | r17647 | |
| 813 | 810 | |
| 814 | 811 | // FIXME: must match with RAM size in driver/apollo_sio.c |
| 815 | 812 | // AM_RANGE(DN3500_RAM_BASE, DN3500_RAM_END) AM_RAM /* 8MB RAM */ |
| 816 | | AM_RANGE(DN3500_RAM_BASE, DN3500_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_BASE_LEGACY(&messram_ptr.u32) AM_SIZE_LEGACY(&messram_size) |
| 813 | AM_RANGE(DN3500_RAM_BASE, DN3500_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_SHARE("messram") |
| 817 | 814 | |
| 818 | 815 | AM_RANGE(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END) AM_READWRITE(apollo_atbus_memory_r, apollo_atbus_memory_w) |
| 819 | 816 | |
| r17646 | r17647 | |
| 852 | 849 | |
| 853 | 850 | // FIXME: must match with RAM size in driver/apollo_sio.c |
| 854 | 851 | // AM_RANGE(DN3000_RAM_BASE, DN3000_RAM_END) AM_RAM /* 8MB RAM */ |
| 855 | | AM_RANGE(DN3000_RAM_BASE, DN3000_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_BASE_LEGACY(&messram_ptr.u32) AM_SIZE_LEGACY(&messram_size) |
| 852 | AM_RANGE(DN3000_RAM_BASE, DN3000_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_SHARE("messram") |
| 856 | 853 | |
| 857 | 854 | AM_RANGE(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END) AM_READWRITE(apollo_atbus_memory_r, apollo_atbus_memory_w) |
| 858 | 855 | |
| r17646 | r17647 | |
| 890 | 887 | |
| 891 | 888 | // FIXME: must match with RAM size in driver/apollo_sio.c |
| 892 | 889 | // AM_RANGE(DN3000_RAM_BASE, DN3000_RAM_END) AM_RAM /* 8MB RAM */ |
| 893 | | AM_RANGE(DN3000_RAM_BASE, DN3000_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_BASE_LEGACY(&messram_ptr.u32) AM_SIZE_LEGACY(&messram_size) |
| 890 | AM_RANGE(DN3000_RAM_BASE, DN3000_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_SHARE("messram") |
| 894 | 891 | |
| 895 | 892 | AM_RANGE(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END) AM_READWRITE(apollo_atbus_memory_r, apollo_atbus_memory_w) |
| 896 | 893 | |
| r17646 | r17647 | |
| 936 | 933 | |
| 937 | 934 | // FIXME: must match with RAM size in driver/apollo_sio.c |
| 938 | 935 | // AM_RANGE(DN3500_RAM_BASE, DN3500_RAM_END) AM_RAM /* 8MB RAM */ |
| 939 | | AM_RANGE(DN5500_RAM_BASE, DN5500_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_BASE_LEGACY(&messram_ptr.u32) AM_SIZE_LEGACY(&messram_size) |
| 936 | AM_RANGE(DN5500_RAM_BASE, DN5500_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_SHARE("messram") |
| 940 | 937 | |
| 941 | 938 | AM_RANGE(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END) AM_READWRITE(apollo_atbus_memory_r, apollo_atbus_memory_w) |
| 942 | 939 | |
| r17646 | r17647 | |
| 987 | 984 | AM_RANGE(0x080000, 0x081fff) AM_ROM /* 3C505 boot ROM */ |
| 988 | 985 | |
| 989 | 986 | // FIXME: must match with RAM size in driver/apollo_sio.c |
| 990 | | AM_RANGE(DN5500_RAM_BASE, DN5500_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_BASE_LEGACY(&messram_ptr.u32) AM_SIZE_LEGACY(&messram_size) |
| 987 | AM_RANGE(DN5500_RAM_BASE, DN5500_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_SHARE("messram") |
| 991 | 988 | |
| 992 | 989 | AM_RANGE(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END) AM_READWRITE(apollo_atbus_memory_r, apollo_atbus_memory_w) |
| 993 | 990 | |
| r17646 | r17647 | |
| 1066 | 1063 | ***************************************************************************/ |
| 1067 | 1064 | |
| 1068 | 1065 | static MACHINE_START( dn3500 ) { |
| 1069 | | MLOG1(("machine_start_dn3500: ram size is %d MB", (int)messram_size/(1024*1024))); |
| 1066 | memory_share *messram = machine.root_device().memshare("messram"); |
| 1067 | MLOG1(("machine_start_dn3500: ram size is %d MB", (int)messram->bytes()/(1024*1024))); |
| 1070 | 1068 | |
| 1071 | 1069 | // clear ram |
| 1072 | | memset(messram_ptr.u8, 0x55, messram_size); |
| 1070 | memset(messram->ptr(), 0x55, messram->bytes()); |
| 1073 | 1071 | |
| 1074 | 1072 | MACHINE_START_CALL(apollo); |
| 1075 | 1073 | } |