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.
Register | Bedeutung | |
---|---|---|
AH | Funktionsaufruf | |
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 | ||
AL | Pixel-Wert (0,1) | |
BH | X-Koordinate 1 (X1=1…240) | |
BL | Y-Koordinate 1 (Y1=1…64) | |
CH | X-Koordinate 2 (X2=1…240) | |
CL | Y-Koordinate 2 (Y2=1…64) | |
DL | Kreis-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.