INT 10H
INT 10HINT 10h, INT 10H 또는 INT 16은 x86 기반 컴퓨터 시스템에서 17번째 인터럽트 벡터인 BIOS 인터럽트 호출 10의hex 속기이다.BIOS는 일반적으로 비디오 서비스를 제공하는 리얼 모드 인터럽트 핸들러를 이 벡터에 설정한다.이러한 서비스에는 비디오 모드, 문자 및 문자열 출력, 그래픽 원시 요소(그래픽 모드에서 픽셀 읽기 및 쓰기) 설정 등이 포함된다.
이 통화를 사용하려면 원하는 하위 기능의 번호로 AH를 로드하고 다른 레지스터에 필요한 다른 파라미터를 로드한 후 통화를 수행하십시오.INT 10h는 상당히 느려서 많은 프로그램이 이 BIOS 루틴을 무시하고 디스플레이 하드웨어에 직접 액세스한다.간헐적으로 이뤄지는 비디오 모드 설정은 BIOS를 이용해 할 수 있는 반면 게임에서 화면에 그래픽을 그리는 작업은 빨리 이뤄져야 하기 때문에 픽셀마다 BIOS 호출을 하는 것보다 비디오 RAM에 직접 접속하는 것이 더 적절하다.
더욱이, 현대의 x86 시스템에서는, BIOS 호출을 리얼 모드 또는 가상 8086 모드에서만 수행할 수 있다.v8086은 롱 모드의 옵션이 아니다.즉, 보호 모드(32비트) 또는 롱 모드(64비트)에서 작동하는 현대적 운영체제는 BIOS를 호출하려면 실제 모드로 전환했다가 다시 불러와야 하는데, 이는 엄청난 비용이 드는 작업이다.비록 대부분의 현대적인 시스템이 일반적으로 비디오 모드를 직접 설정하는 장치 드라이버를 사용하지만, 취미로 하는 시스템이 모든 비디오 카드에 장치 드라이버를 갖는 것은 실현 가능하지 않다. 이는 또한 윈도우 98과 같이 오래되고 지원되지 않는 시스템을 괴롭히는 문제다.대신 그러한 시스템은 Real 모드로 떨어져 비디오 모드를 전환한 다음 프레임 버퍼로 직접 끌 수 있다.
EFI 1.x 시스템에서는 INT 10H 및 VESA BIOS Extensions(VBE)가 EFI UGA 프로토콜로 대체된다.널리 사용되는 UEFI 2.x 시스템에서 INT 10H 및 VBE는 UEFI GOP로 대체된다.[1][2]
지원되는 기능 목록
그 목록은 불완전하다. 포괄적인 정보를 얻으려면 랄프 브라운의 목록을 이용한다.IBM/PC 또는 기타 공통 표준 기능만 추가하십시오.00h ~ 0fh는 CGA이다.
함수 | 함수코드 | 매개변수 | 반품 |
---|---|---|---|
비디오 모드 설정 | AH=00h | AL = 비디오 모드 | AL = 비디오 모드 플래그/CRT 컨트롤러 모드 바이트 |
텍스트 모드 커서 모양 설정 | AH=01h | CH = 스캔 행 시작, CL = 스캔 행 끝 일반적으로 문자 셀에는 0-7의 8개의 스캔 라인이 있다.따라서 CX=0607h는 일반 밑줄 커서, CX=0007h는 전체 블록 커서다.CH의 비트 5가 설정되면, 그것은 종종 "커서 숨기기"를 의미한다.그래서 CX=2607h는 보이지 않는 커서다. 일부 비디오 카드에는 16개의 스캔 라인 00h-0Fh가 있다. 일부 비디오 카드는 5비트 CH를 사용하지 않는다.이것들로 시작>끝을 만든다(예: CX=0706h) | |
커서 위치 설정 | AH=02h | BH = 페이지 번호, DH = 행, DL = 열 | |
커서 위치 및 모양 가져오기 | AH=03h | BH = 페이지 번호 | AX = 0, CH = 시작 스캔 라인, CL = 종료 스캔 라인, DH = 행, DL = 열 |
가벼운 펜 위치 읽기(VGA 시스템에서는 작동하지 않음) | AH=04h | AH = 상태(0=트리거되지 않음, 1=트리거됨), BX = 픽셀 X, CH = 픽셀 Y, CX = 모드 0Fh-10h, DH = 문자 Y, DL = 문자 X | |
활성 표시 페이지 선택 | AH=05h | AL = 페이지 번호 | |
창 위로 스크롤 | AH=06h | AL = 스크롤할 라인(0 = 클리어, CH, CL, DH, DL 사용) BH = 배경색 및 전경색.BH = 43h, 즉 배경색은 빨간색이고 전경색은 청록색이라는 뜻이다.BIOS 색상 특성을 참조하십시오. CH = 상위 열 번호, CL = 왼쪽 열 번호, DH = 하위 열 번호, DL = 오른쪽 열 번호 | |
창 아래로 스크롤 | AH=07h | 위와 같이 | |
커서 위치에서 문자 및 속성 읽기 | AH=08h | BH = 페이지 번호 | AH = 색상, AL = 문자 |
커서 위치에 문자 및 속성 쓰기 | AH=09h | AL = 문자, BH = 페이지 번호, BL = 색상, CX = 문자 인쇄 횟수 | |
커서 위치에서만 문자 쓰기 | AH=0Ah | AL = 문자, BH = 페이지 번호, CX = 문자 인쇄 횟수 | |
배경/경계 색상 설정 | AH=0Bh, BH = 00h | BL = 배경/경계 색상(텍스트 모드에서만 테두리) | |
팔레트 설정 | AH=0Bh, BH = 01h | BL = 팔레트 ID(CGA에서만 유효했지만 최신 카드는 많은 그래픽 모드 또는 모든 그래픽 모드에서 이를 지원함) | |
그래픽 픽셀 쓰기 | AH=0Ch | AL = 색상, BH = 페이지 번호, CX = x, DX = y | |
그래픽 픽셀 읽기 | AH=0Dh | BH = 페이지 번호, CX = x, DX = y | AL = 색상 |
텔레타이프 출력 | AH=0Eh | AL = 문자, BH = 페이지 번호, BL = 색상(그래픽 모드에만 해당) | |
현재 비디오 모드 가져오기 | AH=0Fh | AL = 비디오 모드, AH = 문자 열 수, BH = 활성 페이지 | |
텍스트 모드 문자 집합[3] 변경 | AH=11h | BH = 문자당 바이트 수, CX = 변경할 문자 수, DX = 변경할 시작 문자, ES:BP = 문자 데이터의 오프셋 | |
쓰기 문자열(EGA+, 최소 PC AT를 의미) | AH=13h | AL = 쓰기 모드, BH = 페이지 번호, BL = 색상, CX = 문자열의 문자 수, DH = 행, DL = 열, ES:BP = 문자열 오프셋 | |
VESA 호환 비디오 모드를 설정하여 640x480부터 시작하여 1024x128까지 256색 | AX=4f02h | BX = 비디오 모드, 시그니처 비트(비트 15)를 설정하면 비디오 메모리가 새로 고쳐지지 않음 | |
기타 VESA VBE 명령 | AX=4F00h ~ 4F15h | 사양 참조 | 사양 참조 |
참고 항목
참조
- ^ "What is efifb? — The Linux Kernel documentation". www.kernel.org. Retrieved 2020-11-24.
- ^ "What is vesafb? — The Linux Kernel documentation". www.kernel.org. Retrieved 2020-11-24.
- ^ "A Font changing routine". Forever Young Software. Retrieved March 8, 2020.