Advertisement
SMicro

CUADRÍCULA + RATON + CASILLA

May 26th, 2023 (edited)
2,402
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. *-----------------------------------------------------------
  2. * Title      : CUADRICULA + RATON + CASILLA
  3. * Written by : Fulgencio
  4. * Date       :
  5. * Description:
  6. *-----------------------------------------------------------
  7. ORIX EQU 150
  8. ORIY EQU 50
  9. SIZE EQU 60
  10. ROWS EQU 5
  11. COLS EQU 5
  12. DRAWLINE EQU 84
  13. DRAWCIRC EQU 88
  14. CURSOR EQU 11
  15.  
  16.     ORG    $1000
  17. START:            
  18.  
  19. * Put program code here
  20.  
  21.     JSR CUADRICULA
  22.  
  23. BUCLE  
  24.     JSR RATON
  25.     JSR ROJOTINTA
  26.     JSR CUADRADO
  27.  
  28.    
  29.     *************************Este programa es para probar el funcionamiento de las subrrutinas ************
  30.     JSR HOMECURSOR      *Envío cursor al origen (0,0)
  31.     ADD.L #$30,D1
  32.     ADD.L #$30,D2
  33.     EXG.L D1,D2         *Para escribir primero la FILA
  34.     MOVE.L #6,D0
  35.     TRAP #15
  36.     MOVE.L #',',D1      *Coma de separacion
  37.     TRAP #15
  38.     MOVE.L D2,D1        *Ahora la COLUMNA
  39.     TRAP #15
  40.     JMP BUCLE
  41. *****************************************
  42.  
  43.     SIMHALT             * halt simulator
  44.  
  45. *********************************SUBRRUTINAS**************************************
  46. ROJOTINTA
  47.    MOVEM.L D0-D4,-(A7)
  48.     MOVE.L #80,D0
  49.     MOVE.L #$0000FF,D1
  50.     TRAP #15
  51.     MOVEM.L (A7)+,D0-D4
  52.     RTS
  53.  
  54. CUADRADO
  55.    MOVEM.L D0-D4,-(A7)
  56.     MULU #SIZE,D1
  57.     MULU #SIZE,D2
  58.     ADD.L #ORIX,D1
  59.     ADD.L #ORIY,D2
  60.     MOVE.L D1,D3
  61.     MOVE.L D2,D4
  62.     ADD.L #SIZE,D3
  63.     ADD.L #SIZE,D4
  64.     MOVE.L #90,D0
  65.     TRAP #15
  66.     MOVEM.L (A7)+,D0-D4
  67.     RTS
  68.  
  69. HOMECURSOR             *Coloca el cursor en 0,0 con la Task #11
  70.     MOVEM.L D0-D1,-(A7)
  71.     MOVE.L #CURSOR,D0
  72.     MOVE.L #$0000,D1    *    D1.W = [ COL | FILA ]=(0,0)
  73.     TRAP #15
  74.     MOVEM.L (A7)+,D0-D1
  75.     RTS
  76.  
  77. RATON                  *Devuelve D1=COLUMNA y D2=FILA
  78.     MOVEM.L D0,-(A7)
  79. BUCRATON
  80.    MOVE.L #61,D0
  81.     MOVE.L #0,D1
  82.     TRAP #15
  83.  
  84.     BTST #0,D0
  85.     BEQ BUCRATON
  86.    
  87.     MOVE.L D1,D2
  88.     CLR.W D2
  89.     SWAP D2             *Coordenada Y del CLICK
  90.     AND.L #$0000FFFF,D1 *Coordenada X del CLICK
  91.    
  92.     SUB.L #ORIX,D1      *Referimos origen en la cuadrícula
  93.     BCS BUCRATON        *Descartar CLICKs fuera izquierda
  94.     SUB.L #ORIY,D2
  95.     BCS BUCRATON        *Descartar CLICKs fuera arriba
  96.     DIVU #SIZE,D1
  97.     DIVU #SIZE,D2
  98.     AND.L #$0000FFFF,D1
  99.     AND.L #$0000FFFF,D2
  100.    
  101. *    ADD.L #1,D1
  102. *    ADD.L #1,D2         *Para que FILAS Y COL empiecen en 1
  103.    
  104.     CMP.L #COLS,D1      *Descartar CLICKs fuera derecha
  105.     BCC BUCRATON
  106.     CMP.L #ROWS,D2       *Descartar CLICKs fuera abajo
  107.     BCC BUCRATON
  108.  
  109.     MOVEM.L (A7)+,D0
  110.     RTS
  111.    
  112.  
  113. CUADRICULA  ************** GENERA UNA CUADRÍCULA A PARTIR DE UNAS CONSTANTES DEFINIDAS CON EQU ***************
  114.     MOVEM.L D0-D4,-(A7)
  115.     MOVE.W #ORIX,D1    *Nos ponemos en el origen D1 y D2
  116.     MOVE.W #ORIY,D2
  117. VERTICALES
  118.    
  119.     MOVE.W D1,D3        *El otro extremo de las líneas en D3,D4
  120.     MOVE.W D2,D4
  121.     ADD.W #ROWS*SIZE,D4 *En las líneas verticales solo cambia la coordenada vertical (D4)
  122.     MOVE.L #DRAWLINE,D0
  123.     TRAP #15
  124.    
  125.     ADD.W #SIZE,D1
  126.     CMP.W #ORIX+SIZE*(COLS+1),D1
  127.     BNE VERTICALES
  128.    
  129.     MOVE.W #ORIX,D1     *Nos ponemos en el origen D1 y D2
  130.     MOVE.W #ORIY,D2
  131.    
  132. HORIZONTALES  
  133.  
  134.     MOVE.W D1,D3        *El otro extremo de las líneas en D3,D4
  135.     MOVE.W D2,D4
  136.     ADD.W #COLS*SIZE,D3 *En las líneas horizontales solo cambia la coordenada horizontal (D3)
  137.     MOVE.L #DRAWLINE,D0
  138.     TRAP #15
  139.    
  140.     ADD.W #SIZE,D2
  141.     CMP.W #ORIY+SIZE*(ROWS+1),D2
  142.     BNE HORIZONTALES
  143.    
  144.     MOVEM.L (A7)+,D0-D4
  145.     RTS   *********************************************************************
  146.  
  147. * Put variables and constants here
  148.  
  149.     END    START        ; last line of source
  150.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement