software:diy:assembler:int5fh
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Vorhergehende ÜberarbeitungNächste Überarbeitung | |||
— | software:diy:assembler:int5fh [24/02/2007 00:02] – internen Link eingefügt. uxt | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== 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, | ||
+ | |||
+ | 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. | ||
+ | |||
software/diy/assembler/int5fh.txt · Zuletzt geändert: 24/02/2007 00:02 (Externe Bearbeitung)