Autor Thema: Vesa@0x30000  (Gelesen 2563 mal)

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« am: 16. April 2005, 20:14 »
Hallo,
hab jetzt mal die Vesa-Infos nach 0x30000 geladen (die aufteilung wie die meisten: Kernel 0x10000 = kernel,...) nur hab ich ein kleines Prob:

typedef struct VesaModeInfoBlock
{
unsigned int VbeModeModeAttributes;
unsigned char VbeModeWinAAttributes;
unsigned char VbeModeWinBAttributes;
unsigned int VbeModeWinGranularity;
unsigned int VbeModeWinSize;
unsigned int VbeModeWinASegment;
unsigned int VbeModeWinBSegment;
unsigned long VbeModeWinFuncPtr;
unsigned int VbeModeBytesPerScanLine;
unsigned int VbeModeXResolution;
unsigned int VbeModeYResolution;
unsigned char VbeModeXCharSize;
unsigned char VbeModeYCharSize;
unsigned char VbeModeNumberOfPlanes;
unsigned char VbeModeBitsPerPixel;
unsigned char VbeModeNumberOfBanks;
unsigned char VbeModeMemoryModel;
unsigned char VbeModeBankSize;
unsigned char VbeModeNumberOfImagePages;
unsigned char VbeModeReserved_page;
unsigned char VbeModeRedMaskSize;
unsigned char VbeModeRedMaskPos;
unsigned char VbeModeGreenMaskSize;
unsigned char VbeModeGreenMaskPos;
unsigned char VbeModeBlueMaskSize;
unsigned char VbeModeBlueMaskPos;
unsigned char VbeModeReservedMaskSize;
unsigned char VbeModeReservedMaskPos;
unsigned char VbeModeDirectColorModeInfo;
unsigned long VbeModePhysBasePtr;
unsigned long VbeModeOffScreenMemOffset;
unsigned int VbeModeOffScreenMemSize;
unsigned int VbeModeLinBytesPerScanLine;
unsigned char VbeModeBnkNumberOfPages;
unsigned char VbeModeLinNumberOfPages;
unsigned char VbeModeLinRedMaskSize;
unsigned char VbeModeLinRedFieldPos;
unsigned char VbeModeLinGreenMaskSize;
unsigned char VbeModeLinGreenFieldPos;
unsigned char VbeModeLinBlueMaskSize;
unsigned char VbeModeLinBlueFieldPos;
unsigned char VbeModeLinRsvdMaskSize;
unsigned char VbeModeLinRsvdFieldPos;
unsigned long VbeModeMaxPixelClock;
unsigned long VbeModeReserved[ 190 ];
}VesaModeInfoBlock;

void InitVideo()
{
VesaModeInfoBlock *VbeModeInfoBlock = ( VesaModeInfoBlock * ) 0x30000;
unsigned char *VideoMemory = ( unsigned char * ) VbeModeInfoBlock->VbeModePhysBasePtr;

int i;
for( i = 0; i < 3000; i ++)
{
VideoMemory[ i ] = 0xff;
}
}

Das sollte doch funzen und einen teil des Bildschirms (fast eine Zeile) weiß einfärben oder? (1024x768x24) hat da jemand nen tipp? (es bleibt halt einfach schwarz)

 

Einloggen