Assembler MASM - Grafik

Gast #196378
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
Gast #196379
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 ;)
Gast #196380
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
Gast #196382
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?
Gast #196383
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 :-)
Gast #196384
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 :)
Gast #196385
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
Gast #196387
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren