Cirrus.cpp File Reference


Detailed Description

Contains the code for the emulated Cirrus CL GD-5434 Video Card device.

Id
Cirrus.cpp,v 1.21 2008/03/25 08:41:32 iamcamiel Exp

X-1.21 Pepito Grillo 25-MAR-2008 Fixed a typo in the last patch.

X-1.20 Camiel Vanderhoeven 24-MAR-2008 Added comments on VGA registers.

X-1.19 Camiel Vanderhoeven 16-MAR-2008 Fixed threading problems with SDL (I hope).

X-1.18 Camiel Vanderhoeven 14-MAR-2008 Formatting.

X-1.17 Camiel Vanderhoeven 14-MAR-2008 1. More meaningful exceptions replace throwing (int) 1. 2. U64 macro replaces X64 macro.

X-1.16 Camiel Vanderhoeven 13-MAR-2008 Create init(), start_threads() and stop_threads() functions.

X-1.15 Camiel Vanderhoeven 05-MAR-2008 Multi-threading version.

X-1.14 Brian Wheeler 27-FEB-2008 Avoid compiler warnings.

X-1.13 David Leonard 20-FEB-2008 Shut down refresh thread when emulator exits.

X-1.12 David Leonard 20-FEB-2008 Avoid 'Xlib: unexpected async reply' errors on Linux/Unix/BSD's by adding some thread interlocking.

X-1.11 Camiel Vanderhoeven 03-JAN-2008 Attempt to get this working for big-endian host architectures.

X-1.10 Camiel Vanderhoeven 02-JAN-2008 Cleanup.

X-1.9 Camiel Vanderhoeven 30-DEC-2007 Print file id on initialization.

X-1.8 Camiel Vanderhoeven 28-DEC-2007 Throw exceptions rather than just exiting when errors occur.

X-1.7 Camiel Vanderhoeven 28-DEC-2007 Keep the compiler happy.

X-1.6 Camiel Vanderhoeven 17-DEC-2007 SaveState file format 2.1

X-1.5 Camiel Vabderhoeven 11-DEC-2007 Don't claim IO addresses 3d0..3d3, 3d6..3d9 and 3db..3df.

X-1.4 Camiel Vabderhoeven 11-DEC-2007 Don't claim IO addresses 3b0..3b3, 3b6..3b9 and 3bb.

X-1.3 Brian Wheeler 10-DEC-2007 Made refresh function name unique.

X-1.2 Camiel Vanderhoeven 10-DEC-2007 Don't decode IO addresses 3bc-3bf.

X-1.1 Camiel Vanderhoeven 10-DEC-2007 Initial version in CVS.

Definition in file Cirrus.cpp.

#include "StdAfx.h"
#include "Cirrus.h"
#include "System.h"
#include "AliM1543C.h"
#include "gui/gui.h"

Go to the source code of this file.

Defines

#define SET_TILE_UPDATED(xtile, ytile, value)
 Set a specific tile's updated variable.
#define GET_TILE_UPDATED(xtile, ytile)   ((((xtile) < BX_NUM_X_TILES) && ((ytile) < BX_NUM_Y_TILES)) ? state.vga_tile_updated[(xtile)][(ytile)] : 0)
 Get a specific tile's updated variable.

Variables

static unsigned old_iHeight = 0
static unsigned old_iWidth = 0
static unsigned old_MSL = 0
static const u8 ccdat [16][4]
static unsigned int rom_max
 Size of ROM image.
static u8 option_rom [65536]
 ROM image.
static u32 cirrus_cfg_data [64]
 PCI Configuration Space data block.
static u32 cirrus_cfg_mask [64]
 PCI Configuration Space mask block.
static u32 cirrus_magic1 = 0xC1AA4500
static u32 cirrus_magic2 = 0x0054AA1C


Define Documentation

#define GET_TILE_UPDATED ( xtile,
ytile   )     ((((xtile) < BX_NUM_X_TILES) && ((ytile) < BX_NUM_Y_TILES)) ? state.vga_tile_updated[(xtile)][(ytile)] : 0)

Get a specific tile's updated variable.

Only reference the array if the tile numbers are within the bounds of the array. If out of bounds, return 0.

Definition at line 143 of file Cirrus.cpp.

Referenced by CS3Trio64::update(), and CCirrus::update().

#define SET_TILE_UPDATED ( xtile,
ytile,
value   ) 

Value:

do                                                             \
  {                                                              \
    if(((xtile) < BX_NUM_X_TILES) && ((ytile) < BX_NUM_Y_TILES)) \
      state.vga_tile_updated[(xtile)][(ytile)] = value;          \
  } while(0)
Set a specific tile's updated variable.

Only reference the array if the tile numbers are within the bounds of the array. If out of bounds, do nothing.

Definition at line 130 of file Cirrus.cpp.

Referenced by CS3Trio64::redraw_area(), CCirrus::redraw_area(), CS3Trio64::update(), CCirrus::update(), CS3Trio64::vga_mem_write(), and CCirrus::vga_mem_write().


Variable Documentation

const u8 ccdat[16][4] [static]

Initial value:

 {
  {0x00, 0x00, 0x00, 0x00},
  {0xff, 0x00, 0x00, 0x00},
  {0x00, 0xff, 0x00, 0x00},
  {0xff, 0xff, 0x00, 0x00},
  {0x00, 0x00, 0xff, 0x00},
  {0xff, 0x00, 0xff, 0x00},
  {0x00, 0xff, 0xff, 0x00},
  {0xff, 0xff, 0xff, 0x00},
  {0x00, 0x00, 0x00, 0xff},
  {0xff, 0x00, 0x00, 0xff},
  {0x00, 0xff, 0x00, 0xff},
  {0xff, 0xff, 0x00, 0xff},
  {0x00, 0x00, 0xff, 0xff},
  {0xff, 0x00, 0xff, 0xff},
  {0x00, 0xff, 0xff, 0xff},
  {0xff, 0xff, 0xff, 0xff},
}

Definition at line 105 of file Cirrus.cpp.

Referenced by CS3Trio64::vga_mem_read(), and CCirrus::vga_mem_read().

u32 cirrus_cfg_data[64] [static]

Initial value:

 {
   0x00a81013,            
   0x011f0000,            
   0x03000002,            
   0x00000000,            
   0xf8000000,            
   0x00000000,            
   0x00000000,            
   0x00000000,            
   0x00000000,            
   0x00000000,            
   0x00000000,            
   0x00000000,            
   0x00000000,            
   0x00000000,            
   0x00000000,
   0x281401ff,            
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
}
PCI Configuration Space data block.

Definition at line 198 of file Cirrus.cpp.

Referenced by CCirrus::init().

u32 cirrus_cfg_mask[64] [static]

Initial value:

 {
   0x00000000,            
   0x0000ffff,            
   0x00000000,            
   0x0000ffff,            
   0xfc000000,            
   0x00000000,            
   0x00000000,            
   0x00000000,            
   0x00000000,            
   0x00000000,            
   0x00000000,            
   0x00000000,            
   0x00000000,            
   0x00000000,            
   0x00000000,
   0x000000ff,            
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
}
PCI Configuration Space mask block.

Definition at line 221 of file Cirrus.cpp.

Referenced by CCirrus::init().

u32 cirrus_magic1 = 0xC1AA4500 [static]

Definition at line 518 of file Cirrus.cpp.

Referenced by CCirrus::RestoreState(), and CCirrus::SaveState().

u32 cirrus_magic2 = 0x0054AA1C [static]

Definition at line 519 of file Cirrus.cpp.

Referenced by CCirrus::RestoreState(), and CCirrus::SaveState().

unsigned old_iHeight = 0 [static]

unsigned old_iWidth = 0 [static]

unsigned old_MSL = 0 [static]

Definition at line 103 of file Cirrus.cpp.

Referenced by CS3Trio64::update(), and CCirrus::update().

u8 option_rom[65536] [static]

ROM image.

Definition at line 195 of file Cirrus.cpp.

Referenced by CS3Trio64::init(), CCirrus::init(), CS3Trio64::rom_read(), and CCirrus::rom_read().

unsigned int rom_max [static]

Size of ROM image.

Definition at line 192 of file Cirrus.cpp.

Referenced by CS3Trio64::init(), CCirrus::init(), CS3Trio64::rom_read(), and CCirrus::rom_read().


SourceForge.net Logo
Project space on SourceForge.net