Previous 15994 Revisions Next

r9735 Monday 6th December, 2010 at 06:35:37 UTC by Dirk Best
[3B1] Added video output, video ram and a layout to display the status LEDs. Currently displays error code "3" on those (testing map ram failed).
[src/mess]mess.mak
[src/mess/drivers]unixpc.c
[src/mess/layout]unixpc.lay*

src/mess/layout/unixpc.lay
r0r9735
1<?xml version="1.0"?>
2<mamelayout version="2">
3   <element name="background">
4   </element>
5   <element name="green_led" defstate="1">
6      <disk state="0">
7         <color red="0" green="0.2" blue="0" />
8      </disk>
9      <disk state="1">
10         <color red="0" green="0.8" blue="0" />
11      </disk>
12   </element>
13   <element name="red_led" defstate="1">
14      <disk state="0">
15         <color red="0.2" green="0" blue="0" />
16      </disk>
17      <disk state="1">
18         <color red="0.8" green="0" blue="0" />
19      </disk>
20   </element>
21   <element name="yellow_led" defstate="1">
22      <disk state="0">
23         <color red="0.2" green="0.2" blue="0" />
24      </disk>
25      <disk state="1">
26         <color red="0.8" green="0.8" blue="0" />
27      </disk>
28   </element>
29   <view name="Screen with status LEDs">
30      <bezel element="background">
31         <bounds x="0" y="0" width="640" height="500" />
32      </bezel>
33      <screen index="0">
34         <bounds left="0" top="0" right="640" bottom="480" />
35      </screen>
36      <bezel name="led_0" element="red_led">
37         <bounds x="10" y="485" width="8" height="8" />
38      </bezel>
39      <bezel name="led_1" element="yellow_led">
40         <bounds x="20" y="485" width="8" height="8" />
41      </bezel>
42      <bezel name="led_2" element="green_led">
43         <bounds x="30" y="485" width="8" height="8" />
44      </bezel>
45      <bezel name="led_3" element="red_led">
46         <bounds x="40" y="485" width="8" height="8" />
47      </bezel>
48   </view>
49</mamelayout>
src/mess/mess.mak
r9734r9735
18541854$(MESS_DRIVERS)/svision.o:   $(MESS_LAYOUT)/svision.lh
18551855$(MESS_DRIVERS)/sym1.o:      $(MESS_LAYOUT)/sym1.lh
18561856$(MESS_DRIVERS)/tec1.o:      $(MESS_LAYOUT)/tec1.lh
1857$(MESS_DRIVERS)/unixpc.o:   $(MESS_LAYOUT)/unixpc.lh
18571858$(MESS_DRIVERS)/ut88.o:      $(MESS_LAYOUT)/ut88mini.lh
18581859$(MESS_DRIVERS)/vboy.o:      $(MESS_LAYOUT)/vboy.lh
18591860$(MESS_DRIVERS)/vcs80.o:   $(MESS_LAYOUT)/vcs80.lh
src/mess/drivers/unixpc.c
r9734r9735
1414#include "emu.h"
1515#include "cpu/m68000/m68000.h"
1616#include "devices/messram.h"
17#include "unixpc.lh"
1718
1819
1920/***************************************************************************
r9734r9735
3233   required_device<cpu_device> m_maincpu;
3334   required_device<running_device> m_ram;
3435
36   virtual bool video_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
37
3538   virtual void machine_reset();
3639
40   DECLARE_WRITE16_MEMBER( misc_control_w );
3741   DECLARE_WRITE16_MEMBER( romlmap_w );
42
43   UINT16 *m_videoram;
3844};
3945
4046
r9734r9735
6369
6470
6571/***************************************************************************
72    MISC
73***************************************************************************/
74
75WRITE16_MEMBER( unixpc_state::misc_control_w )
76{
77   output_set_value("led_0", !BIT(data,  8));
78   output_set_value("led_1", !BIT(data,  9));
79   output_set_value("led_2", !BIT(data, 10));
80   output_set_value("led_3", !BIT(data, 11));
81}
82
83
84/***************************************************************************
85    VIDEO
86***************************************************************************/
87
88bool unixpc_state::video_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
89{
90   for (int y = 0; y < 348; y++)
91      for (int x = 0; x < 720/16; x++)
92         for (int b = 0; b < 16; b++)
93            *BITMAP_ADDR16(&bitmap, y, x * 16 + b) = BIT(m_videoram[y * (720/16) + x], b);
94
95   return 0;
96}
97
98
99/***************************************************************************
66100    ADDRESS MAPS
67101***************************************************************************/
68102
69103static ADDRESS_MAP_START( unixpc_mem, ADDRESS_SPACE_PROGRAM, 16, unixpc_state )
70104   AM_RANGE(0x000000, 0x3fffff) AM_RAMBANK("bank1")
105   AM_RANGE(0x420000, 0x427fff) AM_RAM AM_BASE(m_videoram)
106   AM_RANGE(0x4a0000, 0x4a0001) AM_WRITE(misc_control_w)
71107   AM_RANGE(0x800000, 0xbfffff) AM_MIRROR(0x7fc000) AM_ROM AM_REGION("bootrom", 0)
72108   AM_RANGE(0xe43000, 0xe43001) AM_WRITE(romlmap_w)
73109ADDRESS_MAP_END
r9734r9735
92128
93129   // video hardware
94130   MDRV_SCREEN_ADD("screen", RASTER)
95   MDRV_SCREEN_REFRESH_RATE(50.08)
96   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
97131   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
98   MDRV_SCREEN_SIZE(960, 312)
99   MDRV_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
132   MDRV_SCREEN_RAW_PARAMS(XTAL_20MHz, 896, 0, 720, 367, 0, 348)
133   // vsync should actually last 17264 pixels
100134
135   MDRV_DEFAULT_LAYOUT(layout_unixpc)
136
101137   MDRV_PALETTE_LENGTH(2)
102138   MDRV_PALETTE_INIT(black_and_white)
103139
104
105140   // internal ram
106141   MDRV_RAM_ADD("messram")
107142   MDRV_RAM_DEFAULT_SIZE("1M")

Previous 15994 Revisions Next


© 1998-2018 The MESS Team