|
| 1 | +// license:BSD-3-Clause |
| 2 | +// copyright-holders:AJR |
| 3 | + |
| 4 | +#include "emu.h" |
| 5 | +#include "s1c33l17.h" |
| 6 | + |
| 7 | +// device type definitions |
| 8 | +DEFINE_DEVICE_TYPE(S1C33L17, s1c33l17_device, "s1c33l17", "Epson S1C33L17") |
| 9 | +DEFINE_DEVICE_TYPE(S1C33E07, s1c33e07_device, "s1c33e07", "Epson S1C33E07") |
| 10 | + |
| 11 | +// FIXME: based on C33 PE Core, not STD Core |
| 12 | +s1c33l17_device::s1c33l17_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, address_map_constructor map) |
| 13 | + : c33std_cpu_device_base(mconfig, type, tag, owner, clock, map) |
| 14 | +{ |
| 15 | +} |
| 16 | + |
| 17 | +s1c33l17_device::s1c33l17_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) |
| 18 | + : s1c33l17_device(mconfig, S1C33L17, tag, owner, clock, address_map_constructor(FUNC(s1c33l17_device::internal_map), this)) |
| 19 | +{ |
| 20 | +} |
| 21 | + |
| 22 | +s1c33e07_device::s1c33e07_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) |
| 23 | + : s1c33l17_device(mconfig, S1C33E07, tag, owner, clock, address_map_constructor(FUNC(s1c33e07_device::internal_map), this)) |
| 24 | +{ |
| 25 | +} |
| 26 | + |
| 27 | +void s1c33l17_device::device_reset() |
| 28 | +{ |
| 29 | + c33std_cpu_device_base::device_reset(); |
| 30 | + |
| 31 | + // TODO: gate ROM depending on boot mode |
| 32 | + m_pc = m_data.read_dword(0x00c00000); |
| 33 | +} |
| 34 | + |
| 35 | +void s1c33l17_device::base_internal_map(address_map &map) |
| 36 | +{ |
| 37 | + map(0x00000000, 0x00004fff).ram(); |
| 38 | + map(0x00084000, 0x000847ff).ram(); |
| 39 | + // 0x00300010-0x00300020 Misc Register (1) |
| 40 | + // 0x00300380-0x003003d5 I/O Ports |
| 41 | + // 0x00300520-0x0030055e A/D Converter |
| 42 | + // 0x00300660-0x0030033c Watchdog Timer (WDT) |
| 43 | + // 0x00300900-0x0030099f USB Function Controller |
| 44 | + // 0x00300a00-0x00300aff USB DMA Area |
| 45 | + // 0x00300b00-0x00300b4f Serial Interface (EFSIO) |
| 46 | + // 0x00300c00-0x00300c25 Extended Ports |
| 47 | + // 0x00300c40-0x00300c4d Misc Register (2) |
| 48 | + // 0x00301100-0x00301105 Intelligent DMA |
| 49 | + // 0x00301120-0x0030119e High-Speed DMA |
| 50 | + // 0x00301500-0x00301510 SRAM Controller |
| 51 | + // 0x00301600-0x00301610 SDRAM Controller |
| 52 | + // 0x00301700-0x0030171c SPI |
| 53 | + // 0x00301900-0x00301928 Real Time Clock |
| 54 | + // 0x00301b00-0x00301b24 Clock Management Unit |
| 55 | +} |
| 56 | + |
| 57 | +void s1c33l17_device::internal_map(address_map &map) |
| 58 | +{ |
| 59 | + base_internal_map(map); |
| 60 | + // 0x00300260-0x003002af Interrupt Controller |
| 61 | + // 0x00300300-0x0030031b Card Interface and Reed Solomon CODEC |
| 62 | + // 0x00300780-0x003007ea 16-bit Timer (4 channels) |
| 63 | + // 0x00301a00-0x00301aac LCD Controller (LCDC) |
| 64 | + // 0x00301c00-0x00301c30 I²S Interface |
| 65 | +} |
| 66 | + |
| 67 | +void s1c33e07_device::internal_map(address_map &map) |
| 68 | +{ |
| 69 | + base_internal_map(map); |
| 70 | + // 0x00300260-0x003002af Interrupt Controller (more sources than S1C33L17) |
| 71 | + // 0x00300300-0x0030031b Card Interface with ECC |
| 72 | + // 0x00300780-0x003007ea 16-bit Timer (6 channels) |
| 73 | + // 0x00301800-0x0030181c Direction Control Serial Interface (DCSIO) |
| 74 | + // 0x00301a00-0x00301aac LCD Controller (LCDC) (no 16bpp mode) |
| 75 | + // 0x00301c00-0x00301c30 I²S Interface (different from S1C33L17) |
| 76 | +} |
0 commit comments