Cargador de Cintas con Arduino para C64

PET, VIC-20, MAX Machine, 64, 64x, SX-64, 16, Plus/4, 128, 65 ...
Avatar de Usuario
mentalthink
Amiga 2500
Amiga 2500
Mensajes: 2840
Registrado: 11 Abr 2010, 15:06
Gracias dadas: 45 veces
Gracias recibidas: 14 veces

Re: Cargador de Cintas con Arduino para C64

Mensajepor mentalthink » 15 Ene 2015, 19:25

No Lord Raptor lo que pasa que yo monté un cacharro un poco distinto, pille el Arduino , una SD y una libreria que reproduce .wav , eso conectao a los cabezales del cassete del C64, o sea no va directo al C64 en formato .tap... como comentaba algo pilla aunque no bien.. Vamos como si cargas con una cinta de los chinos metida dentro del cassete, pero claro aqui si le pones tu pantallica y para selccionar el archivo pues mas o menos se supone que haces el apaño... Supongo que estó deberia ir en cualquier sistema que use cassete.

Avatar de Usuario
marcos64
Amiga 1200
Amiga 1200
Mensajes: 1376
Registrado: 03 Sep 2011, 07:53
Gracias dadas: 59 veces
Gracias recibidas: 32 veces

Re: Cargador de Cintas con Arduino para C64

Mensajepor marcos64 » 15 Ene 2015, 22:06

mentalthink escribió:pille el Arduino , una SD y una libreria que reproduce .wav , eso conectao a los cabezales del cassete del C64


A que te refieres con eso?
http://marcos64.orgfree.com/
Actualizacion 11/6/2015: Añadida Load'N'Run numero 3.

Avatar de Usuario
Lord Raptor
Amstrad CPC 472
Amstrad CPC 472
Mensajes: 69
Registrado: 27 Dic 2014, 03:42
Sistema Favorito: Commodore Amiga
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo GameBoy Advance
Primera consola: TV Games/Pong Clone
Gracias recibidas: 1 vez

Re: Cargador de Cintas con Arduino para C64

Mensajepor Lord Raptor » 16 Ene 2015, 04:10

Es ke, el sistema de carga del Commodore [segun tengo entendido] no es analógico, es
más bien digital. Personalmente creo ke es una mezcla de ámbos.
El resto de sistemas [como el Spc] tiene una 'oreja' común y se le puede meter datos
de 'akella manera'.

Lo curioso de la carga de Commodore es, ke se graban dos veces el programa a cagar
y el ordenador lo lee dos veces a modo de cerciorarse para ke el checksum sea el correcto.
Es algo ke desconocía y me enteré hace poco. Existe un montaje de dificultad ridícula
ke amplifica la señal de audio y puedes cargar desde un wav con un dispositivo externo.
Miembro activo en la demoscene Amiga desde 1993
Miembro activo en la scene del ROMhacking desde 1994

Avatar de Usuario
marcos64
Amiga 1200
Amiga 1200
Mensajes: 1376
Registrado: 03 Sep 2011, 07:53
Gracias dadas: 59 veces
Gracias recibidas: 32 veces

Re: Cargador de Cintas con Arduino para C64

Mensajepor marcos64 » 16 Ene 2015, 11:34

Por eso mi pregunta, hace falta un interface para conectar una señal de audio al C64 y tengo curiosidad de a que se refiere exactamente con "eso conectao a los cabezales del cassete del C64".

Por otro lado aunque el formato de carga del kernal es asi, se puede modificar como se quiera (dentro de las limitaciones del propio Datassette) y hay infinidad de cargadores comerciales y formatos como el Turbo Tape.

Y ya retroespeculando. es una pena que el Datassette no fuera una especie de Quick Data Drive pero usando cintas normales grabadas por una sola cara, con un directorio al comienzo y que buscara los programas automaticamente. De hecho existen cintas especiales para datos que solo se pueden grabar por una cara aunque nunca he visto un reproductor para ellas.

EDITO: Los casetes especiales para datos se llamaban "Streamer cassette".
http://marcos64.orgfree.com/
Actualizacion 11/6/2015: Añadida Load'N'Run numero 3.

BlackHole
Amiga 1200
Amiga 1200
Mensajes: 1442
Registrado: 07 Nov 2009, 11:38
Sistema Favorito: C64
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: Nintendo SNES
Ubicación: Madrid
Gracias dadas: 9 veces
Gracias recibidas: 209 veces

Re: Cargador de Cintas con Arduino para C64

Mensajepor BlackHole » 16 Ene 2015, 13:28

Lord Raptor: Evidentemente lo que hay en una cinta es audio analógico, tanto en Commodore como en Spectrum, donde hay grabadas ondas a medio camino entre forma cuadrada y sinusoidal que necesitan ser decodificadas. La forma de conseguirlo es una circuitería que detecte cuándo esa onda pasa de tener valores positivos a valores negativos y viceversa (cruzando el centro, en lo que vendría a ser su representación gráfica), y que así se mande una señal al sistema que permita definir el tiempo de duración de un ciclo.

En Spectrum esa labor lo lleva a cabo la ULA, donde una de sus patillas está conectada directamente a una hembra jack mono estándar, y la circuitería del chip cambia entre 0 y 1 el valor de un bit de un puerto cada vez que la onda cambia y el código de los cargadores lo pueden detectar, midiendo así el tiempo entre transiciones de onda. En Amstrad es casi lo mismo, solo que el chip es diferente.

En Commodore esa labor la realiza el datassette, no el ordenador. La circuitería del datasette ya activa una señal en una de las pistas del conector, que está conectada directamente a la CIA que controla la entrada/salida de ese puerto, entre otras tareas. Luego ya el código de los cargadores puede examinar el valor de un determinado bit de memoria (recordemos que el C64 tiene la I/O mapeada a memoria) para detectar el cambio de onda.

No estoy 100% seguro, pero oí que mientras los típicos equipos Z80 (Spectrum, Amstrad, MSX) podían detectar semiciclos, el Commodore 64 solo podía detectar ciclos completos porque no podía detectar la transición de vuelta desde negativo a positivo. Por supuesto, no por el procesador, ya que el Apple I/II lleva un 6502 y puede detectar semiciclos (el genio Steve Wozniak creó un sistema de carga basado en modulación por frecuencia que fue en el que se basaron muchos otros, de hecho el Spectrum y el Apple II suenan exactamente igual), sino porque el C64 hereda una arquitectura que venía de la época de los PET y tanto el VIC-20 como el C64 mantenían cierta compatibilidad. Aquí, como si de Wikipedia se tratase, necesitaría una referencia estricta que lo confirmase.

El algoritmo usado por la ROM en los equipos CBM es muy poco optimizado, porque no se fiaban de la calidad de los materiales magnéticos, algo que pronto se probó exagerado. Usa 3 formas de onda en vez de 2 como casi todo el resto de ordenadores, varias repeticiones de la onda para definir un bit, pone bits de comienzo y bits de parada alrededor de cada byte, y por si fuera poco graba todo el bloque una segunda vez después de la primera. Esto hace que ciertos juegos de 1982 que usan la rutina de la ROM pudiesen tardar 15 minutos en cargar de cinta. Menos mal que enseguida las compañías empezaron a crear cargadores propios con algoritmos diferentes que permitían cargar con fiabilidad en la quinta parte de tiempo.
Última edición por BlackHole el 16 Ene 2015, 13:47, editado 2 veces en total.

Avatar de Usuario
Jaimen
Amiga 1200
Amiga 1200
Mensajes: 1656
Registrado: 17 Mar 2009, 13:39
Sistema Favorito: Amstrad CPC
primer_sistema: Amstrad CPC
Ubicación: Madrid
Gracias dadas: 156 veces
Gracias recibidas: 19 veces

Re: Cargador de Cintas con Arduino para C64

Mensajepor Jaimen » 16 Ene 2015, 13:42

mentalthink escribió:Vamos como si cargas con una cinta de los chinos metida dentro del cassete


Yo intenté cargar juegos así en mi C64 y era, evidentemente, una tarea de chinos, nunca mejor dicho, aunque algo logré cargar ... :mrgreen:
Mi galeria de fotos en 500px.com

Avatar de Usuario
mentalthink
Amiga 2500
Amiga 2500
Mensajes: 2840
Registrado: 11 Abr 2010, 15:06
Gracias dadas: 45 veces
Gracias recibidas: 14 veces

Re: Cargador de Cintas con Arduino para C64

Mensajepor mentalthink » 16 Ene 2015, 17:31

A ver que me parece que os (o me estoy armando un follón)....

Os explico para dejar claro(lo de los cabezales conectaos) :mrgreen: :mrgreen:

Como creo yo que funciona un C64, es lo mismo que cualquier ordenador, pero en vez que el cassete está incorporao, está fuera, o sea una cinta de Asmtrad y una de C64 es lo mismo es un archivo de audio no?¿, creo que hasta aqui voy bien...

Vale si yo cojo un archivo .tap de dónde sea y lo paso a .wav con esa aplicación que hay en C64 que no recuerdo el nombre, digamos que tengo un archivo como de cinta o sea analógico pero el disco duro, como se lo meto al cassete, por los cabezales desde un arduino que reproduce con un programa (una libreria más un código pequeñito), archivos .wav... O sea que hago lo mismo que si meto una cinta de los chinos de estás sin fin, conecto el jack a un mobil con un archivo wav... Eñ cassete del C64 ya hará lo que tenga que hacer para pasarlo a 1 y 0 y que la CPU lo entienda....

Vamos que no he hecho ningún enjendro raro, ni nada que no exista, perdonad por la confusión, pero es una gilipollez de montaje, quizás para lo que serviría creo yo, es ponerle una pantalla y tendrías una especía de HxC pero de cinta <XX <XX .

Yo no tengo ni idea de C64, pero creo que esté cachibache debería ir... aunque cierto es que no le voy a dedicar muchas horas, he econtrado la cinta de los chinos por casa. y el datassete a vuelto a funcionar por arte de magía, como me suele pasar con todo lo que deja de funcionar :jumper:

Avatar de Usuario
scooter
Amiga 1200
Amiga 1200
Mensajes: 1031
Registrado: 17 Jul 2012, 09:25
primer_sistema: C64
Ubicación: Alicante

Re: Cargador de Cintas con Arduino para C64

Mensajepor scooter » 16 Ene 2015, 20:20

A ver si tengo un rato y busco el adaptador para cassette normal. Si no me equivoco era un simple 7404.
Según eso el arduino sin mas debería de poder generar esta señal a partir de un archivo sin mucha complicación

Avatar de Usuario
Lord Raptor
Amstrad CPC 472
Amstrad CPC 472
Mensajes: 69
Registrado: 27 Dic 2014, 03:42
Sistema Favorito: Commodore Amiga
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo GameBoy Advance
Primera consola: TV Games/Pong Clone
Gracias recibidas: 1 vez

Re: Cargador de Cintas con Arduino para C64

Mensajepor Lord Raptor » 17 Ene 2015, 13:27

@ BlackHole: Gracias por la info. Ahora sé algunas cosillas ke antes deconocía. :jumper:
Miembro activo en la demoscene Amiga desde 1993
Miembro activo en la scene del ROMhacking desde 1994

BlackHole
Amiga 1200
Amiga 1200
Mensajes: 1442
Registrado: 07 Nov 2009, 11:38
Sistema Favorito: C64
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: Nintendo SNES
Ubicación: Madrid
Gracias dadas: 9 veces
Gracias recibidas: 209 veces

Re: Cargador de Cintas con Arduino para C64

Mensajepor BlackHole » 18 Ene 2015, 14:42

El famoso cartucho 1541 Ultimate II para Commodore 64, que emula el comportamiento de hasta 4 unidades de disco mediante un cable que lo une al puerto serie, incorporó posteriormente al diseño original un añadido que lo conectaba al puerto de cassette mediante un cable plano, sin necesidad de la existencia de un Datassette real intermedio.

Supongo que el aparato Tapuino este al que se referencia al principio del hilo, será capaz de poner las señales adecuadas a nivel alto o bajo, en la pista adecuada del puerto, emulando lo que generaría el propio Datassette. No sé si esa información está convenientemente documentada y de código libre, no me he parado a mirar en los posteriores enlaces al GitHub que aparecen en el artículo, por si alguien quiere usarlo con otra electrónica diferente.

Edito: No me había dado cuenta que el artículo del Tapuino tiene 2 partes más donde venía todo detallado... :estudiar:


Volver a “Commodore”

¿Quién está conectado?

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