HELP-6: Comandos OS Spectrum +3

dancresp
Mensajes: 6271
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Agradecido : 711 veces
Agradecimiento recibido: 1059 veces

HELP-6: Comandos OS Spectrum +3

Mensajepor dancresp » 29 Oct 2016 21:53

Quiero pasar software de cintas de cassette, en BASIC y bloques de bytes, a disco.
Lo reconozco, no tengo ni idea como se hace en un +3, ya que tampoco tengo el manual.

¿Alguien me puede hacer un breve resumen de como se formatea, se ve el directorio y se graban programas en BASIC y bloques de bytes. En este último caso cargando el bloque en una dirección distinta de donde se cargo.

Gracias por adelantado !!!
Buscando la IP de la W.O.P.R. he encontrado mi índice

Avatar de Usuario
kikems
Mensajes: 5519
Registrado: 30 May 2013 19:23
Agradecido : 2651 veces
Agradecimiento recibido: 3133 veces

Re: HELP-6: Comandos OS Spectrum +3

Mensajepor kikems » 29 Oct 2016 22:13

Yo lo hacía en sus tiempos, con los juegos desprotegidos, pero de memoria no me acuerdo. Esa es una tarea que tengo pendiente de mostrar en un AmigaWave, pero tarea pendiente, puede que estos días me ponga con ella , te avisaré.

Así de memoria te digo lo siguiente

1 cargas de cinta :

load "t:" ----- esto fuerza al spectrum a cargar de unidad de casete.
merge"" ------- esto carga el primer bloque basic de cassete con cualquier nombre.
save "a:nombrearchivo" ------ salva el bloque de basic en memoria a la unidad de disco con el nombre indicado.

Para cargar bloques de bytes, creo que era un load "t:archivo" code xxxx , luego lo salvas con save "a:nombrearchivo" code xxxx
El code xxxx creo recordar que era el número de bloques.

listar el contenido del disco.

cat a: o cat "a:"

para formatear creo que era:

format "a:"

esto no recuerdo muy bien si era así.

Avatar de Usuario
carmeloco
Mensajes: 1986
Registrado: 16 Dic 2015 08:56
Agradecido : 27 veces
Agradecimiento recibido: 441 veces

Re: HELP-6: Comandos OS Spectrum +3

Mensajepor carmeloco » 29 Oct 2016 23:26

Sobre el comando CODE, tiene dos parámetros. El primero, es la dirección de memoria donde queremos cargar o salvar, el bloque bytes. El segundo parámetro es el número de bytes a grabar. En operaciones de LOAD, no se usa el segundo, ya que se carga la totalidad del archivo. Para pasarlo a diskette, hay que conoces estos dos parámetros. En principio, están en la cabecera del archivo. Desde un emulador, es fácil de ver. En la máquina real, ahora mismo, no sé cómo mirarlo. El primer parámetro, es fácil de averiguar, si está en el LOAD, que no tiene por qué, ya que un CODE sin parámetros, usa los que hay en la cabecera.

dancresp
Mensajes: 6271
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Agradecido : 711 veces
Agradecimiento recibido: 1059 veces

Re: HELP-6: Comandos OS Spectrum +3

Mensajepor dancresp » 30 Oct 2016 01:05

Que suerte la mia !!!
El motor suena pero aparece el error "Drive not ready".

Está claro que toca un cambio de la correa de la disquetera...

Gracias por las respuestas.
A ver cuando lo puedo probar porque ahora mismo no tengo más correas.
Buscando la IP de la W.O.P.R. he encontrado mi índice

BlackHole
Mensajes: 1694
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 34 veces
Agradecimiento recibido: 534 veces

Re: HELP-6: Comandos OS Spectrum +3

Mensajepor BlackHole » 30 Oct 2016 02:16

Hola Daniel,

Hay que tener en cuenta un par de cosillas: el modo para acceder a disco es 128K, con lo que ello implica: el inicio del BASIC es más alto y el CLEAR de algunos juegos pueden poner el RAMTOP demasiado bajo con respecto a un valor que hubiese sido normal en modo 48K. Lo digo para que no te resulte extraño que habiendo conseguido hacer la transferencia adecuadamente, te encuentres con problemas de "Out of memory".

El programa a pasar, por supuesto, debe estar previamente desprotegido... los juegos comerciales donde un MERGE daba resultados son escasos y antiguos, difícil ver un juego comercial que use el comando LOAD desde el BASIC después de 1984, pues incluso los que cargan a velocidad normal solían saltar a rutinas de código máquina que a su vez llamaban a la ROM para ello, no lo hacían desde BASIC.

dancresp
Mensajes: 6271
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Agradecido : 711 veces
Agradecimiento recibido: 1059 veces

Re: HELP-6: Comandos OS Spectrum +3

Mensajepor dancresp » 30 Oct 2016 20:14

BlackHole escribió:Hay que tener en cuenta un par de cosillas: el modo para acceder a disco es 128K, con lo que ello implica: el inicio del BASIC es más alto y el CLEAR de algunos juegos pueden poner el RAMTOP demasiado bajo con respecto a un valor que hubiese sido normal en modo 48K.

Lo tendré en cuenta, pero hasta que no tenga la disquetera funcionando no podré hacer pruebas.
Buscando la IP de la W.O.P.R. he encontrado mi índice

dancresp
Mensajes: 6271
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Agradecido : 711 veces
Agradecimiento recibido: 1059 veces

Re: HELP-6: Comandos OS Spectrum +3

Mensajepor dancresp » 17 Oct 2019 11:06

Ayer me lié con este tema y todo lo dicho por kikems me ha funcionado.

Procedo de la siguiente forma:
1) Cargo el "Omnicopy" para ver la dirección y tamaño de un bloque de bytes.
2) Hago el MERGE "" para cargar la parte BASIC.
3) La grabo en el disco con SAVE "nombre.bas" LINE nn, modificando la línea que tiene el LOAD CODE, poniendo el nombre del bloque de bytes.
4) Hago LOAD"T:" para que LOAD cargue desde casete.
5) Cargo el bloque de bytes desde la cinta con LOAD "" CODE, intentando mantener la dirección original.
6) Grabo el bloque de bytes en el disco con SAVE"nombre.bin" CODE nn,mm

Hago un reset, escribo LOAD"nombre.bas" y alegría... ya funciona !!!

Ayer por la noche completé una cara de un disco con el ensamblador GENS3 y distintos compiladores, como el "Colt Compiler", "HiSoft Pascal", "FigForth", etc.

Hoy le toca a una selección muy selecta de juegos.

Pero... tengo un problema !!!

Si cojo disquetes formateados con mi CPC-6128 (si mal no recuerdo, aunque podría ser del PCW), los disquetes funcionan perfectamente. Pero si lo formateo con el Spectrum +3, acaba sin dar errores pero al acceder a él me da un error de "pista 0/sector 0". Me pasa con todos los discos que formateo con mi Spectrum +3.

¿Normal?, ¿Soluciones?
Buscando la IP de la W.O.P.R. he encontrado mi índice

Avatar de Usuario
kikems
Mensajes: 5519
Registrado: 30 May 2013 19:23
Agradecido : 2651 veces
Agradecimiento recibido: 3133 veces

Re: HELP-6: Comandos OS Spectrum +3

Mensajepor kikems » 18 Oct 2019 11:24

dancresp escribió:Ayer me lié con este tema y todo lo dicho por kikems me ha funcionado.

Procedo de la siguiente forma:
1) Cargo el "Omnicopy" para ver la dirección y tamaño de un bloque de bytes.
2) Hago el MERGE "" para cargar la parte BASIC.
3) La grabo en el disco con SAVE "nombre.bas" LINE nn, modificando la línea que tiene el LOAD CODE, poniendo el nombre del bloque de bytes.
4) Hago LOAD"T:" para que LOAD cargue desde casete.
5) Cargo el bloque de bytes desde la cinta con LOAD "" CODE, intentando mantener la dirección original.
6) Grabo el bloque de bytes en el disco con SAVE"nombre.bin" CODE nn,mm
....

¿Normal?, ¿Soluciones?


Has tenido suerte , porque aquél post lo hice de memoria y mi memoria falla mucho en los detalles. -thumbup . Recuerdo que a raíz de tu hilo , me dio por volver a recordar y ensaya el proceso de nuevo y como se me fue la cabeza con el asunto , terminé publicando un hilo con el proceso más detallado.

viewtopic.php?f=43&t=200034308&p=200100845&hilit=volcado+de+cinta+a+disco+spectrum#p200100845

El mismo método debería servir para disco de +3, disciple, microdrive, wafadrive o cualquier otro soporte de Spectrum, básicamente cambiando la llamada a la unidad A: por el nombre de unidad de cada dispositivo.

Aquí RON se apuntó a la locura colectiva y nos tiramos un par de horas haciendo el mono con los ZX.

https://youtu.be/w4pxz9R42sM

dancresp
Mensajes: 6271
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Agradecido : 711 veces
Agradecimiento recibido: 1059 veces

Re: HELP-6: Comandos OS Spectrum +3

Mensajepor dancresp » 20 Oct 2019 23:11

kikems escribió:Has tenido suerte , porque aquél post lo hice de memoria y mi memoria falla mucho en los detalles. -thumbup . Recuerdo que a raíz de tu hilo , me dio por volver a recordar y ensaya el proceso de nuevo y como se me fue la cabeza con el asunto , terminé publicando un hilo con el proceso más detallado.

http://www.retrowiki.es/viewtopic.php?f ... p200100845

Pues no recuerdo haber visto el enlace en su día, pero visto, hacemos lo mismo pero yo uso el Omnicopy para ver las direcciones de carga de los bloques y su tamaño.

Por desgracia, mucho no funcionan una vez pasados a disco, e ignoro el motivo.
No se si al cargar de disco, hay "algo" del modo +3 que hace que la memoria no sea exactamente igual... -banghead
Buscando la IP de la W.O.P.R. he encontrado mi índice

BlackHole
Mensajes: 1694
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 34 veces
Agradecimiento recibido: 534 veces

Re: HELP-6: Comandos OS Spectrum +3

Mensajepor BlackHole » 21 Oct 2019 13:02

Claro que la memoria no es igual. De eso ya hablamos hace unos años cuando lo preguntaste.

En los equipos 128K hay más memoria baja dedicada a variables del sistema, los CLEAR pueden dejar demasiado poca memoria libre como para forzar un error "4 Out of memory". Los 256 bytes del buffer de impresora que están vacíos en 48K, también son usados en equipos 128K. Pero es que ni siquiera la organización es igual entre el +3 y el resto de equipos de 128K, porque una de las páginas conmutables (creo que la 7) se usa para los buffers del +3DOS. Por eso en esos casos, hay que empezar a tirar de código máquina para mover bloques a otras zonas antes de activar esa página, o usar compresores.

Los +3 tienen más variables del sistema: http://www.hnilica.cz/radek/zim/Old_Computers/Sinclair_ZX_Spectrum_+3/System_Variables.html

También el +3 permite un modo de 64K de RAM completos, desactivando las ROM. Hay variables del sistema y OUTs específicos para ello, que quizás (ya sería mala casualidad) algún juego de 128K antiguo hubiese podido utilizar, hay que tenerlo en cuenta.

dancresp
Mensajes: 6271
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Agradecido : 711 veces
Agradecimiento recibido: 1059 veces

Re: HELP-6: Comandos OS Spectrum +3

Mensajepor dancresp » 21 Oct 2019 13:57

BlackHole escribió:Claro que la memoria no es igual. De eso ya hablamos hace unos años cuando lo preguntaste.

Será la edad, pero no lo recuerdo.

BlackHole escribió:Ni siquiera es igual entre el +3 y el resto de equipos de 128K porque una de las páginas se usa para el +3DOS, y en los anteriores no.

Eso ya lo he visto, pasando el "Fred". Ocupa un único bloque de unos 30 KB, que empieza justo en la memoria de vídeo. Al acabar la carga de la pantalla se colgaba el ordenador.

Solución: Cargué el bloque en una dirección superior y después grabé un bloque más pequeño, sin la pantalla de carga ni parte de las variables de sistema, las que usa el +3. Con esto, funciona perfectamente.

Poco a poco voy pasando juegos, y aprendiendo cosillas.
Buscando la IP de la W.O.P.R. he encontrado mi índice

BlackHole
Mensajes: 1694
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 34 veces
Agradecimiento recibido: 534 veces

Re: HELP-6: Comandos OS Spectrum +3

Mensajepor BlackHole » 21 Oct 2019 14:28

Has respondido mientras estaba editando mi mensaje anterior. A donde quería llegar es que no solo hay diferencias entre los 48K y los equipos posteriores, sino que también hay diferencias entre el +3 y los otros 128K por el uso de determinadas páginas de memoria cuando funciona el disco. También hay que tenerlo mucho en cuenta si intentas volcar juegos de 128K. Sé que tú eres un maestro del BASIC, pero a veces hay que tirar de las órdenes LDIR/LDDR en rutinas de código máquina para poder mover bien las cosas.

dancresp
Mensajes: 6271
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Agradecido : 711 veces
Agradecimiento recibido: 1059 veces

Re: HELP-6: Comandos OS Spectrum +3

Mensajepor dancresp » 21 Oct 2019 15:29

BlackHole escribió:Has respondido mientras estaba editando mi mensaje anterior. A donde quería llegar es que no solo hay diferencias entre los 48K y los equipos posteriores, sino que también hay diferencias entre el +3 y los otros 128K por el uso de determinadas páginas de memoria cuando funciona el disco. También hay que tenerlo mucho en cuenta si intentas volcar juegos de 128K. Sé que tú eres un maestro del BASIC, pero a veces hay que tirar de las órdenes LDIR/LDDR en rutinas de código máquina para poder mover bien las cosas.

Me estoy limitando a unos pocos clásicos de 16 KB y 48 KB.
Con dos o tres discos de juegos y utilidades me doy por satisfecho.

A esto hay que añadir que lo que hago lo grabo por duplicado en dos discos distintos, ya que los formateas y cuando menos te esperas te da un error de disco. Ay los años !!!
Buscando la IP de la W.O.P.R. he encontrado mi índice


Volver a “Software Spectrum”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado