mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
srcclean in preparation for release
This commit is contained in:
parent
f56ace4df8
commit
2905b8c24a
@ -22378,7 +22378,7 @@ Disk 2 includes: "Cliparts for TimeWorks Publisher Lite", "Wessex Systems Mail-P
|
||||
<description>Personal Computer World (1994-04 - April 1994)</description>
|
||||
<year>1994</year>
|
||||
<publisher>VNU Business Publications</publisher>
|
||||
<notes><![CDATA[Cover Disk includes:
|
||||
<notes><![CDATA[Cover Disk includes:
|
||||
Amour-Geddon (part 2) [Psygnosis]: Part 2 of this blockbuster game adds brilliant animation to the program's startup sequence.
|
||||
Marketeer [Sterling Data]: All the features anyone involved in marketing could ask for. A superb, easy-to-use system.
|
||||
Walking Fingers [David Geffen]: Let your fingers do the walking in this handy mini-database. Fun, logical and good graphics.
|
||||
|
@ -24,7 +24,7 @@ DEFINE_DEVICE_TYPE(A800_RTIME8, a800_rtime8_device, "a800_rtime8", "ICD R-Time 8
|
||||
|
||||
a800_rtime8_device::a800_rtime8_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: device_t(mconfig, A800_RTIME8, tag, owner, clock)
|
||||
, device_a800_cart_interface(mconfig, *this)
|
||||
, device_a800_cart_interface(mconfig, *this)
|
||||
, m_rtc(*this, "rtc")
|
||||
{
|
||||
}
|
||||
|
@ -34,8 +34,8 @@ public:
|
||||
DECLARE_WRITE_LINE_MEMBER(dir_w) override { m_spi->dir_w(state); }
|
||||
void write(uint8_t data) override { m_spi->write(data); }
|
||||
void set_ready() override { m_spi->set_ready(); }
|
||||
void set_spi_region(uint8_t* region) override { m_spi->set_rom_ptr(region); }
|
||||
void set_spi_size(size_t size) override { m_spi->set_rom_size(size); }
|
||||
void set_spi_region(uint8_t* region) override { m_spi->set_rom_ptr(region); }
|
||||
void set_spi_size(size_t size) override { m_spi->set_rom_size(size); }
|
||||
|
||||
|
||||
protected:
|
||||
|
@ -451,7 +451,7 @@ void a26_rom_e0_device::install_memory_handlers(address_space *space)
|
||||
|
||||
template <uint8_t Bank>
|
||||
void a26_rom_e0_device::switch_bank(offs_t offset, uint8_t data)
|
||||
{
|
||||
{
|
||||
m_bank[Bank]->set_entry(offset & 7);
|
||||
}
|
||||
|
||||
@ -677,7 +677,7 @@ void a26_rom_fv_device::switch_bank(offs_t offset, uint8_t data)
|
||||
"JVP Bankswitch" Carts:
|
||||
read/write access to 0x0fa0-0x0fc0 determines the
|
||||
4K ROM bank to be read.
|
||||
|
||||
|
||||
GAMES: No test case!?!
|
||||
|
||||
-------------------------------------------------*/
|
||||
|
@ -65,7 +65,7 @@ void ax208_cpu_device::ax208_internal_program_mem(address_map &map)
|
||||
void axc51base_cpu_device::io_internal(address_map& map)
|
||||
{
|
||||
map(0x0000, 0x03ff).ram().share("scratchpad");
|
||||
map(0x3000, 0x3fff).rw(FUNC(axc51base_cpu_device::xsfr_read), FUNC(axc51base_cpu_device::xsfr_write));
|
||||
map(0x3000, 0x3fff).rw(FUNC(axc51base_cpu_device::xsfr_read), FUNC(axc51base_cpu_device::xsfr_write));
|
||||
map(0x4000, 0x6fff).ram().share("mainram");
|
||||
|
||||
map(0x7000, 0x77ff).ram(); // JPEG RAM
|
||||
@ -683,7 +683,7 @@ void axc51base_cpu_device::execute_op(uint8_t op)
|
||||
case 0xa2: mov_c_bitaddr(op); break; //MOV C, bit addr
|
||||
case 0xa3: inc_dptr(op); break; //INC DPTR
|
||||
case 0xa4: mul_ab(op); break; //MUL AB
|
||||
case 0xa5: axc51_extended_a5(op); break;
|
||||
case 0xa5: axc51_extended_a5(op); break;
|
||||
|
||||
case 0xa6:
|
||||
case 0xa7: mov_ir_mem(op&1); break; //MOV @R0/@R1, data addr
|
||||
@ -1344,8 +1344,8 @@ void axc51base_cpu_device::device_reset()
|
||||
|
||||
m_spi_dma_addr = 0;
|
||||
|
||||
// m_timer0->adjust(attotime::never);
|
||||
// m_dactimer->adjust(attotime::never);
|
||||
// m_timer0->adjust(attotime::never);
|
||||
// m_dactimer->adjust(attotime::never);
|
||||
|
||||
|
||||
m_timer0->adjust(attotime::from_hz(120), 0, attotime::from_hz(120));
|
||||
@ -1378,7 +1378,7 @@ SFR_SPICON (at 0xd8)
|
||||
uint8_t axc51base_cpu_device::spicon_r()
|
||||
{
|
||||
uint8_t result = m_sfr_regs[SFR_SPICON] | 0x80;
|
||||
// LOGMASKED(LOG_UNSORTED,"%s: sfr_read SFR_SPICON %02x\n", machine().describe_context(), result);
|
||||
// LOGMASKED(LOG_UNSORTED,"%s: sfr_read SFR_SPICON %02x\n", machine().describe_context(), result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -1386,7 +1386,7 @@ uint8_t axc51base_cpu_device::spicon_r()
|
||||
|
||||
SFR_UARTSTA (at 0xfc)
|
||||
|
||||
7 UTRXNB (9th bit of data of RX buffer)
|
||||
7 UTRXNB (9th bit of data of RX buffer)
|
||||
6 FEF (0 = stop bit was 1 in last frame, 1 = stop bit was 0)
|
||||
5 RXIF (0 = receive not done, 1 = done)
|
||||
4 TXIF (0 = transmit not done, 1 = done)
|
||||
@ -1408,7 +1408,7 @@ uint8_t axc51base_cpu_device::uartsta_r()
|
||||
|
||||
void axc51base_cpu_device::spicon_w(uint8_t data)
|
||||
{
|
||||
// LOGMASKED(LOG_UNSORTED,"%s: sfr_write SFR_SPICON %02x\n", machine().describe_context(), data);
|
||||
// LOGMASKED(LOG_UNSORTED,"%s: sfr_write SFR_SPICON %02x\n", machine().describe_context(), data);
|
||||
m_sfr_regs[SFR_SPICON] = data;
|
||||
m_spi_out_dir_cb((data & 0x20) ? true : false);
|
||||
}
|
||||
|
@ -7,14 +7,14 @@
|
||||
#pragma once
|
||||
|
||||
// used for getting / setting current register state in debugger
|
||||
enum
|
||||
enum
|
||||
{
|
||||
SFR_STATEREG_PC=1, SFR_STATEREG_SP, SFR_STATEREG_PSW, SFR_STATEREG_ACC, SFR_STATEREG_B, SFR_STATEREG_DPTR0, SFR_STATEREG_DPTR1, SFR_STATEREG_DPH0, SFR_STATEREG_DPL0, SFR_STATEREG_IE, SFR_STATEREG_IP,
|
||||
SFR_STATEREG_P0, SFR_STATEREG_P1, SFR_STATEREG_P2, SFR_STATEREG_P3,
|
||||
SFR_STATEREG_R0, SFR_STATEREG_R1, SFR_STATEREG_R2, SFR_STATEREG_R3, SFR_STATEREG_R4, SFR_STATEREG_R5, SFR_STATEREG_R6, SFR_STATEREG_R7, SFR_STATEREG_RB,
|
||||
|
||||
SFR_STATEREG_ER0, SFR_STATEREG_ER1, SFR_STATEREG_ER2, SFR_STATEREG_ER3, SFR_ER8,
|
||||
SFR_STATEREG_GP0, SFR_STATEREG_GP1, SFR_STATEREG_GP2, SFR_STATEREG_GP3, SFR_STATEREG_GP4, SFR_STATEREG_GP5, SFR_STATEREG_GP6, SFR_STATEREG_GP7,
|
||||
SFR_STATEREG_GP0, SFR_STATEREG_GP1, SFR_STATEREG_GP2, SFR_STATEREG_GP3, SFR_STATEREG_GP4, SFR_STATEREG_GP5, SFR_STATEREG_GP6, SFR_STATEREG_GP7,
|
||||
};
|
||||
|
||||
class axc51base_cpu_device : public cpu_device
|
||||
@ -90,7 +90,7 @@ protected:
|
||||
/* Internal Ram */
|
||||
uint8_t m_sfr_regs[128];
|
||||
uint8_t m_xsfr_regs[128];
|
||||
required_shared_ptr<uint8_t> m_scratchpad;
|
||||
required_shared_ptr<uint8_t> m_scratchpad;
|
||||
required_shared_ptr<uint8_t> m_mainram;
|
||||
|
||||
uint8_t m_uid[4];
|
||||
|
@ -320,7 +320,7 @@ void axc51base_cpu_device::axc51_extended_a5(uint8_t r)
|
||||
uint16_t dpt = get_dpt(i);
|
||||
uint16_t val = get_erx(n);
|
||||
|
||||
m_io.write_word(dpt, val);
|
||||
m_io.write_word(dpt, val);
|
||||
|
||||
do_ez_flags(val);
|
||||
|
||||
@ -556,7 +556,7 @@ void axc51base_cpu_device::extended_a5_0f()
|
||||
uint16_t dpt = get_dpt(i);
|
||||
uint32_t res = val - val2 - (GET_EC);
|
||||
|
||||
m_io.write_word(dpt, res);
|
||||
m_io.write_word(dpt, res);
|
||||
|
||||
do_ec_ez_flags(res);
|
||||
|
||||
|
@ -393,7 +393,7 @@ void axc51base_cpu_device::inc_dptr(uint8_t r)
|
||||
{
|
||||
//if (m_sfr_regs[SFR_DPCON] & 0x08) // auto-increment enabled (not used here)
|
||||
//{
|
||||
// fatalerror("inc_dptr with auto-inc");
|
||||
// fatalerror("inc_dptr with auto-inc");
|
||||
//}
|
||||
|
||||
if (m_sfr_regs[SFR_DPCON] & 0x04) // auto-toggle enabled
|
||||
@ -605,7 +605,7 @@ void axc51base_cpu_device::mov_dptr_byte(uint8_t r)
|
||||
{
|
||||
//if (m_sfr_regs[SFR_DPCON] & 0x08) // auto-increment enabled (not used here)
|
||||
//{
|
||||
// fatalerror("mov_dptr_byte with auto-inc");
|
||||
// fatalerror("mov_dptr_byte with auto-inc");
|
||||
//}
|
||||
|
||||
if (m_sfr_regs[SFR_DPCON] & 0x04) // auto-toggle enabled
|
||||
|
@ -8,14 +8,14 @@
|
||||
for many opcodes, as well as:
|
||||
|
||||
- Dedicated bank switching instructions
|
||||
(20-bit external address bus + 3 chip select outputs, can address a total of 4MB)
|
||||
(20-bit external address bus + 3 chip select outputs, can address a total of 4MB)
|
||||
- Two timers, three 8-bit ports, two 8-bit ADCs
|
||||
- Keyboard controller w/ key velocity detection
|
||||
- MIDI UART
|
||||
- 24-voice DPCM sound
|
||||
|
||||
Variants include the uPD912 and GT915/uPD915.
|
||||
These were later succeeded by the uPD914.
|
||||
Variants include the uPD912 and GT915/uPD915.
|
||||
These were later succeeded by the uPD914.
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
@ -81,7 +81,7 @@ void gt913_device::map(address_map &map)
|
||||
/* fff0-fff5: I/O ports */
|
||||
map(0xfff0, 0xfff0).rw(m_port[0], FUNC(h8_port_device::ddr_r), FUNC(h8_port_device::ddr_w));
|
||||
// port 2 DDR - ctk601 and gz70sp both seem to use only bit 0 to indicate either all inputs or all outputs
|
||||
// map(0xfff1, 0xfff1).rw(m_port[1], FUNC(h8_port_device::ddr_r), FUNC(h8_port_device::ddr_w));
|
||||
// map(0xfff1, 0xfff1).rw(m_port[1], FUNC(h8_port_device::ddr_r), FUNC(h8_port_device::ddr_w));
|
||||
map(0xfff1, 0xfff1).lw8(NAME([this](uint8_t data) { m_port[1]->ddr_w(BIT(data, 0) ? 0xff : 0x00); }));
|
||||
map(0xfff2, 0xfff2).rw(m_port[0], FUNC(h8_port_device::port_r), FUNC(h8_port_device::dr_w));
|
||||
map(0xfff3, 0xfff3).rw(m_port[1], FUNC(h8_port_device::port_r), FUNC(h8_port_device::dr_w));
|
||||
@ -162,7 +162,7 @@ void gt913_device::data_w(offs_t offset, uint8_t data)
|
||||
|
||||
uint8_t gt913_device::data_r(offs_t offset)
|
||||
{
|
||||
return m_data.read_byte(offset | (m_banknum & 0xff) << 14);
|
||||
return m_data.read_byte(offset | (m_banknum & 0xff) << 14);
|
||||
}
|
||||
|
||||
uint8_t gt913_device::read8ib(uint32_t adr)
|
||||
|
@ -43,7 +43,7 @@ protected:
|
||||
void write8ib(uint32_t adr, uint8_t data);
|
||||
uint16_t read16ib(uint32_t adr);
|
||||
void write16ib(uint32_t adr, uint16_t data);
|
||||
|
||||
|
||||
virtual void update_irq_filter() override;
|
||||
virtual void interrupt_taken() override;
|
||||
virtual void internal_update(uint64_t current_time) override;
|
||||
|
@ -105,7 +105,7 @@ void ds1207_device::nvram_default()
|
||||
m_device_state = 0;
|
||||
|
||||
int expected_bytes = sizeof(m_unique_pattern) + sizeof(m_identification) + sizeof(m_security_match) + sizeof(m_secure_memory)
|
||||
+ sizeof(m_days_left) + sizeof(m_start_time) + sizeof(m_device_state);
|
||||
+ sizeof(m_days_left) + sizeof(m_start_time) + sizeof(m_device_state);
|
||||
|
||||
if(!m_region.found())
|
||||
{
|
||||
@ -266,8 +266,8 @@ WRITE_LINE_MEMBER(ds1207_device::write_clk)
|
||||
if(m_bit == 24)
|
||||
{
|
||||
LOGDATA("%s: DS1270 -> command %02x %02x %02x (%02x %02x)\n", machine().describe_context(),
|
||||
m_command[ 0 ], m_command[ 1 ], m_command[ 2 ], m_unique_pattern[ 0 ], m_unique_pattern[ 1 ]);
|
||||
|
||||
m_command[ 0 ], m_command[ 1 ], m_command[ 2 ], m_unique_pattern[ 0 ], m_unique_pattern[ 1 ]);
|
||||
|
||||
if(m_command[ 2 ] == m_unique_pattern[ 1 ] && (m_command[ 1 ] & ~3) == m_unique_pattern[ 0 ])
|
||||
{
|
||||
set_start_time();
|
||||
@ -355,8 +355,8 @@ WRITE_LINE_MEMBER(ds1207_device::write_clk)
|
||||
if(m_bit == 64)
|
||||
{
|
||||
LOGDATA("%s: DS1270 <- identification %02x %02x %02x %02x %02x %02x %02x %02x\n", machine().describe_context(),
|
||||
m_identification[ 0 ], m_identification[ 1 ], m_identification[ 2 ], m_identification[ 3 ],
|
||||
m_identification[ 4 ], m_identification[ 5 ], m_identification[ 6 ], m_identification[ 7 ]);
|
||||
m_identification[ 0 ], m_identification[ 1 ], m_identification[ 2 ], m_identification[ 3 ],
|
||||
m_identification[ 4 ], m_identification[ 5 ], m_identification[ 6 ], m_identification[ 7 ]);
|
||||
|
||||
new_state(STATE_WRITE_COMPARE_REGISTER);
|
||||
}
|
||||
@ -368,10 +368,10 @@ WRITE_LINE_MEMBER(ds1207_device::write_clk)
|
||||
if(m_bit == 64)
|
||||
{
|
||||
LOGDATA("%s: DS1207 -> compare register %02x %02x %02x %02x %02x %02x %02x %02x (%02x %02x %02x %02x %02x %02x %02x %02x)\n", machine().describe_context(),
|
||||
m_compare_register[ 0 ], m_compare_register[ 1 ], m_compare_register[ 2 ], m_compare_register[ 3 ],
|
||||
m_compare_register[ 4 ], m_compare_register[ 5 ], m_compare_register[ 6 ], m_compare_register[ 7 ],
|
||||
m_security_match[ 0 ], m_security_match[ 1 ], m_security_match[ 2 ], m_security_match[ 3 ],
|
||||
m_security_match[ 4 ], m_security_match[ 5 ], m_security_match[ 6 ], m_security_match[ 7 ]);
|
||||
m_compare_register[ 0 ], m_compare_register[ 1 ], m_compare_register[ 2 ], m_compare_register[ 3 ],
|
||||
m_compare_register[ 4 ], m_compare_register[ 5 ], m_compare_register[ 6 ], m_compare_register[ 7 ],
|
||||
m_security_match[ 0 ], m_security_match[ 1 ], m_security_match[ 2 ], m_security_match[ 3 ],
|
||||
m_security_match[ 4 ], m_security_match[ 5 ], m_security_match[ 6 ], m_security_match[ 7 ]);
|
||||
|
||||
if(memcmp(m_compare_register, m_security_match, sizeof(m_compare_register)) == 0)
|
||||
{
|
||||
@ -415,8 +415,8 @@ WRITE_LINE_MEMBER(ds1207_device::write_clk)
|
||||
if(m_bit == 64)
|
||||
{
|
||||
LOGDATA("%s: DS1207 -> identification %02x %02x %02x %02x %02x %02x %02x %02x\n", machine().describe_context(),
|
||||
m_identification[ 0 ], m_identification[ 1 ], m_identification[ 2 ], m_identification[ 3 ],
|
||||
m_identification[ 4 ], m_identification[ 5 ], m_identification[ 6 ], m_identification[ 7 ]);
|
||||
m_identification[ 0 ], m_identification[ 1 ], m_identification[ 2 ], m_identification[ 3 ],
|
||||
m_identification[ 4 ], m_identification[ 5 ], m_identification[ 6 ], m_identification[ 7 ]);
|
||||
|
||||
new_state(STATE_WRITE_SECURITY_MATCH);
|
||||
}
|
||||
@ -428,8 +428,8 @@ WRITE_LINE_MEMBER(ds1207_device::write_clk)
|
||||
if(m_bit == 64)
|
||||
{
|
||||
LOGDATA("%s: DS1207 >- security match %02x %02x %02x %02x %02x %02x %02x %02x\n", machine().describe_context(),
|
||||
m_security_match[ 0 ], m_security_match[ 1 ], m_security_match[ 2 ], m_security_match[ 3 ],
|
||||
m_security_match[ 4 ], m_security_match[ 5 ], m_security_match[ 6 ], m_security_match[ 7 ]);
|
||||
m_security_match[ 0 ], m_security_match[ 1 ], m_security_match[ 2 ], m_security_match[ 3 ],
|
||||
m_security_match[ 4 ], m_security_match[ 5 ], m_security_match[ 6 ], m_security_match[ 7 ]);
|
||||
|
||||
new_state(STATE_STOP);
|
||||
}
|
||||
@ -519,7 +519,7 @@ void ds1207_device::adjust_time_into_day()
|
||||
if(!(m_device_state & DAYS_EXPIRED) && (m_device_state & OSC_ENABLED) && (m_device_state & OSC_RUNNING))
|
||||
{
|
||||
uint64_t day_clock = ((uint64_t)m_day_clock[ 0 ]) | (((uint64_t)m_day_clock[ 1 ]) << 8) | (((uint64_t)m_day_clock[ 2 ]) << 16);
|
||||
|
||||
|
||||
const uint64_t cur_time = machine().time().as_ticks(32768) / 2700;
|
||||
const uint64_t diff_time = cur_time - m_last_update_time;
|
||||
m_last_update_time = cur_time;
|
||||
|
@ -6,7 +6,7 @@
|
||||
#pragma once
|
||||
|
||||
class generic_spi_flash_device : public device_t,
|
||||
public device_nvram_interface
|
||||
public device_nvram_interface
|
||||
{
|
||||
public:
|
||||
generic_spi_flash_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock);
|
||||
|
@ -316,7 +316,7 @@ void gt913_sound_device::command_w(u16 data)
|
||||
}
|
||||
else if (voicecmd == 0x6007)
|
||||
{
|
||||
// logerror("voice %u volume %u rate %u\n", voicenum, (m_data[0] >> 8), m_data[0] & 0xff);
|
||||
// logerror("voice %u volume %u rate %u\n", voicenum, (m_data[0] >> 8), m_data[0] & 0xff);
|
||||
|
||||
voice.m_volume_data = m_data[0];
|
||||
voice.m_volume_target = (m_data[0] & 0x7f00) << 16;
|
||||
|
@ -177,7 +177,7 @@ void msm6242_device::set_irq(bool active)
|
||||
|
||||
if (!m_out_int_handler.isnull())
|
||||
m_out_int_handler(active ? ASSERT_LINE : CLEAR_LINE);
|
||||
|
||||
|
||||
if (active)
|
||||
{
|
||||
if (!BIT(m_reg[1], 1)) // irq is pulsed
|
||||
|
@ -3,19 +3,19 @@
|
||||
/***************************************************************************
|
||||
Philips SCC66470 Video and System controller.
|
||||
|
||||
This does not render the image to the display. It is up to the user
|
||||
to provide their own screen_update function. Pixel (palette offset) data
|
||||
can be obtained by calling line( line number ) for each line.
|
||||
Some boards have multiple video sources, the source being displayed being
|
||||
selected based on pixel value...is there a nice way of doing this other
|
||||
than leaving it to the board driver ?
|
||||
This does not render the image to the display. It is up to the user
|
||||
to provide their own screen_update function. Pixel (palette offset) data
|
||||
can be obtained by calling line( line number ) for each line.
|
||||
Some boards have multiple video sources, the source being displayed being
|
||||
selected based on pixel value...is there a nice way of doing this other
|
||||
than leaving it to the board driver ?
|
||||
|
||||
Todo:
|
||||
Add support for mosaic and RLE screens.
|
||||
Add remaining pixac operations. Only BCOLOUR1/BCOLOUR2 are supported.
|
||||
Add interlaced support.
|
||||
Add bep ?
|
||||
Verify number of cycles for each access.
|
||||
Todo:
|
||||
Add support for mosaic and RLE screens.
|
||||
Add remaining pixac operations. Only BCOLOUR1/BCOLOUR2 are supported.
|
||||
Add interlaced support.
|
||||
Add bep ?
|
||||
Verify number of cycles for each access.
|
||||
***************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
@ -98,7 +98,7 @@ struct horizontal_settings
|
||||
|
||||
static const horizontal_settings h_table[] =
|
||||
{
|
||||
//cf1 cf2 ss st
|
||||
//cf1 cf2 ss st
|
||||
{ 512, 64 }, // 0 0 0 0
|
||||
{ 512, 64 }, // 0 0 0 1
|
||||
{ 512, 0 }, // 0 0 1 0
|
||||
|
@ -57,7 +57,7 @@ enum isr_bits
|
||||
ISR_LRB = 0x01, // Last Received Bit
|
||||
ISR_SSR_MASK = (ISR_MST | ISR_TRX | ISR_BB),// Mask for detecting start/stop/restart
|
||||
ISR_START = (ISR_MST | ISR_TRX | ISR_BB),// Start bit request
|
||||
ISR_STOP = (ISR_MST | ISR_TRX) // Stop bit request
|
||||
ISR_STOP = (ISR_MST | ISR_TRX) // Stop bit request
|
||||
};
|
||||
|
||||
enum umr_bits
|
||||
@ -756,7 +756,7 @@ uint8_t scc68070_device::lir_r()
|
||||
void scc68070_device::lir_w(uint8_t data)
|
||||
{
|
||||
LOGMASKED(LOG_IRQS, "%s: LIR Write: %02x\n", machine().describe_context(), data);
|
||||
|
||||
|
||||
switch (data & 0x88)
|
||||
{
|
||||
case 0x08:
|
||||
@ -874,7 +874,7 @@ uint8_t scc68070_device::idr_r()
|
||||
// I2C data register: 80002001
|
||||
if (!machine().side_effects_disabled())
|
||||
LOGMASKED(LOG_I2C, "%s: I2C Data Register Read: %02x\n", machine().describe_context(), m_i2c.data_register);
|
||||
|
||||
|
||||
m_i2c.counter = 0;
|
||||
m_i2c.status_register |= ISR_PIN;
|
||||
m_i2c_int = false;
|
||||
@ -887,7 +887,7 @@ uint8_t scc68070_device::idr_r()
|
||||
{
|
||||
m_i2c.sda_out_state = (m_i2c.control_register & ICR_ACK) ? false : true;
|
||||
m_i2c_sdaw_callback(m_i2c.sda_out_state);
|
||||
|
||||
|
||||
if (m_i2c.control_register & ICR_ACK)
|
||||
{
|
||||
m_i2c.state = I2C_SEND_ACK_AND_RX;
|
||||
@ -1004,7 +1004,7 @@ void scc68070_device::isr_w(uint8_t data)
|
||||
{
|
||||
// we should send STOP here, however, unkte06 in magicard appears to expect
|
||||
// NAK followed by STOP when in read mode.
|
||||
|
||||
|
||||
if (data & ISR_PIN)
|
||||
{
|
||||
m_i2c_int = false;
|
||||
@ -1105,7 +1105,7 @@ void scc68070_device::icr_w(uint8_t data)
|
||||
{
|
||||
LOGMASKED(LOG_I2C, "%s: I2C Control Register Write: %02x\n", machine().describe_context(), data);
|
||||
m_i2c.control_register = data;
|
||||
|
||||
|
||||
if (!(data & ICR_ESO))
|
||||
{
|
||||
m_i2c.timer->adjust(attotime::never);
|
||||
@ -1151,7 +1151,7 @@ void scc68070_device::i2c_process_falling_scl()
|
||||
m_i2c.state = I2C_GET_ACK;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case I2C_GET_ACK:
|
||||
m_i2c.status_register &= ~ISR_PIN;
|
||||
m_i2c_int = true;
|
||||
@ -1217,7 +1217,7 @@ void scc68070_device::i2c_process_rising_scl()
|
||||
m_i2c.status_register &= ~ISR_LRB;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case I2C_SEND_STOP:
|
||||
case I2C_SEND_RESTART:
|
||||
m_i2c.timer->adjust(attotime::from_nsec(5000));
|
||||
@ -1302,13 +1302,13 @@ void scc68070_device::i2c_next_state()
|
||||
i2c_process_falling_scl();
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case I2C_SCL_SET_1:
|
||||
m_i2c.clock_change_state = I2C_SCL_WAIT_1;
|
||||
m_i2c.scl_out_state = true;
|
||||
m_i2c_scl_callback(true);
|
||||
break;
|
||||
|
||||
|
||||
case I2C_SCL_WAIT_1:
|
||||
set_i2c_timer();
|
||||
m_i2c.clock_change_state = I2C_SCL_SET_0;
|
||||
|
@ -180,7 +180,7 @@ private:
|
||||
|
||||
T pop()
|
||||
{
|
||||
if (size == 0)
|
||||
if (size == 0)
|
||||
{
|
||||
fatalerror("spifi3: FIFO underflow!");
|
||||
}
|
||||
|
@ -133,7 +133,7 @@ int cp68_format::find_size(util::random_read &io, uint32_t form_factor, const st
|
||||
|
||||
for (int i=0; cp68_formats::formats[i].form_factor; i++) {
|
||||
const format &f = cp68_formats::formats[i];
|
||||
|
||||
|
||||
// Look at the system information sector.
|
||||
ec = io.read_at(f.sector_base_size * 2, &info, sizeof(struct cp68_formats::sysinfo_sector_cp68), actual);
|
||||
if (ec || actual == 0)
|
||||
|
@ -108,7 +108,7 @@ int fdos_format::find_size(util::random_read &io, uint32_t form_factor, const st
|
||||
|
||||
for (int i=0; fdos_formats::formats[i].form_factor; i++) {
|
||||
const format &f = fdos_formats::formats[i];
|
||||
|
||||
|
||||
// Format Check
|
||||
// Check byte 0 and byte 3 of Track 0 Sector 0
|
||||
// 00320 2400 BD 240C START JSR BOOT
|
||||
@ -120,13 +120,13 @@ int fdos_format::find_size(util::random_read &io, uint32_t form_factor, const st
|
||||
return -1;
|
||||
if (boot0[0] != 0xbd && boot0[3] != 0xde)
|
||||
continue;
|
||||
|
||||
|
||||
LOG_FORMATS("FDOS floppy dsk: size %u bytes, %u total sectors, %u remaining bytes, expected form factor %x\n",
|
||||
size,
|
||||
size / f.sector_base_size,
|
||||
size % f.sector_base_size,
|
||||
form_factor);
|
||||
|
||||
|
||||
// Directory entries start at Track 2 Sector 0
|
||||
ec = io.read_at(2 * f.sector_count * f.sector_base_size, &info, sizeof(struct fdos_formats::dirent_entry_fdos), actual);
|
||||
if (ec || actual != sizeof(struct fdos_formats::dirent_entry_fdos))
|
||||
|
@ -2,15 +2,15 @@
|
||||
// copyright-holders:Nathan Woods
|
||||
/***************************************************************************
|
||||
|
||||
fs_fat.cpp
|
||||
fs_fat.cpp
|
||||
|
||||
PC FAT disk images
|
||||
PC FAT disk images
|
||||
|
||||
Current Limitations:
|
||||
- Read only
|
||||
- Only supports floppy disks
|
||||
- No FAT32 support
|
||||
- No Long Filenames Support
|
||||
Current Limitations:
|
||||
- Read only
|
||||
- Only supports floppy disks
|
||||
- No FAT32 support
|
||||
- No Long Filenames Support
|
||||
|
||||
*****************************************************************************
|
||||
|
||||
@ -18,125 +18,125 @@
|
||||
|
||||
Offset Length Description
|
||||
------ ------ -----------
|
||||
0 446 Boot machine code
|
||||
446 16 Partion #1 info
|
||||
462 16 Partion #2 info
|
||||
478 16 Partion #3 info
|
||||
494 16 Partion #4 info
|
||||
510 2 Magic bytes (0x55 0xAA)
|
||||
0 446 Boot machine code
|
||||
446 16 Partion #1 info
|
||||
462 16 Partion #2 info
|
||||
478 16 Partion #3 info
|
||||
494 16 Partion #4 info
|
||||
510 2 Magic bytes (0x55 0xAA)
|
||||
|
||||
|
||||
Partition info format:
|
||||
|
||||
Offset Length Description
|
||||
------ ------ -----------
|
||||
0 1 Active byte (0x80=active 0x00=inactive)
|
||||
1 1 Starting head
|
||||
2 1 Starting sector (bits 5-0) and high bits of starting track (bits 6-5)
|
||||
3 1 Low bits of starting track
|
||||
4 1 Partition type:
|
||||
0x00 Unused
|
||||
0x?1 FAT12 (0-15 MB)
|
||||
0x?2 XENIX
|
||||
0x?4 FAT16 (16-32 MB)
|
||||
0x?6 FAT16` (32 MB-2 GB)
|
||||
0x?7 HPFS or NTFS
|
||||
0x?A Boot Manager
|
||||
0x?B FAT32 (512 MB-2 TB)
|
||||
0x?C FAT32 (512 MB-2 TB LBA)
|
||||
0x1? OS/2 Boot manager/Win95 hidden
|
||||
0xC? DR-DOS secured partition
|
||||
0xD? Multiuser DOS secured partition
|
||||
0xE? SpeedStor extended partition
|
||||
5 1 Ending head
|
||||
6 1 Ending sector (bits 5-0) and high bits of ending track (bits 6-5)
|
||||
7 1 Low bits of ending track
|
||||
8 4 Sector index of beginning of partition
|
||||
12 4 Total sectors in partition
|
||||
0 1 Active byte (0x80=active 0x00=inactive)
|
||||
1 1 Starting head
|
||||
2 1 Starting sector (bits 5-0) and high bits of starting track (bits 6-5)
|
||||
3 1 Low bits of starting track
|
||||
4 1 Partition type:
|
||||
0x00 Unused
|
||||
0x?1 FAT12 (0-15 MB)
|
||||
0x?2 XENIX
|
||||
0x?4 FAT16 (16-32 MB)
|
||||
0x?6 FAT16` (32 MB-2 GB)
|
||||
0x?7 HPFS or NTFS
|
||||
0x?A Boot Manager
|
||||
0x?B FAT32 (512 MB-2 TB)
|
||||
0x?C FAT32 (512 MB-2 TB LBA)
|
||||
0x1? OS/2 Boot manager/Win95 hidden
|
||||
0xC? DR-DOS secured partition
|
||||
0xD? Multiuser DOS secured partition
|
||||
0xE? SpeedStor extended partition
|
||||
5 1 Ending head
|
||||
6 1 Ending sector (bits 5-0) and high bits of ending track (bits 6-5)
|
||||
7 1 Low bits of ending track
|
||||
8 4 Sector index of beginning of partition
|
||||
12 4 Total sectors in partition
|
||||
|
||||
|
||||
Boot sector format:
|
||||
|
||||
Offset Length Description
|
||||
------ ------ -----------
|
||||
0 3 Jump instruction (to skip over header on boot)
|
||||
3 8 OEM Name
|
||||
11 2 Bytes per sector
|
||||
13 1 Sectors per cluster
|
||||
14 2 Reserved sector count (including boot sector)
|
||||
16 1 Number of FATs (file allocation tables)
|
||||
17 2 Number of root directory entries
|
||||
19 2 Total sectors (bits 0-15)
|
||||
21 1 Media descriptor
|
||||
22 2 Sectors per FAT
|
||||
24 2 Sectors per track
|
||||
26 2 Number of heads
|
||||
28 4 Hidden sectors
|
||||
32 4 Total sectors (bits 16-47)
|
||||
36 1 Physical drive number
|
||||
37 1 Current head
|
||||
38 1 Signature
|
||||
39 4 ID
|
||||
43 11 Volume Label
|
||||
54 8 FAT file system type
|
||||
62 448 Boot machine code
|
||||
510 2 Magic bytes (0x55 0xAA)
|
||||
0 3 Jump instruction (to skip over header on boot)
|
||||
3 8 OEM Name
|
||||
11 2 Bytes per sector
|
||||
13 1 Sectors per cluster
|
||||
14 2 Reserved sector count (including boot sector)
|
||||
16 1 Number of FATs (file allocation tables)
|
||||
17 2 Number of root directory entries
|
||||
19 2 Total sectors (bits 0-15)
|
||||
21 1 Media descriptor
|
||||
22 2 Sectors per FAT
|
||||
24 2 Sectors per track
|
||||
26 2 Number of heads
|
||||
28 4 Hidden sectors
|
||||
32 4 Total sectors (bits 16-47)
|
||||
36 1 Physical drive number
|
||||
37 1 Current head
|
||||
38 1 Signature
|
||||
39 4 ID
|
||||
43 11 Volume Label
|
||||
54 8 FAT file system type
|
||||
62 448 Boot machine code
|
||||
510 2 Magic bytes (0x55 0xAA)
|
||||
|
||||
For more information:
|
||||
http://support.microsoft.com/kb/q140418/
|
||||
http://support.microsoft.com/kb/q140418/
|
||||
|
||||
|
||||
Directory Entry Format:
|
||||
|
||||
Offset Length Description
|
||||
------ ------ -----------
|
||||
0 8 DOS File Name (padded with spaces)
|
||||
8 3 DOS File Extension (padded with spaces)
|
||||
11 1 File Attributes
|
||||
12 2 Unknown
|
||||
14 4 Time of Creation
|
||||
18 2 Last Access Time
|
||||
20 2 EA-Index (OS/2 stuff)
|
||||
22 4 Last Modified Time
|
||||
26 2 First Cluster
|
||||
28 4 File Size
|
||||
0 8 DOS File Name (padded with spaces)
|
||||
8 3 DOS File Extension (padded with spaces)
|
||||
11 1 File Attributes
|
||||
12 2 Unknown
|
||||
14 4 Time of Creation
|
||||
18 2 Last Access Time
|
||||
20 2 EA-Index (OS/2 stuff)
|
||||
22 4 Last Modified Time
|
||||
26 2 First Cluster
|
||||
28 4 File Size
|
||||
|
||||
|
||||
Dates and times are stored in separate words; when together, the time is
|
||||
first and the date is second.
|
||||
|
||||
Time:
|
||||
bits 15-11 Hour
|
||||
bits 10- 5 Minute
|
||||
bits 4- 0 Second / 2
|
||||
Time:
|
||||
bits 15-11 Hour
|
||||
bits 10- 5 Minute
|
||||
bits 4- 0 Second / 2
|
||||
|
||||
Date:
|
||||
bits 15- 9 Year - 1980
|
||||
bits 8- 5 Month
|
||||
bits 4- 0 Day
|
||||
Date:
|
||||
bits 15- 9 Year - 1980
|
||||
bits 8- 5 Month
|
||||
bits 4- 0 Day
|
||||
|
||||
LFN Entry Format:
|
||||
|
||||
Offset Length Description
|
||||
------ ------ -----------
|
||||
0 1 Sequence Number (bit 6 is set on highest sequence)
|
||||
1 10 Name characters (five UTF-16LE chars)
|
||||
11 1 Attributes (always 0x0F)
|
||||
12 1 Reserved (always 0x00)
|
||||
13 1 Checksum of short filename entry
|
||||
14 12 Name characters (six UTF-16LE chars)
|
||||
26 2 Entry Cluster (always 0x00)
|
||||
28 4 Name characters (two UTF-16LE chars)
|
||||
0 1 Sequence Number (bit 6 is set on highest sequence)
|
||||
1 10 Name characters (five UTF-16LE chars)
|
||||
11 1 Attributes (always 0x0F)
|
||||
12 1 Reserved (always 0x00)
|
||||
13 1 Checksum of short filename entry
|
||||
14 12 Name characters (six UTF-16LE chars)
|
||||
26 2 Entry Cluster (always 0x00)
|
||||
28 4 Name characters (two UTF-16LE chars)
|
||||
|
||||
Valid characters in DOS file names:
|
||||
- Upper case letters A-Z
|
||||
- Numbers 0-9
|
||||
- Space (though there is no way to identify a trailing space)
|
||||
- ! # $ % & ( ) - @ ^ _ ` { } ~
|
||||
- Characters 128-255 (though the code page is indeterminate)
|
||||
- Upper case letters A-Z
|
||||
- Numbers 0-9
|
||||
- Space (though there is no way to identify a trailing space)
|
||||
- ! # $ % & ( ) - @ ^ _ ` { } ~
|
||||
- Characters 128-255 (though the code page is indeterminate)
|
||||
|
||||
For more information:
|
||||
http://en.wikipedia.org/wiki/File_Allocation_Table
|
||||
http://en.wikipedia.org/wiki/File_Allocation_Table
|
||||
|
||||
****************************************************************************/
|
||||
|
||||
@ -169,27 +169,27 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
std::string_view raw_stem() const { return std::string_view((const char *) &m_block.rodata()[m_offset + 0], 8); }
|
||||
std::string_view raw_ext() const { return std::string_view((const char *) &m_block.rodata()[m_offset + 8], 3); }
|
||||
u8 attributes() const { return m_block.r8(m_offset + 11); }
|
||||
u32 raw_create_datetime() const { return m_block.r32l(m_offset + 14); }
|
||||
u32 raw_modified_datetime() const { return m_block.r32l(m_offset + 22); }
|
||||
u32 start_cluster() const { return ((u32)m_block.r16l(m_offset + 20)) << 16 | m_block.r16l(m_offset + 26); }
|
||||
u32 file_size() const { return m_block.r32l(m_offset + 28); }
|
||||
std::string_view raw_stem() const { return std::string_view((const char *) &m_block.rodata()[m_offset + 0], 8); }
|
||||
std::string_view raw_ext() const { return std::string_view((const char *) &m_block.rodata()[m_offset + 8], 3); }
|
||||
u8 attributes() const { return m_block.r8(m_offset + 11); }
|
||||
u32 raw_create_datetime() const { return m_block.r32l(m_offset + 14); }
|
||||
u32 raw_modified_datetime() const { return m_block.r32l(m_offset + 22); }
|
||||
u32 start_cluster() const { return ((u32)m_block.r16l(m_offset + 20)) << 16 | m_block.r16l(m_offset + 26); }
|
||||
u32 file_size() const { return m_block.r32l(m_offset + 28); }
|
||||
|
||||
bool is_read_only() const { return (attributes() & 0x01) != 0x00; }
|
||||
bool is_hidden() const { return (attributes() & 0x02) != 0x00; }
|
||||
bool is_system() const { return (attributes() & 0x04) != 0x00; }
|
||||
bool is_volume_label() const { return (attributes() & 0x08) != 0x00; }
|
||||
bool is_subdirectory() const { return (attributes() & 0x10) != 0x00; }
|
||||
bool is_archive() const { return (attributes() & 0x20) != 0x00; }
|
||||
bool is_read_only() const { return (attributes() & 0x01) != 0x00; }
|
||||
bool is_hidden() const { return (attributes() & 0x02) != 0x00; }
|
||||
bool is_system() const { return (attributes() & 0x04) != 0x00; }
|
||||
bool is_volume_label() const { return (attributes() & 0x08) != 0x00; }
|
||||
bool is_subdirectory() const { return (attributes() & 0x10) != 0x00; }
|
||||
bool is_archive() const { return (attributes() & 0x20) != 0x00; }
|
||||
|
||||
std::string name() const;
|
||||
meta_data metadata() const;
|
||||
|
||||
private:
|
||||
fsblk_t::block_t m_block;
|
||||
u32 m_offset;
|
||||
fsblk_t::block_t m_block;
|
||||
u32 m_offset;
|
||||
};
|
||||
|
||||
|
||||
@ -231,13 +231,13 @@ public:
|
||||
std::vector<u32> get_sectors_from_fat(const directory_entry &dirent) const;
|
||||
|
||||
private:
|
||||
fsblk_t::block_t m_boot_sector_block;
|
||||
std::vector<u8> m_file_allocation_table;
|
||||
u32 m_starting_sector;
|
||||
u32 m_sector_count;
|
||||
u16 m_reserved_sector_count;
|
||||
u16 m_bytes_per_sector;
|
||||
u8 m_bits_per_fat_entry;
|
||||
fsblk_t::block_t m_boot_sector_block;
|
||||
std::vector<u8> m_file_allocation_table;
|
||||
u32 m_starting_sector;
|
||||
u32 m_sector_count;
|
||||
u16 m_reserved_sector_count;
|
||||
u16 m_bytes_per_sector;
|
||||
u8 m_bits_per_fat_entry;
|
||||
|
||||
// methods
|
||||
std::optional<directory_entry> find_entity(const std::vector<std::string> &path) const;
|
||||
@ -257,9 +257,9 @@ public:
|
||||
virtual std::vector<u32> get_directory_sectors() const override;
|
||||
|
||||
private:
|
||||
const impl & m_fs;
|
||||
u32 m_first_sector;
|
||||
u16 m_directory_entry_count;
|
||||
const impl & m_fs;
|
||||
u32 m_first_sector;
|
||||
u16 m_directory_entry_count;
|
||||
};
|
||||
|
||||
|
||||
@ -273,8 +273,8 @@ public:
|
||||
virtual std::vector<u32> get_directory_sectors() const override;
|
||||
|
||||
private:
|
||||
const impl & m_fs;
|
||||
directory_entry m_dirent;
|
||||
const impl & m_fs;
|
||||
directory_entry m_dirent;
|
||||
};
|
||||
|
||||
|
||||
@ -286,7 +286,7 @@ private:
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// validate_filename
|
||||
// validate_filename
|
||||
//-------------------------------------------------
|
||||
|
||||
namespace {
|
||||
@ -303,7 +303,7 @@ bool validate_filename(std::string_view name)
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// decode_fat_datetime
|
||||
// decode_fat_datetime
|
||||
//-------------------------------------------------
|
||||
|
||||
util::arbitrary_datetime decode_fat_datetime(u32 dt)
|
||||
@ -311,12 +311,12 @@ util::arbitrary_datetime decode_fat_datetime(u32 dt)
|
||||
util::arbitrary_datetime result;
|
||||
memset(&result, 0, sizeof(result));
|
||||
|
||||
result.year = ((dt >> 25) & 0x7F) + 1980;
|
||||
result.month = (dt >> 21) & 0x0F;
|
||||
result.day_of_month = (dt >> 16) & 0x1F;
|
||||
result.hour = (dt >> 11) & 0x1F;
|
||||
result.minute = (dt >> 5) & 0x3F;
|
||||
result.second = ((dt >> 0) & 0x1F) * 2;
|
||||
result.year = ((dt >> 25) & 0x7F) + 1980;
|
||||
result.month = (dt >> 21) & 0x0F;
|
||||
result.day_of_month = (dt >> 16) & 0x1F;
|
||||
result.hour = (dt >> 11) & 0x1F;
|
||||
result.minute = (dt >> 5) & 0x3F;
|
||||
result.second = ((dt >> 0) & 0x1F) * 2;
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -324,7 +324,7 @@ util::arbitrary_datetime decode_fat_datetime(u32 dt)
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// fat_image::can_format
|
||||
// fat_image::can_format
|
||||
//-------------------------------------------------
|
||||
|
||||
bool fs::fat_image::can_format() const
|
||||
@ -334,7 +334,7 @@ bool fs::fat_image::can_format() const
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// fat_image::can_read
|
||||
// fat_image::can_read
|
||||
//-------------------------------------------------
|
||||
|
||||
bool fs::fat_image::can_read() const
|
||||
@ -344,7 +344,7 @@ bool fs::fat_image::can_read() const
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// fat_image::can_write
|
||||
// fat_image::can_write
|
||||
//-------------------------------------------------
|
||||
|
||||
bool fs::fat_image::can_write() const
|
||||
@ -354,7 +354,7 @@ bool fs::fat_image::can_write() const
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// fat_image::has_rsrc
|
||||
// fat_image::has_rsrc
|
||||
//-------------------------------------------------
|
||||
|
||||
bool fs::fat_image::has_rsrc() const
|
||||
@ -364,7 +364,7 @@ bool fs::fat_image::has_rsrc() const
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// fat_image::directory_separator
|
||||
// fat_image::directory_separator
|
||||
//-------------------------------------------------
|
||||
|
||||
char fs::fat_image::directory_separator() const
|
||||
@ -374,20 +374,20 @@ char fs::fat_image::directory_separator() const
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// fat_image::volume_meta_description
|
||||
// fat_image::volume_meta_description
|
||||
//-------------------------------------------------
|
||||
|
||||
std::vector<meta_description> fs::fat_image::volume_meta_description() const
|
||||
{
|
||||
std::vector<meta_description> results;
|
||||
results.emplace_back(meta_name::name, "UNTITLED", false, [](const meta_value &m) { return m.as_string().size() <= 11; }, "Volume name, up to 11 characters");
|
||||
results.emplace_back(meta_name::oem_name, "", false, [](const meta_value &m) { return m.as_string().size() <= 8; }, "OEM name, up to 8 characters");
|
||||
results.emplace_back(meta_name::name, "UNTITLED", false, [](const meta_value &m) { return m.as_string().size() <= 11; }, "Volume name, up to 11 characters");
|
||||
results.emplace_back(meta_name::oem_name, "", false, [](const meta_value &m) { return m.as_string().size() <= 8; }, "OEM name, up to 8 characters");
|
||||
return results;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// fat_image::file_meta_description
|
||||
// fat_image::file_meta_description
|
||||
//-------------------------------------------------
|
||||
|
||||
std::vector<meta_description> fs::fat_image::file_meta_description() const
|
||||
@ -402,7 +402,7 @@ std::vector<meta_description> fs::fat_image::file_meta_description() const
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// fat_image::directory_meta_description
|
||||
// fat_image::directory_meta_description
|
||||
//-------------------------------------------------
|
||||
|
||||
std::vector<meta_description> fs::fat_image::directory_meta_description() const
|
||||
@ -416,7 +416,7 @@ std::vector<meta_description> fs::fat_image::directory_meta_description() const
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// fat_image::mount_partition
|
||||
// fat_image::mount_partition
|
||||
//-------------------------------------------------
|
||||
|
||||
std::unique_ptr<filesystem_t> fs::fat_image::mount_partition(fsblk_t &blockdev, u32 starting_sector, u32 sector_count, u8 bits_per_fat_entry)
|
||||
@ -444,7 +444,7 @@ std::unique_ptr<filesystem_t> fs::fat_image::mount_partition(fsblk_t &blockdev,
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// directory_entry::name
|
||||
// directory_entry::name
|
||||
//-------------------------------------------------
|
||||
|
||||
std::string directory_entry::name() const
|
||||
@ -458,22 +458,22 @@ std::string directory_entry::name() const
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// directory_entry::metadata
|
||||
// directory_entry::metadata
|
||||
//-------------------------------------------------
|
||||
|
||||
meta_data directory_entry::metadata() const
|
||||
{
|
||||
meta_data result;
|
||||
result.set(meta_name::name, name());
|
||||
result.set(meta_name::creation_date, decode_fat_datetime(raw_create_datetime()));
|
||||
result.set(meta_name::modification_date, decode_fat_datetime(raw_modified_datetime()));
|
||||
result.set(meta_name::length, file_size());
|
||||
result.set(meta_name::name, name());
|
||||
result.set(meta_name::creation_date, decode_fat_datetime(raw_create_datetime()));
|
||||
result.set(meta_name::modification_date, decode_fat_datetime(raw_modified_datetime()));
|
||||
result.set(meta_name::length, file_size());
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// impl ctor
|
||||
// impl ctor
|
||||
//-------------------------------------------------
|
||||
|
||||
impl::impl(fsblk_t &blockdev, fsblk_t::block_t &&boot_sector_block, std::vector<u8> &&file_allocation_table, u32 starting_sector, u32 sector_count, u16 reserved_sector_count, u8 bits_per_fat_entry)
|
||||
@ -490,20 +490,20 @@ impl::impl(fsblk_t &blockdev, fsblk_t::block_t &&boot_sector_block, std::vector<
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// impl::volume_metadata
|
||||
// impl::volume_metadata
|
||||
//-------------------------------------------------
|
||||
|
||||
meta_data impl::volume_metadata()
|
||||
{
|
||||
meta_data results;
|
||||
results.set(meta_name::name, m_boot_sector_block.rstr(43, 11));
|
||||
results.set(meta_name::oem_name, m_boot_sector_block.rstr(3, 8));
|
||||
results.set(meta_name::name, m_boot_sector_block.rstr(43, 11));
|
||||
results.set(meta_name::oem_name, m_boot_sector_block.rstr(3, 8));
|
||||
return results;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// impl::metadata
|
||||
// impl::metadata
|
||||
//-------------------------------------------------
|
||||
|
||||
std::pair<err_t, meta_data> impl::metadata(const std::vector<std::string> &path)
|
||||
@ -517,7 +517,7 @@ std::pair<err_t, meta_data> impl::metadata(const std::vector<std::string> &path)
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// impl::directory_contents
|
||||
// impl::directory_contents
|
||||
//-------------------------------------------------
|
||||
|
||||
std::pair<err_t, std::vector<dir_entry>> impl::directory_contents(const std::vector<std::string> &path)
|
||||
@ -539,7 +539,7 @@ std::pair<err_t, std::vector<dir_entry>> impl::directory_contents(const std::vec
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// impl::file_read
|
||||
// impl::file_read
|
||||
//-------------------------------------------------
|
||||
|
||||
std::pair<err_t, std::vector<u8>> impl::file_read(const std::vector<std::string> &path)
|
||||
@ -569,7 +569,7 @@ std::pair<err_t, std::vector<u8>> impl::file_read(const std::vector<std::string>
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// impl::get_sectors_from_fat
|
||||
// impl::get_sectors_from_fat
|
||||
//-------------------------------------------------
|
||||
|
||||
std::vector<u32> impl::get_sectors_from_fat(const directory_entry &dirent) const
|
||||
@ -629,7 +629,7 @@ std::vector<u32> impl::get_sectors_from_fat(const directory_entry &dirent) const
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// impl::find_entity
|
||||
// impl::find_entity
|
||||
//-------------------------------------------------
|
||||
|
||||
std::optional<directory_entry> impl::find_entity(const std::vector<std::string> &path) const
|
||||
@ -649,7 +649,7 @@ std::optional<directory_entry> impl::find_entity(const std::vector<std::string>
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// impl::find_directory
|
||||
// impl::find_directory
|
||||
//-------------------------------------------------
|
||||
|
||||
directory_span::ptr impl::find_directory(std::vector<std::string>::const_iterator path_begin, std::vector<std::string>::const_iterator path_end) const
|
||||
@ -676,7 +676,7 @@ directory_span::ptr impl::find_directory(std::vector<std::string>::const_iterato
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// impl::find_child
|
||||
// impl::find_child
|
||||
//-------------------------------------------------
|
||||
|
||||
std::optional<directory_entry> impl::find_child(const directory_span ¤t_dir, std::string_view target) const
|
||||
@ -695,7 +695,7 @@ std::optional<directory_entry> impl::find_child(const directory_span ¤t_di
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// impl::iterate_directory_entries
|
||||
// impl::iterate_directory_entries
|
||||
//-------------------------------------------------
|
||||
|
||||
void impl::iterate_directory_entries(const directory_span &dir, const std::function<bool(const directory_entry &dirent)> &callback) const
|
||||
@ -728,7 +728,7 @@ void impl::iterate_directory_entries(const directory_span &dir, const std::funct
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// root_directory_span ctor
|
||||
// root_directory_span ctor
|
||||
//-------------------------------------------------
|
||||
|
||||
root_directory_span::root_directory_span(const impl &fs, u32 first_sector, u16 directory_entry_count)
|
||||
@ -740,7 +740,7 @@ root_directory_span::root_directory_span(const impl &fs, u32 first_sector, u16 d
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// root_directory_span::get_directory_sectors
|
||||
// root_directory_span::get_directory_sectors
|
||||
//-------------------------------------------------
|
||||
|
||||
std::vector<u32> root_directory_span::get_directory_sectors() const
|
||||
@ -756,7 +756,7 @@ std::vector<u32> root_directory_span::get_directory_sectors() const
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// subdirectory_span ctor
|
||||
// subdirectory_span ctor
|
||||
//-------------------------------------------------
|
||||
|
||||
subdirectory_span::subdirectory_span(const impl &fs, directory_entry &&dirent)
|
||||
@ -767,7 +767,7 @@ subdirectory_span::subdirectory_span(const impl &fs, directory_entry &&dirent)
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// subdirectory_span::get_directory_sectors
|
||||
// subdirectory_span::get_directory_sectors
|
||||
//-------------------------------------------------
|
||||
|
||||
std::vector<u32> subdirectory_span::get_directory_sectors() const
|
||||
@ -781,7 +781,7 @@ std::vector<u32> subdirectory_span::get_directory_sectors() const
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// pc_fat_image::name
|
||||
// pc_fat_image::name
|
||||
//-------------------------------------------------
|
||||
|
||||
const char *fs::pc_fat_image::name() const
|
||||
@ -791,7 +791,7 @@ const char *fs::pc_fat_image::name() const
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// pc_fat_image::description
|
||||
// pc_fat_image::description
|
||||
//-------------------------------------------------
|
||||
|
||||
const char *fs::pc_fat_image::description() const
|
||||
@ -801,7 +801,7 @@ const char *fs::pc_fat_image::description() const
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// pc_fat_image::enumerate_f
|
||||
// pc_fat_image::enumerate_f
|
||||
//-------------------------------------------------
|
||||
|
||||
void pc_fat_image::enumerate_f(floppy_enumerator &fe, u32 form_factor, const std::vector<u32> &variants) const
|
||||
@ -818,7 +818,7 @@ void pc_fat_image::enumerate_f(floppy_enumerator &fe, u32 form_factor, const std
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// pc_fat_image::mount
|
||||
// pc_fat_image::mount
|
||||
//-------------------------------------------------
|
||||
|
||||
std::unique_ptr<filesystem_t> pc_fat_image::mount(fsblk_t &blockdev) const
|
||||
|
@ -2,9 +2,9 @@
|
||||
// copyright-holders:Nathan Woods
|
||||
/***************************************************************************
|
||||
|
||||
fs_fat.h
|
||||
fs_fat.h
|
||||
|
||||
PC FAT disk images
|
||||
PC FAT disk images
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
TODO:
|
||||
- Move RBV machines (IIci/IIsi) to separate driver?
|
||||
- Move IIfx to separate driver?
|
||||
- Rewrite this driver in the newer (maclc3/maciivx/maclc) style as macii.cpp?
|
||||
- Rewrite this driver in the newer (maclc3/maciivx/maclc) style as macii.cpp?
|
||||
|
||||
****************************************************************************/
|
||||
|
||||
|
@ -2,19 +2,19 @@
|
||||
// copyright-holders:SomeRandomGuyIdk
|
||||
/**********************************************************************
|
||||
|
||||
Barcrest MPU1 (1978)
|
||||
Barcrest MPU1 (1978)
|
||||
|
||||
Barcrest's first fruit machine platform to use a conventional CPU,
|
||||
possibly the first of it's kind. Has electromechanical reels
|
||||
instead of the usual stepper reels. The hardware features a MC6800
|
||||
CPU clocked at around 1 MHz, 128 bytes of RAM and two PIAs for I/O.
|
||||
The PIAs can interface with up to 13 lamps, 4 reels, 8 triacs and 12 inputs
|
||||
(4 of these being special coin inputs). A 1-bit DAC is used for audio.
|
||||
Games are stored on cartridges that can hold up to 4K of data.
|
||||
Most cartridges use a common 2K mask ROM, with the remaining 2K
|
||||
available for the game program.
|
||||
|
||||
TODO:
|
||||
Barcrest's first fruit machine platform to use a conventional CPU,
|
||||
possibly the first of it's kind. Has electromechanical reels
|
||||
instead of the usual stepper reels. The hardware features a MC6800
|
||||
CPU clocked at around 1 MHz, 128 bytes of RAM and two PIAs for I/O.
|
||||
The PIAs can interface with up to 13 lamps, 4 reels, 8 triacs and 12 inputs
|
||||
(4 of these being special coin inputs). A 1-bit DAC is used for audio.
|
||||
Games are stored on cartridges that can hold up to 4K of data.
|
||||
Most cartridges use a common 2K mask ROM, with the remaining 2K
|
||||
available for the game program.
|
||||
|
||||
TODO:
|
||||
- Layouts (there currently aren't any...)
|
||||
|
||||
**********************************************************************/
|
||||
@ -185,7 +185,7 @@ uint8_t mpu1_state::pia2_porta_r()
|
||||
uint16_t pos = m_reel_pos[m_reel_select];
|
||||
if(pos % 20 == 0)
|
||||
return (pos / 20) + 1;
|
||||
else
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
@ -254,7 +254,7 @@ TIMER_CALLBACK_MEMBER( mpu1_state::change_pia2a_bit7 )
|
||||
}
|
||||
|
||||
/* MPU1 does not have stepper reels, it instead uses an electromechanical reel system.
|
||||
Each reel has a single output - setting the output high causes the reel to start moving,
|
||||
Each reel has a single output - setting the output high causes the reel to start moving,
|
||||
and once it's set back low, the reel will stop at whichever symbol it's heading towards.
|
||||
Position tracking is done via contacts on index plates below each symbol, which the CPU
|
||||
will read once all reels are stopped.
|
||||
@ -287,7 +287,7 @@ void mpu1_state::reel_w(int reel, bool state)
|
||||
}
|
||||
}
|
||||
|
||||
template <unsigned Reel>
|
||||
template <unsigned Reel>
|
||||
TIMER_CALLBACK_MEMBER( mpu1_state::reel_move )
|
||||
{
|
||||
if(m_reel_pos[Reel] == 0)
|
||||
@ -390,7 +390,7 @@ void mpu1_state::machine_start()
|
||||
m_reel_timer[3] = timer_alloc(FUNC(mpu1_state::reel_move<3>), this);
|
||||
m_change_pia2a_bit7_timer = timer_alloc(FUNC(mpu1_state::change_pia2a_bit7), this);
|
||||
|
||||
for(int i = 0; i < 4; i++)
|
||||
for(int i = 0; i < 4; i++)
|
||||
{
|
||||
m_reel_state[i] = REEL_STOPPED;
|
||||
m_reel_pos[i] = 0;
|
||||
|
@ -1,117 +1,117 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Devin Acker
|
||||
/*
|
||||
Casio GT913-based keyboards and MIDI modules
|
||||
Casio GT913-based keyboards and MIDI modules
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Celviano AP-10 digital piano (1995)
|
||||
Celviano AP-10 digital piano (1995)
|
||||
|
||||
Main board (JCM358-MA1M):
|
||||
LSI301: CPU (Casio/NEC uPD912GF)
|
||||
LSI302: DSP (Hitachi HG51B277FB)
|
||||
LSI303: 8Mbit ROM (Macronix MX23C8100MC-12)
|
||||
LSI304: 64kbit SRAM for CPU (Sanyo LC3564SM-85), battery backed
|
||||
LSI305: 256kbit SRAM for DSP (Sanyo LC333832M-70)
|
||||
LSI306: stereo DAC (NEC uPD6379GR)
|
||||
X301: 24MHz crystal for CPU
|
||||
X302: 16MHz ceramic for DSP
|
||||
Main board (JCM358-MA1M):
|
||||
LSI301: CPU (Casio/NEC uPD912GF)
|
||||
LSI302: DSP (Hitachi HG51B277FB)
|
||||
LSI303: 8Mbit ROM (Macronix MX23C8100MC-12)
|
||||
LSI304: 64kbit SRAM for CPU (Sanyo LC3564SM-85), battery backed
|
||||
LSI305: 256kbit SRAM for DSP (Sanyo LC333832M-70)
|
||||
LSI306: stereo DAC (NEC uPD6379GR)
|
||||
X301: 24MHz crystal for CPU
|
||||
X302: 16MHz ceramic for DSP
|
||||
|
||||
Service manual with schematics, pinouts, etc.:
|
||||
https://revenant1.net/casio/manuals/upd91x/ap10.pdf
|
||||
Service manual with schematics, pinouts, etc.:
|
||||
https://revenant1.net/casio/manuals/upd91x/ap10.pdf
|
||||
|
||||
To access the test mode (not mentioned in the service manual):
|
||||
Hold both pedals and "Transpose/Tune/MIDI" while turning on the keyboard, then release the button.
|
||||
Afterwards, press one of these buttons:
|
||||
- Transpose: LED test
|
||||
- Effect: switch test (press all front panel buttons left to right)
|
||||
- Piano: key test (press all keys left to right)
|
||||
- E.Piano: ROM test
|
||||
- Organ/Strings/Song: sound volume test
|
||||
- Record/Start/Stop: stereo test
|
||||
- Demo: MIDI loopback test
|
||||
- Harpsichord: exit test mode
|
||||
To access the test mode (not mentioned in the service manual):
|
||||
Hold both pedals and "Transpose/Tune/MIDI" while turning on the keyboard, then release the button.
|
||||
Afterwards, press one of these buttons:
|
||||
- Transpose: LED test
|
||||
- Effect: switch test (press all front panel buttons left to right)
|
||||
- Piano: key test (press all keys left to right)
|
||||
- E.Piano: ROM test
|
||||
- Organ/Strings/Song: sound volume test
|
||||
- Record/Start/Stop: stereo test
|
||||
- Demo: MIDI loopback test
|
||||
- Harpsichord: exit test mode
|
||||
|
||||
TODO: fix backup RAM getting re-initialized on every boot.
|
||||
Depends on the power switch being implemented correctly - turning the power off
|
||||
is supposed to trigger a NMI which updates the RAM checksum, but the NMI handler
|
||||
always proceeds to fully start up the system as if the power is being turned on
|
||||
TODO: fix backup RAM getting re-initialized on every boot.
|
||||
Depends on the power switch being implemented correctly - turning the power off
|
||||
is supposed to trigger a NMI which updates the RAM checksum, but the NMI handler
|
||||
always proceeds to fully start up the system as if the power is being turned on
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
General MIDI modules (1996)
|
||||
General MIDI modules (1996)
|
||||
|
||||
- GZ-30M
|
||||
Basic model, small desktop module
|
||||
- GZ-30M
|
||||
Basic model, small desktop module
|
||||
No 5-pin MIDI jack, only mini-DIN for RS-232 or RS-422
|
||||
- GZ-70SP
|
||||
MIDI module built into a pair of speakers w/ karaoke mic input
|
||||
Provides both standard MIDI and mini-DIN connectors
|
||||
- WG-130
|
||||
WaveBlaster-style PC daughterboard
|
||||
- GZ-70SP
|
||||
MIDI module built into a pair of speakers w/ karaoke mic input
|
||||
Provides both standard MIDI and mini-DIN connectors
|
||||
- WG-130
|
||||
WaveBlaster-style PC daughterboard
|
||||
|
||||
WG-130 board:
|
||||
LSI101: stereo DAC (NEC uPD6379GR)
|
||||
LSI102: CPU (Casio GT913F)
|
||||
LSI103: 16Mbit ROM (Casio GM16000N-C40)
|
||||
LSI104: 64kbit SRAM (Sanyo LC3564SM-85)
|
||||
LSI105: unpopulated, for DSP SRAM
|
||||
LSI106: unpopulated, for DSP
|
||||
X101: 30MHz crystal
|
||||
X102: unpopulated, for DSP
|
||||
WG-130 board:
|
||||
LSI101: stereo DAC (NEC uPD6379GR)
|
||||
LSI102: CPU (Casio GT913F)
|
||||
LSI103: 16Mbit ROM (Casio GM16000N-C40)
|
||||
LSI104: 64kbit SRAM (Sanyo LC3564SM-85)
|
||||
LSI105: unpopulated, for DSP SRAM
|
||||
LSI106: unpopulated, for DSP
|
||||
X101: 30MHz crystal
|
||||
X102: unpopulated, for DSP
|
||||
|
||||
All three of these apparently use the same mask ROM.
|
||||
This ROM was also distributed as part of Casio's SW-10 softsynth for Windows,
|
||||
which it released in early 1997 as part of the "LANA Lite" karaoke system.
|
||||
http://web.archive.org/web/20011122112757/www.casio.co.jp/lanalite/LanaSw10.exe
|
||||
All three of these apparently use the same mask ROM.
|
||||
This ROM was also distributed as part of Casio's SW-10 softsynth for Windows,
|
||||
which it released in early 1997 as part of the "LANA Lite" karaoke system.
|
||||
http://web.archive.org/web/20011122112757/www.casio.co.jp/lanalite/LanaSw10.exe
|
||||
|
||||
The WG-130 (and possibly others) have unpopulated footprints for the same DSP
|
||||
used in some keyboards (e.g. the CTK-601). The ROM does actually support
|
||||
using the DSP if it's present, and responds to the same sysex message used to
|
||||
enable reverb on the CTK-601 and similar models (F0 44 0E 09 0x F7).
|
||||
The WG-130 (and possibly others) have unpopulated footprints for the same DSP
|
||||
used in some keyboards (e.g. the CTK-601). The ROM does actually support
|
||||
using the DSP if it's present, and responds to the same sysex message used to
|
||||
enable reverb on the CTK-601 and similar models (F0 44 0E 09 0x F7).
|
||||
|
||||
Pulling CPU pin 53 (KI0/P24) low starts a ROM checksum test.
|
||||
The result is indicated both by sound as well as output on pin 55 (KI2/P11).
|
||||
Pulling CPU pin 53 (KI0/P24) low starts a ROM checksum test.
|
||||
The result is indicated both by sound as well as output on pin 55 (KI2/P11).
|
||||
|
||||
More info and photos:
|
||||
https://piano.tyonmage.com/casio/gz-30m.html
|
||||
https://piano.tyonmage.com/casio/gz-70sp.html
|
||||
http://www.yjfy.com/museum/sound/WG-130.htm
|
||||
More info and photos:
|
||||
https://piano.tyonmage.com/casio/gz-30m.html
|
||||
https://piano.tyonmage.com/casio/gz-70sp.html
|
||||
http://www.yjfy.com/museum/sound/WG-130.htm
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
CTK-601/611 / Concertmate 990 (1997)
|
||||
CTK-601/611 / Concertmate 990 (1997)
|
||||
|
||||
Main board (JCM462-MA1M):
|
||||
LSI1: CPU (Casio GT913F)
|
||||
LSI2: DSP (Casio GD277F / Hitachi HG51B277FB)
|
||||
LSI3: 16Mbit ROM (Macronix MX23C1610MC-12)
|
||||
LSI4: 256kbit SRAM for CPU (Toshiba TC55257DFL-70L)
|
||||
LSI5: 256kbit SRAM for DSP (same as LSI4)
|
||||
LSI6: stereo DAC (NEC uPD6379GR)
|
||||
X1: 30MHz crystal for CPU
|
||||
X2: 20MHz ceramic for DSP
|
||||
Main board (JCM462-MA1M):
|
||||
LSI1: CPU (Casio GT913F)
|
||||
LSI2: DSP (Casio GD277F / Hitachi HG51B277FB)
|
||||
LSI3: 16Mbit ROM (Macronix MX23C1610MC-12)
|
||||
LSI4: 256kbit SRAM for CPU (Toshiba TC55257DFL-70L)
|
||||
LSI5: 256kbit SRAM for DSP (same as LSI4)
|
||||
LSI6: stereo DAC (NEC uPD6379GR)
|
||||
X1: 30MHz crystal for CPU
|
||||
X2: 20MHz ceramic for DSP
|
||||
|
||||
Display board (JCM462-LCD1M):
|
||||
LSI401: LCD controller (Epson SED1278F2A)
|
||||
Display board (JCM462-LCD1M):
|
||||
LSI401: LCD controller (Epson SED1278F2A)
|
||||
|
||||
Service manuals with schematics, pinouts, etc.:
|
||||
https://revenant1.net/casio/manuals/upd91x/ctk601.pdf
|
||||
https://revenant1.net/casio/manuals/upd91x/ctk611.pdf
|
||||
Service manuals with schematics, pinouts, etc.:
|
||||
https://revenant1.net/casio/manuals/upd91x/ctk601.pdf
|
||||
https://revenant1.net/casio/manuals/upd91x/ctk611.pdf
|
||||
|
||||
To access the test mode (not mentioned in the service manual):
|
||||
Hold the keypad 0 button while turning on the keyboard, then release the button.
|
||||
"TST" will appear on the LCD. Afterwards, press one of these buttons:
|
||||
- Keypad 0: switch test (press all front panel buttons in a specific order, generally left to right)
|
||||
- Keypad 1: pedal and key test
|
||||
- Keypad 2: ROM test
|
||||
- Keypad 4/5/6: sound volume test
|
||||
- Keypad 7/8: stereo test
|
||||
- Keypad 9: MIDI loopback test
|
||||
- Keypad +: power source test
|
||||
- Cursor Left: LCD test (all segments at once)
|
||||
- Cursor Right: LCD test (all segments individually)
|
||||
- Cursor Down: power off
|
||||
To access the test mode (not mentioned in the service manual):
|
||||
Hold the keypad 0 button while turning on the keyboard, then release the button.
|
||||
"TST" will appear on the LCD. Afterwards, press one of these buttons:
|
||||
- Keypad 0: switch test (press all front panel buttons in a specific order, generally left to right)
|
||||
- Keypad 1: pedal and key test
|
||||
- Keypad 2: ROM test
|
||||
- Keypad 4/5/6: sound volume test
|
||||
- Keypad 7/8: stereo test
|
||||
- Keypad 9: MIDI loopback test
|
||||
- Keypad +: power source test
|
||||
- Cursor Left: LCD test (all segments at once)
|
||||
- Cursor Right: LCD test (all segments individually)
|
||||
- Cursor Down: power off
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
@ -125,16 +125,16 @@
|
||||
Adds pitch wheel and different selection of demo songs
|
||||
|
||||
Main board (JCM453-MA1M / JCM456-MA1M):
|
||||
LSI1: CPU (Casio GT913F)
|
||||
LSI2: 8Mbit ROM (OKI MSM538002E)
|
||||
LSI3: LCD controller (HD44780 compatible)
|
||||
May be either a Samsung KS0066U-10B or Epson SED1278F2A.
|
||||
IC1: stereo DAC (NEC uPD6379GR)
|
||||
X1: 30MHz ceramic
|
||||
LSI1: CPU (Casio GT913F)
|
||||
LSI2: 8Mbit ROM (OKI MSM538002E)
|
||||
LSI3: LCD controller (HD44780 compatible)
|
||||
May be either a Samsung KS0066U-10B or Epson SED1278F2A.
|
||||
IC1: stereo DAC (NEC uPD6379GR)
|
||||
X1: 30MHz ceramic
|
||||
|
||||
Service manuals with schematics, pinouts, etc.:
|
||||
https://revenant1.net/casio/manuals/upd91x/ctk531.pdf
|
||||
https://revenant1.net/casio/manuals/upd91x/ctk541.pdf
|
||||
https://revenant1.net/casio/manuals/upd91x/ctk541.pdf
|
||||
|
||||
To access the test mode (not mentioned in the service manual):
|
||||
Hold the "Start/Stop" and keypad 0 buttons together when turning on the keyboard.
|
||||
@ -659,7 +659,7 @@ INPUT_PORTS_START(ap10)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Start / Stop") PORT_CODE(KEYCODE_0)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Demo") PORT_CODE(KEYCODE_MINUS)
|
||||
PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
|
||||
|
||||
PORT_START("maincpu:kbd:VELOCITY")
|
||||
PORT_BIT( 0x7f, 0x7f, IPT_POSITIONAL ) PORT_NAME("Key Velocity") PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_CENTERDELTA(0)
|
||||
|
||||
@ -686,7 +686,7 @@ INPUT_PORTS_START(gz70sp)
|
||||
PORT_START("maincpu:kbd:KI0")
|
||||
PORT_START("maincpu:kbd:KI1")
|
||||
PORT_START("maincpu:kbd:KI2")
|
||||
|
||||
|
||||
PORT_START("P1")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) // test mode output (1 = in progress / OK, 0 = error)
|
||||
@ -835,7 +835,7 @@ INPUT_PORTS_START(ctk601)
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Keypad 5") PORT_CODE(KEYCODE_5_PAD)
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Keypad 1") PORT_CODE(KEYCODE_1_PAD)
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Transpose / Tune / MIDI")
|
||||
|
||||
|
||||
PORT_START("maincpu:kbd:VELOCITY")
|
||||
PORT_BIT( 0x7f, 0x7f, IPT_POSITIONAL ) PORT_NAME("Key Velocity") PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_CENTERDELTA(0)
|
||||
|
||||
@ -881,7 +881,7 @@ INPUT_PORTS_START(ctk601)
|
||||
PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(ctk551_state, inputs_r)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pedal")
|
||||
PORT_BIT( 0xe0, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
|
||||
|
||||
PORT_START("SWITCH")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Mode (Full Range Chord)") PORT_CHANGED_MEMBER(DEVICE_SELF, ctk551_state, switch_w, 0x1)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Mode (Fingered)") PORT_CHANGED_MEMBER(DEVICE_SELF, ctk551_state, switch_w, 0x2)
|
||||
|
@ -930,7 +930,7 @@ ROM_START( mastboya )
|
||||
ROM_LOAD( "gal16v8-25.ic84", 0x00022e, 0x000117, NO_DUMP )
|
||||
ROM_END
|
||||
|
||||
/* The internal ROM should be different on the Italian sets, as it indexes the wrong strings on the startup screens,
|
||||
/* The internal ROM should be different on the Italian sets, as it indexes the wrong strings on the startup screens,
|
||||
showing MARK instead of PLAY MARK etc. So, marked as BAD_DUMP on these sets */
|
||||
|
||||
ROM_START( mastboyi )
|
||||
@ -1051,8 +1051,8 @@ ROM_START( mastboyib )
|
||||
ROM_LOAD( "17_domande-rom.ic94", 0x100000, 0x020000, CRC(bdce54df) SHA1(b30a3adcdeba26f91f7de8e174f54a158d173dba) )
|
||||
ROM_RELOAD( 0x120000, 0x020000) // 128kb ROMs are mirrored
|
||||
|
||||
/* TEMPO LIBERO - CULTURA 011092 6913 0424
|
||||
SCIENZA - NATURA 011092 6969 0400
|
||||
/* TEMPO LIBERO - CULTURA 011092 6913 0424
|
||||
SCIENZA - NATURA 011092 6969 0400
|
||||
TEMPO LIBERO - HOBBY 011092 6569 0300
|
||||
SPORT - WC_90 011092 6072 0212
|
||||
SCIENZA - SESSUOLOGIA 011092 6098 0276 */
|
||||
|
@ -544,7 +544,7 @@ void jpmsru_state::out_logicext_w(offs_t offset, uint8_t data)
|
||||
switch(offset)
|
||||
{
|
||||
case 0: out_lamp_ext_w(m_logicext_addr, !m_logicext_data); break; /* All dumped games use solely lamps as outputs,
|
||||
so keep things simple for now */
|
||||
so keep things simple for now */
|
||||
case 1: m_logicext_data = data; break;
|
||||
case 2:
|
||||
case 3:
|
||||
|
@ -85,7 +85,7 @@ void chqflag_state::chqflag_vreg_w(uint8_t data)
|
||||
const double shadow_factors[4] = {0.8, 1.0, 1.33, 1.66};
|
||||
uint8_t shadow_value = (data & 0x08) >> 3;
|
||||
uint8_t shadow_setting = (data & 0x80) >> 7;
|
||||
|
||||
|
||||
m_k051960->set_shadow_inv(shadow_setting);
|
||||
|
||||
m_palette->set_shadow_factor(shadow_factors[(shadow_setting << 1) + shadow_value]);
|
||||
@ -95,7 +95,7 @@ void chqflag_state::chqflag_vreg_w(uint8_t data)
|
||||
m_last_vreg = shadow_setting;
|
||||
update_background_shadows(shadow_setting);
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
if ((data & 0x80) != m_last_vreg)
|
||||
{
|
||||
|
@ -32,22 +32,22 @@ memory map:
|
||||
bit 2 = nmi enable/acknowledge
|
||||
bit 3 = flip screen (applies to sprites only, not tilemaps)
|
||||
bit 4 = disable internal sprite processing
|
||||
used by Devastators, TMNT, Aliens, Chequered Flag, maybe others
|
||||
used by Devastators, TMNT, Aliens, Chequered Flag, maybe others
|
||||
aliens sets it just after checking bit 0, and before copying
|
||||
the sprite data
|
||||
bit 5 = enable gfx ROM reading
|
||||
bit 6 = let cpu address bits 2~5 pass through CA0~3 when bit 5 is set
|
||||
001 W bit 0 = invert shadow for all pens
|
||||
bit 1 = force shadows for pen 0x0f
|
||||
bit 2 = disable shadows for pen 0x0f (priority over bit 1)
|
||||
Devastators sets bit 1.
|
||||
bit 1 = force shadows for pen 0x0f
|
||||
bit 2 = disable shadows for pen 0x0f (priority over bit 1)
|
||||
Devastators sets bit 1.
|
||||
Ultraman sets the register to 0x0f.
|
||||
None of the other games I tested seem to set this register to other than 0.
|
||||
Update: Chequered Flag sets bit 0 when background should be dimmed.
|
||||
002-003 W selects the portion of the gfx ROMs to be read.
|
||||
004 W bit 0 = OC6 when gfx ROM reading is enabled
|
||||
bit 1 = OC7 when gfx ROM reading is enabled
|
||||
Aliens uses this to select the ROM bank to be read, but Punk Shot
|
||||
bit 1 = OC7 when gfx ROM reading is enabled
|
||||
Aliens uses this to select the ROM bank to be read, but Punk Shot
|
||||
and TMNT don't, they use another bit of the registers above. Many
|
||||
other games write to this register before testing.
|
||||
Bits 2-7 of 003 go to OC0-OC5.
|
||||
@ -345,7 +345,7 @@ void k051960_device::k051937_w(offs_t offset, u8 data)
|
||||
{
|
||||
if (0)
|
||||
logerror("%s: %02x to 051937 address %x\n", machine().describe_context(), data, offset);
|
||||
|
||||
|
||||
m_shadow_config = data & 0x07;
|
||||
}
|
||||
else if (offset >= 2 && offset < 5)
|
||||
@ -478,7 +478,7 @@ void k051960_device::k051960_sprites_draw( bitmap_ind16 &bitmap, const rectangle
|
||||
}
|
||||
|
||||
drawmode_table[gfx(0)->granularity() - 1] = (shadow ^ m_inv_shadow) ? DRAWMODE_SHADOW : DRAWMODE_SOURCE;
|
||||
|
||||
|
||||
if (zoomx == 0x10000 && zoomy == 0x10000)
|
||||
{
|
||||
int sx, sy;
|
||||
|
@ -84,12 +84,12 @@ private:
|
||||
devcb_write_line m_firq_handler;
|
||||
devcb_write_line m_nmi_handler;
|
||||
|
||||
uint8_t m_spriterombank[3];
|
||||
uint8_t m_romoffset;
|
||||
bool m_spriteflip, m_readroms;
|
||||
uint8_t m_spriterombank[3];
|
||||
uint8_t m_romoffset;
|
||||
bool m_spriteflip, m_readroms;
|
||||
uint8_t m_shadow_config;
|
||||
bool m_inv_shadow;
|
||||
bool m_nmi_enabled;
|
||||
bool m_inv_shadow;
|
||||
bool m_nmi_enabled;
|
||||
|
||||
int k051960_fetchromdata( int byte );
|
||||
};
|
||||
|
@ -10,7 +10,7 @@
|
||||
on the parameters.
|
||||
|
||||
Thunder Cross II POST checks of this chip.
|
||||
It literally tests the chip in an unit test fashion:
|
||||
It literally tests the chip in an unit test fashion:
|
||||
1. zeroing all ports;
|
||||
2. test that status returns 0;
|
||||
3. ping ACX reg 0 with 0xff;
|
||||
@ -126,13 +126,13 @@ void k054000_device::map(address_map &map)
|
||||
inline int k054000_device::convert_raw_to_result_delta(u8 *buf)
|
||||
{
|
||||
int res = (buf[0] << 16) | (buf[1] << 8) | buf[2];
|
||||
|
||||
|
||||
// Last value in the buffer is used as OTG correction in Vendetta
|
||||
if (buf[3] & 0x80)
|
||||
res -= (0x100 - buf[3]);
|
||||
else
|
||||
res += buf[3];
|
||||
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
@ -169,22 +169,22 @@ u8 k054000_device::axis_check(u32 m_Ac, u32 m_Bc, u32 m_Aa, u32 m_Ba)
|
||||
{
|
||||
u8 res = 0;
|
||||
s32 sub = m_Ac - m_Bc;
|
||||
|
||||
|
||||
// MSB check
|
||||
if ((sub > 511) || (sub <= -1024))
|
||||
res |= 1;
|
||||
|
||||
|
||||
// LSB check
|
||||
if ((abs(sub) & 0x1ff) > ((m_Aa + m_Ba) & 0x1ff))
|
||||
res |= 1;
|
||||
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
u8 k054000_device::status_r()
|
||||
{
|
||||
u8 res;
|
||||
|
||||
|
||||
res = axis_check(m_Acx, m_Bcx, m_Aax, m_Bax);
|
||||
res |= axis_check(m_Acy, m_Bcy, m_Aay, m_Bay);
|
||||
|
||||
|
@ -155,7 +155,7 @@ The PS2 is unaffected by the garbage byte.
|
||||
Endpoint 1 (IN, Bulk): Command handler, receives commands from the PS2
|
||||
Endpoint 2 (OUT, Bulk): Command responses, sends responses back to the PS2
|
||||
Endpoint 3 (IN, Interrupt): JAMMA I/O + analog I/O state response
|
||||
Response:
|
||||
Response:
|
||||
0x00 - 0x04 JAMMA I/O (IN)
|
||||
0x04 - 0x06 Analog I/O (ANALOG1)
|
||||
0x06 - 0x08 Analog I/O (ANALOG2)
|
||||
|
@ -10,7 +10,7 @@ license:CC0
|
||||
<color red="0.2" green="0.2" blue="0.2" />
|
||||
</rect>
|
||||
</element>
|
||||
|
||||
|
||||
<!-- text elements -->
|
||||
<element name="transpose"><text string="TRANSPOSE/" /></element>
|
||||
<element name="tune_midi"><text string="TUNE/MIDI" /></element>
|
||||
@ -35,7 +35,7 @@ license:CC0
|
||||
<element name="stop"><text string="STOP" /></element>
|
||||
<element name="demo"><text string="DEMO" /></element>
|
||||
<element name="ap10"><text string="AP-10" /></element>
|
||||
|
||||
|
||||
<!-- button primitives -->
|
||||
<element name="button" defstate="0">
|
||||
<disk><bounds x="0" y="0" width="21" height="21" /><color red="0.0" green="0.0" blue="0.0" /></disk>
|
||||
@ -48,13 +48,13 @@ license:CC0
|
||||
<disk state="1"><bounds x="46" y="2" width="17" height="17" /><color red="0.5" green="0.5" blue="0.5" /></disk>
|
||||
<rect state="1"><bounds x="11" y="2" width="43" height="17" /><color red="0.5" green="0.5" blue="0.5" /></rect>
|
||||
</element>
|
||||
|
||||
|
||||
<!-- LED primitive -->
|
||||
<element name="led" defstate="0">
|
||||
<disk state="0"><color red="0.4" green="0.3" blue="0.3" /></disk>
|
||||
<disk state="1"><color red="1.0" green="0.1" blue="0.1" /></disk>
|
||||
</element>
|
||||
|
||||
|
||||
<!-- keyboard primitives -->
|
||||
<element name="keyfill"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
|
||||
<element name="whitekey" defstate="0">
|
||||
@ -103,72 +103,72 @@ license:CC0
|
||||
<rect state="1"><bounds x="0" y="0" width="44" height="324" /><color red="0.1" green="0.1" blue="0.1" /></rect>
|
||||
<rect state="1"><bounds x="4" y="0" width="36" height="320" /><color red="0.1" green="0.1" blue="0.1" /></rect>
|
||||
</element>
|
||||
|
||||
|
||||
<!-- button group -->
|
||||
<group name="buttons">
|
||||
<bounds x="0" y="0" width="4428" height="300" />
|
||||
|
||||
|
||||
<element ref="transpose"><bounds xc="80" y="40" width="200" height="40"/></element>
|
||||
<element ref="tune_midi"><bounds xc="80" y="80" width="200" height="40"/></element>
|
||||
<element ref="button" inputtag="maincpu:kbd:KI0" inputmask="0x1"><bounds xc="80" y="128" width="160" height="48"/></element>
|
||||
|
||||
|
||||
<element ref="digital"><bounds xc="280" y="40" width="180" height="40"/></element>
|
||||
<element ref="effect"><bounds xc="280" y="80" width="180" height="40"/></element>
|
||||
<element ref="button" inputtag="maincpu:kbd:KI0" inputmask="0x2"><bounds xc="280" y="128" width="160" height="48"/></element>
|
||||
|
||||
|
||||
<element ref="led" name="led_console_0"><bounds xc="400" y="00" width="40" height="40" /></element>
|
||||
<element ref="chorus"><bounds x="440" y="0" width="300" height="40"/></element>
|
||||
|
||||
|
||||
<element ref="led" name="led_console_1"><bounds xc="400" y="64" width="40" height="40" /></element>
|
||||
<element ref="reverb2"><bounds x="440" y="64" width="300" height="40"/></element>
|
||||
|
||||
|
||||
<element ref="led" name="led_console_2"><bounds xc="400" y="128" width="40" height="40" /></element>
|
||||
<element ref="reverb1"><bounds x="440" y="128" width="300" height="40"/></element>
|
||||
|
||||
|
||||
<element ref="piano"><bounds xc="880" y="80" width="200" height="40"/></element>
|
||||
<element ref="button" inputtag="maincpu:kbd:KI0" inputmask="0x4"><bounds xc="880" y="128" width="160" height="48"/></element>
|
||||
|
||||
|
||||
<element ref="epiano"><bounds xc="1080" y="80" width="200" height="40"/></element>
|
||||
<element ref="button" inputtag="maincpu:kbd:KI0" inputmask="0x8"><bounds xc="1080" y="128" width="160" height="48"/></element>
|
||||
|
||||
|
||||
<element ref="harpsi"><bounds xc="1280" y="40" width="200" height="40"/></element>
|
||||
<element ref="chord"><bounds xc="1280" y="80" width="200" height="40"/></element>
|
||||
<element ref="button" inputtag="maincpu:kbd:KI1" inputmask="0x1"><bounds xc="1280" y="128" width="160" height="48"/></element>
|
||||
|
||||
|
||||
<element ref="pipe"><bounds xc="1480" y="40" width="200" height="40"/></element>
|
||||
<element ref="organ"><bounds xc="1480" y="80" width="200" height="40"/></element>
|
||||
<element ref="button" inputtag="maincpu:kbd:KI1" inputmask="0x2"><bounds xc="1480" y="128" width="160" height="48"/></element>
|
||||
|
||||
|
||||
<element ref="strings"><bounds xc="1680" y="80" width="200" height="40"/></element>
|
||||
<element ref="button" inputtag="maincpu:kbd:KI1" inputmask="0x4"><bounds xc="1680" y="128" width="160" height="48"/></element>
|
||||
|
||||
|
||||
<element ref="led" name="led_console_3"><bounds xc="1980" y="28" width="40" height="40" /></element>
|
||||
<element ref="songa"><bounds xc="2080" y="28" width="200" height="40"/></element>
|
||||
<element ref="led" name="led_console_4"><bounds xc="1980" y="80" width="40" height="40" /></element>
|
||||
<element ref="songb"><bounds xc="2080" y="80" width="200" height="40"/></element>
|
||||
<element ref="button" inputtag="maincpu:kbd:KI2" inputmask="0x1"><bounds xc="2080" y="128" width="160" height="48"/></element>
|
||||
|
||||
|
||||
<element ref="led" name="led_console_5"><bounds xc="2280" y="28" width="40" height="40" /></element>
|
||||
<element ref="record"><bounds xc="2280" y="80" width="200" height="40"/></element>
|
||||
<element ref="button" inputtag="maincpu:kbd:KI2" inputmask="0x2"><bounds xc="2280" y="128" width="160" height="48"/></element>
|
||||
|
||||
|
||||
<element ref="start"><bounds xc="2480" y="40" width="200" height="40"/></element>
|
||||
<element ref="stop"><bounds xc="2480" y="80" width="200" height="40"/></element>
|
||||
<element ref="button" inputtag="maincpu:kbd:KI2" inputmask="0x4"><bounds xc="2480" y="128" width="160" height="48"/></element>
|
||||
|
||||
|
||||
<element ref="demo"><bounds xc="2880" y="80" width="200" height="40"/></element>
|
||||
<element ref="button" inputtag="maincpu:kbd:KI2" inputmask="0x8"><bounds xc="2880" y="128" width="160" height="48"/></element>
|
||||
</group>
|
||||
|
||||
|
||||
<!-- keyboard group -->
|
||||
<group name="keyboard">
|
||||
<element ref="keyfill"><bounds x="72" y="98" width="4284" height="524" /></element>
|
||||
|
||||
|
||||
<!-- octave 0 -->
|
||||
<element ref="blackkey" inputtag="maincpu:kbd:FI0" inputmask="0x02"><bounds x="151" y="108" width="44" height="324" /></element>
|
||||
<element ref="whitekey-a0" inputtag="maincpu:kbd:FI0" inputmask="0x01"><bounds x="82" y="108" width="79" height="504" /></element>
|
||||
<element ref="whitekey-r" inputtag="maincpu:kbd:FI0" inputmask="0x04"><bounds x="164" y="108" width="79" height="504" /></element>
|
||||
|
||||
|
||||
<!-- octave 1 -->
|
||||
<element ref="blackkey" inputtag="maincpu:kbd:FI0" inputmask="0x10"><bounds x="294" y="108" width="44" height="324" /></element>
|
||||
<element ref="blackkey" inputtag="maincpu:kbd:FI0" inputmask="0x40"><bounds x="397" y="108" width="44" height="324" /></element>
|
||||
@ -270,7 +270,7 @@ license:CC0
|
||||
<!-- final key -->
|
||||
<element ref="whitekey" inputtag="maincpu:kbd:FI10" inputmask="0x80"><bounds x="4264" y="108" width="79" height="504" /></element>
|
||||
</group>
|
||||
|
||||
|
||||
<view name="Keyboard">
|
||||
<!-- overall background -->
|
||||
<element ref="greyback"><bounds x="0" y="0" width="4428" height="824" /></element>
|
||||
|
@ -180,8 +180,8 @@ license:CC0
|
||||
<text string="Grapes"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text>
|
||||
<text string="Orange"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text>
|
||||
<text string="Plum"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text>
|
||||
<text string="Pear"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text>
|
||||
<text string="Triple Bar"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text>
|
||||
<text string="Pear"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text>
|
||||
<text string="Triple Bar"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text>
|
||||
</element>
|
||||
<element name="Reel 2">
|
||||
<rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect>
|
||||
@ -250,7 +250,7 @@ license:CC0
|
||||
<text string="Melon*"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text>
|
||||
<text string="Pear"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text>
|
||||
<text string="7"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text>
|
||||
<text string="Triple Bar"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text>
|
||||
<text string="Triple Bar"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text>
|
||||
</element>
|
||||
<element name="LCD" defstate="0">
|
||||
<led7seg>
|
||||
|
@ -48,7 +48,7 @@ license:CC0
|
||||
<text string="Pear"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text>
|
||||
<text string="Bar"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text>
|
||||
<text string="Plum"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text>
|
||||
<text string="Louth Coin"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text>
|
||||
<text string="Louth Coin"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text>
|
||||
</element>
|
||||
<element name="Reel 2">
|
||||
<rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect>
|
||||
|
@ -34,7 +34,7 @@
|
||||
|
||||
TODO:
|
||||
|
||||
- loadsys1 core dump
|
||||
- loadsys1 core dump
|
||||
- short/long reset (RSTBUT)
|
||||
- CIO
|
||||
- optimize timers!
|
||||
|
@ -1886,7 +1886,7 @@ ROM_END
|
||||
|
||||
|
||||
/*
|
||||
|
||||
|
||||
Magic Card - Wien v1.2 200/93 set 2
|
||||
|
||||
PCB layout:
|
||||
|
@ -1353,7 +1353,7 @@ void playch10_state::gboard_rom_switch_w(offs_t offset, u8 data)
|
||||
|
||||
case 0x2001: // enable ram at $6000
|
||||
// ignored - we always enable it
|
||||
break;
|
||||
break;
|
||||
|
||||
case 0x4000: // scanline counter
|
||||
m_IRQ_count_latch = data;
|
||||
|
@ -425,7 +425,7 @@ void spacefb_state::draw_starfield(screen_device &screen, bitmap_rgb32 &bitmap,
|
||||
shift_star_generator();
|
||||
}
|
||||
|
||||
// visible region of the screen
|
||||
// visible region of the screen
|
||||
for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
|
||||
{
|
||||
for (int x = SPACEFB_HBEND; x < SPACEFB_HBSTART; x++)
|
||||
|
@ -1137,7 +1137,7 @@ void vs_smbbl_state::smbbl_ppu_map(address_map &map)
|
||||
#define VS_UNI_JOYSTICK(port_tag, player, type1, name1) \
|
||||
PORT_START(port_tag) \
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(player) PORT_NAME("%p A") \
|
||||
PORT_BIT( 0X02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(player) PORT_NAME("%p B") \
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(player) PORT_NAME("%p B") \
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, type1 ) PORT_NAME(name1) \
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) \
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(player) \
|
||||
@ -1148,7 +1148,7 @@ void vs_smbbl_state::smbbl_ppu_map(address_map &map)
|
||||
#define VS_DUAL_JOYSTICK(port_tag, player, type1, type2, name1, name2) \
|
||||
PORT_START(port_tag) \
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(player) PORT_NAME("%p A") \
|
||||
PORT_BIT( 0X02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(player) PORT_NAME("%p B") \
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(player) PORT_NAME("%p B") \
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, type1 ) PORT_NAME(name1) \
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, type2 ) PORT_NAME(name2) \
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(player) \
|
||||
|
@ -54,7 +54,7 @@ The Next Tetris (dumped) -----------------------
|
||||
Crayon Shin-chan 3 (not dumped?) Interactive Sampler (three different versions)
|
||||
Nuon Games + Demos (collection from Nuon-Dome)
|
||||
Nuon-Dome PhillyClassic 5 Demo Disc (give-away collection)
|
||||
Motorola BlackBird Demonstration Pack
|
||||
Motorola BlackBird Demonstration Pack
|
||||
|
||||
There were also a number of homebrew titles made available.
|
||||
It was noted that only the Samsung and RCA units can run homebrew software and the Samsung DVD-N501 is the most compatible unit
|
||||
|
@ -5,15 +5,15 @@
|
||||
MicroART ATM (clone of Spectrum)
|
||||
|
||||
NOTES:
|
||||
Current implementation based on ATM Turbo 2+. If anybody wants to validate ATM1, existing
|
||||
code must be moved to atmtb2_state not modified.
|
||||
Current implementation based on ATM Turbo 2+. If anybody wants to validate ATM1, existing
|
||||
code must be moved to atmtb2_state not modified.
|
||||
|
||||
TODO:
|
||||
* ports read
|
||||
* ATM2+ (compare to ATM2) has only 1M RAM vs 512K
|
||||
* Mem masks are hardcoded to 1M RAM
|
||||
* better handling of SHADOW ports
|
||||
* validate screen timings
|
||||
* ports read
|
||||
* ATM2+ (compare to ATM2) has only 1M RAM vs 512K
|
||||
* Mem masks are hardcoded to 1M RAM
|
||||
* better handling of SHADOW ports
|
||||
* validate screen timings
|
||||
|
||||
*******************************************************************************************/
|
||||
|
||||
|
@ -93,7 +93,7 @@ void cxd8452aq_device::device_start()
|
||||
save_item(NAME(m_irq));
|
||||
}
|
||||
|
||||
void cxd8452aq_device::device_reset()
|
||||
void cxd8452aq_device::device_reset()
|
||||
{
|
||||
m_sonic3_reg = {};
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ public:
|
||||
|
||||
template <typename... T>
|
||||
void set_apbus_address_translator(T &&...args) { m_apbus_virt_to_phys_callback.set(std::forward<T>(args)...); }
|
||||
|
||||
|
||||
template <typename T>
|
||||
void set_bus(T &&tag, int spacenum) { m_bus.set_tag(std::forward<T>(tag), spacenum); }
|
||||
|
||||
|
@ -132,7 +132,7 @@ protected:
|
||||
// TODO: DMAC3 probably transfers more than one byte at a time
|
||||
required_address_space m_bus;
|
||||
devcb_write_line m_irq_handler;
|
||||
devcb_read8::array<2> m_dma_r;
|
||||
devcb_read8::array<2> m_dma_r;
|
||||
devcb_write8::array<2> m_dma_w;
|
||||
device_delegate<uint32_t(uint32_t)> m_apbus_virt_to_phys_callback;
|
||||
|
||||
|
@ -335,7 +335,7 @@ protected:
|
||||
|
||||
void led_state_w(offs_t offset, uint32_t data);
|
||||
uint64_t front_panel_r(offs_t offset);
|
||||
|
||||
|
||||
TIMER_CALLBACK_MEMBER(freerun_clock);
|
||||
uint32_t freerun_r(offs_t offset);
|
||||
void freerun_w(offs_t offset, uint32_t data);
|
||||
|
@ -2,19 +2,19 @@
|
||||
// copyright-holders:Devin Acker
|
||||
|
||||
/*
|
||||
VTech Phusion (2000)
|
||||
VTech Phusion (2000)
|
||||
|
||||
This handheld organizer/PDA runs on an unknown CR16B SoC.
|
||||
It's probably similar (but not identical) to the one described in glcx.cpp.
|
||||
This handheld organizer/PDA runs on an unknown CR16B SoC.
|
||||
It's probably similar (but not identical) to the one described in glcx.cpp.
|
||||
|
||||
Main board:
|
||||
U1: Analog Integrations AIC1652CS
|
||||
U2: 8Mbit flash (Toshiba TC58FVT800FT-85)
|
||||
U3: Hyundai GM76FV18ALLFW70
|
||||
U10: unknown CR16B-based SoC (epoxy blob)
|
||||
U11: National Semiconductor DS14C232CM
|
||||
U12: National Semiconductor LM4882
|
||||
U14: 16Mbit mask ROM (Sharp LH53V16500)
|
||||
Main board:
|
||||
U1: Analog Integrations AIC1652CS
|
||||
U2: 8Mbit flash (Toshiba TC58FVT800FT-85)
|
||||
U3: Hyundai GM76FV18ALLFW70
|
||||
U10: unknown CR16B-based SoC (epoxy blob)
|
||||
U11: National Semiconductor DS14C232CM
|
||||
U12: National Semiconductor LM4882
|
||||
U14: 16Mbit mask ROM (Sharp LH53V16500)
|
||||
|
||||
*/
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user