Dame tus comentarios, saludos,
Código: Seleccionar todo
.opt no list
contador =2
num.estados = 10
pt.1=$CB
random=$d20a
*=$6000
inicio
lda #<dl
sta $230
lda #>dl
sta $231
ldy #<vbd
ldx #>vbd
lda #7
jsr $e45c
loop
jmp loop
dl
.byte $70,$70,$70
.byte $42
.word PANTALLA
.byte 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
.byte $41
.word dl
PANTALLA
.sbyte " "
.sbyte " "
.sbyte " "
.sbyte " "
.sbyte " "
.sbyte " "
.sbyte " "
.sbyte " "
.sbyte " "
.sbyte " "
.sbyte " "
.sbyte " "
.sbyte " "
.sbyte " "
.sbyte " "
.sbyte " "
.sbyte " "
.sbyte " "
.sbyte " "
.sbyte " "
.sbyte " "
.sbyte " "
.sbyte " "
.sbyte " "
tabla.caracteres
.sbyte "1234567890"
tabla.posx
.byte 0,0,0,0,0,0,0,0,0,0
tabla.posy
.byte 0,0,0,0,0,0,0,0,0,0
;tabla.posabs1
; .byte 0,0,0,0,0,0,0,0,0,0
;tabla.posabs2
; .byte 0,0,0,0,0,0,0,0,0,0
tabla.sentidos
.byte 0,0,0,0,0,0,0,0,0,0
tabla.estados
.byte 0,0,0,0,0,0,0,0,0,0
vbd.contador
.byte contador
vbd
dec vbd.contador
beq vbd.no.fin
jmp vbd.fin
vbd.no.fin
lda #contador
sta vbd.contador
ldx #$00 ;Primer estado
vbd.loop.estados
lda tabla.estados,x
bne vbd.modifica.estado
lda random
bpl vbd.no.siguiente.estado
jmp vbd.siguiente.estado
vbd.no.siguiente.estado
lda #$01
sta tabla.estados,x
lda random
and #$01
beq vbd.estado.izquierda
lda #39
vbd.estado.izquierda
sta tabla.posx,x
sta tabla.sentidos,x
vbd.elige.y
lda random
cmp #23
bcs vbd.elige.y
ldy #num.estados
vbd.loop.elige.y
cmp tabla.posy-1,y
beq vbd.elige.y
dey
bne vbd.loop.elige.y
sta tabla.posy,x
vbd.modifica.estado
jsr vbd.borra.caracter
lda tabla.sentidos,x
beq vbd.derecha
vbd.izquierda
lda tabla.posx,x
bne vbd.izquierda.no.termina
lda #$0
sta tabla.sentidos,x
sta tabla.posy,x
sta tabla.posx,x
sta tabla.estados,x
jmp vbd.siguiente.estado
vbd.izquierda.no.termina
dec tabla.posx,x
jmp vbd.coloca.caracter
vbd.derecha
lda tabla.posx,x
cmp #39
bne vbd.derecha.no.termina
lda #$0
sta tabla.sentidos,x
sta tabla.posy,x
sta tabla.posx,x
sta tabla.estados,x
jmp vbd.siguiente.estado
vbd.derecha.no.termina
inc tabla.posx,x
vbd.coloca.caracter
lda #<PANTALLA
sta pt.1
lda #>PANTALLA
sta pt.1+1
lda tabla.posy,x
beq vbd.loop.posy.fin
tay
vbd.loop.posy
lda pt.1
clc
adc #40
sta pt.1
lda pt.1+1
adc #0
sta pt.1+1
dey
bne vbd.loop.posy
vbd.loop.posy.fin
lda tabla.posx,x
tay
lda tabla.caracteres,x
sta (pt.1),y
vbd.siguiente.estado
inx
cpx #num.estados
beq vbd.fin
jmp vbd.loop.estados
vbd.fin
jmp $e462
vbd.borra.caracter
lda #<PANTALLA
sta pt.1
lda #>PANTALLA
sta pt.1+1
lda tabla.posy,x
beq vbd.borra.caracter.loop.posy.fin
tay
vbd.borra.caracter.loop.posy
lda pt.1
clc
adc #40
sta pt.1
lda pt.1+1
adc #0
sta pt.1+1
dey
bne vbd.borra.caracter.loop.posy
vbd.borra.caracter.loop.posy.fin
lda tabla.posx,x
tay
lda #$00
sta (pt.1),y
rts
*=$2e0
.word inicio
.opt list