mirror of
https://github.com/holub/mame
synced 2025-07-08 19:31:59 +03:00
(nw) uts20 : added graphics for corner characters, SOE and cursor.
This commit is contained in:
parent
f3236fc081
commit
23b127fc64
@ -4,10 +4,14 @@
|
||||
|
||||
Univac Terminals
|
||||
|
||||
2009-05-25 Skeleton driver
|
||||
|
||||
The terminals are models UTS20, UTS30, UTS40, UTS50 and SVT1120,
|
||||
however only the UTS20 is dumped (program roms only).
|
||||
|
||||
2009-05-25 Skeleton driver
|
||||
There were other terminals (Uniscope 100/200/300/400) and UTS60, but
|
||||
they had different hardware. Uniscope models are believed to use the i8080,
|
||||
and the UTS60 was a colour graphics terminal with a MC68000 and 2 floppy drives.
|
||||
|
||||
The terminal has 2 screens selectable by the operator with the Fn + 1-2
|
||||
buttons. Thus the user can have two sessions open at once, to different
|
||||
@ -43,7 +47,7 @@ Notes:
|
||||
#include "speaker.h"
|
||||
|
||||
#define LOG_GENERAL (1U << 0)
|
||||
#define LOG_PARITY (1U << 1)
|
||||
#define LOG_PARITY (1U << 1)
|
||||
|
||||
//#define VERBOSE (LOG_GENERAL | LOG_PARITY)
|
||||
#include "logmacro.h"
|
||||
@ -88,7 +92,7 @@ protected:
|
||||
virtual void device_post_load() override;
|
||||
|
||||
private:
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<nvram_device> m_nvram;
|
||||
required_device<z80ctc_device> m_ctc;
|
||||
required_device<z80sio_device> m_uart;
|
||||
@ -241,8 +245,7 @@ void univac_state::device_post_load()
|
||||
uint32_t univac_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
uint8_t y,ra,chr,gfx;
|
||||
uint16_t sy=0,ma=0,x;
|
||||
uint8_t *videoram = m_p_videoram;//^ m_bank_mask;
|
||||
uint16_t sy=0,x,ma=0; //m_bank_mask; (it isn't port43 that selects the screen)
|
||||
|
||||
m_framecnt++;
|
||||
|
||||
@ -254,7 +257,7 @@ uint32_t univac_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
|
||||
|
||||
for (x = ma; x < ma + 80; x++)
|
||||
{
|
||||
chr = videoram[x];
|
||||
chr = m_p_videoram[x];
|
||||
|
||||
/* Take care of 'corner' characters */
|
||||
if (((chr == 0x1c) || (chr == 0x1d)) && (m_framecnt & 16))
|
||||
@ -278,6 +281,24 @@ uint32_t univac_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* F4 Character Displayer */
|
||||
static const gfx_layout c10_charlayout =
|
||||
{
|
||||
8, 9, /* 8 x 9 characters */
|
||||
512, /* 512 characters */
|
||||
1, /* 1 bits per pixel */
|
||||
{ 0 }, /* no bitplanes */
|
||||
/* x offsets */
|
||||
{ 0, 1, 2, 3, 4, 5, 6, 7 },
|
||||
/* y offsets */
|
||||
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8 },
|
||||
8*16 /* every char takes 16 bytes */
|
||||
};
|
||||
|
||||
static GFXDECODE_START( c10 )
|
||||
GFXDECODE_ENTRY( "chargen", 0x0000, c10_charlayout, 0, 1 )
|
||||
GFXDECODE_END
|
||||
|
||||
static const z80_daisy_config daisy_chain[] =
|
||||
{
|
||||
{ "uart" },
|
||||
@ -301,6 +322,7 @@ static MACHINE_CONFIG_START( uts20 )
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 249)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
MCFG_PALETTE_ADD_MONOCHROME("palette")
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", c10)
|
||||
|
||||
MCFG_NVRAM_ADD_1FILL("nvram")
|
||||
|
||||
@ -310,10 +332,6 @@ static MACHINE_CONFIG_START( uts20 )
|
||||
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("ctc", z80ctc_device, trg2))
|
||||
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("ctc", z80ctc_device, trg3))
|
||||
|
||||
//MCFG_DEVICE_ADD("uart_clock", CLOCK, 307200)
|
||||
//MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("uart", z80sio_device, txcb_w))
|
||||
//MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("uart", z80sio_device, rxcb_w))
|
||||
|
||||
MCFG_DEVICE_ADD("ctc", Z80CTC, XTAL_4MHz)
|
||||
MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
|
||||
MCFG_Z80CTC_ZC1_CB(DEVWRITELINE("uart", z80sio_device, txca_w))
|
||||
@ -330,7 +348,7 @@ static MACHINE_CONFIG_START( uts20 )
|
||||
/* Sound */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
MCFG_SOUND_ADD("beeper", BEEP, 950) // guess
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.05)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
@ -346,6 +364,40 @@ ROM_START( uts20 )
|
||||
/* character generator not dumped, using the one from 'c10' for now */
|
||||
ROM_REGION( 0x2000, "chargen", 0 )
|
||||
ROM_LOAD("c10_char.bin", 0x0000, 0x2000, BAD_DUMP CRC(cb530b6f) SHA1(95590bbb433db9c4317f535723b29516b9b9fcbf) )
|
||||
// create special unisys gfx
|
||||
ROM_FILL(0x1C0, 0x30, 0)
|
||||
// left corner
|
||||
ROM_FILL(0x1C0, 1, 0xF8)
|
||||
ROM_FILL(0x1C1, 1, 0xF0)
|
||||
ROM_FILL(0x1C2, 1, 0xE0)
|
||||
ROM_FILL(0x1C3, 1, 0xC0)
|
||||
ROM_FILL(0x1C4, 1, 0x80)
|
||||
// right corner
|
||||
ROM_FILL(0x1D0, 1, 0x1F)
|
||||
ROM_FILL(0x1D1, 1, 0x0F)
|
||||
ROM_FILL(0x1D2, 1, 0x07)
|
||||
ROM_FILL(0x1D3, 1, 0x03)
|
||||
ROM_FILL(0x1D4, 1, 0x01)
|
||||
// SOE
|
||||
ROM_FILL(0x1E0, 1, 0x80)
|
||||
ROM_FILL(0x1E1, 1, 0xC0)
|
||||
ROM_FILL(0x1E2, 1, 0xE0)
|
||||
ROM_FILL(0x1E3, 1, 0xF0)
|
||||
ROM_FILL(0x1E4, 1, 0xF8)
|
||||
ROM_FILL(0x1E5, 1, 0xF0)
|
||||
ROM_FILL(0x1E6, 1, 0xE0)
|
||||
ROM_FILL(0x1E7, 1, 0xC0)
|
||||
ROM_FILL(0x1E8, 1, 0x80)
|
||||
// cursor
|
||||
ROM_FILL(0x000, 1, 0x7F)
|
||||
ROM_FILL(0x001, 1, 0x7E)
|
||||
ROM_FILL(0x002, 1, 0x7C)
|
||||
ROM_FILL(0x003, 1, 0x79)
|
||||
ROM_FILL(0x004, 1, 0x73)
|
||||
ROM_FILL(0x005, 1, 0x67)
|
||||
ROM_FILL(0x006, 1, 0x4F)
|
||||
ROM_FILL(0x007, 1, 0x1F)
|
||||
ROM_FILL(0x008, 1, 0x7F)
|
||||
ROM_END
|
||||
|
||||
/* Driver */
|
||||
|
Loading…
Reference in New Issue
Block a user