srcclean in preparation for release

This commit is contained in:
Vas Crabb 2022-08-28 07:37:43 +10:00
parent f56ace4df8
commit 2905b8c24a
46 changed files with 434 additions and 434 deletions

View File

@ -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.

View File

@ -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")
{
}

View File

@ -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:

View File

@ -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!?!
-------------------------------------------------*/

View File

@ -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);
}

View File

@ -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];

View File

@ -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);

View File

@ -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

View File

@ -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)

View File

@ -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;

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -180,7 +180,7 @@ private:
T pop()
{
if (size == 0)
if (size == 0)
{
fatalerror("spifi3: FIFO underflow!");
}

View File

@ -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)

View File

@ -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))

View File

@ -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 &current_dir, std::string_view target) const
@ -695,7 +695,7 @@ std::optional<directory_entry> impl::find_child(const directory_span &current_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

View File

@ -2,9 +2,9 @@
// copyright-holders:Nathan Woods
/***************************************************************************
fs_fat.h
fs_fat.h
PC FAT disk images
PC FAT disk images
***************************************************************************/

View File

@ -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?
****************************************************************************/

View File

@ -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;

View File

@ -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)

View File

@ -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 */

View File

@ -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:

View File

@ -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)
{

View File

@ -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;

View File

@ -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 );
};

View File

@ -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);

View File

@ -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)

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -34,7 +34,7 @@
TODO:
- loadsys1 core dump
- loadsys1 core dump
- short/long reset (RSTBUT)
- CIO
- optimize timers!

View File

@ -1886,7 +1886,7 @@ ROM_END
/*
Magic Card - Wien v1.2 200/93 set 2
PCB layout:

View File

@ -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;

View File

@ -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++)

View File

@ -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) \

View File

@ -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

View File

@ -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
*******************************************************************************************/

View File

@ -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 = {};
}

View File

@ -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); }

View File

@ -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;

View File

@ -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);

View File

@ -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)
*/