Skip to content

Commit 88734e1

Browse files
feature: VESA VBE 1.2
1 parent c73f54a commit 88734e1

2 files changed

Lines changed: 1145 additions & 73 deletions

File tree

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
namespace Spice86.Core.Emulator.InterruptHandlers.VGA;
2+
3+
/// <summary>
4+
/// "The standard provides a set of functions which an application program can use
5+
/// to A) obtain information about the capabilities and characteristics of a
6+
/// specific Super VGA implementation and B) to control the operation of such
7+
/// hardware in terms of video mode initialization and video memory access.
8+
/// The functions are provided as an extension to the VGA BIOS video services, accessed
9+
/// through interrupt 10h."
10+
/// VESA Super VGA BIOS Extension Standard #VS911022, October 22, 1991, VBE Version 1.2
11+
/// </summary>
12+
public interface IVesaBiosExtension {
13+
/// <summary>
14+
/// "Function 00h - Return Super VGA Information.
15+
/// The purpose of this function is to provide information to the calling program
16+
/// about the general capabilities of the Super VGA environment. The function fills
17+
/// an information block structure at the address specified by the caller.
18+
/// The information block size is 256 bytes."
19+
/// Input: AH = 4Fh Super VGA support, AL = 00h Return Super VGA information, ES:DI = Pointer to buffer.
20+
/// Output: AX = Status (All other registers are preserved).
21+
/// </summary>
22+
void VbeGetControllerInfo();
23+
24+
/// <summary>
25+
/// "Function 01h - Return Super VGA mode information.
26+
/// This function returns information about a specific Super VGA video mode that was
27+
/// returned by Function 0. The function fills a mode information block structure
28+
/// at the address specified by the caller. The mode information block size is
29+
/// maximum 256 bytes."
30+
/// Input: AH = 4Fh Super VGA support, AL = 01h Return Super VGA mode information,
31+
/// CX = Super VGA video mode (mode number must be one of those returned by Function 0),
32+
/// ES:DI = Pointer to 256 byte buffer.
33+
/// Output: AX = Status (All other registers are preserved).
34+
/// </summary>
35+
void VbeGetModeInfo();
36+
37+
/// <summary>
38+
/// "Function 02h - Set Super VGA video mode.
39+
/// This function initializes a video mode. The BX register contains the mode to
40+
/// set. The format of VESA mode numbers is described in chapter 2. If the mode
41+
/// cannot be set, the BIOS should leave the video environment unchanged and return
42+
/// a failure error code."
43+
/// Input: AH = 4Fh Super VGA support, AL = 02h Set Super VGA video mode,
44+
/// BX = Video mode (D0-D14 = Video mode, D15 = Clear memory flag:
45+
/// 0 = Clear video memory, 1 = Don't clear video memory).
46+
/// Output: AX = Status (All other registers are preserved).
47+
/// </summary>
48+
void VbeSetMode();
49+
}

0 commit comments

Comments
 (0)