Hi,
der Interrupt führt im Prinzip nur Code aus, der das Zeichen in einen Puffer im Video RAM schreibt. Dieser ist (im Text-Modus) in der Regel an der linearen Adresse 0xb8000 eingeblendet. Die Position an die sich der Cursor befindet, wird aus der
BIOS Data Area (=einfach ein paar Variablen an einer bestimmten Stelle im Speicher) ausgelesen (und anschließend aktualisiert.) Die Ausgabe im Protected Mode ist im Artikel
Textausgabe beschrieben. Diese Methode lässt sich im Prinzip auch im Real Mode anwenden, wenn du das Segment 0xb800, das der linearen Adresse entspricht, verwendest.
Zu der Sache mit dem Wert
0x0e: Der Befehl
int 0x10 springt zu einem Code, der mittels Vergleichsoperationen schaut, welcher Wert in
AH steht, und daraufhin unterschiedlichen anderen Code ausführt. Mit Gattern/Datenleitungen hat das noch nichts zu tun.
Du kannst diese Funktionen relativ einfach nachprogrammieren. Ein vollständiges BIOS zu programmieren ist allerdings wesentlich komplizierter, weil dieses ja auch die Hardware initialisieren muss. Wenn du das nachvollziehen willst, kannst du z.B. mit dem Bochs debugger mal durch das BIOS single-steppen. Aber vorher solltest du dir mal den Code vom VGABIOS anschauen, das in Bochs verwendet wird. Die Funktion
biosfn_write_teletype ist für die Ausgabe zuständig. Der Code ist schon in C-Form ziemlich obskur. In Assembler wird der sicherlich nicht einfacher zu verstehen.