CGA-Textmodus Cursor
-
Hallo Community,
ich hoffe ich hab das richtige Forum getroffen bzgl. des Threads. In unsere Veranstaltung "Betriebssysteme" haben wir die tolle Aufgabe bekomm unser eigenes OS programmieren zu dürfen, step-by-step. In der ersten Aufgabe geht es unter anderem darum den Video-RAM zu beschreiben und auszulesen.
Es geht darum die Steuerregister 14 und 15 anzusprechen.
Die Cursor-Position neu zu setzen hab ich hinbekomm, aber wie kann ich die aktuelle auslesen? Bzw. die x und y Position ermitteln?Hoffe hier kann mir wer helfen.
Lg Tobi
-
Hallo,
ich verstehe die Frage nicht ganz, wenn du "Anweisungen" zum Schreiben hast, warum hast du dann keine Lese-Möglichkeiten? Gibt's da nicht in und out? Und das Schreiben/Lesen wird ja über ein Index-/Datenregister erledigt:
MfG,
Probe-Nutzer
-
Das exakt die Aufgabe die wir haben Ja sicher haben wir die inb() Funktion und das auslesen ist nicht das Problem, allerdings wenn ich jetzt das hier mache:
IO_Port io_ind( 0x03D4 ); IO_Port io_dat( 0x03D5 ); int iPos = 0; io_ind.outb( 14 ); iPos = io_dat.inb( ); io_ind.outb( 15 ); iPos = (iPos << 8) + io_dat.inb();
Dann hat iPos den Wert 80*y+x, doch wie komm ich nun an x und y ran? Da ich ja hier eine Gleichung mit zwei unbekannten hab.
Lg Tobi
-
Okay ich bin selbst drauf gekomm:
IO_Port io_ind( 0x03D4 ); IO_Port io_adr( 0x03D5 ); int iPos = 0; io_ind.outb( 14 ); iPos = io_ind.inb(); io_ind.outb( 15 ); iPos = (iPos << 8 ) += io_adr.inb( ); int y = (int)iPos / 80; int x = iPos % 80;