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 - B.G.

Seiten: 1 [2]
21
Lowlevel-Coding / Wie Programme ausfürhen?
« am: 19. April 2005, 18:21 »
Jetzt wo ich im PM meinen Keyboard-Input ganz gut drin hab...

[Bild]
und die Konsole auch läuft wollt ich fragen was als nächstesn "kommt". Wahrsacheinlich wohl Programme laden, oder? Im PM benötige ich dazu also einen Floppy-Driver und dann halt n' Loader. Also, erzählt mal was denkt ihr was die "richtige" Abfolge zum Kernel-Bau ist.

Bis jetzt kam ich so vorran:

1: RM-Kernel
2: RM-Console
3: RM-Zeug löschen, PN Sprung.
4: IDT
5: IRQs
6: Keyboard-Treiber
7: Console

Edit: [Titel geändet]
Hab noch ne Frage an euch. Wenn ihr Proggs schon drin habt, macht ihr ein eigenes Format oder haltet ihr euch an die POSIX-Regeln?
22
OS-Design / C++ Kernel?
« am: 19. April 2005, 18:15 »
Wenn du C nutzen willst, dann kann ich nur http://www.osdever.net/tutorials/basickernel.php?the_id=12.

Mit *etwas* (*ähäh*) aufarbeit und ner neuen print funktion ist das echt gut. Habs auch als Grundlage für meine Kernel benutzt.
23
Jup, danke Jungs.


void irq_1(void) // Keyboard
{
  printf("Keyboard meldet sich!");
  out(0x20,0x20);
  out(0xA0,0x20);
  in(0x60);
}


Funktioniert wunderbar.  :D
24
Also, ich programmiere im PM und habe nun nach dem 2. Versuch (Beim ersten [~2,5 Stunden Versuch] hab ich mir letztendlich den Code zerschossen) geschafft meine eigenen IDT anzulegen (direkt aus dem PM herraus) und mit einträgen zu füllen.

Dafür hab ich mir fürs Keyboard das hier gecodet:

void irq_1(void) // Keyboard
{
  printf("Keyboard!");
}

Funktioniert auch im Grunde wunderbar und tut was es soll. Einen Text ausgeben bei Tastendruck. Allerdings nur ein mal. Drücke ich auf eine Taste wird der Code ausgegeben. Lass ich los und drück wieder kommt nichts.

So habe ich zwei Fragen:
1. Was muss ich tun um es beim 2. Mal auch zum Funktionieren zu bringen?
2. Wo bekomm ich letztendlich den Scancode der gedrückten Taste her?
25
Lowlevel-Coding / Include bei NASM
« am: 08. February 2005, 16:27 »
%include "Include\System1.asm"

Ist echt praktisch so was ;)
26
Lowlevel-Coding / Cursor bewegen
« am: 25. January 2005, 22:03 »

unsigned char in(unsigned short _port)
{
  // "=a" (result) means: put AL register in variable result when finished
  // "d" (_port) means: load EDX with _port
  unsigned char result;
  __asm__  ("in %%dx, %%al" : "=a" (result) : "d" (_port));
  return result;
}

void out(unsigned short _port, unsigned char _data)
{
  // "a" (_data) means: load EAX with _data
  // "d" (_port) means: load EDX with _port
  __asm__ ("out %%al, %%dx" : :"a" (_data), "d" (_port));
}


Die benötigten Funktionen...

N' paar Beispiele

  // Setze Cursor-Position auf 0,0
  out(0x3D4, 14);
  out(0x3D5, 0);
  out(0x3D4, 15);
  out(0x3D5, 0);



  unsigned short offset;
  unsigned char *vidmem = (unsigned char *)0xB8000;

  // Lese Cursor Position
  out(0x3D4, 14);
  offset = in(0x3D5) << 8;
  out(0x3D4, 15);
  offset |= in(0x3D5);

  vidmem += offset*2;


Jetzt kannst du auf vidmem schön zugreifen ...


  // Setze Cursor zur 'line' Zeile
  out(0x3D4, 14);
  out(0x3D5, 0);
  out(0x3D4, 15);
  out(0x3D5, line*80);
[/code]
27
Lowlevel-Coding / Total-Noob braucht hilfe
« am: 24. January 2005, 23:51 »
Zitat von: Roshl
Ich hab mit heute mal TJ's Bootloader geschnappt und ein wenig umgebaut^^
Er schaltet in den PMode, lädt also eine GDT und auch eine IDT.
Er kann jetzt insgesamt 3 Dateien laden (z.B kernel-datei, GDT-datei, IDT-datei), FAT12 natürlich
Nebenbei aktiviert er den Grafikmode 13h^^
Ausserdem hat man (zumindest für meinen Kernel) die Möglichkeit das Bootdevice mit an den kernel zu übermitteln.
Alles innerhalb von 512Byte^^
Falls jemand Interesse an diesem leicht getuneten Bootloader hat...^^


Würd mich erlich gesagt mal interessieren, vor allem da ich es gerade mal schaffe im PN etwas bunten Text auszugeben... IDT hab ich mich noch nih mit beschäftigt würd's mir gern mal anschauen...

Achja, noch ne kleine Frage am Rande: Ist es möglich im RM den Bildschirm zu leeren wie mans ja oft im PM sieht... würd mich echt mal interessieren da ich, in meinem anderen OS gerne nach dem Login den Bildschirm leeren würd damit die Shell auf einer schönen frischen Seite ist...
Seiten: 1 [2]

Einloggen