mirror of
https://github.com/mamedev/mame.git
synced 2024-11-16 07:48:32 +01:00
New skeleton: Micral 80-22G [Robbbert]
This commit is contained in:
parent
fee651e0dd
commit
06e3257c6e
3 changed files with 295 additions and 1 deletions
|
@ -2684,6 +2684,7 @@ files {
|
||||||
MAME_DIR .. "src/mame/drivers/mccpm.c",
|
MAME_DIR .. "src/mame/drivers/mccpm.c",
|
||||||
MAME_DIR .. "src/mame/drivers/mes.c",
|
MAME_DIR .. "src/mame/drivers/mes.c",
|
||||||
MAME_DIR .. "src/mame/drivers/mice.c",
|
MAME_DIR .. "src/mame/drivers/mice.c",
|
||||||
|
MAME_DIR .. "src/mame/drivers/micral.c",
|
||||||
MAME_DIR .. "src/mame/drivers/micronic.c",
|
MAME_DIR .. "src/mame/drivers/micronic.c",
|
||||||
MAME_DIR .. "src/mame/drivers/mini2440.c",
|
MAME_DIR .. "src/mame/drivers/mini2440.c",
|
||||||
MAME_DIR .. "src/mame/drivers/mmd1.c",
|
MAME_DIR .. "src/mame/drivers/mmd1.c",
|
||||||
|
@ -2721,6 +2722,7 @@ files {
|
||||||
MAME_DIR .. "src/mame/drivers/seattlecmp.c",
|
MAME_DIR .. "src/mame/drivers/seattlecmp.c",
|
||||||
MAME_DIR .. "src/mame/drivers/sh4robot.c",
|
MAME_DIR .. "src/mame/drivers/sh4robot.c",
|
||||||
MAME_DIR .. "src/mame/drivers/softbox.c",
|
MAME_DIR .. "src/mame/drivers/softbox.c",
|
||||||
|
MAME_DIR .. "src/mame/drivers/squale.c",
|
||||||
MAME_DIR .. "src/mame/drivers/swtpc.c",
|
MAME_DIR .. "src/mame/drivers/swtpc.c",
|
||||||
MAME_DIR .. "src/mame/drivers/sys2900.c",
|
MAME_DIR .. "src/mame/drivers/sys2900.c",
|
||||||
MAME_DIR .. "src/mame/drivers/systec.c",
|
MAME_DIR .. "src/mame/drivers/systec.c",
|
||||||
|
@ -2738,7 +2740,6 @@ files {
|
||||||
MAME_DIR .. "src/mame/drivers/xor100.c",
|
MAME_DIR .. "src/mame/drivers/xor100.c",
|
||||||
MAME_DIR .. "src/mame/drivers/xavix.c",
|
MAME_DIR .. "src/mame/drivers/xavix.c",
|
||||||
MAME_DIR .. "src/mame/drivers/zorba.c",
|
MAME_DIR .. "src/mame/drivers/zorba.c",
|
||||||
MAME_DIR .. "src/mame/drivers/squale.c",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
292
src/mame/drivers/micral.c
Normal file
292
src/mame/drivers/micral.c
Normal file
|
@ -0,0 +1,292 @@
|
||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:Robbbert
|
||||||
|
/********************************************************************************
|
||||||
|
|
||||||
|
Bull (Originally R2E) Micral 80-22G
|
||||||
|
|
||||||
|
2015-10-01 Skeleton [Robbbert]
|
||||||
|
|
||||||
|
http://www.ti99.com/exelvision/website/index.php?page=r2e-micral-8022-g
|
||||||
|
|
||||||
|
This expensive, futuristic-looking design featured a motherboard and slots,
|
||||||
|
much like an ancient pc. The known chip complement is:
|
||||||
|
Z80A, 4MHz; 64KB RAM, 2KB BIOS ROM, 256x4 prom (7611);
|
||||||
|
CRT8002, TMS9937 (=CRT5037), 4KB video RAM, 256x4 prom (7611);
|
||||||
|
2x 5.25 inch floppy drives, one ST506 5MB hard drive;
|
||||||
|
CDP6402 UART. Sound is a beeper.
|
||||||
|
The keyboard has a uPD780C (=Z80) and 1KB of ROM.
|
||||||
|
|
||||||
|
The FDC and HDC are unknown.
|
||||||
|
No manuals, schematic or circuit description have been found.
|
||||||
|
|
||||||
|
*********************************************************************************/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "cpu/z80/z80.h"
|
||||||
|
#include "video/tms9927.h"
|
||||||
|
#include "sound/beep.h"
|
||||||
|
|
||||||
|
|
||||||
|
class micral_state : public driver_device
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
micral_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
|
: driver_device(mconfig, type, tag)
|
||||||
|
, m_maincpu(*this, "maincpu")
|
||||||
|
, m_beep(*this, "beeper")
|
||||||
|
{ }
|
||||||
|
|
||||||
|
DECLARE_DRIVER_INIT(micral);
|
||||||
|
DECLARE_MACHINE_RESET(micral);
|
||||||
|
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||||
|
|
||||||
|
private:
|
||||||
|
required_device<cpu_device> m_maincpu;
|
||||||
|
required_device<beep_device> m_beep;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static ADDRESS_MAP_START( micral_mem, AS_PROGRAM, 8, micral_state )
|
||||||
|
ADDRESS_MAP_UNMAP_HIGH
|
||||||
|
AM_RANGE(0x0000, 0xf7ff) AM_RAM
|
||||||
|
AM_RANGE(0xf800, 0xfeff) AM_ROM
|
||||||
|
AM_RANGE(0xff00, 0xffff) AM_RAM // FFF0-F seems to be devices
|
||||||
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
static ADDRESS_MAP_START( micral_kbd_mem, AS_PROGRAM, 8, micral_state )
|
||||||
|
ADDRESS_MAP_UNMAP_HIGH
|
||||||
|
AM_RANGE(0x0000, 0x03ff) AM_ROM
|
||||||
|
AM_RANGE(0x8000, 0x8000) AM_RAM // byte returned to main cpu after receiving irq
|
||||||
|
AM_RANGE(0x8001, 0x8001) AM_READ_PORT("X0")
|
||||||
|
AM_RANGE(0x8002, 0x8002) AM_READ_PORT("X1")
|
||||||
|
AM_RANGE(0x8004, 0x8004) AM_READ_PORT("X2")
|
||||||
|
AM_RANGE(0x8008, 0x8008) AM_READ_PORT("X3")
|
||||||
|
AM_RANGE(0x8010, 0x8010) AM_READ_PORT("X4")
|
||||||
|
AM_RANGE(0x8020, 0x8020) AM_READ_PORT("X5")
|
||||||
|
AM_RANGE(0x8040, 0x8040) AM_READ_PORT("X6")
|
||||||
|
AM_RANGE(0x8080, 0x8080) AM_READ_PORT("X7")
|
||||||
|
AM_RANGE(0x8100, 0x8100) AM_READ_PORT("X8")
|
||||||
|
AM_RANGE(0x8200, 0x8200) AM_READ_PORT("X9")
|
||||||
|
AM_RANGE(0x8400, 0x8400) AM_READ_PORT("X10")
|
||||||
|
AM_RANGE(0x8800, 0x8800) AM_READ_PORT("X11")
|
||||||
|
AM_RANGE(0x9000, 0x9000) AM_READ_PORT("X12")
|
||||||
|
AM_RANGE(0xa000, 0xa000) AM_READ_PORT("X13")
|
||||||
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
static ADDRESS_MAP_START( micral_kbd_io, AS_IO, 8, micral_state )
|
||||||
|
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||||
|
AM_RANGE(0x00, 0x00) AM_READ_PORT("X14")
|
||||||
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
/* Input ports */
|
||||||
|
static INPUT_PORTS_START( micral )
|
||||||
|
PORT_START("X0")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ESC)
|
||||||
|
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE)
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 01
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 00
|
||||||
|
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 03
|
||||||
|
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 00
|
||||||
|
|
||||||
|
PORT_START("X1")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) // 2A
|
||||||
|
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) // 22
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) // 28
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) // 94
|
||||||
|
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) // 90
|
||||||
|
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 29
|
||||||
|
|
||||||
|
PORT_START("X2")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 3E, 3C
|
||||||
|
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 00
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A)
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E)
|
||||||
|
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T)
|
||||||
|
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U)
|
||||||
|
|
||||||
|
PORT_START("X3")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O)
|
||||||
|
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // '^'
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 00
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 00
|
||||||
|
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S)
|
||||||
|
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F)
|
||||||
|
|
||||||
|
PORT_START("X4")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H)
|
||||||
|
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K)
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M)
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CLOSEBRACE) // 5B
|
||||||
|
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // OB
|
||||||
|
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W)
|
||||||
|
|
||||||
|
PORT_START("X5")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C)
|
||||||
|
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B)
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA) // 3F
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // ':','/'
|
||||||
|
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 08
|
||||||
|
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 06
|
||||||
|
|
||||||
|
PORT_START("X6")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER)
|
||||||
|
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_TAB)
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 00
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 02
|
||||||
|
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 00
|
||||||
|
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 00
|
||||||
|
|
||||||
|
PORT_START("X7")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) // 91
|
||||||
|
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) // 27
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) // '-'
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) // '_'
|
||||||
|
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) // 8E
|
||||||
|
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) // '+'
|
||||||
|
|
||||||
|
PORT_START("X8")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 00
|
||||||
|
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 00
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z)
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R)
|
||||||
|
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y)
|
||||||
|
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I)
|
||||||
|
|
||||||
|
PORT_START("X9")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P)
|
||||||
|
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // '@', '#'
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 00
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q)
|
||||||
|
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D)
|
||||||
|
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G)
|
||||||
|
|
||||||
|
PORT_START("X10")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J)
|
||||||
|
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L)
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 9C, '%'
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 05
|
||||||
|
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 7F
|
||||||
|
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X)
|
||||||
|
|
||||||
|
PORT_START("X11")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V)
|
||||||
|
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N)
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // ';','.'
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // '!','&'
|
||||||
|
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 0A
|
||||||
|
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 00
|
||||||
|
|
||||||
|
PORT_START("X12")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 95,FE
|
||||||
|
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 97,FC
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 9D,'$'
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 96,'\'
|
||||||
|
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 99,84
|
||||||
|
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 9A,92
|
||||||
|
|
||||||
|
PORT_START("X13")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 00
|
||||||
|
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 00
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 00
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 00
|
||||||
|
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 00
|
||||||
|
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) // 00
|
||||||
|
|
||||||
|
PORT_START("X14")
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RCONTROL) // ?? don't look for a new keypress
|
||||||
|
PORT_BIT( 0x20, 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_CODE(KEYCODE_LCONTROL) // ??
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
UINT32 micral_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||||
|
{
|
||||||
|
// for (int y = 0; y < 32*8; y++)
|
||||||
|
// {
|
||||||
|
// offs_t offset = (y / 8) * 128;
|
||||||
|
|
||||||
|
// for (int sx = 0; sx < 64; sx++)
|
||||||
|
// {
|
||||||
|
// UINT8 code = m_video_ram[offset++];
|
||||||
|
// UINT8 attr = m_video_ram[offset++];
|
||||||
|
|
||||||
|
// offs_t char_offs = ((code & 0x7f) << 3) | (y & 0x07);
|
||||||
|
// if (BIT(code, 7)) char_offs = ((code & 0x7f) << 3) | ((y >> 1) & 0x07);
|
||||||
|
|
||||||
|
// UINT8 data = m_char_rom->base()[char_offs];
|
||||||
|
|
||||||
|
// rgb_t fg = m_palette->pen_color(attr & 0x07);
|
||||||
|
// rgb_t bg = m_palette->pen_color((attr >> 3) & 0x07);
|
||||||
|
|
||||||
|
// for (int x = 0; x < 6; x++)
|
||||||
|
// {
|
||||||
|
// bitmap.pix32(y, (sx * 6) + x) = BIT(data, 7) ? fg : bg;
|
||||||
|
|
||||||
|
// data <<= 1;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
DRIVER_INIT_MEMBER( micral_state, micral )
|
||||||
|
{
|
||||||
|
//UINT8 *main = memregion("maincpu")->base();
|
||||||
|
|
||||||
|
//membank("bankr0")->configure_entry(1, &main[0xf800]);
|
||||||
|
//membank("bankr0")->configure_entry(0, &main[0x10000]);
|
||||||
|
//membank("bankw0")->configure_entry(0, &main[0xf800]);
|
||||||
|
}
|
||||||
|
|
||||||
|
MACHINE_RESET_MEMBER( micral_state, micral )
|
||||||
|
{
|
||||||
|
//membank("bankr0")->set_entry(0); // point at rom
|
||||||
|
//membank("bankw0")->set_entry(0); // always write to ram
|
||||||
|
m_beep->set_frequency(2000);
|
||||||
|
m_maincpu->set_state_int(Z80_PC, 0xf800);
|
||||||
|
}
|
||||||
|
|
||||||
|
static MACHINE_CONFIG_START( micral, micral_state )
|
||||||
|
// basic machine hardware
|
||||||
|
MCFG_CPU_ADD( "maincpu", Z80, XTAL_4MHz )
|
||||||
|
MCFG_CPU_PROGRAM_MAP(micral_mem)
|
||||||
|
// no i/o ports on main cpu
|
||||||
|
MCFG_CPU_ADD( "keyboard", Z80, XTAL_1MHz ) // freq unknown
|
||||||
|
MCFG_CPU_PROGRAM_MAP(micral_kbd_mem)
|
||||||
|
MCFG_CPU_IO_MAP(micral_kbd_io)
|
||||||
|
|
||||||
|
MCFG_MACHINE_RESET_OVERRIDE(micral_state, micral)
|
||||||
|
|
||||||
|
// video hardware
|
||||||
|
MCFG_SCREEN_ADD("screen", RASTER)
|
||||||
|
MCFG_SCREEN_REFRESH_RATE(60)
|
||||||
|
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(250))
|
||||||
|
MCFG_SCREEN_UPDATE_DRIVER(micral_state, screen_update)
|
||||||
|
MCFG_SCREEN_SIZE(64*6, 32*8)
|
||||||
|
MCFG_SCREEN_VISIBLE_AREA(0, 64*6-1, 0, 32*8-1)
|
||||||
|
MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
|
||||||
|
//MCFG_GFXDECODE_ADD("gfxdecode", "palette", micral)
|
||||||
|
|
||||||
|
MCFG_DEVICE_ADD("crtc", CRT5037, XTAL_17_9712MHz/2) // xtal freq unknown
|
||||||
|
MCFG_TMS9927_CHAR_WIDTH(6) // unknown
|
||||||
|
//MCFG_TMS9927_VSYN_CALLBACK(DEVWRITELINE(TMS5501_TAG, tms5501_device, sens_w))
|
||||||
|
MCFG_VIDEO_SET_SCREEN("screen")
|
||||||
|
|
||||||
|
/* sound hardware */
|
||||||
|
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||||
|
MCFG_SOUND_ADD("beeper", BEEP, 0)
|
||||||
|
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
|
||||||
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
ROM_START( micral )
|
||||||
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
|
ROM_LOAD( "8022g.rom", 0xf800, 0x0800, CRC(882732a9) SHA1(3f37b82c450a54aedec209bd46fcbcf131c86313) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x400, "keyboard", 0 )
|
||||||
|
ROM_LOAD( "2010221.rom", 0x000, 0x400, CRC(65123378) SHA1(401f0a648b78bf1662a1cd2546e83ba8e3cb7a42) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
/* Driver */
|
||||||
|
|
||||||
|
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
|
||||||
|
COMP( 1981, micral, 0, 0, micral, micral, micral_state, micral, "Bull R2E", "Micral 80-22G", MACHINE_IS_SKELETON )
|
|
@ -2754,3 +2754,4 @@ hp_ipc
|
||||||
lggp40
|
lggp40
|
||||||
mt735
|
mt735
|
||||||
squale
|
squale
|
||||||
|
micral
|
||||||
|
|
Loading…
Reference in a new issue