Página 1 de 1

Read Error A y B como lo sabía la máquina?¿

Publicado: 29 Dic 2014, 23:37
por mentalthink
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...

Re: Read Error A y B como lo sabía la máquina?¿

Publicado: 29 Dic 2014, 23:52
por zup
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).

Re: Read Error A y B como lo sabía la máquina?¿

Publicado: 30 Dic 2014, 00:26
por pinace
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

Re: Read Error A y B como lo sabía la máquina?¿

Publicado: 30 Dic 2014, 00:38
por mentalthink
Gracias por ambas respuestas, muy interesantes las 2...
Me miraré lo del cassete de Amstrad...