Hola chicos , estoy tratando de simular en el 6809 el típico juego de 'el gato' o más conocido como 3 en raya. Bien , el problema me surge a la hora de que en la práctica se me especifica que debo de crear el tablero y que este se autorefresque es decir , no lo puedo imprimir una y otra vez con los nuevos movimientos , el tablero se me ha ocurrido recrearlo imprimiendo direcciones de memoria seguidas , ya que me facilitaria el imprimirlas con su valor en ascii , es decir , cuando del teclado lee un 1 , hace un salto a esta subrutina y en ella con un ld , almacena el valor 88 , (en ascii una X) a la vez que en la direccion siguiente almacena un 48 (un 0 en ascii)
obviamente no voy a copiar todo el codigo porque seria muy extenso por aqui dejo el modulo jugador vs maquina , esperando que me den alguna idea para refrescar el tablero.
OJO no pido código.
jugador_maquina:
lda teclado
cmpa #1
bne compara2
jsr siesuno
bra jugador_maquina
compara2:
cmpa #2
bne compara3
jsr siesdos
bra jugador_maquina
compara3:
cmpa #3
bne compara4
jsr siestres
bra jugador_maquina
compara4:
cmpa #4
bne compara5
jsr siescuatro
bra jugador_maquina
compara5:
cmpa #5
bne compara6
jsr siescinco
bra jugador_maquina
compara6:
cmpa #6
bne compara7
jsr siesseis
bra jugador_maquina
compara7:
cmpa #7
bne compara8
jsr siessiete
bra jugador_maquina
compara8:
cmpa #8
bne compara9
jsr siesocho
bra jugador_maquina
compara9:
cmpa #9
bne Valorerroneo
jsr siesnueve
bra jugador_maquina
valorerroneo:
jsr imprime valor_erroneo
Nadie sabe nada al respecto? ya consigo imprimir el primer movimiento , pero no consigo que me lea un bra programa para que lea e imprima los siguientes el codigo sin adjuntar subrutinas etc de momento va asi:
; definimos una constante
fin .equ 0xFF01
pantalla .equ 0xFF00
teclado .equ 0xFF02
tabla:
.ascii " "
; definimos una constante
pantalla .equ 0xFF00
ldx #tabla
programa:
lda teclado
cmpa #'1
beq uno
bne compara2
compara2:
cmpa #'2
beq dos
bne compara3
compara3:
cmpa #'3
beq tres
bne compara4
compara4:
cmpa #'4
beq cuatro
bne compara5
compara5:
cmpa #'5
beq cinco
bne compara6
compara6:
cmpa #'6
beq seis
bne compara7
compara7:
cmpa #'7
beq siete
bne compara8
compara8:
cmpa #'8
beq ocho
bne compara9
compara9:
cmpa #'9
beq nueve
uno:
lda #'\n
sta pantalla
ldy #tabla
lda #'X
sta ,x
bra imprime_cadena
dos:
lda #'\n
sta pantalla
ldy #tabla
lda #'X
sta 1,x
bra imprime_cadena
tres:
lda #'\n
sta pantalla
ldy #tabla
lda #'X
sta 2,x
bra imprime_cadena
cuatro:
lda #'\n
sta pantalla
ldy #tabla
lda #'X
sta 3,x
bra imprime_cadena
cinco:
lda #'\n
sta pantalla
ldy #tabla
lda #'X
sta 4,x
bra imprime_cadena
seis:
lda #'\n
sta pantalla
ldy #tabla
lda #'X
sta 5,x
bra imprime_cadena
siete:
lda #'\n
sta pantalla
ldy #tabla
lda #'X
sta 6,x
bra imprime_cadena
ocho:
lda #'\n
sta pantalla
ldy #tabla
lda #'X
sta 7,x
bra imprime_cadena
nueve:
lda #'\n
sta pantalla
ldy #tabla
lda #'X
sta 8,x
bra imprime_cadena
imprime_cadena:
pshs a
ldb #9
imprime_cadena_inicio:
lda #'|
sta pantalla
lda ,x+
sta pantalla
beq reset_cadena
decb
cmpb #6
beq imprime_espacio
cmpb #3
beq imprime_espacio
cmpb #0
beq imprime_espacio
beq imprime_espacio
bra imprime_cadena_inicio
reset_cadena:
puls a
rts
jmp programa
imprime_espacio:
lda #'\n
sta pantalla
bra imprime_cadena_inicio
acabar: ; el programa acaba
clra
sta fin
.area flag (ABS)
.org 0xFFFE ; vector de RESET
.word programa
Hola mrMoonlight estoy interesado en el programa en ensamblador de tres en raya, por favor me lo puedes enviar entero a mi correo. Si encuentro la solucion a su problema se lo notifico lo antes posible. Mi correo es: alfreTorrija@hotmail.com
Un Saludo :laugh: