SMicro

Tablero LIFE

Apr 17th, 2020 (edited)
1,214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. *-----------------------------------------------------------
  2. * Title      : VISUALIZADOR GRÁFICO LIFE
  3. * Written by : FULGENCIO
  4. * Date       : 2020
  5. * Description:
  6. *-----------------------------------------------------------
  7. ****** Colores ******
  8. BLACK  EQU $00000000
  9. GRAY   EQU $00808080
  10. RED    EQU $000000FF
  11. GREEN  EQU $0000FF00
  12. YELLOW EQU $0000FFFF
  13. BLUE   EQU $00FF0000
  14. WHITE  EQU $00FFFFFF
  15.  
  16. *********** Parámetros del tablero **********  
  17. SIZE EQU 20
  18. ORIX EQU 20
  19. ORIY EQU 20
  20.  
  21.    ORG    $1000
  22.  
  23. START              * Programa Principal
  24.  
  25.     JSR SHOWMAP     * Muestra Mapa
  26.    
  27.     SIMHALT         * halt simulator
  28.  
  29. ********************************* SUBRUTINAS *********************************
  30.  
  31. SHOWMAP ******** Subrutina que muestra el estado del mapa en las coordenadas ORIX, ORIY ************************************
  32.         *Utiliza D0,D1,D2,D3,D4 y A3*
  33.        
  34.     MOVEM.L D0-D4/A3,-(A7) *Guardamos en la pila
  35.     MOVE.L #ORIX,D1
  36.     MOVE.L #ORIY,D2        *Coordenadas iniciales del tablero
  37.     MOVE.L #MAPA,A3        *Inicio del MAPA
  38.  
  39. BUSCAINI  
  40.     CMP.B #2,(A3)+
  41.     BEQ BUSCAINI        *Descarta las casillas de borde (2) hasta que llegue a la primera real
  42.     SUB.L #1,A3         *Al usar postincremento, nos pasamos en 1
  43.    
  44. LOOPMAP
  45.    MOVE.B (A3)+,D0 *Obtiene el contenido
  46.     CMP.B #2,D0
  47.     BEQ NEXTROW
  48.     CMP.B #1,D0
  49.     BEQ ALIVE      *Está viva
  50.     CMP.B #$00,D0
  51.     BEQ DEATH      *Está muerta
  52.        
  53. DEATH
  54.    JSR FILLGRAY
  55.     JSR FILLEDSQUARE
  56.     ADD.L #SIZE,D1
  57.     JMP LOOPMAP
  58.  
  59. ALIVE
  60.    JSR FILLYELLOW
  61.     JSR FILLEDSQUARE
  62.     ADD.L #SIZE,D1
  63.     JMP LOOPMAP
  64.  
  65. NEXTROW
  66.    MOVE.L #ORIX,D1 *Retorno coordenada X inicial
  67.     ADD.L #SIZE,D2  *Avance coordenada Y
  68.     ADD.L #1,A3     *Salta el borde izquierdo
  69.     CMP.B #2,(A3)   *Comprueba si es el borde de abajo
  70.     BNE LOOPMAP
  71.     MOVEM.L (A7)+,D0-D4/A3 *Recuperamos valores de la pila
  72.     RTS
  73.  
  74. FILLEDSQUARE
  75.    MOVE.L #87,D0   *Cuadrado CON relleno
  76.     MOVE.L D1,D3
  77.     MOVE.L D2,D4    *Copio coordenadas esquina izquierda en D3,D4
  78.     ADD.L #SIZE,D3
  79.     ADD.L #SIZE,D4  *Creo coordenadas esquina derecha separándolas SIZE pixels
  80.     TRAP #15
  81.     RTS
  82.    
  83. FILLYELLOW
  84.    MOVEM.L D0-D1,-(A7)
  85.     MOVE.L #81,D0
  86.     MOVE.L #YELLOW,D1    *Selecciono verde como color de relleno
  87.     TRAP #15
  88.     MOVEM.L (A7)+,D0-D1
  89.     RTS    
  90.  
  91. FILLGRAY
  92.    MOVEM.L D0-D1,-(A7)
  93.     MOVE.L #81,D0
  94.     MOVE.L #GRAY,D1    *Selecciono verde como color de relleno
  95.     TRAP #15
  96.     MOVEM.L (A7)+,D0-D1
  97.     RTS    
  98.  
  99. * Put variables and constants here
  100.     ORG $4000
  101.    
  102. MAPA
  103.  DC.B 2,2,2,2,2,2,2,2,2,2,2,2
  104.  DC.B 2,0,0,0,0,0,0,0,0,0,0,2
  105.  DC.B 2,0,0,0,0,0,0,0,0,0,0,2
  106.  DC.B 2,0,0,0,0,0,0,0,0,0,0,2
  107.  DC.B 2,0,1,0,0,0,0,0,0,0,0,2
  108.  DC.B 2,1,0,1,0,0,0,0,0,0,0,2
  109.  DC.B 2,1,0,1,0,0,0,0,0,0,0,2
  110.  DC.B 2,0,1,0,0,0,0,0,1,1,1,2
  111.  DC.B 2,0,0,0,0,0,0,0,0,0,0,2
  112.  DC.B 2,0,0,0,0,0,0,0,0,0,0,2
  113.  DC.B 2,0,0,0,0,0,0,0,0,0,0,2
  114.  DC.B 2,2,2,2,2,2,2,2,2,2,2,2
  115.  
  116.     END START
Add Comment
Please, Sign In to add comment