CPM para spectrum +3 Donde conseguirlo?

(Casi) cualquier cosa que quieras compartir será bienvenida por la comunidad

Moderador: Sir Cilve Sinclair

Spectrum009
rst 0
Mensajes: 1
Registrado: Vie Jul 24, 2009 11:10 pm

CPM para spectrum +3 Donde conseguirlo?

Mensaje por Spectrum009 » Vie Jul 24, 2009 11:18 pm

Buenas noches.
Me presento como nuevo en éste foro.
No se si será este el mejor lugar para preguntar ésto, pero. Estoy buscando el CP/M para Spectrum +3.
He buscado mucho en internet, pero para spectrum, nada, para AMSTRAD,ATARI, COMMODORE y demás, hay información e imagenes de disco a patadas, pero no he encontrado nada.
Se que existe porque he visto a mas de uno en su dia, copiar discos con el DISC KIT-

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: CPM para spectrum +3 Donde conseguirlo?

Mensaje por mcleod_ideafix » Sab Jul 25, 2009 4:17 am

Así en un primer "googlazo" he encontrado esta reseña:
http://www.secarica.ro/html/cp_m_plus_for_plus3.html
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
zxbruno
Freddy Hardest
Mensajes: 586
Registrado: Dom Jun 03, 2007 3:28 am
Ubicación: Anaheim, California, USA

Re: CPM para spectrum +3 Donde conseguirlo?

Mensaje por zxbruno » Sab Jul 25, 2009 8:51 am

La unica forma de conseguirlo es comprándolo de la compañia que lo sigue vendiendo:

http://www.locoscript.ukf.net/cpm.htm

Es por ese motivo que no se encuentra en ningún site de Spectrum. Yarek tiene CP/M disponible para download, pero creo que se trata unicamente de la versión de Timex y otras versiones modificadas por Yarek.

edit: El manual se puede encontrar aquí:

http://www.worldofspectrum.org/Plus3CPM ... intro.html

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: CPM para spectrum +3 Donde conseguirlo?

Mensaje por mcleod_ideafix » Mié Sep 02, 2009 8:24 pm

Lo pedí hace unas semanas y ya ha llegado! Pedí el "pack completo" por decirlo de alguna forma: 3 disquetes con el CP/M Plus, Mallard BASIC (ficheros indexados en el Spectrum!!), una colección de juegos (todos en BASIC) y utilidades (aún no he visto qué trae).

Este es el paquete completo, con el CP/M ya corriendo un un +3
Imagen

Y esta es la pantalla de arranque del susodicho CP/M :)
Imagen
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
na_th_an
Nonamed
Mensajes: 1889
Registrado: Lun May 07, 2007 10:16 am
Ubicación: Andalucía

Re: CPM para spectrum +3 Donde conseguirlo?

Mensaje por na_th_an » Jue Sep 03, 2009 9:17 am

Ponnos pantallazos del Mallard Basic, please :)

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: CPM para spectrum +3 Donde conseguirlo?

Mensaje por mcleod_ideafix » Jue Sep 03, 2009 10:19 am

El Mallard BASIC? Pues anda que no es aburrido ni ná ese BASIC (ni un PLOT ni un CIRCLE ni ná. Eso sí, MID$, OPEN# y demás sí que tiene). ¿Qué tipo de pantallazo quieres?

Este, por ejemplo, es del momento en que, nada más arrancar el CP/M, cargo el BASIC y sale su pantalla de presentación. Lo he hecho ya desde el Spectaculator, después de haber transferido todos los discos a formato DSK (y guardar los originales a buen recaudo):
Imagen

Como ves, no es nada espectacular. Se parece a lo saldría en el GW BASIC, o el BASIC de IBM...

Igual lo que tú buscas es algo como esto. Un cacho de listado de BASIC, de un programa que se encarga de modificar un archivo binario añadiendo no-sé-qué checksum (viene en el disco de utilidades de programación y por lo visto forma parte del tool chain para crear drivers para CP/M):
Imagen

Y esto otro es un chorriprograma que he escrito, a base de lo de siempre: DATA, READ y POKE, para meter C/M en un programa. Obviamente, en CP/M no hay protección de tareas, y uno puede hacer lo que le dé la gana. En este caso, desactivo el modelo de memoria que usa CP/M (all-RAM) y vuelvo a la ROM 0. Acto seguido, hago un JP 0, para resetear el equipo y volver el menú.
De aquí lo más curioso quizás sea el uso de una variable del sistema (de BASIC) llamada HIMEM, la cual podemos consultar para saber cuál es la dirección máxima de memoria disponible para el BASIC, o cambiarla, para reservar memoria para nuestras rutinas de C/M. Como sé que HIMEM ronda el 65000 y pico, y me interesa que mi rutina no esté en el rango C000-FFFF, pues bajo más de 16K para asegurarme esto, y ahí pongo mi nuevo HIMEM. La rutina se pokea a partir de la siguiente dirección (HIMEM+1) y con CALL la llamo. Otra cosa curiosa es que no puedes hacer cosas como CALL 0 ó CALL 1234 (o cualquier número). El argumento de CALL con la dirección de la rutina debe ser una variable.
Imagen
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
zxbruno
Freddy Hardest
Mensajes: 586
Registrado: Dom Jun 03, 2007 3:28 am
Ubicación: Anaheim, California, USA

Re: CPM para spectrum +3 Donde conseguirlo?

Mensaje por zxbruno » Jue Sep 03, 2009 11:26 am

Wow! ¡Gracias por estas pantallas! Se me hace raro que nunca se haya hablado de esto en Microhobby u otras revistas. :(

Algunas preguntas:

Al correr el cp/m, ¿se pierde el "contacto" con el Spectrum, en efecto transformándolo en otro ordenador? ¿Que cosas siguen disponibles aparte de las rutinas de bajo nível de control de disco?

Los discos de 3" del Timex FDD de Portugal son, según John Elliot, compatibles con el formato cp/m. ¿Es posible que esa versión de cp/m sea un paso hacía una posible emulación del Timex FDD y lectura de sus discos sin necesidad del interface original? Los discos que tengo no contienen programas para cp/m, sino Basic y codigo maquina, pero la estructura de los discos sigue siendo tipo cp/m. Hasta ahora no existe emulación del Timex FDD pero siempre he tenido esperanzas de que se pueda hacer algo en un +3, pues tiene suficiente memoria para emular el Timex TOS. John Elliot me hizo el favor de crear una utilidad para convertir mis backups de discos (hechos por José Manuel) en archivos .DSK, pero hay programas que no quieren funcionar.

Muchas gracias por mostrarnos esto.

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: CPM para spectrum +3 Donde conseguirlo?

Mensaje por mcleod_ideafix » Jue Sep 03, 2009 11:40 am

zxbruno escribió:Al correr el cp/m, ¿se pierde el "contacto" con el Spectrum, en efecto transformándolo en otro ordenador? ¿Que cosas siguen disponibles aparte de las rutinas de bajo nível de control de disco?

No hay nada de la ROM original disponible, ni siquiera las rutinas de bajo nivel del disco. Todo el sistema operativo corre en RAM, y de hecho, la máquina se pone en modo all-RAM. CP/M es un SO para muchas plataformas basadas en Z80A, lo que significa que la plataforma en sí se "despersonaliza" en favor del SO, que cumple su función: aislar las peculiaridades del hardware a los programas y al usuario. Algunas de las utildiades y programas ni siquiera están escritos ex-profeso para el Spectrum sino que son las que Amstrad hizo para su CPC o para el PCW. Tengo que probar, a ver si puedo, algunas utilidades que vienen en los discos de CP/M del Commodore 128.

zxbruno escribió:Los discos de 3" del Timex FDD de Portugal son, según John Elliot, compatibles con el formato cp/m. ¿Es posible que esa versión de cp/m sea un paso hacía una posible emulación del Timex FDD y lectura de sus discos sin necesidad del interface original?

No sé de qué va esa cuestión, pero si son discos de 3'' como los de Amstrad, y el formato es efectivamente, CP/M, hay muchas probabilidades de que se puedan leer y escribir correctamente desde el CP/M del +3, pero de todas formas, para manejar discos de 3'' con formato CP/M no te hace falta tener CP/M en el Spectrum: el +3DOS es compatible con discos CP/M. Puedes usar las órdenes del +3BASIC para listar, copiar, borrar, etc. ficheros CP/M. Lo que no podrás hacer, desde +3DOS, es ejecutar las aplicaciones .COM que haya en el disco.
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
winston
Sabreman
Mensajes: 469
Registrado: Mar Ago 19, 2008 4:17 pm
Ubicación: Isla de Man
Contactar:

Re: CPM para spectrum +3 Donde conseguirlo?

Mensaje por winston » Jue Sep 03, 2009 1:26 pm

He estado pensando en cómo se podría funcionar el Spectranet desde CP/M. El problema es que CP/M usa el modo "allram" - por eso, no puedo paginar la memoria del Spectranet - por lo menos, no puedo paginar la memoria fácilmente...

Lo que me ocurrió es que si los programas de CP/M corren en memoria superior de la dirección 0x4000, sería posible hacer una librería de "stubs" que cambie la página entre 0x0000-0x3FFF - es decir, "mapear" la ROM. Entonces, el "stub" puede llamar a las rutinas del Spectranet, y luego "remapear" la página original. (¡Espero que tenga sentido!)

También, una cosa que me gustaría saber: Supongo que la pantalla de CP/M del Spectrum no es 80 columnas. ¿Cómo funcionan las programas para CP/M que no se escribieran para el Spectrum? (¡Y me gusta el font que lleva CP/M del Speccy!)
Tarjeta ethernet para el Spectrum - http://spectrum.alioth.net/doc

Debemos practicar un quirkafleeg

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: CPM para spectrum +3 Donde conseguirlo?

Mensaje por mcleod_ideafix » Jue Sep 03, 2009 7:26 pm

winston escribió:Lo que me ocurrió es que si los programas de CP/M corren en memoria superior de la dirección 0x4000, sería posible hacer una librería de "stubs" que cambie la página entre 0x0000-0x3FFF - es decir, "mapear" la ROM. Entonces, el "stub" puede llamar a las rutinas del Spectranet, y luego "remapear" la página original. (¡Espero que tenga sentido!)


No estoy seguro de dónde se alojan los programas CP/M en el Spectrum. Se supone que se alojan a partir de la dirección 100h (por aquello de que todos comienzan con un ORG 100h, y que yo sepa, un .COM no tiene información de reubicación en el fichero). De hecho, la tabla de saltos del BDOS está en las primeras posiciones de memoria, aunque muchos de esos saltos refieren a posiciones bastante altas de la memoria (del tipo Fxxxx)

Dado que en un sistema CP/M, por lo general, sólo se ejecuta un programa al tiempo, puede que sea más sencillo crear una librería con todo lo que normalmente habría en la ROM del Spectranet, y linkarla a los programas que la necesiten.

Otra idea, suponiendo que en CP/M existan los programas TSR (Terminate and Stay Resident) y que dichos programas sí se alojen en la zona alta de memoria, es hacer la librería de stubs ahí.

winston escribió:También, una cosa que me gustaría saber: Supongo que la pantalla de CP/M del Spectrum no es 80 columnas. ¿Cómo funcionan las programas para CP/M que no se escribieran para el Spectrum? (¡Y me gusta el font que lleva CP/M del Speccy!)


Pues de una forma muy particular. Desde la consola puedes configurar (mediante un pequeño programa, o una secuencia de escape que envías desde el teclado) si vas a trabajar con 32, 51 u 80 columnas. En el caso de trabajar con 80 columnas, el Spectrum te muestra la mitad de ella, con los primeros 51 caracteres. Si pulsas CTRL-ENTER (CTRL es la tecla EXT MODE) el Spectrum conmuta a la otra mitad de la pantalla, donde se te muestran las últimas 51 columnas.

Hay otra secuencia de escape que permite que esta conmutación sea automática y siempre te muestre el lado de la pantalla donde se encuentre el cursor en cada momento, pero como hay veces que una aplicación CP/M escribe en pantalla sin usar el cursor, se proporcionan esos dos atajos de teclado para que el usuario realice la conmutación manual.

Todo esto se puede activar o desactivar a voluntad. O incluso puedes trabajar con 51 o 32 columnas. En este último caso, los programas que usen secuencias de escape para posicionar el cursor en una fila y columnas concretas funcionarán mal, pero los que usen salida tipo "teletipo" no se verán afectados.
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
winston
Sabreman
Mensajes: 469
Registrado: Mar Ago 19, 2008 4:17 pm
Ubicación: Isla de Man
Contactar:

Re: CPM para spectrum +3 Donde conseguirlo?

Mensaje por winston » Jue Sep 03, 2009 8:29 pm

mcleod_ideafix escribió:Dado que en un sistema CP/M, por lo general, sólo se ejecuta un programa al tiempo, puede que sea más sencillo crear una librería con todo lo que normalmente habría en la ROM del Spectranet, y linkarla a los programas que la necesiten.


El Spectranet es un poco diferente que la mayoría del dispositivos para el Spectrum porque se usa 'memory mapping' en vez de puertos de E/S. Por eso, es necesario paginar la memoria del Spectranet para enviar datos a través de la red.

Si mal no recuerdo, muchos ordenadores que corrieran CP/M no tuvieran un "frame buffer", es decir, la pantalla en memoria estándar (usando puertos E/S para escribir cosas en la pantalla). Dado que el Spectrum tiene un "frame buffer" entre 0x4000 y 0x5800 - y dado que los programas se ubican desde 0x0100 - si yo escribiera un programa en código maquina ¿qué tendría que hacer si el programa necesitase más de 16K? ¿Y los programas que estuvieran escribido para CP/M en otros ordenadores...?

Ufff.... y ahora, tengo que comprar CP/M para descubrir lo que pasa... :-) (Pero...tengo que acabar con el Spectranet...tengo que acabar con el Spectranet...tengo... etc. Hay demasiados proyectos otra vez :-) )
Tarjeta ethernet para el Spectrum - http://spectrum.alioth.net/doc

Debemos practicar un quirkafleeg

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: CPM para spectrum +3 Donde conseguirlo?

Mensaje por mcleod_ideafix » Jue Sep 03, 2009 9:56 pm

winston escribió:Si mal no recuerdo, muchos ordenadores que corrieran CP/M no tuvieran un "frame buffer", es decir, la pantalla en memoria estándar (usando puertos E/S para escribir cosas en la pantalla). Dado que el Spectrum tiene un "frame buffer" entre 0x4000 y 0x5800 - y dado que los programas se ubican desde 0x0100 - si yo escribiera un programa en código maquina ¿qué tendría que hacer si el programa necesitase más de 16K? ¿Y los programas que estuvieran escribido para CP/M en otros ordenadores...?

Fácil: CP/M usa la shadow screen, lo que significa que no tienes que preocuparte a menos que tu programa quiera usar direcciones de la C000 en adelante. De todas formas, puede que sea más complejo que eso.

winston escribió:(Pero...tengo que acabar con el Spectranet...tengo que acabar con el Spectranet...tengo... etc. Hay demasiados proyectos otra vez :-) )

Esa sensación me es familiar :D
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
na_th_an
Nonamed
Mensajes: 1889
Registrado: Lun May 07, 2007 10:16 am
Ubicación: Andalucía

Re: CPM para spectrum +3 Donde conseguirlo?

Mensaje por na_th_an » Vie Sep 04, 2009 11:59 am

Gracias por las pantallas. Por lo que veo, el lenguaje estaba muy orientado a crear aplicaciones de consola.

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: CPM para spectrum +3 Donde conseguirlo?

Mensaje por mcleod_ideafix » Vie Sep 04, 2009 2:14 pm

Sí. De hecho el CP/M usa al BASIC como lenguaje de scripting. El pantallazo que te pasé corresponde a una utilidad que en lugar de estar compilada como .COM es un programa en BASIC. Y no es el único. El editor RPED, el único editor de pantalla completa que se suministra con este CP/M es otro programa en BASIC (el ED también está presente, y es compilado, pero es un editor de lineas). RPED está en lo que se denomina "BASIC protegido". Si cargas RPED desde el BASIC con LOAD "RPED e intentas hacer un LIST no te deja. Lo que sí puedes hacer es RUN.

Para manejar gráficos hay dos opciones: o lo haces desde C/M usando DATA/READ/POKE/CALL, muy al estilo de lo que harías habitualmente con el Spectrum, o usas secuencias de escape que te permitan imprimir caracteres gráficos, o dibujar lineas. En el caso del PCW trabajando en CP/M había unas extensiones que se llamaban GSX y eran nuevas llamadas al BDOS para trabajar con gráficos. El DR LOGO que viene en el CP/M de los PCW trabaja así, y claro! al intentar correrlo en el +3 da un mensaje de "Environment not valid" o algo así.

En cuanto al sonido, lo tienes limitado al "beep" que se produce al hacer PRINT CHR$(7), o pulsar Ctrl-G en la consola.
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
na_th_an
Nonamed
Mensajes: 1889
Registrado: Lun May 07, 2007 10:16 am
Ubicación: Andalucía

Re: CPM para spectrum +3 Donde conseguirlo?

Mensaje por na_th_an » Mar Sep 08, 2009 9:32 am

mcleod_ideafix escribió:Sí. De hecho el CP/M usa al BASIC como lenguaje de scripting. El pantallazo que te pasé corresponde a una utilidad que en lugar de estar compilada como .COM es un programa en BASIC. Y no es el único. El editor RPED, el único editor de pantalla completa que se suministra con este CP/M es otro programa en BASIC (el ED también está presente, y es compilado, pero es un editor de lineas). RPED está en lo que se denomina "BASIC protegido". Si cargas RPED desde el BASIC con LOAD "RPED e intentas hacer un LIST no te deja. Lo que sí puedes hacer es RUN.

Para manejar gráficos hay dos opciones: o lo haces desde C/M usando DATA/READ/POKE/CALL, muy al estilo de lo que harías habitualmente con el Spectrum, o usas secuencias de escape que te permitan imprimir caracteres gráficos, o dibujar lineas. En el caso del PCW trabajando en CP/M había unas extensiones que se llamaban GSX y eran nuevas llamadas al BDOS para trabajar con gráficos. El DR LOGO que viene en el CP/M de los PCW trabaja así, y claro! al intentar correrlo en el +3 da un mensaje de "Environment not valid" o algo así.

En cuanto al sonido, lo tienes limitado al "beep" que se produce al hacer PRINT CHR$(7), o pulsar Ctrl-G en la consola.


Por lo que veo, está concebido y funciona de una forma muy parecida al viejo GW-BASIC (BASICA) que Microsoft incluía en las primeras versiones de MS-DOS, incluso lo del "BASIC protegido" :)

Responder

¿Quién está conectado?

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