Previous 15994 Revisions Next

r8683 Sunday 1st August, 2010 at 17:48:38 UTC by Angelo Salese
[TK-80BS]: added basic video and i/o emulation
[src/mess/drivers]tk80bs.c

src/mess/drivers/tk80bs.c
r8682r8683
11/***************************************************************************
2   
3        NEC TK-80BS
42
5       21/07/2010 Skeleton driver.
3   TK-80BS (c) 1980 NEC
64
5   preliminary driver by Angelo Salese
6
7   TODO:
8   - (try to) dump proper roms, the whole driver is based off fake roms;
9   - Remove the PPI hack;
10   - BASIC doesn't seem to work properly;
11
712****************************************************************************/
813
914#include "emu.h"
10#include "cpu/z80/z80.h"
15#include "cpu/i8085/i8085.h"
16#include "machine/i8255a.h"
1117
18static UINT8 *vram;
19static UINT8 keyb_press,keyb_press_flag,shift_press_flag;
20
21static VIDEO_START( tk80bs )
22{
23}
24
25static VIDEO_UPDATE( tk80bs )
26{
27   int x,y;
28   int count;
29
30   count = 0;
31
32   for(y=0;y<16;y++)
33   {
34      for(x=0;x<32;x++)
35      {
36         int tile = vram[count];
37
38         drawgfx_opaque(bitmap, cliprect, screen->machine->gfx[0], tile, 0, 0, 0, x*8, y*8);
39
40         count++;
41      }
42   }
43
44    return 0;
45}
46
47/* FIXME: current i8255 core doesn't seem to like this system at all, so we use custom code here for now */
48static READ8_HANDLER( ppi_custom_r )
49{
50//   printf("%02x\n",offset);
51
52   switch(offset+0x7dfc)
53   {
54      case 0x7dfc: keyb_press_flag = 0; return keyb_press;
55      case 0x7dfd: return 0xff;
56      case 0x7dfe: return keyb_press_flag << 5; //keyboard flag
57   }
58
59   return 0xff;
60}
61
62static WRITE8_HANDLER( ppi_custom_w )
63{
64   //printf("%02x %02x\n",offset,data);
65
66   switch(offset+0x7dfc)
67   {
68      case 0x7dff: break; //display mode + ppi8255 mode (0xb2 -> 0x00 -> 0x03)
69   }
70}
71
1272static ADDRESS_MAP_START(tk80bs_mem, ADDRESS_SPACE_PROGRAM, 8)
1373   ADDRESS_MAP_UNMAP_HIGH
14   AM_RANGE(0x0000, 0x7bff) AM_ROM
15   // AM_RANGE(0x7c00, 0x7dff) memory mapped i/o
16   AM_RANGE(0x7e00, 0x7fff) AM_RAM // video ram
74   AM_RANGE(0x0000, 0x07ff) AM_ROM
75//   AM_RANGE(0x0c00, 0x7bff) AM_ROM // ext
76   AM_RANGE(0x7df8, 0x7df9) AM_NOP // i8251 sio
77//   AM_RANGE(0x7dfc, 0x7dff) AM_DEVREADWRITE("ppi8255_0", i8255a_r, i8255a_w)
78   AM_RANGE(0x7dfc, 0x7dff) AM_READWRITE(ppi_custom_r,ppi_custom_w)
79   AM_RANGE(0x7e00, 0x7fff) AM_RAM AM_BASE(&vram) // video ram
1780   AM_RANGE(0x8000, 0xcfff) AM_RAM // RAM
1881   AM_RANGE(0xd000, 0xefff) AM_ROM // BASIC
1982   AM_RANGE(0xf000, 0xffff) AM_ROM // BSMON
r8682r8683
2285
2386/* Input ports */
2487static INPUT_PORTS_START( tk80bs )
88   PORT_START("key1") //0x00-0x1f
89   PORT_BIT(0x00000001,IP_ACTIVE_HIGH,IPT_UNUSED) //0x00 null
90   PORT_BIT(0x00000002,IP_ACTIVE_HIGH,IPT_UNUSED) //0x01 soh
91   PORT_BIT(0x00000004,IP_ACTIVE_HIGH,IPT_UNUSED) //0x02 stx
92   PORT_BIT(0x00000008,IP_ACTIVE_HIGH,IPT_UNUSED) //0x03 etx
93   PORT_BIT(0x00000010,IP_ACTIVE_HIGH,IPT_UNUSED) //0x04 etx
94   PORT_BIT(0x00000020,IP_ACTIVE_HIGH,IPT_UNUSED) //0x05 eot
95   PORT_BIT(0x00000040,IP_ACTIVE_HIGH,IPT_UNUSED) //0x06 enq
96   PORT_BIT(0x00000080,IP_ACTIVE_HIGH,IPT_UNUSED) //0x07 ack
97   PORT_BIT(0x00000100,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Backspace") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
98   PORT_BIT(0x00000200,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Tab") PORT_CODE(KEYCODE_TAB) PORT_CHAR(9)
99   PORT_BIT(0x00000400,IP_ACTIVE_HIGH,IPT_UNUSED) //0x0a
100   PORT_BIT(0x00000800,IP_ACTIVE_HIGH,IPT_UNUSED) //0x0b lf
101   PORT_BIT(0x00001000,IP_ACTIVE_HIGH,IPT_UNUSED) //0x0c vt
102   PORT_BIT(0x00002000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("RETURN") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(27)
103   PORT_BIT(0x00004000,IP_ACTIVE_HIGH,IPT_UNUSED) //0x0e cr
104   PORT_BIT(0x00008000,IP_ACTIVE_HIGH,IPT_UNUSED) //0x0f so
105
106   PORT_BIT(0x00010000,IP_ACTIVE_HIGH,IPT_UNUSED) //0x10 si
107   PORT_BIT(0x00020000,IP_ACTIVE_HIGH,IPT_UNUSED) //0x11 dle
108   PORT_BIT(0x00040000,IP_ACTIVE_HIGH,IPT_UNUSED) //0x12 dc1
109   PORT_BIT(0x00080000,IP_ACTIVE_HIGH,IPT_UNUSED) //0x13 dc2
110   PORT_BIT(0x00100000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("HOME") PORT_CODE(KEYCODE_HOME)
111   PORT_BIT(0x00200000,IP_ACTIVE_HIGH,IPT_UNUSED) //0x15 dc4
112   PORT_BIT(0x00400000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT)
113   PORT_BIT(0x00800000,IP_ACTIVE_HIGH,IPT_UNUSED) //0x17 syn
114   PORT_BIT(0x01000000,IP_ACTIVE_HIGH,IPT_UNUSED) //0x18 etb
115   PORT_BIT(0x02000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT)
116   PORT_BIT(0x04000000,IP_ACTIVE_HIGH,IPT_UNUSED) //0x1a em
117   PORT_BIT(0x08000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("ESC") PORT_CHAR(27)
118   PORT_BIT(0x10000000,IP_ACTIVE_HIGH,IPT_UNUSED) //0x1c ???
119   PORT_BIT(0x20000000,IP_ACTIVE_HIGH,IPT_UNUSED) //0x1d fs
120   PORT_BIT(0x40000000,IP_ACTIVE_HIGH,IPT_UNUSED) //0x1e gs
121   PORT_BIT(0x80000000,IP_ACTIVE_HIGH,IPT_UNUSED) //0x1f us
122
123   PORT_START("key2") //0x20-0x3f
124   PORT_BIT(0x00000001,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
125   PORT_BIT(0x00000002,IP_ACTIVE_HIGH,IPT_UNUSED) //0x21 !
126   PORT_BIT(0x00000004,IP_ACTIVE_HIGH,IPT_UNUSED) //0x22 "
127   PORT_BIT(0x00000008,IP_ACTIVE_HIGH,IPT_UNUSED) //0x23 #
128   PORT_BIT(0x00000010,IP_ACTIVE_HIGH,IPT_UNUSED) //0x24 $
129   PORT_BIT(0x00000020,IP_ACTIVE_HIGH,IPT_UNUSED) //0x25 %
130   PORT_BIT(0x00000040,IP_ACTIVE_HIGH,IPT_UNUSED) //0x26 &
131   PORT_BIT(0x00000080,IP_ACTIVE_HIGH,IPT_UNUSED) //0x27 '
132   PORT_BIT(0x00000100,IP_ACTIVE_HIGH,IPT_UNUSED) //0x28 (
133   PORT_BIT(0x00000200,IP_ACTIVE_HIGH,IPT_UNUSED) //0x29 )
134   PORT_BIT(0x00000400,IP_ACTIVE_HIGH,IPT_UNUSED) //0x2a *
135   PORT_BIT(0x00000800,IP_ACTIVE_HIGH,IPT_UNUSED)
136   PORT_BIT(0x00001000,IP_ACTIVE_HIGH,IPT_UNUSED) //0x2c ,
137   PORT_BIT(0x00002000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("-") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-')
138   PORT_BIT(0x00004000,IP_ACTIVE_HIGH,IPT_UNUSED) //0x2e .
139   PORT_BIT(0x00008000,IP_ACTIVE_HIGH,IPT_UNUSED) //0x2f /
140
141   PORT_BIT(0x00010000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0')
142   PORT_BIT(0x00020000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CHAR('1')
143   PORT_BIT(0x00040000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CHAR('2')
144   PORT_BIT(0x00080000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CHAR('3')
145   PORT_BIT(0x00100000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHAR('4')
146   PORT_BIT(0x00200000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CHAR('5')
147   PORT_BIT(0x00400000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CHAR('6')
148   PORT_BIT(0x00800000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CHAR('7')
149   PORT_BIT(0x01000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CHAR('8')
150   PORT_BIT(0x02000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CHAR('9')
151   PORT_BIT(0x04000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME(":") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(':')
152   PORT_BIT(0x08000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME(";") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';')
153   PORT_BIT(0x10000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("<") PORT_CODE(KEYCODE_BACKSLASH2) PORT_CHAR('<')
154   PORT_BIT(0x20000000,IP_ACTIVE_HIGH,IPT_UNUSED) //0x3d =
155   PORT_BIT(0x40000000,IP_ACTIVE_HIGH,IPT_UNUSED) //0x3e >
156   PORT_BIT(0x80000000,IP_ACTIVE_HIGH,IPT_UNUSED) //0x3f ?
157
158   PORT_START("key3") //0x40-0x5f
159   PORT_BIT(0x00000001,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("@") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('@')
160   PORT_BIT(0x00000002,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('A')
161   PORT_BIT(0x00000004,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('B')
162   PORT_BIT(0x00000008,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('C')
163   PORT_BIT(0x00000010,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('D')
164   PORT_BIT(0x00000020,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('E')
165   PORT_BIT(0x00000040,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('F')
166   PORT_BIT(0x00000080,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('G')
167   PORT_BIT(0x00000100,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('H')
168   PORT_BIT(0x00000200,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('I')
169   PORT_BIT(0x00000400,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('J')
170   PORT_BIT(0x00000800,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('K')
171   PORT_BIT(0x00001000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('L')
172   PORT_BIT(0x00002000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('M')
173   PORT_BIT(0x00004000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('N')
174   PORT_BIT(0x00008000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('O')
175   PORT_BIT(0x00010000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('P')
176   PORT_BIT(0x00020000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('Q')
177   PORT_BIT(0x00040000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('R')
178   PORT_BIT(0x00080000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('S')
179   PORT_BIT(0x00100000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('T')
180   PORT_BIT(0x00200000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('U')
181   PORT_BIT(0x00400000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('V')
182   PORT_BIT(0x00800000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('W')
183   PORT_BIT(0x01000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('X')
184   PORT_BIT(0x02000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('Y')
185   PORT_BIT(0x04000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('Z')
186   PORT_BIT(0x08000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("[") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('[')
187   PORT_BIT(0x10000000,IP_ACTIVE_HIGH,IPT_UNUSED)
188   PORT_BIT(0x20000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("]") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR(']')
189   PORT_BIT(0x40000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("^") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('^')
190   PORT_BIT(0x80000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("_")
191
192   PORT_START("key_modifiers")
193   PORT_BIT(0x00000001,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("CTRL") PORT_CODE(KEYCODE_LCONTROL)
194   PORT_BIT(0x00000002,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("SHIFT") PORT_CODE(KEYCODE_LSHIFT)
195   PORT_BIT(0x00000004,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("KANA") PORT_CODE(KEYCODE_RCONTROL)
196   PORT_BIT(0x00000008,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("CAPS") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE
197   PORT_BIT(0x00000010,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("GRPH") PORT_CODE(KEYCODE_LALT)
25198INPUT_PORTS_END
26199
200static TIMER_CALLBACK( keyboard_callback )
201{
202   const char* portnames[3] = { "key1","key2","key3" };
203   int i,port_i,scancode;
204   UINT8 keymod = input_port_read(machine,"key_modifiers") & 0x1f;
205   scancode = 0;
27206
28static MACHINE_RESET(tk80bs)
29{   
207   shift_press_flag = ((keymod & 0x02) >> 1);
208
209   for(port_i=0;port_i<3;port_i++)
210   {
211      for(i=0;i<32;i++)
212      {
213         if((input_port_read(machine,portnames[port_i])>>i) & 1)
214         {
215            if(keymod & 0x04) // kana key pressed
216            {
217               scancode |= 0x80;
218            }
219            if(!shift_press_flag)  // shift not pressed
220            {
221               //if(scancode >= 0x41 && scancode < 0x5b)
222               //   scancode += 0x20;  // lowercase doesn't exist here
223            }
224            else
225            {
226               if(scancode >= 0x31 && scancode < 0x3a)
227                  scancode -= 0x10;
228               if(scancode == 0x30)
229                  scancode = 0x3d;
230
231               if(scancode == 0x3b)
232                  scancode = 0x2c;
233
234               if(scancode == 0x3a)
235                  scancode = 0x2e;
236               if(scancode == 0x5b)
237                  scancode = 0x2b;
238               if(scancode == 0x3c)
239                  scancode = 0x3e;
240            }
241            keyb_press = scancode;
242            keyb_press_flag = 1;
243            return;
244         }
245         scancode++;
246      }
247   }
30248}
31249
32static VIDEO_START( tk80bs )
250static MACHINE_START(tk80bs)
33251{
252   timer_pulse(machine, ATTOTIME_IN_HZ(240/32), NULL, 0, keyboard_callback);
34253}
35254
36static VIDEO_UPDATE( tk80bs )
255static MACHINE_RESET(tk80bs)
37256{
38    return 0;
39257}
40258
41259/* F4 Character Displayer */
42260static const gfx_layout tk80bs_charlayout =
43261{
44   8, 8,               /* 8 x 8 characters */
45   512,               /* 512 characters */
46   1,               /* 1 bits per pixel */
47   { 0 },               /* no bitplanes */
48   /* x offsets */
262   8, 8,
263   512,
264   1,
265   { 0 },
49266   { 0, 1, 2, 3, 4, 5, 6, 7 },
50   /* y offsets */
51267   { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
52   8*8               /* every char takes 8 bytes */
268   8*8
53269};
54270
55271static GFXDECODE_START( tk80bs )
56272   GFXDECODE_ENTRY( "gfx", 0x0000, tk80bs_charlayout, 0, 1 )
57273GFXDECODE_END
58274
275#if 0
276static READ8_DEVICE_HANDLER( key_matrix_r )
277{
278   printf("A R\n");
59279
280   return 0;
281}
282
283static READ8_DEVICE_HANDLER( serial_in_r )
284{
285   printf("B R\n");
286
287   return 0;
288}
289
290static WRITE8_DEVICE_HANDLER( serial_out_w )
291{
292}
293
294static I8255A_INTERFACE( ppi8255_intf_0 )
295{
296   DEVCB_HANDLER(key_matrix_r),      /* Port A read */
297   DEVCB_HANDLER(serial_in_r),         /* Port B read */
298   DEVCB_NULL,                     /* Port C read */
299   DEVCB_NULL,                     /* Port A write */
300   DEVCB_NULL,                     /* Port B write */
301   DEVCB_HANDLER(serial_out_w)         /* Port C write */
302};
303#endif
304
60305static MACHINE_DRIVER_START( tk80bs )
61306    /* basic machine hardware */
62    MDRV_CPU_ADD("maincpu",Z80, XTAL_4MHz)
307    MDRV_CPU_ADD("maincpu",I8080, XTAL_1MHz) //unknown clock
63308    MDRV_CPU_PROGRAM_MAP(tk80bs_mem)
64309
310//   MDRV_I8255A_ADD( "ppi8255_0", ppi8255_intf_0 )
311
312    MDRV_MACHINE_START(tk80bs)
65313    MDRV_MACHINE_RESET(tk80bs)
66   
314
67315    /* video hardware */
68316    MDRV_SCREEN_ADD("screen", RASTER)
69317    MDRV_SCREEN_REFRESH_RATE(50)
70318    MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
71319    MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
72    MDRV_SCREEN_SIZE(640, 480)
73    MDRV_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
320    MDRV_SCREEN_SIZE(256, 128)
321    MDRV_SCREEN_VISIBLE_AREA(0, 256-1, 0, 128-1)
74322    MDRV_PALETTE_LENGTH(2)
75323    MDRV_PALETTE_INIT(black_and_white)
76324   MDRV_GFXDECODE(tk80bs)
r8682r8683
81329
82330/* ROM definition */
83331ROM_START( tk80bs )
84    ROM_REGION( 0x10000, "maincpu", 0 )   
332    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
333    /* all of these aren't taken from an original machine*/
85334   ROM_SYSTEM_BIOS(0, "psedo", "Pseudo LEVEL 1")
86   ROMX_LOAD( "tk80.dummy", 0x0000, 0x0800, CRC(553b25ca) SHA1(939350d7fa56ce567ddf393c9f4b9db6ebc18a2c), ROM_BIOS(1))
87   ROMX_LOAD( "ext.l1",     0x0c00, 0x6e46, CRC(d05ed3ff) SHA1(8544aa2cb58df9edf221f5be2cdafa248dd33828), ROM_BIOS(1))
88   ROMX_LOAD( "lv1basic.l1",0xe000, 0x09a2, CRC(3ff67a71) SHA1(528c9331740637e853c099e1739ecdea6dd200bc), ROM_BIOS(1))
89   ROMX_LOAD( "bsmon.l1",   0xf000, 0x0db0, CRC(5daa599b) SHA1(7e6ec5bfb3eea114f7ee9ef589a89246b8533b2f), ROM_BIOS(1))
90   
91   ROM_SYSTEM_BIOS(1, "psedo10", "Pseudo LEVEL 2 1.0")   
92   ROMX_LOAD( "tk80.dummy", 0x0000, 0x0800, CRC(553b25ca) SHA1(939350d7fa56ce567ddf393c9f4b9db6ebc18a2c), ROM_BIOS(2))
93   ROMX_LOAD( "ext.10",     0x0c00, 0x3dc2, CRC(3c64d488) SHA1(919180d5b34b981ab3dd8b2885d3c0933203f355), ROM_BIOS(2))
94   ROMX_LOAD( "lv2basic.10",0xd000, 0x2000, CRC(594fe70e) SHA1(5854c1be5fa78c1bfee365379495f14bc23e15e7), ROM_BIOS(2))
95   ROMX_LOAD( "bsmon.10",   0xf000, 0x0daf, CRC(d0047983) SHA1(79e2b5dc47b574b55375cbafffff144744093ec1), ROM_BIOS(2))
96   
97   ROM_SYSTEM_BIOS(2, "psedo11", "Pseudo LEVEL 2 1.1")     
98   ROMX_LOAD( "tk80.dummy", 0x0000, 0x0800, CRC(553b25ca) SHA1(939350d7fa56ce567ddf393c9f4b9db6ebc18a2c), ROM_BIOS(3))
99   ROMX_LOAD( "ext.11",     0x0c00, 0x3dd4, CRC(bd5c5169) SHA1(2ad70828348372328b76bac0fa93d3f6f17ade34), ROM_BIOS(3))   
100   ROMX_LOAD( "lv2basic.11",0xd000, 0x2000, CRC(3df9a3bd) SHA1(9539409c876bce27d630fe47d07a4316d2ce09cb), ROM_BIOS(3))     
101   ROMX_LOAD( "bsmon.11",   0xf000, 0x0ff6, CRC(fca7a609) SHA1(7c7eb5e5e4cf1e0021383bdfc192b88262aba6f5), ROM_BIOS(3))
102   
335   ROMX_LOAD( "tk80.dummy", 0x0000, 0x0800, BAD_DUMP CRC(553b25ca) SHA1(939350d7fa56ce567ddf393c9f4b9db6ebc18a2c), ROM_BIOS(1))
336   ROMX_LOAD( "ext.l1",     0x0c00, 0x6e46, BAD_DUMP CRC(d05ed3ff) SHA1(8544aa2cb58df9edf221f5be2cdafa248dd33828), ROM_BIOS(1))
337   ROMX_LOAD( "lv1basic.l1",0xe000, 0x09a2, BAD_DUMP CRC(3ff67a71) SHA1(528c9331740637e853c099e1739ecdea6dd200bc), ROM_BIOS(1))
338   ROMX_LOAD( "bsmon.l1",   0xf000, 0x0db0, BAD_DUMP CRC(5daa599b) SHA1(7e6ec5bfb3eea114f7ee9ef589a89246b8533b2f), ROM_BIOS(1))
339
340   ROM_SYSTEM_BIOS(1, "psedo10", "Pseudo LEVEL 2 1.0")
341   ROMX_LOAD( "tk80.dummy", 0x0000, 0x0800, BAD_DUMP CRC(553b25ca) SHA1(939350d7fa56ce567ddf393c9f4b9db6ebc18a2c), ROM_BIOS(2))
342   ROMX_LOAD( "ext.10",     0x0c00, 0x3dc2, BAD_DUMP CRC(3c64d488) SHA1(919180d5b34b981ab3dd8b2885d3c0933203f355), ROM_BIOS(2))
343   ROMX_LOAD( "lv2basic.10",0xd000, 0x2000, BAD_DUMP CRC(594fe70e) SHA1(5854c1be5fa78c1bfee365379495f14bc23e15e7), ROM_BIOS(2))
344   ROMX_LOAD( "bsmon.10",   0xf000, 0x0daf, BAD_DUMP CRC(d0047983) SHA1(79e2b5dc47b574b55375cbafffff144744093ec1), ROM_BIOS(2))
345
346   ROM_SYSTEM_BIOS(2, "psedo11", "Pseudo LEVEL 2 1.1")
347   ROMX_LOAD( "tk80.dummy", 0x0000, 0x0800, BAD_DUMP CRC(553b25ca) SHA1(939350d7fa56ce567ddf393c9f4b9db6ebc18a2c), ROM_BIOS(3))
348   ROMX_LOAD( "ext.11",     0x0c00, 0x3dd4, BAD_DUMP CRC(bd5c5169) SHA1(2ad70828348372328b76bac0fa93d3f6f17ade34), ROM_BIOS(3))
349   ROMX_LOAD( "lv2basic.11",0xd000, 0x2000, BAD_DUMP CRC(3df9a3bd) SHA1(9539409c876bce27d630fe47d07a4316d2ce09cb), ROM_BIOS(3))
350   ROMX_LOAD( "bsmon.11",   0xf000, 0x0ff6, BAD_DUMP CRC(fca7a609) SHA1(7c7eb5e5e4cf1e0021383bdfc192b88262aba6f5), ROM_BIOS(3))
351
103352   ROM_REGION( 0x1000, "gfx", ROMREGION_ERASEFF )
104   ROM_LOAD( "font.rom", 0x0000, 0x1000, CRC(94d95199) SHA1(9fe741eab866b0c520d4108bccc6277172fa190c))
353   ROM_LOAD( "font.rom", 0x0000, 0x1000, BAD_DUMP CRC(94d95199) SHA1(9fe741eab866b0c520d4108bccc6277172fa190c))
105354ROM_END
106355
107356/* Driver */

Previous 15994 Revisions Next


© 1998-2018 The MESS Team