Pongo esto en Amstrad pero supongo que es lo mismo en Spectrum, MSX o el mismo Amstrad.
El asunto es, como por ejemplo, un Amstrad devolvía un error Read erro A o B (Que no se cual es la diferencia)... al leer la cinta... Ya sé que me direís la cinta no la leía bien, OK, pero en que se basa la CPU para determinar el error, me explico, si la CPU no tiene referencia de los comandos que tiene internos y los mira y compara con lo que lee no puede determinar que hay un error, no?¿, y menos que haya 2...(Digo yo que sería algo asi)...
Entonces como digo, que proceso hacía la CPU para determinar lo errores de carga, cada X baudios iba mirando lo que leía y lo comprobaba en una tabla en dónde estuvieran todas los Comandos de la CPU, una y otra vez?¿... que me parece a mi demasiado lento eso, o no tiene nada que ver la CPU y viene de la señal que envian los cabezales al conversor analógico Digital...
Read Error A y B como lo sabía la máquina?¿
- mentalthink
- Amiga 2500
- Mensajes: 2840
- Registrado: 11 Abr 2010, 15:06
- Gracias dadas: 45 veces
- Gracias recibidas: 14 veces
- zup
- Amiga 2500
- Mensajes: 3012
- Registrado: 04 Sep 2009, 20:07
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Nintendo DS/3DS
- Primera consola: Nintendo GameBoy
- Ubicación: Navarra
- Gracias dadas: 86 veces
- Gracias recibidas: 356 veces
- Contactar:
Re: Read Error A y B como lo sabía la máquina?¿
No sé exactamente cómo lo hace el Amstrad, pero (al menos) hay varias cosas en las que fijarse en las comunicaciones:
- Pérdida de señal. Por ejemplo, vas leyendo el tercer bit de un byte y te desaparece la señal. Como lees de 8 en 8 bytes, ahí hay un error.
- Longitud errónea. Sabes que tienes que cargar 12000 bytes, pero solo cargas 5000. En el otro extremo, podrías tener que cargar 12000 pero encontrarte 12300 (esto no suelen comprobarlo...).
- Paridad. Haces que el número de bits a uno en un byte sea par o impar, según decidas. Para ello, en vez de grabar 8 bytes, grabas 9. Si tienes paridad par y el byte 01010100, añades un 1 al final (4 bits a 1); si tienes 00110000, añades un 0 (2 bits a 1). En el primer caso, un byte 01100000(1) daría error (número impar de bits a 1). No creo que eso lo usen en el Amstrad ya que acabas incrementando un 12.5% el tiempo de carga, pero se usa en los protocolos RS232.
- Checksum. Añades un byte con algún dato de comprobación. Por ejemplo, un XOR de lo que hay grabado, la suma de todos los bytes... cualquier cosa vale. Si al terminar la carga, el byte de comprobación no concuerda con los datos que has leído, ahí tienes un error.
Al final, tienes varias maneras de encontrar errores al leer. Hay también maneras de corregirlos, pero eso no se implementaba en los equipos de 8 bits (porque se lleva tiempo de proceso y tiempo de carga).
- Pérdida de señal. Por ejemplo, vas leyendo el tercer bit de un byte y te desaparece la señal. Como lees de 8 en 8 bytes, ahí hay un error.
- Longitud errónea. Sabes que tienes que cargar 12000 bytes, pero solo cargas 5000. En el otro extremo, podrías tener que cargar 12000 pero encontrarte 12300 (esto no suelen comprobarlo...).
- Paridad. Haces que el número de bits a uno en un byte sea par o impar, según decidas. Para ello, en vez de grabar 8 bytes, grabas 9. Si tienes paridad par y el byte 01010100, añades un 1 al final (4 bits a 1); si tienes 00110000, añades un 0 (2 bits a 1). En el primer caso, un byte 01100000(1) daría error (número impar de bits a 1). No creo que eso lo usen en el Amstrad ya que acabas incrementando un 12.5% el tiempo de carga, pero se usa en los protocolos RS232.
- Checksum. Añades un byte con algún dato de comprobación. Por ejemplo, un XOR de lo que hay grabado, la suma de todos los bytes... cualquier cosa vale. Si al terminar la carga, el byte de comprobación no concuerda con los datos que has leído, ahí tienes un error.
Al final, tienes varias maneras de encontrar errores al leer. Hay también maneras de corregirlos, pero eso no se implementaba en los equipos de 8 bits (porque se lleva tiempo de proceso y tiempo de carga).
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Además vendo cosas!
Además vendo cosas!
Re: Read Error A y B como lo sabía la máquina?¿
Read error a: bit muy largo
Read error b: error de CRC
Read error d: Bloque de más de 2048 bytes
Creo recordar que era así. De todas formas consulta el manual del firmware del Amstrad CPC, sección 8 cassette manager.
http://www.cpcwiki.eu/index.php/Soft968:_CPC_464/664/6128_Firmware
Read error b: error de CRC
Read error d: Bloque de más de 2048 bytes
Creo recordar que era así. De todas formas consulta el manual del firmware del Amstrad CPC, sección 8 cassette manager.
http://www.cpcwiki.eu/index.php/Soft968:_CPC_464/664/6128_Firmware
- mentalthink
- Amiga 2500
- Mensajes: 2840
- Registrado: 11 Abr 2010, 15:06
- Gracias dadas: 45 veces
- Gracias recibidas: 14 veces
Re: Read Error A y B como lo sabía la máquina?¿
Gracias por ambas respuestas, muy interesantes las 2...
Me miraré lo del cassete de Amstrad...
Me miraré lo del cassete de Amstrad...
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados