Assembler - backspace

darkdennis

Grünschnabel
Hallo.
Wie realisiere ich es am besten, daß wenn der cursor auf Position: Zeile=egal; Spalte=0 ist und ich backspace drücke, der Cursor in die obere Zeile springt, und zwar dorthin, wo das letzte Zeichen steht. Zur Zeit hab ich es nur so, daß ich den Spaltenwert auf 79 setze und Zeile 1 abziehe (Modus ist 80Zeichenx25 Zeilen).
 
Hallo,
ich geh mal davon aus du machst das mit dem int 10(oder 12, bin ich mir nicht sicher) oder mit dem 21. Beide Interrupts stellen auch Funktionen zum auslesen von Zeichen zur verfügung. Jetzt musst du halt beim Drücken der Backspace-Taste, hinten beginnen die Zeichen auszulesen, also zuerst das Zeichen aus Zeile-Davor, Spalte 80, und schauen was es ist. Wenn es ein zulässiges Zeichen ist hörst du auf und setzt deinen Cursor da hin. Um das Backspace zu ermitteln musst du halt die Eingabe auf den ASCII Code von Backspace überprüfen. Wie der ist, sagt dir eine ASCII-Tabelle. Also eigentlich sollte das kein Problem darstellen.

Gruß stephsto
 
Wenn es darum geht, unter DOS im Textmodus den Bildschirm auszulesen, sollte man das besser ohne das Video-BIOS machen, denn das ist wirklich sehr langsam (das weiß ich noch aus eigener Erfahrung, als ich noch unter DOS programmierte). Lies besser den Bildschirmspeicher direkt aus. Wenn ich mich recht erinnere, beginnt der Textmodusspeicher im Segment B800 am Offset 0. Das Speicherformat ist Zeichen-Attribut-Zeichen-Attribut-etc., jedes Element belegt 1 Byte. Ach ja, das waren noch Zeichen damals...... *hinterhertrauer*

-Gawayn
 
Hi

Der Bildschirmspeicher begann je nach Modus auch mal bei B000 bzw A000,
Irgendwo hab ich noch ne alte COM, die mir diese Werte herausgab und, ob es sich um nen Grafik-Modus handelte (was das Auslesen wohl erschweren dürfte).

Finde es aber mal echt goil, daß es heute noch Leuz gibt, die ASM proggen .... was für Zeiten ... damals :rolleyes:

MfG
Posti
 

Neue Beiträge

Zurück