Previous 199869 Revisions Next

r32517 Friday 3rd October, 2014 at 22:28:17 UTC by Barry Rodewald
trident: small WIP
[src/emu/bus/isa]svga_trident.c trident.c trident.h

trunk/src/emu/bus/isa/svga_trident.c
r32516r32517
6060//-------------------------------------------------
6161
6262isa8_svga_tgui9680_device::isa8_svga_tgui9680_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
63      device_t(mconfig, ISA8_SVGA_TGUI9680, "Trident TGUI9680 Graphics Card", tag, owner, clock, "tgui9680", __FILE__),
63      device_t(mconfig, ISA8_SVGA_TGUI9680, "Trident TGUI9680 Graphics Card (BIOS X5.5 (02) 02/13/96)", tag, owner, clock, "tgui9680", __FILE__),
6464      device_isa8_card_interface(mconfig, *this)
6565{
6666}
r32516r32517
8989   // uncomment to test Windows 3.1 TGUI9440AGi driver
9090//   m_isa->install_memory(0x4400000, 0x45fffff, 0, 0, read8_delegate(FUNC(trident_vga_device::vram_r),m_vga), write8_delegate(FUNC(trident_vga_device::vram_w),m_vga));
9191
92   // win95 drivers
93   m_isa->install_memory(0x4000000, 0x41fffff, 0, 0, read8_delegate(FUNC(trident_vga_device::vram_r),m_vga), write8_delegate(FUNC(trident_vga_device::vram_w),m_vga));
94
9295   // acceleration ports
9396   m_isa->install_device(0x2120, 0x21ff, 0, 0, read8_delegate(FUNC(trident_vga_device::accel_r),m_vga), write8_delegate(FUNC(trident_vga_device::accel_w),m_vga));
9497}
trunk/src/emu/bus/isa/trident.c
r32516r32517
346346   case 3:   xtal = xtal / 1.5; break;
347347   }
348348
349   // TODO: determine when 8 bit modes are selected
350349   svga.rgb8_en = svga.rgb15_en = svga.rgb16_en = svga.rgb32_en = 0;
351350   switch((tri.pixel_depth & 0x0c) >> 2)
352351   {
r32516r32517
377376         case 0x0b:
378377            res = svga.id;
379378            tri.new_mode = true;
380            //debugger_break(machine());
381379            break;
382380         case 0x0c:  // Power Up Mode register 1
383381            res = tri.sr0c & 0xef;
r32516r32517
932930   }
933931}
934932
933// Trident refers to these registers as a LUTDAC
934// Not much else is known.  XFree86 uses register 4 for something related to DPMS
935935READ8_MEMBER(trident_vga_device::port_83c6_r)
936936{
937937   UINT8 res = 0xff;
938938   switch(offset)
939939   {
940940   case 2:
941      res = port_03c0_r(space,5,mem_mask);
942      if(LOG) logerror("Trident: 83c6 read %02x\n",res);
941      res = tri.lutdac_reg[tri.lutdac_index];
942      if(LOG) logerror("Trident: LUTDAC reg read %02x\n",res);
943943      break;
944944   case 4:
945      res = vga.sequencer.index;
946      if(LOG) logerror("Trident: 83c8 seq read %02x\n",res);
945      res = tri.lutdac_index;
946      if(LOG) logerror("Trident: LUTDAC index read %02x\n",res);
947947      break;
948948   }
949949   return res;
r32516r32517
954954   switch(offset)
955955   {
956956   case 2:
957      if(LOG) logerror("Trident: 83c6 seq write %02x\n",data);
958      port_03c0_w(space,5,data,mem_mask);
957      if(LOG) logerror("Trident: LUTDAC reg write %02x\n",data);
958      tri.lutdac_reg[tri.lutdac_index] = data;
959959      break;
960960   case 4:
961      if(LOG) logerror("Trident: 83c8 seq index write %02x\n",data);
962      vga.sequencer.index = data;
961      if(LOG) logerror("Trident: LUTDAC index write %02x\n",data);
962      tri.lutdac_index = data;
963963      break;
964964   }
965965}
trunk/src/emu/bus/isa/trident.h
r32516r32517
5656      UINT8 cr29;
5757      UINT8 cr39;
5858      UINT8 dac;
59      UINT8 lutdac_reg[0x100];
60      UINT8 lutdac_index;
5961      bool new_mode;
6062      bool port_3c3;
6163      UINT8 clock;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team