Probleme mit Radeon und Get Font Information
Von: Dirk Wolfgang Glomp (dirk@freecrac.dyndns.org) [Profil]
Datum: 10.10.2008 13:11
Message-ID: <1x1miu30ki1gt.1ex6f2zcn6ii3$.dlg@40tude.net>
Followup-to: de.comp.os.msdos
Newsgroup: de.comp.hardware.graphik de.comp.os.msdos
Datum: 10.10.2008 13:11
Message-ID: <1x1miu30ki1gt.1ex6f2zcn6ii3$.dlg@40tude.net>
Followup-to: de.comp.os.msdos
Newsgroup: de.comp.hardware.graphik de.comp.os.msdos
Hallo Leute. Ich habe eine Anwendung geschrieben die den Pointer/Vector von 1F holt, damit ich auf den dortigen Font(character) zugreifen kann. Meine Anwendung schaltet in den Unrealmode um den linearen Framebuffer und das eingesteckte GB Ram mit einem 32Bit-offset-reg Lesen und Beschreiben zu können. Den Font-Pointer hole ich auf folgende Weise: xor eax, eax xor ecx, ecx xor edx, edx mov ax, 1130h ; Get Font Information xor bh, bh ; bh=0 pointer 1Fh int 10h mov dx, es ; Segment von pointer: 1F mov cx, bp ; Offset von pointer: 1F mov ax, Daten mov ds, ax shl eax, 4 shl edx, 4 lea edx, [edx+ecx] sub edx, eax Mit ds:[edx] kann man nun auf den Font zugreifen. ;------------------------------------------------------- Mit einer MSI Geforce4 klappt das soweit auch ganz gut und zufriedenstellend. **** Mit einer Powercolor Radeon 9800pro bekomme ich einen Absturz, Rechner friert ein. Mit Debug und selben Interruptaufruf bekomme ich auch mit der Radeon zufriedenstellende Werte geliefert, die mit dem Pointer in 1F*4 auch identisch sind. Wenn meine Anwendung statt des Interruptaufrufes den Pointer selber aus 1F*4 holt, gibt es keine Problem mit der Radeon. xor ax, ax mov es, ax mov bp, 1Fh * 4 mov cx, es:[bp] ; Offset mov dx, es:[bp+2] ; Segment Hatte jemand schon ähnliche Probleme mit diesem Interrupt-Aufruf? **** Hier die nötigen Details: RBIL->inter61a.zip->Interrup.a --------V-101130----------------------------- INT 10 - VIDEO - GET FONT INFORMATION (EGA, MCGA, VGA) AX = 1130h BH = pointer specifier 00h INT 1Fh pointer 01h INT 43h pointer 02h ROM 8x14 character font pointer 03h ROM 8x8 double dot font pointer 04h ROM 8x8 double dot font (high 128 characters) 05h ROM alpha alternate (9 by 14) pointer (EGA,VGA) 06h ROM 8x16 font (MCGA, VGA) 07h ROM alternate 9x16 font (VGA only) (see #00021) 11h (UltraVision v2+) 8x20 font (VGA) or 8x19 font (autosync EGA) 12h (UltraVision v2+) 8x10 font (VGA) or 8x11 font (autosync EGA) Return: ES:BP = specified pointer CX = bytes/character of on-screen font (not the requested font!) DL = highest character row on screen Note: for UltraVision v2+, the 9xN alternate fonts follow the corresponding 8xN font at ES:BP+256N BUG: the IBM EGA and some other EGA cards return in DL the number of rows on screen rather than the highest row number (which is one less). SeeAlso: AX00h,AX03h,AX20h,INT 1F"SYSTEM DATA",INT 43"VIDEO DATA" Format of alternate font table [array]: Offset Size Description (Table 00021) 00h BYTE character to be replaced (00h = end of table) 01h N BYTEs graphics data for character, one byte per scan line ----------------------------------------------------------------- RBIL->inter61b.zip->Interrup.e --------B-1F--------------------------------- INT 1F - SYSTEM DATA - 8x8 GRAPHICS FONT Desc: this vector points at 1024 bytes of graphics data, 8 bytes for each character 80h-FFh Notes: graphics data for characters 00h-7Fh stored at F000h:FA6Eh in 100% compatible BIOSes Under PhysTechSoft's PTS ROM-DOS this table is fictitious. SeeAlso: INT 10/AXP00h,INT 43 ----------------------------------------------------------------- Dirk[ Auf dieses Posting antworten ]
