home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / assemblr / library / lib4a86 / doc / keys.doc < prev    next >
Text File  |  1992-02-03  |  12KB  |  409 lines

  1.   ─────────────────────────────────────────────────────────────────────────────
  2.   Dokumentation zur Datei: KEYS.MAC
  3.  
  4.   ─────────────────────────────────────────────────────────────────────────────
  5.     
  6.     KEYS.MAC     - EQU's und Macros für die Tastatur-Verwaltung über
  7.                    den Interrupt 16h
  8.                    (für den Assembler A86)
  9.    
  10.                    (c) Bernd Schemmer 1990 - 1992
  11.                    Letzter Update: 02.02.1992
  12.    
  13.    
  14.     Konstanten:
  15.     -----------
  16.     BaseFunctionNumber    - Basis-Funktions-Nummer für die Macros
  17.                             Voreinstellung: 0
  18.    
  19.          Diese Konstante muß auf 10h gesetzt werden falls die Macros die
  20.          Funktion 10h, 11h und 12h des Interrupt 16h verwenden sollen.
  21.    
  22.          Achtung: Falls die Funktionscodes ab 10h auf einer Maschine,
  23.                   die diese nicht unterstützt, benutzt werden, kann
  24.                   das System in einer Endlos-Schleife hängenbleiben!
  25.    
  26.    
  27.     ■ Definitionen für die Tastatur-Codes
  28.    
  29.     ■ (wichtige) Steuerzeichen des ASCII-Codes
  30.    
  31.     BEL         EQU 07h   ; Bell                 / Klingel
  32.     BS          EQU 08h   ; Backspace            / Rückschritt
  33.     TAB         EQU 09h   ; Horizontal Tab       / horizontaler Tabulator
  34.     LF          EQU 0Ah   ; Linefeed             / Zeilenvorschub
  35.     CR          EQU 0Dh   ; Carriage Return      / Wagenrücklauf
  36.     BACKTAB     EQU 0Fh   ;
  37.     ESC         EQU 1Bh   ; Escape               / Verlasse
  38.     BLANK       EQU 20h   ; Leerzeichen
  39.    
  40.     ■ Tastatur-Codes von CTRL-<Buchstabe> (in AL)
  41.       (-> buchstabe - 'A' + 1 )
  42.    
  43.     __CTRL_A      EQU 01h
  44.     __CTRL_B      EQU 02H
  45.     __CTRL_C      EQU 03H
  46.     __CTRL_D      EQU 04H
  47.     __CTRL_E      EQU 05H
  48.     __CTRL_F      EQU 06H
  49.     __CTRL_G      EQU 07H
  50.     __CTRL_H      EQU 08H
  51.     __CTRL_I      EQU 09H
  52.     __CTRL_J      EQU 0AH
  53.     __CTRL_K      EQU 0BH
  54.     __CTRL_L      EQU 0CH
  55.     __CTRL_M      EQU 0DH
  56.     __CTRL_N      EQU 0EH
  57.     __CTRL_O      EQU 0FH
  58.     __CTRL_P      EQU 10H
  59.     __CTRL_Q      EQU 11H
  60.     __CTRL_R      EQU 12H
  61.     __CTRL_S      EQU 13H
  62.     __CTRL_T      EQU 14H
  63.     __CTRL_U      EQU 15H
  64.     __CTRL_V      EQU 16H
  65.     __CTRL_W      EQU 17H
  66.     __CTRL_X      EQU 18H
  67.     __CTRL_Y      EQU 19H
  68.     __CTRL_Z      EQU 1AH
  69.    
  70.     ■ Erweiterte Tastatur-Codes
  71.       (in AH, AL ist immer 0, F0h oder E0h bei erweiterten Tasten
  72.        der MF2-Tastatur)
  73.       Die Codes sind teilweise erst ab DOS 3.2 so definiert!
  74.    
  75.     __ALT_ESC     EQU 001h
  76.    
  77.     __BACK_TAB    EQU 0F0h
  78.     __ALT_Q       EQU 010h
  79.     __ALT_W       EQU 011h
  80.     __ALT_E       EQU 012h
  81.     __ALT_R       EQU 013h
  82.     __ALT_T       EQU 014h
  83.     __ALT_Z       EQU 015h
  84.     __ALT_U       EQU 016h
  85.     __ALT_I       EQU 017h
  86.     __ALT_O       EQU 018h
  87.     __ALT_P       EQU 019h
  88.    
  89.     __ALT_Ue      EQU 01Ah
  90.     __ALT_PLUS    EQU 01Bh
  91.     __ALT_CR      EQU 01Ch
  92.    
  93.     __ALT_A       EQU 01Eh
  94.     __ALT_S       EQU 01Fh
  95.     __ALT_D       EQU 020h
  96.     __ALT_F       EQU 021h
  97.     __ALT_G       EQU 022h
  98.     __ALT_H       EQU 023h
  99.     __ALT_J       EQU 024h
  100.     __ALT_K       EQU 025h
  101.     __ALT_L       EQU 026h
  102.     __ALT_Oe      EQU 027h
  103.     __ALT_Ae      EQU 028h
  104.    
  105.     __ALT_Y       EQU 02Ch
  106.     __ALT_X       EQU 02Dh
  107.     __ALT_C       EQU 02Eh
  108.     __ALT_V       EQU 02Fh
  109.     __ALT_B       EQU 030h
  110.     __ALT_N       EQU 031h
  111.     __ALT_M       EQU 032h
  112.     __ALT_KOMMA   EQU 033h
  113.     __ALT_PUNKT   EQU 034h
  114.     __ALT_BINDESTRICH EQU 035h
  115.    
  116.     __ALT_GPLUS   EQU 037h
  117.    
  118.     __F1          EQU 03Bh
  119.     __F2          EQU 03Ch
  120.     __F3          EQU 03Dh
  121.     __F4          EQU 03Eh
  122.     __F5          EQU 03Fh
  123.     __F6          EQU 040h
  124.     __F7          EQU 041h
  125.     __F8          EQU 042h
  126.     __F9          EQU 043h
  127.     __F10         EQU 044h
  128.    
  129.     __HOME        EQU 047h
  130.     __CURSORUP    EQU 048h
  131.     __PAGEUP      EQU 049h
  132.     __ALT_GMINUS  EQU 04Ah
  133.     __CURSORLEFT  EQU 04Bh
  134.     __CENTER_CURSOR EQU 04Ch      ; Numlock-Pad 5 (ohne Numlock ein)
  135.     __CURSORRIGHT EQU 04Dh
  136.     __END         EQU 04Fh
  137.     __CURSORDOWN  EQU 050h
  138.     __PAGEDOWN    EQU 051h
  139.     __INSERT      EQU 052h
  140.     __DELETE      EQU 053h
  141.    
  142.     __SHIFT_F1    EQU 054h
  143.     __SHIFT_F2    EQU 055h
  144.     __SHIFT_F3    EQU 056h
  145.     __SHIFT_F4    EQU 057h
  146.     __SHIFT_F5    EQU 058h
  147.     __SHIFT_F6    EQU 059h
  148.     __SHIFT_F7    EQU 05Ah
  149.     __SHIFT_F8    EQU 05Bh
  150.     __SHIFT_F9    EQU 05Ch
  151.     __SHIFT_F10   EQU 05Dh
  152.    
  153.     __CTRL_F1     EQU 05Eh
  154.     __CTRL_F2     EQU 05Fh
  155.     __CTRL_F3     EQU 060h
  156.     __CTRL_F4     EQU 061h
  157.     __CTRL_F5     EQU 062h
  158.     __CTRL_F6     EQU 063h
  159.     __CTRL_F7     EQU 064h
  160.     __CTRL_F8     EQU 065h
  161.     __CTRL_F9     EQU 066h
  162.     __CTRL_F10    EQU 067h
  163.    
  164.     __ALT_F1      EQU 068h
  165.     __ALT_F2      EQU 069h
  166.     __ALT_F3      EQU 06Ah
  167.     __ALT_F4      EQU 06Bh
  168.     __ALT_F5      EQU 06Ch
  169.     __ALT_F6      EQU 06Dh
  170.     __ALT_F7      EQU 06Eh
  171.     __ALT_F8      EQU 06Fh
  172.     __ALT_F9      EQU 070h
  173.     __ALT_F10     EQU 071h
  174.    
  175.     __CTRL_PRTSCR EQU 072h
  176.     __CTRL_CURL   EQU 073h
  177.     __CTRL_CURR   EQU 074h
  178.     __CTRL_END    EQU 075h
  179.     __CTRL_PGDN   EQU 076h
  180.     __CTRL_HOME   EQU 077h
  181.    
  182.     __ALT_1       EQU 078h
  183.     __ALT_2       EQU 079h
  184.     __ALT_3       EQU 07Ah
  185.     __ALT_4       EQU 07Bh
  186.     __ALT_5       EQU 07Ch
  187.     __ALT_6       EQU 07Dh
  188.     __ALT_7       EQU 07Eh
  189.     __ALT_8       EQU 07Fh
  190.     __ALT_9       EQU 080h
  191.     __ALT_0       EQU 081h
  192.     __ALT_SZ      EQU 082h
  193.     __ALT_HKOMMA  EQU 083h
  194.    
  195.     __CTRL_PGUP   EQU 084h
  196.    
  197.     __F11         EQU 085h
  198.     __F12         EQU 086h
  199.     __SHIFT_F11   EQU 087h
  200.     __SHIFT_F12   EQU 088h
  201.     __CTRL_F11    EQU 089h
  202.     __CTRL_F12    EQU 08Ah
  203.     __ALT_F11     EQU 08Bh
  204.     __ALT_F12     EQU 08Ch
  205.    
  206.     __CTRL_NPUP    EQU 08Dh       ; NumPad-Tasten
  207.     __CTRL_NPMINUS EQU 08Eh
  208.     __CTRL_NPFUENF EQU 08Fh
  209.     __CTRL_NPPLUS  EQU 090h
  210.     __CTRL_NPDOWN  EQU 091h
  211.     __CTRL_NPINS   EQU 092h
  212.     __CTRL_NPDEL   EQU 093h
  213.     __CTRL_TAB     EQU 094h
  214.     __CTRL_NPSlash EQU 095h
  215.     __CTRL_NPSTERN EQU 096h
  216.     __ALT_HOME     EQU 097h
  217.     __ALT_UP       EQU 098h
  218.     __ALT_PAGEUP   EQU 099h
  219.     __ALT_LEFT     EQU 09Bh
  220.     __ALT_RIGHT    EQU 09Dh
  221.     __ALT_END      EQU 09Fh
  222.     __ALT_DOWN     EQU 0A0h
  223.     __ALT_PAGEDOWN EQU 0A1h
  224.     __ALT_INSERT   EQU 0A2h
  225.     __ALT_DELETE   EQU 0A3h
  226.     __ALT_NP_SCHRAEGSTRICH EQU 0A4h
  227.     __ALT_TAB      EQU 0A5h
  228.     __ALT_ENTER    EQU 0A6h
  229.    
  230.     ----------------------------
  231.     FunctionKey?
  232.    
  233.     Funktion:  Macro zum Feststellen, ob AX den Code einer Funktions-
  234.                taste enthält.
  235.    
  236.     Aufruf:    FunctionKey?
  237.    
  238.     Eingabe:   AX = Scancode der Taste wie er vom Interrupt 16h
  239.                     geliefert wird
  240.    
  241.     Ausgabe:   ZF = 1 ->> Code einer Funktionstaste
  242.                ZF = 0 ->> nicht der Code einer Funktionstaste
  243.    
  244.     Hinweis:   Funktionstasten sind gekennzeichnet durch den Wert von
  245.                00h, 0E0h oder 0F0h in AL.
  246.    
  247.    
  248.     ----------------------------
  249.     Keypressed
  250.    
  251.     Funktion:  Macro zum Feststellen, ob eine Taste im Tastatur-
  252.                Puffer ist
  253.    
  254.     Aufruf:    keypressed
  255.    
  256.     Ausgabe:   ZF = 0 ->> min. eine Taste im Tastatur-Puffer vorhanden
  257.                ZF = 1 ->> keine Taste im Tastatur-Puffer
  258.    
  259.    
  260.     ----------------------------
  261.     ReadKey
  262.    
  263.     Funktion:  Macro zum Lesen einer Taste
  264.    
  265.     Aufruf:    readkey
  266.    
  267.     Ausgabe:   AX = Tastencode
  268.    
  269.    
  270.     ----------------------------
  271.     Inkey
  272.    
  273.     Funktion:  Macro zur Simulation des Basic-Befehls INKEY
  274.    
  275.     Aufruf:    inkey
  276.    
  277.     Ausgabe:   ZF = 0 ->> AX = Tastencode der gedrückten Taste
  278.                ZF = 1 ->> keine Taste im Tastatur-Puffer
  279.    
  280.    
  281.     ----------------------------
  282.     GetKBDStatus
  283.    
  284.     Funktion:  Macro zum Ermitteln des Tastatur-Status-Bytes
  285.    
  286.     Aufruf:    GetKBDStatus
  287.    
  288.     Ausgabe:   AL = Tastatur-Status-Byte
  289.    
  290.                     Aufbau:
  291.    
  292.                     Bit    │   Bedeutung (falls 1)
  293.                     ───────┼───────────────────────────────
  294.                      0     │    rechte SHIFT-Taste gedrückt
  295.                      1     │    linke  SHIFT-Taste gedrückt
  296.                      2     │    CTRL-Taste gedrückt
  297.                      3     │    ALT-Taste gedrückt
  298.                      4     │    SCROLLLOCK-Taste ist eingeschaltet
  299.                      5     │    NUMLOCK-Taste ist eingeschaltet
  300.                      6     │    CAPSLOCK-Taste ist eingeschaltet
  301.                      7     │    INSERT-Taste ist eingeschaltet
  302.    
  303.    
  304.     ----------------------------
  305.     CTRLPressed?
  306.    
  307.     Funktion:  Macro zum Feststellen, ob die CTRL-Taste gedrückt wurde
  308.    
  309.     Aufruf:    CTRLPressed?
  310.    
  311.     Ausgabe:   ZF = 1 ->> CTRL-Taste nicht gedrückt
  312.                ZF = 0 ->> CTRL-Taste gedrückt
  313.    
  314.    
  315.     ----------------------------
  316.     ALTPressed?
  317.    
  318.     Funktion:  Macro zum Feststellen, ob die ALT-Taste gedrückt wurde
  319.    
  320.     Aufruf:    ALTPressed?
  321.    
  322.     Ausgabe:   ZF = 1 ->> ALT-Taste nicht gedrückt
  323.                ZF = 0 ->> ALT-Taste gedrückt
  324.    
  325.    
  326.     ----------------------------
  327.     RightShiftPressed?
  328.    
  329.     Funktion:  Macro zum Feststellen, ob die rechte Shift-Taste
  330.                gedrückt wurde
  331.    
  332.     Aufruf:    RightShiftPressed?
  333.    
  334.     Ausgabe:   ZF = 1 ->> rechte Shift-Taste nicht gedrückt
  335.                ZF = 0 ->> rechte Shift-Taste gedrückt
  336.    
  337.    
  338.     ----------------------------
  339.     LeftShiftPressed?
  340.    
  341.     Funktion:  Macro zum Feststellen, ob die linke Shift-Taste
  342.                gedrückt wurde
  343.    
  344.     Aufruf:    LeftShiftPressed?
  345.    
  346.     Ausgabe:   ZF = 1 ->> linke Shift-Taste nicht gedrückt
  347.                ZF = 0 ->> linke Shift-Taste gedrückt
  348.    
  349.    
  350.     ----------------------------
  351.     ShiftPressed?
  352.    
  353.     Funktion:  Macro zum Feststellen, ob eine oder beide Shift-Tasten
  354.                gedrückt wurden
  355.    
  356.     Aufruf:    ShiftPressed?
  357.    
  358.     Ausgabe:   ZF = 1 ->> keine Shift-Taste gedrückt
  359.                ZF = 0 ->> mindestens eine Shift-Taste gedrückt
  360.    
  361.    
  362.     ----------------------------
  363.     ScrollLockAktiv?
  364.    
  365.     Funktion:  Macro zum Feststellen, ob die ScrollLock-Taste
  366.                eingeschaltet ist
  367.    
  368.     Aufruf:    ScrollLockAktiv?
  369.    
  370.     Ausgabe:   ZF = 1 ->> ScrollLock ist nicht eingeschaltet
  371.                ZF = 0 ->> ScrollLock ist eingeschaltet
  372.    
  373.    
  374.     ----------------------------
  375.     NumLockAktiv?
  376.    
  377.     Funktion:  Macro zum Feststellen, ob die NumLock-Taste
  378.                eingeschaltet ist
  379.    
  380.     Aufruf:    NumLockAktiv?
  381.    
  382.     Ausgabe:   ZF = 1 ->> NumLock ist nicht eingeschaltet
  383.                ZF = 0 ->> NumLock ist eingeschaltet
  384.    
  385.    
  386.     ----------------------------
  387.     InsertAktiv?
  388.    
  389.     Funktion:  Macro zum Feststellen, ob die Insert-Taste
  390.                eingeschaltet ist
  391.    
  392.     Aufruf:    InsertAktiv?
  393.    
  394.     Ausgabe:   ZF = 1 ->> Insert ist nicht eingeschaltet
  395.                ZF = 0 ->> Insert ist eingeschaltet
  396.    
  397.    
  398.     ----------------------------
  399.     CapsLockAktiv?
  400.    
  401.     Funktion:  Macro zum Feststellen, ob die CapsLock-Taste
  402.                eingeschaltet ist
  403.    
  404.     Aufruf:    CapsLockAktiv?
  405.    
  406.     Ausgabe:   ZF = 1 ->> CapsLock ist nicht eingeschaltet
  407.                ZF = 0 ->> CapsLock ist eingeschaltet
  408.    
  409.