Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:diy:assembler:int5fh

PORTGR.EXE

Portfolio Grafik-Treiber von Mark Reeves.
PORTGR.EXE installiert ein TSR welches eienen Interrupt 5Fh zur Verfügung stellt. Diesen Interrupt kann man in z.B. Assembler oder BASIC aufrufen um folgende Grafik-Funktionen zu realisieren:
Pixel setzten, Pixel lesen, Linie zeichnen, Viereck zeichnen, Kreis Zeichnen und Fläche Füllen. Dies ist eine große Entlastung für den Programmierer und den Code, allerdings funktionieren die damit erstellten Programme (BAS, COM, EXE…) nur solange der Treiber installiert ist.

PORTGR.EXE ist 4352 KB groß und braucht 8KB RAM, das Programm hat einen internen Stack von 3KB der beim Füllen von Flächen verwendet wird.

Alle Aufrufe werden durch den Interrupt 5Fh durchgeführt, die gewünschten Werte müssen beim Aufruf in den Registern stehen.

Werte für die X-Koordinate müssen zwischen 1 und 240 und Werte für die Y-Koordinate zwischen 1 und 64 liegen, Werte die darunter oder darüber liegen werden auf das Maximum oder Minimum beschränkt.

RegisterBedeutung
AHFunktionsaufruf
00h Versionsnummer ausgeben (in AX)
01h Grafik-Modus
02h Text-Modus
03h Pixel setzten
04h Pixel lesen
05h Linie Zeichnen
06h Horizontale zeichnen (schneller als 05h)
07h Vertikale zeichnen (schneller als 05h)
08h Viereck Zeichnen
09h Kreis Zeichnen
0Ah Fläche füllen
FEh Lese Tastaturpuffer (0,1)
FFh Taste abfragen
ALPixel-Wert (0,1)
BHX-Koordinate 1 (X1=1…240)
BLY-Koordinate 1 (Y1=1…64)
CHX-Koordinate 2 (X2=1…240)
CLY-Koordinate 2 (Y2=1…64)
DLKreis-Radius

Ergebnisse (wenn AH=0,FEh oder FFh) stehen nach Rückkehr in AL oder AX, etwaige Fehler-Codes in BX.
BX=0: Funktion durchgeführt
BX=1: Stapelüberlauf, Funktion abgebrochen.

Das Spiel PUNKMAN JR von Robert Quezada wurde unter Verwendung von PORTGR.EXE programmiert. Das Spiel funktioniert also nur, wenn nach dem letzten Warmstart PORTGR.EXE installiert wurde.

Beispiel (ASM):
Zeichnet ein Quadrat in der Mitte des Bildschirms:

MOV AH,08h		;Viereck Zeichnen
MOV AL,1		;Pixel-Farbe
MOV BH,98		;X1 (Mitte minus 22)
MOV BL,10		;Y1 (Mitte minus 22)
MOV CH,142		;X2 (Mitte plus 22)
MOV CL,54		;Y2 (Mitte plus 22)
INT 5Fh        	;PORTGR

Der Bildschirm muß sich natürlich im Grafik-Modus befinden, dies kann man mit dem INT 5Fh selbst,

MOV AH,1		;Grafik-Modus
INT 5Fh               ;PORTGR

oder mit dem BIOS-INT 10h

MOV AH,0		;Bilschirm-Modus definieren
MOV AL,8		;Grafik-Modus
INT 10h

erledigen.

software/diy/assembler/int5fh.txt · Zuletzt geändert: 24/02/2007 00:02 (Externe Bearbeitung)