software:diy:assembler:int5fh
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
software:diy:assembler:int5fh [07/09/2006 23:09] – angelegt uxt | software:diy:assembler:int5fh [Unbekanntes Datum] (aktuell) – Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== PORTGR.EXE ====== | ====== PORTGR.EXE ====== | ||
- | Portfolio Grafik-Treiber von Mark Reeves. | + | 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: | 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. | Pixel setzten, Pixel lesen, Linie zeichnen, Viereck zeichnen, Kreis Zeichnen und Fläche Füllen. | ||
Zeile 7: | Zeile 7: | ||
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.\\ | 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, | + | Alle Aufrufe werden durch den Interrupt 5Fh durchgeführt, |
- | 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. | + | 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, | ||
+ | |||
+ | Das Spiel [[software: | ||
+ | |||
+ | Beispiel (ASM):\\ | ||
+ | Zeichnet ein Quadrat in der Mitte des Bildschirms: | ||
+ | MOV AH, | ||
+ | MOV AL, | ||
+ | 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, | ||
+ | INT 5Fh ; | ||
+ | oder mit dem BIOS-INT 10h | ||
+ | MOV AH, | ||
+ | MOV AL, | ||
+ | INT 10h | ||
+ | erledigen. | ||
- | Register-Struktur | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
software/diy/assembler/int5fh.1157666271.txt.gz · Zuletzt geändert: 16/02/2024 17:02 (Externe Bearbeitung)