Previous 15994 Revisions Next

r9575 Sunday 14th November, 2010 at 01:51:08 UTC by Robbbert
[UTS20] Added rudimentary video driver.
[src/mess/drivers]univac.c

src/mess/drivers/univac.c
r9574r9575
77
88    25/05/2009 Skeleton driver [Robbbert].
99
10    The terminal has 2 screens selectable by the operator with the Fn + 1-2
11    buttons. Thus the user can have two sessions open at once, to different
12    mainframes or applications.
13
1014****************************************************************************/
1115
1216#include "emu.h"
1317#include "cpu/z80/z80.h"
1418
19static const UINT8 *FNT;
20static UINT8 uts20_screen;
21
22static WRITE8_HANDLER( uts20_43_w )
23{
24   uts20_screen = data & 1;
25}
26
27static READ8_HANDLER( uts20_vram_r )
28{
29   UINT8 *RAM = memory_region(space->machine, "maincpu");
30   return RAM[offset | ((uts20_screen) ? 0xe000 : 0xc000)];
31}
32
33static WRITE8_HANDLER( uts20_vram_w )
34{
35   UINT8 *RAM = memory_region(space->machine, "maincpu");
36   RAM[offset | ((uts20_screen) ? 0xe000 : 0xc000)] = data;
37}
38
39
1540static ADDRESS_MAP_START(uts20_mem, ADDRESS_SPACE_PROGRAM, 8)
1641   ADDRESS_MAP_UNMAP_HIGH
1742   AM_RANGE( 0x0000, 0x4fff ) AM_ROM
18   AM_RANGE( 0x5000, 0xffff ) AM_RAM
43   AM_RANGE( 0x5000, 0x7fff ) AM_RAM AM_REGION("maincpu", 0x5000)
44   AM_RANGE( 0x8000, 0x9fff ) AM_READWRITE(uts20_vram_r,uts20_vram_w)
45   AM_RANGE( 0xa000, 0xffff ) AM_RAM AM_REGION("maincpu", 0xa000)
1946ADDRESS_MAP_END
2047
21static ADDRESS_MAP_START( uts20_io , ADDRESS_SPACE_IO, 8)
48static ADDRESS_MAP_START( uts20_io, ADDRESS_SPACE_IO, 8)
49   ADDRESS_MAP_GLOBAL_MASK(0xff)
2250   ADDRESS_MAP_UNMAP_HIGH
51   AM_RANGE( 0x43, 0x43 ) AM_WRITE(uts20_43_w)
2352ADDRESS_MAP_END
2453
2554/* Input ports */
r9574r9575
2958
3059static MACHINE_RESET(uts20)
3160{
61   uts20_screen = 0;
3262}
3363
3464static VIDEO_START( uts20 )
3565{
66   FNT = memory_region(machine, "chargen");
3667}
3768
3869static VIDEO_UPDATE( uts20 )
3970{
40    return 0;
71   static UINT8 framecnt=0;
72   UINT8 y,ra,chr,gfx;
73   UINT16 sy=0,ma=0,x;
74   UINT8 *videoram = memory_region(screen->machine, "maincpu")+((uts20_screen) ? 0xe000 : 0xc000);
75
76   framecnt++;
77
78   for (y = 0; y < 25; y++)
79   {
80      for (ra = 0; ra < 10; ra++)
81      {
82         UINT16  *p = BITMAP_ADDR16(bitmap, sy++, 0);
83
84         for (x = ma; x < ma + 80; x++)
85         {
86            gfx = 0;
87
88            if (ra < 9)
89            {
90               chr = videoram[x];
91
92               /* Take care of flashing characters */
93               if ((chr & 0x80) && (framecnt & 0x08))
94                  chr = 0x20;
95
96               chr &= 0x7f;
97
98               gfx = FNT[(chr<<4) | ra ];
99            }
100
101            /* Display a scanline of a character */
102            *p = ( gfx & 0x80 ) ? 1 : 0; p++;
103            *p = ( gfx & 0x40 ) ? 1 : 0; p++;
104            *p = ( gfx & 0x20 ) ? 1 : 0; p++;
105            *p = ( gfx & 0x10 ) ? 1 : 0; p++;
106            *p = ( gfx & 0x08 ) ? 1 : 0; p++;
107            *p = ( gfx & 0x04 ) ? 1 : 0; p++;
108            *p = ( gfx & 0x02 ) ? 1 : 0; p++;
109            *p = ( gfx & 0x01 ) ? 1 : 0; p++;
110         }
111      }
112      ma+=80;
113   }
114   return 0;
41115}
42116
43117static MACHINE_CONFIG_START( uts20, driver_device )
r9574r9575
53127    MDRV_SCREEN_REFRESH_RATE(50)
54128    MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
55129    MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
56    MDRV_SCREEN_SIZE(640, 480)
57    MDRV_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
130    MDRV_SCREEN_SIZE(640, 250)
131    MDRV_SCREEN_VISIBLE_AREA(0, 639, 0, 249)
58132    MDRV_PALETTE_LENGTH(2)
59133    MDRV_PALETTE_INIT(black_and_white)
60134
r9574r9575
62136    MDRV_VIDEO_UPDATE(uts20)
63137MACHINE_CONFIG_END
64138
139
65140/* ROM definition */
66141ROM_START( uts20 )
67142   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
r9574r9575
71146   ROM_LOAD( "uts20d.rom", 0x3000, 0x1000, CRC(76757cf7) SHA1(b0509d9a35366b21955f83ec3685163844c4dbf1) )
72147   ROM_LOAD( "uts20e.rom", 0x4000, 0x1000, CRC(0dfc8062) SHA1(cd681020bfb4829d4cebaf1b5bf618e67b55bda3) )
73148
74   /* Character generator rom not dumped */
149   /* character generator not dumped, using the one from 'c10' for now */
150   ROM_REGION( 0x2000, "chargen", 0 )
151   ROM_LOAD( "c10_char.bin", 0x0000, 0x2000, NO_DUMP CRC(cb530b6f) SHA1(95590bbb433db9c4317f535723b29516b9b9fcbf))
75152ROM_END
76153
77154/* Driver */
78155
79156/*    YEAR  NAME    PARENT  COMPAT   MACHINE    INPUT    INIT     COMPANY   FULLNAME       FLAGS */
80COMP( 198?, uts20,  0,       0,    uts20,   uts20,    0,        "Sperry Univac",   "UTS-20", GAME_NOT_WORKING | GAME_NO_SOUND)
157COMP( 198?, uts20,  0,       0,    uts20,   uts20,    0,       "Sperry Univac",   "UTS-20", GAME_NOT_WORKING | GAME_NO_SOUND)

Previous 15994 Revisions Next


© 1998-2018 The MESS Team