Forum: Offtopic Assembler MASM - Grafik


von Thopo (Gast)


Lesenswert?

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

von Tobi (Gast)


Lesenswert?

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 ;)

von T.Stütz (Gast)


Lesenswert?

- 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

von Thopo (Gast)


Lesenswert?

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ß

von Tobi (Gast)


Lesenswert?

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?

von Freak5 (Gast)


Lesenswert?

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 :-)

von thopo (Gast)


Lesenswert?

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 :)

von Tobi (Gast)


Lesenswert?

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

von thopo (Gast)


Lesenswert?

ja, aber was meinst Du mit den ganz normalen windows grafikfunktionen?

von Rufus T. Firefly (Gast)


Lesenswert?

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.

von Bartli (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.