출처 : http://nambaxa.springnote.com/pages/1593418
INT(0x10) : 비디오 관련
- 비디오 모드 설정
- AH = 0x00
- AL = 모드(자주 사용되는 화면 모드만 설명)
- 0x03:16색 텍스트, 80x25
- 0x12:VGA 그래픽스, 640 x480x4bit 칼라
- 0x13:VGA 그래픽스, 320 x200x8bit 칼라, Packed Pixel
- 0x6a:확장 VGA 그래픽스, 800 x600x4bit 칼라
- 반환값:없음
- 커서 모양 설정
- AH = 0x01
- CH = 시작 라인
- CL = 종료 라인
- CH < CL라면 1개의 부분으로부터 되는 보통 커서
- CH > CL라면 2개의 부분으로부터 되는 커서
- CH == 0x20이면 커서는 표시되지 않는다
- 반환값:없음
- 커서 위치 지정
- AH = 0x02
- BH = 0(페이지 번호)
- DL = x 좌표
- DH = y 좌표
- 반환값:없음
- 점 출력
- 굳이 이 함수를 이용하지 않고 바로 Video 메모리를 이용할 수도 있다.
- AH = 0x0c
- AL = 색상 코드(0 ~ 15)
- CX = x좌표
- DX = y좌표
- 반환값:없음
- 한 문자 출력
- AH = 0x0e
- AL = 문자 코드
- BH = 0(페이지 번호)
- BL = 문자의 색
- 반환값:없음
- 주의) beep(0x07), 백 스페이스(0x08), CR(0x0d), LF(0x0a)는 제어 코드로서 인식된다
- 색상 코드를 대응되는 팔레트에 저장한다.
- 16색 모드일 때만 사용가능하다.
- AX = 0x1000
- BL = 색상 코드(0 ~ 15)
- BH = 팔레트 코드(0 ~ 63)
- 주의) EGA 그래픽 카드와의 호환성을 유지하기 위해서 사용됩니다. 잘못 사용하면 상당히 복잡해지기 때문에 기본값 그대로 두고 사용하는 것이 좋습니다.
- 팔레트 설정
- AX = 0x1010
- BX = 팔레트 번호(0 ~ 255)
- DH = Red(0 ~ 63)
- CH = Green(0 ~ 63)
- CL = Blue(0 ~ 63)
- 반환값:없음
- 문자열 출력
- AH = 0x13
- AL = 옵션
- 0x00:문자열의 속성을 BL 레지스터로 지정하고 커서는 이동시키지 않는다.
- 0x01:문자열의 속성을 BL 레지스터로 지정하고 커서를 이동시킨다.
- 0x02:문자열을 출력하고 커서는 이동시키지 않는다.
- 0x03:문자열을 출력하고 커서를 이동시킨다.
- 실제 데이터는 메모리에 [문자 코드] [칼라 코드] [문자 코드] [칼라 코드]와 같이 저장된다고 보면된다.
- BH = 0(페이지 번호)
- BL = 칼라 코드(AL 레지스터의 값이 0x01, 0x02일 경우에만 적용)
- CX = 문자열의 길이
- DL = x좌표
- DH = y좌표
- ES:BP = 출력할 문자열이 있는 곳의 주소
- 반환값:없음
- 제일 간단하게 사용할 수 있는 화면모드인 0x13의 사용법
- 0x13번 화면모드는 그다지 해상도가 좋지는 않지만 Packed Pixel 모드이기 때문에 프로그래밍 하기가 편합니다. 우선 화면 모드를 변경하고 팔레트를 설정합니다.
- 이 모드는 Video Ram의 0xa0000 ~ 0xafff의 64KB에 위치하게 됩니다. 정확히 말하면 320 x 200 = 64000이 되므로 62.5 KB라고 해야겠지만, VRAM는 0xa0000 ~ 0xaffff의 64 KB입니다.엄밀하게 말하면(자), 320 x200=64000이므로, 62.5 KB가 됩니다. 이 모드에서는 점 하나가 1바이트에 해당되기때문에 읽고 쓰기도 아주 간단합니다.
위 내용은 http://osguru.net/index.php/AT-BIOS 에서 찾을 수 있다.
80x25 16색상은 아래 캡쳐한 것처럼 나온다. 시시콜콜한 것을 좋아하는 나는 직접 어떤 색상이 나오는지 실험해보았다.
이렇게 나온다.
바로 아래는 HTML코드로 직접 텍스트로 만든 것
ABCDEFGHIJKLMNO
16진 : 색상 : 색상코드(HTML)
0x0 : 검정 : #000000
0x1 : 파랑 : #0000a8
0x2 : 초록 : #00a800
0x3 : 파랑 : #00a8a8
0x4 : 빨강 : #a80000
0x5 : 보라 : #a800a8
0x6 : 갈색 : #a85700
0x7 : 옅은 회색 : #a8a8a8
0x8 : 짙은 회색 : #575757
0x9 : 하늘색 : #5757ff
0xA : 연두 : #57ff57
0xB : 시안 : #57ffff
0xC : 마젠타? : #ff5757
0xD : 분홍 : #ff57ff
0xE : 노랑 : #ffff57
0xF : 흰색 : #ffffff