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

@ -1344,8 +1344,8 @@ void axc51base_cpu_device::device_reset()
m_spi_dma_addr = 0; m_spi_dma_addr = 0;
// m_timer0->adjust(attotime::never); // m_timer0->adjust(attotime::never);
// m_dactimer->adjust(attotime::never); // m_dactimer->adjust(attotime::never);
m_timer0->adjust(attotime::from_hz(120), 0, attotime::from_hz(120)); 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 axc51base_cpu_device::spicon_r()
{ {
uint8_t result = m_sfr_regs[SFR_SPICON] | 0x80; 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; return result;
} }
@ -1408,7 +1408,7 @@ uint8_t axc51base_cpu_device::uartsta_r()
void axc51base_cpu_device::spicon_w(uint8_t data) 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_sfr_regs[SFR_SPICON] = data;
m_spi_out_dir_cb((data & 0x20) ? true : false); m_spi_out_dir_cb((data & 0x20) ? true : false);
} }

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) //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 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) //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 if (m_sfr_regs[SFR_DPCON] & 0x04) // auto-toggle enabled

View File

@ -8,14 +8,14 @@
for many opcodes, as well as: for many opcodes, as well as:
- Dedicated bank switching instructions - 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 - Two timers, three 8-bit ports, two 8-bit ADCs
- Keyboard controller w/ key velocity detection - Keyboard controller w/ key velocity detection
- MIDI UART - MIDI UART
- 24-voice DPCM sound - 24-voice DPCM sound
Variants include the uPD912 and GT915/uPD915. Variants include the uPD912 and GT915/uPD915.
These were later succeeded by the uPD914. These were later succeeded by the uPD914.
***************************************************************************/ ***************************************************************************/
@ -81,7 +81,7 @@ void gt913_device::map(address_map &map)
/* fff0-fff5: I/O ports */ /* fff0-fff5: I/O ports */
map(0xfff0, 0xfff0).rw(m_port[0], FUNC(h8_port_device::ddr_r), FUNC(h8_port_device::ddr_w)); 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 // 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(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(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)); map(0xfff3, 0xfff3).rw(m_port[1], FUNC(h8_port_device::port_r), FUNC(h8_port_device::dr_w));

View File

@ -105,7 +105,7 @@ void ds1207_device::nvram_default()
m_device_state = 0; m_device_state = 0;
int expected_bytes = sizeof(m_unique_pattern) + sizeof(m_identification) + sizeof(m_security_match) + sizeof(m_secure_memory) 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()) if(!m_region.found())
{ {
@ -266,7 +266,7 @@ WRITE_LINE_MEMBER(ds1207_device::write_clk)
if(m_bit == 24) if(m_bit == 24)
{ {
LOGDATA("%s: DS1270 -> command %02x %02x %02x (%02x %02x)\n", machine().describe_context(), 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 ]) if(m_command[ 2 ] == m_unique_pattern[ 1 ] && (m_command[ 1 ] & ~3) == m_unique_pattern[ 0 ])
{ {
@ -355,8 +355,8 @@ WRITE_LINE_MEMBER(ds1207_device::write_clk)
if(m_bit == 64) if(m_bit == 64)
{ {
LOGDATA("%s: DS1270 <- identification %02x %02x %02x %02x %02x %02x %02x %02x\n", machine().describe_context(), 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[ 0 ], m_identification[ 1 ], m_identification[ 2 ], m_identification[ 3 ],
m_identification[ 4 ], m_identification[ 5 ], m_identification[ 6 ], m_identification[ 7 ]); m_identification[ 4 ], m_identification[ 5 ], m_identification[ 6 ], m_identification[ 7 ]);
new_state(STATE_WRITE_COMPARE_REGISTER); new_state(STATE_WRITE_COMPARE_REGISTER);
} }
@ -368,10 +368,10 @@ WRITE_LINE_MEMBER(ds1207_device::write_clk)
if(m_bit == 64) 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(), 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[ 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_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[ 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[ 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) 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) if(m_bit == 64)
{ {
LOGDATA("%s: DS1207 -> identification %02x %02x %02x %02x %02x %02x %02x %02x\n", machine().describe_context(), 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[ 0 ], m_identification[ 1 ], m_identification[ 2 ], m_identification[ 3 ],
m_identification[ 4 ], m_identification[ 5 ], m_identification[ 6 ], m_identification[ 7 ]); m_identification[ 4 ], m_identification[ 5 ], m_identification[ 6 ], m_identification[ 7 ]);
new_state(STATE_WRITE_SECURITY_MATCH); new_state(STATE_WRITE_SECURITY_MATCH);
} }
@ -428,8 +428,8 @@ WRITE_LINE_MEMBER(ds1207_device::write_clk)
if(m_bit == 64) if(m_bit == 64)
{ {
LOGDATA("%s: DS1207 >- security match %02x %02x %02x %02x %02x %02x %02x %02x\n", machine().describe_context(), 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[ 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[ 4 ], m_security_match[ 5 ], m_security_match[ 6 ], m_security_match[ 7 ]);
new_state(STATE_STOP); new_state(STATE_STOP);
} }

View File

@ -6,7 +6,7 @@
#pragma once #pragma once
class generic_spi_flash_device : public device_t, class generic_spi_flash_device : public device_t,
public device_nvram_interface public device_nvram_interface
{ {
public: public:
generic_spi_flash_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock); 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) 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_data = m_data[0];
voice.m_volume_target = (m_data[0] & 0x7f00) << 16; voice.m_volume_target = (m_data[0] & 0x7f00) << 16;

View File

@ -3,19 +3,19 @@
/*************************************************************************** /***************************************************************************
Philips SCC66470 Video and System controller. Philips SCC66470 Video and System controller.
This does not render the image to the display. It is up to the user 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 to provide their own screen_update function. Pixel (palette offset) data
can be obtained by calling line( line number ) for each line. can be obtained by calling line( line number ) for each line.
Some boards have multiple video sources, the source being displayed being 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 selected based on pixel value...is there a nice way of doing this other
than leaving it to the board driver ? than leaving it to the board driver ?
Todo: Todo:
Add support for mosaic and RLE screens. Add support for mosaic and RLE screens.
Add remaining pixac operations. Only BCOLOUR1/BCOLOUR2 are supported. Add remaining pixac operations. Only BCOLOUR1/BCOLOUR2 are supported.
Add interlaced support. Add interlaced support.
Add bep ? Add bep ?
Verify number of cycles for each access. Verify number of cycles for each access.
***************************************************************************/ ***************************************************************************/
#include "emu.h" #include "emu.h"
@ -98,7 +98,7 @@ struct horizontal_settings
static const horizontal_settings h_table[] = 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 0
{ 512, 64 }, // 0 0 0 1 { 512, 64 }, // 0 0 0 1
{ 512, 0 }, // 0 0 1 0 { 512, 0 }, // 0 0 1 0

View File

@ -57,7 +57,7 @@ enum isr_bits
ISR_LRB = 0x01, // Last Received Bit ISR_LRB = 0x01, // Last Received Bit
ISR_SSR_MASK = (ISR_MST | ISR_TRX | ISR_BB),// Mask for detecting start/stop/restart 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_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 enum umr_bits

View File

@ -2,15 +2,15 @@
// copyright-holders:Nathan Woods // copyright-holders:Nathan Woods
/*************************************************************************** /***************************************************************************
fs_fat.cpp fs_fat.cpp
PC FAT disk images PC FAT disk images
Current Limitations: Current Limitations:
- Read only - Read only
- Only supports floppy disks - Only supports floppy disks
- No FAT32 support - No FAT32 support
- No Long Filenames Support - No Long Filenames Support
***************************************************************************** *****************************************************************************
@ -18,125 +18,125 @@
Offset Length Description Offset Length Description
------ ------ ----------- ------ ------ -----------
0 446 Boot machine code 0 446 Boot machine code
446 16 Partion #1 info 446 16 Partion #1 info
462 16 Partion #2 info 462 16 Partion #2 info
478 16 Partion #3 info 478 16 Partion #3 info
494 16 Partion #4 info 494 16 Partion #4 info
510 2 Magic bytes (0x55 0xAA) 510 2 Magic bytes (0x55 0xAA)
Partition info format: Partition info format:
Offset Length Description Offset Length Description
------ ------ ----------- ------ ------ -----------
0 1 Active byte (0x80=active 0x00=inactive) 0 1 Active byte (0x80=active 0x00=inactive)
1 1 Starting head 1 1 Starting head
2 1 Starting sector (bits 5-0) and high bits of starting track (bits 6-5) 2 1 Starting sector (bits 5-0) and high bits of starting track (bits 6-5)
3 1 Low bits of starting track 3 1 Low bits of starting track
4 1 Partition type: 4 1 Partition type:
0x00 Unused 0x00 Unused
0x?1 FAT12 (0-15 MB) 0x?1 FAT12 (0-15 MB)
0x?2 XENIX 0x?2 XENIX
0x?4 FAT16 (16-32 MB) 0x?4 FAT16 (16-32 MB)
0x?6 FAT16` (32 MB-2 GB) 0x?6 FAT16` (32 MB-2 GB)
0x?7 HPFS or NTFS 0x?7 HPFS or NTFS
0x?A Boot Manager 0x?A Boot Manager
0x?B FAT32 (512 MB-2 TB) 0x?B FAT32 (512 MB-2 TB)
0x?C FAT32 (512 MB-2 TB LBA) 0x?C FAT32 (512 MB-2 TB LBA)
0x1? OS/2 Boot manager/Win95 hidden 0x1? OS/2 Boot manager/Win95 hidden
0xC? DR-DOS secured partition 0xC? DR-DOS secured partition
0xD? Multiuser DOS secured partition 0xD? Multiuser DOS secured partition
0xE? SpeedStor extended partition 0xE? SpeedStor extended partition
5 1 Ending head 5 1 Ending head
6 1 Ending sector (bits 5-0) and high bits of ending track (bits 6-5) 6 1 Ending sector (bits 5-0) and high bits of ending track (bits 6-5)
7 1 Low bits of ending track 7 1 Low bits of ending track
8 4 Sector index of beginning of partition 8 4 Sector index of beginning of partition
12 4 Total sectors in partition 12 4 Total sectors in partition
Boot sector format: Boot sector format:
Offset Length Description Offset Length Description
------ ------ ----------- ------ ------ -----------
0 3 Jump instruction (to skip over header on boot) 0 3 Jump instruction (to skip over header on boot)
3 8 OEM Name 3 8 OEM Name
11 2 Bytes per sector 11 2 Bytes per sector
13 1 Sectors per cluster 13 1 Sectors per cluster
14 2 Reserved sector count (including boot sector) 14 2 Reserved sector count (including boot sector)
16 1 Number of FATs (file allocation tables) 16 1 Number of FATs (file allocation tables)
17 2 Number of root directory entries 17 2 Number of root directory entries
19 2 Total sectors (bits 0-15) 19 2 Total sectors (bits 0-15)
21 1 Media descriptor 21 1 Media descriptor
22 2 Sectors per FAT 22 2 Sectors per FAT
24 2 Sectors per track 24 2 Sectors per track
26 2 Number of heads 26 2 Number of heads
28 4 Hidden sectors 28 4 Hidden sectors
32 4 Total sectors (bits 16-47) 32 4 Total sectors (bits 16-47)
36 1 Physical drive number 36 1 Physical drive number
37 1 Current head 37 1 Current head
38 1 Signature 38 1 Signature
39 4 ID 39 4 ID
43 11 Volume Label 43 11 Volume Label
54 8 FAT file system type 54 8 FAT file system type
62 448 Boot machine code 62 448 Boot machine code
510 2 Magic bytes (0x55 0xAA) 510 2 Magic bytes (0x55 0xAA)
For more information: For more information:
http://support.microsoft.com/kb/q140418/ http://support.microsoft.com/kb/q140418/
Directory Entry Format: Directory Entry Format:
Offset Length Description Offset Length Description
------ ------ ----------- ------ ------ -----------
0 8 DOS File Name (padded with spaces) 0 8 DOS File Name (padded with spaces)
8 3 DOS File Extension (padded with spaces) 8 3 DOS File Extension (padded with spaces)
11 1 File Attributes 11 1 File Attributes
12 2 Unknown 12 2 Unknown
14 4 Time of Creation 14 4 Time of Creation
18 2 Last Access Time 18 2 Last Access Time
20 2 EA-Index (OS/2 stuff) 20 2 EA-Index (OS/2 stuff)
22 4 Last Modified Time 22 4 Last Modified Time
26 2 First Cluster 26 2 First Cluster
28 4 File Size 28 4 File Size
Dates and times are stored in separate words; when together, the time is Dates and times are stored in separate words; when together, the time is
first and the date is second. first and the date is second.
Time: Time:
bits 15-11 Hour bits 15-11 Hour
bits 10- 5 Minute bits 10- 5 Minute
bits 4- 0 Second / 2 bits 4- 0 Second / 2
Date: Date:
bits 15- 9 Year - 1980 bits 15- 9 Year - 1980
bits 8- 5 Month bits 8- 5 Month
bits 4- 0 Day bits 4- 0 Day
LFN Entry Format: LFN Entry Format:
Offset Length Description Offset Length Description
------ ------ ----------- ------ ------ -----------
0 1 Sequence Number (bit 6 is set on highest sequence) 0 1 Sequence Number (bit 6 is set on highest sequence)
1 10 Name characters (five UTF-16LE chars) 1 10 Name characters (five UTF-16LE chars)
11 1 Attributes (always 0x0F) 11 1 Attributes (always 0x0F)
12 1 Reserved (always 0x00) 12 1 Reserved (always 0x00)
13 1 Checksum of short filename entry 13 1 Checksum of short filename entry
14 12 Name characters (six UTF-16LE chars) 14 12 Name characters (six UTF-16LE chars)
26 2 Entry Cluster (always 0x00) 26 2 Entry Cluster (always 0x00)
28 4 Name characters (two UTF-16LE chars) 28 4 Name characters (two UTF-16LE chars)
Valid characters in DOS file names: Valid characters in DOS file names:
- Upper case letters A-Z - Upper case letters A-Z
- Numbers 0-9 - Numbers 0-9
- Space (though there is no way to identify a trailing space) - Space (though there is no way to identify a trailing space)
- ! # $ % & ( ) - @ ^ _ ` { } ~ - ! # $ % & ( ) - @ ^ _ ` { } ~
- Characters 128-255 (though the code page is indeterminate) - Characters 128-255 (though the code page is indeterminate)
For more information: 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_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); } 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); } u8 attributes() const { return m_block.r8(m_offset + 11); }
u32 raw_create_datetime() const { return m_block.r32l(m_offset + 14); } 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 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 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); } u32 file_size() const { return m_block.r32l(m_offset + 28); }
bool is_read_only() const { return (attributes() & 0x01) != 0x00; } bool is_read_only() const { return (attributes() & 0x01) != 0x00; }
bool is_hidden() const { return (attributes() & 0x02) != 0x00; } bool is_hidden() const { return (attributes() & 0x02) != 0x00; }
bool is_system() const { return (attributes() & 0x04) != 0x00; } bool is_system() const { return (attributes() & 0x04) != 0x00; }
bool is_volume_label() const { return (attributes() & 0x08) != 0x00; } bool is_volume_label() const { return (attributes() & 0x08) != 0x00; }
bool is_subdirectory() const { return (attributes() & 0x10) != 0x00; } bool is_subdirectory() const { return (attributes() & 0x10) != 0x00; }
bool is_archive() const { return (attributes() & 0x20) != 0x00; } bool is_archive() const { return (attributes() & 0x20) != 0x00; }
std::string name() const; std::string name() const;
meta_data metadata() const; meta_data metadata() const;
private: private:
fsblk_t::block_t m_block; fsblk_t::block_t m_block;
u32 m_offset; u32 m_offset;
}; };
@ -231,13 +231,13 @@ public:
std::vector<u32> get_sectors_from_fat(const directory_entry &dirent) const; std::vector<u32> get_sectors_from_fat(const directory_entry &dirent) const;
private: private:
fsblk_t::block_t m_boot_sector_block; fsblk_t::block_t m_boot_sector_block;
std::vector<u8> m_file_allocation_table; std::vector<u8> m_file_allocation_table;
u32 m_starting_sector; u32 m_starting_sector;
u32 m_sector_count; u32 m_sector_count;
u16 m_reserved_sector_count; u16 m_reserved_sector_count;
u16 m_bytes_per_sector; u16 m_bytes_per_sector;
u8 m_bits_per_fat_entry; u8 m_bits_per_fat_entry;
// methods // methods
std::optional<directory_entry> find_entity(const std::vector<std::string> &path) const; 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; virtual std::vector<u32> get_directory_sectors() const override;
private: private:
const impl & m_fs; const impl & m_fs;
u32 m_first_sector; u32 m_first_sector;
u16 m_directory_entry_count; u16 m_directory_entry_count;
}; };
@ -273,8 +273,8 @@ public:
virtual std::vector<u32> get_directory_sectors() const override; virtual std::vector<u32> get_directory_sectors() const override;
private: private:
const impl & m_fs; const impl & m_fs;
directory_entry m_dirent; directory_entry m_dirent;
}; };
@ -286,7 +286,7 @@ private:
//************************************************************************** //**************************************************************************
//------------------------------------------------- //-------------------------------------------------
// validate_filename // validate_filename
//------------------------------------------------- //-------------------------------------------------
namespace { 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) util::arbitrary_datetime decode_fat_datetime(u32 dt)
@ -311,12 +311,12 @@ util::arbitrary_datetime decode_fat_datetime(u32 dt)
util::arbitrary_datetime result; util::arbitrary_datetime result;
memset(&result, 0, sizeof(result)); memset(&result, 0, sizeof(result));
result.year = ((dt >> 25) & 0x7F) + 1980; result.year = ((dt >> 25) & 0x7F) + 1980;
result.month = (dt >> 21) & 0x0F; result.month = (dt >> 21) & 0x0F;
result.day_of_month = (dt >> 16) & 0x1F; result.day_of_month = (dt >> 16) & 0x1F;
result.hour = (dt >> 11) & 0x1F; result.hour = (dt >> 11) & 0x1F;
result.minute = (dt >> 5) & 0x3F; result.minute = (dt >> 5) & 0x3F;
result.second = ((dt >> 0) & 0x1F) * 2; result.second = ((dt >> 0) & 0x1F) * 2;
return result; 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 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 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 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 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 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> fs::fat_image::volume_meta_description() const
{ {
std::vector<meta_description> results; 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::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::oem_name, "", false, [](const meta_value &m) { return m.as_string().size() <= 8; }, "OEM name, up to 8 characters");
return results; return results;
} }
//------------------------------------------------- //-------------------------------------------------
// fat_image::file_meta_description // fat_image::file_meta_description
//------------------------------------------------- //-------------------------------------------------
std::vector<meta_description> fs::fat_image::file_meta_description() const 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 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) 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 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 directory_entry::metadata() const
{ {
meta_data result; meta_data result;
result.set(meta_name::name, name()); result.set(meta_name::name, name());
result.set(meta_name::creation_date, decode_fat_datetime(raw_create_datetime())); 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::modification_date, decode_fat_datetime(raw_modified_datetime()));
result.set(meta_name::length, file_size()); result.set(meta_name::length, file_size());
return result; 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) 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 impl::volume_metadata()
{ {
meta_data results; meta_data results;
results.set(meta_name::name, m_boot_sector_block.rstr(43, 11)); 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::oem_name, m_boot_sector_block.rstr(3, 8));
return results; return results;
} }
//------------------------------------------------- //-------------------------------------------------
// impl::metadata // impl::metadata
//------------------------------------------------- //-------------------------------------------------
std::pair<err_t, meta_data> impl::metadata(const std::vector<std::string> &path) 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) 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) 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 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 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 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 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 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) 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 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) 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 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 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 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 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 std::unique_ptr<filesystem_t> pc_fat_image::mount(fsblk_t &blockdev) const

View File

@ -2,9 +2,9 @@
// copyright-holders:Nathan Woods // 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: TODO:
- Move RBV machines (IIci/IIsi) to separate driver? - Move RBV machines (IIci/IIsi) to separate driver?
- Move IIfx 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 // copyright-holders:SomeRandomGuyIdk
/********************************************************************** /**********************************************************************
Barcrest MPU1 (1978) Barcrest MPU1 (1978)
Barcrest's first fruit machine platform to use a conventional CPU, Barcrest's first fruit machine platform to use a conventional CPU,
possibly the first of it's kind. Has electromechanical reels possibly the first of it's kind. Has electromechanical reels
instead of the usual stepper reels. The hardware features a MC6800 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. 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 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. (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. 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 Most cartridges use a common 2K mask ROM, with the remaining 2K
available for the game program. available for the game program.
TODO: TODO:
- Layouts (there currently aren't any...) - Layouts (there currently aren't any...)
**********************************************************************/ **********************************************************************/

View File

@ -1,117 +1,117 @@
// license:BSD-3-Clause // license:BSD-3-Clause
// copyright-holders:Devin Acker // 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): Main board (JCM358-MA1M):
LSI301: CPU (Casio/NEC uPD912GF) LSI301: CPU (Casio/NEC uPD912GF)
LSI302: DSP (Hitachi HG51B277FB) LSI302: DSP (Hitachi HG51B277FB)
LSI303: 8Mbit ROM (Macronix MX23C8100MC-12) LSI303: 8Mbit ROM (Macronix MX23C8100MC-12)
LSI304: 64kbit SRAM for CPU (Sanyo LC3564SM-85), battery backed LSI304: 64kbit SRAM for CPU (Sanyo LC3564SM-85), battery backed
LSI305: 256kbit SRAM for DSP (Sanyo LC333832M-70) LSI305: 256kbit SRAM for DSP (Sanyo LC333832M-70)
LSI306: stereo DAC (NEC uPD6379GR) LSI306: stereo DAC (NEC uPD6379GR)
X301: 24MHz crystal for CPU X301: 24MHz crystal for CPU
X302: 16MHz ceramic for DSP X302: 16MHz ceramic for DSP
Service manual with schematics, pinouts, etc.: Service manual with schematics, pinouts, etc.:
https://revenant1.net/casio/manuals/upd91x/ap10.pdf https://revenant1.net/casio/manuals/upd91x/ap10.pdf
To access the test mode (not mentioned in the service manual): 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. Hold both pedals and "Transpose/Tune/MIDI" while turning on the keyboard, then release the button.
Afterwards, press one of these buttons: Afterwards, press one of these buttons:
- Transpose: LED test - Transpose: LED test
- Effect: switch test (press all front panel buttons left to right) - Effect: switch test (press all front panel buttons left to right)
- Piano: key test (press all keys left to right) - Piano: key test (press all keys left to right)
- E.Piano: ROM test - E.Piano: ROM test
- Organ/Strings/Song: sound volume test - Organ/Strings/Song: sound volume test
- Record/Start/Stop: stereo test - Record/Start/Stop: stereo test
- Demo: MIDI loopback test - Demo: MIDI loopback test
- Harpsichord: exit test mode - Harpsichord: exit test mode
TODO: fix backup RAM getting re-initialized on every boot. TODO: fix backup RAM getting re-initialized on every boot.
Depends on the power switch being implemented correctly - turning the power off 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 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 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 - GZ-30M
Basic model, small desktop module Basic model, small desktop module
No 5-pin MIDI jack, only mini-DIN for RS-232 or RS-422 No 5-pin MIDI jack, only mini-DIN for RS-232 or RS-422
- GZ-70SP - GZ-70SP
MIDI module built into a pair of speakers w/ karaoke mic input MIDI module built into a pair of speakers w/ karaoke mic input
Provides both standard MIDI and mini-DIN connectors Provides both standard MIDI and mini-DIN connectors
- WG-130 - WG-130
WaveBlaster-style PC daughterboard WaveBlaster-style PC daughterboard
WG-130 board: WG-130 board:
LSI101: stereo DAC (NEC uPD6379GR) LSI101: stereo DAC (NEC uPD6379GR)
LSI102: CPU (Casio GT913F) LSI102: CPU (Casio GT913F)
LSI103: 16Mbit ROM (Casio GM16000N-C40) LSI103: 16Mbit ROM (Casio GM16000N-C40)
LSI104: 64kbit SRAM (Sanyo LC3564SM-85) LSI104: 64kbit SRAM (Sanyo LC3564SM-85)
LSI105: unpopulated, for DSP SRAM LSI105: unpopulated, for DSP SRAM
LSI106: unpopulated, for DSP LSI106: unpopulated, for DSP
X101: 30MHz crystal X101: 30MHz crystal
X102: unpopulated, for DSP X102: unpopulated, for DSP
All three of these apparently use the same mask ROM. 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, 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. 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 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 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 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 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). 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. 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). The result is indicated both by sound as well as output on pin 55 (KI2/P11).
More info and photos: More info and photos:
https://piano.tyonmage.com/casio/gz-30m.html https://piano.tyonmage.com/casio/gz-30m.html
https://piano.tyonmage.com/casio/gz-70sp.html https://piano.tyonmage.com/casio/gz-70sp.html
http://www.yjfy.com/museum/sound/WG-130.htm 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): Main board (JCM462-MA1M):
LSI1: CPU (Casio GT913F) LSI1: CPU (Casio GT913F)
LSI2: DSP (Casio GD277F / Hitachi HG51B277FB) LSI2: DSP (Casio GD277F / Hitachi HG51B277FB)
LSI3: 16Mbit ROM (Macronix MX23C1610MC-12) LSI3: 16Mbit ROM (Macronix MX23C1610MC-12)
LSI4: 256kbit SRAM for CPU (Toshiba TC55257DFL-70L) LSI4: 256kbit SRAM for CPU (Toshiba TC55257DFL-70L)
LSI5: 256kbit SRAM for DSP (same as LSI4) LSI5: 256kbit SRAM for DSP (same as LSI4)
LSI6: stereo DAC (NEC uPD6379GR) LSI6: stereo DAC (NEC uPD6379GR)
X1: 30MHz crystal for CPU X1: 30MHz crystal for CPU
X2: 20MHz ceramic for DSP X2: 20MHz ceramic for DSP
Display board (JCM462-LCD1M): Display board (JCM462-LCD1M):
LSI401: LCD controller (Epson SED1278F2A) LSI401: LCD controller (Epson SED1278F2A)
Service manuals with schematics, pinouts, etc.: Service manuals with schematics, pinouts, etc.:
https://revenant1.net/casio/manuals/upd91x/ctk601.pdf https://revenant1.net/casio/manuals/upd91x/ctk601.pdf
https://revenant1.net/casio/manuals/upd91x/ctk611.pdf https://revenant1.net/casio/manuals/upd91x/ctk611.pdf
To access the test mode (not mentioned in the service manual): 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. 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: "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 0: switch test (press all front panel buttons in a specific order, generally left to right)
- Keypad 1: pedal and key test - Keypad 1: pedal and key test
- Keypad 2: ROM test - Keypad 2: ROM test
- Keypad 4/5/6: sound volume test - Keypad 4/5/6: sound volume test
- Keypad 7/8: stereo test - Keypad 7/8: stereo test
- Keypad 9: MIDI loopback test - Keypad 9: MIDI loopback test
- Keypad +: power source test - Keypad +: power source test
- Cursor Left: LCD test (all segments at once) - Cursor Left: LCD test (all segments at once)
- Cursor Right: LCD test (all segments individually) - Cursor Right: LCD test (all segments individually)
- Cursor Down: power off - Cursor Down: power off
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
@ -125,16 +125,16 @@
Adds pitch wheel and different selection of demo songs Adds pitch wheel and different selection of demo songs
Main board (JCM453-MA1M / JCM456-MA1M): Main board (JCM453-MA1M / JCM456-MA1M):
LSI1: CPU (Casio GT913F) LSI1: CPU (Casio GT913F)
LSI2: 8Mbit ROM (OKI MSM538002E) LSI2: 8Mbit ROM (OKI MSM538002E)
LSI3: LCD controller (HD44780 compatible) LSI3: LCD controller (HD44780 compatible)
May be either a Samsung KS0066U-10B or Epson SED1278F2A. May be either a Samsung KS0066U-10B or Epson SED1278F2A.
IC1: stereo DAC (NEC uPD6379GR) IC1: stereo DAC (NEC uPD6379GR)
X1: 30MHz ceramic X1: 30MHz ceramic
Service manuals with schematics, pinouts, etc.: Service manuals with schematics, pinouts, etc.:
https://revenant1.net/casio/manuals/upd91x/ctk531.pdf 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): 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. Hold the "Start/Stop" and keypad 0 buttons together when turning on the keyboard.

View File

@ -544,7 +544,7 @@ void jpmsru_state::out_logicext_w(offs_t offset, uint8_t data)
switch(offset) switch(offset)
{ {
case 0: out_lamp_ext_w(m_logicext_addr, !m_logicext_data); break; /* All dumped games use solely lamps as outputs, 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 1: m_logicext_data = data; break;
case 2: case 2:
case 3: case 3:

View File

@ -32,22 +32,22 @@ memory map:
bit 2 = nmi enable/acknowledge bit 2 = nmi enable/acknowledge
bit 3 = flip screen (applies to sprites only, not tilemaps) bit 3 = flip screen (applies to sprites only, not tilemaps)
bit 4 = disable internal sprite processing 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 aliens sets it just after checking bit 0, and before copying
the sprite data the sprite data
bit 5 = enable gfx ROM reading bit 5 = enable gfx ROM reading
bit 6 = let cpu address bits 2~5 pass through CA0~3 when bit 5 is set 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 001 W bit 0 = invert shadow for all pens
bit 1 = force shadows for pen 0x0f bit 1 = force shadows for pen 0x0f
bit 2 = disable shadows for pen 0x0f (priority over bit 1) bit 2 = disable shadows for pen 0x0f (priority over bit 1)
Devastators sets bit 1. Devastators sets bit 1.
Ultraman sets the register to 0x0f. Ultraman sets the register to 0x0f.
None of the other games I tested seem to set this register to other than 0. 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. Update: Chequered Flag sets bit 0 when background should be dimmed.
002-003 W selects the portion of the gfx ROMs to be read. 002-003 W selects the portion of the gfx ROMs to be read.
004 W bit 0 = OC6 when gfx ROM reading is enabled 004 W bit 0 = OC6 when gfx ROM reading is enabled
bit 1 = OC7 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 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 and TMNT don't, they use another bit of the registers above. Many
other games write to this register before testing. other games write to this register before testing.
Bits 2-7 of 003 go to OC0-OC5. Bits 2-7 of 003 go to OC0-OC5.

View File

@ -84,12 +84,12 @@ private:
devcb_write_line m_firq_handler; devcb_write_line m_firq_handler;
devcb_write_line m_nmi_handler; devcb_write_line m_nmi_handler;
uint8_t m_spriterombank[3]; uint8_t m_spriterombank[3];
uint8_t m_romoffset; uint8_t m_romoffset;
bool m_spriteflip, m_readroms; bool m_spriteflip, m_readroms;
uint8_t m_shadow_config; uint8_t m_shadow_config;
bool m_inv_shadow; bool m_inv_shadow;
bool m_nmi_enabled; bool m_nmi_enabled;
int k051960_fetchromdata( int byte ); int k051960_fetchromdata( int byte );
}; };

View File

@ -10,7 +10,7 @@
on the parameters. on the parameters.
Thunder Cross II POST checks of this chip. 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; 1. zeroing all ports;
2. test that status returns 0; 2. test that status returns 0;
3. ping ACX reg 0 with 0xff; 3. ping ACX reg 0 with 0xff;

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 1 (IN, Bulk): Command handler, receives commands from the PS2
Endpoint 2 (OUT, Bulk): Command responses, sends responses back to 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 Endpoint 3 (IN, Interrupt): JAMMA I/O + analog I/O state response
Response: Response:
0x00 - 0x04 JAMMA I/O (IN) 0x00 - 0x04 JAMMA I/O (IN)
0x04 - 0x06 Analog I/O (ANALOG1) 0x04 - 0x06 Analog I/O (ANALOG1)
0x06 - 0x08 Analog I/O (ANALOG2) 0x06 - 0x08 Analog I/O (ANALOG2)

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="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="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="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="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="Triple Bar"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text>
</element> </element>
<element name="Reel 2"> <element name="Reel 2">
<rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> <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="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="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="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>
<element name="LCD" defstate="0"> <element name="LCD" defstate="0">
<led7seg> <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="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="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="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>
<element name="Reel 2"> <element name="Reel 2">
<rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect>

View File

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

View File

@ -1353,7 +1353,7 @@ void playch10_state::gboard_rom_switch_w(offs_t offset, u8 data)
case 0x2001: // enable ram at $6000 case 0x2001: // enable ram at $6000
// ignored - we always enable it // ignored - we always enable it
break; break;
case 0x4000: // scanline counter case 0x4000: // scanline counter
m_IRQ_count_latch = data; m_IRQ_count_latch = data;

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) \ #define VS_UNI_JOYSTICK(port_tag, player, type1, name1) \
PORT_START(port_tag) \ PORT_START(port_tag) \
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(player) PORT_NAME("%p A") \ 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( 0x04, IP_ACTIVE_HIGH, type1 ) PORT_NAME(name1) \
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) \ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) \
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(player) \ 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) \ #define VS_DUAL_JOYSTICK(port_tag, player, type1, type2, name1, name2) \
PORT_START(port_tag) \ PORT_START(port_tag) \
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(player) PORT_NAME("%p A") \ 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( 0x04, IP_ACTIVE_HIGH, type1 ) PORT_NAME(name1) \
PORT_BIT( 0x08, IP_ACTIVE_HIGH, type2 ) PORT_NAME(name2) \ PORT_BIT( 0x08, IP_ACTIVE_HIGH, type2 ) PORT_NAME(name2) \
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(player) \ 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) Crayon Shin-chan 3 (not dumped?) Interactive Sampler (three different versions)
Nuon Games + Demos (collection from Nuon-Dome) Nuon Games + Demos (collection from Nuon-Dome)
Nuon-Dome PhillyClassic 5 Demo Disc (give-away collection) 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. 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 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) MicroART ATM (clone of Spectrum)
NOTES: NOTES:
Current implementation based on ATM Turbo 2+. If anybody wants to validate ATM1, existing Current implementation based on ATM Turbo 2+. If anybody wants to validate ATM1, existing
code must be moved to atmtb2_state not modified. code must be moved to atmtb2_state not modified.
TODO: TODO:
* ports read * ports read
* ATM2+ (compare to ATM2) has only 1M RAM vs 512K * ATM2+ (compare to ATM2) has only 1M RAM vs 512K
* Mem masks are hardcoded to 1M RAM * Mem masks are hardcoded to 1M RAM
* better handling of SHADOW ports * better handling of SHADOW ports
* validate screen timings * validate screen timings
*******************************************************************************************/ *******************************************************************************************/

View File

@ -2,19 +2,19 @@
// copyright-holders:Devin Acker // copyright-holders:Devin Acker
/* /*
VTech Phusion (2000) VTech Phusion (2000)
This handheld organizer/PDA runs on an unknown CR16B SoC. This handheld organizer/PDA runs on an unknown CR16B SoC.
It's probably similar (but not identical) to the one described in glcx.cpp. It's probably similar (but not identical) to the one described in glcx.cpp.
Main board: Main board:
U1: Analog Integrations AIC1652CS U1: Analog Integrations AIC1652CS
U2: 8Mbit flash (Toshiba TC58FVT800FT-85) U2: 8Mbit flash (Toshiba TC58FVT800FT-85)
U3: Hyundai GM76FV18ALLFW70 U3: Hyundai GM76FV18ALLFW70
U10: unknown CR16B-based SoC (epoxy blob) U10: unknown CR16B-based SoC (epoxy blob)
U11: National Semiconductor DS14C232CM U11: National Semiconductor DS14C232CM
U12: National Semiconductor LM4882 U12: National Semiconductor LM4882
U14: 16Mbit mask ROM (Sharp LH53V16500) U14: 16Mbit mask ROM (Sharp LH53V16500)
*/ */