Diese Interrupte werden vom Maustreiber zur Verfügung
gestellt.
Bei der Umrechnung der Einheiten gilt: 1 Zoll=1 Inch=2,54 cm.
| Funktion |
Bedeutung |
Eingabe |
Ausgabe |
Anmerkungen |
| 00h |
Reset |
AX=00h |
AX=0, wenn Maus installiert, -1, wenn Maus nicht installiert
BX=Anzahl der Maustasten |
Setzt gesamte Maushardware zurück. Sollte jedes Programm einmal aufrufen, das
eine Maus verwendet. |
| 01h |
Mauszeiger an |
AX=01h |
- |
Interner Zähler wird inkrementiert. Aufgrund des internen Zählers
muß der Mauszeiger so oft angeschaltet werden, wie er ausgeschaltet wurde, um ihn wieder
darzustellen. |
| 02h |
Mauszeiger aus |
AX=02h |
- |
Interner Zähler wird dekrementiert. Diese Funktion sollte prinzipiell vor
Bildschirmausgaben aufgerufen werden, da sonst an der Stelle des Mauszeigers nicht gezeichnet wird.
Aufgrund des internen Zählers muß der Mauszeiger so oft angeschaltet werden, wie er
ausgeschaltet wurde, um ihn wieder darzustellen. |
| 03h |
Status der Maustasten und Position |
AX=03h |
BX=Status
CX=Mausspalte
DX=Mauszeile |
Der Status der Maustasten ist in BX bitweise kodiert (Bit 0=linke, Bit 1=rechte,
Bit 2=mittlere) |
| 04h |
Mauszeiger bewegen |
AX=04h
CX=Mausspalte
DX=Mauszeile |
- |
Die Koordinaten beziehen sich auf das Maus - Koordinatensystem (640*200
Pixel) |
| 05h |
Status beim Drücken |
AX=05h
BX=Maustaste |
AX=Status
BX=Zähler
CX=Mausspalte
DX=Mauszeile |
Dient zum Abfragen einzelner Maustasten. 0=linke, 1=rechte, 2=mittlere Maustaste
(in BX übergeben).
CX und DX enthalten die Koordinaten beim letzten Drücken und BX einen Zähler, der
angibt, wie oft die Maustaste seit dem letzten Aufruf dieser Funktion gedrückt
wurde. |
| 06h |
Status beim Loslassen |
AX=06h
BX=Maustaste |
AX=Status
BX=Zähler
CX=Mausspalte
DX=Mauszeile |
Dient zum Abfragen einzelner Maustasten. 0=linke, 1=rechte, 2=mittlere Maustaste
(in BX übergeben).
CX und DX enthalten die Koordinaten beim letzten Loslassen und BX einen Zähler, der angibt,
wie oft die Maustaste seit dem letzten Aufruf dieser Funktion gedrückt wurde. |
| 07h |
Bewegungsbereich (horizontal) einschränken |
AX=07h
CX=linke Grenze
DX=rechte Grenze |
- |
- |
| 08h |
Bewegungsbereich (vertikal) einschränken |
AX=08h
CX=obere Grenze
DX=untere Grenze |
- |
- |
| 09h |
Grafik-Cursor |
AX=09h
BX=X-Hotspot
CX=Y-Hotspot
ES:DX=Zeiger auf Maske |
- |
Die Maske setzt sich aus 16*16 - Bit - Masken zusammen, wobei die erste die
Bildschirmmaske und die zweite die Cursormaske ist. Die erste Maske wird mit dem Bildschirm UND
verknüpft, die zweite mit ODER. |
| 0Ah |
Text-Cursor |
AX=0Ah
BX=0 (Software - Cursor), 1 (Hardware - Cursor)
CX=UND-Maske
DX=ODER-Maske |
- |
CX: wenn Software - Cursor, dann Schirmmaske, ansonsten erste Scan-Linie des
Hardware - Cursors.
DX: wenn Software - Cursor, dann Cursor - Maske, ansonsten letzte Scan-Linie des Hardware -
Cursors. |
| 0Bh |
Bewegungszähler der Maus lesen |
AX=0Bh |
CX=horizontaler Zähler
DX=vertikaler Zähler |
Im Bewegungszähler wird die Anzahl der Mausbewegungen (Mickeys) seit dem
letzten Funktionsaufruf übergeben. Ein Mickey sind 1/200stel Zoll.
Ein Mickey ist 1/200 Inch für die 200ppi - Maus und 1/400 Inch für die 400ppi -
Maus.
Der Wertebereich erstreckt sich von -32768 bis 32767. |
| 0Ch |
Maus-Handler |
AX=0Ch
CX=Maske
ES:DX=Zeiger auf den Handler |
- |
Installiert einen Eventhandler für Mausereignisse. Der Wert in CX bestimmt,
bei welchen Aktionen dieser Handler aufgerufen werden soll. Vor Programmende muß diese
Funktion mit ES=0 und DX=0 oder Mausfunktion 0 aufgerufen werden.
Entsprechend den festgelegten Ereignissen wird die Interruptroutine aufgerufen, die mit dem Befehl
RETF beendet werden muß. (siehe dazu Maske sowie Register
bei Aufruf des Handlers |
| 0Dh |
Lichtgriffel - Emulation aktivieren |
AX=0Dh |
- |
Simuliert mit der Maus folgende Lichtgriffel - Funktionen:
- Lichtgriffel ist auf dem Bildschirm, wenn beide Maustasten (links+rechts) gedrückt
sind.
- Lichtgriffel vom Bildschirm entfernt, wenn beide Maustasten (links+rechts) losgelassen
sind. |
| 0Eh |
Lichtgriffel - Emulation abschalten |
AX=0Eh |
- |
- |
| 0Fh |
Bestimme Verhältnis Mickey / Bildpunkt |
AX=0Fh
CX=horizontales Verhältnis
DX=vertikales Verhältnis |
- |
Die Parameter müssen sich jeweils im Bereich von 1 bis 32767 befinden.
Der horizontale Standard - Wert ist 8, der Vertikale 16.
Ein Mickey ist 1/200 Inch für die 1/200ppi - Maus und 1/400 Inch für die 400ppi -
Maus. |
| 10h |
Bedingtes Abschalten des Cursors |
AX=10h
CX=rechte X-Koordinate
DX=untere Y-Koordinate
SI=linke X-Koordinate
DI=obere Y-Koordinate |
- |
Der Cursor wird gelöscht, wenn er sich in dem festgelegten Bereich befindet.
Er kann durch Funktion 01h wieder eingeschaltet werden. |
| 13h |
Setze Anfangswert für doppelte Geschwindigkeit |
AX=13h
DX=Geschwindigkeit in Mickeys pro Sekunde |
- |
Standard: 64 |
| 14h |
Swap - Interrupt - Subroutinen |
AX=14h
BX=Segment der neuen Subroutine
CX=neue Aufruf - Maske
DX=Offset der neuen Subroutine |
BX=Segment der alten Subroutine
CX=alte Aufruf-Maske
DX=Offset der alten Subroutine |
Aufbau Aufruf-Maske
Aufbau Subroutine |
| 15h |
Speicherbedarf für Maustreiber ermitteln |
AX=15h |
BX=nötige Puffergröße |
Puffergröße ist in Bytes angegeben. |
| 16h |
Maustreiber - Status speichern |
AX=16h
ES:DX=Zeiger auf Puffer |
- |
Größe des Puffers kann durch Funktion 15h bestimmt werden. |
| 17h |
Maustreiber - Status wiederherstellen |
AX=17h
ES:DX=Zeiger auf Puffer |
- |
- |
| 18h |
Eingabe - Maske für alternative Benutzerprozedur festlegen |
AX=18h
CX=Aufruf - Maske
DX:ES=Zeiger auf Subroutine |
AX=Status (-1 bei Fehler) |
- |
| 19h |
Adresse für benutzerdefinierten Interrupt lesen |
AX=19h
CX=Aufruf - Maske |
AX=Status (-1, wenn kein Vektor / keine Maske)
BX:DX=Zeiger auf Subroutine
CX=Aufruf - Maske |
- |
| 1Ah |
Mausempfindlichkeit setzen |
AX=1Ah
BX=horizontale Empfindlichkeit
CX=vertikale Empfindlichkeit
DX=Schwelle für Doppel - Geschwindigkeit |
- |
Ein Mickey (Mausbewegung) ist 1/200stel Zoll bei der 200ppi - Maus; 1/400stel Zoll
bei der 400ppi - Maus. |
| 1Bh |
Mausempfindlichkeit lesen |
AX=1Bh |
BX=horizontale Empfindlichkeit
CX=vertikale Empfindlichkeit
DX=Schwelle für Doppel - Geschwindigkeit |
Ein Mickey (Mausbewegung) ist 1/200stel Zoll bei der 200ppi - Maus; 1/400stel Zoll
bei der 400ppi - Maus. |
| 1Ch |
Maus - Interrupt - Verhältnis setzen |
AX=1Ch
BX=Interrupt - Rate |
- |
Rate gibt die Maximalzahl von Interrupts pro Sekunde an, definiert wie folgt:
0=keine Interrupts gestattet.
1=30 Interrupts pro Sekunde
2=50 Interrupts pro Sekunde
3=100 Interrupts pro Sekunde
4=200 Interrupts pro Sekunde
Werte größer 4 sollten nicht verwendet werden (nicht definiert). |
| 1Dh |
CRT - Seitennummer setzen |
AX=1Dh
BX=CRT - Seitennummer |
- |
- |
| 1Eh |
CRT - Seitennummer lesen |
AX=1Eh |
BX=CRT - Seitennummer |
- |
| 1Fh |
Maustreiber ausschalten |
AX=1Fh |
AX=Status (-1 bei Fehler)
ES:BX=Zeiger auf alten INT33h - Vektor |
- |
| 20h |
Maustreiber einschalten |
AX=20h |
- |
- |
| 21h |
Software - Reset |
AX=21h |
AX=Status (-1 zeigt an, daß der Maustreiber installiert ist; sonst 33
(21h))
BX=2 (nur, wenn Maustreiber installiert ist) |
- |
| 22h |
Sprache für Meldungen festlegen |
AX=22h
BX=Nummer der Sprache |
- |
Sprachwerte:
0=Englisch
1=Französisch
2=Niederländisch
3=Deutsch
4=Schwedisch
5=Finnisch
6=Spanisch
7=Porugiesisch
8=Italienisch |
| 23h |
Sprachnummer ermitteln |
AX=23h |
BX=Sprachnummer |
Sprachwerte:
0=Englisch
1=Französisch
2=Niederländisch
3=Deutsch
4=Schwedisch
5=Finnisch
6=Spanisch
7=Porugiesisch
8=Italienisch |
| 24h |
Treiberversion, Maustyp und IRQ-Nummer ermitteln |
AX=24h |
BX=Versionsnummer
CH=Maustyp
CL=IRQ-Nummer |
Maustyp:
1=Bus-Maus
2=serielle Maus
3=InPort - Maus
4=PS/2 - Maus
5=Hewlett - Packard - Maus
IRQ-Nummer:
Der Wert 0 steht für das Modell PS/2; die Werte 2 bis 5 und 7 sind ein
Maus-Interrupt. |
| 25h |
Allgemeine Treiberinformationen ermitteln |
AX=25h |
AH=Status
AL=Anzahl MDDS
BX=fCursorsperre
CX=FinMouse - Code
DX=fMouse beschäftigt |
Maustreiber - Version 6.26 oder jünger erforderlich.
Status:
Bit 7=Treibertyp (1: sys, 0: com)
Bit 6=0 (nicht integrierter Maustreiber), 1 (integrierter Maustreiber)
Bit 4-5 Cursortyp (Version 7.02 oder jünger)=
00: Software - Textcursor
01: Hardware - Textcursor
1X: Grafikcursor
Bit 0-3=Funktion 28: Mausinterrupt - Rate |
| 26h |
Maximale virtuelle Koordinaten ermitteln |
AX=26h |
BX=Maus - ausgeschaltet - Flag (1=ausgeschaltet, 0=eingeschaltet)
CX=absolutes virtuelles X-Maximum
DX=absolutes virtuelles Y-Maximum |
Maustreiber - Version 6.26 oder jünger erforderlich. |
| 27h |
Bildschirm / Cursor - Masken und Mausbewegungszähler
lesen |
AX=27h |
AX=Bildschirm - Maskenwert oder Start Scanzeile (ab Version 7.02)
BX=Cursor - Maskenwert oder Ende Scanzeile (ab Version 7.02)
CX=Roher horizontaler Mausbewegungs - Zähler
DX=Roher vertikaler Mausbewegungs - Zähler |
Maustreiber - Version 6.26 oder jünger erforderlich. |
| 28h |
Video - Modus setzen |
AX=28h
CX=Angeforderter Video - Modus
DX=Schriftgröße, 0 ist Vorgabe |
CX=0 bei Erfolg, sonst angeforderter Modus |
Maustreiber - Version 7.0 oder jünger erforderlich.
Schriftgröße:
High-Byte: y-Schriftgröße
Low-Byte: x-Schriftgröße |
| 29h |
Video - Modi aufzählen |
AX=29h
CX=0 für ersten, <>0 für nächsten |
BX:DX=Zeiger auf benannten String (0:0 bedeutet, daß kein benannter String
zurückgegeben wurde)
CX=Video - Modusnummer |
Maustreiber - Version 7.05 oder jünger erforderlich. |
| 30h |
Aktionspunkt des Cursors ermitteln |
AX=30h |
AX=fCursor (internes Flag)
BX=horizontaler Cursor - Aktionspunkt
CX=vertikaler Cursor - Aktionspunkt
DX=Maustyp |
Maustreiber - Version 7.02 oder jünger erforderlich.
Maustyp:
0=keiner
1=Bus-Maus
2=serielle Maus
3=InPort - Maus
4=IBM - Maus
5=Hewlett - Packard - Maus |
| 31h |
Maus - Beschleunigungs - Kurven laden |
AX=31h
BX=zu aktivierende Kurvennummer (-1 restauriert Vorgabekurve)
ES:SI=Zeiger auf Kurven - Array |
AX=0 bei Erfolg, sonst -1 |
Maustreiber - Version 7.0 oder jünger erforderlich. |
| 32h |
Maus - Beschleunigungs - Kurven lesen |
AX=32h |
AX=0 bei Erfolg, sonst -1
BX=aktive Kurvennummer
ES:SI=Zeiger auf Kurven - Array |
Maustreiber - Version 7.0 oder jünger erforderlich. |
| 33h |
Aktive Beschleunigungs - Kurve setzen / lesen |
AX=33h
BX=zu aktivierende Kurvennummer (-1, um die Nummer zu lesen, 1-4, um zu setzen) |
AX=0 bei Erfolg, -2: falsche Kurvennummer
BX=momentan aktive Kurve
ES:SI=Zeiger auf 16-Byte ASCII-String |
Maustreiber - Version 7.0 oder jünger erforderlich.
Der ASCII-String ist der Name der aktuell aktiven Kurve mit einem Null-Begrenzer
(ASCIIZ). |
| 35h |
Maus - Hardware - Reset |
AX=35h |
AX=0 bei Fehler, sonst -1 |
Maustreiber - Version 7.02 oder jünger erforderlich.
Es erfolgt KEIN Reset der Software-Werte. |
| 36h |
Mauskugel - Information setzen / lesen |
AX=36h
BX=Rotations - Winkel
CX=0 für Lesen, <>0 für Setzen |
AX=Status (-1, wenn keine Mauskugel vorhanden, sonst in AL Status der Tasten)
BX=Rotations - Winkel
CH=Primärtasten - Maske
CL=Sekundärtasten - Maske |
Maustreiber - Version 7.05 oder jünger erforderlich.
CX=0 (Eingabe):
BX wird ignoriert
CX <>0 (Eingabe):
BX=Rotations - Winkel
CH=Primärtasten - Maske
CL=Sekundärtasten - Maske
Tastenmaske=
0 0 b1 b3 b2 b4 0 0 |
| 37h |
Minimum / Maximum virtuelle Koordinaten lesen |
AX=37h |
AX=aktuelles virtuelles X-Minimum
BX=aktuelles virtuelles Y-Minimum
CX=aktuelles virtuelles X-Maximum
DX=aktuelles virtuelles Y-Maximum |
Maustreiber - Version 7.05 oder jünger erforderlich. |
| 38h |
Aktive erweiterte Funktionen lesen |
AX=38h |
AX=unterstützte Funktionen |
Maustreiber - Version 7.05 oder jünger erforderlich.
AX ist ein Bit-Array, höchtes Bit für Funktion 37 ... niederstes Bit für Funktion
52 |
| 39h |
Schalter - Einstellungen lesen |
AX=39h
CX=Länge des Puffers
ES:DX=Zeiger auf Puffer |
AX=0
CX=Zahl der zurückgegebenen Bytes
ES:DX=Zeiger auf Puffer |
Maustreiber - Version 7.05 oder jünger erforderlich. |
| 40h |
Position von MOUSE.INI ermitteln |
AX=40h |
ES:DX=Zeiger auf ASCIIZ - String |
Maustreiber - Version 8.00 oder jünger erforderlich. |
Die Register dürfen nicht verändert werden.
Die Register dürfen nicht verändert werden.
*=Bytes sind in umgekehrter Reihenfolge gespeichert.
| Tabellenteil |
Offset (dezimal) |
Länge (in Bytes) |
Beschreibung |
| Kurvenlänge |
0 |
1 |
Anzahl Zählung / Faktoren der ersten Kurve* |
| 1 |
1 |
Anzahl Zählung / Faktoren der zweiten Kurve* |
| 2 |
1 |
Anzahl Zählung / Faktoren der dritten Kurve* |
| 3 |
1 |
Anzahl Zählung / Faktoren der vierten Kurve* |
| Mauszähler |
4 |
32 |
Zähler-Array der ersten Kurve |
| 36 |
32 |
Zähler-Array der zweiten Kurve |
| 68 |
32 |
Zähler-Array der dritten Kurve |
| 100 |
32 |
Zähler-Array der vierten Kurve |
| Skal.-Faktoren |
132 |
32 |
Skalierungs-Array der ersten Kurve |
| 164 |
32 |
Skalierungs-Array der zweiten Kurve |
| 196 |
32 |
Skalierungs-Array der dritten Kurve |
| 228 |
32 |
Skalierungs-Array der vierten Kurve |
| Kurvennamen |
260 |
16 |
ASCII-String der ersten Kurve** |
| 276 |
16 |
ASCII-String der zweiten Kurve** |
| 292 |
16 |
ASCII-String der dritten Kurve** |
| 308 |
16 |
ASCII-String der vierten Kurve** |
*=Werte sollten im Bereich von 1 - 32 sein.
**=ohne Null-Begrenzer.
Die Funktionen können mit dem Turbo-Pascal-eigenen Assembler
aufgerufen werden. Ein Anwendungsbeispiel könnte so aussehen:
Bei den Mausfunktionen wird normalerweise im Register AX die
Funktionsnummer übergeben.
Alle Angaben ohne Gewähr.