.opt no list contador = 4 num.estados = 40 pt.1=$CB random=$d20a *=$6000 inicio lda #
dl sta $231 ldy #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 "1234567890ABCDEFGHIJ1234567890ABCDEFGHIJ" tabla.posx .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 tabla.posy .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 tabla.sentidos .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 tabla.estados .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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 #8 bmi vbd.elige.y cmp #18 bcs vbd.elige.y jmp vbd.fin.elige.y ldy #num.estados vbd.loop.elige.y cmp tabla.posy-1,y beq vbd.elige.y dey bne vbd.loop.elige.y vbd.fin.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+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+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