mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
bbc.cpp: Reimplemented the addressable latch with LS259 device.
- Added 32K ROM slots in B+ and Master variants. - Use bankdev to switch IO/ROM in Master. - Use ram_device instead of ROM_REGION for RAM. - Added I2CMEM device for PCD8572 in Master Compact. - Corrected sound device SN76489->SN76489A.
This commit is contained in:
parent
066f6f3242
commit
ad8f14beb5
@ -132,6 +132,7 @@ WRITE8_MEMBER(bbc_1mhzbus_slot_device::jim_w)
|
||||
// slot devices
|
||||
//#include "teletext.h"
|
||||
//#include "ieee488.h"
|
||||
//#include "m2000.h"
|
||||
//#include "m5000.h"
|
||||
//#include "scsi.h"
|
||||
//#include "multiform.h"
|
||||
@ -146,18 +147,37 @@ WRITE8_MEMBER(bbc_1mhzbus_slot_device::jim_w)
|
||||
void bbc_1mhzbus_devices(device_slot_interface &device)
|
||||
{
|
||||
// device.option_add("teletext", BBC_TELETEXT); /* Acorn ANE01 Teletext Adapter */
|
||||
// device.option_add("ieee488", BBC_IEEE488); /* Acorn ANK01 IEEE488 Interface */
|
||||
//device.option_add("ieee488", BBC_IEEE488); /* Acorn ANK01 IEEE488 Interface */
|
||||
//device.option_add("m500", BBC_M500); /* Acorn ANV02 Music 500 */
|
||||
//device.option_add("awdd", BBC_AWDD); /* Acorn Winchester 110/130 */
|
||||
//..device.option_add("twdd", BBC_TWDD); /* Technomatic Winchester (Akhter Host Adaptor + ABD4070 */
|
||||
// device.option_add("m2000", BBC_M2000); /* Hybrid Music 2000 MIDI Interface */
|
||||
//device.option_add("m3000", BBC_M3000); /* Hybrid Music 3000 Expander */
|
||||
//device.option_add("m5000", BBC_M5000); /* Hybrid Music 5000 Synthesiser */
|
||||
//device.option_add("b488", BBC_B488); /* Aries B488 */
|
||||
//device.option_add("procyon", BBC_PROCYON); /* CST Procyon IEEE Interface */
|
||||
//device.option_add("twdd", BBC_TWDD); /* Technomatic Winchester (Akhter Host Adaptor + ABD4070 */
|
||||
//device.option_add("multiform", BBC_MULTIFORM); /* Technomatic Multiform Z80 */
|
||||
device.option_add("opus3", BBC_OPUS3); /* Opus Challenger 3 */
|
||||
//device.option_add("ramdisc", BBC_RAMDISC); /* Morley Electronics RAM Disc */
|
||||
//device.option_add("graduate", BBC_GRADUATE); /* The Torch Graduate G400/G800 */
|
||||
device.option_add("beebsid", BBC_BEEBSID); /* BeebSID */
|
||||
//device.option_add("prisma3", BBC_PRISMA3); /* PRISMA-3 - Millipede 1989 */
|
||||
}
|
||||
|
||||
void bbcm_1mhzbus_devices(device_slot_interface &device)
|
||||
{
|
||||
//device.option_add("teletext", BBC_TELETEXT); /* Acorn ANE01 Teletext Adapter */
|
||||
//device.option_add("ieee488", BBC_IEEE488); /* Acorn ANK01 IEEE488 Interface */
|
||||
//device.option_add("m500", BBC_M500); /* Acorn ANV02 Music 500 */
|
||||
//device.option_add("awdd", BBC_AWDD); /* Acorn Winchester 110/130 */
|
||||
//device.option_add("b488", BBC_B488); /* Aries B488 */
|
||||
//device.option_add("procyon", BBC_PROCYON); /* CST Procyon IEEE Interface */
|
||||
//device.option_add("twdd", BBC_TWDD); /* Technomatic Winchester (Akhter Host Adaptor + ABD4070 */
|
||||
//device.option_add("m2000", BBC_M2000); /* Hybrid Music 2000 Interface */
|
||||
//device.option_add("m3000", BBC_M3000); /* Hybrid Music 3000 Expander */
|
||||
//device.option_add("m5000", BBC_M5000); /* Hybrid Music 5000 Synthesiser */
|
||||
//device.option_add("m87", BBC_M87); /* Peartree Music 87 Synthesiser */
|
||||
//device.option_add("multiform", BBC_MULTIFORM); /* Technomatic Multiform Z80 */
|
||||
//device.option_add("opusa", BBC_OPUSA); /* Opus Challenger ADFS */
|
||||
//device.option_add("ramdisc", BBC_RAMDISC); /* Morley Electronics RAM Disc */
|
||||
device.option_add("beebsid", BBC_BEEBSID); /* BeebSID */
|
||||
//device.option_add("prisma3", BBC_PRISMA3); /* PRISMA-3 - Millipede 1989 */
|
||||
device.option_add("cfa3000opt", CFA3000_OPT); /* Henson CFA 3000 Option Board */
|
||||
}
|
||||
|
@ -150,6 +150,7 @@ protected:
|
||||
DECLARE_DEVICE_TYPE(BBC_1MHZBUS_SLOT, bbc_1mhzbus_slot_device)
|
||||
|
||||
void bbc_1mhzbus_devices(device_slot_interface &device);
|
||||
void bbcm_1mhzbus_devices(device_slot_interface &device);
|
||||
|
||||
|
||||
#endif // MAME_BUS_BBC_1MHZBUS_1MHZBUS_H
|
||||
|
@ -119,33 +119,57 @@ WRITE8_MEMBER(bbc_tube_slot_device::host_w)
|
||||
#include "tube_arm.h"
|
||||
#include "tube_casper.h"
|
||||
//#include "tube_pmsb2p.h"
|
||||
//#include "tube_rc6502.h"
|
||||
//#include "tube_x25.h"
|
||||
#include "tube_z80.h"
|
||||
#include "tube_zep100.h"
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// SLOT_INTERFACE( bbc_tube_devices )
|
||||
//-------------------------------------------------
|
||||
|
||||
void bbc_tube_devices(device_slot_interface &device)
|
||||
{
|
||||
device.option_add("6502", BBC_TUBE_6502); /* Acorn ANC01 6502 2nd processor */
|
||||
device.option_add("z80", BBC_TUBE_Z80); /* Acorn ANC04 Z80 2nd processor */
|
||||
//device.option_add("32016", BBC_TUBE_32016); /* Acorn ANC05 32016 2nd processor */
|
||||
device.option_add("arm", BBC_TUBE_ARM); /* Acorn ANC13 ARM Evaluation System */
|
||||
device.option_add("80286", BBC_TUBE_80286); /* Acorn 80286 2nd Processor */
|
||||
//device.option_add("a500", BBC_TUBE_A500); /* Acorn A500 2nd Processor */
|
||||
device.option_add("casper", BBC_TUBE_CASPER); /* Casper 68000 2nd Processor */
|
||||
//device.option_add("pmsb2p", BBC_TUBE_PMSB2P); /* PMS B2P-6502 */
|
||||
//device.option_add("hdp68k", BBC_TUBE_HDP68K); /* Torch Unicorn (HDP68K) */
|
||||
//device.option_add("x25", BBC_TUBE_X25); /* Econet X25 Gateway */
|
||||
device.option_add("zep100", BBC_TUBE_ZEP100); /* Torch Z80 Communicator (ZEP100) (Torch) */
|
||||
//device.option_add("zep100l", BBC_TUBE_ZEP100L); /* Torch Z80 Communicator (ZEP100) (Acorn 8271) */
|
||||
//device.option_add("zep100w", BBC_TUBE_ZEP100W); /* Torch Z80 Communicator (ZEP100) (Acorn 1770) */
|
||||
/* Acorn ANC21 Universal 2nd Processor Unit */
|
||||
device.option_add("65c102", BBC_TUBE_65C102); /* Acorn ADC06 65C102 co-processor */
|
||||
device.option_add("80186", BBC_TUBE_80186); /* Acorn ADC08 80186 co-processor */
|
||||
//device.option_add("rc6502", BBC_TUBE_RC6502); /* ReCo6502 (6502) */
|
||||
//device.option_add("rc65816", BBC_TUBE_RC65816); /* ReCo6502 (65816) */
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// SLOT_INTERFACE( bbc_extube_devices )
|
||||
//-------------------------------------------------
|
||||
|
||||
void bbc_extube_devices(device_slot_interface &device)
|
||||
{
|
||||
device.option_add("6502", BBC_TUBE_6502); /* Acorn ANC01 6502 2nd processor */
|
||||
device.option_add("z80", BBC_TUBE_Z80); /* Acorn ANC04 Z80 2nd processor */
|
||||
// device.option_add("32016", BBC_TUBE_32016); /* Acorn ANC05 32016 2nd processor */
|
||||
device.option_add("arm", BBC_TUBE_ARM); /* Acorn ANC13 ARM Evaluation System */
|
||||
device.option_add("80286", BBC_TUBE_80286); /* Acorn 80286 2nd Processor */
|
||||
//device.option_add("a500", BBC_TUBE_A500); /* Acorn A500 2nd Processor */
|
||||
device.option_add("casper", BBC_TUBE_CASPER); /* Casper 68000 2nd Processor */
|
||||
//device.option_add("pmsb2p", BBC_TUBE_PMSB2P); /* PMS B2P-6502 */
|
||||
//device.option_add("hdp68k", BBC_TUBE_HDP68K); /* Torch Unicorn (HDP68K) */
|
||||
device.option_add("zep100", BBC_TUBE_ZEP100); /* Torch Z80 Communicator (ZEP100) (Torch) */
|
||||
//device.option_add("zep100l", BBC_TUBE_ZEP100L); /* Torch Z80 Communicator (ZEP100) (Acorn 8271) */
|
||||
//device.option_add("zep100w", BBC_TUBE_ZEP100W); /* Torch Z80 Communicator (ZEP100) (Acorn 1770) */
|
||||
//device.option_add("zep100m", BBC_TUBE_ZEP100M); /* Torch Z80 Communicator (ZEP100) (Master) */
|
||||
device.option_add("6502", BBC_TUBE_6502); /* Acorn ANC01 6502 2nd processor */
|
||||
device.option_add("z80", BBC_TUBE_Z80); /* Acorn ANC04 Z80 2nd processor */
|
||||
//device.option_add("32016", BBC_TUBE_32016); /* Acorn ANC05 32016 2nd processor */
|
||||
device.option_add("arm", BBC_TUBE_ARM); /* Acorn ANC13 ARM Evaluation System */
|
||||
device.option_add("80286", BBC_TUBE_80286); /* Acorn 80286 2nd Processor */
|
||||
//device.option_add("a500", BBC_TUBE_A500); /* Acorn A500 2nd Processor */
|
||||
//device.option_add("pmsb2p", BBC_TUBE_PMSB2P); /* PMS B2P-6502 */
|
||||
/* Acorn ANC21 Universal 2nd Processor Unit */
|
||||
device.option_add("65c102", BBC_TUBE_65C102); /* Acorn ADC06 65C102 co-processor */
|
||||
device.option_add("80186", BBC_TUBE_80186); /* Acorn ADC08 80186 co-processor */
|
||||
device.option_add("65c102", BBC_TUBE_65C102); /* Acorn ADC06 65C102 co-processor */
|
||||
device.option_add("80186", BBC_TUBE_80186); /* Acorn ADC08 80186 co-processor */
|
||||
//device.option_add("rc6502", BBC_TUBE_RC6502); /* ReCo6502 (6502) */
|
||||
//device.option_add("rc65816", BBC_TUBE_RC65816); /* ReCo6502 (65816) */
|
||||
}
|
||||
|
||||
|
||||
@ -157,7 +181,10 @@ void bbc_intube_devices(device_slot_interface &device)
|
||||
{
|
||||
device.option_add("65c102", BBC_TUBE_65C102); /* Acorn ADC06 65C102 co-processor */
|
||||
device.option_add("80186", BBC_TUBE_80186); /* Acorn ADC08 80186 co-processor */
|
||||
// device.option_add("arm7", BBC_TUBE_ARM7); /* Sprow ARM7 co-processor */
|
||||
//device.option_add("zep100m", BBC_TUBE_ZEP100M); /* Torch Z80 Communicator (ZEP100) (Master) */
|
||||
//device.option_add("arm7", BBC_TUBE_ARM7); /* Sprow ARM7 co-processor */
|
||||
//device.option_add("rc6502", BBC_TUBE_RC6502); /* ReCo6502 (6502) */
|
||||
//device.option_add("rc65816", BBC_TUBE_RC65816); /* ReCo6502 (65816) */
|
||||
}
|
||||
|
||||
|
||||
@ -172,12 +199,6 @@ void electron_tube_devices(device_slot_interface &device)
|
||||
device.option_add("arm", BBC_TUBE_ARM); /* Acorn ANC13 ARM Evaluation System */
|
||||
device.option_add("65c102", BBC_TUBE_65C102); /* Acorn ADC06 65C102 co-processor */
|
||||
device.option_add("80186", BBC_TUBE_80186); /* Acorn ADC08 80186 co-processor */
|
||||
//device.option_add("rc6502", BBC_TUBE_RC6502); /* ReCo6502 (6502) */
|
||||
//device.option_add("rc65816", BBC_TUBE_RC65816); /* ReCo6502 (65816) */
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// SLOT_INTERFACE( bbc_x25tube_devices )
|
||||
//-------------------------------------------------
|
||||
|
||||
//void bbc_x25tube_devices(device_slot_interface &device)
|
||||
// device.option_add("x25", BBC_TUBE_X25); /* Econet X25 Gateway */
|
||||
//}
|
||||
|
@ -103,10 +103,10 @@ protected:
|
||||
// device type definition
|
||||
DECLARE_DEVICE_TYPE(BBC_TUBE_SLOT, bbc_tube_slot_device)
|
||||
|
||||
void bbc_tube_devices(device_slot_interface &device);
|
||||
void bbc_extube_devices(device_slot_interface &device);
|
||||
void bbc_intube_devices(device_slot_interface &device);
|
||||
void electron_tube_devices(device_slot_interface &device);
|
||||
//void bbc_x25tube_devices(device_slot_interface &device);
|
||||
|
||||
|
||||
#endif // MAME_BUS_BBC_TUBE_TUBE_H
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2,9 +2,7 @@
|
||||
// copyright-holders:Gordon Jefferyes, Nigel Barnes
|
||||
/*****************************************************************************
|
||||
*
|
||||
* includes/bbc.h
|
||||
*
|
||||
* BBC Model B
|
||||
* BBC Model B/B+/Master/Compact
|
||||
*
|
||||
* Driver by Gordon Jefferyes <mess_bbc@romvault.com>
|
||||
*
|
||||
@ -14,7 +12,9 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "bus/rs232/rs232.h"
|
||||
#include "cpu/m6502/m6502.h"
|
||||
#include "cpu/m6502/m65sc02.h"
|
||||
#include "machine/74259.h"
|
||||
#include "machine/6522via.h"
|
||||
#include "machine/6850acia.h"
|
||||
#include "machine/clock.h"
|
||||
@ -24,6 +24,8 @@
|
||||
#include "machine/wd_fdc.h"
|
||||
#include "machine/upd7002.h"
|
||||
#include "machine/mc146818.h"
|
||||
#include "machine/i2cmem.h"
|
||||
#include "machine/bankdev.h"
|
||||
#include "machine/input_merger.h"
|
||||
#include "video/mc6845.h"
|
||||
#include "video/saa5050.h"
|
||||
@ -32,11 +34,16 @@
|
||||
#include "sound/samples.h"
|
||||
#include "imagedev/cassette.h"
|
||||
|
||||
#include "bus/rs232/rs232.h"
|
||||
#include "bus/centronics/ctronics.h"
|
||||
#include "bus/econet/econet.h"
|
||||
#include "bus/bbc/fdc/fdc.h"
|
||||
#include "bus/bbc/analogue/analogue.h"
|
||||
#include "bus/bbc/1mhzbus/1mhzbus.h"
|
||||
//#include "bus/bbc/internal/internal.h"
|
||||
#include "bus/bbc/tube/tube.h"
|
||||
#include "bus/bbc/userport/userport.h"
|
||||
//#include "bus/bbc/exp/exp.h"
|
||||
#include "bus/bbc/joyport/joyport.h"
|
||||
|
||||
#include "bus/generic/slot.h"
|
||||
@ -45,71 +52,61 @@
|
||||
#include "emupal.h"
|
||||
#include "screen.h"
|
||||
|
||||
#define RS232_TAG "rs232"
|
||||
|
||||
class bbc_state : public driver_device
|
||||
{
|
||||
public:
|
||||
bbc_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_ram(*this, RAM_TAG),
|
||||
m_hd6845(*this, "hd6845"),
|
||||
m_screen(*this, "screen"),
|
||||
m_adlc(*this, "mc6854"),
|
||||
m_sn(*this, "sn76489"),
|
||||
m_samples(*this, "samples"),
|
||||
m_keyboard(*this, "COL%u", 0),
|
||||
m_trom(*this, "saa5050"),
|
||||
m_tms(*this, "tms5220"),
|
||||
m_cassette(*this, "cassette"),
|
||||
m_acia(*this, "acia6850"),
|
||||
m_acia_clock(*this, "acia_clock"),
|
||||
m_rs232(*this, RS232_TAG),
|
||||
m_via6522_0(*this, "via6522_0"),
|
||||
m_via6522_1(*this, "via6522_1"),
|
||||
m_upd7002(*this, "upd7002"),
|
||||
m_analog(*this, "analogue"),
|
||||
m_joyport(*this, "joyport"),
|
||||
m_tube(*this, "tube"),
|
||||
m_intube(*this, "intube"),
|
||||
m_extube(*this, "extube"),
|
||||
m_1mhzbus(*this, "1mhzbus"),
|
||||
m_userport(*this, "userport"),
|
||||
m_rtc(*this, "rtc"),
|
||||
m_fdc(*this, "fdc"),
|
||||
m_i8271(*this, "i8271"),
|
||||
m_wd1770(*this, "wd1770"),
|
||||
m_wd1772(*this, "wd1772"),
|
||||
m_exp1(*this, "exp_rom1"),
|
||||
m_exp2(*this, "exp_rom2"),
|
||||
m_exp3(*this, "exp_rom3"),
|
||||
m_exp4(*this, "exp_rom4"),
|
||||
m_region_maincpu(*this, "maincpu"),
|
||||
m_region_os(*this, "os"),
|
||||
m_region_opt(*this, "option"),
|
||||
m_bank1(*this, "bank1"),
|
||||
m_bank2(*this, "bank2"),
|
||||
m_bank3(*this, "bank3"),
|
||||
m_bank4(*this, "bank4"),
|
||||
m_bank5(*this, "bank5"),
|
||||
m_bank6(*this, "bank6"),
|
||||
m_bank7(*this, "bank7"),
|
||||
m_bank8(*this, "bank8"),
|
||||
m_irqs(*this, "irqs"),
|
||||
m_palette(*this, "palette"),
|
||||
m_bbcconfig(*this, "BBCCONFIG")
|
||||
bbc_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_ram(*this, RAM_TAG)
|
||||
, m_hd6845(*this, "hd6845")
|
||||
, m_screen(*this, "screen")
|
||||
, m_irqs(*this, "irqs")
|
||||
, m_palette(*this, "palette")
|
||||
, m_adlc(*this, "mc6854")
|
||||
, m_sn(*this, "sn76489")
|
||||
, m_samples(*this, "samples")
|
||||
, m_keyboard(*this, "COL%u", 0)
|
||||
, m_trom(*this, "saa5050")
|
||||
, m_tms(*this, "tms5220")
|
||||
, m_cassette(*this, "cassette")
|
||||
, m_acia(*this, "acia6850")
|
||||
, m_acia_clock(*this, "acia_clock")
|
||||
, m_latch(*this, "latch")
|
||||
, m_rs232(*this, "rs232")
|
||||
, m_via6522_0(*this, "via6522_0")
|
||||
, m_via6522_1(*this, "via6522_1")
|
||||
, m_upd7002(*this, "upd7002")
|
||||
, m_analog(*this, "analogue")
|
||||
, m_joyport(*this, "joyport")
|
||||
, m_tube(*this, "tube")
|
||||
, m_intube(*this, "intube")
|
||||
, m_extube(*this, "extube")
|
||||
, m_1mhzbus(*this, "1mhzbus")
|
||||
, m_userport(*this, "userport")
|
||||
// , m_internal(*this, "internal")
|
||||
// , m_exp(*this, "exp")
|
||||
, m_rtc(*this, "rtc")
|
||||
, m_i2cmem(*this, "i2cmem")
|
||||
, m_fdc(*this, "fdc")
|
||||
, m_i8271(*this, "i8271")
|
||||
, m_wd1770(*this, "wd1770")
|
||||
, m_wd1772(*this, "wd1772")
|
||||
, m_rom(*this, "romslot%u", 0U)
|
||||
, m_cart(*this, "cartslot%u", 1U)
|
||||
, m_region_mos(*this, "mos")
|
||||
, m_region_swr(*this, "swr")
|
||||
, m_bank1(*this, "bank1")
|
||||
, m_bank2(*this, "bank2")
|
||||
, m_bank3(*this, "bank3")
|
||||
, m_bank4(*this, "bank4")
|
||||
, m_bank5(*this, "bank5")
|
||||
, m_bank6(*this, "bank6")
|
||||
, m_bankdev(*this, "bankdev")
|
||||
, m_bbcconfig(*this, "BBCCONFIG")
|
||||
{ }
|
||||
|
||||
enum machine_type_t
|
||||
{
|
||||
MODELA,
|
||||
MODELB,
|
||||
BPLUS,
|
||||
MASTER,
|
||||
COMPACT
|
||||
};
|
||||
|
||||
enum monitor_type_t
|
||||
{
|
||||
COLOUR = 0,
|
||||
@ -118,150 +115,149 @@ public:
|
||||
AMBER = 3
|
||||
};
|
||||
|
||||
DECLARE_FLOPPY_FORMATS(floppy_formats_bbc);
|
||||
DECLARE_FLOPPY_FORMATS(floppy_formats);
|
||||
|
||||
DECLARE_WRITE8_MEMBER(page_selecta_w);
|
||||
DECLARE_WRITE8_MEMBER(page_selectb_w);
|
||||
DECLARE_WRITE8_MEMBER(bbc_memoryb4_w);
|
||||
DECLARE_WRITE8_MEMBER(bbc_romsel_w);
|
||||
DECLARE_WRITE8_MEMBER(bbc_bank4_w);
|
||||
DECLARE_READ8_MEMBER(bbcbp_fetch_r);
|
||||
DECLARE_WRITE8_MEMBER(page_selectbp_w);
|
||||
DECLARE_WRITE8_MEMBER(page_selectbp128_w);
|
||||
DECLARE_WRITE8_MEMBER(bbc_memorybp4_w);
|
||||
DECLARE_WRITE8_MEMBER(bbc_memorybp6_w);
|
||||
DECLARE_WRITE8_MEMBER(bbcbp_romsel_w);
|
||||
DECLARE_WRITE8_MEMBER(bbcbp_bank4_w);
|
||||
DECLARE_WRITE8_MEMBER(bbcbp_bank5_w);
|
||||
DECLARE_READ8_MEMBER(bbcm_fetch_r);
|
||||
DECLARE_READ8_MEMBER(bbcm_acccon_r);
|
||||
DECLARE_WRITE8_MEMBER(bbcm_acccon_w);
|
||||
DECLARE_WRITE8_MEMBER(page_selectbm_w);
|
||||
DECLARE_WRITE8_MEMBER(bbc_memorybm4_w);
|
||||
DECLARE_WRITE8_MEMBER(bbc_memorybm5_w);
|
||||
DECLARE_WRITE8_MEMBER(bbc_memorybm7_w);
|
||||
DECLARE_READ8_MEMBER(bbcm_r);
|
||||
DECLARE_WRITE8_MEMBER(bbcm_w);
|
||||
DECLARE_WRITE8_MEMBER(bbc_SerialULA_w);
|
||||
DECLARE_WRITE8_MEMBER(bbcm_romsel_w);
|
||||
DECLARE_WRITE8_MEMBER(bbcm_bank4_w);
|
||||
DECLARE_WRITE8_MEMBER(bbcm_bank5_w);
|
||||
DECLARE_WRITE8_MEMBER(bbcm_bank6_w);
|
||||
DECLARE_READ8_MEMBER(bbcm_tube_r);
|
||||
DECLARE_WRITE8_MEMBER(bbcm_tube_w);
|
||||
DECLARE_WRITE8_MEMBER(bbcbp_drive_control_w);
|
||||
DECLARE_WRITE8_MEMBER(bbcm_drive_control_w);
|
||||
DECLARE_WRITE8_MEMBER(bbcmc_drive_control_w);
|
||||
DECLARE_WRITE8_MEMBER(serial_ula_w);
|
||||
DECLARE_WRITE8_MEMBER(video_ula_w);
|
||||
DECLARE_READ8_MEMBER(bbc_fe_r) { return 0xfe; };
|
||||
|
||||
DECLARE_WRITE8_MEMBER(bbc_wd1770_status_w);
|
||||
DECLARE_READ8_MEMBER(bbcm_wd177xl_read);
|
||||
DECLARE_WRITE8_MEMBER(bbcm_wd1770l_write);
|
||||
DECLARE_WRITE8_MEMBER(bbcm_wd1772l_write);
|
||||
DECLARE_WRITE8_MEMBER(bbc_videoULA_w);
|
||||
DECLARE_READ8_MEMBER(bbc_fe_r);
|
||||
|
||||
void init_bbc();
|
||||
DECLARE_VIDEO_START(bbc);
|
||||
|
||||
DECLARE_MACHINE_START(bbca);
|
||||
DECLARE_MACHINE_RESET(bbca);
|
||||
DECLARE_MACHINE_START(bbcb);
|
||||
DECLARE_MACHINE_RESET(bbcb);
|
||||
DECLARE_MACHINE_RESET(torch);
|
||||
DECLARE_MACHINE_START(bbcbp);
|
||||
DECLARE_MACHINE_RESET(bbcbp);
|
||||
DECLARE_MACHINE_START(bbcm);
|
||||
DECLARE_MACHINE_RESET(bbcm);
|
||||
DECLARE_MACHINE_START(bbcmc);
|
||||
DECLARE_MACHINE_RESET(bbcmc);
|
||||
DECLARE_MACHINE_RESET(ltmpbp);
|
||||
DECLARE_MACHINE_RESET(ltmpm);
|
||||
DECLARE_MACHINE_START(cfa3000);
|
||||
|
||||
DECLARE_PALETTE_INIT(bbc);
|
||||
INTERRUPT_GEN_MEMBER(bbcb_keyscan);
|
||||
TIMER_CALLBACK_MEMBER(bbc_tape_timer_cb);
|
||||
TIMER_CALLBACK_MEMBER(tape_timer_cb);
|
||||
TIMER_CALLBACK_MEMBER(reset_timer_cb);
|
||||
DECLARE_WRITE_LINE_MEMBER(write_acia_clock);
|
||||
DECLARE_WRITE_LINE_MEMBER(adlc_irq_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(bus_nmi_w);
|
||||
DECLARE_WRITE8_MEMBER(bbcb_via_system_write_porta);
|
||||
DECLARE_WRITE8_MEMBER(bbcb_via_system_write_portb);
|
||||
DECLARE_READ8_MEMBER(bbcb_via_system_read_porta);
|
||||
DECLARE_READ8_MEMBER(bbcb_via_system_read_portb);
|
||||
DECLARE_WRITE_LINE_MEMBER(snd_enable_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(speech_rsq_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(speech_wsq_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(kbd_enable_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(capslock_led_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(shiftlock_led_w);
|
||||
DECLARE_READ8_MEMBER(via_system_porta_r);
|
||||
DECLARE_WRITE8_MEMBER(via_system_porta_w);
|
||||
DECLARE_READ8_MEMBER(via_system_portb_r);
|
||||
DECLARE_WRITE8_MEMBER(via_system_portb_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(lpstb_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(bbc_hsync_changed);
|
||||
DECLARE_WRITE_LINE_MEMBER(bbc_vsync_changed);
|
||||
DECLARE_WRITE_LINE_MEMBER(bbc_de_changed);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(monitor_changed);
|
||||
|
||||
void update_acia_rxd();
|
||||
void update_acia_dcd();
|
||||
void update_acia_cts();
|
||||
DECLARE_WRITE_LINE_MEMBER(bbc_rts_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(bbc_txd_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(write_rxd_serial);
|
||||
DECLARE_WRITE_LINE_MEMBER(write_dcd_serial);
|
||||
DECLARE_WRITE_LINE_MEMBER(write_cts_serial);
|
||||
DECLARE_WRITE_LINE_MEMBER(write_rts);
|
||||
DECLARE_WRITE_LINE_MEMBER(write_txd);
|
||||
DECLARE_WRITE_LINE_MEMBER(write_rxd);
|
||||
DECLARE_WRITE_LINE_MEMBER(write_dcd);
|
||||
DECLARE_WRITE_LINE_MEMBER(write_cts);
|
||||
|
||||
DECLARE_INPUT_CHANGED_MEMBER(trigger_reset);
|
||||
DECLARE_WRITE_LINE_MEMBER(fdc_intrq_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(fdc_drq_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(motor_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(side_w);
|
||||
|
||||
int BBC_get_analogue_input(int channel_number);
|
||||
void BBC_uPD7002_EOC(int data);
|
||||
int get_analogue_input(int channel_number);
|
||||
void upd7002_eoc(int data);
|
||||
|
||||
void bbc_setup_banks(memory_bank *membank, int banks, uint32_t shift, uint32_t size);
|
||||
void bbcm_setup_banks(memory_bank *membank, int banks, uint32_t shift, uint32_t size);
|
||||
void setup_banks(memory_bank *membank, uint32_t shift);
|
||||
|
||||
image_init_result bbc_load_rom(device_image_interface &image, generic_slot_device *slot);
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(exp1_load) { return bbc_load_rom(image, m_exp1); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(exp2_load) { return bbc_load_rom(image, m_exp2); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(exp3_load) { return bbc_load_rom(image, m_exp3); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(exp4_load) { return bbc_load_rom(image, m_exp4); }
|
||||
image_init_result load_rom16(device_image_interface &image, generic_slot_device *slot);
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom0) { return load_rom16(image, m_rom[0]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom1) { return load_rom16(image, m_rom[1]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom2) { return load_rom16(image, m_rom[2]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom3) { return load_rom16(image, m_rom[3]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom4) { return load_rom16(image, m_rom[4]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom5) { return load_rom16(image, m_rom[5]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom6) { return load_rom16(image, m_rom[6]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom7) { return load_rom16(image, m_rom[7]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom8) { return load_rom16(image, m_rom[8]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom9) { return load_rom16(image, m_rom[9]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(roma) { return load_rom16(image, m_rom[10]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(romb) { return load_rom16(image, m_rom[11]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(romc) { return load_rom16(image, m_rom[12]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(romd) { return load_rom16(image, m_rom[13]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rome) { return load_rom16(image, m_rom[14]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(romf) { return load_rom16(image, m_rom[15]); }
|
||||
|
||||
image_init_result bbcm_load_cart(device_image_interface &image, generic_slot_device *slot);
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(bbcm_cart1_load) { return bbcm_load_cart(image, m_exp1); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(bbcm_cart2_load) { return bbcm_load_cart(image, m_exp2); }
|
||||
image_init_result load_rom32(device_image_interface &image, generic_slot_device *slot);
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom01) { return load_rom32(image, m_rom[0]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom23) { return load_rom32(image, m_rom[2]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom45) { return load_rom32(image, m_rom[4]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom67) { return load_rom32(image, m_rom[6]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom89) { return load_rom32(image, m_rom[8]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(romab) { return load_rom32(image, m_rom[10]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(romcd) { return load_rom32(image, m_rom[12]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(romef) { return load_rom32(image, m_rom[14]); }
|
||||
|
||||
image_init_result load_cart(device_image_interface &image, generic_slot_device *slot);
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart1) { return load_cart(image, m_cart[0]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart2) { return load_cart(image, m_cart[1]); }
|
||||
|
||||
MC6845_UPDATE_ROW(crtc_update_row);
|
||||
|
||||
void bbc_eprom_sockets(machine_config &config);
|
||||
void discmon(machine_config &config);
|
||||
void discmate(machine_config &config);
|
||||
void reutapm(machine_config &config);
|
||||
void bbcbp(machine_config &config);
|
||||
void abc310(machine_config &config);
|
||||
void bbcmc(machine_config &config);
|
||||
void bbcmt(machine_config &config);
|
||||
void bbcm(machine_config &config);
|
||||
void ltmpm(machine_config &config);
|
||||
void bbcmet(machine_config &config);
|
||||
void cfa3000(machine_config &config);
|
||||
void bbcbp128(machine_config &config);
|
||||
void pro128s(machine_config &config);
|
||||
void bbcm512(machine_config &config);
|
||||
void bbcmarm(machine_config &config);
|
||||
void abc110(machine_config &config);
|
||||
void ltmpbp(machine_config &config);
|
||||
void bbcb_de(machine_config &config);
|
||||
void bbcb(machine_config &config);
|
||||
void bbcmaiv(machine_config &config);
|
||||
void bbca(machine_config &config);
|
||||
void bbcb(machine_config &config);
|
||||
void bbcb_de(machine_config &config);
|
||||
void bbcb_us(machine_config &config);
|
||||
void econx25(machine_config &config);
|
||||
void acw443(machine_config &config);
|
||||
void bbc_base(address_map &map);
|
||||
void torchf(machine_config &config);
|
||||
void torchh21(machine_config &config);
|
||||
void torchh10(machine_config &config);
|
||||
|
||||
void bbca_mem(address_map &map);
|
||||
void bbc_base(address_map &map);
|
||||
void bbcb_mem(address_map &map);
|
||||
void bbcb_nofdc_mem(address_map &map);
|
||||
void bbcbp128_mem(address_map &map);
|
||||
void bbcbp_mem(address_map &map);
|
||||
void bbcbp_fetch(address_map &map);
|
||||
void bbcm_mem(address_map &map);
|
||||
void bbcm_fetch(address_map &map);
|
||||
void reutapm_mem(address_map &map);
|
||||
|
||||
private:
|
||||
void init_bbc();
|
||||
void init_bbcm();
|
||||
void init_ltmp();
|
||||
void init_cfa();
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
|
||||
virtual void video_start() override;
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<ram_device> m_ram;
|
||||
required_device<hd6845_device> m_hd6845;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<input_merger_device> m_irqs;
|
||||
required_device<palette_device> m_palette;
|
||||
optional_device<mc6854_device> m_adlc;
|
||||
optional_device<sn76489_device> m_sn;
|
||||
optional_device<sn76489a_device> m_sn;
|
||||
optional_device<samples_device> m_samples;
|
||||
required_ioport_array<13> m_keyboard;
|
||||
public: // HACK FOR MC6845
|
||||
optional_device<saa5050_device> m_trom;
|
||||
optional_device<tms5220_device> m_tms;
|
||||
optional_device<cassette_image_device> m_cassette;
|
||||
optional_device<acia6850_device> m_acia;
|
||||
optional_device<clock_device> m_acia_clock;
|
||||
required_device<ls259_device> m_latch;
|
||||
optional_device<rs232_port_device> m_rs232;
|
||||
required_device<via6522_device> m_via6522_0;
|
||||
optional_device<via6522_device> m_via6522_1;
|
||||
@ -273,33 +269,28 @@ public: // HACK FOR MC6845
|
||||
optional_device<bbc_tube_slot_device> m_extube;
|
||||
optional_device<bbc_1mhzbus_slot_device> m_1mhzbus;
|
||||
optional_device<bbc_userport_slot_device> m_userport;
|
||||
//optional_device<bbc_internal_slot_device> m_internal;
|
||||
//optional_device<bbc_exp_slot_device> m_exp;
|
||||
optional_device<mc146818_device> m_rtc;
|
||||
optional_device<i2cmem_device> m_i2cmem;
|
||||
optional_device<bbc_fdc_slot_device> m_fdc;
|
||||
optional_device<i8271_device> m_i8271;
|
||||
optional_device<wd1770_device> m_wd1770;
|
||||
optional_device<wd1772_device> m_wd1772;
|
||||
optional_device<generic_slot_device> m_exp1;
|
||||
optional_device<generic_slot_device> m_exp2;
|
||||
optional_device<generic_slot_device> m_exp3;
|
||||
optional_device<generic_slot_device> m_exp4;
|
||||
optional_device_array<generic_slot_device, 16> m_rom;
|
||||
optional_device_array<generic_slot_device, 2> m_cart;
|
||||
|
||||
required_memory_region m_region_maincpu;
|
||||
required_memory_region m_region_os;
|
||||
required_memory_region m_region_opt;
|
||||
required_memory_region m_region_mos;
|
||||
required_memory_region m_region_swr;
|
||||
required_memory_bank m_bank1; // bbca bbcb bbcbp bbcbp128 bbcm
|
||||
optional_memory_bank m_bank2; // bbcbp bbcbp128 bbcm
|
||||
optional_memory_bank m_bank3; // bbca bbcb
|
||||
required_memory_bank m_bank4; // bbca bbcb bbcbp bbcbp128 bbcm
|
||||
optional_memory_bank m_bank5; // bbcm
|
||||
optional_memory_bank m_bank6; // bbcbp bbcbp128
|
||||
required_memory_bank m_bank7; // bbca bbcb bbcbp bbcbp128 bbcm
|
||||
optional_memory_bank m_bank8; // bbcm
|
||||
optional_memory_bank m_bank5; // bbcbp bbcbp128 bbcm
|
||||
required_memory_bank m_bank6; // bbca bbcb bbcbp bbcbp128 bbcm
|
||||
optional_device<address_map_bank_device> m_bankdev; // bbcm
|
||||
optional_ioport m_bbcconfig;
|
||||
|
||||
required_device<input_merger_device> m_irqs;
|
||||
|
||||
machine_type_t m_machinetype;
|
||||
|
||||
bool m_os01; // flag indicating whether OS 0.1 is being used
|
||||
int m_monitortype; // monitor type (colour, green, amber)
|
||||
int m_swramtype; // this stores the setting for the SWRAM type being used
|
||||
|
||||
@ -341,44 +332,9 @@ public: // HACK FOR MC6845
|
||||
int m_acccon_e;
|
||||
int m_acccon_d;
|
||||
|
||||
|
||||
/*
|
||||
The addressable latch
|
||||
This 8 bit addressable latch is operated from port B lines 0-3.
|
||||
PB0-PB2 are set to the required address of the output bit to be set.
|
||||
PB3 is set to the value which should be programmed at that bit.
|
||||
The function of the 8 output bits from this latch are:-
|
||||
|
||||
B0 - Write Enable to the sound generator IC
|
||||
B1 - READ select on the speech processor (B and B+)
|
||||
R/nW control on CMOS RAM (Master only)
|
||||
B2 - WRITE select on the speech processor
|
||||
DS control on CMOS RAM (Master only)
|
||||
B3 - Keyboard write enable
|
||||
B4,B5 - these two outputs define the number to be added to the
|
||||
start of screen address in hardware to control hardware scrolling:-
|
||||
Mode Size Start of screen Size No.to add B5 B4
|
||||
0,1,2 20K &3000 12K 1 1
|
||||
3 16K &4000 16K 0 0
|
||||
4,5 10K &5800 (or &1800) 22K 1 0
|
||||
6 8K &6000 (or &2000) 24K 0 1
|
||||
B6 - Operates the CAPS lock LED (Pin 17 keyboard connector)
|
||||
B7 - Operates the SHIFT lock LED (Pin 16 keyboard connector)
|
||||
*/
|
||||
|
||||
int m_b0_sound;
|
||||
int m_b1_speech_read;
|
||||
int m_b2_speech_write;
|
||||
int m_b3_keyboard;
|
||||
int m_b4_video0;
|
||||
int m_b5_video1;
|
||||
int m_b6_caps_lock_led;
|
||||
int m_b7_shift_lock_led;
|
||||
|
||||
int m_MC146818_WR; // FE30 bit 1 replaces b1_speech_read
|
||||
int m_MC146818_DS; // FE30 bit 2 replaces b2_speech_write
|
||||
int m_MC146818_AS; // 6522 port b bit 7
|
||||
int m_MC146818_CE; // 6522 port b bit 6
|
||||
void mc146818_set(address_space &space);
|
||||
int m_mc146818_as; // 6522 port b bit 7
|
||||
int m_mc146818_ce; // 6522 port b bit 6
|
||||
|
||||
int m_via_system_porta;
|
||||
|
||||
@ -388,10 +344,9 @@ public: // HACK FOR MC6845
|
||||
|
||||
int m_column; // this is a counter in the keyboard circuit
|
||||
|
||||
|
||||
/***************************************
|
||||
BBC 2C199 Serial Interface Cassette
|
||||
****************************************/
|
||||
/***************************************
|
||||
BBC 2C199 Serial Interface Cassette
|
||||
****************************************/
|
||||
|
||||
double m_last_dev_val;
|
||||
int m_wav_len;
|
||||
@ -399,7 +354,6 @@ public: // HACK FOR MC6845
|
||||
int m_len1;
|
||||
int m_len2;
|
||||
int m_len3;
|
||||
int m_mc6850_clock;
|
||||
uint8_t m_serproc_data;
|
||||
int m_rxd_serial;
|
||||
int m_dcd_serial;
|
||||
@ -415,17 +369,16 @@ public: // HACK FOR MC6845
|
||||
emu_timer *m_tape_timer;
|
||||
|
||||
|
||||
/**************************************
|
||||
WD1770 disc control
|
||||
***************************************/
|
||||
/**************************************
|
||||
WD1770 disc control
|
||||
***************************************/
|
||||
|
||||
int m_drive_control;
|
||||
int m_fdc_irq;
|
||||
int m_fdc_drq;
|
||||
|
||||
/**************************************
|
||||
Video Code
|
||||
***************************************/
|
||||
/**************************************
|
||||
Video Code
|
||||
***************************************/
|
||||
|
||||
// this is the real location of the start of the BBC's ram in the emulation
|
||||
// it can be changed if shadow ram is being used to point at the upper 32K of RAM
|
||||
@ -459,15 +412,15 @@ public: // HACK FOR MC6845
|
||||
|
||||
void setvideoshadow(int vdusel);
|
||||
void set_pixel_lookup();
|
||||
int bbc_keyboard(address_space &space, int data);
|
||||
void bbcb_IC32_initialise(bbc_state *state);
|
||||
void MC146818_set(address_space &space);
|
||||
void MC6850_Receive_Clock(int new_clock);
|
||||
int bbc_keyboard(int data);
|
||||
|
||||
void mc6850_receive_clock(int new_clock);
|
||||
void cassette_motor(bool state);
|
||||
void bbc_update_nmi();
|
||||
void update_nmi();
|
||||
uint16_t calculate_video_address(uint16_t ma, uint8_t ra);
|
||||
required_device<palette_device> m_palette;
|
||||
optional_ioport m_bbcconfig;
|
||||
|
||||
private:
|
||||
emu_timer *m_reset_timer;
|
||||
};
|
||||
|
||||
|
||||
@ -476,9 +429,60 @@ class torch_state : public bbc_state
|
||||
public:
|
||||
using bbc_state::bbc_state;
|
||||
static constexpr feature_type imperfect_features() { return feature::KEYBOARD; }
|
||||
void torchf(machine_config &config);
|
||||
void torchh21(machine_config &config);
|
||||
void torchh10(machine_config &config);
|
||||
};
|
||||
|
||||
|
||||
class bbcbp_state : public bbc_state
|
||||
{
|
||||
public:
|
||||
using bbc_state::bbc_state;
|
||||
|
||||
void bbcbp(machine_config &config);
|
||||
void bbcbp128(machine_config &config);
|
||||
void abc110(machine_config &config);
|
||||
void acw443(machine_config &config);
|
||||
void abc310(machine_config &config);
|
||||
void econx25(machine_config &config);
|
||||
void reutapm(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
|
||||
void bbcbp_mem(address_map &map);
|
||||
void reutapm_mem(address_map &map);
|
||||
void bbcbp_fetch(address_map &map);
|
||||
};
|
||||
|
||||
|
||||
class bbcm_state : public bbc_state
|
||||
{
|
||||
public:
|
||||
using bbc_state::bbc_state;
|
||||
|
||||
void bbcm(machine_config &config);
|
||||
void bbcmt(machine_config &config);
|
||||
void bbcmet(machine_config &config);
|
||||
void bbcmaiv(machine_config &config);
|
||||
void bbcm512(machine_config &config);
|
||||
void bbcmarm(machine_config &config);
|
||||
void cfa3000(machine_config &config);
|
||||
void discmon(machine_config &config);
|
||||
void discmate(machine_config &config);
|
||||
void bbcmc(machine_config &config);
|
||||
void pro128s(machine_config &config);
|
||||
void autoc15(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
|
||||
void bbcm_mem(address_map &map);
|
||||
void bbcm_bankdev(address_map &map);
|
||||
void bbcmet_bankdev(address_map &map);
|
||||
void bbcmc_bankdev(address_map &map);
|
||||
void bbcm_fetch(address_map &map);
|
||||
};
|
||||
|
||||
|
||||
#endif // MAME_INCLUDES_BBC_H
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -40,8 +40,8 @@
|
||||
uint16_t bbc_state::calculate_video_address(uint16_t ma, uint8_t ra)
|
||||
{
|
||||
/* output from IC32 74LS259 bits 4 and 5 */
|
||||
int c0 = m_b4_video0;
|
||||
int c1 = m_b5_video1;
|
||||
int c0 = m_latch->q4_r();
|
||||
int c1 = m_latch->q5_r();
|
||||
|
||||
/* the 4 bit input port b on IC39 are produced by 4 NAND gates. These NAND gates take their inputs
|
||||
from c0 and c1 (from IC32) and ma12 (from the 6845) */
|
||||
@ -141,7 +141,7 @@ void bbc_state::set_pixel_lookup()
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(bbc_state::bbc_videoULA_w)
|
||||
WRITE8_MEMBER(bbc_state::video_ula_w)
|
||||
{
|
||||
// Make sure vpos is never <0
|
||||
int vpos = m_screen->vpos();
|
||||
@ -175,13 +175,13 @@ WRITE8_MEMBER(bbc_state::bbc_videoULA_w)
|
||||
|
||||
m_hd6845->set_hpixels_per_column(m_pixels_per_byte);
|
||||
if (m_video_ula.clock_rate_6845)
|
||||
m_hd6845->set_clock(XTAL(16'000'000) / 8);
|
||||
m_hd6845->set_clock(16_MHz_XTAL / 8);
|
||||
else
|
||||
m_hd6845->set_clock(XTAL(16'000'000) / 16);
|
||||
m_hd6845->set_clock(16_MHz_XTAL / 16);
|
||||
|
||||
// FIXME: double clock for MODE7 until interlace is implemented
|
||||
if (m_video_ula.teletext_normal_select)
|
||||
m_hd6845->set_clock(XTAL(16'000'000) / 8);
|
||||
m_hd6845->set_clock(16_MHz_XTAL / 8);
|
||||
break;
|
||||
// Set a palette register in the Video ULA
|
||||
case 1:
|
||||
@ -288,21 +288,20 @@ void bbc_state::setvideoshadow(int vdusel)
|
||||
// as the video circuitry will already be looking at 0x3000 or so above
|
||||
// the offset.
|
||||
if (vdusel)
|
||||
m_video_ram = m_region_maincpu->base() + 0x8000;
|
||||
m_video_ram = m_ram->pointer() + 0x8000;
|
||||
else
|
||||
m_video_ram = m_region_maincpu->base();
|
||||
m_video_ram = m_ram->pointer();
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* bbc_vh_start
|
||||
* Initialize the BBC video emulation
|
||||
************************************************************************/
|
||||
|
||||
VIDEO_START_MEMBER(bbc_state, bbc)
|
||||
void bbc_state::video_start()
|
||||
{
|
||||
m_cursor_size = 1;
|
||||
|
||||
set_pixel_lookup();
|
||||
|
||||
m_video_ram = m_region_maincpu->base();
|
||||
m_video_ram = m_ram->pointer();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user