// license:BSD-3-Clause // copyright-holders:David Haywood /* Adder 5 (Scorpion 5 Video Board) Skeleton Driver - For note keeping. This system is not emulated. ISS 3 ADDER 5 VIDEO CARD COMPONENT SIDE SOLDER SIDE ___________________________ ___________________________ | _______ _______ _______ | | | || | |__CN2_||__CN1_| | | | || IC3 | MAX202 MAX202| | | ||______| XTL3 | | | | _________________ |___ ___| | | | | ___ |__| |__| | | | ROM 2 IC7 | |IC8 |__| |__| | | |________________| |__| PLG1 |__| | | _________________ |__| |__| | | | | |__| |__| | | | ROM 1 IC6 | XTL2 |__| |__| | | |________________| |__| |__| | | _______________________ |__| |__| ____ | ||_|_|_|_|__PLG3__|_|_|_| |__| |__| |IC | ____________ | | ____ |__| |__| |11 | | ______| | | |IC5| |__| |__| |___| | |__ | | |___| XTL1|__| |__| ____ | |__ | | __________________ |__| |__| |IC | | |__ | | | | |__| |__| | 9 | |PL1 |__ | | | IC1 | |__| |__| |___| | |__ | | | YAMAHA | |__| |__| ____ | |__ | | | YGV619-V | |__| |__| |IC | | |__ | | | | |__| |__| |10 | | |__ | | | | | | |___| | |______ | | |_________________| | | |___________| | | _____ _____ ____| |____ | | | | | | | | | | | IC2| | IC4| | | | | | | | | | | | | |____| |____| | | | | ______ | | ______ | |_____________| |_| |_| |_____________| | PLG2 | | | |_______| |_______| XTL1 = 20.00 MHz XTL2 = 20.00 MHz XTL3 = 3.686 MHz IC2 = Samsung K4S641632H-UC75 IC3 = Philips / NXP SCC6861C1A44 IC4 = Samsung K4S641632H-UC75 IC5 = GAL16V8D IC8 = PIC (for external Serial EEPROM) IC9 = LCX245 IC10 = LCX245 IC11 = 74HCT2730 PLG1 = To mother board PLG2 = VGA OUT (HD15) PLG3 = Flash (for pluging flash ROMs) CN1 = RS232 Port 3 CN2 = RS232 Port 4 PL1 = Compact Flash Slot Flash ROMs are plugged into PLG3 on a small sub-board with the following pinout: +----------------+ | +--+ | | |01| | | |::| +------+ | | |::| | | | | |::| |28F128| | | |::| | | | | |::| | | | | |::| +------+ | | |30| | | +--+ | +----------------+ GND |01| GND GND |02| GND WE |03| A23 STS |04| OE D07 |05| D15 D06 |06| D14 D13 |07| GND D12 |08| D05 VCCq|09| D04 D11 |10| GND D10 |11| D03 VCC |12| D02 D01 |13| D09 D00 |14| D08 BYTE|15| NC CE2 |16| A22 A01 |17| A00 A03 |18| A02 A05 |19| A04 GND |20| A06 A08 |21| A07 A10 |22| A09 Vpen|23| RP A11 |24| CE0 A13 |25| A12 VCC |26| A14 A16 |27| A15 A18 |28| A17 A20 |29| A19 A21 |30| CE1 */ #include "emu.h" #include "includes/bfm_ad5.h" #include "machine/mcf5206e.h" #include "machine/bfm_sc45_helper.h" #include "speaker.h" void adder5_state::init_ad5() { // sc5 roms always start with SC5 uint8_t *src = memregion( "maincpu" )->base(); // printf("%02x %02x %02x %02x\n", src[0], src[1], src[2], src[3]); if (((src[0] == 0x20) && (src[2] == 0x43)) || ((src[1] == 0x35) && (src[3] == 0x53))) { printf("Confirmed SC5 ROM\n"); } else { printf("NOT AN SC5 ROM!!!!!\n"); } // there is usually a string in the rom with identification info, often also saying which sound rom should be used! // find it. int found = find_project_string(machine(), 3, 0); if (!found) { printf("Normal rom pair string not found, checking mismatched / missing rom string\n"); } // help identify roms where one of the pair is missing too if (!found) { found = find_project_string(machine(), 3, 1); } if (!found) { found = find_project_string(machine(), 3, 2); } if (!found) { printf("No suitable string found\n"); } } void adder5_state::ad5_map(address_map &map) { map(0x00000000, 0x00ffffff).rom(); map(0x01000000, 0x0100ffff).ram(); map(0x40000000, 0x40000fff).ram(); map(0x80000000, 0x8000ffff).ram(); map(0x80800000, 0x8080ffff).ram(); map(0xffff0000, 0xffff03ff).rw("maincpu_onboard", FUNC(mcf5206e_peripheral_device::dev_r), FUNC(mcf5206e_peripheral_device::dev_w)); // technically this can be moved with MBAR } INPUT_PORTS_START( bfm_ad5 ) INPUT_PORTS_END INTERRUPT_GEN_MEMBER(adder5_state::ad5_fake_timer_int) { // this should be coming from the Timer / SIM modules of the Coldfire // m_maincpu->set_input_line_and_vector(5, HOLD_LINE, 0x8c); // MCF5206E but disabled } void adder5_state::bfm_ad5(machine_config &config) { MCF5206E(config, m_maincpu, 40000000); /* MCF5206eFT */ m_maincpu->set_addrmap(AS_PROGRAM, &adder5_state::ad5_map); m_maincpu->set_periodic_int(FUNC(adder5_state::ad5_fake_timer_int), attotime::from_hz(1000)); MCF5206E_PERIPHERAL(config, "maincpu_onboard", 0); SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); /* unknown sound */ }