Estoy usando SjASMPlus 1.07 para ensamblar un programilla.
Siguiendo los ejemplos que acompañan la distribución del ensamblador utilizo las directivas DEVICE ZXSPECTRUM48 al comienzo y SAVESNA "programa",Inicio al final, de modo que se genera una imagen SNA cargable en un emulador. La etiqueta Inicio es el lugar donde debería saltar para ejecutar el programa. El listado contiene varios ORGs para situar las distintas rutinas y datos en sus respectivos lugares.
He estado haciendo pruebas y todo iba bien: ensamblo y después cargo con Spectaculator o EmuZWin. Después de añadir la última rutina he comprobado que al cargar en el emulador ya no se ejecuta el programa, en su lugar me aparece el intérprete de BASIC y el mensaje "OK, 0:1".
Sin embargo, si utilizo el depurador y me voy hasta la zona de memoria donde está ubicado el programa veo que está allí. Si cambio el PC a pedal y lo sitúo en la posición de arranque y ejecuto todo va bien. Esto pasa tanto con Spectaculator como con EmuZWin, por lo que parece que se trata de alguna característica de SjASMPlus.
Revisando la documentación veo que cuenta con un par de directivas sospechosas SLOT y PAGE. Parece como si la memoria estuviera paginada (en bloques de #4000 bytes) y hubiera que indicar la página de trabajo. He hecho alguna prueba sin éxito y la documentación es muy básica.
¿Alguien entiende lo que está pasando?
Páginas y slots en Sjasmplus
Moderador: Sir Cilve Sinclair
- Rinconete
- Jack The Nipper
- Mensajes: 193
- Registrado: Mar Oct 09, 2007 7:32 pm
- Ubicación: Valladolid
- TrueVideo
- Jack The Nipper
- Mensajes: 195
- Registrado: Mié May 23, 2007 8:34 am
- Ubicación: BCN
- Contactar:
Re: Páginas y slots en Sjasmplus
Desde luego aquí pasa algo raro. He probado a reproducir la situación que comentas y parece que la dirección de ejecución del snapshot es siempre la del primer ORG. Nunca me había dado cuenta de esto porque con el modelo de memoria de 128K (el que utilizo siempre) sí funciona:
Cambiando el segundo parámetro de SAVESNA verás que se ejecuta una u otra rutina, las cuales están en zonas de memoria delimitadas por ORG. En el modelo 48K debería funcionar exactamente igual, por lo que deberías reportarlo al autor como posible bug (o si lo prefieres puedo hacerlo yo mismo).
Por lo que respecta a las directivas SLOT y PAGE, estas no tienen que influir para nada en tu caso ya que estás trabajando con un modelo de memoria sin paginación. Al seleccionar el modelo de 48K con DEVICE el ensamblador crea el correspondiente mapa de memoria por defecto.
J
Código: Seleccionar todo
DEVICE ZXSPECTRUM128
SLOT 3
PAGE 0
;-------------------------------
ORG $C000
START1 DI
.LOOP
LD A,4
OUT (254),A
INC A
OUT (254),A
JR .LOOP
;-------------------------------
ORG $CA00
START2 DI
.LOOP
LD A,1
OUT (254),A
INC A
OUT (254),A
JR .LOOP
;-------------------------------
SAVESNA "TEST.SNA",START2
Cambiando el segundo parámetro de SAVESNA verás que se ejecuta una u otra rutina, las cuales están en zonas de memoria delimitadas por ORG. En el modelo 48K debería funcionar exactamente igual, por lo que deberías reportarlo al autor como posible bug (o si lo prefieres puedo hacerlo yo mismo).
Por lo que respecta a las directivas SLOT y PAGE, estas no tienen que influir para nada en tu caso ya que estás trabajando con un modelo de memoria sin paginación. Al seleccionar el modelo de 48K con DEVICE el ensamblador crea el correspondiente mapa de memoria por defecto.
J
- Rinconete
- Jack The Nipper
- Mensajes: 193
- Registrado: Mar Oct 09, 2007 7:32 pm
- Ubicación: Valladolid
Re: Páginas y slots en Sjasmplus
oops, olvidé responder: además de lo que comentas hay alguna otra cosa rara porque parece que cuando hay varios ORG y el código supera cierto tamaño la ejecución ya no se hace a la dirección que se indica en la directiva SAVESNA, o al menos es lo que me pasa con un programilla que tengo entre manos. En cuanto meto un DEFS 640 deja de ejecutarse ¿?.
Voy a reportarlo al autor a ver si tiene explicación. Gracias!
Voy a reportarlo al autor a ver si tiene explicación. Gracias!
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 22 invitados