Previous 15994 Revisions Next

r799 Wednesday 8th August, 2007 at 13:40:30 UTC by Curt Coder
[ATARIST] Now displays something
[src/mess/drivers]atarist.c
[src/mess/machine]68901mfp.c 68901mfp.h
[src/mess/video]atarist.c

src/mess/video/atarist.c
r798r799
1414#include "video/generic.h"
1515#include "cpu/m68000/m68k.h"
1616#include "cpu/m68000/m68000.h"
17#include "machine/68901mfp.h"
1718#include "video/atarist.h"
1819 
1920static struct SHIFTER
r798r799
3132   int hcount;
3233   int bitplane;
3334   int shift;
35   int h, v;
3436} shifter;
3537 
3638static mame_timer *atarist_glue_timer;
r798r799
8587 
8688static TIMER_CALLBACK(atarist_glue_tick)
8789{
88   int h = CLEAR_LINE, v = CLEAR_LINE, de;
90   int de;
8991   UINT8 *RAM = memory_region(REGION_CPU1) + shifter.base + shifter.counter;
9092 
9193   shifter.vcount = video_screen_get_vpos(0);
r798r799
9799      switch (shifter.hcount)
98100      {
99101      case ATARIST_HBDEND_PAL:
100         h = ASSERT_LINE;
102         shifter.h = ASSERT_LINE;
101103         break;
102104      case ATARIST_HBDSTART_PAL:
103         h = CLEAR_LINE;
105         shifter.h = CLEAR_LINE;
104106         break;
105107      case ATARIST_HBSTART_PAL/4:
106108         cpunum_set_input_line(0, MC68000_IRQ_2, ASSERT_LINE);
r798r799
115117         shifter.counter = 0;
116118         break;
117119      case ATARIST_VBDEND_PAL:
118         v = ASSERT_LINE;
120         shifter.v = ASSERT_LINE;
119121         break;
120122      case ATARIST_VBDSTART_PAL:
121         v = CLEAR_LINE;
123         shifter.v = CLEAR_LINE;
122124         break;
123125      }
124126   }
r798r799
128130      switch (shifter.hcount)
129131      {
130132      case ATARIST_HBDEND_NTSC:
131         h = ASSERT_LINE;
133         shifter.h = ASSERT_LINE;
132134         break;
133135      case ATARIST_HBDSTART_NTSC:
134         h = CLEAR_LINE;
136         shifter.h = CLEAR_LINE;
135137         break;
136138      case ATARIST_HBSTART_NTSC/4:
137139         cpunum_set_input_line(0, MC68000_IRQ_2, ASSERT_LINE);
r798r799
146148         cpunum_set_input_line(0, MC68000_IRQ_4, ASSERT_LINE);
147149         break;
148150      case ATARIST_VBDEND_NTSC:
149         v = ASSERT_LINE;
151         shifter.v = ASSERT_LINE;
150152         break;
151153      case ATARIST_VBDSTART_NTSC:
152         v = CLEAR_LINE;
154         shifter.v = CLEAR_LINE;
153155         break;
154156      }
155157   }
156158 
157   de = h && v;
159   de = shifter.h && shifter.v;
158160 
161   mfp68901_tbi_w(0, de);
162 
159163//   logerror("shifter base %x\n", shifter.base);
160164//   logerror("shifter counter %x\n", shifter.counter);
161165//   logerror("shifter bitplane %x\n", shifter.bitplane);
src/mess/machine/68901mfp.c
r798r799
106106{
107107   mfp_68901 *mfp_p = &mfp[which];
108108 
109   logerror("MFP68901 read register %u\n", reg);
110 
109111   switch (reg)
110112   {
111   case 0x00:
113   case MFP68901_REGISTER_GPIP:
112114      {
113115      UINT8 gpio = 0;
114116 
r798r799
123125      mfp68901_irq_ack(which);
124126      return gpio;
125127      }
126   case 0x01: return mfp_p->aer;
127   case 0x02: return mfp_p->ddr;
128   case 0x03: return mfp_p->iera;
129   case 0x04: return mfp_p->ierb;
130   case 0x05: return mfp_p->ipra;
131   case 0x06: return mfp_p->iprb;
132   case 0x07: return mfp_p->isra;
133   case 0x08: return mfp_p->isrb;
134   case 0x09: return mfp_p->imra;
135   case 0x0a: return mfp_p->imrb;
136   case 0x0b: return mfp_p->vr;
137   case 0x0c: return mfp_p->tacr;
138   case 0x0d: return mfp_p->tbcr;
139   case 0x0e: return mfp_p->tcdcr;
140   case 0x0f: return mfp_p->tarr;
141   case 0x10: return mfp_p->tbrr;
142   case 0x11: return mfp_p->tcrr;
143   case 0x12: return mfp_p->tdrr;
144   case 0x13: return mfp_p->scr;
145   case 0x14: return mfp_p->ucr;
146   case 0x15: return mfp_p->rsr;
147   case 0x16: return mfp_p->tsr;
148   case 0x17: return mfp_p->udr;
149   default:   return 0;
128   case MFP68901_REGISTER_AER:   return mfp_p->aer;
129   case MFP68901_REGISTER_DDR:   return mfp_p->ddr;
130 
131   case MFP68901_REGISTER_IERA:  return mfp_p->iera;
132   case MFP68901_REGISTER_IERB:  return mfp_p->ierb;
133   case MFP68901_REGISTER_IPRA:  return mfp_p->ipra;
134   case MFP68901_REGISTER_IPRB:  return mfp_p->iprb;
135   case MFP68901_REGISTER_ISRA:  return mfp_p->isra;
136   case MFP68901_REGISTER_ISRB:  return mfp_p->isrb;
137   case MFP68901_REGISTER_IMRA:  return mfp_p->imra;
138   case MFP68901_REGISTER_IMRB:  return mfp_p->imrb;
139   case MFP68901_REGISTER_VR:    return mfp_p->vr;
140 
141   case MFP68901_REGISTER_TACR:  return mfp_p->tacr;
142   case MFP68901_REGISTER_TBCR:  return mfp_p->tbcr;
143   case MFP68901_REGISTER_TCDCR: return mfp_p->tcdcr;
144   case MFP68901_REGISTER_TADR:
145      return mfp_p->tarr;
146   case MFP68901_REGISTER_TBDR: 
147      return mfp_p->tbrr;
148   case MFP68901_REGISTER_TCDR:  return mfp_p->tcrr;
149   case MFP68901_REGISTER_TDDR:  return mfp_p->tdrr;
150 
151   case MFP68901_REGISTER_SCR:   return mfp_p->scr;
152   case MFP68901_REGISTER_UCR:   return mfp_p->ucr;
153   case MFP68901_REGISTER_RSR:   return mfp_p->rsr;
154   case MFP68901_REGISTER_TSR:   return mfp_p->tsr;
155   case MFP68901_REGISTER_UDR:   return mfp_p->udr;
156   default:   
157      return 0;
150158   }
151159}
152160 
r798r799
235243      switch (mfp_p->tacr & 0x0f)
236244      {
237245      case MFP68901_TCR_TIMER_DELAY_4:
238         mame_timer_adjust(mfp_p->timer_a, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 4));
246         mame_timer_adjust(mfp_p->timer_a, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 4));
239247         break;
240248      case MFP68901_TCR_TIMER_DELAY_10:
241         mame_timer_adjust(mfp_p->timer_a, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 10));
249         mame_timer_adjust(mfp_p->timer_a, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 10));
242250         break;
243251      case MFP68901_TCR_TIMER_DELAY_16:
244         mame_timer_adjust(mfp_p->timer_a, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 16));
252         mame_timer_adjust(mfp_p->timer_a, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 16));
245253         break;
246254      case MFP68901_TCR_TIMER_DELAY_50:
247         mame_timer_adjust(mfp_p->timer_a, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 50));
255         mame_timer_adjust(mfp_p->timer_a, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 50));
248256         break;
249257      case MFP68901_TCR_TIMER_DELAY_64:
250         mame_timer_adjust(mfp_p->timer_a, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 64));
258         mame_timer_adjust(mfp_p->timer_a, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 64));
251259         break;
252260      case MFP68901_TCR_TIMER_DELAY_100:
253         mame_timer_adjust(mfp_p->timer_a, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 100));
261         mame_timer_adjust(mfp_p->timer_a, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 100));
254262         break;
255263      case MFP68901_TCR_TIMER_DELAY_200:
256         mame_timer_adjust(mfp_p->timer_a, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 200));
264         mame_timer_adjust(mfp_p->timer_a, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 200));
257265         break;
258266      case MFP68901_TCR_TIMER_STOPPED:
259267      case MFP68901_TCR_TIMER_EVENT:
r798r799
285293      switch (mfp_p->tbcr & 0x0f)
286294      {
287295      case MFP68901_TCR_TIMER_DELAY_4:
288         mame_timer_adjust(mfp_p->timer_b, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 4));
296         mame_timer_adjust(mfp_p->timer_b, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 4));
289297         break;
290298      case MFP68901_TCR_TIMER_DELAY_10:
291         mame_timer_adjust(mfp_p->timer_b, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 10));
299         mame_timer_adjust(mfp_p->timer_b, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 10));
292300         break;
293301      case MFP68901_TCR_TIMER_DELAY_16:
294         mame_timer_adjust(mfp_p->timer_b, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 16));
302         mame_timer_adjust(mfp_p->timer_b, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 16));
295303         break;
296304      case MFP68901_TCR_TIMER_DELAY_50:
297         mame_timer_adjust(mfp_p->timer_b, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 50));
305         mame_timer_adjust(mfp_p->timer_b, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 50));
298306         break;
299307      case MFP68901_TCR_TIMER_DELAY_64:
300         mame_timer_adjust(mfp_p->timer_b, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 64));
308         mame_timer_adjust(mfp_p->timer_b, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 64));
301309         break;
302310      case MFP68901_TCR_TIMER_DELAY_100:
303         mame_timer_adjust(mfp_p->timer_b, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 100));
311         mame_timer_adjust(mfp_p->timer_b, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 100));
304312         break;
305313      case MFP68901_TCR_TIMER_DELAY_200:
306         mame_timer_adjust(mfp_p->timer_b, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 200));
314         mame_timer_adjust(mfp_p->timer_b, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 200));
307315         break;
308316      case MFP68901_TCR_TIMER_STOPPED:
309317      case MFP68901_TCR_TIMER_EVENT:
r798r799
335343      switch (mfp_p->tcdcr & 0x07)
336344      {
337345      case MFP68901_TCR_TIMER_DELAY_4:
338         mame_timer_adjust(mfp_p->timer_d, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 4));
346         mame_timer_adjust(mfp_p->timer_d, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 4));
339347         break;
340348      case MFP68901_TCR_TIMER_DELAY_10:
341         mame_timer_adjust(mfp_p->timer_d, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 10));
349         mame_timer_adjust(mfp_p->timer_d, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 10));
342350         break;
343351      case MFP68901_TCR_TIMER_DELAY_16:
344         mame_timer_adjust(mfp_p->timer_d, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 16));
352         mame_timer_adjust(mfp_p->timer_d, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 16));
345353         break;
346354      case MFP68901_TCR_TIMER_DELAY_50:
347         mame_timer_adjust(mfp_p->timer_d, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 50));
355         mame_timer_adjust(mfp_p->timer_d, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 50));
348356         break;
349357      case MFP68901_TCR_TIMER_DELAY_64:
350         mame_timer_adjust(mfp_p->timer_d, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 64));
358         mame_timer_adjust(mfp_p->timer_d, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 64));
351359         break;
352360      case MFP68901_TCR_TIMER_DELAY_100:
353         mame_timer_adjust(mfp_p->timer_d, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 100));
361         mame_timer_adjust(mfp_p->timer_d, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 100));
354362         break;
355363      case MFP68901_TCR_TIMER_DELAY_200:
356         mame_timer_adjust(mfp_p->timer_d, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 200));
364         mame_timer_adjust(mfp_p->timer_d, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 200));
357365         break;
358366      case MFP68901_TCR_TIMER_STOPPED:
359367         mame_timer_enable(mfp_p->timer_d, 0);
r798r799
363371      switch ((mfp_p->tcdcr >> 4) & 0x07)
364372      {
365373      case MFP68901_TCR_TIMER_DELAY_4:
366         mame_timer_adjust(mfp_p->timer_c, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 4));
374         mame_timer_adjust(mfp_p->timer_c, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 4));
367375         break;
368376      case MFP68901_TCR_TIMER_DELAY_10:
369         mame_timer_adjust(mfp_p->timer_c, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 10));
377         mame_timer_adjust(mfp_p->timer_c, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 10));
370378         break;
371379      case MFP68901_TCR_TIMER_DELAY_16:
372         mame_timer_adjust(mfp_p->timer_c, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 16));
380         mame_timer_adjust(mfp_p->timer_c, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 16));
373381         break;
374382      case MFP68901_TCR_TIMER_DELAY_50:
375         mame_timer_adjust(mfp_p->timer_c, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 50));
383         mame_timer_adjust(mfp_p->timer_c, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 50));
376384         break;
377385      case MFP68901_TCR_TIMER_DELAY_64:
378         mame_timer_adjust(mfp_p->timer_c, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 64));
386         mame_timer_adjust(mfp_p->timer_c, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 64));
379387         break;
380388      case MFP68901_TCR_TIMER_DELAY_100:
381         mame_timer_adjust(mfp_p->timer_c, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 100));
389         mame_timer_adjust(mfp_p->timer_c, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 100));
382390         break;
383391      case MFP68901_TCR_TIMER_DELAY_200:
384         mame_timer_adjust(mfp_p->timer_c, time_zero, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 200));
392         mame_timer_adjust(mfp_p->timer_c, time_never, 0, MAME_TIME_IN_HZ(mfp_p->timer_clock / 200));
385393         break;
386394      case MFP68901_TCR_TIMER_STOPPED:
387395         mame_timer_enable(mfp_p->timer_c, 0);
r798r799
526534 
527535         if (mfp_p->imra & 0x20)
528536         {
529            mfp68901_irq_ack(which);
530             
537            //mfp68901_irq_ack(which);
538            mfp_p->irq_callback(which, ASSERT_LINE, (mfp_p->vr & 0xf0) | MFP68901_INT_TIMER_A);
539 
531540            if (mfp_p->tao)
532541            {
533542               mfp_p->tao = 0;
r798r799
564573 
565574         if (mfp_p->imra & 0x01)
566575         {
567            mfp68901_irq_ack(which);
576            //mfp68901_irq_ack(which);
577            mfp_p->irq_callback(which, ASSERT_LINE, (mfp_p->vr & 0xf0) | MFP68901_INT_TIMER_B);
568578             
569579            if (mfp_p->tbo)
570580            {
r798r799
602612 
603613         if (mfp_p->imrb & 0x20)
604614         {
605            mfp68901_irq_ack(which);
615            //mfp68901_irq_ack(which);
616            mfp_p->irq_callback(which, ASSERT_LINE, (mfp_p->vr & 0xf0) | MFP68901_INT_TIMER_C);
606617             
607618            if (mfp_p->tco)
608619            {
r798r799
640651 
641652         if (mfp_p->imrb & 0x01)
642653         {
643            mfp68901_irq_ack(which);
654            //mfp68901_irq_ack(which);
655            mfp_p->irq_callback(which, ASSERT_LINE, (mfp_p->vr & 0xf0) | MFP68901_INT_TIMER_D);
644656             
645657            if (mfp_p->tdo)
646658            {
r798r799
688700         // count down on 0->1 transition
689701         if (mfp_p->tai == 0 && value == 1)
690702         {
691            mfp_p->tai = value;
692703            mfp68901_timer_count_a(which);
693704         }
694705      }
r798r799
697708         // count down on 1->0 transition
698709         if (mfp_p->tai == 1 && value == 0)
699710         {
700            mfp_p->tai = value;
701711            mfp68901_timer_count_a(which);
702712         }
703713      }
714       
715      mfp_p->tai = value;
704716      break;
705717 
706718   case MFP68901_TCR_TIMER_PULSE_4:
r798r799
738750         // count down on 0->1 transition
739751         if (mfp_p->tbi == 0 && value == 1)
740752         {
741            mfp_p->tbi = value;
742753            mfp68901_timer_count_b(which);
743754         }
744755      }
r798r799
747758         // count down on 1->0 transition
748759         if (mfp_p->tbi == 1 && value == 0)
749760         {
750            mfp_p->tbi = value;
751761            mfp68901_timer_count_b(which);
752762         }
753763      }
764 
765      mfp_p->tbi = value;
754766      break;
755767 
756768   case MFP68901_TCR_TIMER_PULSE_4:
r798r799
794806   mfp68901_timer_count_d(which);
795807}
796808 
797READ16_HANDLER( mfp68901_0_register16_r ) { return mfp68901_register_r(0, offset / 2); }
798READ16_HANDLER( mfp68901_1_register16_r ) { return mfp68901_register_r(1, offset / 2); }
799READ16_HANDLER( mfp68901_2_register16_r ) { return mfp68901_register_r(2, offset / 2); }
800READ16_HANDLER( mfp68901_3_register16_r ) { return mfp68901_register_r(3, offset / 2); }
809READ16_HANDLER( mfp68901_0_register16_r ) { return mfp68901_register_r(0, offset); }
810READ16_HANDLER( mfp68901_1_register16_r ) { return mfp68901_register_r(1, offset); }
811READ16_HANDLER( mfp68901_2_register16_r ) { return mfp68901_register_r(2, offset); }
812READ16_HANDLER( mfp68901_3_register16_r ) { return mfp68901_register_r(3, offset); }
801813 
802WRITE16_HANDLER( mfp68901_0_register_msb_w ) { if (ACCESSING_MSB) mfp68901_register_w(0, offset / 2, (data >> 8) & 0xff); }
803WRITE16_HANDLER( mfp68901_1_register_msb_w ) { if (ACCESSING_MSB) mfp68901_register_w(0, offset / 2, (data >> 8) & 0xff); }
804WRITE16_HANDLER( mfp68901_2_register_msb_w ) { if (ACCESSING_MSB) mfp68901_register_w(0, offset / 2, (data >> 8) & 0xff); }
805WRITE16_HANDLER( mfp68901_3_register_msb_w ) { if (ACCESSING_MSB) mfp68901_register_w(0, offset / 2, (data >> 8) & 0xff); }
814WRITE16_HANDLER( mfp68901_0_register_msb_w ) { if (ACCESSING_MSB) mfp68901_register_w(0, offset, (data >> 8) & 0xff); }
815WRITE16_HANDLER( mfp68901_1_register_msb_w ) { if (ACCESSING_MSB) mfp68901_register_w(0, offset, (data >> 8) & 0xff); }
816WRITE16_HANDLER( mfp68901_2_register_msb_w ) { if (ACCESSING_MSB) mfp68901_register_w(0, offset, (data >> 8) & 0xff); }
817WRITE16_HANDLER( mfp68901_3_register_msb_w ) { if (ACCESSING_MSB) mfp68901_register_w(0, offset, (data >> 8) & 0xff); }
806818 
807WRITE16_HANDLER( mfp68901_0_register_lsb_w ) { if (ACCESSING_LSB) mfp68901_register_w(0, offset / 2, data & 0xff); }
808WRITE16_HANDLER( mfp68901_1_register_lsb_w ) { if (ACCESSING_LSB) mfp68901_register_w(0, offset / 2, data & 0xff); }
809WRITE16_HANDLER( mfp68901_2_register_lsb_w ) { if (ACCESSING_LSB) mfp68901_register_w(0, offset / 2, data & 0xff); }
810WRITE16_HANDLER( mfp68901_3_register_lsb_w ) { if (ACCESSING_LSB) mfp68901_register_w(0, offset / 2, data & 0xff); }
819WRITE16_HANDLER( mfp68901_0_register_lsb_w ) { if (ACCESSING_LSB) mfp68901_register_w(0, offset, data & 0xff); }
820WRITE16_HANDLER( mfp68901_1_register_lsb_w ) { if (ACCESSING_LSB) mfp68901_register_w(0, offset, data & 0xff); }
821WRITE16_HANDLER( mfp68901_2_register_lsb_w ) { if (ACCESSING_LSB) mfp68901_register_w(0, offset, data & 0xff); }
822WRITE16_HANDLER( mfp68901_3_register_lsb_w ) { if (ACCESSING_LSB) mfp68901_register_w(0, offset, data & 0xff); }
src/mess/machine/68901mfp.h
r798r799
7070   MFP68901_INT_GPI7
7171};
7272 
73 
7473#define MFP68901_AER_GPIP_0            0x01
7574#define MFP68901_AER_GPIP_1            0x02
7675#define MFP68901_AER_GPIP_2            0x04
src/mess/drivers/atarist.c
r798r799
2626   - connect ikbd to ACIA #0
2727   - floppy image device_load
2828   - MFP interrupts
29   - MMU banking
3029   - accurate screen timing
3130   - fdc.dma_int ?
3231   - save states
3332   - Mega ST real time clock
3433   - mirror 8 first bytes of ROM inside romdef
34   - memory shadow
3535
3636*/
3737
r798r799
258258     
259259      bit      description
260260     
261      0      JOY 1-5
261      0      JOY 1-5 output
262262      1      JOY 0-6
263263      2      JOY 1-6
264264      3      SD FROM CPU
r798r799
324324ADDRESS_MAP_END
325325
326326static ADDRESS_MAP_START(keyboard_io_map, ADDRESS_SPACE_IO, 8)
327   AM_RANGE(HD63701_PORT1, HD63701_PORT1) AM_WRITE(hd6301_port1_w)
327/*   AM_RANGE(HD63701_PORT1, HD63701_PORT1) AM_WRITE(hd6301_port1_w)
328328   AM_RANGE(HD63701_PORT2, HD63701_PORT2) AM_READWRITE(hd6301_port2_r, hd6301_port2_w)
329329   AM_RANGE(HD63701_PORT3, HD63701_PORT3) AM_READ(hd6301_port_3_r)
330   AM_RANGE(HD63701_PORT4, HD63701_PORT4) AM_READ(hd6301_port_4_r)
330   AM_RANGE(HD63701_PORT4, HD63701_PORT4) AM_READ(hd6301_port_4_r)*/
331331ADDRESS_MAP_END
332332
333333static ADDRESS_MAP_START(st_map, ADDRESS_SPACE_PROGRAM, 16)
r798r799
341341   AM_RANGE(0xff8600, 0xff860f) AM_READWRITE(atarist_fdc_r, atarist_fdc_w)
342342   AM_RANGE(0xff8800, 0xff8801) AM_READWRITE(AY8910_read_port_0_msb_r, AY8910_control_port_0_msb_w)
343343   AM_RANGE(0xff8802, 0xff8803) AM_WRITE(AY8910_write_port_0_msb_w)
344   AM_RANGE(0xfffa00, 0xfffa3f) AM_READWRITE(mfp68901_0_register16_r, mfp68901_0_register_lsb_w)
344   AM_RANGE(0xfffa00, 0xfffa2f) AM_READWRITE(mfp68901_0_register16_r, mfp68901_0_register_lsb_w)
345345   AM_RANGE(0xfffc00, 0xfffc01) AM_READWRITE(acia6850_0_stat_msb_r, acia6850_0_ctrl_msb_w)
346346   AM_RANGE(0xfffc02, 0xfffc03) AM_READWRITE(acia6850_0_data_msb_r, acia6850_0_data_msb_w)
347347   AM_RANGE(0xfffc04, 0xfffc05) AM_READWRITE(acia6850_1_stat_msb_r, acia6850_1_ctrl_msb_w)
r798r799
498498   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad +") PORT_CODE(KEYCODE_PLUS_PAD)
499499   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 3") PORT_CODE(KEYCODE_3_PAD)
500500   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad Enter") PORT_CODE(KEYCODE_ENTER_PAD)
501
502   PORT_START_TAG("JOY0")
503   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )    PORT_PLAYER(1) PORT_8WAY // XB
504   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )  PORT_PLAYER(1) PORT_8WAY // XA
505   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )  PORT_PLAYER(1) PORT_8WAY // YA
506   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_8WAY // YB
507   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )    PORT_PLAYER(2) PORT_8WAY
508   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )  PORT_PLAYER(2) PORT_8WAY
509   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )  PORT_PLAYER(2) PORT_8WAY
510   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_8WAY
511
512   PORT_START_TAG("JOY1")
513   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1)
514   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
515   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
516
517   PORT_START_TAG("MOUSE_X")
518   PORT_BIT( 0xff, 0x00, IPT_MOUSE_X ) PORT_SENSITIVITY(100) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_PLAYER(1)   
519
520   PORT_START_TAG("MOUSE_Y")
521   PORT_BIT( 0xff, 0x00, IPT_MOUSE_Y ) PORT_SENSITIVITY(100) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_PLAYER(1)   
501522INPUT_PORTS_END
502523
503524INPUT_PORTS_START( atarist )
r798r799
509530   PORT_CONFSETTING( 0x00, "Monochrome" )
510531   PORT_CONFSETTING( 0x80, "Color" )
511532
512   PORT_START_TAG("MOUSE_X")
513   PORT_BIT( 0xff, 0x00, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_PLAYER(1)   
514
515   PORT_START_TAG("MOUSE_Y")
516   PORT_BIT( 0xff, 0x00, IPT_MOUSE_Y) PORT_SENSITIVITY(100) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_PLAYER(1)   
517
518   PORT_START_TAG("MOUSE_BUTTONS")
519   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1)
520   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
521
522   PORT_START_TAG("JOY0")
523   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_8WAY
524   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_8WAY
525   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_8WAY
526   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_8WAY
527   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
528   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
529   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
530   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
531
532   PORT_START_TAG("JOY1")
533   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_8WAY
534   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_8WAY
535   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_8WAY
536   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_8WAY
537   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
538   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
539   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
540   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
541   
542533   PORT_INCLUDE( ikbd )
543534INPUT_PORTS_END
544535
r798r799
811802ROM_START( atarist )
812803   ROM_REGION16_BE( 0x1000000, REGION_CPU1, 0 )
813804   ROM_SYSTEM_BIOS( 0, "tos100", "TOS 1.0 (ROM TOS)" )
814   ROMX_LOAD( "tos100.img", 0xfc0000, 0x030000, BAD_DUMP CRC(d331af30) SHA1(7bcc2311d122f451bd03c9763ade5a119b2f90da), ROM_BIOS(1) ) // this is a US rom
805   ROMX_LOAD( "tos100.img", 0xfc0000, 0x030000, BAD_DUMP CRC(16e3e979), ROM_BIOS(1) ) // this is a German rom
815806   ROM_SYSTEM_BIOS( 1, "tos102", "TOS 1.02 (MEGA TOS)" )
816807   ROMX_LOAD( "tos102.img", 0xfc0000, 0x030000, BAD_DUMP CRC(3b5cd0c5) SHA1(87900a40a890fdf03bd08be6c60cc645855cbce5), ROM_BIOS(2) )
817808   ROM_SYSTEM_BIOS( 2, "tos104", "TOS 1.04 (Rainbow TOS)" )

Previous 15994 Revisions Next


© 1998-2018 The MESS Team