
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에 해당합니다.
답변1
OS가 로드되기 전에 BIOS는 텍스트 작성 방법을 제어합니다. BIOS 자체에는 기본 텍스트를 화면에 인쇄하는 지침이 있습니다. 자체 BIOS 화면을 그리려면 이것이 필요합니다. BIOS에 하드코딩된 글꼴이 나중에 사용됩니다.
이 코드를 BIOS로 보내면 이를 특정 픽셀의 색상 변경으로 변환합니다. 전경색만 인쇄할 것으로 예상하지만 실제로는 배경색도 인쇄합니다. 그렇지 않으면 텍스트가 겹쳐서 엉망이 됩니다.
실제로 고정된 크기를 기반으로 각 문자에 대한 매트릭스를 따르며 런타임 중에 문자 롬셋을 변경할 수 있습니다.
이것이 C64에서 텍스트 모드 기반 게임이 만들어진 방법입니다. 프로그래머는 멋진 그래픽을 그릴 수 있도록 글꼴을 자주 변경했습니다. 때로는 플레이어 스프라이트를 캐릭터 내부에 배치하고 이동시키는 것만큼 간단했습니다.