aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVolker Ruppert <info@vruppert.de>2004-05-31 21:14:50 +0000
committerVolker Ruppert <info@vruppert.de>2004-05-31 21:14:50 +0000
commit4f44ea89f36e4e4610e178b11d7c045bf97b02c3 (patch)
tree44e0a74d0997c7d29e7c0ac25a7621873c488d88
parent6fe7a4622ea58722afe2949f46334593fdabe50d (diff)
downloadvgabios-4f44ea89f36e4e4610e178b11d7c045bf97b02c3.tar.gz
- write character in planar graphics modes: sequencer map mask must be 0x0f and
bit operation must be 'replace' if bit 7 of attribute is clear - read/write pixel in planar graphics modes: bit mask setup simplified
-rw-r--r--vgabios.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/vgabios.c b/vgabios.c
index 22d0f27..bf0e2cc 100644
--- a/vgabios.c
+++ b/vgabios.c
@@ -1382,11 +1382,16 @@ Bit8u car;Bit8u attr;Bit8u xcurs;Bit8u ycurs;Bit8u nbcols;Bit8u cheight;
}
addr=xcurs+ycurs*cheight*nbcols;
src = car * cheight;
+ outw(VGAREG_SEQU_ADDRESS, 0x0f02);
outw(VGAREG_GRDC_ADDRESS, 0x0205);
if(attr&0x80)
{
outw(VGAREG_GRDC_ADDRESS, 0x1803);
}
+ else
+ {
+ outw(VGAREG_GRDC_ADDRESS, 0x0003);
+ }
for(i=0;i<cheight;i++)
{
dest=addr+i*nbcols;
@@ -1737,7 +1742,7 @@ static void biosfn_write_pixel (BH,AL,CX,DX) Bit8u BH;Bit8u AL;Bit16u CX;Bit16u
case PLANAR4:
case PLANAR1:
addr = CX/8+DX*read_word(BIOSMEM_SEG,BIOSMEM_NB_COLS);
- mask = 0x01 << (7 - (CX & 0x07));
+ mask = 0x80 >> (CX & 0x07);
outw(VGAREG_GRDC_ADDRESS, (mask << 8) | 0x08);
outw(VGAREG_GRDC_ADDRESS, 0x0205);
data = read_byte(0xa000,addr);
@@ -1817,7 +1822,7 @@ static void biosfn_read_pixel (BH,CX,DX,AX) Bit8u BH;Bit16u CX;Bit16u DX;Bit16u
case PLANAR4:
case PLANAR1:
addr = CX/8+DX*read_word(BIOSMEM_SEG,BIOSMEM_NB_COLS);
- mask = 0x01 << (7 - (CX & 0x07));
+ mask = 0x80 >> (CX & 0x07);
attr = 0x00;
for(i=0;i<4;i++)
{