home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
assemblr
/
library
/
lib4a86
/
doc
/
keys.doc
< prev
next >
Wrap
Text File
|
1992-02-03
|
12KB
|
409 lines
─────────────────────────────────────────────────────────────────────────────
Dokumentation zur Datei: KEYS.MAC
─────────────────────────────────────────────────────────────────────────────
KEYS.MAC - EQU's und Macros für die Tastatur-Verwaltung über
den Interrupt 16h
(für den Assembler A86)
(c) Bernd Schemmer 1990 - 1992
Letzter Update: 02.02.1992
Konstanten:
-----------
BaseFunctionNumber - Basis-Funktions-Nummer für die Macros
Voreinstellung: 0
Diese Konstante muß auf 10h gesetzt werden falls die Macros die
Funktion 10h, 11h und 12h des Interrupt 16h verwenden sollen.
Achtung: Falls die Funktionscodes ab 10h auf einer Maschine,
die diese nicht unterstützt, benutzt werden, kann
das System in einer Endlos-Schleife hängenbleiben!
■ Definitionen für die Tastatur-Codes
■ (wichtige) Steuerzeichen des ASCII-Codes
BEL EQU 07h ; Bell / Klingel
BS EQU 08h ; Backspace / Rückschritt
TAB EQU 09h ; Horizontal Tab / horizontaler Tabulator
LF EQU 0Ah ; Linefeed / Zeilenvorschub
CR EQU 0Dh ; Carriage Return / Wagenrücklauf
BACKTAB EQU 0Fh ;
ESC EQU 1Bh ; Escape / Verlasse
BLANK EQU 20h ; Leerzeichen
■ Tastatur-Codes von CTRL-<Buchstabe> (in AL)
(-> buchstabe - 'A' + 1 )
__CTRL_A EQU 01h
__CTRL_B EQU 02H
__CTRL_C EQU 03H
__CTRL_D EQU 04H
__CTRL_E EQU 05H
__CTRL_F EQU 06H
__CTRL_G EQU 07H
__CTRL_H EQU 08H
__CTRL_I EQU 09H
__CTRL_J EQU 0AH
__CTRL_K EQU 0BH
__CTRL_L EQU 0CH
__CTRL_M EQU 0DH
__CTRL_N EQU 0EH
__CTRL_O EQU 0FH
__CTRL_P EQU 10H
__CTRL_Q EQU 11H
__CTRL_R EQU 12H
__CTRL_S EQU 13H
__CTRL_T EQU 14H
__CTRL_U EQU 15H
__CTRL_V EQU 16H
__CTRL_W EQU 17H
__CTRL_X EQU 18H
__CTRL_Y EQU 19H
__CTRL_Z EQU 1AH
■ Erweiterte Tastatur-Codes
(in AH, AL ist immer 0, F0h oder E0h bei erweiterten Tasten
der MF2-Tastatur)
Die Codes sind teilweise erst ab DOS 3.2 so definiert!
__ALT_ESC EQU 001h
__BACK_TAB EQU 0F0h
__ALT_Q EQU 010h
__ALT_W EQU 011h
__ALT_E EQU 012h
__ALT_R EQU 013h
__ALT_T EQU 014h
__ALT_Z EQU 015h
__ALT_U EQU 016h
__ALT_I EQU 017h
__ALT_O EQU 018h
__ALT_P EQU 019h
__ALT_Ue EQU 01Ah
__ALT_PLUS EQU 01Bh
__ALT_CR EQU 01Ch
__ALT_A EQU 01Eh
__ALT_S EQU 01Fh
__ALT_D EQU 020h
__ALT_F EQU 021h
__ALT_G EQU 022h
__ALT_H EQU 023h
__ALT_J EQU 024h
__ALT_K EQU 025h
__ALT_L EQU 026h
__ALT_Oe EQU 027h
__ALT_Ae EQU 028h
__ALT_Y EQU 02Ch
__ALT_X EQU 02Dh
__ALT_C EQU 02Eh
__ALT_V EQU 02Fh
__ALT_B EQU 030h
__ALT_N EQU 031h
__ALT_M EQU 032h
__ALT_KOMMA EQU 033h
__ALT_PUNKT EQU 034h
__ALT_BINDESTRICH EQU 035h
__ALT_GPLUS EQU 037h
__F1 EQU 03Bh
__F2 EQU 03Ch
__F3 EQU 03Dh
__F4 EQU 03Eh
__F5 EQU 03Fh
__F6 EQU 040h
__F7 EQU 041h
__F8 EQU 042h
__F9 EQU 043h
__F10 EQU 044h
__HOME EQU 047h
__CURSORUP EQU 048h
__PAGEUP EQU 049h
__ALT_GMINUS EQU 04Ah
__CURSORLEFT EQU 04Bh
__CENTER_CURSOR EQU 04Ch ; Numlock-Pad 5 (ohne Numlock ein)
__CURSORRIGHT EQU 04Dh
__END EQU 04Fh
__CURSORDOWN EQU 050h
__PAGEDOWN EQU 051h
__INSERT EQU 052h
__DELETE EQU 053h
__SHIFT_F1 EQU 054h
__SHIFT_F2 EQU 055h
__SHIFT_F3 EQU 056h
__SHIFT_F4 EQU 057h
__SHIFT_F5 EQU 058h
__SHIFT_F6 EQU 059h
__SHIFT_F7 EQU 05Ah
__SHIFT_F8 EQU 05Bh
__SHIFT_F9 EQU 05Ch
__SHIFT_F10 EQU 05Dh
__CTRL_F1 EQU 05Eh
__CTRL_F2 EQU 05Fh
__CTRL_F3 EQU 060h
__CTRL_F4 EQU 061h
__CTRL_F5 EQU 062h
__CTRL_F6 EQU 063h
__CTRL_F7 EQU 064h
__CTRL_F8 EQU 065h
__CTRL_F9 EQU 066h
__CTRL_F10 EQU 067h
__ALT_F1 EQU 068h
__ALT_F2 EQU 069h
__ALT_F3 EQU 06Ah
__ALT_F4 EQU 06Bh
__ALT_F5 EQU 06Ch
__ALT_F6 EQU 06Dh
__ALT_F7 EQU 06Eh
__ALT_F8 EQU 06Fh
__ALT_F9 EQU 070h
__ALT_F10 EQU 071h
__CTRL_PRTSCR EQU 072h
__CTRL_CURL EQU 073h
__CTRL_CURR EQU 074h
__CTRL_END EQU 075h
__CTRL_PGDN EQU 076h
__CTRL_HOME EQU 077h
__ALT_1 EQU 078h
__ALT_2 EQU 079h
__ALT_3 EQU 07Ah
__ALT_4 EQU 07Bh
__ALT_5 EQU 07Ch
__ALT_6 EQU 07Dh
__ALT_7 EQU 07Eh
__ALT_8 EQU 07Fh
__ALT_9 EQU 080h
__ALT_0 EQU 081h
__ALT_SZ EQU 082h
__ALT_HKOMMA EQU 083h
__CTRL_PGUP EQU 084h
__F11 EQU 085h
__F12 EQU 086h
__SHIFT_F11 EQU 087h
__SHIFT_F12 EQU 088h
__CTRL_F11 EQU 089h
__CTRL_F12 EQU 08Ah
__ALT_F11 EQU 08Bh
__ALT_F12 EQU 08Ch
__CTRL_NPUP EQU 08Dh ; NumPad-Tasten
__CTRL_NPMINUS EQU 08Eh
__CTRL_NPFUENF EQU 08Fh
__CTRL_NPPLUS EQU 090h
__CTRL_NPDOWN EQU 091h
__CTRL_NPINS EQU 092h
__CTRL_NPDEL EQU 093h
__CTRL_TAB EQU 094h
__CTRL_NPSlash EQU 095h
__CTRL_NPSTERN EQU 096h
__ALT_HOME EQU 097h
__ALT_UP EQU 098h
__ALT_PAGEUP EQU 099h
__ALT_LEFT EQU 09Bh
__ALT_RIGHT EQU 09Dh
__ALT_END EQU 09Fh
__ALT_DOWN EQU 0A0h
__ALT_PAGEDOWN EQU 0A1h
__ALT_INSERT EQU 0A2h
__ALT_DELETE EQU 0A3h
__ALT_NP_SCHRAEGSTRICH EQU 0A4h
__ALT_TAB EQU 0A5h
__ALT_ENTER EQU 0A6h
----------------------------
FunctionKey?
Funktion: Macro zum Feststellen, ob AX den Code einer Funktions-
taste enthält.
Aufruf: FunctionKey?
Eingabe: AX = Scancode der Taste wie er vom Interrupt 16h
geliefert wird
Ausgabe: ZF = 1 ->> Code einer Funktionstaste
ZF = 0 ->> nicht der Code einer Funktionstaste
Hinweis: Funktionstasten sind gekennzeichnet durch den Wert von
00h, 0E0h oder 0F0h in AL.
----------------------------
Keypressed
Funktion: Macro zum Feststellen, ob eine Taste im Tastatur-
Puffer ist
Aufruf: keypressed
Ausgabe: ZF = 0 ->> min. eine Taste im Tastatur-Puffer vorhanden
ZF = 1 ->> keine Taste im Tastatur-Puffer
----------------------------
ReadKey
Funktion: Macro zum Lesen einer Taste
Aufruf: readkey
Ausgabe: AX = Tastencode
----------------------------
Inkey
Funktion: Macro zur Simulation des Basic-Befehls INKEY
Aufruf: inkey
Ausgabe: ZF = 0 ->> AX = Tastencode der gedrückten Taste
ZF = 1 ->> keine Taste im Tastatur-Puffer
----------------------------
GetKBDStatus
Funktion: Macro zum Ermitteln des Tastatur-Status-Bytes
Aufruf: GetKBDStatus
Ausgabe: AL = Tastatur-Status-Byte
Aufbau:
Bit │ Bedeutung (falls 1)
───────┼───────────────────────────────
0 │ rechte SHIFT-Taste gedrückt
1 │ linke SHIFT-Taste gedrückt
2 │ CTRL-Taste gedrückt
3 │ ALT-Taste gedrückt
4 │ SCROLLLOCK-Taste ist eingeschaltet
5 │ NUMLOCK-Taste ist eingeschaltet
6 │ CAPSLOCK-Taste ist eingeschaltet
7 │ INSERT-Taste ist eingeschaltet
----------------------------
CTRLPressed?
Funktion: Macro zum Feststellen, ob die CTRL-Taste gedrückt wurde
Aufruf: CTRLPressed?
Ausgabe: ZF = 1 ->> CTRL-Taste nicht gedrückt
ZF = 0 ->> CTRL-Taste gedrückt
----------------------------
ALTPressed?
Funktion: Macro zum Feststellen, ob die ALT-Taste gedrückt wurde
Aufruf: ALTPressed?
Ausgabe: ZF = 1 ->> ALT-Taste nicht gedrückt
ZF = 0 ->> ALT-Taste gedrückt
----------------------------
RightShiftPressed?
Funktion: Macro zum Feststellen, ob die rechte Shift-Taste
gedrückt wurde
Aufruf: RightShiftPressed?
Ausgabe: ZF = 1 ->> rechte Shift-Taste nicht gedrückt
ZF = 0 ->> rechte Shift-Taste gedrückt
----------------------------
LeftShiftPressed?
Funktion: Macro zum Feststellen, ob die linke Shift-Taste
gedrückt wurde
Aufruf: LeftShiftPressed?
Ausgabe: ZF = 1 ->> linke Shift-Taste nicht gedrückt
ZF = 0 ->> linke Shift-Taste gedrückt
----------------------------
ShiftPressed?
Funktion: Macro zum Feststellen, ob eine oder beide Shift-Tasten
gedrückt wurden
Aufruf: ShiftPressed?
Ausgabe: ZF = 1 ->> keine Shift-Taste gedrückt
ZF = 0 ->> mindestens eine Shift-Taste gedrückt
----------------------------
ScrollLockAktiv?
Funktion: Macro zum Feststellen, ob die ScrollLock-Taste
eingeschaltet ist
Aufruf: ScrollLockAktiv?
Ausgabe: ZF = 1 ->> ScrollLock ist nicht eingeschaltet
ZF = 0 ->> ScrollLock ist eingeschaltet
----------------------------
NumLockAktiv?
Funktion: Macro zum Feststellen, ob die NumLock-Taste
eingeschaltet ist
Aufruf: NumLockAktiv?
Ausgabe: ZF = 1 ->> NumLock ist nicht eingeschaltet
ZF = 0 ->> NumLock ist eingeschaltet
----------------------------
InsertAktiv?
Funktion: Macro zum Feststellen, ob die Insert-Taste
eingeschaltet ist
Aufruf: InsertAktiv?
Ausgabe: ZF = 1 ->> Insert ist nicht eingeschaltet
ZF = 0 ->> Insert ist eingeschaltet
----------------------------
CapsLockAktiv?
Funktion: Macro zum Feststellen, ob die CapsLock-Taste
eingeschaltet ist
Aufruf: CapsLockAktiv?
Ausgabe: ZF = 1 ->> CapsLock ist nicht eingeschaltet
ZF = 0 ->> CapsLock ist eingeschaltet