Ang. konfigurering av DAC

Som standard körs palettgrafik (8-bits per pixel mode) med 6 bitars DAC-vidd. Det betyder att r,g,b-koden kan ha värden mellan 0 och 63. Med andra ord 64 utstyrningsnivåer.

Det händer att man kan vilja ha tillgång till mer fingraderade skalor. Alltså, liksom i True Color, 256 nivåer för vardera R, G, och B. Många grafikkort är utrustad med en DAC (Digital to Analogue Converter) som kan konfigureras för 8 bitar, dvs 3x8 bitar per färg.

Men det är inte givet hur detta skall göras. I grafikbiblioteket SVGACC.LIB som jag använder mig av finns inte denna möjlighet.

Emellertid lyckades jag, för eget bruk, komma underfund med hur det kan göras. Den dator jag därvid använde har grafikchipset ATI 3D Rage Pro AGP Mach64. Genom att köra testprogrammet WHATVGA (se artikeln Tips) kunde jag konstatera att denna DAC kan ställas valfritt till 6 eller 8 bitar. Dock inte i enlighet med VESA-standard.

Med hjälp av programmet UNIVBE67 (se artikeln Tips) kunde jag uppdatera kortet till full VESA-kompatibilitet VBE3.0 och, minsann, då blev DACen ställbar även enligt VESA.

Återstod att skriva en liten rutin som utför detta. Den ser ut så här:

void setdac(width)
int width;
{
union REGS rin, rout;
rin.x.ax = 0x4F08;
rin.h.bl = 0x00;
rin.h.bh = width;
int86(0X10,&rin, &rout);
}

Lyckligtvis visade den sig samarbeta med SVGACC så att om man först anropar setdac(8) och därefter palset(pal,0,255) då presenteras den aktuella bilden med 256 utstyrningsnivåer (pal är listan över de rgb-värden man valt för resp. färg i bilden).

Ett litet testprogram, DACTEST.EXE, baserat på detta, kan laddas hem här . (Säkrast att köra med datorn i DOS-läge.) Det testar först om grafikfunktionerna kan styras enligt VESA-standard. Om ej avbryts körningen.


© Pehr Sällström 03-10-05  Denna sida återfinns under http://home.swipnet.se/pehrs