mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
new non-working driver: Scopus Sagitta 150/180 serial terminal
This commit is contained in:
parent
6a09da3141
commit
3a96290b5f
@ -3569,6 +3569,7 @@ files {
|
||||
MAME_DIR .. "src/mame/drivers/seattlecmp.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/sh4robot.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/sansa_fuze.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/scopus.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/softbox.cpp",
|
||||
MAME_DIR .. "src/mame/includes/softbox.h",
|
||||
MAME_DIR .. "src/mame/drivers/squale.cpp",
|
||||
|
189
src/mame/drivers/scopus.cpp
Normal file
189
src/mame/drivers/scopus.cpp
Normal file
@ -0,0 +1,189 @@
|
||||
// license:GPL2+
|
||||
// copyright-holders:Felipe Sanches
|
||||
/********************************************************************
|
||||
|
||||
Scopus Sagitta 150 / 180
|
||||
Serial terminal
|
||||
|
||||
*********************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/i8085/i8085.h"
|
||||
#include "machine/i8251.h"
|
||||
#include "machine/i8257.h"
|
||||
#include "machine/i8212.h"
|
||||
#include "video/i8275.h"
|
||||
#include "screen.h"
|
||||
|
||||
class sagitta180_state : public driver_device
|
||||
{
|
||||
public:
|
||||
sagitta180_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_palette(*this, "palette"),
|
||||
m_crtc(*this, "crtc"),
|
||||
m_dma8257(*this, "dma8257"),
|
||||
m_maincpu(*this, "maincpu"){ }
|
||||
|
||||
/* devices */
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<i8275_device> m_crtc;
|
||||
required_device<i8257_device> m_dma8257;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
|
||||
DECLARE_DRIVER_INIT(sagitta180);
|
||||
DECLARE_WRITE_LINE_MEMBER(hrq_w);
|
||||
DECLARE_READ8_MEMBER(memory_read_byte);
|
||||
I8275_DRAW_CHARACTER_MEMBER(crtc_display_pixels);
|
||||
|
||||
|
||||
// Character generator
|
||||
const uint8_t *m_chargen;
|
||||
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
};
|
||||
|
||||
void sagitta180_state::machine_start()
|
||||
{
|
||||
m_palette->set_pen_color(0, rgb_t(0x00,0x00,0x00)); // black
|
||||
m_palette->set_pen_color(1, rgb_t(0x00,0xa0,0x00)); // normal
|
||||
m_palette->set_pen_color(2, rgb_t(0x00,0xff,0x00)); // highlight
|
||||
|
||||
m_chargen = memregion("chargen")->base();
|
||||
}
|
||||
|
||||
|
||||
const gfx_layout sagitta180_charlayout =
|
||||
{
|
||||
8, 8, /* 8x16 characters - the last 8 lines are always blank */
|
||||
128, /* 128 characters */
|
||||
1, /* 1 bits per pixel */
|
||||
{0}, /* no bitplanes; 1 bit per pixel */
|
||||
{0,1,2,3,4,5,6,7},
|
||||
{0, 8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
|
||||
8*16 /* space between characters */
|
||||
};
|
||||
|
||||
static GFXDECODE_START( sagitta180 )
|
||||
GFXDECODE_ENTRY( "chargen", 0x0000, sagitta180_charlayout, 0, 1 )
|
||||
GFXDECODE_END
|
||||
|
||||
I8275_DRAW_CHARACTER_MEMBER(sagitta180_state::crtc_display_pixels)
|
||||
{
|
||||
unsigned i;
|
||||
const rgb_t *palette = m_palette->palette()->entry_list_raw();
|
||||
uint8_t chargen_byte = m_chargen[ (linecount & 7) | ((unsigned)charcode << 3) ];
|
||||
uint8_t pixels;
|
||||
|
||||
if (lten) {
|
||||
pixels = ~0;
|
||||
} else if (vsp != 0 || (linecount & 8) != 0) {
|
||||
pixels = 0;
|
||||
} else {
|
||||
pixels = chargen_byte;
|
||||
}
|
||||
|
||||
if (rvv) {
|
||||
pixels = ~pixels;
|
||||
}
|
||||
|
||||
for (i = 0; i < 7; i++) {
|
||||
bitmap.pix32(y, x + i) = palette[ (pixels & (1U << (7 - i))) != 0 ];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void sagitta180_state::machine_reset()
|
||||
{
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( maincpu_map, AS_PROGRAM, 8, sagitta180_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xffff)
|
||||
AM_RANGE(0x0000, 0x07ff) AM_ROM
|
||||
// AM_RANGE(0x0800, 0x17ff) AM_ROM
|
||||
AM_RANGE(0x1800, 0xffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( maincpu_io_map, AS_IO, 8, sagitta180_state )
|
||||
AM_RANGE(0x0030, 0x0031) AM_DEVREADWRITE("crtc", i8275_device, read, write)
|
||||
AM_RANGE(0x0040, 0x0048) AM_DEVREADWRITE("dma8257", i8257_device, read, write)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static INPUT_PORTS_START( sagitta180 )
|
||||
INPUT_PORTS_END
|
||||
|
||||
WRITE_LINE_MEMBER(sagitta180_state::hrq_w)
|
||||
{
|
||||
m_maincpu->set_input_line(INPUT_LINE_HALT, state);
|
||||
m_dma8257->hlda_w(state);
|
||||
}
|
||||
|
||||
READ8_MEMBER(sagitta180_state::memory_read_byte)
|
||||
{
|
||||
address_space& prog_space = m_maincpu->space(AS_PROGRAM);
|
||||
return prog_space.read_byte(offset);
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_START( sagitta180 )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", I8080, XTAL_10MHz) /* guessed ! */
|
||||
MCFG_CPU_PROGRAM_MAP(maincpu_map)
|
||||
MCFG_CPU_IO_MAP(maincpu_io_map)
|
||||
// MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("intlatch", i8212_device, inta_cb)
|
||||
|
||||
MCFG_DEVICE_ADD("dma8257", I8257, XTAL_14_7456MHz) /* guessed xtal */
|
||||
MCFG_I8257_OUT_IOW_2_CB(DEVWRITE8("crtc", i8275_device, dack_w))
|
||||
MCFG_I8257_OUT_HRQ_CB(WRITELINE(sagitta180_state, hrq_w))
|
||||
MCFG_I8257_IN_MEMR_CB(READ8(sagitta180_state, memory_read_byte))
|
||||
|
||||
MCFG_DEVICE_ADD( "upd8251a", I8251, 0)
|
||||
// MCFG_I8251_TXD_HANDLER(DEVWRITELINE("rs232a", rs232_port_device, write_txd))
|
||||
// MCFG_I8251_DTR_HANDLER(DEVWRITELINE("rs232a", rs232_port_device, write_dtr))
|
||||
// MCFG_I8251_RTS_HANDLER(DEVWRITELINE("rs232a", rs232_port_device, write_rts))
|
||||
// MCFG_I8251_RXRDY_HANDLER(DEVWRITELINE("pic8259", pic8259_device, ir2_w))
|
||||
// MCFG_I8251_TXRDY_HANDLER(DEVWRITELINE("pic8259", pic8259_device, ir2_w))
|
||||
|
||||
// MCFG_DEVICE_ADD("intlatch", I8212, 0)
|
||||
// MCFG_I8212_MD_CALLBACK(GND) // guessed !
|
||||
// MCFG_I8212_DI_CALLBACK(DEVREAD8("picu", i8214_device, vector_r))
|
||||
// MCFG_I8212_INT_CALLBACK(INPUTLINE("maincpu", I8085_INTR_LINE)) // guessed !
|
||||
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_UPDATE_DEVICE("crtc", i8275_device, screen_update)
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
|
||||
MCFG_SCREEN_SIZE(80*5, 26*8)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 80*5-1, 0, 26*8-1)
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", sagitta180 )
|
||||
|
||||
MCFG_DEVICE_ADD("crtc", I8275, 12480000 / 8) /* guessed xtal */
|
||||
MCFG_I8275_CHARACTER_WIDTH(8)
|
||||
MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(sagitta180_state, crtc_display_pixels)
|
||||
MCFG_I8275_DRQ_CALLBACK(DEVWRITELINE("dma8257" , i8257_device , dreq2_w))
|
||||
MCFG_I8275_IRQ_CALLBACK(INPUTLINE("maincpu" , I8085_INTR_LINE))
|
||||
MCFG_VIDEO_SET_SCREEN("screen")
|
||||
MCFG_PALETTE_ADD("palette", 3)
|
||||
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
ROM_START( sagitta180 )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD( "sagitta180.u25", 0x0000, 0x0800, CRC(be21a153) SHA1(c1351cda839e0873e8d969e45502530bc26105fd) )
|
||||
ROM_LOAD( "180_2763_1.u40", 0x1000, 0x1000, CRC(45839a05) SHA1(875ec4db37bcacdc9c1d62ed7c0757b6e9c45b34) )
|
||||
ROM_LOAD( "180_2763_2.u46", 0x2000, 0x1000, CRC(10093151) SHA1(a474207c8f8505e41e4a3c0429fc4a308a282b26) )
|
||||
ROM_LOAD( "180_2763_0.u60", 0x3000, 0x1000, CRC(6be85799) SHA1(b1b76740b418d7bd1efd4d405b6fe770797b072a) )
|
||||
|
||||
ROM_REGION( 0x1000, "chargen", 0 ) /* data copied from ibm-pc-jr driver */
|
||||
ROM_LOAD("cga.chr", 0x00000, 0x01000, BAD_DUMP CRC(42009069) SHA1(ed08559ce2d7f97f68b9f540bddad5b6295294dd)) // from an unknown clone cga card (Actual IC is a 2708 that I was not able to dump yet)
|
||||
ROM_END
|
||||
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
|
||||
COMP( 1979?, sagitta180, 0, 0, sagitta180, sagitta180, sagitta180_state, 0, "Scopus", "Sagitta 180", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
|
@ -33119,6 +33119,9 @@ strongx // bootleg
|
||||
tazmani2 // (c) 1982 Stern
|
||||
tazmani3 // bootleg (Rodmar)
|
||||
|
||||
@source:scopus.cpp
|
||||
sagitta180 // 1979?
|
||||
|
||||
@source:scorpion.cpp
|
||||
bestzx //
|
||||
kay1024 //
|
||||
|
Loading…
Reference in New Issue
Block a user