Se chamarmos o INT 10h e definirmos seus parâmetros via linguagem assembly, e então compilarmos esse código em um binário e gravá-lo no setor de inicialização do disquete, podemos gerar uma string no bare metal (ou máquina virtual sem sistema operacional) tela.
...
; 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!"
...
Estou me perguntando como o BIOS controla o glifo de cada caractere? Em alguns computadores, por que o “A” na tela é semelhante ao “A” na fonte Sans-serif, e não no Courier? Mas em outros computadores, pode ser outra fonte.
Existem algumas matrizes 0-1 incorporadas no BIOS ou em uma determinada ROM? Por exemplo, a matriz 0-1 na imagem abaixo corresponde ao caractere A.
Antes de o sistema operacional ser carregado, o BIOS controla como o texto é escrito. O próprio BIOS possui instruções para imprimir texto básico na tela. Ele precisa disso para desenhar sua própria tela de BIOS. Qualquer que seja a fonte codificada no BIOS, é a que será usada posteriormente.
Quando você envia esse código para o BIOS, isso se traduz na alteração da cor de determinados pixels. Embora você espere que ele imprima apenas a cor principal, na verdade ele também imprimirá a cor de fundo. Caso contrário, o texto se sobreporia, criando uma bagunça.
Na verdade, ele segue uma matriz para cada letra baseada em um tamanho fixo, e é possível alterar o conjunto de caracteres durante a execução.
Foi assim que os jogos baseados em modo texto foram feitos no C64. O programador frequentemente mudava a fonte para poder desenhar belos gráficos. Às vezes era tão simples quanto colocar o sprite do jogador dentro de um personagem e movê-lo.