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 - Homix

Seiten: 1 ... 4 5 [6] 7
101
Lowlevel-Coding / Maustreiber schreiben.
« am: 22. October 2005, 21:12 »
hi,
C++ ist zwar nicht mein Spezialgebiet (Pascal und asm sind besser  :D ), aber so ungefähr müsste es stimmen:


Loop:
  mov dx,KEYB_CTRL       ; wenn KEYB_CTRL ne Variable ist, dann [KEYB_CTRL] schreiben
  in al,dx
  and al,0x03
  and eax,[i]                    ; zwecks verständlichkeit drin, könnte man weglassen
  cmp eax,0                     ; könnte man ebenfalls weglassen
  jz Ende:
  mov dx,KEYB_BUF
  in al,dx
  dec [i]
  jmp Loop

Ende:
  ...

i dd 0


Aber ich bin mir nicht sicher, wie man einmal das "&" und dann das "&&" übersetzt, in meinen Augen ist in diesem Fall das beides ein AND (wobei ich && bei Vergleichen kenne).
probiers einfach mal aus.

cu,
stefan2005
102
Lowlevel-Coding / Timer Interrupt
« am: 22. October 2005, 20:50 »
hi,
also mein OS hat schon eine IDT und Interrupts, ich hatte auch nie wirklich Probleme damit. Ich initialisiere meine IDT auch erst im PMode.
Du musst auch drauf achten, dass "lidt [ds:xx]" wirklich die IDT-Adresse bilden, nicht dass sich DS und ein entsprechender ORG Befehl in die Quere kommen !

Wenn du nicht weiterkommst, kann ich dir ja mal ein wenig von meinem IDT Code zeigen/hier posten.

cu,
stefan2005
103
Lowlevel-Coding / Noch mehr Paging-Fragen
« am: 22. October 2005, 19:39 »
hi,
also in einer Bitmap nach freien Bits zu scannen kann ziemlich langsam sein, vor allem dann wenn der freie Speicher hinten in der Bitmap liegt und mehr als eine Page allokiert werden soll.
Für freie Pages auf einen Stack pushen ist zwar schnell, aber es ist schlicht unmöglich, damit mehr als eine Page allokieren zu lassen, außerdem ist der Speicherverbrauch durch den Stack ziemlich hoch.
Ich habe es selbst auch mal mit den 3 freien Bits in den PageTableEntries probiert, das ist aber noch langsamer als eine Bitmap weil man PageDirectory und PageTable beachten muss.

Jetzt verwende ich ein Array mit Einträgen, die den freien Speicher und die Adresse angeben. Das Array kann auch dynamisch erweitert werden, indem ein einziger Array-Eintrag als zusätzliches Array benutzt wird.
Außerdem ist diese Methode sehr schnell und es lassen sich auch problemlos Blöcke von mehreren MB's schnell allokieren.

cu,
stefan2005
104
hi,
danke hat mir geholfen !

mfg,
stefan
105
hi,
ist es möglich, dass man herausbekommt, ob im Vergleich zu vorhin eine andere Diskette im Diskettenlauferk ist oder nicht ?

ich möchte nämlich einen kleinen Sektorenbuffer in meinen Floppytreiber einfachen, aber wenn die Diskette gewechselt wird muss der Buffer ja gelöscht werden.

(2. wie kann man rausfinden, welche Eigenschaften (Heads, Cylinders, Sektoren,...) die Diskette hat ? )

cu,
stefan2005
106
Lowlevel-Coding / Funktionen in C-Kernel
« am: 16. August 2005, 22:53 »
hi,
ich kenn mich zwar in C nicht besonders gut aus, aber es könnte doch sein, dass, wenn du zum C-Kernel springst, nicht direkt zur _main Funktion springst sondern an den Anfang der C-Datei, wo eventuell eine andere Funktion stehen könnte.
Versuch einfach mal soweit wie möglich zu debuggen (mit while(true) ;) oder in deine andere Funktion eine kleine Ausgabe einzubauen, mitder du erkennst, dass die eventuell aufgerufen wurde, bevor die Kernel-Main gestartet wurde, evt. auch mit while(true) ; ... !
Hast du auch deinen C-Kernel mit einer Assemblerdatei verlinkt ?

cu,
stefan2005
107
Lowlevel-Coding / Funktionen in C-Kernel
« am: 16. August 2005, 18:20 »
hi,
es könnte sein, dass du vielleicht ein falsches oder fehlerhaftes Linkerscript hast.
Am besten überprüfe es nochmal oder poste es hier !

cu,
stefan2005
108
Offtopic / Kleines Projekt zum Theme Spieleprogrammierung
« am: 10. June 2005, 19:03 »
hi,
also ich glaube, dass solche kleinen Projekte eher zum Lernen dienen, damit man dann auch irgendwann mal ein größeres Projekt starten kann.
Meiner Meinung bringt es dann nichts, wenn man das "Lernprojekt" mit (in diesem Fall) Blitzbasic programmiert, da man Blitzbasic in größere Projekten eh nicht hernimmt und der Lerneffekt dann gleich null ist (biss auf spezielle Techniken, die unabhängig von der Programmiersprache sind).

cu,
stefan2005
109
Offtopic / eigene api erstellen
« am: 03. June 2005, 21:08 »
hi,
OpenGL für .NET, hmm.. ehrlich gesagt noch nie was davon gehört !
man könnte natürlich die ganz normalen DLL dateien einbinden wie in C++ aber dann würde es das ganze .NET nicht bringen und es ist wieder mit WinAPI in Verbindung.
Es gibt Managed DirectX9, das auch im Microsoft DirectX9 SDK enthalten ist, aber die Demos von Microsoft für C# waren allesamt um einiges langsamer (von den FPS her) als normale C++ Anwendungen.

cu,
stefan2005
110
Offtopic / eigene api erstellen
« am: 02. June 2005, 21:33 »
hi,
nein,
es soll zwar sowas wie Managed C++ für .NET geben aber ich find in meinem .NET SDK Ordner nix ... nur C#, J# (Java), JScript.NET, VB.NET.
C# find ich aber auch nicht schlecht, vor allem, da die Dateigrößen klein sind  :D , ist halt ne Mischung aus C/C++ (vor allem die Syntax), Java und Delphi Language.

cu,
stefan2005
111
Offtopic / eigene api erstellen
« am: 02. June 2005, 20:20 »
hi,
ich glaube SharpDevelop gibts kostenlos.
im Microsoft .NET SDK gibts einen C#, VB und java-ähnlichen Compiler mitgeliefert, außerdem noch ein IL-Assembler (sowas wie Assembler bloß für .NET) und ein Disassemblierungstool, und und und ...

cu,
stefan2005
112
Offtopic / Suche Helfer!
« am: 29. May 2005, 21:34 »
hi,
hmm Stefan Zerbst ?
ach ja stimmt da hab ich das Buch "3D-Spieleprogrammierung" von ihm !
Ist wirklich interesant  :D

cu,
stefan2005
113
OS-Design / Wie Windows arbeitet ...
« am: 23. May 2005, 21:57 »
hi,
es ist ja sogar möglich Windows auf Bochs laufen zu lassen (installieren)
dauert halt nur gewaltig lange, vlt kann man so auch Assemblerbefehle sehen.

cu,
stefan2005
114
Lowlevel-Coding / FDC Treiber läuft nur unter Bochs
« am: 06. May 2005, 22:16 »
hi,
ich hab heute mal angefangen, einen kleinen Diskettentreiber zu schreiben (und so klein wie möglich zu halten).
Folgender Code funktioniert NUR mit Bochs, aber nicht auf einem Real-PC !
wieso ?
auf dem Real-PC hat es den Anschein, dass er zwar den Floppy-Motor ein und ausschalten kann, aber er keine Sektoren ließt, was unter Bochs aber prima funktioniert, aber wieso ?
Beim Real-PC hängt er sich auch nicht auf, sonder es sind einfach keine (richtigen) Daten im Buffer.


void SendCommand(unsigned char _byte)
{
while((inb(0x3F4) & 128) != 128) ;           // warte, bis neue Befehle gesendet werden können
outb(0x3F5,_byte);
}

void MotorOn()
{
outb(0x3F2,28); // Enable Motor
Wait(500);
}

void MotorOff()
{
outb(0x3F2,0); // Disable Motor
}

void ReadSector(unsigned int _Sektor)
{
MotorOn();
ProgramDMA2();
SendCommand(0xE6); // ReadSector Command
SendCommand(0x00 | (FDC_LSNToHead(_Sektor) << 2)); // Head 0 , Drive 0
SendCommand(FDC_LSNToCylinder(_Sektor)); // Cylinder 0
SendCommand(FDC_LSNToHead(_Sektor)); // Head 0
SendCommand(FDC_LSNToSector(_Sektor)); // Sektor 0
SendCommand(0x02); // 512 Byte Sektor
SendCommand(0x12); // Sectors per Track
SendCommand(0x1B); // 3.5" Floppy
SendCommand(0x00);
WaitForIRQ06();
MotorOff();
}

void ProgramDMA2()
{
outb(0x08,0x14); // Disable DMA Controller
outb(0x0B,0x56); // Uses Channel 2
outb(0x0C,0x00); // Reset Flip-Flop
outb(0x04,(uint)Buffer & 0xFF); // Low Byte
outb(0x04,((uint)Buffer >> 8) & 0xFF); // High Byte
outb(0x81,((uint)Buffer >> 16) & 0xFF); // Page
outb(0x0C,0x00); // Reset Flip-Flop
outb(0x05,0xFF); // 1 Sektor (512 Byte)
outb(0x05,0x01);
outb(0x0A,0x02); // Release Channel
outb(0x08,0x10); // Enable DMA
}


cu,
stefan2005
115
Offtopic / Lateinlexikon
« am: 05. May 2005, 17:12 »
hi,
nettes Wörterbuch  :D
vlt werd ich auch bissle mithelfen und ein paar Vokabeln eintragen !

cu,
stefan2005
116
Lowlevel-Coding / Festplatte löschen
« am: 24. April 2005, 12:15 »
hi,
in den Kommentaren steht, dass nur zum Test ZUSÄTZLICH Sektoren per Bios ausgelesen werden und dann mit den Sektoren verglichen werden, die alleine durch ports gelesen wurden !

cu,
stefan2005
117
Lowlevel-Coding / Festplatte löschen
« am: 24. April 2005, 11:35 »
hi,
soweit ich es verstanden habe glaube ich eher, er will die ganze Festplatte mit 0en beschreiben, damit Daten oder so nicht mehr wiederhergestellt werden oder so und da nützt es nicht ganz so viel nur den MBR zu zerstören.
Mit dem Bios ist nach 8 GB schluß !

Hier findest du Code, wie du HDD-Sektoren lesen und schreiben kannst mit Ports:
http://www.nondot.org/sabre/os/files/Disk/HD_PORTS.asm

cu,
stefan2005
118
OS-Design / Realmode +C/Pascal
« am: 17. April 2005, 22:15 »
hi,
ich hab selber mal ein wenig 16-Bit Code mit C erstellt.
damals hatte ich TurboC hergenommen !

cu,
stefan2005
119
Offtopic / Seltsames Geräusch aus dem Rechner
« am: 12. April 2005, 12:51 »
hi,
bei mir so ein hohes Piepsen mal das Netzteil !
Aber komischerweise nur unter Windows und nicht unter DOS oder BIOS !
warscheinlich hatte es daran gelegen, dass ich ne neuere Graka hatte mit ectra Stromversorgung und unter Windows die Graka dann mehr ausgelastet wurde (durch Treiber,ect...).

cu,
stefan2005
120
Offtopic / Hacken auf 127.0.0.1 *lol*
« am: 09. April 2005, 22:23 »
lol
so was hab ich auch noch nicht erlebt  :mrgreen:

cu,
stefan2005
Seiten: 1 ... 4 5 [6] 7

Einloggen