pregunta sobre rutina de scroll

Todo sobre la creación, diseño y programación de nuevo software para
nuestro Spectrum

Moderador: Sir Cilve Sinclair

Responder
ultimate
Herbert
Mensajes: 54
Registrado: Dom Nov 09, 2008 2:08 am

pregunta sobre rutina de scroll

Mensaje por ultimate » Sab May 02, 2009 3:43 pm

estaba jugando un poco con el pasmo y el fuse realizando una pequeña rutina de scroll y me llama la atención el comportamiento que tiene en el fuse, la rutina es esta:

Código: Seleccionar todo

   org 35000
tam   dw 4000
   ld hl,16384
   ld a,(tam)
   ld c,a
   ld a,(tam+1)
   ld b,a
bucle   push bc
   ld b,0
   ld c,32
   and a
fila   rrc (hl)
   inc hl
   djnz fila
   pop bc
   djnz bucle
   ret


y lo que hace es un scroll a la derecha en un área de pantalla definida por el word tam, por defecto 4000 bytes. El caso es que al usarla desde un programa en basic si pokeo en tam un valor < 256 la rutina produce un reset del ordenador, cosa que no entiendo porque debería rotar algunos bytes de la primera linea de la pantalla. Si el valor de tam es > 256 funciona como yo esperaba.

Por otro lado me gustaría saber donde puedo consultar los comandos que se pueden usar con el debugger del fuse.

un saludo

Avatar de Usuario
Metalbrain
Freddy Hardest
Mensajes: 592
Registrado: Lun May 07, 2007 8:17 am
Ubicación: Sevilla
Contactar:

Re: pregunta sobre rutina de scroll

Mensaje por Metalbrain » Sab May 02, 2009 6:02 pm

ultimate escribió:estaba jugando un poco con el pasmo y el fuse realizando una pequeña rutina de scroll y me llama la atención el comportamiento que tiene en el fuse, la rutina es esta:

Código: Seleccionar todo

   org 35000
tam   dw 4000
   ld hl,16384
   ld a,(tam)
   ld c,a
   ld a,(tam+1)
   ld b,a
bucle   push bc
   ld b,0
   ld c,32
   and a
fila   rrc (hl)
   inc hl
   djnz fila
   pop bc
   djnz bucle
   ret


y lo que hace es un scroll a la derecha en un área de pantalla definida por el word tam, por defecto 4000 bytes. El caso es que al usarla desde un programa en basic si pokeo en tam un valor < 256 la rutina produce un reset del ordenador, cosa que no entiendo porque debería rotar algunos bytes de la primera linea de la pantalla. Si el valor de tam es > 256 funciona como yo esperaba.


Me parece que estás intentando usar DJNZ como si el contador fuera BC (de 16 bits), pero DJNZ solo funciona con B (8 bits), así que en el bucle interno de fila se producen 256 movimientos (B va en el primer paso de 0 a 255, y otros 255 pasos hasta llegar de nuevo a 0), y en el externo, si TAM < 255, B vale 0 y se repite el bucle también 256 veces, con lo que el total serían 65536 movimientos, pero a medio camino pilla a la rutina, la modifica y pierdes el control hasta que se cuelga.
SevenuP se escribe con u minúscula y P mayúscula.

ultimate
Herbert
Mensajes: 54
Registrado: Dom Nov 09, 2008 2:08 am

Re: pregunta sobre rutina de scroll

Mensaje por ultimate » Sab May 02, 2009 11:34 pm

tienes toda la razon, efectivamente estaba usando BC como contador del djnz, es dificil quitarse el gorro de los 16 bits!!

Muchas gracias!

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 41 invitados