Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - sfan

Seiten: 1 ... 3 4 [5]
81
tyndur / Re:Name für die GUI
« am: 06. January 2011, 14:09 »
soll denn schon ein desktop in der gui enthalten sein oder soll die gui nur funktionen bereitstellen?

warscheinlich nein

so genau weiss  ich das auch nicht
nen desktop direkt drin wär auch was ;-)
82
tyndur / Re:Hello World!
« am: 06. January 2011, 13:57 »
wirklich gut
83
tyndur / Re:Name für die GUI
« am: 06. January 2011, 13:56 »
soll denn schon ein desktop in der gui enthalten sein oder soll die gui nur funktionen bereitstellen?

warscheinlich nein
84
tyndur / Re:Name für die GUI
« am: 06. January 2011, 13:54 »
Ich finde Gluggi klingt doch lustig, da hat man gleich gute Laune, wenn man die GUI startet  :-).

Gluggi geht auch.Macht gute Laune
85
tyndur / Re:Name für die GUI
« am: 06. January 2011, 13:47 »
litur finde ist am besten

wie soll die gui eigentlich werden?
fenster,buttons und ...
86
tyndur / Re:Netzwerk?
« am: 05. January 2011, 13:01 »
Moin

Netzwerkbrücke heißt afaik, das alle Pakete einfach durchgeschleift werden. somit müsstest du tyndur eine freie IP aus deimem Subnetz geben und auch dein Gateway angeben.
Sind die einstellungen die du da eingegeben hast nicht die für Qemu oder Irre ich mich da?

PNoob

wie kann ich mein gateway ermitteln?
87
tyndur / Re:0.3 - Ideen und Ziele
« am: 05. January 2011, 12:13 »
kann ma jemand wieder den Stand zusammenfassen!!
88
tyndur / Netzwerk?
« am: 05. January 2011, 10:42 »
Hallo,

mein PC hat keine Netzwerkkarte die Týndur unterstützt.
Also will ich Týndur mit Netzwerk im Emulator testen.
Aber es klappt nicht :-(
Meine Einstellungen:

und


Aber wenn ich lpt scan ausführe bleibt er da hängen:


Sfan
89
Lowlevel-Coding / Re:printf
« am: 05. January 2011, 10:11 »
Hmmmmm!

Das geht irgendwie auch nicht :-(

Aber ich hab es anders gelöst :-D:
void print(char *str,unsigned char fc,unsigned char bc) {
int cnr;
while (*str) {
cnr = 0; // false
if(*str == '\n') {
csr_y++;
csr_y++;
csr_x = 0;
cnr = 1; //true
}
if(*str == '\r') {
csr_x = 0;
cnr = 1; //true
}
if(*str == '\b') {
csr_x--;
cnr = 1; //true
}
if(cnr == 1) { // Cursor neuschreiben
char* vid = (char*) video;
vid += csr_y * 80 + csr_x;
           *vid = 0x0;
vid++;
*vid = 0x07;
vid--;
str++;
}
if(*str >= ' ') {
char* vid = (char*) video;
vid += csr_y * 80 + csr_x;
   *vid = *str;
vid++;
csr_x++; //Wenn 'vid++' dann auch 'csr_x++'
*vid = (bc << 4) | (fc & 0x0F);
   str++;
csr_x++;
}
  }
}
90
Lowlevel-Coding / Re:Tastaturtreiber
« am: 04. January 2011, 11:23 »
asm("mov $0x0, %%ax;int $0x16;mov %%al, %0" : "=r" (al) : );  "Error: Suffix or Operands invalid for 'mov' "
Das Problem ist, dass die Operandengrößen nicht passen. al ist ein int, deswegen wird %0 zu z.B. edx, nicht zu dl. Du kannst entweder aus al einen char machen oder %b0 verwenden, wodurch nur das niederwertigste Byte benutzt wird.

In Wirklichkeit willst du das ganze aber sowieso ganz anders schreiben, du kannst nämlich dem Compiler gleich sagen, dass er eax benutzen soll:
asm("int $0x16" : "=a" (al) : "0" (0x0));
Die BIOS-Interrupts zu benutzen ist nicht so furchtbar hilfreich. Das Problem dabei ist, dass das BIOS die Interrupthandler in 16-Bit-Real-Mode-Code implementiert. Dir bleibt also nur, entweder in den Real Mode zurückzuschalten oder den BIOS-Code im VM86 laufen zu lassen, wenn die du BIOS-Interrupts benutzen willst. In der Regel macht man das nur, um in die VESA-Grafikmodi schalten zu können und lässt das BIOS ansonsten in Ruhe.

Genau daran habe ich gedacht die Interrupts für das irgendwann für Grafikmodus-Schalten zu benutzen.
91
Lowlevel-Coding / Re:printf
« am: 04. January 2011, 11:20 »
Du hast ein csr_y++ zu viel (du würdest also zwei Newlines erzeugen) und du vergisst schlicht und ergreifend den Cursor neu zu zeichnen.

Danke!
Die Lösung wo ich dran gedacht habe machte eingentlich genau das gleiche nur komplizierter.
92
Lowlevel-Coding / printf
« am: 04. January 2011, 11:11 »
Hi,

ich habe in meinem OS eine print-Funktion.
Allerdings funktioniert \n nicht.
Code im Header:
int csr_x = 0,csr_y = 0;
char *video = (char*)0xB8000;
void print(char *str,unsigned char fc,unsigned char bc);
Code unten:
void print(char *str,unsigned char fc,unsigned char bc) {
while (*str) {
if(*str >= ' ') {
char* vid = (char*) video;
vid += csr_y * 80 + csr_x;
          *vid = *str;
vid++;
csr_x++; //Wenn 'vid++' dann auch 'csr_x++'
*vid = (bc << 4) | (fc & 0x0F);
          str++;
csr_x++;
}
if(*str == '\n') {
csr_y++;
csr_y++;
csr_x = 0;
}
if(*str == '\r') {
csr_x = 0;
}
if(*str == '\b') {
csr_x--;
}
  }
}
93
Lowlevel-Coding / Re:Tastaturtreiber
« am: 04. January 2011, 10:53 »
Hi sfan und Willkommen im Forum (im Wiki bist du ja schon recht aktiv ;-)).
Danke!
Für Hilfe zu Inline-Assembler sei dir erst einmal dieses kleine Tutorial ans Herz gelegt: Assembler 101.

Speziell für Inline-Asssembler auch noch dieser Artikel: Inline-Assembler mit GCC.

Wie du einen Tastaturtreiber entwickelst? Nun, du programmierst dir einen IRQ-Handler, welcher die von der Tastatur ausgelösten Interrupts abfängt und die empfangenen Daten in Form von Key-/Scancodes weiter verarbeitest.

Für die Themen sei dir Interrupts und Keyboard-Controller ans Herz gelegt.
Werde mich damit befassen!
Der Code funktioniert nicht im PM, da du einen BIOS-Interrupt aufrufst. Diese Interrupts stehen dir im PM nicht zur Verfügung (bzw. nicht so ohne weiteres).
Theoretisch, wie könnte ich Interrupts im PM nutzen?
Wäre für viele Dinge hilfreich!
94
Lowlevel-Coding / Tastaturtreiber
« am: 04. January 2011, 10:03 »
Hi,

ich habe zwei Fragen:

1.Läuft dieser Tastatureiber auch im Protected Mode?
int key_asciicode() {
  int al;
  asm("mov $0x0, %%ax;int $0x16;mov %%al, %0" : "=r" (al) : );
  return al;
}
2.Wenn ja da steckt ein Fehler drin und
  die Meldung von gcc :
  "Error: Suffix or Operands invalid for 'mov' "
  hilft mir auch nicht weiter.
  Wenn es nicht im Protected Mode läuft:
  Wie bekomme ich das anders hin?
Seiten: 1 ... 3 4 [5]

Einloggen