Bueno pues hoy he conseguido un "avance" o eso creo yo, el hecho es que he cogido un 464 y le he quitado el Cassete...
Desde los pines que llegan del cassete, que son unos 7, datos de entrada y salidad, he conseguido meter datos desde el cassete "inexistente" al arduino...
Simplemente haciendo un Save"a", ya he visto una ristra de -1, 170 y en alguna parte empiezan a cambiar rápidamente esté número hasta que llega a -1 que es cuando termina de hacer el sonído tipico...
El tema que me pregunto que debería de funcionar pero no me ha ido es al revés, o sea enviarle al desde el Arduino al CPC...
He probado con Load "", pero no ve nada en el catálogo...
Y luego he pensado desde Basic llamar al puerto que lleva el tema del Cassete, pero curiosamente mi CPC no acepta INP o no lo he escrito bien... quizás es por la versión de Basic, ya que he probado ciertas conbinaciones...
Pues nada si ha alguién se le ocurren ideas que me lo comenté, ya que estaría la mar de majo poder grabar programillas y cargarlos como si fuese un pequeño dico duro...
Saludos!!!
Consultilla Arduino Cassete CPC 464
- mentalthink
- Amiga 2500
- Mensajes: 2840
- Registrado: 11 Abr 2010, 15:06
- Gracias dadas: 45 veces
- Gracias recibidas: 14 veces
- Joss
- Atari 1040 STf
- Mensajes: 930
- Registrado: 17 Jul 2012, 20:07
- Gracias dadas: 14 veces
- Gracias recibidas: 2 veces
Re: Consultilla Arduino Cassete CPC 464
Hace poco he estado haciendo algo parecido, pero sin Arduino y al revés: metiendo la señal desde una salida de audio de un PC al pin al que va conectado el casete. En tu caso básicamente necesitas enviarle desde el Arduino al CPC la información codificada como se encuentra codificada en una cinta de casete. Sería programarse en el Arduino un cdt2wav y que este wav lo reproduzca en el pin que va al CPC pero con los niveles adecuados se señal. En este post Entrada de audio en un 464 discutimos sobre la señal y el nivel que tiene que tener (hay un par de tomas de osciloscipio también).
- mentalthink
- Amiga 2500
- Mensajes: 2840
- Registrado: 11 Abr 2010, 15:06
- Gracias dadas: 45 veces
- Gracias recibidas: 14 veces
Re: Consultilla Arduino Cassete CPC 464
Hola Joss, pero entonces hay algo en que me confudo yo o tú... Porque yo lo que he hecho es quitarle el cassete,ok?¿, entonces a dónde va enganchado ese conector que son unos 8 pins,,, que dice data in data out, que los cables son blanco, rojo, azul, entre otros... en ese punto digamos que lo que tengo que meter es digital no?¿, o sea tensiones de 0 a 5 voltios, porque ya ha sido convertido por el ADC... o le estoy metiendo señal digital a la entrada del conversor analogico digital?¿... (La verdad que lo hizé un poco al voleo, y no he mirdado mucho el esquema del 464)...
El proposito que quiero hacer es meterle info en digital y grabarla, pero para no tener que usar cinta... no se si me explico...
PS: Me voy a mirar los esquemáticos, que me parece que me he colao...
El proposito que quiero hacer es meterle info en digital y grabarla, pero para no tener que usar cinta... no se si me explico...
PS: Me voy a mirar los esquemáticos, que me parece que me he colao...
- Joss
- Atari 1040 STf
- Mensajes: 930
- Registrado: 17 Jul 2012, 20:07
- Gracias dadas: 14 veces
- Gracias recibidas: 2 veces
Re: Consultilla Arduino Cassete CPC 464
Si quitas el conector que va del cassette a la placa no puedes encender el CPC ..... El interruptor cierra los pines 1 y 3 de la placa.
Mira esta foto de un 464 "desnudo":

Cuando dices que le has quitado el cassette, te refieres a toda la maquinaria que tengo yo encima de la caja blanca que pone Conrad?
Si te fijas bien he marcado con linea amarilla el pin 25 del PPI (8255), que es donde le envia los datos el cassette al ordenador. Desde ese pin (siguiendo la linea amarilla) hay una conexión directa a uno de los cables del conector que viene del cassette. Lo que le da el cassette a la entrada del PPI es como tu dices una señal TTL entre 0 y 5 voltios señalando ceros y unos. Sin embargo, y si aquí me equivoco me corriges, la información no está en forma de ceros y unos sino de la frecuencia, que es lo que oímos por el altavoz.
El PPI, por lo tanto el ordenador, debe de leer las frecuencias con un programa que estará escrito en el firmware del ordenador. Supongo que una transfomada de Fourier. Si quieres enviar información por ahí, debes metersela tal como la enviaría el cassette. Si no, puedes hacerlo como quieras pero tendrás que escribir en el CPC una rutina para leer esos datos. Puedes mirar que puerto es el pin 25 del PPI he intentar leerlo. Si te fijas al estar conectado directamente a un chip de la placa debes tener cuidado con lo que enchufas. Si no miras antes los esquemas te aconsejo que tengas un 464 de repuesto
, por que como te cargues algo y no te des cuenta, puedes estar dias sino semanas pensando que lo que haces no esta bien y al final es porque se ha quemado algo .... a parte de que por haberte cargado un CPC puedes ir al infierno de los Amstrad 
Mira esta foto de un 464 "desnudo":

Cuando dices que le has quitado el cassette, te refieres a toda la maquinaria que tengo yo encima de la caja blanca que pone Conrad?
Si te fijas bien he marcado con linea amarilla el pin 25 del PPI (8255), que es donde le envia los datos el cassette al ordenador. Desde ese pin (siguiendo la linea amarilla) hay una conexión directa a uno de los cables del conector que viene del cassette. Lo que le da el cassette a la entrada del PPI es como tu dices una señal TTL entre 0 y 5 voltios señalando ceros y unos. Sin embargo, y si aquí me equivoco me corriges, la información no está en forma de ceros y unos sino de la frecuencia, que es lo que oímos por el altavoz.
El PPI, por lo tanto el ordenador, debe de leer las frecuencias con un programa que estará escrito en el firmware del ordenador. Supongo que una transfomada de Fourier. Si quieres enviar información por ahí, debes metersela tal como la enviaría el cassette. Si no, puedes hacerlo como quieras pero tendrás que escribir en el CPC una rutina para leer esos datos. Puedes mirar que puerto es el pin 25 del PPI he intentar leerlo. Si te fijas al estar conectado directamente a un chip de la placa debes tener cuidado con lo que enchufas. Si no miras antes los esquemas te aconsejo que tengas un 464 de repuesto


- mentalthink
- Amiga 2500
- Mensajes: 2840
- Registrado: 11 Abr 2010, 15:06
- Gracias dadas: 45 veces
- Gracias recibidas: 14 veces
Re: Consultilla Arduino Cassete CPC 464
Perfecto, esa imagen vale más que mil palabras... Bueno el tema de quitar el cassete completo y hacer que arranque no es mucho problema si cruzas del conector del cassete el primer pin y el 3 el ordenador se queda encendido de por vida a no ser que quites la corriente o te exploten los plomillos de casa
Sobre el tema que le llega justo a esa pata, aunque no me he mirado el esquema supongo que son datos en Serie o sea de 0 y 5 voltios pero para que los entienda la CPU, o supongo que luego habrá algun chip que pasa los 8 primeros "arriba" y "abajo" en un solo computo de datos que seria una palabra.. supongo que luego eso irá alguna zona de memoria, como si fueras rellenando un array, hasta que haces el programa completo y luego al darle al run, pues rula la cosa (Aqui creo que tiene que meter la mano alguién que sepa más que yo, porque quizás esto que acabo de decir es un inventazo que no me lo creo ni yo!!! ).
Sobre el tema de meterle directamete el puerto del PPI he estado mirando en la Wikipedia, pero no me aclaro como se llama al puerto que mira el casssete cuando lee algo, supongo que desde Basic si haces un poke (el puerto que toca), y le meto algo con el arduino, en esa dirección deberia meterle algo... Si mi suposición de arriba es correcta, supongo que si vas llamando a pokes y cambiando la direccion de memoria, si consigues cargar cosas que entienda el Amstrad , ese programa se podría ejecutar haciendo Call (primera posicion en donde he puesto el primero Poke).
Por el puerto de la impresora lo veo más fácil, de hecho hicé un programa en basic, e iba rellenando un array, pero no hubo manera de hacer una sincronia que estuviera bien... Supongo que si hiciera que cuando le llegué algo al amstrad, le envié algo, y le diga, enviame otra cosa, la sincronía iría mejor... es cuestion de probar...
Por el Joystick supongo que quizás es más facil aún por el tema de poder enviar palabras casi enteras a la vez, quizás dividiendo en dos partes una word, o sea 4 bits y otros 4 y saltas a la siguiente posición de memoria, quizás no haya que complicarse mucho la vida...
Será cuestion de probar todas estas cosas...
PS: Gracias por la Imagen... Pongo unas webs que me encontrado de casualidad en franchute, pero totalmente legibles que enseñana un montón de cosas de los CPC tanto a nivel de Hardware como Soft...
Nos vemos en el Infierno de los Amstrad


Sobre el tema que le llega justo a esa pata, aunque no me he mirado el esquema supongo que son datos en Serie o sea de 0 y 5 voltios pero para que los entienda la CPU, o supongo que luego habrá algun chip que pasa los 8 primeros "arriba" y "abajo" en un solo computo de datos que seria una palabra.. supongo que luego eso irá alguna zona de memoria, como si fueras rellenando un array, hasta que haces el programa completo y luego al darle al run, pues rula la cosa (Aqui creo que tiene que meter la mano alguién que sepa más que yo, porque quizás esto que acabo de decir es un inventazo que no me lo creo ni yo!!! ).
Sobre el tema de meterle directamete el puerto del PPI he estado mirando en la Wikipedia, pero no me aclaro como se llama al puerto que mira el casssete cuando lee algo, supongo que desde Basic si haces un poke (el puerto que toca), y le meto algo con el arduino, en esa dirección deberia meterle algo... Si mi suposición de arriba es correcta, supongo que si vas llamando a pokes y cambiando la direccion de memoria, si consigues cargar cosas que entienda el Amstrad , ese programa se podría ejecutar haciendo Call (primera posicion en donde he puesto el primero Poke).
Por el puerto de la impresora lo veo más fácil, de hecho hicé un programa en basic, e iba rellenando un array, pero no hubo manera de hacer una sincronia que estuviera bien... Supongo que si hiciera que cuando le llegué algo al amstrad, le envié algo, y le diga, enviame otra cosa, la sincronía iría mejor... es cuestion de probar...
Por el Joystick supongo que quizás es más facil aún por el tema de poder enviar palabras casi enteras a la vez, quizás dividiendo en dos partes una word, o sea 4 bits y otros 4 y saltas a la siguiente posición de memoria, quizás no haya que complicarse mucho la vida...
Será cuestion de probar todas estas cosas...
PS: Gracias por la Imagen... Pongo unas webs que me encontrado de casualidad en franchute, pero totalmente legibles que enseñana un montón de cosas de los CPC tanto a nivel de Hardware como Soft...
Nos vemos en el Infierno de los Amstrad


- Joss
- Atari 1040 STf
- Mensajes: 930
- Registrado: 17 Jul 2012, 20:07
- Gracias dadas: 14 veces
- Gracias recibidas: 2 veces
Re: Consultilla Arduino Cassete CPC 464
En este post de amstrad.es KaosOverride comenta que es el bit 7 del puerto B. Lo mismo puedes buscar información de como leer puertos he intentar hacerlo. De todas formas, seguro que tienes los mismos problemas que por el puerto de impresora. Te tienes que programar el protocolo en ambos lados, para que se entiendan. Mirar lo que hacen programas como el cdt2wav creo que es mas sencillo 

- mentalthink
- Amiga 2500
- Mensajes: 2840
- Registrado: 11 Abr 2010, 15:06
- Gracias dadas: 45 veces
- Gracias recibidas: 14 veces
Re: Consultilla Arduino Cassete CPC 464
Gracias Joss, por cierto sabes de algun sitio en dónde te digan el nombre en Hex de los puertos, recuerdo que había una web que lo decia, no se si es lea WikiCPC, la miré el otro dia, pero no encontré esto de esté chip...
O sea un listado que ponga FB&00 esto es esto, o algo asi en su defecto...
Lo que me comentas del CTD, te explico porque es que debe ser lo mismo que me quieres decir... Yo desde el CPC al Arduino le meto cosas, me salen unos numeros decimales, aunque esto es lo de menos... haciendo una sequencia... Esta sequencia ya viene dada como la entiende el CPC, pero hacia afuera... o sea con un Save como si pusieramos la cinta de cassete... Supongo que si tengo esa info y la envio a la velocidad de los Baudios que lee el Cassete debería entender las cosas poque se han geabado con el mismo "protocólo", vamos eso entiendo yo, si no corríjeme...
Saludos Joss
O sea un listado que ponga FB&00 esto es esto, o algo asi en su defecto...
Lo que me comentas del CTD, te explico porque es que debe ser lo mismo que me quieres decir... Yo desde el CPC al Arduino le meto cosas, me salen unos numeros decimales, aunque esto es lo de menos... haciendo una sequencia... Esta sequencia ya viene dada como la entiende el CPC, pero hacia afuera... o sea con un Save como si pusieramos la cinta de cassete... Supongo que si tengo esa info y la envio a la velocidad de los Baudios que lee el Cassete debería entender las cosas poque se han geabado con el mismo "protocólo", vamos eso entiendo yo, si no corríjeme...
Saludos Joss
- Joss
- Atari 1040 STf
- Mensajes: 930
- Registrado: 17 Jul 2012, 20:07
- Gracias dadas: 14 veces
- Gracias recibidas: 2 veces
Re: Consultilla Arduino Cassete CPC 464
Precisamente en grimware encuentras los mapas de los periféricos
me sonaba de leer ahí mejor información que en cpcwiki ....
He estado buscando por cdt2wav y creo que el formato CDT es una copia del que se usa para Spectrum, el TZX. Por lo menos me ha servido para entenderlo. En worldofspectrum en una de las herramientas explica el formato para pasar el audio grabado en las cintas a estos formatos y primero explica como está almacenado este audio. Corto y copio:
Osea que un 1 son dos pulsos a una frecuencia y un 0 son dos pulsos a otra frecuencia. Al principio envía uno de sincronía (aquí me pierdo un poco, tengo que leer mas ....). El Amstrad quizás use otras frecuencias .....
Todos estos temas son nuevos para mí. Solo te cuento lo que estoy leyendo por Internet y me parece entender.
El extracto de arriba lo he sacado de este fichero donde también viene código en C que lo mismo te ayuda a ver como puedes hacer la transformación de datos, en tu caso decimales, pero que lo mismo tienes que pasar a ceros y unos, y luego a frecuencias como se indica arriba: cero, dos pulsos de una determinada frecuencia, y 1 dos de otra. Lo mismo mirando algún wav de los que saca el cdt2wav de Markus Hoffmann se puede comprobar si las frecuencias de arriba son las correctas. Seguiré investigando

He estado buscando por cdt2wav y creo que el formato CDT es una copia del que se usa para Spectrum, el TZX. Por lo menos me ha servido para entenderlo. En worldofspectrum en una de las herramientas explica el formato para pasar el audio grabado en las cintas a estos formatos y primero explica como está almacenado este audio. Corto y copio:
Código: Seleccionar todo
HOW TO CONVERT A TAPE TO ZXTAPE FORMAT
----------------------------------------
First of all you will probably need some knowledge on how the data is stored
on the tapes (or in the .VOC files) since without it you would not understand
how the switches work...
Basically the data on the tape is stored as pulses of different frequencies.
The spectrum rom save routine stores two pulses of 855 Z80 Clock Cycles for the
bit 0 and two pulses of 1710 Z80 Clock Cycles. Which means that bit 0 takes
exactly half the time to load in as bit 1 does.
But for Spectrum to be able to read that data it has to know when to start
reading it. Therefore there is a Pilot signal preceeding the data which has
some 8000 pulses of somewhat smaller frequency infront of the data. After
the pilot signal there are two SYNC pulses, which are considerably smaller
(or with higher frequency) so the spectrum knows that now it has to start
loading the data.
Basically it all looks like this (when you look at the .VOC file) :
_____-----_____-----_____-----_-____----__--__--____----____----...
______________ ______________| |________________ _______________...
V V V
PILOT pulse SYNC1,2 DATA (10011...)
So one Pilot pulse is _____ (or -----) , SYNC pulses are _ and - , Bit 0 of
Data is __-- and Bit 1 of Data is ____---- . There might ofcourse be some
minor differences (which is the reason for the switches ;)) .
The actual amplitude of the signal is not important (it doesn't matter if the
bit 0 is --__ or __-- ... ) .. only the frequency (or the "wave length") is
important.
This is how Spectrum ROM routine does it, and normally all Turbo loaders do
it in the same way, only the timings are different (the frequency is bigger).
Osea que un 1 son dos pulsos a una frecuencia y un 0 son dos pulsos a otra frecuencia. Al principio envía uno de sincronía (aquí me pierdo un poco, tengo que leer mas ....). El Amstrad quizás use otras frecuencias .....
Todos estos temas son nuevos para mí. Solo te cuento lo que estoy leyendo por Internet y me parece entender.
El extracto de arriba lo he sacado de este fichero donde también viene código en C que lo mismo te ayuda a ver como puedes hacer la transformación de datos, en tu caso decimales, pero que lo mismo tienes que pasar a ceros y unos, y luego a frecuencias como se indica arriba: cero, dos pulsos de una determinada frecuencia, y 1 dos de otra. Lo mismo mirando algún wav de los que saca el cdt2wav de Markus Hoffmann se puede comprobar si las frecuencias de arriba son las correctas. Seguiré investigando

¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados