mirror of
https://github.com/holub/mame
synced 2025-05-28 16:43:04 +03:00
(MESS) replaced mbee64 with mbee128p. Added various notes. (nw)
This commit is contained in:
parent
e29a3aee40
commit
034c980daf
@ -55,11 +55,21 @@
|
||||
F000-F7FF Video RAM
|
||||
F800-FFFF PCG RAM (graphics), Colour RAM (banked)
|
||||
|
||||
Early machines have 'standard' video (128 hires characters).
|
||||
Later machines had the option of 'premium' video which
|
||||
provides thousands of hires characters, enough to simulate
|
||||
bit-mapped graphics.
|
||||
|
||||
Commands to call up built-in roms (depends on the model):
|
||||
NET - Jump to E000, usually the Telcom communications program.
|
||||
This rom can be replaced with the Dreamdisk Chip-8 rom.
|
||||
Note that Telcom 3.21 is 8k, it uses a rombank switch
|
||||
(by reading port 0A) to swap between the two halves.
|
||||
Most parts of NET can be called up from Basic, e.g.
|
||||
NET CLOCK will turn on the clock, NET CLOCKD will remove
|
||||
the resultant status bar, NET TIME hhmm to set the time, etc.
|
||||
Further, after doing a NET command, the 80x24 mode becomes
|
||||
available to Basic. OUT#7 to turn it on, OUT#0 for 64x16.
|
||||
|
||||
EDASM - Jump to C000, usually the editor/Assembler package.
|
||||
|
||||
@ -100,10 +110,16 @@
|
||||
crashes due to a bug in z80pio emulation.
|
||||
|
||||
- 256tc: Keyboard ROM U60 needs to be dumped.
|
||||
- 128k: PROM PAL needs to be dumped for the bankswitching.
|
||||
- 128k: GOLD PAL needs to be dumped for the bankswitching.
|
||||
- 64k: RED PAL needs to be dumped for the bankswitching.
|
||||
|
||||
- Teleterm: keyboard is problematic, and cursor doesn't show.
|
||||
- Teleterm: keyboard is problematic, and cursor doesn't show. Also, the
|
||||
schematic shows it using the old-style keyboard, however this
|
||||
must be wrong since the computer has function keys, which are
|
||||
only available on the new keyboard.
|
||||
|
||||
- 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.
|
||||
|
||||
***************************************************************************
|
||||
|
||||
@ -190,14 +206,6 @@ static ADDRESS_MAP_START(mbee56_mem, AS_PROGRAM, 8, mbee_state)
|
||||
AM_RANGE(0xf800, 0xffff) AM_READWRITE(mbeeic_high_r, mbeeic_high_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START(mbee64_mem, AS_PROGRAM, 8, mbee_state)
|
||||
AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("boot")
|
||||
AM_RANGE(0x1000, 0x7fff) AM_RAMBANK("bankl")
|
||||
AM_RANGE(0x8000, 0xefff) AM_RAMBANK("bankh")
|
||||
AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(mbee_low_r, mbee_low_w)
|
||||
AM_RANGE(0xf800, 0xffff) AM_READWRITE(mbeeic_high_r, mbeeic_high_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START(mbee256_mem, AS_PROGRAM, 8, mbee_state)
|
||||
AM_RANGE(0x0000, 0x0fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
|
||||
AM_RANGE(0x1000, 0x1fff) AM_READ_BANK("bankr1") AM_WRITE_BANK("bankw1")
|
||||
@ -295,19 +303,6 @@ static ADDRESS_MAP_START(mbee56_io, AS_IO, 8, mbee_state)
|
||||
AM_RANGE(0x48, 0x4f) AM_READWRITE(mbee_fdc_status_r, mbee_fdc_motor_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START(mbee64_io, AS_IO, 8, mbee_state)
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x00, 0x03) AM_MIRROR(0x10) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt)
|
||||
AM_RANGE(0x08, 0x08) AM_MIRROR(0x10) AM_READWRITE(mbeeic_08_r, mbeeic_08_w)
|
||||
AM_RANGE(0x0b, 0x0b) AM_MIRROR(0x10) AM_READWRITE(mbee_0b_r, mbee_0b_w)
|
||||
AM_RANGE(0x0c, 0x0c) AM_MIRROR(0x10) AM_READWRITE(m6545_status_r, m6545_index_w)
|
||||
AM_RANGE(0x0d, 0x0d) AM_MIRROR(0x10) AM_READWRITE(m6545_data_r, m6545_data_w)
|
||||
AM_RANGE(0x44, 0x47) AM_DEVREADWRITE("fdc", wd2793_t, read, write)
|
||||
AM_RANGE(0x48, 0x4f) AM_READWRITE(mbee_fdc_status_r, mbee_fdc_motor_w)
|
||||
AM_RANGE(0x50, 0x57) AM_WRITE(mbee64_50_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START(mbee128_io, AS_IO, 8, mbee_state)
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
@ -780,14 +775,7 @@ static MACHINE_CONFIG_DERIVED( mbee56, mbeeic )
|
||||
MCFG_FLOPPY_DRIVE_ADD("fdc:1", mbee_floppies, "drive5b", floppy_image_device::default_floppy_formats)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( mbee64, mbee56 )
|
||||
MCFG_CPU_MODIFY( "maincpu" )
|
||||
MCFG_CPU_PROGRAM_MAP(mbee64_mem)
|
||||
MCFG_CPU_IO_MAP(mbee64_io)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee64)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( mbee128, mbeeppc )
|
||||
static MACHINE_CONFIG_DERIVED( mbee128p, mbeeppc )
|
||||
MCFG_CPU_MODIFY( "maincpu" )
|
||||
MCFG_CPU_PROGRAM_MAP(mbee256_mem)
|
||||
MCFG_CPU_IO_MAP(mbee128_io)
|
||||
@ -799,7 +787,11 @@ static MACHINE_CONFIG_DERIVED( mbee128, mbeeppc )
|
||||
MCFG_FLOPPY_DRIVE_ADD("fdc:1", mbee_floppies, "drive5b", floppy_image_device::default_floppy_formats)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( mbee256, mbee128 )
|
||||
static MACHINE_CONFIG_DERIVED( mbee128, mbee128p )
|
||||
MCFG_VIDEO_START_OVERRIDE(mbee_state,mbeeic)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( mbee256, mbee128p )
|
||||
MCFG_CPU_MODIFY( "maincpu" )
|
||||
MCFG_CPU_PROGRAM_MAP(mbee256_mem)
|
||||
MCFG_CPU_IO_MAP(mbee256_io)
|
||||
@ -1084,16 +1076,19 @@ ROM_START( mbee56 )
|
||||
ROM_REGION( 0x0800, "colorram", ROMREGION_ERASE00 )
|
||||
ROM_END
|
||||
|
||||
ROM_START( mbee64 ) // CIAB (Computer-In-A-Book)
|
||||
ROM_REGION(0x10000,"maincpu", ROMREGION_ERASEFF)
|
||||
ROM_START( mbee128 ) // Standard 128k (CIAB is the same thing with half the ram)
|
||||
ROM_REGION(0x10000, "rams", ROMREGION_ERASEFF)
|
||||
|
||||
ROM_REGION(0x7000,"bootrom", ROMREGION_ERASEFF)
|
||||
ROM_REGION(0x7000, "roms", ROMREGION_ERASEFF)
|
||||
ROM_LOAD("bn54.bin", 0x0000, 0x2000, CRC(995c53db) SHA1(46e1a5cfd5795b8cf528bacf9dc79398ff7d64af) )
|
||||
|
||||
ROM_REGION(0x2000, "gfx", 0)
|
||||
ROM_LOAD("charrom.bin", 0x1000, 0x1000, CRC(1f9fcee4) SHA1(e57ac94e03638075dde68a0a8c834a4f84ba47b0) )
|
||||
ROM_RELOAD( 0x0000, 0x1000 )
|
||||
|
||||
ROM_REGION(0x4000, "pals", 0) // undumped; using prom from 256tc for now
|
||||
ROM_LOAD( "silver.u39", 0x0000, 0x4000, BAD_DUMP CRC(c34aab64) SHA1(781fe648488dec90185760f8e081e488b73b68bf) )
|
||||
|
||||
ROM_REGION( 0x0040, "proms", 0 )
|
||||
ROM_LOAD( "82s123.ic7", 0x0000, 0x0020, CRC(61b9c16c) SHA1(0ee72377831c21339360c376f7248861d476dc20) )
|
||||
ROM_LOAD_OPTIONAL( "82s123.ic16", 0x0020, 0x0020, CRC(4e779985) SHA1(cd2579cf65032c30b3fe7d6d07b89d4633687481) ) /* video switching prom, not needed for emulation purposes */
|
||||
@ -1102,16 +1097,16 @@ ROM_START( mbee64 ) // CIAB (Computer-In-A-Book)
|
||||
ROM_REGION( 0x0800, "colorram", ROMREGION_ERASE00 )
|
||||
ROM_END
|
||||
|
||||
ROM_START( mbee128 ) // 128K
|
||||
ROM_START( mbee128p ) // Premium 128K
|
||||
ROM_REGION(0x20000, "rams", ROMREGION_ERASEFF)
|
||||
|
||||
ROM_REGION(0x8000, "roms", 0) // rom plus optional undumped roms plus dummy area
|
||||
ROM_SYSTEM_BIOS( 0, "bn60", "Version 2.03" )
|
||||
ROMX_LOAD("bn60.rom", 0x0000, 0x2000, CRC(ed15d4ee) SHA1(3ea42b63d42b9a4c5402676dee8912ad1f906bda), ROM_BIOS(1) )
|
||||
ROM_SYSTEM_BIOS( 0, "bn56", "bn56" )
|
||||
ROMX_LOAD("bn56.rom", 0x0000, 0x2000, CRC(3f76769d) SHA1(cfae2069d739c26fe39f734d9f705a3c965d1e6f), ROM_BIOS(1) )
|
||||
ROM_SYSTEM_BIOS( 1, "bn59", "Version 2.02" )
|
||||
ROMX_LOAD("bn59.rom", 0x0000, 0x2000, CRC(97384116) SHA1(87f2c4ab1a1f2964ba4f2bb60e62dc9c163831ba), ROM_BIOS(2) )
|
||||
ROM_SYSTEM_BIOS( 2, "bn56", "bn56" )
|
||||
ROMX_LOAD("bn56.rom", 0x0000, 0x2000, CRC(3f76769d) SHA1(cfae2069d739c26fe39f734d9f705a3c965d1e6f), ROM_BIOS(3) )
|
||||
ROM_SYSTEM_BIOS( 2, "bn60", "Version 2.03" )
|
||||
ROMX_LOAD("bn60.rom", 0x0000, 0x2000, CRC(ed15d4ee) SHA1(3ea42b63d42b9a4c5402676dee8912ad1f906bda), ROM_BIOS(3) )
|
||||
ROM_SYSTEM_BIOS( 3, "bn55", "bn55" )
|
||||
ROMX_LOAD("bn55.rom", 0x0000, 0x2000, CRC(ca2c1073) SHA1(355d90d181de899cc7af892df96305fead9c81b4), ROM_BIOS(4) )
|
||||
ROM_SYSTEM_BIOS( 4, "bn54", "bn54" )
|
||||
@ -1119,7 +1114,7 @@ ROM_START( mbee128 ) // 128K
|
||||
ROM_SYSTEM_BIOS( 5, "hd18", "Hard Disk System" )
|
||||
ROMX_LOAD("hd18.rom", 0x0000, 0x2000, CRC(ed53ace7) SHA1(534e2e00cc527197c76b3c106b3c9ff7f1328487), ROM_BIOS(6) )
|
||||
|
||||
ROM_REGION(0x4000, "proms", 0) // undumped; using prom from 256tc for now
|
||||
ROM_REGION(0x4000, "pals", 0) // undumped; using prom from 256tc for now
|
||||
ROM_LOAD( "silver.u39", 0x0000, 0x4000, BAD_DUMP CRC(c34aab64) SHA1(781fe648488dec90185760f8e081e488b73b68bf) )
|
||||
|
||||
ROM_REGION(0x9800, "gfx", 0)
|
||||
@ -1140,7 +1135,7 @@ ROM_START( mbee256 ) // 256tc
|
||||
ROM_SYSTEM_BIOS( 1, "1.15", "Version 1.15" )
|
||||
ROMX_LOAD("256tc_boot_1.15.u38", 0x0000, 0x4000, CRC(1902062d) SHA1(e4a1c0b3f4996e313da0bac0edb6d34e3270723e), ROM_BIOS(2) )
|
||||
|
||||
ROM_REGION(0x4000, "proms", 0)
|
||||
ROM_REGION(0x4000, "pals", 0)
|
||||
ROM_LOAD( "silver.u39", 0x0000, 0x4000, CRC(c34aab64) SHA1(781fe648488dec90185760f8e081e488b73b68bf) )
|
||||
|
||||
ROM_REGION(0x9800, "gfx", 0)
|
||||
@ -1169,6 +1164,6 @@ COMP( 1985, mbeepc85s,mbee, 0, mbeepc85, mbee, mbee_state, mbeepc8
|
||||
COMP( 1986, mbeeppc, mbee, 0, mbeeppc, mbee, mbee_state, mbeeppc, "Applied Technology", "Microbee Premium PC85" , 0 )
|
||||
COMP( 1986, mbeett, mbee, 0, mbeett, mbee256, mbee_state, mbeett, "Applied Technology", "Microbee Teleterm" , GAME_NOT_WORKING )
|
||||
COMP( 1986, mbee56, mbee, 0, mbee56, mbee, mbee_state, mbee56, "Applied Technology", "Microbee 56k" , GAME_NOT_WORKING )
|
||||
COMP( 1986, mbee64, mbee, 0, mbee64, mbee, mbee_state, mbee64, "Applied Technology", "Microbee 64k" , GAME_NOT_WORKING )
|
||||
COMP( 1986, mbee128, mbee, 0, mbee128, mbee, mbee_state, mbee128, "Applied Technology", "Microbee 128k" , GAME_NOT_WORKING )
|
||||
COMP( 1986, mbee128, mbee, 0, mbee128, mbee, mbee_state, mbee128, "Applied Technology", "Microbee 128k Standard" , GAME_NOT_WORKING )
|
||||
COMP( 1986, mbee128p, mbee, 0, mbee128p, mbee, mbee_state, mbee128, "Applied Technology", "Microbee 128k Premium" , GAME_NOT_WORKING )
|
||||
COMP( 1987, mbee256, mbee, 0, mbee256, mbee256, mbee_state, mbee256, "Applied Technology", "Microbee 256TC" , GAME_NOT_WORKING )
|
||||
|
@ -52,14 +52,6 @@ public:
|
||||
, m_pak(*this, "pak")
|
||||
, m_telcom(*this, "telcom")
|
||||
, m_basic(*this, "basic")
|
||||
, m_bankl(*this, "bankl")
|
||||
, m_bankh(*this, "bankh")
|
||||
, m_bank1(*this, "bank1")
|
||||
, m_bank8l(*this, "bank8l")
|
||||
, m_bank8h(*this, "bank8h")
|
||||
, m_bank9(*this, "bank9")
|
||||
, m_bankfl(*this, "bankfl")
|
||||
, m_bankfh(*this, "bankfh")
|
||||
, m_io_x0(*this, "X0")
|
||||
, m_io_x1(*this, "X1")
|
||||
, m_io_x2(*this, "X2")
|
||||
@ -129,7 +121,6 @@ public:
|
||||
DECLARE_DRIVER_INIT(mbeepc);
|
||||
DECLARE_DRIVER_INIT(mbeeic);
|
||||
DECLARE_DRIVER_INIT(mbee128);
|
||||
DECLARE_DRIVER_INIT(mbee64);
|
||||
DECLARE_MACHINE_RESET(mbee);
|
||||
DECLARE_VIDEO_START(mbee);
|
||||
DECLARE_VIDEO_START(mbeeic);
|
||||
@ -138,7 +129,6 @@ public:
|
||||
DECLARE_VIDEO_START(mbeeppc);
|
||||
DECLARE_PALETTE_INIT(mbeeppc);
|
||||
DECLARE_MACHINE_RESET(mbee56);
|
||||
DECLARE_MACHINE_RESET(mbee64);
|
||||
DECLARE_MACHINE_RESET(mbee128);
|
||||
DECLARE_MACHINE_RESET(mbee256);
|
||||
DECLARE_MACHINE_RESET(mbeett);
|
||||
@ -147,8 +137,8 @@ public:
|
||||
TIMER_CALLBACK_MEMBER(mbee256_kbd);
|
||||
TIMER_CALLBACK_MEMBER(mbee_rtc_irq);
|
||||
TIMER_CALLBACK_MEMBER(mbee_reset);
|
||||
DECLARE_QUICKLOAD_LOAD_MEMBER( mbee );
|
||||
DECLARE_QUICKLOAD_LOAD_MEMBER( mbee_z80bin );
|
||||
DECLARE_QUICKLOAD_LOAD_MEMBER(mbee);
|
||||
DECLARE_QUICKLOAD_LOAD_MEMBER(mbee_z80bin);
|
||||
WRITE_LINE_MEMBER(fdc_intrq_w);
|
||||
WRITE_LINE_MEMBER(fdc_drq_w);
|
||||
UINT8 *m_p_videoram;
|
||||
@ -169,6 +159,7 @@ public:
|
||||
|
||||
required_device<palette_device> m_palette;
|
||||
private:
|
||||
bool m_is_premium;
|
||||
size_t m_size;
|
||||
UINT8 m_clock_pulse;
|
||||
UINT8 m_mbee256_key_available;
|
||||
@ -177,13 +168,12 @@ private:
|
||||
UINT8 m_mbee256_q_pos;
|
||||
UINT8 m_0a;
|
||||
UINT8 m_0b;
|
||||
UINT8 m_is_premium;
|
||||
UINT8 m_sy6545_status;
|
||||
UINT8 m_sy6545_reg[32];
|
||||
UINT8 m_sy6545_ind;
|
||||
UINT8 m_fdc_rq;
|
||||
UINT8 m_bank_array[33];
|
||||
void mbee256_setup_banks(UINT8 data, bool first_time);
|
||||
void setup_banks(UINT8 data, bool first_time, UINT8 b_mask);
|
||||
void sy6545_cursor_configure();
|
||||
void keyboard_matrix_r(int offs);
|
||||
void machine_reset_common_disk();
|
||||
@ -204,14 +194,6 @@ private:
|
||||
optional_memory_bank m_pak;
|
||||
optional_memory_bank m_telcom;
|
||||
optional_memory_bank m_basic;
|
||||
optional_memory_bank m_bankl;
|
||||
optional_memory_bank m_bankh;
|
||||
optional_memory_bank m_bank1;
|
||||
optional_memory_bank m_bank8l;
|
||||
optional_memory_bank m_bank8h;
|
||||
optional_memory_bank m_bank9;
|
||||
optional_memory_bank m_bankfl;
|
||||
optional_memory_bank m_bankfh;
|
||||
required_ioport m_io_x0;
|
||||
required_ioport m_io_x1;
|
||||
required_ioport m_io_x2;
|
||||
|
@ -272,13 +272,15 @@ TIMER_CALLBACK_MEMBER(mbee_state::mbee_rtc_irq)
|
||||
and (output = 22,21,20,19,18,17,16,15). The prom is also used to control
|
||||
the refresh required by the dynamic rams, however we ignore this function.
|
||||
|
||||
b_mask = total dynamic ram (1=64k; 3=128k; 7=256k)
|
||||
|
||||
************************************************************/
|
||||
|
||||
void mbee_state::mbee256_setup_banks(UINT8 data, bool first_time)
|
||||
void mbee_state::setup_banks(UINT8 data, bool first_time, UINT8 b_mask)
|
||||
{
|
||||
// (bits 0-5 are referred to as S0-S5)
|
||||
data &= 0x3f; // (bits 0-5 are referred to as S0-S5)
|
||||
address_space &mem = m_maincpu->space(AS_PROGRAM);
|
||||
UINT8 *prom = memregion("proms")->base();
|
||||
UINT8 *prom = memregion("pals")->base();
|
||||
UINT8 b_data = BITSWAP8(data, 7,5,3,2,4,6,1,0) & 0x3b; // arrange data bits to S0,S1,-,S4,S2,S3
|
||||
UINT8 b_bank, b_byte, b_byte_t, b_addr, p_bank = 1;
|
||||
UINT16 b_vid;
|
||||
@ -309,8 +311,16 @@ void mbee_state::mbee256_setup_banks(UINT8 data, bool first_time)
|
||||
if (!BIT(b_byte, 4))
|
||||
{
|
||||
// select video
|
||||
mem.install_read_handler (b_vid, b_vid + 0x7ff, read8_delegate(FUNC(mbee_state::mbeeppc_low_r), this));
|
||||
mem.install_read_handler (b_vid + 0x800, b_vid + 0xfff, read8_delegate(FUNC(mbee_state::mbeeppc_high_r), this));
|
||||
if (m_is_premium)
|
||||
{
|
||||
mem.install_read_handler (b_vid, b_vid + 0x7ff, read8_delegate(FUNC(mbee_state::mbeeppc_low_r), this));
|
||||
mem.install_read_handler (b_vid + 0x800, b_vid + 0xfff, read8_delegate(FUNC(mbee_state::mbeeppc_high_r), this));
|
||||
}
|
||||
else
|
||||
{
|
||||
mem.install_read_handler (b_vid, b_vid + 0x7ff, read8_delegate(FUNC(mbee_state::mbee_low_r), this));
|
||||
mem.install_read_handler (b_vid + 0x800, b_vid + 0xfff, read8_delegate(FUNC(mbee_state::mbeeic_high_r), this));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -320,7 +330,7 @@ void mbee_state::mbee256_setup_banks(UINT8 data, bool first_time)
|
||||
if (!BIT(b_byte, 3))
|
||||
membank(banktag)->set_entry(64 + (b_bank & 3)); // read from rom
|
||||
else
|
||||
membank(banktag)->set_entry((b_bank & 7) | ((b_byte & 7) << 3)); // ram
|
||||
membank(banktag)->set_entry((b_bank & 7) | ((b_byte & b_mask) << 3)); // ram
|
||||
}
|
||||
}
|
||||
p_bank++;
|
||||
@ -341,8 +351,16 @@ void mbee_state::mbee256_setup_banks(UINT8 data, bool first_time)
|
||||
if (!BIT(b_byte, 4))
|
||||
{
|
||||
// select video
|
||||
mem.install_write_handler (b_vid, b_vid + 0x7ff, write8_delegate(FUNC(mbee_state::mbeeppc_low_w), this));
|
||||
mem.install_write_handler (b_vid + 0x800, b_vid + 0xfff, write8_delegate(FUNC(mbee_state::mbeeppc_high_w), this));
|
||||
if (m_is_premium)
|
||||
{
|
||||
mem.install_write_handler (b_vid, b_vid + 0x7ff, write8_delegate(FUNC(mbee_state::mbeeppc_low_w), this));
|
||||
mem.install_write_handler (b_vid + 0x800, b_vid + 0xfff, write8_delegate(FUNC(mbee_state::mbeeppc_high_w), this));
|
||||
}
|
||||
else
|
||||
{
|
||||
mem.install_write_handler (b_vid, b_vid + 0x7ff, write8_delegate(FUNC(mbee_state::mbee_low_w), this));
|
||||
mem.install_write_handler (b_vid + 0x800, b_vid + 0xfff, write8_delegate(FUNC(mbee_state::mbeeic_high_w), this));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -352,7 +370,7 @@ void mbee_state::mbee256_setup_banks(UINT8 data, bool first_time)
|
||||
if (!BIT(b_byte, 3))
|
||||
membank(banktag)->set_entry(64); // write to rom dummy area
|
||||
else
|
||||
membank(banktag)->set_entry((b_bank & 7) | ((b_byte & 7) << 3)); // ram
|
||||
membank(banktag)->set_entry((b_bank & 7) | ((b_byte & b_mask) << 3)); // ram
|
||||
}
|
||||
}
|
||||
p_bank++;
|
||||
@ -362,7 +380,7 @@ void mbee_state::mbee256_setup_banks(UINT8 data, bool first_time)
|
||||
|
||||
WRITE8_MEMBER( mbee_state::mbee256_50_w )
|
||||
{
|
||||
mbee256_setup_banks(data & 0x3f, 0);
|
||||
setup_banks(data, 0, 7);
|
||||
}
|
||||
|
||||
/***********************************************************
|
||||
@ -380,37 +398,9 @@ WRITE8_MEMBER( mbee_state::mbee256_50_w )
|
||||
|
||||
WRITE8_MEMBER( mbee_state::mbee128_50_w )
|
||||
{
|
||||
mbee256_setup_banks(data & 0x1f, 0); // S5 not used
|
||||
setup_banks(data, 0, 3);
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************
|
||||
|
||||
64k Memory Banking
|
||||
|
||||
Bit 2 disables ROM, replacing it with RAM.
|
||||
|
||||
Due to lack of documentation, it is not possible to know
|
||||
if other bits are used.
|
||||
|
||||
************************************************************/
|
||||
|
||||
WRITE8_MEMBER( mbee_state::mbee64_50_w )
|
||||
{
|
||||
if BIT(data, 2)
|
||||
{
|
||||
m_boot->set_entry(0);
|
||||
m_bankl->set_entry(0);
|
||||
m_bankh->set_entry(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_bankl->set_entry(1);
|
||||
m_bankh->set_entry(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************
|
||||
|
||||
ROM Banking on older models
|
||||
@ -489,18 +479,10 @@ MACHINE_RESET_MEMBER( mbee_state, mbee56 )
|
||||
timer_set(attotime::from_usec(4), TIMER_MBEE_RESET);
|
||||
}
|
||||
|
||||
MACHINE_RESET_MEMBER( mbee_state, mbee64 )
|
||||
{
|
||||
machine_reset_common_disk();
|
||||
m_boot->set_entry(1);
|
||||
m_bankl->set_entry(1);
|
||||
m_bankh->set_entry(1);
|
||||
}
|
||||
|
||||
MACHINE_RESET_MEMBER( mbee_state, mbee128 )
|
||||
{
|
||||
machine_reset_common_disk();
|
||||
mbee256_setup_banks(0, 1); // set banks to default
|
||||
setup_banks(0, 1, 3); // set banks to default
|
||||
m_maincpu->set_pc(0x8000);
|
||||
}
|
||||
|
||||
@ -510,7 +492,7 @@ MACHINE_RESET_MEMBER( mbee_state, mbee256 )
|
||||
for (i = 0; i < 15; i++) m_mbee256_was_pressed[i] = 0;
|
||||
m_mbee256_q_pos = 0;
|
||||
machine_reset_common_disk();
|
||||
mbee256_setup_banks(0, 1); // set banks to default
|
||||
setup_banks(0, 1, 7); // set banks to default
|
||||
m_maincpu->set_pc(0x8000);
|
||||
}
|
||||
|
||||
@ -625,21 +607,6 @@ DRIVER_INIT_MEMBER( mbee_state, mbee56 )
|
||||
m_size = 0xe000;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER( mbee_state, mbee64 )
|
||||
{
|
||||
UINT8 *RAM = memregion("maincpu")->base();
|
||||
m_boot->configure_entry(0, &RAM[0x0000]);
|
||||
m_bankl->configure_entry(0, &RAM[0x1000]);
|
||||
m_bankl->configure_entry(1, &RAM[0x9000]);
|
||||
m_bankh->configure_entry(0, &RAM[0x8000]);
|
||||
|
||||
RAM = memregion("bootrom")->base();
|
||||
m_bankh->configure_entry(1, &RAM[0x0000]);
|
||||
m_boot->configure_entry(1, &RAM[0x0000]);
|
||||
|
||||
m_size = 0xf000;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER( mbee_state, mbee128 )
|
||||
{
|
||||
UINT8 *RAM = memregion("rams")->base();
|
||||
@ -656,8 +623,7 @@ DRIVER_INIT_MEMBER( mbee_state, mbee128 )
|
||||
membank(banktag)->configure_entries(0, 32, &RAM[0x0000], 0x1000); // RAM banks
|
||||
membank(banktag)->configure_entries(64, 1, &ROM[0x4000], 0x1000); // dummy rom
|
||||
}
|
||||
|
||||
m_size = 0x8000;
|
||||
m_size = 0xf000;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER( mbee_state, mbee256 )
|
||||
|
@ -1216,8 +1216,8 @@ mbeepc85s // Microbee 32 PC85 (Swedish)
|
||||
mbeeppc // Microbee 32 PPC85
|
||||
mbeett // Microbee Teleterm
|
||||
mbee56 // Microbee 56K (CP/M)
|
||||
mbee64 // Microbee 64K (CP/M)
|
||||
mbee128 // Microbee 128K (CP/M)
|
||||
mbee128 // Microbee 128K standard (CP/M)
|
||||
mbee128p // Microbee 128K premium (CP/M)
|
||||
mbee256 // Microbee 256TC (CP/M)
|
||||
|
||||
// Tandy / Radio Shack
|
||||
|
@ -346,8 +346,8 @@ WRITE8_MEMBER ( mbee_state::m6545_data_w )
|
||||
memcpy(m_p_gfxram, memregion("gfx")->base() + (((data & 0x30) == 0x20) << 11), 0x800);
|
||||
break;
|
||||
case 31:
|
||||
/* This firstly pushes the contents of the transparent registers onto the MA lines,
|
||||
then increments the address, then sets update strobe on. */
|
||||
/* This firstly pushes the contents of the transparent registers onto the MA lines,
|
||||
then increments the address, then sets update strobe on. */
|
||||
addr = (m_sy6545_reg[18] << 8) | m_sy6545_reg[19];
|
||||
keyboard_matrix_r(addr);
|
||||
m_sy6545_reg[19]++;
|
||||
|
Loading…
Reference in New Issue
Block a user