trunk/src/mame/drivers/su2000.cpp
| r255093 | r255094 | |
| 39 | 39 | #include "machine/idectrl.h" |
| 40 | 40 | #include "video/pc_vga.h" |
| 41 | 41 | #include "machine/pckeybrd.h" |
| 42 | #include "machine/ds128x.h" |
| 42 | 43 | |
| 43 | 44 | /************************************* |
| 44 | 45 | * |
| r255093 | r255094 | |
| 51 | 52 | #define TMS320C1_CLOCK XTAL_33_833MHz |
| 52 | 53 | #define MC88110_CLOCK XTAL_40MHz |
| 53 | 54 | |
| 54 | | #define PC_RAM_SIZE (4096 * 1024) |
| 55 | 55 | |
| 56 | | |
| 57 | 56 | /************************************* |
| 58 | 57 | * |
| 59 | 58 | * State |
| r255093 | r255094 | |
| 66 | 65 | su2000_state(const machine_config &mconfig, device_type type, const char *tag) |
| 67 | 66 | : pcat_base_state(mconfig, type, tag){ } |
| 68 | 67 | |
| 69 | | std::unique_ptr<UINT32[]> m_pc_ram; |
| 70 | | virtual void machine_start() override; |
| 71 | | virtual void machine_reset() override; |
| 72 | 68 | }; |
| 73 | 69 | |
| 74 | 70 | |
| r255093 | r255094 | |
| 79 | 75 | *************************************/ |
| 80 | 76 | |
| 81 | 77 | static ADDRESS_MAP_START( pcat_map, AS_PROGRAM, 32, su2000_state ) |
| 82 | | AM_RANGE(0x00000000, 0x0009ffff) AM_RAMBANK("mem_bank") |
| 78 | AM_RANGE(0x00000000, 0x0009ffff) AM_RAM |
| 83 | 79 | AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff) |
| 84 | 80 | AM_RANGE(0x000c0000, 0x000c7fff) AM_ROM |
| 85 | 81 | AM_RANGE(0x000f0000, 0x000fffff) AM_ROM |
| 82 | AM_RANGE(0x00100000, 0x003fffff) AM_RAM |
| 86 | 83 | AM_RANGE(0xffff0000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0x0f0000) |
| 87 | 84 | ADDRESS_MAP_END |
| 88 | 85 | |
| r255093 | r255094 | |
| 118 | 115 | |
| 119 | 116 | /************************************* |
| 120 | 117 | * |
| 121 | | * Initialization |
| 122 | | * |
| 123 | | *************************************/ |
| 124 | | |
| 125 | | void su2000_state::machine_start() |
| 126 | | { |
| 127 | | address_space &space = m_maincpu->space(AS_PROGRAM); |
| 128 | | |
| 129 | | /* Configure RAM */ |
| 130 | | m_pc_ram = make_unique_clear<UINT32[]>(PC_RAM_SIZE); |
| 131 | | |
| 132 | | /* Conventional memory */ |
| 133 | | membank("mem_bank")->set_base(m_pc_ram.get()); |
| 134 | | |
| 135 | | /* HMA */ |
| 136 | | offs_t ram_limit = 0x100000 + PC_RAM_SIZE - 0x0a0000; |
| 137 | | space.install_read_bank(0x100000, ram_limit - 1, "hma_bank"); |
| 138 | | space.install_write_bank(0x100000, ram_limit - 1, "hma_bank"); |
| 139 | | membank("hma_bank")->set_base(m_pc_ram.get() + 0xa0000); |
| 140 | | } |
| 141 | | |
| 142 | | void su2000_state::machine_reset() |
| 143 | | { |
| 144 | | } |
| 145 | | |
| 146 | | |
| 147 | | /************************************* |
| 148 | | * |
| 149 | 118 | * Machine Configuration |
| 150 | 119 | * |
| 151 | 120 | *************************************/ |
| r255093 | r255094 | |
| 173 | 142 | |
| 174 | 143 | /* Video hardware */ |
| 175 | 144 | MCFG_FRAGMENT_ADD(pcvideo_vga) |
| 176 | | MCFG_SCREEN_MODIFY("screen") |
| 177 | | MCFG_SCREEN_REFRESH_RATE(60) |
| 178 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // TODO |
| 179 | 145 | |
| 180 | 146 | MCFG_FRAGMENT_ADD(pcat_common) |
| 147 | |
| 148 | MCFG_DEVICE_REMOVE("rtc") |
| 149 | MCFG_DS12885_ADD("rtc") |
| 150 | MCFG_MC146818_IRQ_HANDLER(DEVWRITELINE("pic8259_2", pic8259_device, ir0_w)) |
| 151 | MCFG_MC146818_CENTURY_INDEX(0x32) |
| 181 | 152 | MACHINE_CONFIG_END |
| 182 | 153 | |
| 183 | 154 | |