1
0
Fork 0

Added Get DAC Colour page

Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@2111
This commit is contained in:
Peter Veenstra 2005-02-14 16:24:16 +00:00
parent 4641faa5ca
commit 506400755d
3 changed files with 19 additions and 5 deletions

View file

@ -177,6 +177,9 @@ static Bitu INT10_Handler(void) {
case 0x19: /* undocumented - GET PEL MASK */
INT10_GetPelMask(reg_bl);
break;
case 0x1A: /* GET VIDEO DAC COLOR PAGE */
INT10_GetDACPage(&reg_bl,&reg_bh);
break;
default:
LOG(LOG_INT10,LOG_ERROR)("Function 10:Unhandled EGA/VGA Palette Function %2X",reg_al);
}
@ -475,5 +478,3 @@ void INT10_Init(Section* sec) {
INT10_SetupVESA();
INT10_SetVideoMode(machine==MCH_HERC ? 0x7 : 0x3);
};

View file

@ -173,6 +173,7 @@ void INT10_GetSingleDacRegister(Bit8u index,Bit8u * red,Bit8u * green,Bit8u * bl
void INT10_SetDACBlock(Bit16u index,Bit16u count,PhysPt data);
void INT10_GetDACBlock(Bit16u index,Bit16u count,PhysPt data);
void INT10_SelectDACPage(Bit8u function,Bit8u mode);
void INT10_GetDACPage(Bit8u* mode,Bit8u* page);
void INT10_SetPelMask(Bit8u mask);
void INT10_GetPelMask(Bit8u & mask);
@ -194,5 +195,3 @@ Bit8u VESA_GetPalette(PhysPt data,Bitu index,Bitu count);
/* Sup Groups */
void INT10_SetupRomMemory(void);
void INT10_SetupVESA(void);

View file

@ -147,6 +147,21 @@ void INT10_SelectDACPage(Bit8u function,Bit8u mode) {
IO_Write(VGAREG_ACTL_ADDRESS,32); //Enable output and protect palette
}
void INT10_GetDACPage(Bit8u* mode,Bit8u* page) {
IO_Read(VGAREG_ACTL_RESET);
IO_Write(VGAREG_ACTL_ADDRESS,0x10);
Bit8u reg10=IO_Read(VGAREG_ACTL_READ_DATA);
*mode=(reg10&0x80)?0x01:0x00;
IO_Write(VGAREG_ACTL_ADDRESS,0x14);
*page=IO_Read(VGAREG_ACTL_READ_DATA);
if(*mode) {
*page&=0xf;
} else {
*page&=0xc;
*page>>=2;
}
}
void INT10_SetPelMask(Bit8u mask) {
IO_Write(VGAREG_PEL_MASK,mask);
}
@ -168,4 +183,3 @@ void INT10_SetColorSelect(Bit8u val) {
real_writeb(BIOSMEM_SEG,BIOSMEM_CURRENT_PAL,temp);
IO_Write(0x3d9,temp);
}