(MESS) mbee: various cleanups and notes (nw)

This commit is contained in:
Robbbert 2015-02-13 14:03:02 +11:00
parent e1d0a45ffc
commit 32373975f1
4 changed files with 184 additions and 314 deletions

View File

@ -30,31 +30,6 @@
- Although certain models came with particular drives as standard, users could add - Although certain models came with particular drives as standard, users could add
the other size if they wished. We support both sizes on any model. the other size if they wished. We support both sizes on any model.
Microbee Standard / Plus memory map
0000-7FFF RAM
8000-BFFF SYSTEM roms
C000-DFFF Edasm or WBee (edasm.rom or wbeee12.rom, optional)
E000-EFFF Telcom 1.2 (netrom.ic34; optional)
F000-F7FF Video RAM
F800-FFFF PCG RAM (graphics)
Microbee IC memory map (preliminary)
0000-7FFF RAM
8000-BFFF SYSTEM roms (bas522a.rom, bas522b.rom)
C000-DFFF Edasm or WBee (edasm.rom or wbeee12.rom, optional)
E000-EFFF Telcom (optional)
F000-F7FF Video RAM
F800-FFFF PCG RAM (graphics), Colour RAM (banked)
Microbee 56KB ROM memory map (preliminary)
0000-DFFF RAM
E000-EFFF ROM 56kb.rom CP/M bootstrap loader
F000-F7FF Video RAM
F800-FFFF PCG RAM (graphics), Colour RAM (banked)
Early machines have 'standard' video (128 hires characters). Early machines have 'standard' video (128 hires characters).
Later machines had the option of 'premium' video which Later machines had the option of 'premium' video which
provides thousands of hires characters, enough to simulate provides thousands of hires characters, enough to simulate
@ -75,7 +50,6 @@
These early colour computers have a PROM to create the foreground palette. These early colour computers have a PROM to create the foreground palette.
Notes about the printer: Notes about the printer:
- When computer turned on, defaults to 1200 baud serial printer - When computer turned on, defaults to 1200 baud serial printer
- Change it to parallel by entering OUTL#1 - Change it to parallel by entering OUTL#1
@ -96,20 +70,40 @@
- Telcom 1.2 (used in mbeeic) has a bug. If you enter NET CLOCK, the status line is - Telcom 1.2 (used in mbeeic) has a bug. If you enter NET CLOCK, the status line is
filled with inverse K. You can fix this from Basic by doing NET CLOCK 3 times. filled with inverse K. You can fix this from Basic by doing NET CLOCK 3 times.
Notes about Disk System
- Ports 44 to 47 are for standard connection to FD2793.
- Port 48 is used for drive/side/density select on write, and intrq/drq on read.
intrq and drq are OR'd together, then gated to bit 7 of the data bus whenever
port 48 is activated on read. There are no interrupts used.
Tests of old keyboard. Start mbeeic.
1. Load ASTEROIDS PLUS, stay in attract mode, hold down spacebar,
it should only fire bullets. If it sometimes starts turning,
thrusting or using the shield, then there is a problem.
2. Load SCAVENGER and make sure it doesn't go to the next level
until you find the Exit.
3. At the Basic prompt, type in EDASM press enter. At the memory size
prompt press enter. Now, make sure the keyboard works properly.
*************************************************************************** ***************************************************************************
TODO/not working: TODO/not working:
- Printer needs to be understood and fixed. - Printer needs to be understood and fixed.
- Keyboard loses characters if you type at a normal rate.
- Fix Paste (it loses most of the characters) - 256tc: Paste ignores shift key
- All others: Paste drops most characters, shift operates randomly.
- various fdc issues: - various fdc issues:
- B drive doesn't work. - B drive doesn't work.
- some disks cause MESS to freeze. - some disks cause MESS to freeze.
- ENMF pin missing from wd_fdc. - ENMF pin missing from wd_fdc.
- incorrect timing for track register causes 256tc failure to boot a disk. - incorrect timing for track register causes 256tc failure to boot a disk.
- 56k model takes about 2 minutes to boot a disk if loaded via command line. - 56k model takes 120 seconds to boot a disk if loaded via command line.
- mbeeppc, mbee128p: In Basic, keyboard loses characters. Works fine in Wordbee.
- 256tc: At the menu, if F2 pressed to activate the Monitor, the emulated machine - 256tc: At the menu, if F2 pressed to activate the Monitor, the emulated machine
crashes due to a bug in z80pio emulation. crashes due to a bug in z80pio emulation.
@ -125,25 +119,13 @@
- Mouse: a few programs support the use of a serial mouse which interfaced - Mouse: a few programs support the use of a serial mouse which interfaced
directly to the Z80PIO. However there's little info to be found. directly to the Z80PIO. However there's little info to be found.
PIO B3 to ground activates the mouse pointer in Shell v3.01.
*************************************************************************** *******************************************************************************/
Description of Disk System
- Ports 44 to 47 are for standard connection to FD2793.
- Port 48 is used for drive/side/density select on write,
and intrq/drq on read.
intrq and drq are OR'd together, then gated to bit 7 of the
data bus whenever port 48 is activated on read. There are
no interrupts used.
****************************************************************************/
#include "includes/mbee.h" #include "includes/mbee.h"
#include "formats/mbee_cas.h" #include "formats/mbee_cas.h"
#define XTAL_13_5MHz 13500000 #define XTAL_13_5MHz 13500000
/********** NOTE !!! *********************************************************** /********** NOTE !!! ***********************************************************
@ -156,7 +138,7 @@ static ADDRESS_MAP_START(mbee_mem, AS_PROGRAM, 8, mbee_state)
ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("boot") AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("boot")
AM_RANGE(0x1000, 0x3fff) AM_RAM AM_RANGE(0x1000, 0x3fff) AM_RAM
AM_RANGE(0x4000, 0x7fff) AM_WRITENOP /* Needed because quickload to here will crash MESS otherwise */ AM_RANGE(0x4000, 0x7fff) AM_WRITENOP // Needed because quickload to here will crash MESS
AM_RANGE(0x8000, 0xefff) AM_ROM AM_RANGE(0x8000, 0xefff) AM_ROM
AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(mbee_low_r, mbee_low_w) AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(mbee_low_r, mbee_low_w)
AM_RANGE(0xf800, 0xffff) AM_READWRITE(mbee_high_r, mbee_high_w) AM_RANGE(0xf800, 0xffff) AM_READWRITE(mbee_high_r, mbee_high_w)
@ -312,6 +294,9 @@ static ADDRESS_MAP_START(mbee128_io, AS_IO, 8, mbee_state)
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt) AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt)
AM_RANGE(0x04, 0x04) AM_WRITE(mbee_04_w)
AM_RANGE(0x06, 0x06) AM_WRITE(mbee_06_w)
AM_RANGE(0x07, 0x07) AM_READ(mbee_07_r)
AM_RANGE(0x08, 0x08) AM_READWRITE(mbeeic_08_r, mbeeic_08_w) AM_RANGE(0x08, 0x08) AM_READWRITE(mbeeic_08_r, mbeeic_08_w)
AM_RANGE(0x0b, 0x0b) AM_READWRITE(mbee_0b_r, mbee_0b_w) AM_RANGE(0x0b, 0x0b) AM_READWRITE(mbee_0b_r, mbee_0b_w)
AM_RANGE(0x0c, 0x0c) AM_READWRITE(m6545_status_r, m6545_index_w) AM_RANGE(0x0c, 0x0c) AM_READWRITE(m6545_status_r, m6545_index_w)
@ -363,7 +348,7 @@ static ADDRESS_MAP_START(mbeett_io, AS_IO, 8, mbee_state)
ADDRESS_MAP_END ADDRESS_MAP_END
static INPUT_PORTS_START( mbee ) static INPUT_PORTS_START( mbee )
PORT_START("X0") /* IN0 KEY ROW 0 [000] */ PORT_START("X.0") /* IN0 KEY ROW 0 [000] */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("@") PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR('@') PORT_CHAR('`') PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("@") PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR('@') PORT_CHAR('`')
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A') PORT_CHAR(0x01) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A') PORT_CHAR(0x01)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') PORT_CHAR(0x02) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') PORT_CHAR(0x02)
@ -373,7 +358,7 @@ static INPUT_PORTS_START( mbee )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F') PORT_CHAR(0x06) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F') PORT_CHAR(0x06)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G') PORT_CHAR(0x07) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G') PORT_CHAR(0x07)
PORT_START("X1") /* IN1 KEY ROW 1 [080] */ PORT_START("X.1") /* IN1 KEY ROW 1 [080] */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H') PORT_CHAR(0x08) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H') PORT_CHAR(0x08)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') PORT_CHAR(0x09) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') PORT_CHAR(0x09)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J') PORT_CHAR(0x0a) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J') PORT_CHAR(0x0a)
@ -383,7 +368,7 @@ static INPUT_PORTS_START( mbee )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') PORT_CHAR(0x0e) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') PORT_CHAR(0x0e)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') PORT_CHAR(0x0f) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') PORT_CHAR(0x0f)
PORT_START("X2") /* IN2 KEY ROW 2 [100] */ PORT_START("X.2") /* IN2 KEY ROW 2 [100] */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') PORT_CHAR(0x10) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') PORT_CHAR(0x10)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') PORT_CHAR(0x11) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') PORT_CHAR(0x11)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') PORT_CHAR(0x12) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') PORT_CHAR(0x12)
@ -393,7 +378,7 @@ static INPUT_PORTS_START( mbee )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') PORT_CHAR(0x16) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') PORT_CHAR(0x16)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') PORT_CHAR(0x17) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') PORT_CHAR(0x17)
PORT_START("X3") /* IN3 KEY ROW 3 [180] */ PORT_START("X.3") /* IN3 KEY ROW 3 [180] */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') PORT_CHAR(0x18) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') PORT_CHAR(0x18)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('u') PORT_CHAR('Y') PORT_CHAR(0x19) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('u') PORT_CHAR('Y') PORT_CHAR(0x19)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') PORT_CHAR(0x1a) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') PORT_CHAR(0x1a)
@ -403,7 +388,7 @@ static INPUT_PORTS_START( mbee )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("^") PORT_CODE(KEYCODE_TILDE) PORT_CHAR('^') PORT_CHAR('~') PORT_CHAR(0x1e) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("^") PORT_CODE(KEYCODE_TILDE) PORT_CHAR('^') PORT_CHAR('~') PORT_CHAR(0x1e)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Delete") PORT_CODE(KEYCODE_DEL) PORT_CHAR(8) PORT_CHAR(0x5f) PORT_CHAR(0x1f) // port_char not working - hijacked PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Delete") PORT_CODE(KEYCODE_DEL) PORT_CHAR(8) PORT_CHAR(0x5f) PORT_CHAR(0x1f) // port_char not working - hijacked
PORT_START("X4") /* IN4 KEY ROW 4 [200] */ PORT_START("X.4") /* IN4 KEY ROW 4 [200] */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0')
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("1 !") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("1 !") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("2 \"") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('\"') PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("2 \"") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('\"')
@ -413,7 +398,7 @@ static INPUT_PORTS_START( mbee )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("6 &") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&') PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("6 &") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("7 '") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'') PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("7 '") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
PORT_START("X5") /* IN5 KEY ROW 5 [280] */ PORT_START("X.5") /* IN5 KEY ROW 5 [280] */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("8 (") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(') PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("8 (") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("9 )") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')') PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("9 )") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("; +") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+') PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("; +") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+')
@ -423,7 +408,7 @@ static INPUT_PORTS_START( mbee )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(". >") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>') PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(". >") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("/ ?") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("/ ?") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
PORT_START("X6") /* IN6 KEY ROW 6 [300] */ PORT_START("X.6") /* IN6 KEY ROW 6 [300] */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Escape") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Escape") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Backspace") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Backspace") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Tab") PORT_CODE(KEYCODE_TAB) PORT_CHAR(9) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Tab") PORT_CODE(KEYCODE_TAB) PORT_CHAR(9)
@ -433,7 +418,7 @@ static INPUT_PORTS_START( mbee )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Break") PORT_CODE(KEYCODE_END) PORT_CHAR(3) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Break") PORT_CODE(KEYCODE_END) PORT_CHAR(3)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
PORT_START("X7") /* IN7 KEY ROW 7 [380] */ PORT_START("X.7") /* IN7 KEY ROW 7 [380] */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("(Up)") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("(Up)") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("(Down)") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("(Down)") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
@ -465,7 +450,7 @@ static INPUT_PORTS_START( mbee )
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( mbee256 ) static INPUT_PORTS_START( mbee256 )
PORT_START("X0") /* IN0 KEY ROW 0 [+00] */ PORT_START("Y.0") /* IN0 KEY ROW 0 [+00] */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F1") PORT_CODE(KEYCODE_F1) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F1") PORT_CODE(KEYCODE_F1)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Escape") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Escape") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Tab") PORT_CODE(KEYCODE_TAB) PORT_CHAR(9) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Tab") PORT_CODE(KEYCODE_TAB) PORT_CHAR(9)
@ -474,7 +459,7 @@ static INPUT_PORTS_START( mbee256 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("DEL (num)") PORT_CODE(KEYCODE_DEL_PAD) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("DEL (num)") PORT_CODE(KEYCODE_DEL_PAD)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
PORT_START("X1") /* IN1 KEY ROW 1 [+08] */ PORT_START("Y.1") /* IN1 KEY ROW 1 [+08] */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F2") PORT_CODE(KEYCODE_F2) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F2") PORT_CODE(KEYCODE_F2)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("1 !") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("1 !") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') PORT_CHAR(0x11) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') PORT_CHAR(0x11)
@ -483,7 +468,7 @@ static INPUT_PORTS_START( mbee256 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Linefeed") PORT_CODE(KEYCODE_HOME) PORT_CHAR(10) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Linefeed") PORT_CODE(KEYCODE_HOME) PORT_CHAR(10)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Insert") PORT_CODE(KEYCODE_INSERT) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Insert") PORT_CODE(KEYCODE_INSERT)
PORT_START("X2") /* IN2 KEY ROW 2 [+10] */ PORT_START("Y.2") /* IN2 KEY ROW 2 [+10] */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F3") PORT_CODE(KEYCODE_F3) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F3") PORT_CODE(KEYCODE_F3)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("2 @") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('@') PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("2 @") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('@')
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') PORT_CHAR(0x17) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') PORT_CHAR(0x17)
@ -493,7 +478,7 @@ static INPUT_PORTS_START( mbee256 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("3 (num)") PORT_CODE(KEYCODE_3_PAD) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("3 (num)") PORT_CODE(KEYCODE_3_PAD)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') PORT_CHAR(0x1a) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') PORT_CHAR(0x1a)
PORT_START("X3") /* IN3 KEY ROW 3 [+18] */ PORT_START("Y.3") /* IN3 KEY ROW 3 [+18] */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F4") PORT_CODE(KEYCODE_F4) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F4") PORT_CODE(KEYCODE_F4)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("3 #") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#') PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("3 #") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') PORT_CHAR(0x05) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') PORT_CHAR(0x05)
@ -503,7 +488,7 @@ static INPUT_PORTS_START( mbee256 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("6 (num)") PORT_CODE(KEYCODE_6_PAD) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("6 (num)") PORT_CODE(KEYCODE_6_PAD)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') PORT_CHAR(0x18) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') PORT_CHAR(0x18)
PORT_START("X4") /* IN4 KEY ROW 4 [+20] */ PORT_START("Y.4") /* IN4 KEY ROW 4 [+20] */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F5") PORT_CODE(KEYCODE_F5) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F5") PORT_CODE(KEYCODE_F5)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("4 $") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$') PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("4 $") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') PORT_CHAR(0x12) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') PORT_CHAR(0x12)
@ -513,7 +498,7 @@ static INPUT_PORTS_START( mbee256 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("9 (num)") PORT_CODE(KEYCODE_9_PAD) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("9 (num)") PORT_CODE(KEYCODE_9_PAD)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C') PORT_CHAR(0x03) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C') PORT_CHAR(0x03)
PORT_START("X5") /* IN5 KEY ROW 5 [+28] */ PORT_START("Y.5") /* IN5 KEY ROW 5 [+28] */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F6") PORT_CODE(KEYCODE_F6) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F6") PORT_CODE(KEYCODE_F6)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("5 %") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("5 %") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T') PORT_CHAR(0x14) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T') PORT_CHAR(0x14)
@ -523,7 +508,7 @@ static INPUT_PORTS_START( mbee256 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("4 (num)") PORT_CODE(KEYCODE_4_PAD) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("4 (num)") PORT_CODE(KEYCODE_4_PAD)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') PORT_CHAR(0x16) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') PORT_CHAR(0x16)
PORT_START("X6") /* IN6 KEY ROW 6 [+30] */ PORT_START("Y.6") /* IN6 KEY ROW 6 [+30] */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F7") PORT_CODE(KEYCODE_F7) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F7") PORT_CODE(KEYCODE_F7)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("6 &") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&') PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("6 &") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y') PORT_CHAR(0x19) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y') PORT_CHAR(0x19)
@ -533,7 +518,7 @@ static INPUT_PORTS_START( mbee256 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("(Right)") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("(Right)") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') PORT_CHAR(0x02) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') PORT_CHAR(0x02)
PORT_START("X7") /* IN7 KEY ROW 7 [+38] */ PORT_START("Y.7") /* IN7 KEY ROW 7 [+38] */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F8") PORT_CODE(KEYCODE_F8) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F8") PORT_CODE(KEYCODE_F8)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("7 &") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&') PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("7 &") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&')
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U') PORT_CHAR(0x15) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U') PORT_CHAR(0x15)
@ -541,7 +526,7 @@ static INPUT_PORTS_START( mbee256 )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("(Left)") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("(Left)") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') PORT_CHAR(0x0e) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') PORT_CHAR(0x0e)
PORT_START("X8") /* IN0 KEY ROW 0 [+40] */ PORT_START("Y.8") /* IN0 KEY ROW 0 [+40] */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F9") PORT_CODE(KEYCODE_F9) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F9") PORT_CODE(KEYCODE_F9)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("8 *") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('*') PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("8 *") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('*')
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') PORT_CHAR(0x09) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') PORT_CHAR(0x09)
@ -549,7 +534,7 @@ static INPUT_PORTS_START( mbee256 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("(Up)") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("(Up)") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M') PORT_CHAR(0x0d) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M') PORT_CHAR(0x0d)
PORT_START("X9") /* IN1 KEY ROW 1 [+48] */ PORT_START("Y.9") /* IN1 KEY ROW 1 [+48] */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F10") PORT_CODE(KEYCODE_F10) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F10") PORT_CODE(KEYCODE_F10)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("9 (") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(') PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("9 (") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(')
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') PORT_CHAR(0x0f) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') PORT_CHAR(0x0f)
@ -558,7 +543,7 @@ static INPUT_PORTS_START( mbee256 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(13) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(13)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(", <") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<') PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(", <") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
PORT_START("X10") /* IN2 KEY ROW 2 [+50] */ PORT_START("Y.10") /* IN2 KEY ROW 2 [+50] */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F11") PORT_CODE(KEYCODE_F11) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F11") PORT_CODE(KEYCODE_F11)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("0 )") PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')') PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("0 )") PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')')
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') PORT_CHAR(0x10) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') PORT_CHAR(0x10)
@ -568,7 +553,7 @@ static INPUT_PORTS_START( mbee256 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\\ |") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|') PORT_CHAR(0x1c) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\\ |") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|') PORT_CHAR(0x1c)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(". >") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>') PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(". >") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
PORT_START("X11") /* IN3 KEY ROW 3 [+58] */ PORT_START("Y.11") /* IN3 KEY ROW 3 [+58] */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F12") PORT_CODE(KEYCODE_F12) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F12") PORT_CODE(KEYCODE_F12)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("-") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_') PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("-") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_')
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("[ {") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{') PORT_CHAR(0x1b) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("[ {") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{') PORT_CHAR(0x1b)
@ -577,13 +562,13 @@ static INPUT_PORTS_START( mbee256 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("] }") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}') PORT_CHAR(0x1d) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("] }") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}') PORT_CHAR(0x1d)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("/ ?") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("/ ?") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
PORT_START("X12") /* IN4 KEY ROW 4 [+60] */ PORT_START("Y.12") /* IN4 KEY ROW 4 [+60] */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
PORT_START("X13") /* IN5 KEY ROW 5 [+68] */ PORT_START("Y.13") /* IN5 KEY ROW 5 [+68] */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_SHIFT_2) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_SHIFT_2)
PORT_START("X14") /* IN6 KEY ROW 6 [+70] */ PORT_START("Y.14") /* IN6 KEY ROW 6 [+70] */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Alt") PORT_CODE(KEYCODE_LALT) PORT_CODE(KEYCODE_RALT) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Alt") PORT_CODE(KEYCODE_LALT) PORT_CODE(KEYCODE_RALT)
// Autorun on quickload // Autorun on quickload
@ -619,15 +604,15 @@ static const gfx_layout mbee_charlayout =
8*16 /* every char takes 16 bytes */ 8*16 /* every char takes 16 bytes */
}; };
static GFXDECODE_START( mbee ) static GFXDECODE_START( mono )
GFXDECODE_ENTRY( "gfx", 0x0000, mbee_charlayout, 0, 1 ) GFXDECODE_ENTRY( "gfx", 0x0000, mbee_charlayout, 0, 1 )
GFXDECODE_END GFXDECODE_END
static GFXDECODE_START( mbeeic ) static GFXDECODE_START( standard )
GFXDECODE_ENTRY( "gfx", 0x0000, mbee_charlayout, 0, 48 ) GFXDECODE_ENTRY( "gfx", 0x0000, mbee_charlayout, 0, 48 )
GFXDECODE_END GFXDECODE_END
static GFXDECODE_START( mbeeppc ) static GFXDECODE_START( premium )
GFXDECODE_ENTRY( "gfx", 0x0000, mbee_charlayout, 0, 8 ) GFXDECODE_ENTRY( "gfx", 0x0000, mbee_charlayout, 0, 8 )
GFXDECODE_END GFXDECODE_END
@ -662,10 +647,10 @@ static MACHINE_CONFIG_START( mbee, mbee_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0, 19*16-1) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0, 19*16-1)
MCFG_SCREEN_UPDATE_DRIVER(mbee_state, screen_update_mbee) MCFG_SCREEN_UPDATE_DRIVER(mbee_state, screen_update_mbee)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", mbee) MCFG_GFXDECODE_ADD("gfxdecode", "palette", mono)
MCFG_PALETTE_ADD_MONOCHROME_AMBER("palette") // usually sold with amber or green monitor MCFG_PALETTE_ADD_MONOCHROME_AMBER("palette") // usually sold with amber or green monitor
MCFG_VIDEO_START_OVERRIDE(mbee_state, mbee) MCFG_VIDEO_START_OVERRIDE(mbee_state, mono)
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
@ -678,8 +663,8 @@ static MACHINE_CONFIG_START( mbee, mbee_state )
MCFG_MC6845_ADD("crtc", SY6545_1, "screen", XTAL_12MHz / 8) MCFG_MC6845_ADD("crtc", SY6545_1, "screen", XTAL_12MHz / 8)
MCFG_MC6845_SHOW_BORDER_AREA(false) MCFG_MC6845_SHOW_BORDER_AREA(false)
MCFG_MC6845_CHAR_WIDTH(8) MCFG_MC6845_CHAR_WIDTH(8)
MCFG_MC6845_UPDATE_ROW_CB(mbee_state, mbee_update_row) MCFG_MC6845_UPDATE_ROW_CB(mbee_state, mono_update_row)
MCFG_MC6845_ADDR_CHANGED_CB(mbee_state, mbee_update_addr) MCFG_MC6845_ADDR_CHANGED_CB(mbee_state, crtc_update_addr)
MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(mbee_state, crtc_vs)) MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(mbee_state, crtc_vs))
MCFG_QUICKLOAD_ADD("quickload", mbee_state, mbee, "mwb,com,bee", 2) MCFG_QUICKLOAD_ADD("quickload", mbee_state, mbee, "mwb,com,bee", 2)
@ -718,12 +703,12 @@ static MACHINE_CONFIG_START( mbeeic, mbee_state )
MCFG_SCREEN_VISIBLE_AREA(0, 80*8-1, 0, 19*16-1) MCFG_SCREEN_VISIBLE_AREA(0, 80*8-1, 0, 19*16-1)
MCFG_SCREEN_UPDATE_DRIVER(mbee_state, screen_update_mbee) MCFG_SCREEN_UPDATE_DRIVER(mbee_state, screen_update_mbee)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", mbeeic) MCFG_GFXDECODE_ADD("gfxdecode", "palette", standard)
MCFG_PALETTE_ADD("palette", 96) MCFG_PALETTE_ADD("palette", 96)
MCFG_PALETTE_INIT_OWNER(mbee_state, mbeeic) MCFG_PALETTE_INIT_OWNER(mbee_state, standard)
MCFG_VIDEO_START_OVERRIDE(mbee_state, mbeeic) MCFG_VIDEO_START_OVERRIDE(mbee_state, standard)
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
@ -736,8 +721,8 @@ static MACHINE_CONFIG_START( mbeeic, mbee_state )
MCFG_MC6845_ADD("crtc", SY6545_1, "screen", XTAL_13_5MHz / 8) MCFG_MC6845_ADD("crtc", SY6545_1, "screen", XTAL_13_5MHz / 8)
MCFG_MC6845_SHOW_BORDER_AREA(false) MCFG_MC6845_SHOW_BORDER_AREA(false)
MCFG_MC6845_CHAR_WIDTH(8) MCFG_MC6845_CHAR_WIDTH(8)
MCFG_MC6845_UPDATE_ROW_CB(mbee_state, mbeeic_update_row) MCFG_MC6845_UPDATE_ROW_CB(mbee_state, colour_update_row)
MCFG_MC6845_ADDR_CHANGED_CB(mbee_state, mbee_update_addr) MCFG_MC6845_ADDR_CHANGED_CB(mbee_state, crtc_update_addr)
MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(mbee_state, crtc_vs)) MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(mbee_state, crtc_vs))
MCFG_QUICKLOAD_ADD("quickload", mbee_state, mbee, "mwb,com,bee", 2) MCFG_QUICKLOAD_ADD("quickload", mbee_state, mbee, "mwb,com,bee", 2)
@ -773,19 +758,11 @@ static MACHINE_CONFIG_DERIVED( mbeeppc, mbeeic )
MCFG_CPU_MODIFY( "maincpu" ) MCFG_CPU_MODIFY( "maincpu" )
MCFG_CPU_PROGRAM_MAP(mbeeppc_mem) MCFG_CPU_PROGRAM_MAP(mbeeppc_mem)
MCFG_CPU_IO_MAP(mbeeppc_io) MCFG_CPU_IO_MAP(mbeeppc_io)
MCFG_VIDEO_START_OVERRIDE(mbee_state, mbeeppc) MCFG_VIDEO_START_OVERRIDE(mbee_state, premium)
MCFG_GFXDECODE_MODIFY("gfxdecode", mbeeppc) MCFG_GFXDECODE_MODIFY("gfxdecode", premium)
MCFG_PALETTE_MODIFY("palette") MCFG_PALETTE_MODIFY("palette")
MCFG_PALETTE_ENTRIES(16) MCFG_PALETTE_ENTRIES(16)
MCFG_PALETTE_INIT_OWNER(mbee_state, mbeeppc) MCFG_PALETTE_INIT_OWNER(mbee_state, premium)
MCFG_DEVICE_REMOVE("crtc")
MCFG_MC6845_ADD("crtc", SY6545_1, "screen", XTAL_13_5MHz / 8)
MCFG_MC6845_SHOW_BORDER_AREA(false)
MCFG_MC6845_CHAR_WIDTH(8)
MCFG_MC6845_UPDATE_ROW_CB(mbee_state, mbeeppc_update_row)
MCFG_MC6845_ADDR_CHANGED_CB(mbee_state, mbee_update_addr)
MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(mbee_state, crtc_vs))
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( mbee56, mbeeic ) static MACHINE_CONFIG_DERIVED( mbee56, mbeeic )
@ -805,6 +782,7 @@ static MACHINE_CONFIG_DERIVED( mbee128, mbee56 )
MCFG_CPU_PROGRAM_MAP(mbee256_mem) MCFG_CPU_PROGRAM_MAP(mbee256_mem)
MCFG_CPU_IO_MAP(mbee128_io) MCFG_CPU_IO_MAP(mbee128_io)
MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee128) MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee128)
MCFG_MC146818_ADD( "rtc", XTAL_32_768kHz )
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( mbee128p, mbeeppc ) static MACHINE_CONFIG_DERIVED( mbee128p, mbeeppc )
@ -812,6 +790,7 @@ static MACHINE_CONFIG_DERIVED( mbee128p, mbeeppc )
MCFG_CPU_PROGRAM_MAP(mbee256_mem) MCFG_CPU_PROGRAM_MAP(mbee256_mem)
MCFG_CPU_IO_MAP(mbee128_io) MCFG_CPU_IO_MAP(mbee128_io)
MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee128) MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee128)
MCFG_MC146818_ADD( "rtc", XTAL_32_768kHz )
MCFG_WD2793x_ADD("fdc", XTAL_4MHz / 4) MCFG_WD2793x_ADD("fdc", XTAL_4MHz / 4)
MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(mbee_state, fdc_intrq_w)) MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(mbee_state, fdc_intrq_w))
MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(mbee_state, fdc_drq_w)) MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(mbee_state, fdc_drq_w))
@ -824,14 +803,7 @@ static MACHINE_CONFIG_DERIVED( mbee256, mbee128p )
MCFG_CPU_PROGRAM_MAP(mbee256_mem) MCFG_CPU_PROGRAM_MAP(mbee256_mem)
MCFG_CPU_IO_MAP(mbee256_io) MCFG_CPU_IO_MAP(mbee256_io)
MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee256) MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee256)
MCFG_MC146818_ADD( "rtc", XTAL_32_768kHz )
MCFG_DEVICE_REMOVE("crtc")
MCFG_MC6845_ADD("crtc", SY6545_1, "screen", XTAL_13_5MHz / 8)
MCFG_MC6845_SHOW_BORDER_AREA(false)
MCFG_MC6845_CHAR_WIDTH(8)
MCFG_MC6845_UPDATE_ROW_CB(mbee_state, mbeeppc_update_row)
MCFG_MC6845_ADDR_CHANGED_CB(mbee_state, mbee256_update_addr)
MCFG_DEVICE_REMOVE("fdc:0") MCFG_DEVICE_REMOVE("fdc:0")
MCFG_DEVICE_REMOVE("fdc:1") MCFG_DEVICE_REMOVE("fdc:1")
MCFG_FLOPPY_DRIVE_ADD("fdc:0", mbee_floppies, "drive3a", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD("fdc:0", mbee_floppies, "drive3a", floppy_image_device::default_floppy_formats)
@ -844,13 +816,6 @@ static MACHINE_CONFIG_DERIVED( mbeett, mbeeppc )
MCFG_CPU_IO_MAP(mbeett_io) MCFG_CPU_IO_MAP(mbeett_io)
MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbeett) MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbeett)
MCFG_MC146818_ADD( "rtc", XTAL_32_768kHz ) MCFG_MC146818_ADD( "rtc", XTAL_32_768kHz )
MCFG_DEVICE_REMOVE("crtc")
MCFG_MC6845_ADD("crtc", SY6545_1, "screen", XTAL_13_5MHz / 8)
MCFG_MC6845_SHOW_BORDER_AREA(false)
MCFG_MC6845_CHAR_WIDTH(8)
MCFG_MC6845_UPDATE_ROW_CB(mbee_state, mbeeppc_update_row)
MCFG_MC6845_ADDR_CHANGED_CB(mbee_state, mbee256_update_addr)
MACHINE_CONFIG_END MACHINE_CONFIG_END
/* Unused roms: /* Unused roms:

View File

@ -52,23 +52,10 @@ public:
, m_pak(*this, "pak") , m_pak(*this, "pak")
, m_telcom(*this, "telcom") , m_telcom(*this, "telcom")
, m_basic(*this, "basic") , m_basic(*this, "basic")
, m_io_x0(*this, "X0")
, m_io_x1(*this, "X1")
, m_io_x2(*this, "X2")
, m_io_x3(*this, "X3")
, m_io_x4(*this, "X4")
, m_io_x5(*this, "X5")
, m_io_x6(*this, "X6")
, m_io_x7(*this, "X7")
, m_io_extra(*this, "EXTRA") , m_io_extra(*this, "EXTRA")
, m_io_config(*this, "CONFIG") , m_io_config(*this, "CONFIG")
, m_io_x8(*this, "X8") , m_io_oldkb(*this, "X")
, m_io_x9(*this, "X9") , m_io_newkb(*this, "Y")
, m_io_x10(*this, "X10")
, m_io_x11(*this, "X11")
, m_io_x12(*this, "X12")
, m_io_x13(*this, "X13")
, m_io_x14(*this, "X14")
, m_screen(*this, "screen") , m_screen(*this, "screen")
{ } { }
@ -123,12 +110,12 @@ public:
DECLARE_DRIVER_INIT(mbeeic); DECLARE_DRIVER_INIT(mbeeic);
DECLARE_DRIVER_INIT(mbee128); DECLARE_DRIVER_INIT(mbee128);
DECLARE_MACHINE_RESET(mbee); DECLARE_MACHINE_RESET(mbee);
DECLARE_VIDEO_START(mbee); DECLARE_VIDEO_START(mono);
DECLARE_VIDEO_START(mbeeic); DECLARE_VIDEO_START(standard);
DECLARE_PALETTE_INIT(mbeeic); DECLARE_VIDEO_START(premium);
DECLARE_PALETTE_INIT(standard);
DECLARE_PALETTE_INIT(mbeepc85b); DECLARE_PALETTE_INIT(mbeepc85b);
DECLARE_VIDEO_START(mbeeppc); DECLARE_PALETTE_INIT(premium);
DECLARE_PALETTE_INIT(mbeeppc);
DECLARE_MACHINE_RESET(mbee56); DECLARE_MACHINE_RESET(mbee56);
DECLARE_MACHINE_RESET(mbee128); DECLARE_MACHINE_RESET(mbee128);
DECLARE_MACHINE_RESET(mbee256); DECLARE_MACHINE_RESET(mbee256);
@ -152,19 +139,18 @@ public:
void mbee_video_kbd_scan(int param); void mbee_video_kbd_scan(int param);
UINT8 m_sy6545_cursor[16]; UINT8 m_sy6545_cursor[16];
MC6845_UPDATE_ROW(mbee_update_row); MC6845_UPDATE_ROW(mono_update_row);
MC6845_UPDATE_ROW(mbeeic_update_row); MC6845_UPDATE_ROW(colour_update_row);
MC6845_UPDATE_ROW(mbeeppc_update_row); MC6845_ON_UPDATE_ADDR_CHANGED(crtc_update_addr);
MC6845_ON_UPDATE_ADDR_CHANGED(mbee_update_addr);
MC6845_ON_UPDATE_ADDR_CHANGED(mbee256_update_addr);
required_device<palette_device> m_palette; required_device<palette_device> m_palette;
private: private:
bool m_is_premium; bool m_is_premium;
bool m_has_oldkb;
size_t m_size; size_t m_size;
bool m_b7_rtc; bool m_b7_rtc;
bool m_b7_vs; bool m_b7_vs;
UINT8 m_mbee256_key_available; bool m_b2;
UINT8 m_mbee256_was_pressed[15]; UINT8 m_mbee256_was_pressed[15];
UINT8 m_mbee256_q[20]; UINT8 m_mbee256_q[20];
UINT8 m_mbee256_q_pos; UINT8 m_mbee256_q_pos;
@ -196,23 +182,10 @@ private:
optional_memory_bank m_pak; optional_memory_bank m_pak;
optional_memory_bank m_telcom; optional_memory_bank m_telcom;
optional_memory_bank m_basic; optional_memory_bank m_basic;
required_ioport m_io_x0;
required_ioport m_io_x1;
required_ioport m_io_x2;
required_ioport m_io_x3;
required_ioport m_io_x4;
required_ioport m_io_x5;
required_ioport m_io_x6;
required_ioport m_io_x7;
optional_ioport m_io_extra; optional_ioport m_io_extra;
optional_ioport m_io_config; required_ioport m_io_config;
optional_ioport m_io_x8; optional_ioport_array<8> m_io_oldkb;
optional_ioport m_io_x9; optional_ioport_array<15> m_io_newkb;
optional_ioport m_io_x10;
optional_ioport m_io_x11;
optional_ioport m_io_x12;
optional_ioport m_io_x13;
optional_ioport m_io_x14;
required_device<screen_device> m_screen; required_device<screen_device> m_screen;
}; };

View File

@ -88,7 +88,8 @@ READ8_MEMBER( mbee_state::pio_port_b_r )
break; break;
} }
data |= m_mbee256_key_available; data |= (UINT8)m_b2 << 1; // key pressed on new keyboard
data |= 8; // CTS held high via resistor. If low, the disk-based models think a mouse is plugged in.
return data; return data;
}; };
@ -114,7 +115,7 @@ WRITE_LINE_MEMBER( mbee_state::fdc_drq_w )
READ8_MEMBER( mbee_state::mbee_fdc_status_r ) READ8_MEMBER( mbee_state::mbee_fdc_status_r )
{ {
/* d7 indicate if IRQ or DRQ is occuring (1=happening) /* d7 indicate if IRQ or DRQ is occurring (1=happening)
d6..d0 not used */ d6..d0 not used */
return m_fdc_rq ? 0xff : 0x7f; return m_fdc_rq ? 0xff : 0x7f;
@ -164,49 +165,34 @@ TIMER_CALLBACK_MEMBER(mbee_state::mbee256_kbd)
It includes up to 4 KB of mask-programmable ROM, 64 bytes of scratchpad RAM and up to 64 bytes It includes up to 4 KB of mask-programmable ROM, 64 bytes of scratchpad RAM and up to 64 bytes
of executable RAM. The MCU also integrates 32-bit I/O and a programmable timer. */ of executable RAM. The MCU also integrates 32-bit I/O and a programmable timer. */
UINT8 i, j; UINT8 i, j, pressed;
UINT8 pressed[15];
// find what has changed
/* see what is pressed */
pressed[0] = m_io_x0->read();
pressed[1] = m_io_x1->read();
pressed[2] = m_io_x2->read();
pressed[3] = m_io_x3->read();
pressed[4] = m_io_x4->read();
pressed[5] = m_io_x5->read();
pressed[6] = m_io_x6->read();
pressed[7] = m_io_x7->read();
pressed[8] = m_io_x8->read();
pressed[9] = m_io_x9->read();
pressed[10] = m_io_x10->read();
pressed[11] = m_io_x11->read();
pressed[12] = m_io_x12->read();
pressed[13] = m_io_x13->read();
pressed[14] = m_io_x14->read();
/* find what has changed */
for (i = 0; i < 15; i++) for (i = 0; i < 15; i++)
{ {
if (pressed[i] != m_mbee256_was_pressed[i]) pressed = m_io_newkb[i]->read();
if (pressed != m_mbee256_was_pressed[i])
{ {
/* get scankey value */ // get scankey value
for (j = 0; j < 8; j++) for (j = 0; j < 8; j++)
{ {
if (BIT(pressed[i]^m_mbee256_was_pressed[i], j)) if (BIT(pressed^m_mbee256_was_pressed[i], j))
{ {
/* put it in the queue */ // put it in the queue
m_mbee256_q[m_mbee256_q_pos] = (i << 3) | j | (BIT(pressed[i], j) ? 0x80 : 0); m_mbee256_q[m_mbee256_q_pos] = (i << 3) | j | (BIT(pressed, j) ? 0x80 : 0);
if (m_mbee256_q_pos < 19) m_mbee256_q_pos++; if (m_mbee256_q_pos < 19) m_mbee256_q_pos++;
} }
} }
m_mbee256_was_pressed[i] = pressed[i]; m_mbee256_was_pressed[i] = pressed;
} }
} }
/* if anything queued, cause an interrupt */ // if anything queued, cause an interrupt
if (m_mbee256_q_pos) if (m_mbee256_q_pos)
m_mbee256_key_available = 2; // set irq {
m_b2 = 1; // set irq
//breaks keyboard m_pio->port_b_write(pio_port_b_r(generic_space(),0,0xff));
}
timer_set(attotime::from_hz(25), TIMER_MBEE256_KBD); timer_set(attotime::from_hz(25), TIMER_MBEE256_KBD);
} }
@ -221,7 +207,7 @@ READ8_MEMBER( mbee_state::mbee256_18_r )
for (i = 0; i < m_mbee256_q_pos; i++) m_mbee256_q[i] = m_mbee256_q[i+1]; // ripple queue for (i = 0; i < m_mbee256_q_pos; i++) m_mbee256_q[i] = m_mbee256_q[i+1]; // ripple queue
} }
m_mbee256_key_available = 0; // clear irq m_b2 = 0; // clear irq
return data; return data;
} }
@ -270,6 +256,9 @@ READ8_MEMBER( mbee_state::mbee_07_r ) // read
// This doesn't seem to do anything; the time works without it. // This doesn't seem to do anything; the time works without it.
TIMER_CALLBACK_MEMBER( mbee_state::mbee_rtc_irq ) TIMER_CALLBACK_MEMBER( mbee_state::mbee_rtc_irq )
{ {
if (!m_rtc)
return;
UINT8 data = m_rtc->read(m_maincpu->space(AS_IO), 12); UINT8 data = m_rtc->read(m_maincpu->space(AS_IO), 12);
m_b7_rtc = (data) ? 1 : 0; m_b7_rtc = (data) ? 1 : 0;
@ -292,6 +281,10 @@ TIMER_CALLBACK_MEMBER( mbee_state::mbee_rtc_irq )
b_mask = total dynamic ram (1=64k; 3=128k; 7=256k) b_mask = total dynamic ram (1=64k; 3=128k; 7=256k)
Certain software (such as the PJB system) constantly switch banks around,
causing slowness. Therefore this function only changes the banks that need
changing, leaving the others as is.
************************************************************/ ************************************************************/
void mbee_state::setup_banks(UINT8 data, bool first_time, UINT8 b_mask) void mbee_state::setup_banks(UINT8 data, bool first_time, UINT8 b_mask)
@ -304,7 +297,7 @@ void mbee_state::setup_banks(UINT8 data, bool first_time, UINT8 b_mask)
UINT16 b_vid; UINT16 b_vid;
char banktag[10]; char banktag[10];
if (first_time || (b_data != m_bank_array[0])) if (first_time || (b_data != m_bank_array[0])) // if same data as last time, leave now
{ {
m_bank_array[0] = b_data; m_bank_array[0] = b_data;
@ -551,6 +544,7 @@ DRIVER_INIT_MEMBER( mbee_state, mbee )
UINT8 *RAM = memregion("maincpu")->base(); UINT8 *RAM = memregion("maincpu")->base();
m_boot->configure_entries(0, 2, &RAM[0x0000], 0x8000); m_boot->configure_entries(0, 2, &RAM[0x0000], 0x8000);
m_size = 0x4000; m_size = 0x4000;
m_has_oldkb = 1;
} }
DRIVER_INIT_MEMBER( mbee_state, mbeeic ) DRIVER_INIT_MEMBER( mbee_state, mbeeic )
@ -563,6 +557,7 @@ DRIVER_INIT_MEMBER( mbee_state, mbeeic )
m_pak->set_entry(0); m_pak->set_entry(0);
m_size = 0x8000; m_size = 0x8000;
m_has_oldkb = 1;
} }
DRIVER_INIT_MEMBER( mbee_state, mbeepc ) DRIVER_INIT_MEMBER( mbee_state, mbeepc )
@ -579,6 +574,7 @@ DRIVER_INIT_MEMBER( mbee_state, mbeepc )
m_pak->set_entry(0); m_pak->set_entry(0);
m_telcom->set_entry(0); m_telcom->set_entry(0);
m_size = 0x8000; m_size = 0x8000;
m_has_oldkb = 1;
} }
DRIVER_INIT_MEMBER( mbee_state, mbeepc85 ) DRIVER_INIT_MEMBER( mbee_state, mbeepc85 )
@ -595,6 +591,7 @@ DRIVER_INIT_MEMBER( mbee_state, mbeepc85 )
m_pak->set_entry(5); m_pak->set_entry(5);
m_telcom->set_entry(0); m_telcom->set_entry(0);
m_size = 0x8000; m_size = 0x8000;
m_has_oldkb = 1;
} }
DRIVER_INIT_MEMBER( mbee_state, mbeeppc ) DRIVER_INIT_MEMBER( mbee_state, mbeeppc )
@ -616,6 +613,7 @@ DRIVER_INIT_MEMBER( mbee_state, mbeeppc )
m_telcom->set_entry(0); m_telcom->set_entry(0);
m_basic->set_entry(0); m_basic->set_entry(0);
m_size = 0x8000; m_size = 0x8000;
m_has_oldkb = 1;
} }
DRIVER_INIT_MEMBER( mbee_state, mbee56 ) DRIVER_INIT_MEMBER( mbee_state, mbee56 )
@ -623,6 +621,7 @@ DRIVER_INIT_MEMBER( mbee_state, mbee56 )
UINT8 *RAM = memregion("maincpu")->base(); UINT8 *RAM = memregion("maincpu")->base();
m_boot->configure_entries(0, 2, &RAM[0x0000], 0xe000); m_boot->configure_entries(0, 2, &RAM[0x0000], 0xe000);
m_size = 0xe000; m_size = 0xe000;
m_has_oldkb = 1;
} }
DRIVER_INIT_MEMBER( mbee_state, mbee128 ) DRIVER_INIT_MEMBER( mbee_state, mbee128 )
@ -641,7 +640,11 @@ DRIVER_INIT_MEMBER( mbee_state, mbee128 )
membank(banktag)->configure_entries(0, 32, &RAM[0x0000], 0x1000); // RAM banks membank(banktag)->configure_entries(0, 32, &RAM[0x0000], 0x1000); // RAM banks
membank(banktag)->configure_entries(64, 1, &ROM[0x4000], 0x1000); // dummy rom membank(banktag)->configure_entries(64, 1, &ROM[0x4000], 0x1000); // dummy rom
} }
timer_set(attotime::from_hz(1), TIMER_MBEE_RTC_IRQ); /* timer for rtc */
m_size = 0x8000; m_size = 0x8000;
m_has_oldkb = 1;
} }
DRIVER_INIT_MEMBER( mbee_state, mbee256 ) DRIVER_INIT_MEMBER( mbee_state, mbee256 )
@ -665,6 +668,7 @@ DRIVER_INIT_MEMBER( mbee_state, mbee256 )
timer_set(attotime::from_hz(50), TIMER_MBEE256_KBD); /* timer for kbd */ timer_set(attotime::from_hz(50), TIMER_MBEE256_KBD); /* timer for kbd */
m_size = 0x8000; m_size = 0x8000;
m_has_oldkb = 0;
} }
DRIVER_INIT_MEMBER( mbee_state, mbeett ) DRIVER_INIT_MEMBER( mbee_state, mbeett )
@ -685,6 +689,7 @@ DRIVER_INIT_MEMBER( mbee_state, mbeett )
timer_set(attotime::from_hz(25), TIMER_MBEE256_KBD); /* timer for kbd */ timer_set(attotime::from_hz(25), TIMER_MBEE256_KBD); /* timer for kbd */
m_size = 0x8000; m_size = 0x8000;
m_has_oldkb = 0;
} }

View File

@ -4,24 +4,7 @@
video hardware video hardware
Juergen Buchmueller <pullmoll@t-online.de>, Dec 1999 Juergen Buchmueller <pullmoll@t-online.de>, Dec 1999
Tests of keyboard. Start mbeeic. Rewritten by Robbbert
1. Load ASTEROIDS PLUS, stay in attract mode, hold down spacebar,
it should only fire bullets. If it sometimes starts turning,
thrusting or using the shield, then there is a problem.
2. Load SCAVENGER and make sure it doesn't go to the next level
until you find the Exit.
3. At the Basic prompt, type in EDASM press enter. At the memory size
prompt press enter. Now, make sure the keyboard works properly.
TODO:
1. mbeeppc keyboard response is quite slow. You need to hold each
key until it responds. It works much better if you overclock the cpu.
****************************************************************************/ ****************************************************************************/
@ -214,65 +197,36 @@ WRITE8_MEMBER ( mbee_state::mbeeppc_high_w )
************************************************************/ ************************************************************/
/* The direction keys are used by the pc85 menu. Do not know what uses the "insert" key. */
void mbee_state::keyboard_matrix_r(int offs) void mbee_state::keyboard_matrix_r(int offs)
{ {
UINT8 port = (offs >> 7) & 7; UINT8 port = (offs >> 7) & 7;
UINT8 bit = (offs >> 4) & 7; UINT8 bit = (offs >> 4) & 7;
UINT8 data = 0; UINT8 data = m_io_oldkb[port]->read();
bool keydown = ( data >> bit ) & 1;
switch ( port ) // This adds premium-style cursor keys to the old keyboard
{ // They are used by the pc85 & ppc menu, and the 128k shell.
case 0: data = m_io_x0->read(); break; if (!keydown)
case 1: data = m_io_x1->read(); break;
case 2: data = m_io_x2->read(); break;
case 3: data = m_io_x3->read(); break;
case 4: data = m_io_x4->read(); break;
case 5: data = m_io_x5->read(); break;
case 6: data = m_io_x6->read(); break;
case 7: data = m_io_x7->read(); break;
}
data = ( data >> bit ) & 1;
if ((data | m_is_premium) == 0)
{ {
UINT8 extra = m_io_extra->read(); UINT8 extra = m_io_extra->read();
if( extra & 0x01 ) /* extra: cursor up */ if (extra && port == 7 && bit == 1) keydown = 1; /* Control */
{
if( port == 7 && bit == 1 ) data = 1; /* Control */ if (BIT(extra, 0) && ( port == 0 && bit == 5 )) keydown = 1; // cursor up = ^E
if( port == 0 && bit == 5 ) data = 1; /* E */
}
else else
if( extra & 0x02 ) /* extra: cursor down */ if (BIT(extra, 1) && ( port == 3 && bit == 0 )) keydown = 1; // cursor down = ^X
{
if( port == 7 && bit == 1 ) data = 1; /* Control */
if( port == 3 && bit == 0 ) data = 1; /* X */
}
else else
if( extra & 0x04 ) /* extra: cursor left */ if (BIT(extra, 2) && ( port == 2 && bit == 3 )) keydown = 1; // cursor left = ^S
{
if( port == 7 && bit == 1 ) data = 1; /* Control */
if( port == 2 && bit == 3 ) data = 1; /* S */
}
else else
if( extra & 0x08 ) /* extra: cursor right */ if (BIT(extra, 3) && ( port == 0 && bit == 4 )) keydown = 1; // cursor right = ^D
{
if( port == 7 && bit == 1 ) data = 1; /* Control */
if( port == 0 && bit == 4 ) data = 1; /* D */
}
#if 0 #if 0
// this key doesn't appear on any keyboard afaik // this key doesn't appear on any keyboard afaik. It is a Wordbee function.
else else
if( extra & 0x10 ) /* extra: insert */ if (BIT(extra, 4) && ( port == 2 && bit == 6 )) keydown = 1; // insert = ^V
{
if( port == 7 && bit == 1 ) data = 1; /* Control */
if( port == 2 && bit == 6 ) data = 1; /* V */
}
#endif #endif
} }
if( data ) if( keydown )
{ {
m_sy6545_reg[17] = offs; m_sy6545_reg[17] = offs;
m_sy6545_reg[16] = (offs >> 8) & 0x3f; m_sy6545_reg[16] = (offs >> 8) & 0x3f;
@ -283,8 +237,8 @@ void mbee_state::keyboard_matrix_r(int offs)
void mbee_state::mbee_video_kbd_scan( int param ) void mbee_state::mbee_video_kbd_scan( int param )
{ {
if (m_0b) return; if (m_0b) return; // can't remember why this is here
if (param & 15) return; // only scan once per row instead of 16 times
keyboard_matrix_r(param); keyboard_matrix_r(param);
} }
@ -375,14 +329,14 @@ WRITE8_MEMBER ( mbee_state::m6545_data_w )
************************************************************/ ************************************************************/
VIDEO_START_MEMBER( mbee_state, mbee ) VIDEO_START_MEMBER( mbee_state, mono )
{ {
m_p_videoram = memregion("videoram")->base(); m_p_videoram = memregion("videoram")->base();
m_p_gfxram = memregion("gfx")->base()+0x1000; m_p_gfxram = memregion("gfx")->base()+0x1000;
m_is_premium = 0; m_is_premium = 0;
} }
VIDEO_START_MEMBER( mbee_state, mbeeic ) VIDEO_START_MEMBER( mbee_state, standard )
{ {
m_p_videoram = memregion("videoram")->base(); m_p_videoram = memregion("videoram")->base();
m_p_colorram = memregion("colorram")->base(); m_p_colorram = memregion("colorram")->base();
@ -390,7 +344,7 @@ VIDEO_START_MEMBER( mbee_state, mbeeic )
m_is_premium = 0; m_is_premium = 0;
} }
VIDEO_START_MEMBER( mbee_state, mbeeppc ) VIDEO_START_MEMBER( mbee_state, premium )
{ {
m_p_videoram = memregion("videoram")->base(); m_p_videoram = memregion("videoram")->base();
m_p_colorram = memregion("colorram")->base(); m_p_colorram = memregion("colorram")->base();
@ -407,19 +361,15 @@ UINT32 mbee_state::screen_update_mbee(screen_device &screen, bitmap_rgb32 &bitma
} }
MC6845_ON_UPDATE_ADDR_CHANGED( mbee_state::mbee_update_addr ) MC6845_ON_UPDATE_ADDR_CHANGED( mbee_state::crtc_update_addr )
{ {
/* not sure what goes in here - parameters passed are device, address, strobe */ // not sure what goes in here - parameters passed are device, address, strobe
} // not used on 256TC
MC6845_ON_UPDATE_ADDR_CHANGED( mbee_state::mbee256_update_addr )
{
/* not used on 256TC */
} }
/* monochrome bee */ /* monochrome bee */
MC6845_UPDATE_ROW( mbee_state::mbee_update_row ) MC6845_UPDATE_ROW( mbee_state::mono_update_row )
{ {
const rgb_t *palette = m_palette->palette()->entry_list_raw(); const rgb_t *palette = m_palette->palette()->entry_list_raw();
UINT8 chr,gfx; UINT8 chr,gfx;
@ -453,64 +403,27 @@ MC6845_UPDATE_ROW( mbee_state::mbee_update_row )
} }
} }
/* prom-based colours */ /* colour bee */
MC6845_UPDATE_ROW( mbee_state::mbeeic_update_row ) MC6845_UPDATE_ROW( mbee_state::colour_update_row )
{ {
const rgb_t *palette = m_palette->palette()->entry_list_raw(); const rgb_t *palette = m_palette->palette()->entry_list_raw();
UINT8 chr,gfx,fg,bg; UINT8 inv,attr,gfx,fg,bg;
UINT16 mem,x,col; UINT16 mem,x,col,chr;
UINT16 colourm = (m_08 & 0x0e) << 7; UINT16 colourm = (m_08 & 0x0e) << 7;
UINT32 *p = &bitmap.pix32(y); UINT32 *p = &bitmap.pix32(y);
for (x = 0; x < x_count; x++) // for each character for (x = 0; x < x_count; x++) // for each character
{ {
UINT8 inv=0; inv = 0;
mem = (ma + x) & 0x7ff;
chr = m_p_videoram[mem];
col = m_p_colorram[mem] | colourm; // read a byte of colour
mbee_video_kbd_scan(x+ma);
/* process cursor */
if (x == cursor_x)
inv ^= m_sy6545_cursor[ra]; // cursor scan row
/* get pattern of pixels for that character scanline */
gfx = m_p_gfxram[(chr<<4) | ra] ^ inv;
fg = (col & 0x001f) | 64; // map to foreground palette
bg = (col & 0x07e0) >> 5; // and background palette
/* Display a scanline of a character (8 pixels) */
*p++ = palette[BIT(gfx, 7) ? fg : bg];
*p++ = palette[BIT(gfx, 6) ? fg : bg];
*p++ = palette[BIT(gfx, 5) ? fg : bg];
*p++ = palette[BIT(gfx, 4) ? fg : bg];
*p++ = palette[BIT(gfx, 3) ? fg : bg];
*p++ = palette[BIT(gfx, 2) ? fg : bg];
*p++ = palette[BIT(gfx, 1) ? fg : bg];
*p++ = palette[BIT(gfx, 0) ? fg : bg];
}
}
/* new colours & hires2 */
MC6845_UPDATE_ROW( mbee_state::mbeeppc_update_row )
{
const rgb_t *palette = m_palette->palette()->entry_list_raw();
UINT8 gfx,fg,bg;
UINT16 mem,x,col,chr;
UINT32 *p = &bitmap.pix32(y);
for (x = 0; x < x_count; x++) // for each character
{
UINT8 inv=0;
mem = (ma + x) & 0x7ff; mem = (ma + x) & 0x7ff;
chr = m_p_videoram[mem]; chr = m_p_videoram[mem];
col = m_p_colorram[mem]; // read a byte of colour col = m_p_colorram[mem]; // read a byte of colour
if (m_is_premium)
{
if (m_1c & 0x80) // are extended features enabled? if (m_1c & 0x80) // are extended features enabled?
{ {
UINT8 attr = m_p_attribram[mem]; attr = m_p_attribram[mem];
if (chr & 0x80) if (chr & 0x80)
chr += ((attr & 15) << 7); // bump chr to its particular pcg definition chr += ((attr & 15) << 7); // bump chr to its particular pcg definition
@ -521,7 +434,11 @@ MC6845_UPDATE_ROW( mbee_state::mbeeppc_update_row )
if ((attr & 0x80) && (m_framecnt & 0x10)) // flashing attribute if ((attr & 0x80) && (m_framecnt & 0x10)) // flashing attribute
chr = 0x20; chr = 0x20;
} }
}
else
col |= colourm;
if (m_has_oldkb)
mbee_video_kbd_scan(x+ma); mbee_video_kbd_scan(x+ma);
/* process cursor */ /* process cursor */
@ -530,8 +447,18 @@ MC6845_UPDATE_ROW( mbee_state::mbeeppc_update_row )
/* get pattern of pixels for that character scanline */ /* get pattern of pixels for that character scanline */
gfx = m_p_gfxram[(chr<<4) | ra] ^ inv; gfx = m_p_gfxram[(chr<<4) | ra] ^ inv;
fg = col & 15; // map to foreground palette
bg = (col & 0xf0) >> 4; // and background palette // get colours
if (m_is_premium)
{
fg = col & 15;
bg = (col & 0xf0) >> 4;
}
else
{
fg = (col & 0x001f) | 64;
bg = (col & 0x07e0) >> 5;
}
/* Display a scanline of a character (8 pixels) */ /* Display a scanline of a character (8 pixels) */
*p++ = palette[BIT(gfx, 7) ? fg : bg]; *p++ = palette[BIT(gfx, 7) ? fg : bg];
@ -552,7 +479,7 @@ MC6845_UPDATE_ROW( mbee_state::mbeeppc_update_row )
************************************************************/ ************************************************************/
PALETTE_INIT_MEMBER( mbee_state, mbeeic ) PALETTE_INIT_MEMBER( mbee_state, standard )
{ {
const UINT8 *color_prom = memregion("proms")->base(); const UINT8 *color_prom = memregion("proms")->base();
UINT16 i; UINT16 i;
@ -610,7 +537,7 @@ PALETTE_INIT_MEMBER( mbee_state, mbeepc85b )
} }
PALETTE_INIT_MEMBER( mbee_state, mbeeppc ) PALETTE_INIT_MEMBER( mbee_state, premium )
{ {
UINT16 i; UINT16 i;
UINT8 r, b, g; UINT8 r, b, g;