Hallo Zusammen, ich habe mich am We mal ein wenig mit Assembler und dem 8086 auseinandergesetzt, geht ja recht gut mit WinXP und dem MASM. Nun möchte ich nur die Grafikkarte mit 16k Farben nutzen. Ich komme mit dem INT10 auf maximal 265 Farben, das lohnt nicht wirklich. Hat vielleicht jemand eine Idee, woher ich die nötigen Infos bekommen kann? Bin nicht wirklich ein Assembler Freak, daher bevorzuge ich verständliche Infos :) Vielen Dank
So weit ich mich recht erinnere, hab ich das früher immer mit direktzugriff auf die vesa-graka kompatiblen register gemacht, damit bekommt man dann beliebige auflösungen und farbtiefen hin. lang ists her ;)
- INT 10 Funktion 4Fh mit diversen Unterfunktionen (VESA) Zugriff auf Bildschirmspeicher ab A000:0000h - wenn du unter XP Arbeitest, warum nicht gleich die Betriebssystemroutinen nehmen ? Gruss
INT 10 nutze ich. Allerdings komme ich in den Vesa Modus nicht rein, mein Programm stürzt ab und wird vom XP beendet. Was meinst Du genau mit Betriebssystemroutinen? Gruß
winxp blockt wohl den zugriff auf diese ints um genau das zu verhindern, was du vorhast, nämlich ihne sein wissen den grafikmodus zu wechseln. das wird unter win wohl nicht zu klappen wofür soll das überhaupt gut sein, unter win auf soetwas zuzugreifen?
Lass dein Prog doch ohne Windows laufen. Wenn du alles in ASM machst brauchst du es doch ohnehin nicht mehr. Du musst dir nur noch eine Routine zur Tastaturabfrage und zum Speicherzugriff machen :-)
Ich möchte ein wenig in Richtung RayTracing gehen - und mit 256 Farben macht das kein Spaß. Ohne Windows wirds nicht klappen, bzw. ohne DOS - ich brauche doch die Interrupts :) und alles selber machen, das ist mir ehrlich gesagt für "private-spielerein" zuviel :)
unter dos hast du vollzugriff auf alle ints, da ginge es. was spricht gegen die ganz normalen win grafikfunktionen und render so punkt für punkt auf den bildschirm. dann hast du bis zu 24bit die du nutzen kannst
Damit meint er die Win32-API. Die ist nämlich dafür da, um mit der Hardware des Rechners zu kommunizieren. VESA-BIOS-Interrupts gibt's unter Windows nicht, sondern eben die die Devicetreiber der Graphikkarten verwendenden GDI-Funktionen. Wenn Du allerdings nur DOS-Programme schreibst (also 8086-Assembler bzw. RealMode-Programme), dann kannst Du auf Betriebssystemfunktionen nicht zugreifen. DOS-Programme laufen unter einem Betriebssystem nur sehr eingeschränkt; nicht ohne Grund ist DOS tot. Ohne Dir zunahetreten zu wollen, aber Du solltest, wenn Du es tatsächlich für erforderlich hältst, Assemblerprogramme zu schreiben, dann nutze wenigstens die Möglichkeiten der 32-Bit-Programmierung (kein Krampf mit diesen Drecks-Speichersegmenten) und nutze Betriebssystemfunktionen statt völlig veralteter DOS/BIOS-Interrupts.
http://win32asm.cjb.net (Auf der Seite hats auch ein DirectDraw Beispiel, sieht allerdings nach DirectX 7.0 aus...)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.