
Wenn wir INT 10h aufrufen und seine Parameter per Assemblersprache festlegen, diesen Code anschließend in eine Binärdatei kompilieren und in den Bootsektor der Diskette schreiben, können wir auf dem Bildschirm des Bare Metal (oder einer virtuellen Maschine ohne Betriebssystem) eine Zeichenfolge ausgeben.
...
; 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!"
...
Ich frage mich, wie das BIOS die Glyphe jedes Zeichens steuert. Warum ähnelt das „A“ auf dem Bildschirm auf manchen Computern dem „A“ in serifenloser Schriftart und nicht in Courier? Auf anderen Computern kann es jedoch eine andere Schriftart sein.
Sind im BIOS oder einem bestimmten ROM 0-1-Matrizen eingebaut? Beispielsweise entspricht die 0-1-Matrix im Bild unten dem Buchstaben A.
Antwort1
Bevor das Betriebssystem geladen wird, steuert das BIOS, wie Text geschrieben wird. Das BIOS selbst verfügt über Anweisungen zum Drucken von Basistext auf dem Bildschirm. Es benötigt diese, um seinen eigenen BIOS-Bildschirm zu zeichnen. Welche Schriftart auch immer im BIOS fest codiert wurde, sie wird später verwendet.
Wenn Sie diesen Code an das BIOS senden, wird dies in eine Änderung der Farbe bestimmter Pixel umgesetzt. Obwohl Sie erwarten würden, dass nur die Vorderfarbe gedruckt wird, wird tatsächlich auch die Hintergrundfarbe gedruckt. Andernfalls würde sich der Text überlappen und ein Durcheinander verursachen.
Es folgt tatsächlich einer Matrix für jeden Buchstaben basierend auf einer festen Größe, und es ist möglich, den Zeichen-Romsatz während der Laufzeit zu ändern.
So wurden textmodusbasierte Spiele auf dem C64 erstellt. Der Programmierer änderte oft die Schriftart, um schöne Grafiken zeichnen zu können. Manchmal war es so einfach, wie das Spieler-Sprite in einen Charakter zu platzieren und diesen herumzuschieben.