Autor Thema: Vesa gibt modeinfo nicht  (Gelesen 4067 mal)

thetrue

  • Beiträge: 216
    • Profil anzeigen
    • http://www.the-true.net
Gespeichert
« am: 13. August 2006, 20:07 »
moin,

also komischerweise steht bei VbeModePhysBasePtr die adresse um pixel zu malen nicht ....

hier der code ausschnitt:


mov ax, 0x4F01
mov di, VbeModeInfoBlock
mov cx, 0x118
int 0x10
//andere datei\\
VbeModeInfoBlock:
VbeModeModeAttributes db 0, 0
VbeModeWinAAttributes db 0
VbeModeWinBAttributes db 0
VbeModeWinGranularity db 0, 0
VbeModeWinSize db 0, 0
VbeModeWinASegment db 0, 0
VbeModeWinBSegment db 0, 0
VbeModeWinFuncPtr db 0, 0, 0, 0
VbeModeBytesPerScanLine db 0, 0
VbeModeXResolution db 0, 0
VbeModeYResolution db 0, 0
VbeModeXCharSize db 0
VbeModeYCharSize db 0
VbeModeNumberOfPlanes db 0
VbeModeBitsPerPixel db 0
VbeModeNumberOfBanks db 0
VbeModeMemoryModel db 0
VbeModeBankSize db 0
VbeModeNumberOfImagePages db 0
VbeModeReserved_page db 0
VbeModeRedMaskSize db 0
VbeModeRedMaskPos db 0
VbeModeGreenMaskSize db 0
VbeModeGreenMaskPos db 0
VbeModeBlueMaskSize db 0
VbeModeBlueMaskPos db 0
VbeModeReservedMaskSize db 0
VbeModeReservedMaskPos db 0
VbeModeDirectColorModeInfo db 0
VbeModePhysBasePtr db 0, 0, 0, 0
VbeModeOffScreenMemOffset db 0, 0, 0, 0
VbeModeOffScreenMemSize db 0, 0
VbeModeLinBytesPerScanLine db 0, 0
VbeModeBnkNumberOfPages db 0
VbeModeLinNumberOfPages db 0
VbeModeLinRedMaskSize db 0
VbeModeLinRedFieldPos db 0
VbeModeLinGreenMaskSize db 0
VbeModeLinGreenFieldPos db 0
VbeModeLinBlueMaskSize db 0
VbeModeLinBlueFieldPos db 0
VbeModeLinRsvdMaskSize db 0
VbeModeLinRsvdFieldPos db 0
VbeModeMaxPixelClock db 0, 0, 0, 0
VbeModeReserved:
times 190 db 0



so teste ich es ...

mov edi, dword [VbeModePhysBasePtr]
cli
hlt
;mov ecx, 1024 * 756
;mov eax, 0xCC
;rep stosd


nja dann halt die bochs cpu dump angucken ;)
thetrue way is my way

ST-225

  • Beiträge: 43
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 13. August 2006, 20:13 »
An der Adresse von [VbeModePhysBasePtr] sollte eigentlich auch nichts stehen, das ist ja der grafikspeicher und der is leer...

Lies am Besten nochmal ein asm-buch oder informier dich zumindest über pointer etc., bevor du hier nochmal fragst  :wink:

thetrue

  • Beiträge: 216
    • Profil anzeigen
    • http://www.the-true.net
Gespeichert
« Antwort #2 am: 13. August 2006, 20:16 »
öhm ... soweit ich weiß wird dann einfach die adresse von der variable, und nicht von dem inhalt der variable geschikt, und der inhalt sollte eine adresse sein!

übrigens so steht es auch in einem tutorial
thetrue way is my way

ST-225

  • Beiträge: 43
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 13. August 2006, 20:18 »
Das tut kenn ich auch  :wink:

Versuch mal wenn du die eckigen klammern um VbeModePhysBasePtr weglässt und dann nach ebx schreibst, dann müsstest du die adresse haben.

thetrue

  • Beiträge: 216
    • Profil anzeigen
    • http://www.the-true.net
Gespeichert
« Antwort #4 am: 13. August 2006, 20:20 »
mov edi, VbeModePhysBasePtr
mov ecx, 1024 * 756
mov ebx, 0xCC
rep stosd


öhm so wird net mal die auflösung verändert. obwohl sie es eigentlich nach dem modeinfo tun sollte ^^

bzw so:
mov ebx, VbeModePhysBasePtr
mov ecx, 1024 * 756
mov ebx, 0xCC
rep stosd
thetrue way is my way

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #5 am: 13. August 2006, 20:21 »
Also "mov edi,[VbeModePhysBasePtr]" ist schon richtig. Ich glaube "ST-225" hat sich da einbisschen vertan. ^^

bitmaster
In the Future everyone will need OS-64!!!

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #6 am: 13. August 2006, 20:23 »
Zitat von: ST-225
Das tut kenn ich auch  :wink:

Versuch mal wenn du die eckigen klammern um VbeModePhysBasePtr weglässt und dann nach ebx schreibst, dann müsstest du die adresse haben.
Hä? Also ich verstehe nicht ganz was du meinst. Wenn du die eckigen Klammern weglässt, dann bekommt er die Adresse von "VbeModePhysBasePtr", also an welcher Adresse VbeModePhysBasePtr steht, aber nicht den Inhalt von VbeModePhysBasePtr.

bitmaster
In the Future everyone will need OS-64!!!

thetrue

  • Beiträge: 216
    • Profil anzeigen
    • http://www.the-true.net
Gespeichert
« Antwort #7 am: 13. August 2006, 20:24 »
Zitat von: bitmaster
Zitat von: ST-225
Das tut kenn ich auch  :wink:

Versuch mal wenn du die eckigen klammern um VbeModePhysBasePtr weglässt und dann nach ebx schreibst, dann müsstest du die adresse haben.
Hä? Also ich verstehe nicht ganz was du meinst. Wenn du die eckigen Klammern weglässt, dann bekommt er die Adresse von "VbeModePhysBasePtr", also an welcher Adresse VbeModePhysBasePtr steht, aber nicht den Inhalt von VbeModePhysBasePtr.

bitmaster


jo, so denke ich auch ;)
thetrue way is my way

ST-225

  • Beiträge: 43
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 13. August 2006, 20:28 »
sorry, ihr habt natürlich recht  :oops:

bin da jetzt grad etwas durcheinander gekommen und besser sollte wohl ich nochmal was über pointer lesen  :oops:

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #9 am: 13. August 2006, 20:28 »
versuchs mal so:

;modus Informationen werden geschrieben
mov ax,4F01h
mov cx,0118h ;kA welcher Modus das sein soll
mov di,VbeModeInfoBlock
int 10h

;modus wird gesetzt
mov ax,4F02h
mov bx,4118h ;kA welcher Modus das sein soll
int 10h

;jetzt im PM und es = Basis Null

mov edi,[VbeModePhysBasePtr]
mov eax,00FFFFFFh ;weiß
mov ecx,100*200 ;zum Test
rep stosd


Also ich würde aber die Informationen auswerten und testen ob es der gewünschte Modus ist, weil jeder PC ne andere VESA Nummer hat. Beim Pixel schreiben musst du es evt. anders machen. Jenachdem welche Bittiefe.

bitmaster
In the Future everyone will need OS-64!!!

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #10 am: 13. August 2006, 20:29 »
Zitat von: ST-225
sorry, ihr habt natürlich recht  :oops:

bin da jetzt grad etwas durcheinander gekommen und besser sollte wohl ich nochmal was über pointer lesen  :oops:
Oder du hättest einfach ne Ausrede benutzen können das du TASM oder MASM verwendest. ^^

bitmaster
In the Future everyone will need OS-64!!!

 

Einloggen