Previous 199869 Revisions Next

r19057 Tuesday 20th November, 2012 at 01:23:14 UTC by Angelo Salese
Added preliminary attribute VRAM
[src/mess/drivers]apc.c
[src/mess/video]upd7220.c

trunk/src/mess/drivers/apc.c
r19056r19057
55    preliminary driver by Angelo Salese
66
77    TODO:
8    - video emulation
9    - Floppy device
10    - keyboard
8    - video emulation (bitmap part)
119    - Understand interrupt sources
1210    - NMI seems valid, dumps a x86 stack to vram?
13    - Unknown RTC device type;
11    - Unknown RTC device type (upd1990a?);
1412    - What are exactly APU and MPU devices? They sounds scary ...
1513    - DMA hook-ups
1614    - serial ports
r19056r19057
191189   for(x=0;x<pitch;x++)
192190   {
193191      UINT8 tile_data;
194//      UINT8 secret,reverse,u_line,v_line;
192      UINT8 u_line, o_line, v_line, reverse, blink;
195193      UINT8 color;
196194      UINT8 tile,attr,pen;
197195      UINT32 tile_addr;
r19056r19057
202200      tile = state->m_video_ram_1[(tile_addr*2+1) & 0x1fff] & 0x00ff;
203201      attr = (state->m_video_ram_1[(tile_addr*2 & 0x1fff) | 0x2000] & 0x00ff);
204202
205//      secret = (attr & 1) ^ 1;
206      //blink = attr & 2;
207//      reverse = attr & 4;
208//      u_line = attr & 8;
209//      v_line = attr & 0x10;
203      u_line = attr & 0x01;
204      o_line = attr & 0x02;
205      v_line = attr & 0x04;
206      blink  = attr & 0x08;
207      reverse = attr & 0x10;
208//      secret= (attr & 1) ^ 1;
210209      color = (attr & 0xe0) >> 5;
211210
212211      for(yi=0;yi<lr;yi++)
r19056r19057
225224//              tile_data = secret ? 0 : (state->m_char_rom[tile*char_size+interlace_on*0x800+yi]);
226225            tile_data = (state->m_char_rom[(tile & 0x7f)+((tile & 0x80)<<4)+((yi & 0xf)*0x80)+((yi & 0x10)<<8)]);
227226
228//              if(reverse) { tile_data^=0xff; }
229//              if(u_line && yi == 7) { tile_data = 0xff; }
230//              if(v_line)  { tile_data|=8; }
227            if(reverse) { tile_data^=0xff; }
228            if(u_line && yi == lr-1) { tile_data = 0xff; }
229            if(o_line && yi == 0) { tile_data = 0xff; }
230            if(v_line)  { tile_data|=8; }
231            if(blink && device->machine().primary_screen->frame_number() & 0x10) { tile_data = 0; } // TODO: rate & correct behaviour
231232
232233            if(cursor_on && cursor_addr == tile_addr && device->machine().primary_screen->frame_number() & 0x10)
233234               tile_data^=0xff;
r19056r19057
297298   }
298299   else
299300   {
300      printf("Read melody port %02x\n",offset+0x60);
301      //printf("Read melody port %02x\n",offset+0x60);
301302      res = 0x80;
302303   }
303304
r19056r19057
404405
405406static ADDRESS_MAP_START( apc_map, AS_PROGRAM, 16, apc_state )
406407   AM_RANGE(0x00000, 0x9ffff) AM_RAM
407//  AM_RANGE(0xa0000, 0xaffff) space for an external ROM
408//  AM_RANGE(0xa0000, 0xa0fff) CMOS
409//   AM_RANGE(0xc0000, 0xcffff) standard character ROM
410//   AM_RANGE(0xde000, 0xdffff) AUX character RAM
411//   AM_RANGE(0xe0000, 0xeffff) Special Character RAM
408412   AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION("ipl", 0)
409413ADDRESS_MAP_END
410414
r19056r19057
743747irq assignment:
744748
7457498259 master:
746ir0 (enabled at POST, unknown purpose)
747ir1
748ir2
749ir3 (enabled after CP/M loading, serial?)
750ir0 all stop (enabled at POST, unknown purpose)
751ir1 Communication
752ir2 Option
753ir3 Timer (enabled after CP/M loading, serial?)
750754ir4 keyboard (almost trusted, check code at fe64a)
751ir5
752ir6
753ir7
755ir5 Option
756ir6 Option
757ir7 (ODA Printer?)
754758
7557598259 slave:
756ir0
757ir1
758ir2
759ir3 fdd irq?
760ir4
761ir5
762ir6
763ir7
760ir0 Option
761ir1 Option
762ir2 CRT
763ir3 FDD
764ir4 Option
765ir5 Option
766ir6 APU
767ir7 Option
764768*/
765769
766770WRITE_LINE_MEMBER(apc_state::apc_master_set_int_line)
trunk/src/mess/video/upd7220.c
r19056r19057
12481248   case COMMAND_START: /* start display & end idle mode */
12491249      m_de = 1;
12501250
1251      if (LOG) logerror("uPD7220 '%s' DE: 1\n", tag());
1251      //if (LOG) logerror("uPD7220 '%s' DE: 1\n", tag());
12521252      break;
12531253
12541254   case COMMAND_BCTRL: /* display blanking control */
12551255      m_de = m_cr & 0x01;
12561256
1257      if (LOG) logerror("uPD7220 '%s' DE: %u\n", tag(), m_de);
1257      //if (LOG) logerror("uPD7220 '%s' DE: %u\n", tag(), m_de);
12581258      break;
12591259
12601260   case COMMAND_ZOOM: /* zoom factors specify */
r19056r19057
12751275
12761276         m_ead = (upper_addr << 16) | (m_pr[2] << 8) | m_pr[1];
12771277
1278         if (LOG) logerror("uPD7220 '%s' EAD: %06x\n", tag(), m_ead);
1278         //if (LOG) logerror("uPD7220 '%s' EAD: %06x\n", tag(), m_ead);
12791279
12801280         if(m_param_ptr == 4)
12811281         {
12821282            m_dad = m_pr[3] >> 4;
1283            if (LOG) logerror("uPD7220 '%s' DAD: %01x\n", tag(), m_dad);
1283            //if (LOG) logerror("uPD7220 '%s' DAD: %01x\n", tag(), m_dad);
12841284         }
12851285      }
12861286      break;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team