Hi, dazu musste ich erstmal mein alte RM OS/M Betriebssystem Code rauskramen. Das habe ich dann auch gemacht und so schön wie das ist, ich verstehe meinen eigenen Code immer so schnell. Die Variable m_nCursor ist bei dir ein WORD groß, soll das erste Byte den X Wert beinhaltet und das zweite den Y Wert? Wenn ja dann ist das falsch. Man sendet nicht Spalte + Zeile. Man multipliziert die gewünschte Zeile mit 80 (80 = Anzahl der Zeilen) und addiert die gewünschte Spalte hinzu. Also ungefähr so:
Zeile*80+Spalte
Diesen Wert kopiert man dann z.B. in die Variable m_nCursor. Dann das erste Byte senden und dann das zweite (oder so wie ich anders herum, kA ob die Reihenfolge egal ist). Aus deinem Code geht natürlich nicht hervor ob du vorher die Berechnung machst und es also richtig machst. Aber du sagst ja, 0,0 geht auch nicht, also muss es ein anderer Fehler sein. Also mein ASM-Code sollte das gleiche machen wie dein C-Code:
mov al,0Eh
mov dx,03D4h
out dx,al
mov al,bh
mov dx,03D5h
out dx,al
mov al,0Fh
mov dx,03D4h
out dx,al
mov al,bl
mov dx,03D5h
out dx,al
Nur das hier halt in bx der Wert ist, welcher bei dir in m_nCursor ist. Also fürhst du die obene Berechnung auch durch, wird dein Code an der richtigen Stelle ausgefürht etc. ? Ob man jetzt erst den 0Eh-Wert senden muss und dann den 0Fh-Wert oder ob das egal ist weiß ich nicht. Tausche es mal, wenn nichts anderes der Fehler sein kann.
bitmaster