Nuevo proyecto RetroWiki: CP/M en ZX Spectrum 48k/128k

Avatar de Usuario
VooD
Mensajes: 931
Registrado: 11 Abr 2011 22:19
Ubicación: Málaga
Agradecido : 12 veces
Agradecimiento recibido: 54 veces

Re: Nuevo proyecto RetroWiki: CP/M en ZX Spectrum 48k/128k

Mensajepor VooD » 12 Jul 2012 01:56

Último mensaje de la página anterior:

ron escribió:Si quieres un CP/M68K, el mismo TOS del Atari ST es CP/M68K. jejejeje de hecho finalmente conseguí el programa de consola para usar el TOS con comandos.

¿Seguro? Juraría haber leído que al principio lo estaban utilizando, pero que luego decidieron usar otra cosa.
Yo también tenía por ahí una shell para Atari ST, pero para mí que estaba implementada desde 0, además creo que jamás pude probar ningún programa en modo texto con ella :(

Mmm, acabo de mirar en la Wikipedia inglesa y dicen que al final hicieron un OS nuevo (supongo que algo de cp/m aprovecharían), con soporte para subdirectorios y llamadas: GEMDOS.

Aunque lo que me ha dejado con el culo torcío ha sido esto:

Idris

No tenía ni la más mínima idea de que algo así existiera para Atari ST desde tan temprano.

mcleod_ideafix
Mensajes: 925
Registrado: 13 Ene 2012 09:45

Re: Nuevo proyecto RetroWiki: CP/M en ZX Spectrum 48k/128k

Mensajepor mcleod_ideafix » 12 Jul 2012 03:57

ferix escribió:Ya, por eso mismo preguntaba. Si se detecta un acceso a memoria y no se activa MREQ, quiere decir que es la ULA la que accede a ella... o así lo entiendo yo.


Sí, así es. Lo que pasa es que por una parte las señales RAS y CAS de la VRAM, que son las que necesitarías para detectar accesos a la memoria de pantalla, no están accesibles en el bus trasero.

Pero... aun en el caso de que pudieras detectar esos accesos... ¿de qué te serviría?
Cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista.

Avatar de Usuario
ferix
Mensajes: 1009
Registrado: 28 May 2012 21:01
Agradecimiento recibido: 8 veces

Re: Nuevo proyecto RetroWiki: CP/M en ZX Spectrum 48k/128k

Mensajepor ferix » 12 Jul 2012 10:43

Pues la verdad, todavía no lo se... :P

Estoy viendo la forma de engañar a la cpu para poder mapear ram en la zona del buffer de pantalla, y poder intercambiar entre el buffer y la ram mapeada, pero para eso necesito averiguar como funciona todo. !swee

Avatar de Usuario
FloppySoftware
Mensajes: 220
Registrado: 21 Oct 2016 15:10
Agradecido : 35 veces
Agradecimiento recibido: 39 veces
Contactar:

Re: Nuevo proyecto RetroWiki: CP/M en ZX Spectrum 48k/128k

Mensajepor FloppySoftware » 12 Jul 2012 16:32

Hola,

El código fuente en C de CP/M 68K está disponible en la web no oficial de CP/M.

No es ANSI C, más bien K&R C, pero ahí está.

Saludos.
Developing software since 1987 - http://www.floppysoftware.es

mcleod_ideafix
Mensajes: 925
Registrado: 13 Ene 2012 09:45

Re: Nuevo proyecto RetroWiki: CP/M en ZX Spectrum 48k/128k

Mensajepor mcleod_ideafix » 12 Jul 2012 17:59

ferix escribió:Estoy viendo la forma de engañar a la cpu para poder mapear ram en la zona del buffer de pantalla, y poder intercambiar entre el buffer y la ram mapeada, pero para eso necesito averiguar como funciona todo. !swee


Puedes poner SRAM en la zona de pantalla y que la CPU la lea y la escriba. De hecho, cualquier memoria que sea accesible por la CPU desde el slot trasero tendrá prioridad a la hora de entregar sus datos a la misma.

Dicho de otra forma: si pones una SRAM en el slot trasero de forma que se active cuando la CPU accede al rango de la VRAM, la CPU siempre leerá de esa SRAM y no de la VRAM.

Peeeeeeeero en escritura, el dato escrito irá tanto a la SRAM como a la VRAM. Si fuera posible inhibir a la VRAM cuando se hacen escrituras, lo tendrías todo arreglado, pero no es así (salvo que abras el Spectrum y trastees un poco dentro de él)

La otra solución es la que tú ya conoces, es decir, forzar A15 para que valga 1 cuando la CPU haga un acceso a la VRAM, pero eso, aparte del espacio desaprovechado, estresa al pin A15 del micro, ya que si el Z80 lo pone a 0 (0 voltios) y tú le metes 5V para forzarlo a 1, el transistor NMOS que haya a la salida de ese pin está siendo cortocircuitado entre +5V y masa, y eso, a la larga (o a la corta) se cargará ese transistor inutilizando al procesador.
Cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista.

Avatar de Usuario
ferix
Mensajes: 1009
Registrado: 28 May 2012 21:01
Agradecimiento recibido: 8 veces

Re: Nuevo proyecto RetroWiki: CP/M en ZX Spectrum 48k/128k

Mensajepor ferix » 12 Jul 2012 18:17

Yap, por eso mismo buscaba otra solución...

mcleod_ideafix
Mensajes: 925
Registrado: 13 Ene 2012 09:45

Re: Nuevo proyecto RetroWiki: CP/M en ZX Spectrum 48k/128k

Mensajepor mcleod_ideafix » 12 Jul 2012 19:09

Pues a falta de una solución mejor, te propongo ésta, que dista mucho de ser la ideal porque hay que hurgar dentro de la máquina, pero si se obvia ese "pequeño detalle" no está mal :) :

La idea consiste en poder inhibir la escritura en la VRAM desde un periférico externo, usando un método similar a cómo se inhibe la ROM con la señal ROMCS.

Vamos a llamar a nuestra nueva señal VRAMWE. Hay que buscar algún pin en el slot trasero para llevar esta señal hasta él. El pin B28 está libre.

Para generar esta señal:
- Hay que cortar la pista que sale desde el pin 4 de la ULA. Esta señal es la de escritura a la VRAM.
- Restituimos la pista cortada, pero no con un cable, sino con una resistencia de 330 ohmios. Ahora, la señal del pin 4 de la ULA está unida de nuevo a la VRAM mediante esta resistencia.
- Del extremo de la resistencia que está unida a la VRAM, lleva un cablecillo hasta B28 en el slot trasero: nuestra nueva señal VRAMWE.

Ya está: ahora, cada vez que pongas +5V en VRAMWE, estarás impidiendo que una escritura en la zona de memoria 4000h-7FFFh afecte a la VRAM. Si pones memoria SRAM en el slot trasero mapeada en ese mismo espacio, las escrituras irán exclusivamente a ella.

Para poder volver a usar la VRAM sólo es necesario desactivar la SRAM y volver a dejar desconectada (en alta impedancia) la señal VRAMWE.

De esta forma puedes tener 16K de SRAM mapeadas en el espacio de memoria de pantalla, y desde la lógica de la interfaz, decidir cuándo la CPU está accediendo a la memoria de pantalla (cosa que sólo debería hacerse en la BIOS, para escribir caracteres) y cuándo la CPU accede a la SRAM externa (el resto del tiempo).

La ULA no escribe en la VRAM, por lo que estas conmutaciones no le afectan en absoluto para seguir generando la pantalla ni para refrescar la memoria.
Cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista.

Avatar de Usuario
ferix
Mensajes: 1009
Registrado: 28 May 2012 21:01
Agradecimiento recibido: 8 veces

Re: Nuevo proyecto RetroWiki: CP/M en ZX Spectrum 48k/128k

Mensajepor ferix » 12 Jul 2012 19:17

Hmmm... a ver, como solución es factible...
El problema es que no me gusta tener que andar modificando ninguna máquina...

De todos modos, tampoco la descarto.


Avatar de Usuario
ron
Mensajes: 18440
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 1608 veces
Agradecimiento recibido: 1337 veces

Re: Nuevo proyecto RetroWiki: CP/M en ZX Spectrum 48k/128k

Mensajepor ron » 12 Jul 2012 20:53

McLeod, ¿ existe alguna posibilidad de refinar / depurar tu idea sin tener que realizar ninguna modificación en la máquina ? , lo digo por aquello de no tener que tocarla como dice ferix, ojalá se pueda sin problema.

Por otro lado, muchas gracias por los comentarios y la maestría estoy aprendiendo cosas no imaginadas, me encanta.

Saludos y gracias ! ! !

mcleod_ideafix
Mensajes: 925
Registrado: 13 Ene 2012 09:45

Re: Nuevo proyecto RetroWiki: CP/M en ZX Spectrum 48k/128k

Mensajepor mcleod_ideafix » 12 Jul 2012 21:06

Para el 48K "de toda la vida" la única cosa que se me ocurre es que la tarjeta externa contenga... ¡otro Z80A! que inhibiría al original usando las señales BUSRQ y BUSAK presentes en el slot de expansión. En la interfaz que se pusiera en dicho slot ya podrías poner la ROM de arranque, y toda la RAM que quisieras, incluyendo la lógica para "ensombrecer" a la RAM de video cuando te conviniera.

Vamos, algo parecido a lo que hace el C128 y el Apple II para poder correr CP/M, aunque en este caso parezca redundante tener otro Z80A cuando la máquina original ya corre en ese mismo procesador.
Cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista.

Avatar de Usuario
flopping
Mensajes: 2311
Registrado: 26 Jun 2011 17:50
Agradecido : 1 vez
Agradecimiento recibido: 39 veces

Re: Nuevo proyecto RetroWiki: CP/M en ZX Spectrum 48k/128k

Mensajepor flopping » 12 Jul 2012 21:15

Para que lo entiedan mejor los no inciados en esto de la electronica.

Vamos que seria casi duplicar medio ordenador en un interface externo, Z80, VRam, Rom y logica de control, ¿correcto?.

No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, por la esquizofrenia paranoide que padezco.
(C) 1982-2019, 37 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente".

mcleod_ideafix
Mensajes: 925
Registrado: 13 Ene 2012 09:45

Re: Nuevo proyecto RetroWiki: CP/M en ZX Spectrum 48k/128k

Mensajepor mcleod_ideafix » 12 Jul 2012 21:39

Sí. Concretamente, sería duplicar el procesador, la ROM y la RAM que se solaparía en las direcciones de la VRAM.

La propia VRAM, y la RAM por encima de 8000h sería la original del Spectrum.

Como decía, es poco más o menos lo que hay en la tarjeta de CP/M para Apple II, o parte del esquemático del C128.

Esto me recuerda que eso de usar un Z80A "extra" no es la primera vez que se usa en el Spectrum. Sin ir más lejos, hace un tiempo conseguí un interfaz "Microcommand" para Spectrum, que permite usar comandos de voz para dar órdenes al ordenador (casi ná). Cuando lo abrí encontré...
http://www.speccy.org/foro/viewtopic.php?f=8&t=2052
Cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista.

Avatar de Usuario
flopping
Mensajes: 2311
Registrado: 26 Jun 2011 17:50
Agradecido : 1 vez
Agradecimiento recibido: 39 veces

Re: Nuevo proyecto RetroWiki: CP/M en ZX Spectrum 48k/128k

Mensajepor flopping » 12 Jul 2012 22:58

Si, yo tengo otro igual y como bien dices, me ha recordado el tema a ese interface, bastante curioso por cierto.
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, por la esquizofrenia paranoide que padezco.
(C) 1982-2019, 37 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente".

Avatar de Usuario
ferix
Mensajes: 1009
Registrado: 28 May 2012 21:01
Agradecimiento recibido: 8 veces

Re: Nuevo proyecto RetroWiki: CP/M en ZX Spectrum 48k/128k

Mensajepor ferix » 13 Jul 2012 19:57

Hmm... la cosa se pone chunga... pero no me doy por vencido.

Voy a estudiar más a fondo el tema, que seguro que alguna solución tenemos.

Avatar de Usuario
FloppySoftware
Mensajes: 220
Registrado: 21 Oct 2016 15:10
Agradecido : 35 veces
Agradecimiento recibido: 39 veces
Contactar:

Re: Nuevo proyecto RetroWiki: CP/M en ZX Spectrum 48k/128k

Mensajepor FloppySoftware » 13 Jul 2012 20:16

Quizás se pueda hacer, engañando a CP/M sobre el agujero en la TPA.

Eso sí, ningún programa de usuario debería cargar sobre 0x4000, lo que deja la TPA en +/- 16KB.

No se puede crear un CP/M 2 con menos de 20KB de memoria
según el manual:

"CP/M can be easily altered to
execute with any computer configuration that uses a Zilog Z80 or an Intel 8080 Central
Processing Unit (CPU) and has at least 20K bytes of main memory with up to 16 disk drives."
Developing software since 1987 - http://www.floppysoftware.es

Avatar de Usuario
FloppySoftware
Mensajes: 220
Registrado: 21 Oct 2016 15:10
Agradecido : 35 veces
Agradecimiento recibido: 39 veces
Contactar:

Re: Nuevo proyecto RetroWiki: CP/M en ZX Spectrum 48k/128k

Mensajepor FloppySoftware » 14 Jul 2012 00:11

¿Habéis visto esto?

http://www.worldofspectrum.org/infoseekid.cgi?id=0023809

CP/M 2.2 for the LEC Memory Extension
[tzx]


Full title CP/M 2.2 for the LEC Memory Extension
Year of release 1987
Publisher Jiri Lamac (Czech)
Author(s) Jiri Lamac
Machine type ZX Spectrum 48K
Number of players 1
Controls Keyboard
Type Programming: General
Message language English
Original publication Freeware
Availability Available
Protection scheme None
Remarks Requires the LEC Memory Extension.
Developing software since 1987 - http://www.floppysoftware.es

Avatar de Usuario
flopping
Mensajes: 2311
Registrado: 26 Jun 2011 17:50
Agradecido : 1 vez
Agradecimiento recibido: 39 veces

Re: Nuevo proyecto RetroWiki: CP/M en ZX Spectrum 48k/128k

Mensajepor flopping » 14 Jul 2012 00:31

Si, ya apareció en otro hilo, creo que es el software de esto:

http://allan.hoiberg.dk/eng/zx/
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, por la esquizofrenia paranoide que padezco.
(C) 1982-2019, 37 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente".


Volver a “Desarrollos y Proyectos RW”

¿Quién está conectado?

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