home *** CD-ROM | disk | FTP | other *** search
- ─────────────────────────────────────────────────────────────────────────────
- 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
-
-