2013-12-19 2 views
0

x86 CPU의 IO/포트를 통해 vesa 모드에 액세스하려면 어떻게해야합니까? 이미에만 보쉬IO/포트를 통한 VESA

private static void SetVideoMode(ushort width, ushort height, ushort depth) 
{  
    WriteCommand(0x4, 0x00); 
    WriteCommand(0x1, width); 
    WriteCommand(0x2, height); 
    WriteCommand(0x3, depth); 
    WriteCommand(0x4, 0x1 | 0x40); 
    PortIO.Outb(0x3c0, 0x20); 
} 
+0

언어, 플랫폼 누락 .. 당신이 말하는 것을 알 수있는 태그가 있습니까? – dendini

+0

질문에'WriteCommand'의 정의를 포함시켜야합니다. 그렇지 않으면 코드가 무엇을하고 있는지 전혀 알 수 없습니다. – Michael

답변

2

당신은 할 수 없습니다에 작동하는 코드를 시도했다. VESA (VBE)는 서로 다른 비디오 카드에 단일 인터페이스를 제공하는 표준 BIOS 드라이버 프레임 워크입니다.

I/O 포트 또는 메모리 매핑 된 레지스터를 직접 찔러 넣으려면 기본 VGA 모드 및 기능으로 제한하거나 특정 비디오 카드의 정확한 세부 사항을 알아야합니다.

물론 이것은 VBE가 처음 해결하기 위해 고안된 문제였습니다.

+0

정확히, 저는 Atom OS (www.atomos.tk)의 개발자입니다. C#에서 자체 컴파일러를 사용하여 운영 체제를 만들고 있습니다. 그리고 VESA/VBE를 구현하고 싶습니다. 어떻게 할 수 있습니까? – amaneureka

+0

이 경우 BIOS 인터럽트, 16 비트 리얼 모드 기능 호출을위한 썽킹 메커니즘이 필요합니다. 또한 결과 물리적 메모리를 주소 공간에 매핑해야합니다. 기본 폴백 디스크 I/O 및 VGA 그래픽 드라이버가 어떻게 구현되는지 살펴보고 VBE가 비슷해야합니다. – doynax

+0

정확히 말하고 싶은 것을 얻지 못합니다 ... 구현하는 데 저를 도울 수 있습니까? 우리의 컴파일러에 ... 나는 매우 감사 할 것이다. D – amaneureka

관련 문제