Advertisement
SMicro

VISOR GRÁFICO 1010 V2

May 6th, 2019
2,121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. *-----------------------------------------------------------
  2. * Title      : VISUALIZADOR GRÁFICO EN 68k PARA 1010
  3. * Written by : FULGENCIO
  4. * Date       : 2019
  5. * Description:
  6. *-----------------------------------------------------------
  7.  
  8. BLACK  EQU $00000000
  9. RED    EQU $000000FF
  10. GREEN  EQU $0000FF00
  11. YELLOW EQU $0000FFFF
  12. BLUE   EQU $00FF0000
  13. WHITE  EQU $00FFFFFF
  14.    
  15. SIZE EQU 30
  16. ORIX EQU 20
  17. ORIY EQU 20
  18. ORIP1X EQU 400
  19. ORIP1Y EQU 10
  20. ORIP2X EQU 400
  21. ORIP2Y EQU 170
  22. ORIP3X EQU 400
  23. ORIP3Y EQU 330
  24.  
  25.  
  26.    ORG    $1000
  27.  
  28. START              * Programa Principal
  29.  
  30.     JSR SHOWMAP     * Muestra Mapa
  31.  
  32.     MOVE.L #ORIP1X,D1
  33.     MOVE.L #ORIP1Y,D2   *Coordenadas iniciales de pisición de la pieza1
  34.     MOVE.L #FICHAS,A3  *Posición de las fichas
  35.     CLR.L D0
  36.     MOVE.B JUEGOFICHA1,D0
  37.     CMP.B #0,D0
  38.     BEQ NOFICHA1
  39.     SUB.L #1,D0         *Resta 1 para empezar a contar desde 0
  40.     LSL.L #4,D0         * multiplica por 16
  41.     ADD.L D0,A3
  42.    
  43.     JSR SHOWPIECE       * Muestra pieza 1
  44.    
  45. NOFICHA1  
  46.     MOVE.L #ORIP2X,D1
  47.     MOVE.L #ORIP2Y,D2   *Coordenadas iniciales de pisición de la pieza2
  48.     MOVE.L #FICHAS,A3  *Posición de las fichas
  49.     CLR.L D0
  50.     MOVE.B JUEGOFICHA2,D0
  51.     CMP.B #0,D0
  52.     BEQ NOFICHA2
  53.     SUB.L #1,D0         *Resta 1 para empezar a contar desde 0
  54.     LSL.L #4,D0         * multiplica por 16
  55.     ADD.L D0,A3
  56.    
  57.     JSR SHOWPIECE       * Muestra pieza 2
  58.  
  59. NOFICHA2
  60.    MOVE.L #ORIP3X,D1
  61.     MOVE.L #ORIP3Y,D2   *Coordenadas iniciales de pisición de la pieza2
  62.     MOVE.L #FICHAS,A3   *Posición de las fichas
  63.     CLR.L D0
  64.     MOVE.B JUEGOFICHA3,D0
  65.     CMP.B #0,D0
  66.     BEQ NOFICHA3
  67.     SUB.L #1,D0         *Resta 1 para empezar a contar desde 0
  68.     LSL.L #4,D0         * multiplica por 16
  69.     ADD.L D0,A3
  70.    
  71.     JSR SHOWPIECE       * Muestra pieza 3
  72.    
  73. NOFICHA3  
  74.     SIMHALT             * halt simulator
  75.  
  76. *************************************************************************
  77. SHOWMAP ******************************** Subrutina que muestra el estado del mapa en las coordenadas ORIX, ORIY ************************************
  78.     MOVE.L #ORIX,D1
  79.     MOVE.L #ORIY,D2 *Coordenadas iniciales del tablero
  80.     MOVE.L #MAPA+13,A3 *Posición de la primera casilla real
  81.    
  82. LOOPMAP
  83.    MOVE.B (A3)+,D0 *Obtiene el contenido
  84.     CMP.B #$80,D0
  85.     BEQ NEXTROW
  86.     CMP.B #$01,D0
  87.     BEQ FILLED      *Está llena
  88.     CMP.B #$00,D0
  89.     BEQ EMPTY       *Está vacía
  90.    
  91.      
  92. EMPTY
  93.    JSR EMPTYSQUARE
  94.     ADD.L #SIZE,D1
  95.     JMP LOOPMAP
  96.  
  97. FILLED
  98.    JSR FILLEDSQUARE
  99.     ADD.L #SIZE,D1
  100.     JMP LOOPMAP
  101.  
  102. NEXTROW
  103.    MOVE.L #ORIX,D1 *Retorno coordenada X inicial
  104.     ADD.L #SIZE,D2  *Avance coordenada Y
  105.     ADD.L #1,A3     *Salta el borde izquierdo
  106.     CMP.B #$80,(A3)
  107.     BNE LOOPMAP  
  108.     RTS
  109. **************************************************************************
  110.  
  111. SHOWPIECE  **************************************** Subrutina para mostrar la pieza apuntada por A3 en la coordenada indicada por D1,D2 *****************************
  112.     MOVE.L D1,-(A7)   *Guardo coordenada X inicial
  113. LOOPPIECE
  114.    MOVE.B (A3)+,D0   *Obtiene el contenido
  115.     CMP.B #$80,D0
  116.     BEQ NEXTROWP
  117.     CMP.B #$01,D0
  118.     BEQ FILLEDP      *Está llena
  119.     CMP.B #$00,D0
  120.     BEQ EMPTYP       *Está vacía
  121.  
  122. EMPTYP
  123.    *JSR EMPTYSQUARE *Para las fichas, no pinto los vacíos
  124.     ADD.L #SIZE,D1
  125.     JMP LOOPPIECE
  126.  
  127. FILLEDP
  128.    JSR FILLEDSQUARE
  129.     ADD.L #SIZE,D1
  130.     JMP LOOPPIECE
  131.  
  132. NEXTROWP
  133.    MOVE.L (A7)+,D1  *Recupero coordenada X inicial
  134.     ADD.L #SIZE,D2   *Avance coordenada Y
  135.     *ADD.L #1,A3     *No hay borde izquierdo
  136.     CMP.B #$80,(A3)
  137.     BNE SHOWPIECE
  138.     RTS  
  139. *************************************************************************    
  140.    
  141.  
  142.  
  143. EMPTYSQUARE
  144.    MOVE.L #90,D0   *Cuadrado sin relleno
  145.     MOVE.L D1,D3
  146.     MOVE.L D2,D4    *Copio coordenadas esquina izquierda en D3,D4
  147.     ADD.L #SIZE,D3
  148.     ADD.L #SIZE,D4  *Creo coordenadas esquina derecha separándolas SIZE pixels
  149.     TRAP #15
  150.     RTS
  151.    
  152. FILLEDSQUARE
  153.    JSR FILLGREEN   *Elijo un color de relleno
  154.     MOVE.L #87,D0   *Cuadrado CON relleno
  155.     MOVE.L D1,D3
  156.     MOVE.L D2,D4    *Copio coordenadas esquina izquierda en D3,D4
  157.     ADD.L #SIZE,D3
  158.     ADD.L #SIZE,D4  *Creo coordenadas esquina derecha separándolas SIZE pixels
  159.     TRAP #15
  160.     RTS
  161.    
  162. FILLGREEN
  163.    MOVEM.L D0-D1,-(A7)
  164.     MOVE.L #81,D0
  165.     MOVE.L #GREEN,D1    *Selecciono verde como color de relleno
  166.     TRAP #15
  167.     MOVEM.L (A7)+,D0-D1
  168.     RTS    
  169.  
  170.  
  171. * Put variables and constants here
  172.     ORG $4000
  173.    
  174. MAPA
  175.  DC.B $80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80
  176.  DC.B $80,$00,$00,$00,$00,$01,$01,$01,$00,$00,$00,$80
  177.  DC.B $80,$00,$00,$00,$00,$01,$01,$01,$00,$00,$00,$80
  178.  DC.B $80,$01,$00,$01,$00,$01,$01,$01,$00,$00,$01,$80
  179.  DC.B $80,$01,$00,$01,$00,$01,$01,$01,$01,$01,$01,$80
  180.  DC.B $80,$01,$00,$01,$01,$01,$01,$01,$01,$01,$01,$80
  181.  DC.B $80,$01,$00,$00,$01,$01,$01,$01,$01,$01,$01,$80
  182.  DC.B $80,$01,$00,$01,$01,$01,$00,$00,$00,$00,$01,$80
  183.  DC.B $80,$01,$00,$01,$01,$01,$01,$01,$01,$01,$01,$80
  184.  DC.B $80,$01,$00,$01,$01,$01,$01,$01,$01,$01,$01,$80
  185.  DC.B $80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80
  186.  DC.B $80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80
  187.  
  188. ******************* Las fichas las he definido solo con los límites derecho y abajo. Se podría hacer lo mismo con el mapa ****************************
  189. FICHAS
  190. FICHAL3
  191.    DC.B $01,$00,$00,$80
  192.     DC.B $01,$00,$00,$80
  193.     DC.B $01,$01,$01,$80
  194.     DC.B $80,$80,$80,$80
  195.    
  196. FICHAV5
  197.    DC.B $01,$80
  198.     DC.B $01,$80
  199.     DC.B $01,$80
  200.     DC.B $01,$80
  201.     DC.B $01,$80
  202.     DC.B $80,$80
  203.     DS.B 4
  204.    
  205. FICHAC3
  206.    DC.B $01,$01,$01,$80
  207.     DC.B $01,$01,$01,$80
  208.     DC.B $01,$01,$01,$80
  209.     DC.B $80,$80,$80,$80
  210.  
  211. JUEGOFICHA1 DC.B 2
  212. JUEGOFICHA2 DC.B 1
  213. JUEGOFICHA3 DC.B 3
  214.  
  215.     END    START
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement