nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

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
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 ]