Autor Thema: Compilerproblem  (Gelesen 18207 mal)

Cool-Andy

  • Gast
Gespeichert
« Antwort #40 am: 14. October 2009, 16:47 »
main.c:
/* --- KERNEL --- */

#include "video.h"
#include "kb.h"
#include "global.h"

void kernel()
{
    cls();
    cls();
printf("Welcome\n");
printf("root> ");

loop:
scanf();
printf(key);
goto loop;
}

Cool-Andy

  • Gast
Gespeichert
« Antwort #41 am: 15. October 2009, 06:39 »
Juhu, ich hab die Lösung gefunden:

for (z=0; z<79; z++)
{
// Solange warten, wie der Input Buffer leer ist
while ((inb(0x64) & 1) == 0) {}

// Scancode auslesen (dadurch wird die Taste aus dem Input Buffer entfernt)
scancode = inb(0x60);

if (scancode & 0x80)
{
z--;
continue;
}

if(string[z] == '\n')         // <-- fragt Enter ab
{
z++;
break;
}

string[z] = scantable[scancode];  // <- Enter wird aber erst hier eingetragen
}

Die Lösung:

for (z=0; z<79; z++)
{
// Solange warten, wie der Input Buffer leer ist
while ((inb(0x64) & 1) == 0) {}

// Scancode auslesen (dadurch wird die Taste aus dem Input Buffer entfernt)
scancode = inb(0x60);

if (scancode & 0x80)
{
z--;
continue;
}

if(string[z] == 0x1c)  //<-- Enter abfragen
{
z++;
break;
}

string[z] = scantable[scancode];
}
« Letzte Änderung: 15. October 2009, 06:41 von Cool-Andy »

Cool-Andy

  • Gast
Gespeichert
« Antwort #42 am: 15. October 2009, 06:41 »

Vielen Dank, an alle die, die mir geholfen haben.  :-D

XanClic

  • Beiträge: 261
    • Profil anzeigen
    • github
Gespeichert
« Antwort #43 am: 15. October 2009, 18:32 »
Das sieht aber so ehrlich gesagt nicht ganz richtig aus, da du string[z] ja noch gar nicht gesetzt hast.
Ich würde es also folgendermaßen machen:
for (z=0; z<79; z++)
{
    // Solange warten, wie der Input Buffer leer ist
    while ((inb(0x64) & 1) == 0) {}

    // Scancode auslesen (dadurch wird die Taste aus dem Input Buffer entfernt)
    scancode = inb(0x60);

    if (scancode & 0x80)
    {
        z--;
        continue;
    }

    string[z] = scantable[scancode];

    if(string[z] == '\n')  //<-- Enter abfragen
    {
        z++;
        break;
    }
}

 

Einloggen