Previous 15994 Revisions Next

r9902 Monday 3rd January, 2011 at 11:23:12 UTC by Robbbert
[DIM68K] Added F4 displayer. Added crudimentary text display.
[src/mess/drivers]dim68k.c

src/mess/drivers/dim68k.c
r9901r9902
1616      : driver_device(machine, config) { }
1717     
1818   UINT16* ram;
19   UINT8 *FNT;
1920};
2021
2122static ADDRESS_MAP_START(dim68k_mem, ADDRESS_SPACE_PROGRAM, 16)
r9901r9902
2728ADDRESS_MAP_END
2829
2930/* Input ports */
30INPUT_PORTS_START( dim68k )
31static INPUT_PORTS_START( dim68k )
3132INPUT_PORTS_END
3233
3334
r9901r9902
4344
4445static VIDEO_START( dim68k )
4546{
47   dim68k_state *state = machine->driver_data<dim68k_state>();
48   state->FNT = machine->region("chargen")->base();
4649}
4750
51// Please note: This is NOT how the real video works. It is a sample, until the driver is rewritten.
4852static VIDEO_UPDATE( dim68k )
4953{
50    return 0;
54   dim68k_state *state = screen->machine->driver_data<dim68k_state>();
55   UINT8 y,ra,chr,gfx;
56   UINT16 sy=0,ma=0x100,x,dchr;
57
58   for (y = 0; y < 25; y++)
59   {
60      for (ra = 0; ra < 10; ra++)
61      {
62         UINT16  *p = BITMAP_ADDR16(bitmap, sy++, 0);
63
64         for (x = ma; x < ma+40; x++)
65         {
66            dchr = state->ram[x]; // reads 2 characters
67            chr = dchr>>8;
68
69            gfx = state->FNT[(chr<<4) | ra] ^ ((chr & 0x80) ? 0xff : 0);
70
71            *p++ = ( gfx & 0x80 ) ? 1 : 0;
72            *p++ = ( gfx & 0x40 ) ? 1 : 0;
73            *p++ = ( gfx & 0x20 ) ? 1 : 0;
74            *p++ = ( gfx & 0x10 ) ? 1 : 0;
75            *p++ = ( gfx & 0x08 ) ? 1 : 0;
76            *p++ = ( gfx & 0x04 ) ? 1 : 0;
77            *p++ = ( gfx & 0x02 ) ? 1 : 0;
78            *p++ = ( gfx & 0x01 ) ? 1 : 0;
79
80            chr = dchr;
81
82            gfx = state->FNT[(chr<<4) | ra] ^ ((chr & 0x80) ? 0xff : 0);
83
84            *p++ = ( gfx & 0x80 ) ? 1 : 0;
85            *p++ = ( gfx & 0x40 ) ? 1 : 0;
86            *p++ = ( gfx & 0x20 ) ? 1 : 0;
87            *p++ = ( gfx & 0x10 ) ? 1 : 0;
88            *p++ = ( gfx & 0x08 ) ? 1 : 0;
89            *p++ = ( gfx & 0x04 ) ? 1 : 0;
90            *p++ = ( gfx & 0x02 ) ? 1 : 0;
91            *p++ = ( gfx & 0x01 ) ? 1 : 0;
92         }
93      }
94      ma+=40;
95   }
96   return 0;
5197}
5298
99/* F4 Character Displayer */
100static const gfx_layout dim68k_charlayout =
101{
102   8, 16,               /* 8 x 16 characters */
103   256,               /* 256 characters */
104   1,               /* 1 bits per pixel */
105   { 0 },               /* no bitplanes */
106   /* x offsets */
107   { 0, 1, 2, 3, 4, 5, 6, 7 },
108   /* y offsets */
109   { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
110   8*16               /* every char takes 16 bytes */
111};
112
113static GFXDECODE_START( dim68k )
114   GFXDECODE_ENTRY( "chargen", 0x0000, dim68k_charlayout, 0, 1 )
115GFXDECODE_END
116
53117static MACHINE_CONFIG_START( dim68k, dim68k_state )
54    /* basic machine hardware */
55    MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz)
56    MCFG_CPU_PROGRAM_MAP(dim68k_mem)   
118   /* basic machine hardware */
119   MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz)
120   MCFG_CPU_PROGRAM_MAP(dim68k_mem)   
57121
58    MCFG_MACHINE_RESET(dim68k)
59   
60    /* video hardware */
61    MCFG_SCREEN_ADD("screen", RASTER)
62    MCFG_SCREEN_REFRESH_RATE(50)
63    MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
64    MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
65    MCFG_SCREEN_SIZE(640, 480)
66    MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
67    MCFG_PALETTE_LENGTH(2)
68    MCFG_PALETTE_INIT(black_and_white)
122   MCFG_MACHINE_RESET(dim68k)
69123
70    MCFG_VIDEO_START(dim68k)
71    MCFG_VIDEO_UPDATE(dim68k)
124   /* video hardware */
125   MCFG_SCREEN_ADD("screen", RASTER)
126   MCFG_SCREEN_REFRESH_RATE(50)
127   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
128   MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
129   MCFG_SCREEN_SIZE(640, 480)
130   MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 250-1)
131   MCFG_PALETTE_LENGTH(2)
132   MCFG_PALETTE_INIT(black_and_white)
133   MCFG_GFXDECODE(dim68k)
134
135   MCFG_VIDEO_START(dim68k)
136   MCFG_VIDEO_UPDATE(dim68k)
72137MACHINE_CONFIG_END
73138
74139/*
r9901r9902
99164*/
100165/* ROM definition */
101166ROM_START( dim68k )
102    ROM_REGION( 0x10000, "user1", ROMREGION_ERASEFF )
167   ROM_REGION( 0x10000, "user1", ROMREGION_ERASEFF )
103168   ROM_LOAD16_BYTE( "mc103e.bin", 0x0000, 0x1000, CRC(4730c902) SHA1(5c4bb79ad22def721a22eb63dd05e0391c8082be))
104169   ROM_LOAD16_BYTE( "mc104.bin",  0x0001, 0x1000, CRC(14b04575) SHA1(43e15d9ebe1c9c1bf1bcfc1be3899a49e6748200))
105170
r9901r9902
109174   ROM_LOAD( "mc108.bin", 0x0000, 0x0400, CRC(687f9b0a) SHA1(ed9f1265b25f89f6d3cf8cd0a7b0fb73cb129f9f))
110175   ROM_LOAD( "mc109.bin", 0x0000, 0x0200, CRC(4a857f98) SHA1(9f2bbc2171fc49f65aa798c9cd7799a26afd2ddf))
111176   ROM_LOAD( "mc110.bin", 0x0000, 0x0100, CRC(e207b457) SHA1(a8987ba3d1bbdb3d8b3b11cec90c532ff09e762e))
177
112178   ROM_REGION( 0x10000, "copz80", ROMREGION_ERASEFF )
113    ROM_LOAD( "mc111.bin", 0x0000, 0x0020, CRC(6a380057) SHA1(6522a7b3e0af9db14a6ed04d4eec3ee6e44c2dab))
179   ROM_LOAD( "mc111.bin", 0x0000, 0x0020, CRC(6a380057) SHA1(6522a7b3e0af9db14a6ed04d4eec3ee6e44c2dab))
180
114181   ROM_REGION( 0x10000, "cop8086", ROMREGION_ERASEFF )
115182   ROM_LOAD( "mc112.bin", 0x0000, 0x0100, CRC(dfd4cdbb) SHA1(a7831d415943fa86c417066807038bccbabb2573))
116183   ROM_LOAD( "mc113.bin", 0x0000, 0x00ef, CRC(594bdf05) SHA1(36db911a27d930e023fa12683e86e9eecfffdba6))
117184 
118    ROM_REGION( 0x1000, "gfx1", ROMREGION_ERASEFF )   
119    ROM_LOAD( "mc105e.bin", 0x0000, 0x1000, CRC(7a09daa8) SHA1(844bfa579293d7c3442fcbfa21bda75fff930394))
120    ROM_REGION( 0x1000, "mb", ROMREGION_ERASEFF )    // mainboard unknown
121    ROM_LOAD( "mc102.bin", 0x0000, 0x00fa, CRC(38e2abac) SHA1(0d7e730b46fc162764c69c51dea3bbe8337b1a7d))
122    ROM_LOAD( "mc101.bin", 0x0000, 0x00fa, CRC(caffb3a0) SHA1(36f5140b306565794c4d856e0c20589b8f2a37f4))
185   ROM_REGION( 0x1000, "chargen", ROMREGION_ERASEFF )   
186   ROM_LOAD( "mc105e.bin", 0x0000, 0x1000, CRC(7a09daa8) SHA1(844bfa579293d7c3442fcbfa21bda75fff930394))
187
188   ROM_REGION( 0x1000, "mb", ROMREGION_ERASEFF )   // mainboard unknown
189   ROM_LOAD( "mc102.bin", 0x0000, 0x00fa, CRC(38e2abac) SHA1(0d7e730b46fc162764c69c51dea3bbe8337b1a7d))
190   ROM_LOAD( "mc101.bin", 0x0000, 0x00fa, CRC(caffb3a0) SHA1(36f5140b306565794c4d856e0c20589b8f2a37f4))
123191ROM_END
124192
125193/* Driver */

Previous 15994 Revisions Next


© 1998-2018 The MESS Team