베어 메탈에서 INT 10h를 실행할 때 각 문자는 0-1 행렬에 해당합니까?

베어 메탈에서 INT 10h를 실행할 때 각 문자는 0-1 행렬에 해당합니까?

INT 10h를 호출하고 어셈블리 언어를 통해 매개변수를 설정한 다음 이 코드를 바이너리로 컴파일하고 플로피 디스크의 부트 섹터에 쓰면 베어 메탈(또는 OS가 없는 가상 머신)에 문자열을 출력할 수 있습니다. 화면.

...
; INT 10h
; When AH = 13h
; ES:BP = Offset of string
; CX = length of string
; AL = Write mode
; BH = Page Number, BL = Color
; DL = Column
mov ax, BootMessage
mov bp, ax
mov cx, 12
mov ax, 01301h
mov bx, 000ch
mov dl, 0
int 10h
jmp $           ; while (true)
BootMessage: db "Hello World!"
...

베어메탈 화면에 문자열 출력

BIOS가 각 문자의 문자 모양을 어떻게 제어하는지 궁금합니다. 일부 컴퓨터에서 화면의 "A"가 Courier가 아닌 Sans-serif 글꼴의 "A"와 유사한 이유는 무엇입니까? 하지만 다른 컴퓨터에서는 다른 글꼴일 수도 있습니다.

BIOS나 특정 ROM에 0-1 행렬이 내장되어 있습니까? 예를 들어 아래 그림의 0-1 행렬은 문자 A에 해당합니다.

문자 A에 대한 0-1 행렬

답변1

OS가 로드되기 전에 BIOS는 텍스트 작성 방법을 제어합니다. BIOS 자체에는 기본 텍스트를 화면에 인쇄하는 지침이 있습니다. 자체 BIOS 화면을 그리려면 이것이 필요합니다. BIOS에 하드코딩된 글꼴이 나중에 사용됩니다.

이 코드를 BIOS로 보내면 이를 특정 픽셀의 색상 변경으로 변환합니다. 전경색만 인쇄할 것으로 예상하지만 실제로는 배경색도 인쇄합니다. 그렇지 않으면 텍스트가 겹쳐서 엉망이 됩니다.

실제로 고정된 크기를 기반으로 각 문자에 대한 매트릭스를 따르며 런타임 중에 문자 롬셋을 변경할 수 있습니다.

이것이 C64에서 텍스트 모드 기반 게임이 만들어진 방법입니다. 프로그래머는 멋진 그래픽을 그릴 수 있도록 글꼴을 자주 변경했습니다. 때로는 플레이어 스프라이트를 캐릭터 내부에 배치하고 이동시키는 것만큼 간단했습니다.

관련 정보