mirror of
https://github.com/holub/mame
synced 2025-10-04 16:34:53 +03:00
New NOT WORKING computer: Olympia Olytext 20
This commit is contained in:
parent
abb6f7dfd2
commit
a0f5fd65b2
@ -2630,6 +2630,7 @@ files {
|
|||||||
createMESSProjects(_target, _subtarget, "olympia")
|
createMESSProjects(_target, _subtarget, "olympia")
|
||||||
files {
|
files {
|
||||||
MAME_DIR .. "src/mame/drivers/olyboss.cpp",
|
MAME_DIR .. "src/mame/drivers/olyboss.cpp",
|
||||||
|
MAME_DIR .. "src/mame/drivers/olytext.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/peoplepc.cpp",
|
MAME_DIR .. "src/mame/drivers/peoplepc.cpp",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
196
src/mame/drivers/olytext.cpp
Normal file
196
src/mame/drivers/olytext.cpp
Normal file
@ -0,0 +1,196 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders: Robbbert
|
||||||
|
/*
|
||||||
|
|
||||||
|
If you want to "own" this, go ahead, it's yours.
|
||||||
|
|
||||||
|
Olympia Olytext 20 Screen-Typing System
|
||||||
|
Made in Germany
|
||||||
|
|
||||||
|
Major Chips: Z80A, Z80PIO x2, Z80SCC, WD1772, National Semiconductor NS405-B18N
|
||||||
|
Crystals: 16.000, 18.000
|
||||||
|
Piezo-Beeper
|
||||||
|
RAM: 128k dynamic (16x 4164), 8k static (4x MB8128-10)
|
||||||
|
Keyboard: 3870 with 4.000 crystal, 3 dipswitches
|
||||||
|
|
||||||
|
The NS405 is a Terminal Management Processor which provides complete video functionality.
|
||||||
|
It is modelled on the 8048, and requires an external rom. All other functions (cpu, timing,
|
||||||
|
character generation, uart, dma, crtc, etc) are internal. Data is sent to it in parallel
|
||||||
|
from the pio, something like a printer, but there's no handshake. Apparently the TMP is
|
||||||
|
fast enough to accept all data as it arrives.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "cpu/z80/z80.h"
|
||||||
|
#include "machine/wd_fdc.h"
|
||||||
|
#include "machine/keyboard.h"
|
||||||
|
#include "emupal.h"
|
||||||
|
#include "screen.h"
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// TYPE DEFINITIONS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
class olytext_state : public driver_device
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
olytext_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
|
: driver_device(mconfig, type, tag)
|
||||||
|
, m_maincpu(*this, "maincpu")
|
||||||
|
// , m_fdd0(*this, "fdc:0"),
|
||||||
|
// , m_fdd1(*this, "fdc:1"),
|
||||||
|
// , m_rom(*this, "mainrom"),
|
||||||
|
// , m_lowram(*this, "lowram"),
|
||||||
|
{ }
|
||||||
|
|
||||||
|
void olytext(machine_config &config);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void machine_start() override;
|
||||||
|
virtual void machine_reset() override;
|
||||||
|
// virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||||
|
void keyboard_put(u8 data);
|
||||||
|
|
||||||
|
void mem_map(address_map &map);
|
||||||
|
void io_map(address_map &map);
|
||||||
|
|
||||||
|
required_device<cpu_device> m_maincpu;
|
||||||
|
// required_device<floppy_connector> m_fdd0;
|
||||||
|
// optional_device<floppy_connector> m_fdd1;
|
||||||
|
// required_memory_region m_rom;
|
||||||
|
// required_shared_ptr<u8> m_lowram;
|
||||||
|
};
|
||||||
|
|
||||||
|
void olytext_state::machine_reset()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// ADDRESS MAPS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
void olytext_state::mem_map(address_map &map)
|
||||||
|
{
|
||||||
|
map(0x0000, 0x0fff).rom();
|
||||||
|
map(0x1000, 0xffff).ram();
|
||||||
|
}
|
||||||
|
|
||||||
|
void olytext_state::io_map(address_map &map)
|
||||||
|
{
|
||||||
|
map.global_mask(0xff);
|
||||||
|
map.unmap_value_high();
|
||||||
|
map(0x20, 0x23); // pio? data, ctrl, data, ctrl // all text is sent as ascii (including control codes) to 0x20
|
||||||
|
map(0x30, 0x30); // .w (device) .r(get keyboard status, if bit 0 high then read keyboard data from port 0x31)
|
||||||
|
map(0x32, 0x32); // .w (device)
|
||||||
|
map(0x40, 0x40); // .w (banking?)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static INPUT_PORTS_START( olytext )
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// VIDEO
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
uint32_t olytext_state::screen_update( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect )
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// KEYBOARD
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
void olytext_state::machine_start()
|
||||||
|
{
|
||||||
|
//m_timer = timer_alloc();
|
||||||
|
//const char *type = m_fdd0->get_device()->shortname();
|
||||||
|
//if(!strncmp(type, "floppy_525_qd", 13))
|
||||||
|
//m_fdctype = 0xa0;
|
||||||
|
//else
|
||||||
|
//m_fdctype = 0x80;
|
||||||
|
}
|
||||||
|
|
||||||
|
void olytext_state::keyboard_put(u8 data)
|
||||||
|
{
|
||||||
|
// if (data)
|
||||||
|
// {
|
||||||
|
// m_keystroke=data;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
//WRITE8_MEMBER( olytext_state::fdcctrl_w )
|
||||||
|
//{
|
||||||
|
// m_fdcctrl = data;
|
||||||
|
// m_romen = (m_fdcctrl & 1) ? false : true;
|
||||||
|
// m_fdd0->get_device()->mon_w(!(data & 2));
|
||||||
|
// if(m_fdd1)
|
||||||
|
// m_fdd1->get_device()->mon_w(!(data & 4));
|
||||||
|
//}
|
||||||
|
|
||||||
|
static void olytext_floppies(device_slot_interface &device)
|
||||||
|
{
|
||||||
|
device.option_add("525qd", FLOPPY_525_QD);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// MACHINE CONFIGURATION
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
MACHINE_CONFIG_START( olytext_state::olytext )
|
||||||
|
MCFG_DEVICE_ADD("maincpu", Z80, 16_MHz_XTAL / 4)
|
||||||
|
MCFG_DEVICE_PROGRAM_MAP(mem_map)
|
||||||
|
MCFG_DEVICE_IO_MAP(io_map)
|
||||||
|
|
||||||
|
/* video hardware */
|
||||||
|
MCFG_SCREEN_ADD("screen", RASTER)
|
||||||
|
MCFG_SCREEN_REFRESH_RATE(60)
|
||||||
|
MCFG_SCREEN_SIZE(80*8, 28*11)
|
||||||
|
MCFG_SCREEN_VISIBLE_AREA(0, (80*8)-1, 0, (28*11)-1)
|
||||||
|
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
|
||||||
|
MCFG_SCREEN_UPDATE_DRIVER(olytext_state, screen_update)
|
||||||
|
//MCFG_SCREEN_PALETTE("palette")
|
||||||
|
MCFG_PALETTE_ADD_MONOCHROME("palette")
|
||||||
|
|
||||||
|
/* devices */
|
||||||
|
MCFG_DEVICE_ADD("fdc", WD1772, 16_MHz_XTAL / 8) // divisor guess
|
||||||
|
MCFG_FLOPPY_DRIVE_ADD("fdc:0", olytext_floppies, "525qd", floppy_image_device::default_floppy_formats)
|
||||||
|
MCFG_FLOPPY_DRIVE_SOUND(true)
|
||||||
|
MCFG_FLOPPY_DRIVE_ADD("fdc:1", olytext_floppies, "525qd", floppy_image_device::default_floppy_formats)
|
||||||
|
MCFG_FLOPPY_DRIVE_SOUND(true)
|
||||||
|
|
||||||
|
/* keyboard */
|
||||||
|
MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
|
||||||
|
MCFG_GENERIC_KEYBOARD_CB(PUT(olytext_state, keyboard_put))
|
||||||
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// ROM DEFINITIONS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
ROM_START( olytext )
|
||||||
|
ROM_REGION( 0x1000, "maincpu", 0)
|
||||||
|
ROM_LOAD( "1220-040_700.bin", 0x0000, 0x1000, CRC(1df4b31f) SHA1(af3a275d9853d8d23ef091549d7c659cbdb257f3) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x1000, "chargen", 0) // this is firmware for the NS405 cpu
|
||||||
|
ROM_LOAD( "1220-041_33702.bin", 0x0000, 0x1000, CRC(a6d39c2a) SHA1(b7a4c65edc7d46d1ab8b0b3aa52141c61c66bf32) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// SYSTEM DRIVERS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
||||||
|
COMP(1985, olytext, 0, 0, olytext, olytext, olytext_state, empty_init, "Olympia International", "Olympia Olytext 20", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
|
@ -30375,6 +30375,9 @@ olybossd // Olympia BOSS D
|
|||||||
bossa85 // Olympia BOSS A 8085
|
bossa85 // Olympia BOSS A 8085
|
||||||
bossb85 // Olympia BOSS B 8085
|
bossb85 // Olympia BOSS B 8085
|
||||||
|
|
||||||
|
@source:olytext.cpp
|
||||||
|
olytext // Olympia Olytext 20
|
||||||
|
|
||||||
@source:omegrace.cpp
|
@source:omegrace.cpp
|
||||||
deltrace // bootleg
|
deltrace // bootleg
|
||||||
omegrace // (c) 1981 Midway
|
omegrace // (c) 1981 Midway
|
||||||
|
@ -470,6 +470,7 @@ octopus.cpp
|
|||||||
odyssey2.cpp
|
odyssey2.cpp
|
||||||
okean240.cpp
|
okean240.cpp
|
||||||
olyboss.cpp
|
olyboss.cpp
|
||||||
|
olytext.cpp
|
||||||
ondra.cpp
|
ondra.cpp
|
||||||
onyx.cpp
|
onyx.cpp
|
||||||
orao.cpp
|
orao.cpp
|
||||||
|
Loading…
Reference in New Issue
Block a user