Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- *-----------------------------------------------------------
- * Title : VISUALIZADOR GRÁFICO EN 68k PARA 1010
- * Written by : FULGENCIO
- * Date : 2019
- * Description:
- *-----------------------------------------------------------
- BLACK EQU $00000000
- RED EQU $000000FF
- GREEN EQU $0000FF00
- YELLOW EQU $0000FFFF
- BLUE EQU $00FF0000
- WHITE EQU $00FFFFFF
- SIZE EQU 30
- ORIX EQU 20
- ORIY EQU 20
- ORIP1X EQU 400
- ORIP1Y EQU 10
- ORIP2X EQU 400
- ORIP2Y EQU 170
- ORIP3X EQU 400
- ORIP3Y EQU 330
- ORG $1000
- START * Programa Principal
- JSR SHOWMAP * Muestra Mapa
- MOVE.L #ORIP1X,D1
- MOVE.L #ORIP1Y,D2 *Coordenadas iniciales de pisición de la pieza1
- MOVE.L #FICHAS,A3 *Posición de las fichas
- CLR.L D0
- MOVE.B JUEGOFICHA1,D0
- CMP.B #0,D0
- BEQ NOFICHA1
- SUB.L #1,D0 *Resta 1 para empezar a contar desde 0
- LSL.L #4,D0 * multiplica por 16
- ADD.L D0,A3
- JSR SHOWPIECE * Muestra pieza 1
- NOFICHA1
- MOVE.L #ORIP2X,D1
- MOVE.L #ORIP2Y,D2 *Coordenadas iniciales de pisición de la pieza2
- MOVE.L #FICHAS,A3 *Posición de las fichas
- CLR.L D0
- MOVE.B JUEGOFICHA2,D0
- CMP.B #0,D0
- BEQ NOFICHA2
- SUB.L #1,D0 *Resta 1 para empezar a contar desde 0
- LSL.L #4,D0 * multiplica por 16
- ADD.L D0,A3
- JSR SHOWPIECE * Muestra pieza 2
- NOFICHA2
- MOVE.L #ORIP3X,D1
- MOVE.L #ORIP3Y,D2 *Coordenadas iniciales de pisición de la pieza2
- MOVE.L #FICHAS,A3 *Posición de las fichas
- CLR.L D0
- MOVE.B JUEGOFICHA3,D0
- CMP.B #0,D0
- BEQ NOFICHA3
- SUB.L #1,D0 *Resta 1 para empezar a contar desde 0
- LSL.L #4,D0 * multiplica por 16
- ADD.L D0,A3
- JSR SHOWPIECE * Muestra pieza 3
- NOFICHA3
- SIMHALT * halt simulator
- *************************************************************************
- SHOWMAP ******************************** Subrutina que muestra el estado del mapa en las coordenadas ORIX, ORIY ************************************
- MOVE.L #ORIX,D1
- MOVE.L #ORIY,D2 *Coordenadas iniciales del tablero
- MOVE.L #MAPA+13,A3 *Posición de la primera casilla real
- LOOPMAP
- MOVE.B (A3)+,D0 *Obtiene el contenido
- CMP.B #$80,D0
- BEQ NEXTROW
- CMP.B #$01,D0
- BEQ FILLED *Está llena
- CMP.B #$00,D0
- BEQ EMPTY *Está vacía
- EMPTY
- JSR EMPTYSQUARE
- ADD.L #SIZE,D1
- JMP LOOPMAP
- FILLED
- JSR FILLEDSQUARE
- ADD.L #SIZE,D1
- JMP LOOPMAP
- NEXTROW
- MOVE.L #ORIX,D1 *Retorno coordenada X inicial
- ADD.L #SIZE,D2 *Avance coordenada Y
- ADD.L #1,A3 *Salta el borde izquierdo
- CMP.B #$80,(A3)
- BNE LOOPMAP
- RTS
- **************************************************************************
- SHOWPIECE **************************************** Subrutina para mostrar la pieza apuntada por A3 en la coordenada indicada por D1,D2 *****************************
- MOVE.L D1,-(A7) *Guardo coordenada X inicial
- LOOPPIECE
- MOVE.B (A3)+,D0 *Obtiene el contenido
- CMP.B #$80,D0
- BEQ NEXTROWP
- CMP.B #$01,D0
- BEQ FILLEDP *Está llena
- CMP.B #$00,D0
- BEQ EMPTYP *Está vacía
- EMPTYP
- *JSR EMPTYSQUARE *Para las fichas, no pinto los vacíos
- ADD.L #SIZE,D1
- JMP LOOPPIECE
- FILLEDP
- JSR FILLEDSQUARE
- ADD.L #SIZE,D1
- JMP LOOPPIECE
- NEXTROWP
- MOVE.L (A7)+,D1 *Recupero coordenada X inicial
- ADD.L #SIZE,D2 *Avance coordenada Y
- *ADD.L #1,A3 *No hay borde izquierdo
- CMP.B #$80,(A3)
- BNE SHOWPIECE
- RTS
- *************************************************************************
- EMPTYSQUARE
- MOVE.L #90,D0 *Cuadrado sin relleno
- MOVE.L D1,D3
- MOVE.L D2,D4 *Copio coordenadas esquina izquierda en D3,D4
- ADD.L #SIZE,D3
- ADD.L #SIZE,D4 *Creo coordenadas esquina derecha separándolas SIZE pixels
- TRAP #15
- RTS
- FILLEDSQUARE
- JSR FILLGREEN *Elijo un color de relleno
- MOVE.L #87,D0 *Cuadrado CON relleno
- MOVE.L D1,D3
- MOVE.L D2,D4 *Copio coordenadas esquina izquierda en D3,D4
- ADD.L #SIZE,D3
- ADD.L #SIZE,D4 *Creo coordenadas esquina derecha separándolas SIZE pixels
- TRAP #15
- RTS
- FILLGREEN
- MOVEM.L D0-D1,-(A7)
- MOVE.L #81,D0
- MOVE.L #GREEN,D1 *Selecciono verde como color de relleno
- TRAP #15
- MOVEM.L (A7)+,D0-D1
- RTS
- * Put variables and constants here
- ORG $4000
- MAPA
- DC.B $80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80
- DC.B $80,$00,$00,$00,$00,$01,$01,$01,$00,$00,$00,$80
- DC.B $80,$00,$00,$00,$00,$01,$01,$01,$00,$00,$00,$80
- DC.B $80,$01,$00,$01,$00,$01,$01,$01,$00,$00,$01,$80
- DC.B $80,$01,$00,$01,$00,$01,$01,$01,$01,$01,$01,$80
- DC.B $80,$01,$00,$01,$01,$01,$01,$01,$01,$01,$01,$80
- DC.B $80,$01,$00,$00,$01,$01,$01,$01,$01,$01,$01,$80
- DC.B $80,$01,$00,$01,$01,$01,$00,$00,$00,$00,$01,$80
- DC.B $80,$01,$00,$01,$01,$01,$01,$01,$01,$01,$01,$80
- DC.B $80,$01,$00,$01,$01,$01,$01,$01,$01,$01,$01,$80
- DC.B $80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80
- DC.B $80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80
- ******************* Las fichas las he definido solo con los límites derecho y abajo. Se podría hacer lo mismo con el mapa ****************************
- FICHAS
- FICHAL3
- DC.B $01,$00,$00,$80
- DC.B $01,$00,$00,$80
- DC.B $01,$01,$01,$80
- DC.B $80,$80,$80,$80
- FICHAV5
- DC.B $01,$80
- DC.B $01,$80
- DC.B $01,$80
- DC.B $01,$80
- DC.B $01,$80
- DC.B $80,$80
- DS.B 4
- FICHAC3
- DC.B $01,$01,$01,$80
- DC.B $01,$01,$01,$80
- DC.B $01,$01,$01,$80
- DC.B $80,$80,$80,$80
- JUEGOFICHA1 DC.B 2
- JUEGOFICHA2 DC.B 1
- JUEGOFICHA3 DC.B 3
- END START
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement