Previous 15994 Revisions Next

r2157 Sunday 30th March, 2008 at 08:52:51 UTC by Miodrag Milanović
[SPECIAL] Memory map fix, Special hi-res and Erik added
[src/mess]messdriv.c
[src/mess/drivers]special.c
[src/mess/includes]special.h
[src/mess/machine]special.c
[src/mess/video]special.c

src/mess/includes/special.h
r2156r2157
2626extern READ8_HANDLER ( specimx_video_color_r );
2727extern WRITE8_HANDLER( specimx_video_color_w );
2828
29extern READ8_HANDLER ( specimx_disk_data_r );
30extern WRITE8_HANDLER( specimx_disk_data_w );
3129extern READ8_HANDLER ( specimx_disk_ctrl_r );
3230extern WRITE8_HANDLER( specimx_disk_ctrl_w );
3331
3432extern WRITE8_HANDLER( specimx_sound_w );
3533
34extern DRIVER_INIT( erik );
35extern MACHINE_RESET( erik );
36extern MACHINE_START( erik );
37
38extern READ8_HANDLER ( erik_rr_reg_r );
39extern WRITE8_HANDLER( erik_rr_reg_w );
40extern READ8_HANDLER ( erik_rc_reg_r );
41extern WRITE8_HANDLER( erik_rc_reg_w );
42extern READ8_HANDLER ( erik_disk_reg_r );
43extern WRITE8_HANDLER( erik_disk_reg_w );
44
3645/*----------- defined in video/special.c -----------*/
3746
3847extern UINT8 *specialist_video_ram;
3948extern UINT8 *specimx_colorram;
4049
50extern UINT8 *erik_video_ram_page_1;
51extern UINT8 *erik_video_ram_page_2;
52
4153extern VIDEO_START( special );
4254extern VIDEO_UPDATE( special );
4355
56extern VIDEO_START( specialp );
57extern VIDEO_UPDATE( specialp );
58
4459extern VIDEO_START( specimx );
4560extern VIDEO_UPDATE( specimx );
4661
62extern VIDEO_START( erik );
63extern VIDEO_UPDATE( erik );
64extern PALETTE_INIT( erik );
65
4766extern PALETTE_INIT( specimx );
4867extern rgb_t specimx_palette;
4968
src/mess/video/special.c
r2156r2157
1010#include "driver.h"
1111 
1212UINT8 *specialist_video_ram;
13UINT8 erik_page_active;
14UINT8 *erik_video_ram_page_1;
15UINT8 *erik_video_ram_page_2;
1316
17
1418VIDEO_START( special )
1519{
1620}
r2156r2157
3337   }
3438   return 0;
3539}
40VIDEO_START( specialp )
41{
42}
43 
44VIDEO_UPDATE( specialp )
45{
46  UINT8 code;
47   int y, x, b;
48   
49   for (x = 0; x < 64; x++)
50   {         
51      for (y = 0; y < 256; y++)
52      {
53         code = specialist_video_ram[y + x*256];
54         for (b = 7; b >= 0; b--)
55         {                       
56            *BITMAP_ADDR16(bitmap, y, x*8+(7-b)) =  (code >> b) & 0x01;
57         }
58      }           
59   }
60   return 0;
61}
3662
3763
3864const rgb_t specimx_palette[16] = {
r2156r2157
89115   return 0;
90116}
91117
118const rgb_t erik_palette[8] = {
119   MAKE_RGB(0x00, 0x00, 0x00), // 0
120   MAKE_RGB(0x00, 0x00, 0xff), // 1
121   MAKE_RGB(0xff, 0x00, 0x00), // 2
122   MAKE_RGB(0xff, 0x00, 0xff), // 3 
123   MAKE_RGB(0x00, 0xff, 0x00), // 4 
124   MAKE_RGB(0x00, 0xff, 0xff), // 5 
125   MAKE_RGB(0xff, 0xff, 0x00), // 6 
126   MAKE_RGB(0xff, 0xff, 0xff)  // 7 
127};
128
129PALETTE_INIT( erik )
130{
131   palette_set_colors(machine, 0, erik_palette, ARRAY_LENGTH(erik_palette));
132}
133
134UINT8 erik_color_1;
135UINT8 erik_color_2;
136UINT8 erik_background;
137
138VIDEO_START( erik )
139{   
140}
141
142VIDEO_UPDATE( erik )
143{
144  UINT8 code1;
145  UINT8 code2;
146  UINT8 color1,color2;
147   int y, x, b;
148   UINT8 *erik_video_ram_p1;
149   UINT8 *erik_video_ram_p2;
150   
151   erik_video_ram_p1 =  mess_ram + 0x9000;
152   erik_video_ram_p2 =  mess_ram + 0xd000;
153     
154   for (x = 0; x < 48; x++)
155   {         
156      for (y = 0; y < 256; y++)
157      {
158         code1  = erik_video_ram_p1[y + x*256];
159         code2  = erik_video_ram_p2[y + x*256];
160         
161         for (b = 7; b >= 0; b--)
162         {                       
163            color1 = ((code1 >> b) & 0x01)==0 ? erik_background : erik_color_1;
164            color2 = ((code2 >> b) & 0x01)==0 ? erik_background : erik_color_2;
165            *BITMAP_ADDR16(bitmap, y, x*8+(7-b)) =  color1 | color2;
166         }
167      }           
168   }     
169   return 0;
170}
171
172
src/mess/messdriv.c
r2156r2157
852852
853853   /* Specialist */   
854854   DRIVER( special )   
855   DRIVER( specialp )
855856   DRIVER( lik )   
857   DRIVER( erik )   
856858   DRIVER( specimx )   
857859   
858860/****************Games*******************************************************/
src/mess/machine/special.c
r2156r2157
5353   int dat = 0;
5454   double level;   
5555   
56    if ((specialist_8255_porta & 0x01)==0) dat ^= (readinputport(0) ^ 0xff);
57   if ((specialist_8255_porta & 0x02)==0) dat ^= (readinputport(1) ^ 0xff);
58    if ((specialist_8255_porta & 0x04)==0) dat ^= (readinputport(2) ^ 0xff);
59    if ((specialist_8255_porta & 0x08)==0) dat ^= (readinputport(3) ^ 0xff);
60   if ((specialist_8255_porta & 0x10)==0) dat ^= (readinputport(4) ^ 0xff);
61   if ((specialist_8255_porta & 0x20)==0) dat ^= (readinputport(5) ^ 0xff);
62    if ((specialist_8255_porta & 0x40)==0) dat ^= (readinputport(6) ^ 0xff);
63    if ((specialist_8255_porta & 0x80)==0) dat ^= (readinputport(7) ^ 0xff);
64   if ((specialist_8255_portc & 0x01)==0) dat ^= (readinputport(8) ^ 0xff);
65   if ((specialist_8255_portc & 0x02)==0) dat ^= (readinputport(9) ^ 0xff);
66    if ((specialist_8255_portc & 0x04)==0) dat ^= (readinputport(10) ^ 0xff);
67    if ((specialist_8255_portc & 0x08)==0) dat ^= (readinputport(11) ^ 0xff);
56  if ((specialist_8255_porta & 0x01)==0) dat ^= (readinputport(0) ^ 0xff);
57  if ((specialist_8255_porta & 0x02)==0) dat ^= (readinputport(1) ^ 0xff);
58  if ((specialist_8255_porta & 0x04)==0) dat ^= (readinputport(2) ^ 0xff);
59  if ((specialist_8255_porta & 0x08)==0) dat ^= (readinputport(3) ^ 0xff);
60  if ((specialist_8255_porta & 0x10)==0) dat ^= (readinputport(4) ^ 0xff);
61  if ((specialist_8255_porta & 0x20)==0) dat ^= (readinputport(5) ^ 0xff);
62  if ((specialist_8255_porta & 0x40)==0) dat ^= (readinputport(6) ^ 0xff);
63  if ((specialist_8255_porta & 0x80)==0) dat ^= (readinputport(7) ^ 0xff);
64  if ((specialist_8255_portc & 0x01)==0) dat ^= (readinputport(8) ^ 0xff);
65  if ((specialist_8255_portc & 0x02)==0) dat ^= (readinputport(9) ^ 0xff);
66  if ((specialist_8255_portc & 0x04)==0) dat ^= (readinputport(10) ^ 0xff);
67  if ((specialist_8255_portc & 0x08)==0) dat ^= (readinputport(11) ^ 0xff);
6868     
6969   dat = (dat  << 2) ^0xff;   
7070   if (readinputport(12)!=0xff) dat ^= 0x02;
r2156r2157
132132READ8_HANDLER( specialist_keyboard_r )
133133{   
134134   return ppi8255_0_r(machine, (offset & 3));   
135   return 0;
135136}
136137
137138WRITE8_HANDLER( specialist_keyboard_w )
138{
139   ppi8255_0_w(machine, (offset & 3) , data );
139{   
140   ppi8255_0_w(machine, (offset & 3) , data );   
140141}
141142
142143
r2156r2157
160161   return specimx_color;
161162}
162163
163
164void specimx_set_bank(int i) {   
164void specimx_set_bank(int i,int data) {     
165165   memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xc000, 0xffbf, 0, 0, SMH_BANK3);
166166   memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xffc0, 0xffdf, 0, 0, SMH_BANK4);
167167   memory_set_bankptr(4, mess_ram + 0xffc0);
168168   switch(i) {
169      case 0 :
169      case 0 :           
170170            memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x0000, 0x8fff, 0, 0, SMH_BANK1);
171171            memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x9000, 0xbfff, 0, 0, video_memory_w);
172172         
r2156r2157
188188         
189189            memory_set_bankptr(1, memory_region(REGION_CPU1) + 0x10000);
190190            memory_set_bankptr(2, memory_region(REGION_CPU1) + 0x19000);
191            memory_set_bankptr(3, mess_ram + 0xc000);
191           if (data & 0x80) {
192               memory_set_bankptr(3, mess_ram + 0x1c000);               
193            } else {
194               memory_set_bankptr(3, mess_ram + 0xc000);               
195            }
192196            break;
193197   }
194198}
195199WRITE8_HANDLER( specimx_select_bank )
196200{   
197   specimx_set_bank(offset);   
201   specimx_set_bank(offset, data);   
198202}
199203
200void specimx_fdc_callback(running_machine *machine, wd17xx_state_t event, void *param)
201{
202   switch (event)
203   {
204      case WD17XX_IRQ_CLR:
205      case WD17XX_IRQ_SET:
206      case WD17XX_DRQ_CLR:
207      case WD17XX_DRQ_SET:
208         /* do nothing */
209         break;
210   }
211}
212
213204DRIVER_INIT(specimx)
214205{
215   memset(mess_ram,0,256*1024);
206   memset(mess_ram,0,128*1024);
216207}
217208
218209static const struct pit8253_config specimx_pit8253_intf =
r2156r2157
239230
240231MACHINE_START( specimx )
241232{
242   wd17xx_init(machine, WD_TYPE_1793, specimx_fdc_callback, NULL);
233   wd17xx_init(machine, WD_TYPE_1793, NULL , NULL);
243234   wd17xx_set_density (DEN_FM_HI);
244235   pit8253_init(1, &specimx_pit8253_intf);
245236}
r2156r2157
247238MACHINE_RESET( specimx )
248239{
249240   ppi8255_init(&specialist_ppi8255_interface);
250   specimx_set_bank(2); // Initiali load ROM disk
241   specimx_set_bank(2,0x00); // Initiali load ROM disk
251242   specimx_color = 0x70;   
252243   wd17xx_reset();
253244   wd17xx_set_side(0);
r2156r2157
257248   pit8253_0_gate_w(machine, 2, 0);
258249}
259250
260READ8_HANDLER ( specimx_disk_data_r )
261{
262 switch(offset) {       
263   case 0 :
264         return wd17xx_status_r(machine, offset);
265   case 1 :
266         return wd17xx_track_r(machine, offset);
267    case 2 :
268         return wd17xx_sector_r(machine, offset);
269   case 3 :
270         return wd17xx_data_r(machine, offset);
271  } 
272  return 0;
273}
274WRITE8_HANDLER( specimx_disk_data_w )
275{     
276  switch(offset) {       
277      case 0 :
278         wd17xx_command_w(machine, offset, data);break;
279      case 1 :
280         wd17xx_track_w (machine, offset, data);break;
281      case 2 :
282         wd17xx_sector_w (machine, offset, data);break;
283      case 3 :
284         wd17xx_data_w (machine, offset, data);break;
285  } 
286}
287
288251READ8_HANDLER ( specimx_disk_ctrl_r )
289252{
290253  return 0xff;
r2156r2157
344307   
345308      pit8253_0_w(machine,offset,data);     
346309}
310
311
312/*
313   Erik
314*/
315static UINT8 RR_register;
316static UINT8 RC_register;
317
318void erik_set_bank(void) {     
319   UINT8 bank1 = (RR_register & 3);
320   UINT8 bank2 = ((RR_register >> 2) & 3);
321   UINT8 bank3 = ((RR_register >> 4) & 3);
322   UINT8 bank4 = ((RR_register >> 6) & 3);
323   
324   memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x0000, 0x3fff, 0, 0, SMH_BANK1);
325   memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x4000, 0x8fff, 0, 0, SMH_BANK2);
326   memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x9000, 0xbfff, 0, 0, SMH_BANK3);
327   memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xc000, 0xefff, 0, 0, SMH_BANK4);
328   memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xf000, 0xf7ff, 0, 0, SMH_BANK5);
329   memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xf800, 0xffff, 0, 0, SMH_BANK6);
330   
331   switch(bank1) {
332      case    1:                   
333      case    2:
334      case    3:         
335                  memory_set_bankptr(1, mess_ram + 0x10000*(bank1-1));         
336                  break;     
337      case    0:
338                  memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x0000, 0x3fff, 0, 0, SMH_UNMAP);
339                  memory_set_bankptr(1, memory_region(REGION_CPU1) + 0x10000);   
340                  break;
341   }
342   switch(bank2) {
343      case    1:                   
344      case    2:
345      case    3:         
346                  memory_set_bankptr(2, mess_ram + 0x10000*(bank2-1) + 0x4000);         
347                  break;     
348      case    0:
349                  memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x4000, 0x8fff, 0, 0, SMH_UNMAP);
350                  memory_set_bankptr(2, memory_region(REGION_CPU1) + 0x14000);   
351                  break;
352   }
353   switch(bank3) {
354      case    1:                                     
355      case    2:
356      case    3:         
357                  memory_set_bankptr(3, mess_ram + 0x10000*(bank3-1) + 0x9000);         
358                  break;     
359      case    0:
360                  memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x9000, 0xbfff, 0, 0, SMH_UNMAP);
361                  memory_set_bankptr(3, memory_region(REGION_CPU1) + 0x19000);   
362                  break;
363   }
364   switch(bank4) {
365      case    1:                   
366      case    2:
367      case    3:         
368                  memory_set_bankptr(4, mess_ram + 0x10000*(bank4-1) + 0x0c000);         
369                  memory_set_bankptr(5, mess_ram + 0x10000*(bank4-1) + 0x0f000);         
370                  memory_set_bankptr(6, mess_ram + 0x10000*(bank4-1) + 0x0f800);         
371                  break;     
372      case    0:
373                  memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xc000, 0xefff, 0, 0, SMH_UNMAP);
374                  memory_set_bankptr(4, memory_region(REGION_CPU1) + 0x1c000);   
375                  memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xf000, 0xf7ff, 0, 0, SMH_UNMAP);
376                  memory_install_read8_handler (0, ADDRESS_SPACE_PROGRAM, 0xf000, 0xf7ff, 0, 0, SMH_NOP);
377                  memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xf800, 0xffff, 0, 0, specialist_keyboard_w);
378                  memory_install_read8_handler (0, ADDRESS_SPACE_PROGRAM, 0xf800, 0xffff, 0, 0, specialist_keyboard_r);
379                  break;
380   }
381}
382
383extern UINT8 erik_color_1;
384extern UINT8 erik_color_2;
385extern UINT8 erik_background;
386
387DRIVER_INIT(erik)
388{   
389   memset(mess_ram,0,192*1024);   
390   erik_color_1 = 0;
391   erik_color_2 = 0;
392   erik_background = 0;
393}
394
395MACHINE_START( erik )
396{
397   wd17xx_init(machine, WD_TYPE_1793, NULL , NULL);
398}
399
400MACHINE_RESET( erik )
401{
402   ppi8255_init(&specialist_ppi8255_interface);
403   wd17xx_reset();     
404   
405   RR_register = 0x00;   
406   RC_register = 0x00;
407   erik_set_bank();           
408}
409
410READ8_HANDLER ( erik_rr_reg_r )
411{
412   return RR_register;
413}
414WRITE8_HANDLER( erik_rr_reg_w )
415{
416   RR_register = data;
417   erik_set_bank();
418}
419
420READ8_HANDLER ( erik_rc_reg_r )
421{
422   return RC_register;
423}
424
425
426WRITE8_HANDLER( erik_rc_reg_w )
427{
428   RC_register = data;
429   erik_color_1 =  RC_register & 7;
430   erik_color_2 =  (RC_register >> 3) & 7;
431   erik_background = ((RC_register  >> 6 ) & 1) + ((RC_register  >> 7 ) & 1) * 4;
432}
433
434READ8_HANDLER ( erik_disk_reg_r ) {
435   return 0xff;   
436}
437
438WRITE8_HANDLER( erik_disk_reg_w ) {
439   wd17xx_set_side (data & 1);   
440   wd17xx_set_drive((data >> 1) & 1);
441   if((data >>2) & 1) {
442      wd17xx_set_density (DEN_FM_LO);
443   } else {
444      wd17xx_set_density (DEN_FM_HI);
445  }   
446}
src/mess/drivers/special.c
r2156r2157
2929    AM_RANGE( 0xf800, 0xffff ) AM_READWRITE(specialist_keyboard_r,specialist_keyboard_w) // 8255 for keyboard
3030ADDRESS_MAP_END
3131
32static ADDRESS_MAP_START(specialp_mem, ADDRESS_SPACE_PROGRAM, 8)
33     AM_RANGE( 0x0000, 0x2fff ) AM_RAMBANK(1) // First bank
34    AM_RANGE( 0x3000, 0x7fff ) AM_RAM  // RAM   
35    AM_RANGE( 0x8000, 0xbfff ) AM_RAM  AM_BASE(&specialist_video_ram) // Video RAM
36    AM_RANGE( 0xc000, 0xf000 ) AM_ROM  // System ROM
37    AM_RANGE( 0xf000, 0xf700 ) AM_NOP
38    AM_RANGE( 0xf800, 0xffff ) AM_READWRITE(specialist_keyboard_r,specialist_keyboard_w) // 8255 for keyboard
39ADDRESS_MAP_END
3240
41static ADDRESS_MAP_START(erik_mem, ADDRESS_SPACE_PROGRAM, 8)
42    AM_RANGE( 0x0000, 0x3fff ) AM_READWRITE(SMH_BANK1, SMH_BANK1)
43    AM_RANGE( 0x4000, 0x8fff ) AM_READWRITE(SMH_BANK2, SMH_BANK2)
44    AM_RANGE( 0x9000, 0xbfff ) AM_READWRITE(SMH_BANK3, SMH_BANK3)
45    AM_RANGE( 0xc000, 0xefff ) AM_READWRITE(SMH_BANK4, SMH_BANK4)
46    AM_RANGE( 0xf000, 0xf7ff ) AM_READWRITE(SMH_BANK5, SMH_BANK5)
47    AM_RANGE( 0xf800, 0xffff ) AM_READWRITE(SMH_BANK6, SMH_BANK6)
48ADDRESS_MAP_END
49
50static ADDRESS_MAP_START( erik_io_map, ADDRESS_SPACE_IO, 8 )
51   ADDRESS_MAP_GLOBAL_MASK(0xff)
52   AM_RANGE(0xf1, 0xf1) AM_READWRITE(erik_rr_reg_r, erik_rr_reg_w)
53   AM_RANGE(0xf2, 0xf2) AM_READWRITE(erik_rc_reg_r, erik_rc_reg_w)
54   AM_RANGE(0xf3, 0xf3) AM_READWRITE(erik_disk_reg_r, erik_disk_reg_w)
55   AM_RANGE(0xf4, 0xf4) AM_READWRITE(wd17xx_status_r, wd17xx_command_w)
56   AM_RANGE(0xf5, 0xf5) AM_READWRITE(wd17xx_track_r, wd17xx_track_w)
57   AM_RANGE(0xf6, 0xf6) AM_READWRITE(wd17xx_sector_r, wd17xx_sector_w)
58   AM_RANGE(0xf7, 0xf7) AM_READWRITE(wd17xx_data_r, wd17xx_data_w)
59ADDRESS_MAP_END
60
3361static ADDRESS_MAP_START(specimx_mem, ADDRESS_SPACE_PROGRAM, 8)
62     ADDRESS_MAP_UNMAP_HIGH
3463    AM_RANGE( 0x0000, 0x8fff ) AM_READWRITE(SMH_BANK1, SMH_BANK1)
3564      AM_RANGE( 0x9000, 0xbfff ) AM_READWRITE(SMH_BANK2, SMH_BANK2)
3665     AM_RANGE( 0xc000, 0xffbf ) AM_READWRITE(SMH_BANK3, SMH_BANK3)
3766    AM_RANGE( 0xffc0, 0xffdf ) AM_READWRITE(SMH_BANK4, SMH_BANK4)
3867    AM_RANGE( 0xffe0, 0xffe3 ) AM_READWRITE(specialist_keyboard_r,specialist_keyboard_w) // 8255 for keyboard   
3968    AM_RANGE( 0xffe4, 0xffe7 ) AM_RAM //external 8255
40    AM_RANGE( 0xffe8, 0xffeb ) AM_READWRITE(specimx_disk_data_r,specimx_disk_data_w)
69    AM_RANGE( 0xffe8, 0xffe8 ) AM_READWRITE(wd17xx_status_r,wd17xx_command_w)
70    AM_RANGE( 0xffe9, 0xffe9 ) AM_READWRITE(wd17xx_track_r,wd17xx_track_w)
71    AM_RANGE( 0xffea, 0xffea ) AM_READWRITE(wd17xx_sector_r,wd17xx_sector_w)
72    AM_RANGE( 0xffea, 0xffeb ) AM_READWRITE(wd17xx_data_r,wd17xx_data_w)
4173    AM_RANGE( 0xffec, 0xffef ) AM_READWRITE(pit8253_0_r, specimx_sound_w)
4274    AM_RANGE( 0xfff0, 0xfff3 ) AM_READWRITE(specimx_disk_ctrl_r, specimx_disk_ctrl_w)
4375    AM_RANGE( 0xfff8, 0xfff8 ) AM_READWRITE(specimx_video_color_r,specimx_video_color_w)
r2156r2157
282314/* Machine driver */
283315static MACHINE_DRIVER_START( special )
284316    /* basic machine hardware */
285    MDRV_CPU_ADD(8080, 2000000)
317    MDRV_CPU_ADD_TAG("main", 8080, 2000000)
286318    MDRV_CPU_PROGRAM_MAP(specialist_mem, 0)
287319    MDRV_MACHINE_RESET( special )
288320       
r2156r2157
307339      MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)       
308340MACHINE_DRIVER_END
309341
342static MACHINE_DRIVER_START( specialp )
343    /* basic machine hardware */
344    MDRV_IMPORT_FROM(special)
345    MDRV_CPU_MODIFY("main")       
346    MDRV_CPU_PROGRAM_MAP(specialp_mem, 0)
347   
348    MDRV_SCREEN_MODIFY("main")
349    MDRV_VIDEO_START(specialp)
350    MDRV_VIDEO_UPDATE(specialp)
351      MDRV_SCREEN_SIZE(512, 256)
352      MDRV_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
353MACHINE_DRIVER_END
310354
311355static MACHINE_DRIVER_START( specimx )
312      MDRV_CPU_ADD(8080, 2000000)
313        MDRV_CPU_PROGRAM_MAP(specimx_mem, 0)     
356    MDRV_IMPORT_FROM(special)
357    MDRV_CPU_MODIFY("main")       
358     MDRV_CPU_PROGRAM_MAP(specimx_mem, 0)     
314359       
315        MDRV_MACHINE_START ( specimx )
316        MDRV_MACHINE_RESET ( specimx )
317       
360     MDRV_MACHINE_START ( specimx )
361     MDRV_MACHINE_RESET ( specimx )
362             
363    /* video hardware */       
364      MDRV_SCREEN_MODIFY("main")     
365      MDRV_PALETTE_LENGTH(16)
366      MDRV_PALETTE_INIT( specimx )
367     
368      MDRV_VIDEO_START(specimx)
369      MDRV_VIDEO_UPDATE(specimx)
370
371    /* audio hardware */
372      MDRV_SOUND_ADD(CUSTOM, 0)
373      MDRV_SOUND_CONFIG(specimx_sound_interface)
374      MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)             
375MACHINE_DRIVER_END
376
377static MACHINE_DRIVER_START( erik )
378    /* basic machine hardware */
379    MDRV_CPU_ADD(Z80, 4000000)
380    MDRV_CPU_PROGRAM_MAP(erik_mem, 0)
381    MDRV_CPU_IO_MAP(erik_io_map, 0)
382   
383    MDRV_MACHINE_RESET( erik )
384    MDRV_MACHINE_START( erik )
318385       
319386    /* video hardware */       
320387      MDRV_SCREEN_ADD("main", RASTER)         
r2156r2157
323390      MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
324391      MDRV_SCREEN_SIZE(384, 256)
325392      MDRV_SCREEN_VISIBLE_AREA(0, 384-1, 0, 256-1)
326      MDRV_PALETTE_LENGTH(16)
327      MDRV_PALETTE_INIT( specimx )
393      MDRV_PALETTE_LENGTH(8)
394      MDRV_PALETTE_INIT(erik)   
328395     
329       MDRV_VIDEO_START(specimx)
330       MDRV_VIDEO_UPDATE(specimx)
331
396    MDRV_VIDEO_START(erik)
397    MDRV_VIDEO_UPDATE(erik)
332398    /* audio hardware */
333399      MDRV_SPEAKER_STANDARD_MONO("mono")
334400      MDRV_SOUND_ADD(DAC, 0)
335401      MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)           
336402      MDRV_SOUND_ADD(WAVE, 0)
337403      MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)       
338      MDRV_SOUND_ADD(CUSTOM, 0)
339      MDRV_SOUND_CONFIG(specimx_sound_interface)
340      MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)             
341404MACHINE_DRIVER_END
342405 
343406/* ROM definition */
344407ROM_START( special )
345408    ROM_REGION( 0x10000, REGION_CPU1, ROMREGION_ERASEFF )
346    ROM_SYSTEM_BIOS(0, "1st", "1st rev.")
347    ROMX_LOAD( "special1.rom", 0xc000, 0x1000, CRC(217414BD) SHA1(345cd1410fbca8f75421d12d1419f27f81cd35d6), ROM_BIOS(1))
348    ROM_SYSTEM_BIOS(1, "2nd", "2nd rev.")
349    ROMX_LOAD( "special2.rom", 0xc000, 0x1000, CRC(FEDFBC37) SHA1(b79474833bbf558c39493dec3e8eabf9885c7c7c), ROM_BIOS(2))
409    ROM_SYSTEM_BIOS(0, "2nd", "2nd rev.")
410    ROMX_LOAD( "special2.rom", 0xc000, 0x1000, CRC(FEDFBC37) SHA1(b79474833bbf558c39493dec3e8eabf9885c7c7c), ROM_BIOS(1))
411    ROM_SYSTEM_BIOS(1, "1st", "1st rev.")
412    ROMX_LOAD( "special1.rom", 0xc000, 0x1000, CRC(217414BD) SHA1(345cd1410fbca8f75421d12d1419f27f81cd35d6), ROM_BIOS(2))
350413    ROM_SYSTEM_BIOS(2, "3rd", "3rd rev.")
351414    ROMX_LOAD( "special3.rom", 0xc000, 0x1400, CRC(85F08629) SHA1(69b00b897a32087133076886d0d9d83ed5944469), ROM_BIOS(3))
352415    ROM_SYSTEM_BIOS(3, "7th", "7th rev.")   
353416    ROMX_LOAD( "special7.rom", 0xc000, 0x2000, CRC(FBE3438A) SHA1(83ca8f77f908d1c2f5c486c27d587d738bdde922), ROM_BIOS(4))
354417ROM_END
355418
419ROM_START( specialp )
420    ROM_REGION( 0x10000, REGION_CPU1, ROMREGION_ERASEFF )   
421    ROM_LOAD( "special6.rom", 0xc000, 0x1000, CRC(F0C5A0AC))
422 ROM_END
423
356424ROM_START( lik )
357425    ROM_REGION( 0x10000, REGION_CPU1, ROMREGION_ERASEFF )
358426    ROM_SYSTEM_BIOS(0, "1st", "1st rev.")
r2156r2157
362430ROM_END
363431
364432ROM_START( specimx )
365    ROM_REGION( 0x1b800, REGION_CPU1, ROMREGION_ERASEFF )
366    ROM_LOAD( "specimx.rom", 0x10000, 0xb800, CRC(DB68F9B1) SHA1(c79888449f8a605267ec3e10dcc8e6e6f43b3a95))
433    ROM_REGION( 0x20000, REGION_CPU1, ROMREGION_ERASEFF )
434    ROM_SYSTEM_BIOS(0, "FOS", "ROM FOS")
435    ROMX_LOAD( "specimx.rom", 0x10000, 0xb800,  CRC(DB68F9B1) SHA1(c79888449f8a605267ec3e10dcc8e6e6f43b3a95), ROM_BIOS(1))
436    ROM_SYSTEM_BIOS(1, "NC", "NC")
437    ROMX_LOAD( "ncrdy.rom",   0x10000, 0x10000, CRC(5D04C522) SHA1(d7daa7fe14cd8e0c6f87fd6453ec3e94ea2c259f) ,ROM_BIOS(2))
367438ROM_END
368439
440ROM_START( erik )
441    ROM_REGION( 0x20000, REGION_CPU1, ROMREGION_ERASEFF )
442    ROM_LOAD( "erik.bin", 0x10000, 0x10000, CRC(6F3208F4) SHA1(41f6e2763ef60d3c7214c98893e580d25346fa2d))
443ROM_END
444
369445static void special_cassette_getinfo(const mess_device_class *devclass, UINT32 state, union devinfo *info)
370446{
371447   /* cassette */
r2156r2157
402478SYSTEM_CONFIG_END
403479 
404480SYSTEM_CONFIG_START(specimx)   
405    CONFIG_RAM_DEFAULT(256 * 1024)
481    CONFIG_RAM_DEFAULT(128 * 1024)
406482   CONFIG_DEVICE(special_cassette_getinfo)
407483   CONFIG_DEVICE(specimx_floppy_getinfo);
408484SYSTEM_CONFIG_END
409485
486SYSTEM_CONFIG_START(erik)   
487    CONFIG_RAM_DEFAULT(192 * 1024)
488   CONFIG_DEVICE(special_cassette_getinfo)
489   CONFIG_DEVICE(specimx_floppy_getinfo);
490SYSTEM_CONFIG_END
491
410492/* Driver */
411493 
412494/*    YEAR  NAME            PARENT  COMPAT     MACHINE    INPUT      INIT     CONFIG       COMPANY           FULLNAME      FLAGS */
413COMP( 1985, special,        0,        0,       special,    special,    special, special,  "",                 "Specialist",      0)
495COMP( 1985, special,    0,        0,       special,    special,    special, special,  "",                 "Specialist",      0)
496COMP( 1985, specialp,   special,0,       specialp, special,    special, special,  "",                 "Specialist + hires graph",      0)
414497COMP( 1985, lik,          special,0,       special,    special,    special, special,  "",                 "Lik",             0)
415COMP( 1985, specimx,         special,0,       specimx,    specimx,    specimx, specimx,  "",                 "Specialist MX",    0)
498COMP( 1985, specimx,      special,0,       specimx,    specimx,    specimx, specimx,  "",                 "Specialist MX",    0)
499COMP( 1994, erik,         special,0,       erik,       special,    erik,     erik,      "",                 "Erik",    0)
500
501

Previous 15994 Revisions Next


© 1998-2018 The MESS Team