mirror of
https://github.com/holub/mame
synced 2025-04-20 23:42:22 +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")
|
||||
files {
|
||||
MAME_DIR .. "src/mame/drivers/olyboss.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/olytext.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
|
||||
bossb85 // Olympia BOSS B 8085
|
||||
|
||||
@source:olytext.cpp
|
||||
olytext // Olympia Olytext 20
|
||||
|
||||
@source:omegrace.cpp
|
||||
deltrace // bootleg
|
||||
omegrace // (c) 1981 Midway
|
||||
|
@ -470,6 +470,7 @@ octopus.cpp
|
||||
odyssey2.cpp
|
||||
okean240.cpp
|
||||
olyboss.cpp
|
||||
olytext.cpp
|
||||
ondra.cpp
|
||||
onyx.cpp
|
||||
orao.cpp
|
||||
|
Loading…
Reference in New Issue
Block a user