N
Hi.
imson schrieb:
Was mir natürlich auffällt, ist ,dass man mit den Standardbefehlen nur den Ram ansprechen kann.
Ich weiss ja nicht, was du unter "Standardbefehle" verstehst, aber das stimmt ja so nicht ganz. In diesem Zusammenhang sind da zumindest noch die I/O-Ports erwaehnenswert (in/out).
imson schrieb:
Aber wie kann ich die Grafikkarte ansprechen bzw. mit dem GPU kommunizieren und auch Festplatte, Soundkarte usw ansprechen ? Gibt es da auch Interrupt-Befehlssätze ?
Das kommt vor allem darauf an, fuer welches OS du programmierst.
Da hier vom int 21h die Rede war, gehe ich mal von DOS aus.
Unter DOS ist der direkte Zugriff auf BIOS (via Interrupts) und Hardware (via I/O-Ports/Speicher-Mappings) moeglich.
Die Grafikkarte bringt ihr eigenes BIOS mit, das vornehmlich ueber int 10h angesprochen wird. In Verbindung mit der VBE sind uA. auch hochausloesende Grafikmodi und direkter FrameBuffer-Zugriff moeglich.
Stichworte sind VESA, VBE und VGA. Ralf Browns Interrupt Liste koennte hier hilfreich sein.
Ansonsten mal bei vesa.org vorbeischauen oder google befragen.
Leider hat sich bei den entsprechenden Standards aber AFAIK schon seit Jahren nichts mehr getan, so dass alle weitergehenden Hardwarebeschleunigungsfunktionen (3D usw.) nur durch direkte Hardwareprogrammierung gesteuert werden koennen. Wie das im Einzelnen funktioniert ist Grafikchipspezifisch. Da die Hersteller idR. aber keine genaueren Infos ueber ihre Chips rausruecken wollen, hast du in der Hinsicht wohl erstmal Pech gehabt.
Das BIOS stellt ueber int 13h Funktionen zum Direkten Zugriff auf Diskette/Festplatte zur Verfuegung. Sofern du aber nicht ein eigenes OS, FS o.Ae. bauen willst, brauchst du das nicht.
Den Zugriff auf Dateien regelt das OS - in deinem Fall wohl DOS.
Mit Soundkarten ist das nun so eine Sache. Theoretisch deckt der VESA-Standard auch andere Hardware wie Soundkarten ab - praktisch ist mir aber noch kein Hersteller bekannt, der ein derartiges BIOS auf seinen Soundkarten verbaut.
Hier musst du die Hardware wohl oder uebel also auch direkt programmieren.
Frueher waren fast alle ISA-Sounkarten irgendwo mit dem SoundBlaster kompatibel. Wie der SoundBlaster programmiert werden kann, ist recht gut dokumentiert. Selbst Creative hat entsprechende Docs rausgebracht. Einfach mal googlen...
Auch heute sollten AC97-kompatible Soundkarten (die meisten OnBoard-Soundloesungen) noch eine gewisse SoundBlaster-Kompatibilitaet bieten - mir sind aber auch schon Chipsets untergekommen, die in den Streik getreten sind, sobald man denen mit dem SoundBlaster kam.
SoundKarten-Programmierung kannst du also ohne entsprechende Treiber zur SoundBlaster-Emulation unter DOS so ziemlich vergessen.
Funktionen zur Tastatursteuerung bieten sowohl das BIOS (int 16h) als auch DOS.
Die Ansteuerung der Maus erledigt unter DOS ein Maus-Treiber. Dieser kann - sobald er installiert wurde - ueber int 33h angesprochen werden.
Das war wohl erstmal das Wichtigste...