--- xmil/io/crtc.h 2004/08/17 14:46:37 1.12 +++ xmil/io/crtc.h 2005/02/04 06:42:11 1.14 @@ -24,24 +24,64 @@ enum { #define PAL_4096 0x10 -#define SCRN_BANK0 0x00 -#define SCRN_BANK1 0x80 -#define SCRN_DRAW4096 0x40 - -#define SCRN64_MASK 0x0f -#define SCRN64_INVALID 0 -#define SCRN64_320x200 1 -#define SCRN64_L320x200x2 2 -#define SCRN64_L640x200 3 -#define SCRN64_H320x400 4 -#define SCRN64_320x200x4096 5 - -#define SCRN64_320x100 6 -#define SCRN64_320x100x2 7 -#define SCRN64_L640x100 8 -#define SCRN64_H320x200 9 -#define SCRN64_320x100x4096 10 +#if !defined(SUPPORT_TURBOZ) +enum { + DISPMODE_24KHZ = 0x01, + DISPMODE_200L = 0x02, + DISPMODE_TEXTYx2 = 0x04, + DISPMODE_UNDERLINE = 0x08, + + DISPMODE_MASKMODE = 0x0f, + DISPMODE_WIDTH80 = 0x40, + DISPMODE_BANK1 = 0x80 +}; +#else +enum { + DISPMODE_24KHZ = 0x01, + DISPMODE_200L = 0x02, + DISPMODE_TEXTYx2 = 0x04, + DISPMODE_UNDERLINE = 0x08, + + DISPMODE_SCRN64 = 0x10, + DISPMODE64_320x200 = 0x10, + DISPMODE64_L320x200x2 = 0x11, + DISPMODE64_L640x200 = 0x12, + DISPMODE64_H320x400 = 0x13, + DISPMODE64_320x200x4096 = 0x14, + DISPMODE64_320x100 = 0x15, + DISPMODE64_320x100x2 = 0x16, + DISPMODE64_L640x100 = 0x17, + DISPMODE64_H320x200 = 0x18, + DISPMODE64_320x100x4096 = 0x19, + + DISPMODE_MASKMODE = 0x1f, + DISPMODE_4096 = 0x20, + DISPMODE_WIDTH80 = 0x40, + DISPMODE_BANK1 = 0x80 +}; +#endif + +enum { + SCRN_BANK0 = 0x00, + SCRN_BANK1 = 0x80, + SCRN_WIDTH80 = 0x40, + SCRN_DRAW4096 = 0x20, + + SCRN64_320x200 = 0x10, + SCRN64_L320x200x2 = 0x11, + SCRN64_L640x200 = 0x12, + SCRN64_H320x400 = 0x13, + SCRN64_320x200x4096 = 0x14, + SCRN64_320x100 = 0x15, + SCRN64_320x100x2 = 0x16, + SCRN64_L640x100 = 0x17, + SCRN64_H320x200 = 0x18, + SCRN64_320x100x4096 = 0x19, + + SCRN64_MASK = 0x1f, + SCRN64_ENABLE = 0x10 +}; // SCRN_24KHZ 0x01 // 0:15KHz 1:24KHz @@ -63,7 +103,7 @@ enum { SCRN_CPUFONT = 0x40, SCRN_UNDERLINE = 0x80, - SCRN_DISPCHANGE = SCRN_24KHZ|SCRN_200LINE|SCRN_TEXTYx2|SCRN_UNDERLINE + SCRN_DISPCHANGE = SCRN_24KHZ + SCRN_200LINE + SCRN_TEXTYx2 + SCRN_DISPVRAM + SCRN_UNDERLINE }; enum { @@ -99,26 +139,37 @@ typedef struct { } CRTCSTAT; typedef struct { - SINT32 rasterclock8; - SINT32 rasterdisp8; - UINT fonty; - UINT yl; - SINT32 frameclock; - - UINT8 *gram; // curvram - UINT updatemask; // updatemsk - UINT8 updatebit; // curupdt + UINT8 scrnflash; + UINT8 scrnallflash; + UINT8 remakeattr; // doubleatrchange + UINT8 palandply; + + UINT8 *gramacc; // curvram +#if (!defined(MEMOPTIMIZE)) || (MEMOPTIMIZE < 100) + UINT updatemask; // updatemsk + UINT8 updatebit; // curupdt +#else + UINT8 updatebit; // curupdt + UINT8 _padding1; + UINT16 updatemask; // updatemsk + UINT8 _padding2; +#endif UINT8 dispmode; + UINT8 existblink; // blinkflag + UINT8 blinktime; + #if defined(SUPPORT_TURBOZ) UINT8 pal_bank; UINT8 pal_disp; + UINT8 pal_padding[2]; #endif + SINT32 rasterclock8; + SINT32 rasterdisp8; + SINT32 frameclock; + UINT fonty; + UINT yl; UINT pos; - - SINT32 dispclock; - SINT32 vsyncstart; - SINT32 vpulseclock; } CRTCEXT; #if defined(SUPPORT_TURBOZ) @@ -130,8 +181,8 @@ typedef struct { #endif typedef struct { - CRTCSTAT s; CRTCEXT e; + CRTCSTAT s; #if defined(SUPPORT_TURBOZ) CRTCPAL p; #endif