Advertisement
SMicro

VISOR GRÁFICO 1010

Apr 8th, 2019
1,946
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 20
  20. ORIP2X EQU 400
  21. ORIP2Y EQU 200
  22.  
  23.  
  24.    ORG    $1000
  25.  
  26. START              * Programa Principal
  27.  
  28.     JSR SHOWMAP     * Muestra Mapa
  29.  
  30.     MOVE.L #ORIP1X,D1
  31.     MOVE.L #ORIP1Y,D2   *Coordenadas iniciales de pisición de la pieza1
  32.     MOVE.L #FICHAL3,A3  *Posición de la primera casilla de la pieza1
  33.    
  34.     JSR SHOWPIECE       * Muestra pieza 1
  35.    
  36.     MOVE.L #ORIP2X,D1
  37.     MOVE.L #ORIP2Y,D2   *Coordenadas iniciales de pisición de la pieza2
  38.     MOVE.L #FICHAV5,A3  *Posición de la primera casilla de la pieza2
  39.    
  40.     JSR SHOWPIECE       * Muestra pieza 2
  41.    
  42.     SIMHALT             ; halt simulator
  43.  
  44. *************************************************************************
  45. SHOWMAP ******************************** Subrutina que muestra el estado del mapa en las coordenadas ORIX, ORIY ************************************
  46.     MOVE.L #ORIX,D1
  47.     MOVE.L #ORIY,D2 *Coordenadas iniciales del tablero
  48.     MOVE.L #MAPA+13,A3 *Posición de la primera casilla real
  49.    
  50. LOOPMAP
  51.    MOVE.B (A3)+,D0 *Obtiene el contenido
  52.     CMP.B #$80,D0
  53.     BEQ NEXTROW
  54.     CMP.B #$01,D0
  55.     BEQ FILLED      *Está llena
  56.     CMP.B #$00,D0
  57.     BEQ EMPTY       *Está vacía
  58.    
  59.      
  60. EMPTY
  61.    JSR EMPTYSQUARE
  62.     ADD.L #SIZE,D1
  63.     JMP LOOPMAP
  64.  
  65. FILLED
  66.    JSR FILLEDSQUARE
  67.     ADD.L #SIZE,D1
  68.     JMP LOOPMAP
  69.  
  70. NEXTROW
  71.    MOVE.L #ORIX,D1 *Retorno coordenada X inicial
  72.     ADD.L #SIZE,D2  *Avance coordenada Y
  73.     ADD.L #1,A3     *Salta el borde izquierdo
  74.     CMP.B #$80,(A3)
  75.     BNE LOOPMAP  
  76.     RTS
  77. **************************************************************************
  78.  
  79. SHOWPIECE  **************************************** Subrutina para mostrar la pieza apuntada por A3 en la coordenada indicada por D1,D2 *****************************
  80.     MOVE.L D1,-(A7)   *Guardo coordenada X inicial
  81. LOOPPIECE
  82.    MOVE.B (A3)+,D0   *Obtiene el contenido
  83.     CMP.B #$80,D0
  84.     BEQ NEXTROWP
  85.     CMP.B #$01,D0
  86.     BEQ FILLEDP      *Está llena
  87.     CMP.B #$00,D0
  88.     BEQ EMPTYP       *Está vacía
  89.  
  90. EMPTYP
  91.    *JSR EMPTYSQUARE *Para las fichas, no pinto los vacíos
  92.     ADD.L #SIZE,D1
  93.     JMP LOOPPIECE
  94.  
  95. FILLEDP
  96.    JSR FILLEDSQUARE
  97.     ADD.L #SIZE,D1
  98.     JMP LOOPPIECE
  99.  
  100. NEXTROWP
  101.    MOVE.L (A7)+,D1  *Recupero coordenada X inicial
  102.     ADD.L #SIZE,D2   *Avance coordenada Y
  103.     *ADD.L #1,A3     *No hay borde izquierdo
  104.     CMP.B #$80,(A3)
  105.     BNE SHOWPIECE
  106.     RTS  
  107. *************************************************************************    
  108.    
  109.  
  110.  
  111. EMPTYSQUARE
  112.    MOVE.L #90,D0   *Cuadrado sin relleno
  113.     MOVE.L D1,D3
  114.     MOVE.L D2,D4    *Copio coordenadas esquina izquierda en D3,D4
  115.     ADD.L #SIZE,D3
  116.     ADD.L #SIZE,D4  *Creo coordenadas esquina derecha separándolas SIZE pixels
  117.     TRAP #15
  118.     RTS
  119.    
  120. FILLEDSQUARE
  121.    JSR FILLGREEN   *Elijo un color de relleno
  122.     MOVE.L #87,D0   *Cuadrado CON relleno
  123.     MOVE.L D1,D3
  124.     MOVE.L D2,D4    *Copio coordenadas esquina izquierda en D3,D4
  125.     ADD.L #SIZE,D3
  126.     ADD.L #SIZE,D4  *Creo coordenadas esquina derecha separándolas SIZE pixels
  127.     TRAP #15
  128.     RTS
  129.    
  130. FILLGREEN
  131.    MOVEM.L D0-D1,-(A7)
  132.     MOVE.L #81,D0
  133.     MOVE.L #GREEN,D1    *Selecciono verde como color de relleno
  134.     TRAP #15
  135.     MOVEM.L (A7)+,D0-D1
  136.     RTS    
  137.  
  138.  
  139. * Put variables and constants here
  140.     ORG $4000
  141.    
  142. MAPA
  143.  DC.B $80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80
  144.  DC.B $80,$00,$00,$00,$00,$01,$01,$01,$00,$00,$00,$80
  145.  DC.B $80,$00,$00,$00,$00,$01,$01,$01,$00,$00,$00,$80
  146.  DC.B $80,$01,$00,$01,$00,$01,$01,$01,$00,$00,$01,$80
  147.  DC.B $80,$01,$00,$01,$00,$01,$01,$01,$01,$01,$01,$80
  148.  DC.B $80,$01,$00,$01,$01,$01,$01,$01,$01,$01,$01,$80
  149.  DC.B $80,$01,$00,$00,$01,$01,$01,$01,$01,$01,$01,$80
  150.  DC.B $80,$01,$00,$01,$01,$01,$00,$00,$00,$00,$01,$80
  151.  DC.B $80,$01,$00,$01,$01,$01,$01,$01,$01,$01,$01,$80
  152.  DC.B $80,$01,$00,$01,$01,$01,$01,$01,$01,$01,$01,$80
  153.  DC.B $80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80
  154.  DC.B $80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80
  155.  
  156. ******************* Las fichas las he definido solo con los límites derecho y abajo. Se podría hacer lo mismo con el mapa ****************************
  157.  
  158. FICHAL3
  159.    DC.B $01,$00,$00,$80
  160.     DC.B $01,$00,$00,$80
  161.     DC.B $01,$01,$01,$80
  162.     DC.B $80,$80,$80,$80
  163.    
  164. FICHAV5
  165.    DC.B $01,$80
  166.     DC.B $01,$80
  167.     DC.B $01,$80
  168.     DC.B $01,$80
  169.     DC.B $01,$80
  170.     DC.B $80,$80
  171.  
  172.     END    START
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement