CURSO DE ASSEMBLER
- admin
- Site Admin
- Mensajes: 33
- Registrado: Mar Nov 07, 2006 2:44 pm
- Reputación: 2
- Ubicación: CACHILLULLO
CURSO DE ASSEMBLER
Cualquier duda, sugerencia o problema relacionado con el CURSO DE ASEMBLER.
http://www.retrogames.cl/clases.html
http://www.retrogames.cl/clases.html
Curso de Assembler Atari 8-bits: capítulo 8.
Estimados,
Después de mucho tiempo fuera de las canchas, anuncio la publicación de un nuevo capítulo del curso de assembler del atari 8-bits (más vale tarde que nunca). Adjunto el link:
http://www.retrogames.cl/cap8.html
Agradeceré sus críticas y comentarios al respecto. Espero les guste. ¡Saludos!
Después de mucho tiempo fuera de las canchas, anuncio la publicación de un nuevo capítulo del curso de assembler del atari 8-bits (más vale tarde que nunca). Adjunto el link:
http://www.retrogames.cl/cap8.html
Agradeceré sus críticas y comentarios al respecto. Espero les guste. ¡Saludos!
Re: Curso de Assembler Atari 8-bits: capítulo 8.
WillySoft escribió:Estimados,
Después de mucho tiempo fuera de las canchas, anuncio la publicación de un nuevo capítulo del curso de assembler del atari 8-bits (más vale tarde que nunca). Adjunto el link:
http://www.retrogames.cl/cap8.html
Agradeceré sus críticas y comentarios al respecto. Espero les guste. ¡Saludos!
Vamos a tener una versión nueva de AscrNet Soft
Taba weno ya que te soltaran en la pega
Si te fijas, la rutina no posiciona caracteres en la pantalla, eso se ve en el capítulo 9. Lo que hace acá es modificar el diseño del caracter "espacio", por una sucesión de cuadros, según la tabla de font.AsCrNet escribió:esta buena la animación pero quede mariado con los cuadritos
tio willy, lo que no entendi donde o como pones las coordenadas x,y en la pantalla , algo asi como position en basic
saludos
Ahora, respecto a tu pregunta, lo que se hace es ubicar en la memoria dónde está el primer caracter de la pantalla (supongamos que la posición está almacenada en la variable "pantalla"). Luego, como cada línea es de 40 caracteres, se puede utilizar la fórmula:
pantalla + 40*y + x
Saludos.
1. Capítulo 4.AsCrNet escribió:aaa hay esta el truco entonces poner algo en coordenadas seria la etiqueta vbd.coloca.caracter
ahora tengo dos dudas mas
1. como hago un peek en asm
2. y por ultimo como cambio la DL , por ejemplo un gr.2 para presentar algo y despues un gr. 12 para el games
saludos
2. El listado del capítulo nueve crea una DL. Puedes utilizar distintos valores para obtener diferentes gráficos.
- AsCrNet
- hard player
- Mensajes: 472
- Registrado: Mar Nov 07, 2006 2:45 pm
- Reputación: 0
- Ubicación: PHO
- Contactar:
aaaaa ahora entendi
LDA 88 -----> seria 64
STA 88
LDA #65 <---- seria 65
mmm, no me explique bien no es cambiar el DL , si no definir otra pantalla mas.
en basic seria :
hay sip :-°
LDA 88 -----> seria 64
STA 88
LDA #65 <---- seria 65
mmm, no me explique bien no es cambiar el DL , si no definir otra pantalla mas.
en basic seria :
Código: Seleccionar todo
10 GRAPHICS 2
20 ? #6;"OA"
30 IF PEEK(53279)<>6 THEN GOTO 30
40 GRAPHICS 1
50 ? #6;"XAU"
60 IF PEEK(53279)<>6 THEN GOTO 60
70 GOTO 10
Bueno, voy a hacer un ejemplo más práctico. Acá hay un modo gráfico diferente del ejemplo del capítulo 9:
¿Captas cuál fue la diferencia?
Código: Seleccionar todo
.opt no list
contador = 4
num.estados = 40
pt.1=$CB
random=$d20a
columnas=40
filas =24
*=$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 $46
.word PANTALLA
.byte 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
.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 #columnas-1
vbd.estado.izquierda
sta tabla.posx,x
sta tabla.sentidos,x
vbd.elige.y
lda random
cmp #4
bmi vbd.elige.y
cmp #filas-2
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 #columnas-1
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 #columnas
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 #columnas
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