Home   -   Gallery   Geology   Music   Software   Hiking   Links   Sport   What?  
Projects   Sources   V4   Flightsim   Joystick   Workshop  
1   2   3   4   5   6   7   8   Anl  
A   B   C   D   E   F   G   H   I   J   K   L   M   N   O  
Page 353 of 401
 <   > 

Anlage E zum Joystick-Papier

(E)   Quelltextbeispiel readstick()

Radtke/Lampton1996, deutsch, Seite 168
Assembler-Funktion readstick
Assembler-Modul für DOS

Die Assembler-Routine demonstriert direktes Lesen des Status-Byte aus dem Port plus Extraktion eines Wertes aus dem Port-Bit durch Zeit-Messung mittels einer Befehls-Schleife.

Schlüsselpassage:



   _readstick PROC

    ; Lies aktuelle Position des Joysticks auf der von BMASK
    ; angegebenen Achse

    ARG bmask:WORD
    push   bp
    mov    bp,sp
    cli                       ; Interrupts abschalten,
                              ; stören das Timing
    mov    ah,byte ptr bmask  ; Hole die Bitmask nach ah
    mov    al,0
    mov    dx,GAMEPORT        ; Richte DX auf den Joystick-Port
    mov    cx,0               ; Vorbereitung 65536 Durchläufe
    out    dx,al              ; Setze die Joysick-Bits auf 1
   loop2:
    in     al,dx              ; Liest die Joysick-Bits
    test   al,ah              ; Ist das geforderte Bit noch 1?
    loopne loop2              ; In diesem Fall (und wenn
                              ; Zählung des Maximums
                              ; noch nicht stattfand,
                              ; versuche es noch einmal.
    sti                       ; Zählung abgeschlossen,
                              ; Interrupts wieder einschalten.
    mov   ax,0
    sub   ax,cx               ; CX von Null abziehen,
                              ; um die Zahl zu erhalten
    pop   bp
    ret

Das ist die genaueste Möglichkeit der Signal-Erfassung software-seitig.

 

.