diff options
author | Volker Ruppert <info@vruppert.de> | 2004-05-31 21:14:50 +0000 |
---|---|---|
committer | Volker Ruppert <info@vruppert.de> | 2004-05-31 21:14:50 +0000 |
commit | 4f44ea89f36e4e4610e178b11d7c045bf97b02c3 (patch) | |
tree | 44e0a74d0997c7d29e7c0ac25a7621873c488d88 | |
parent | 6fe7a4622ea58722afe2949f46334593fdabe50d (diff) | |
download | vgabios-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.c | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -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++) { |