(MESS) BBC Micro keyboard LED's: [Nigel Barnes]

- added layout for keyboard LED's.
- defined actual screen sizes.
This commit is contained in:
Fabio Priuli 2014-01-06 07:50:43 +00:00
parent 54a6a136f4
commit 735fa982fa
5 changed files with 117 additions and 9 deletions

1
.gitattributes vendored
View File

@ -7634,6 +7634,7 @@ src/mess/layout/apollo_dsp.lay svneol=native#text/xml
src/mess/layout/apricotp.lay svneol=native#text/xml
src/mess/layout/avigo.lay svneol=native#text/xml
src/mess/layout/babbage.lay svneol=native#text/xml
src/mess/layout/bbc.lay svneol=native#text/xml
src/mess/layout/beta.lay svneol=native#text/xml
src/mess/layout/bob85.lay svneol=native#text/xml
src/mess/layout/borisdpl.lay svneol=native#text/xml

View File

@ -50,6 +50,7 @@
#include "bus/econet/econet.h"
#include "sound/tms5220.h" /* Speech */
#include "video/saa5050.h" /* Teletext */
#include "bbc.lh"
/* Devices */
#include "imagedev/flopdrv.h"
@ -722,6 +723,8 @@ static MACHINE_CONFIG_START( bbca, bbc_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_SIZE(640, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 256-1)
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(128))
MCFG_SCREEN_UPDATE_DEVICE("mc6845", mc6845_device, screen_update)
@ -730,9 +733,12 @@ static MACHINE_CONFIG_START( bbca, bbc_state )
MCFG_PALETTE_INIT_OVERRIDE(bbc_state, bbc)
MCFG_SAA5050_ADD("saa5050", XTAL_12MHz/2, trom_intf)
/* crtc */
MCFG_MC6845_ADD("mc6845", MC6845, "screen", 2000000, bbc_mc6845_intf)
MCFG_VIDEO_START_OVERRIDE(bbc_state, bbca)
MCFG_DEFAULT_LAYOUT(layout_bbc)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("sn76489", SN76489, 4000000) /* 4 MHz */
@ -752,7 +758,7 @@ static MACHINE_CONFIG_START( bbca, bbc_state )
MCFG_RS232_OUT_DCD_HANDLER(WRITELINE(bbc_state, write_dcd_serial))
MCFG_RS232_OUT_CTS_HANDLER(WRITELINE(bbc_state, write_cts_serial))
/* devices */
/* system via */
MCFG_DEVICE_ADD("via6522_0", VIA6522, 1000000)
MCFG_VIA6522_READPA_HANDLER(READ8(bbc_state, bbcb_via_system_read_porta))
MCFG_VIA6522_READPB_HANDLER(READ8(bbc_state, bbcb_via_system_read_portb))
@ -780,7 +786,7 @@ static MACHINE_CONFIG_DERIVED( bbcb, bbca )
// MCFG_SOUND_ADD("tms5220", TMS5220, 640000)
// MCFG_TMS52XX_SPEECHROM("vsm")
/* devices */
/* user via */
MCFG_DEVICE_ADD("via6522_1", VIA6522, 1000000)
MCFG_VIA6522_READPB_HANDLER(READ8(bbc_state, bbcb_via_user_read_portb))
MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8("centronics", centronics_device, write))
@ -788,6 +794,7 @@ static MACHINE_CONFIG_DERIVED( bbcb, bbca )
MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE("centronics", centronics_device, strobe_w))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(bbc_state, bbcb_via_user_irq_w))
/* adc */
MCFG_UPD7002_ADD("upd7002", bbc_uPD7002)
/* printer */
@ -828,9 +835,11 @@ static MACHINE_CONFIG_DERIVED( bbcb_us, bbca )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_SIZE(640, 200)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
MCFG_SCREEN_REFRESH_RATE(60)
/* devices */
/* system via */
MCFG_DEVICE_ADD("via6522_1", VIA6522, 1000000)
MCFG_VIA6522_READPB_HANDLER(READ8(bbc_state, bbcb_via_user_read_portb))
MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8("centronics", centronics_device, write))
@ -838,6 +847,7 @@ static MACHINE_CONFIG_DERIVED( bbcb_us, bbca )
MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE("centronics", centronics_device, strobe_w))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(bbc_state, bbcb_via_user_irq_w))
/* adc */
MCFG_UPD7002_ADD("upd7002", bbc_uPD7002)
/* printer */
@ -909,18 +919,21 @@ static MACHINE_CONFIG_START( bbcm, bbc_state )
MCFG_MACHINE_START_OVERRIDE(bbc_state, bbcm)
MCFG_MACHINE_RESET_OVERRIDE(bbc_state, bbcm)
MCFG_DEFAULT_LAYOUT(layout_bbc)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(128))
MCFG_SCREEN_SIZE(800, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 800-1, 0, 300-1)
MCFG_SCREEN_SIZE(640, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 256-1)
MCFG_PALETTE_LENGTH(16)
MCFG_PALETTE_INIT_OVERRIDE(bbc_state, bbc)
MCFG_SCREEN_UPDATE_DEVICE("mc6845", mc6845_device, screen_update)
MCFG_SAA5050_ADD("saa5050", XTAL_12MHz/2, trom_intf)
/* crtc */
MCFG_MC6845_ADD("mc6845", MC6845, "screen", 2000000, bbc_mc6845_intf)
MCFG_VIDEO_START_OVERRIDE(bbc_state, bbcm)
@ -954,13 +967,16 @@ static MACHINE_CONFIG_START( bbcm, bbc_state )
/* acia */
MCFG_ACIA6850_ADD("acia6850", bbc_acia6850_interface)
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
MCFG_SERIAL_OUT_RX_HANDLER(WRITELINE(bbc_state, write_rxd_serial))
MCFG_RS232_OUT_DCD_HANDLER(WRITELINE(bbc_state, write_dcd_serial))
MCFG_RS232_OUT_CTS_HANDLER(WRITELINE(bbc_state, write_cts_serial))
/* devices */
/* adc */
MCFG_UPD7002_ADD("upd7002", bbc_uPD7002)
/* system via */
MCFG_DEVICE_ADD("via6522_0", VIA6522, 1000000)
MCFG_VIA6522_READPA_HANDLER(READ8(bbc_state, bbcb_via_system_read_porta))
MCFG_VIA6522_READPB_HANDLER(READ8(bbc_state, bbcb_via_system_read_portb))
@ -968,6 +984,7 @@ static MACHINE_CONFIG_START( bbcm, bbc_state )
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(bbc_state, bbcb_via_system_write_portb))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(bbc_state, bbcb_via_system_irq_w))
/* user via */
MCFG_DEVICE_ADD("via6522_1", VIA6522, 1000000)
MCFG_VIA6522_READPB_HANDLER(READ8(bbc_state, bbcb_via_user_read_portb))
MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8("centronics", centronics_device, write))

84
src/mess/layout/bbc.lay Normal file
View File

@ -0,0 +1,84 @@
<!-- Basic display of keyboard LEDs for the BBC Micro series -->
<mamelayout version="2">
<element name="red_led">
<disk>
<color red="1.0" green="0.0" blue="0.0" />
</disk>
</element>
<element name="label_cassette">
<text string="cassette">
<color red="1.0" green="1.0" blue="1.0" />
</text>
</element>
<element name="label_motor">
<text string="motor">
<color red="1.0" green="1.0" blue="1.0" />
</text>
</element>
<element name="label_caps">
<text string="caps">
<color red="1.0" green="1.0" blue="1.0" />
</text>
</element>
<element name="label_shift">
<text string="shift">
<color red="1.0" green="1.0" blue="1.0" />
</text>
</element>
<element name="label_lock">
<text string="lock">
<color red="1.0" green="1.0" blue="1.0" />
</text>
</element>
<view name="Keyboard LED's">
<bounds left="0" right="400" top="0" bottom="330" />
<screen index="0">
<bounds left="0" right="400" top="0" bottom="300" />
</screen>
<bezel name="label_cassette" element="label_cassette">
<bounds x="10" y="305" width="24" height="7" />
</bezel>
<bezel name="label_motor" element="label_motor">
<bounds x="10" y="312" width="24" height="7" />
</bezel>
<bezel name="motor_led" element="red_led">
<bounds x="20" y="320" width="5" height="5" />
</bezel>
<bezel name="label_caps" element="label_caps">
<bounds x="40" y="305" width="24" height="7" />
</bezel>
<bezel name="label_lock" element="label_lock">
<bounds x="40" y="312" width="24" height="7" />
</bezel>
<bezel name="capslock_led" element="red_led">
<bounds x="50" y="320" width="5" height="5" />
</bezel>
<bezel name="label_shift" element="label_shift">
<bounds x="70" y="305" width="24" height="7" />
</bezel>
<bezel name="label_lock" element="label_lock">
<bounds x="70" y="312" width="24" height="7" />
</bezel>
<bezel name="shiftlock_led" element="red_led">
<bounds x="80" y="320" width="5" height="5" />
</bezel>
</view>
</mamelayout>

View File

@ -581,7 +581,7 @@ READ8_MEMBER(bbc_state::bbcm_r)
return m_acia->data_read(space,0);
}
if ((myo>=0x10) && (myo<=0x17)) return 0xfe; /* Serial System Chip */
if ((myo>=0x18) && (myo<=0x1f)) return m_upd7002->read(space, myo-0x18); /* A to D converter */
if ((myo>=0x18) && (myo<=0x1f)) return m_upd7002->read(space, myo-0x18); /* A to D converter */
if ((myo>=0x20) && (myo<=0x23)) return 0xfe; /* VideoULA */
if ((myo>=0x24) && (myo<=0x27)) return bbcm_wd1770l_read(space, myo-0x24); /* 1770 */
if ((myo>=0x28) && (myo<=0x2f)) return bbcm_wd1770_read(space, myo-0x28); /* disc control latch */
@ -615,7 +615,7 @@ WRITE8_MEMBER(bbc_state::bbcm_w)
m_acia->data_write(space, 0, data);
}
if ((myo>=0x10) && (myo<=0x17)) bbc_SerialULA_w(space, myo-0x10, data); /* Serial System Chip */
if ((myo>=0x18) && (myo<=0x1f)) m_upd7002->write(space, myo-0x18, data); /* A to D converter */
if ((myo>=0x18) && (myo<=0x1f)) m_upd7002->write(space, myo-0x18, data); /* A to D converter */
if ((myo>=0x20) && (myo<=0x23)) bbc_videoULA_w(space, myo-0x20, data); /* VideoULA */
if ((myo>=0x24) && (myo<=0x27)) bbcm_wd1770l_write(space, myo-0x24, data); /* 1770 */
if ((myo>=0x28) && (myo<=0x2f)) bbcm_wd1770_write(space, myo-0x28, data); /* disc control latch */
@ -958,6 +958,7 @@ WRITE8_MEMBER(bbc_state::bbcb_via_system_write_portb)
{
m_b6_caps_lock_led = 1;
/* call caps lock led update */
output_set_value("capslock_led", m_b6_caps_lock_led);
}
break;
case 7:
@ -965,6 +966,7 @@ WRITE8_MEMBER(bbc_state::bbcb_via_system_write_portb)
{
m_b7_shift_lock_led = 1;
/* call shift lock led update */
output_set_value("shiftlock_led", m_b7_shift_lock_led);
}
break;
}
@ -1043,6 +1045,7 @@ WRITE8_MEMBER(bbc_state::bbcb_via_system_write_portb)
{
m_b6_caps_lock_led = 0;
/* call caps lock led update */
output_set_value("capslock_led", m_b6_caps_lock_led);
}
break;
case 7:
@ -1050,6 +1053,7 @@ WRITE8_MEMBER(bbc_state::bbcb_via_system_write_portb)
{
m_b7_shift_lock_led = 0;
/* call shift lock led update */
output_set_value("shiftlock_led", m_b7_shift_lock_led);
}
break;
}
@ -1254,7 +1258,7 @@ TIMER_CALLBACK_MEMBER(bbc_state::bbc_tape_timer_cb)
{
if (m_wav_len>(9*3))
{
//this is to long to recive anything so reset the serial IC. This is a hack, this should be done as a timer in the MC6850 code.
//this is too long to receive anything so reset the serial IC. This is a hack, this should be done as a timer in the MC6850 code.
logerror ("Cassette length %d\n",m_wav_len);
m_nr_high_tones = 0;
m_dcd_cass = 0;
@ -1393,6 +1397,7 @@ void bbc_state::BBC_Cassette_motor(unsigned char status)
m_cass_out_phase = 0;
m_cass_out_samples_to_go = 4;
}
output_set_value("motor_led", !status);
}

View File

@ -2333,6 +2333,7 @@ $(MESS_DRIVERS)/apollo.o: $(MESS_LAYOUT)/apollo_dsp.lh
$(MESS_DRIVERS)/apricotp.o: $(MESS_LAYOUT)/apricotp.lh
$(MESS_DRIVERS)/avigo.o: $(MESS_LAYOUT)/avigo.lh
$(MESS_DRIVERS)/babbage.o: $(MESS_LAYOUT)/babbage.lh
$(MESS_DRIVERS)/bbc.o: $(MESS_LAYOUT)/bbc.lh
$(MESS_DRIVERS)/beta.o: $(MESS_LAYOUT)/beta.lh
$(MESS_DRIVERS)/bob85.o: $(MESS_LAYOUT)/bob85.lh
$(MAME_DRIVERS)/cdi.o: $(MAME_LAYOUT)/cdi.lh