// set current video mode public static void SetMode(VGAMode mode) { // set mode id ModeID = mode; // set mode switch (mode) { // 80x25 text mode case VGAMode.Text80x25: { SetModeProperties(80, 25, 4, true, false); fixed(byte *ptr = VGAModeRegisters.Mode80x25_Text) { WriteRegisters(ptr); } SetFont(VGAFontData.Font8x16_Data, 16); SetColorPalette(Palette16); break; } // 80x50 text mode case VGAMode.Text80x50: { SetModeProperties(80, 50, 4, true, false); fixed(byte *ptr = VGAModeRegisters.Mode80x50_Text) { WriteRegisters(ptr); } SetFont(VGAFontData.Font8x8_Data, 8); SetColorPalette(Palette16); break; } // 90x60 text mode case VGAMode.Text90x60: { SetModeProperties(90, 60, 4, true, false); fixed(byte *ptr = VGAModeRegisters.Mode90x60_Text) { WriteRegisters(ptr); } SetFont(VGAFontData.Font8x8_Data, 8); SetColorPalette(Palette16); break; } // 320x200 graphics mode case VGAMode.Pixel320x200: { SetModeProperties(320, 200, 8, false, false); fixed(byte *ptr = VGAModeRegisters.Mode320x200x256_Pixel) { WriteRegisters(ptr); } ClearColorPalette(); SetColorPalette(Palette256); break; } // 320x200 double buffered graphics mode case VGAMode.Pixel320x200DB: { SetModeProperties(320, 200, 8, false, true); fixed(byte *ptr = VGAModeRegisters.Mode320x200x256_Pixel) { WriteRegisters(ptr); } ClearColorPalette(); SetColorPalette(Palette256); break; } // default to 80x25 text mode default: { break; } } // clear the screen Clear(0); }
// initialization public static void Initialize(VGAMode mode) { SetMode(mode); }