Previous 199869 Revisions Next

r26539 Sunday 8th December, 2013 at 12:59:43 UTC by Robbbert
(MESS) New not-working driver  [Robbbert]
-------------------------------------------

Tavernier


(out of whatsnew) There's no info at all, so it's all guesswork.
[src/mess]mess.lst mess.mak
[src/mess/drivers]tavernie.c*

trunk/src/mess/drivers/tavernie.c
r0r26539
1// license:MAME
2// copyright-holders: I'm not claiming this!
3/***************************************************************************
4
5    Tavernier
6
7    2013-12-08 Skeleton driver.
8
9    This is a French computer. Nothing else is known.
10
11ToDo:
12    - Almost everything
13    - Scrolling can cause the screen to go blank (use Z command to fix)
14    - There's supposed to be a device at 2000-2003
15    - Get rid of the bodgy timer. It won't boot up without it.
16    - There's a bootstrap rom for this, but it's a bad dump
17    - Character rom is not dumped
18
19List of commands (must be in UPPERCASE):
20A -
21B -
22C -
23D -
24G -
25I -
26L -
27M -
28N -
29O -
30P -
31Q -
32R - Display/Alter Registers
33S -
34T -
35U -
36V -
37W -
38X - 'erreur de chargement dos'
39Y -
40Z - more scan lines per row (cursor is bigger)
41
42
43****************************************************************************/
44
45#include "emu.h"
46#include "cpu/m6809/m6809.h"
47#include "video/mc6845.h"
48#include "machine/keyboard.h"
49
50
51class tavernie_state : public driver_device
52{
53public:
54   tavernie_state(const machine_config &mconfig, device_type type, const char *tag)
55      : driver_device(mconfig, type, tag)
56      , m_p_videoram(*this, "videoram")
57      , m_maincpu(*this, "maincpu")
58   { }
59
60   DECLARE_READ8_MEMBER(keyin_r);
61   DECLARE_WRITE8_MEMBER(kbd_put);
62   const UINT8 *m_p_chargen;
63   required_shared_ptr<UINT8> m_p_videoram;
64private:
65   UINT8 m_term_data;
66   virtual void machine_reset();
67   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
68   required_device<cpu_device> m_maincpu;
69};
70
71
72static ADDRESS_MAP_START(tavernie_mem, AS_PROGRAM, 8, tavernie_state)
73   ADDRESS_MAP_UNMAP_HIGH
74   AM_RANGE(0x0000, 0x0fff) AM_RAM
75   AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE("videoram")
76   //AM_RANGE(0x2000, 0x2003) some device
77   AM_RANGE(0x2002, 0x2003) AM_READ(keyin_r)
78   AM_RANGE(0x2080, 0x2080) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
79   AM_RANGE(0x2081, 0x2081) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
80   AM_RANGE(0xe000, 0xefff) AM_RAM
81   AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("roms", 0)
82ADDRESS_MAP_END
83
84static ADDRESS_MAP_START( tavernie_io, AS_IO, 8, tavernie_state)
85   ADDRESS_MAP_UNMAP_HIGH
86ADDRESS_MAP_END
87
88/* Input ports */
89static INPUT_PORTS_START( tavernie )
90INPUT_PORTS_END
91
92void tavernie_state::machine_reset()
93{
94   m_p_chargen = memregion("chargen")->base();
95   m_term_data = 0;
96   timer_set(attotime::from_msec(400), 0); //bodge
97}
98
99static MC6845_UPDATE_ROW( update_row )
100{
101   tavernie_state *state = device->machine().driver_data<tavernie_state>();
102   const rgb_t *palette = palette_entry_list_raw(bitmap.palette());
103   UINT8 chr,gfx=0;
104   UINT16 mem,x;
105   UINT32 *p = &bitmap.pix32(y);
106
107   for (x = 0; x < x_count; x++)
108   {
109      UINT8 inv=0;
110      if (x == cursor_x) inv=0xff;
111      mem = (ma + x) & 0x7ff;
112      if (ra > 7)
113         gfx = inv;  // some blank spacing lines
114      else
115      {
116         chr = state->m_p_videoram[mem];
117         gfx = state->m_p_chargen[(chr<<4) | ra] ^ inv;
118      }
119
120      /* Display a scanline of a character */
121      *p++ = palette[BIT(gfx, 7)];
122      *p++ = palette[BIT(gfx, 6)];
123      *p++ = palette[BIT(gfx, 5)];
124      *p++ = palette[BIT(gfx, 4)];
125      *p++ = palette[BIT(gfx, 3)];
126      *p++ = palette[BIT(gfx, 2)];
127      *p++ = palette[BIT(gfx, 1)];
128      *p++ = palette[BIT(gfx, 0)];
129   }
130}
131
132static MC6845_INTERFACE( mc6845_intf )
133{
134   false,              /* show border area */
135   8,                  /* number of pixels per video memory address */
136   NULL,               /* before pixel update callback */
137   update_row,         /* row update callback */
138   NULL,               /* after pixel update callback */
139   DEVCB_NULL,         /* callback for display state changes */
140   DEVCB_NULL,         /* callback for cursor state changes */
141   DEVCB_NULL,         /* HSYNC callback */
142   DEVCB_NULL,         /* VSYNC callback */
143   NULL                /* update address callback */
144};
145
146void tavernie_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
147{
148   address_space &space = m_maincpu->space(AS_PROGRAM);
149   space.write_byte(0xef7a, 0xff);
150}
151
152READ8_MEMBER( tavernie_state::keyin_r )
153{
154   if (offset)
155      return (m_term_data) ? 0x80 : 0;
156
157   UINT8 ret = m_term_data;
158   m_term_data = 0;
159   return ret;
160}
161
162WRITE8_MEMBER( tavernie_state::kbd_put )
163{
164   m_term_data = data;
165}
166
167static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
168{
169   DEVCB_DRIVER_MEMBER(tavernie_state, kbd_put)
170};
171
172static MACHINE_CONFIG_START( tavernie, tavernie_state )
173   /* basic machine hardware */
174   MCFG_CPU_ADD("maincpu",M6809, XTAL_4MHz)
175   MCFG_CPU_PROGRAM_MAP(tavernie_mem)
176   MCFG_CPU_IO_MAP(tavernie_io)
177
178   /* video hardware */
179   MCFG_SCREEN_ADD("screen", RASTER)
180   MCFG_SCREEN_REFRESH_RATE(50)
181   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
182   MCFG_SCREEN_SIZE(80*8, 25*10)
183   MCFG_SCREEN_VISIBLE_AREA(0, 80*8-1, 0, 25*10-1)
184   MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
185   MCFG_PALETTE_LENGTH(2)
186   MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
187
188   /* Devices */
189   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
190   MCFG_MC6845_ADD("crtc", MC6845, "screen", 1008000, mc6845_intf)
191MACHINE_CONFIG_END
192
193/* ROM definition */
194ROM_START( tavernie )
195   ROM_REGION( 0x1000, "roms", 0 )
196   ROM_LOAD( "tavbug.bin",   0x0000, 0x1000, CRC(77945cae) SHA1(d89b577bc0b4e15e9a49a849998681bdc6cf5fbe) )
197
198   // charrom is missing, using one from 'c10' for now
199   ROM_REGION( 0x2000, "chargen", 0 )
200   ROM_LOAD( "c10_char.bin", 0x0000, 0x2000, CRC(cb530b6f) SHA1(95590bbb433db9c4317f535723b29516b9b9fcbf))
201ROM_END
202
203/* Driver */
204
205/*    YEAR  NAME       PARENT  COMPAT   MACHINE     INPUT     CLASS          INIT    COMPANY        FULLNAME   FLAGS */
206COMP( 19??, tavernie,  0,      0,       tavernie,   tavernie, driver_device,   0,   "<unknown>",  "Tavernier", GAME_IS_SKELETON )
Property changes on: trunk/src/mess/drivers/tavernie.c
Added: svn:eol-style
   + native
Added: svn:mime-type
   + text/plain
trunk/src/mess/mess.mak
r26538r26539
22122212   $(MESS_DRIVERS)/swtpc.o     \
22132213   $(MESS_DRIVERS)/sys2900.o   \
22142214   $(MESS_DRIVERS)/systec.o    \
2215   $(MESS_DRIVERS)/tavernie.o  \
22152216   $(MESS_DRIVERS)/terak.o     \
22162217   $(MESS_DRIVERS)/tim011.o    \
22172218   $(MESS_DRIVERS)/tim100.o    \
r26538r26539
22292230   $(MESS_DRIVERS)/vta2000.o   \
22302231   $(MESS_DRIVERS)/wicat.o     \
22312232   $(MESS_DRIVERS)/xor100.o    \
2232   $(MESS_DRIVERS)/xavix.o    \
2233   $(MESS_DRIVERS)/xavix.o    \
22332234   $(MESS_DRIVERS)/z100.o      \
22342235   $(MESS_DRIVERS)/zorba.o     \
22352236
trunk/src/mess/mess.lst
r26538r26539
23012301cb308
23022302myvision
23032303mkit09
2304tavernie

Previous 199869 Revisions Next


© 1997-2024 The MAME Team