Advertisement
SMicro

Lectura de teclas especiales -FLECHAS-

May 13th, 2015
877
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. *-----------------------------------------------------------
  2. * Title      :Lectura de teclado sin esperas
  3. * Written by :Fulgencio
  4. * Date       : 05/2015
  5. * Description:  Sirve para poder detectar si ciertas teclas
  6. *               están pulsadas incluso simultáneamente.
  7. *               También ilustra el uso de la Task 11 para
  8. *               posicionar el cursor
  9. *-----------------------------------------------------------
  10.  
  11. CTRL    EQU $11  ;ver Key Codes en HELP Task 19
  12. ALT     EQU $12
  13. SPACE   EQU $20
  14. LEFT    EQU $25
  15. UP      EQU $26
  16. RIGHT   EQU $27
  17. DOWN    EQU $28
  18.  
  19.     ORG    $1000
  20. START:                  ; first instruction of program
  21.  
  22.     move.b #19,d0
  23.     move.l #(DOWN<<24+RIGHT<<16+UP<<8+LEFT),d1
  24.                             ;Monitorizamos las FLECHAS
  25.                             ;Se pueden monitorizar hasta
  26.                             ;4 teclas a la vez mediante
  27.                             ;CODE4<<24+CODE3<<16+CODE2<<8+CODE1
  28.     trap #15
  29.    
  30.     BTST #0,D1  comprueba tecla LEFT (menos significativa)
  31.     BNE GOLEFT
  32.     BTST #8,D1  comprueba UP
  33.     BNE GOUP
  34.     BTST #16,D1 comprueba RIGHT
  35.     BNE GORIGHT
  36.     BTST #24,D1 comprueba RIGHT
  37.     BNE GODOWN
  38.    
  39.     *Si no hay ninguna pulsada procede a borrar la información*
  40.     *escribiendo espacios encima del texto existente*
  41.    
  42.     MOVE.L #0<<8+10,D1 ;Coordenada 0,10. Mete $000A en D1
  43.     MOVE.L #11,D0       ;Task 11 posiciona el cursor
  44.     TRAP #15
  45.     MOVE.L #14,D0
  46.     MOVE.L #VACIO,A1
  47.     TRAP #15            ;borra toda la línea si no hay teclas pulsadas
  48.  
  49.     JMP START
  50.  
  51. GOLEFT
  52.     MOVE.L #10<<8+10,D1 ;coordenada 10,10
  53.     MOVE.L #11,D0
  54.     TRAP #15
  55.    
  56.     MOVE.L #TECLEFT,A1
  57.     move.l #14,d0
  58.     trap #15
  59.     JMP SIGUE
  60.  
  61. GOUP
  62.     MOVE.L #20<<8+10,D1 ;coordenada 20,10
  63.     MOVE.L #11,D0
  64.     TRAP #15
  65.    
  66.     MOVE.L #TECUP,A1
  67.     move.l #14,d0
  68.     trap #15
  69.     JMP SIGUE
  70.  
  71. GORIGHT
  72.     MOVE.L #30<<8+10,D1 ;coordenada 30,10
  73.     MOVE.L #11,D0
  74.     TRAP #15
  75.    
  76.     MOVE.L #TECRIGHT,A1
  77.     move.l #14,d0
  78.     trap #15
  79.     JMP SIGUE
  80.  
  81. GODOWN
  82.     MOVE.L #40<<8+10,D1 ;coordenada 40,10
  83.     MOVE.L #11,D0
  84.     TRAP #15
  85.    
  86.     MOVE.L #TECDOWN,A1
  87.     move.l #14,d0
  88.     trap #15
  89.     JMP SIGUE
  90.  
  91. *SPC
  92. *    MOVE.L #50<<8+10,D1 ;coordenada 50,10
  93. *    MOVE.L #11,D0
  94. *    TRAP #15
  95. *    
  96. *    MOVE.L #TECSPC,A1
  97. *    move.l #14,d0
  98. *    trap #15
  99. *    JMP SIGUE  
  100. *    
  101. *CONTROL
  102. *    MOVE.L #60<<8+10,D1 ;coordenada 60,10
  103. *    MOVE.L #11,D0
  104. *    TRAP #15
  105. *    
  106. *    MOVE.L #TECCTRL,A1
  107. *    move.l #14,d0
  108. *    trap #15
  109.    
  110. SIGUE
  111.     move.l #6,d0    *Avance de linea+retorno carro
  112.     move.l #13,d1
  113.     trap #15
  114.     move.l #10,d1
  115.     trap #15
  116.     jmp START
  117.    
  118.    
  119.  
  120. * Put program code here
  121.  
  122.     SIMHALT             ; halt simulator
  123.  
  124. * Put variables and constants here
  125. *TECCTRL DC.B ' [CONTROL] ',0
  126. *TECSPC  DC.B ' [ESPACIO] ',0
  127. TECLEFT DC.B ' [ LEFT  ] ',0
  128. TECUP   DC.B ' [  UP   ] ',0
  129. TECRIGHT DC.B ' [ RIGHT ] ',0    
  130. TECDOWN  DC.B ' [ DOWN  ] ',0
  131. VACIO   DC.B '                                                       ',0
  132.     END    START        ; last line of source
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement