Habi Hablóg
Declaro:
XML válidoXHTML válido800x600 +
RSS válidoCSS válidoNavegador digno
  Blog   Archivo   Contacto   Administración  

Acerca de

Matemático, informático, aficionado a la electrónica, friki... y otras cosas que no vienen a cuento ni pasan los filtros de palabras.

¿Queríais un blog? Ahí va.

Red antisocial

¡Me van a volver loca! 2.0
La Fragata Portuguesa

Z
¡Me van a volver loca!

Últimos posts

El expediente X que nadie pidió
eNigma
La cuadratura del píxel
Portando desde Spectrum
Inexorable

Últimos comentarios

Habi
NoSupoResolverLaFuncion
Edu
Habi
EnriqueGG

Calendario

No hay fechas.

Categorías

Chorradas
Paranoias
Posts lúcidos
Tecnoesoterismo
Yuyus

Cenas de Abj

Abj debe 7 cenas.

Frase célebre

Zarith dice: 
 
veamos 
 
1) Madrugón a las 07:00 
 
2) 5 horas leyendo novelas gore 
 
3) Esta tarde dentista ¬¬ 
 
Habi dice: 
 
parece un haiku, mira

Habi's way

Habi - 18/07/2011 23:48:16 - Tecnoesoterismo

Como algunos de los que leen este blog sabrán, hay dos firmwares distintos para el Amstrad PCW: uno para los modelos con impresora matricial y otro para los de margarita (9512 y 9512+). Y que sus discos de arranque son incompatibles entre sí por usar una suma de comprobación en arranque del primer sector.

El primer firmware puede encontrarse listado, desensamblado y comentado en esta dirección. Del segundo no hay ni rastro, sólo esta conversación. Así que tenemos dos opciones: escribir un mail a alguien con quien me estoy escribiendo y que tiene TODOS los modelos de PCW y que me diga la diferencia usando el programa ahí especificado (de hecho, esa persona participa en esa conversación) o deducirlo a partir de:

  1. Sólo se modifican dos bytes, uno para la comprobación del sector y otro para compensar la suma del programa.
  2. Tengo unos CRCs de ambos firmwares.
  3. Tengo sendos sectores de arranque.
  4. Mi 9º sentido (el de ingeniero inverso) me dice que no necesito más.

Bien. Sabiendo que sólo es necesario un cambio de un byte para lograr el arranque, y sabiendo que la suma del sector de arranque pasa de ser congruente con $FF (-1) a serlo con 1 módulo 256, lo que pide el cuerpo es el cambio en la dirección $80 de memoria, de Inc A a Dec A ($3C -> $3D).

Al incrementar en 1 la suma y sabiendo que sólo nos queda un byte por modificar, sabemos que tenemos que tocar ese otro byte restando 1 módulo 256 (ese gran número, tan importante en la informática e incluso en este blog).

Por otro lado, hagamos un CRC-16 del firmware que sí tenemos; de ahí deducimos (probando) que es un CRC-16 con el polinomio del CCITT (no el de IBM) en forma MSB curiosamente. En cualquier caso ya está calibrada nuestra prueba.

Finalmente, teniendo en cuenta que el programa son sólo 256 bytes, aplicaremos fuerza bruta; sólo hay 255 candidatos a los que restar 1 y lanzar el algoritmo de CRC hasta que dé una solución. Y la da, y es única, y todo lo anterior es congruente. La solución simplemente toca una constante tonta de un retardo, nada esencial (en $2E, de $21 a $20).

Es curioso. Hubiese sido más fácil enviar ese email, pero extrañamente esto es, desde luego, más rápido. Al menos para mí.


z - 18/07/2011 23:54:01

Más rápido que enviar un mail. Yehaa!



H - 18/07/2011 23:57:04

Es más rápido que enviar un mail y recibir respuesta. 
 
De hecho, es más rápido que enviar ese mail, a secas. Pues habría de ser en inglés, y créeme que tardo y lo reviso n-mil veces.



kachorro - 19/07/2011 15:46:38

había una tercera via... 
 
yo tengo un 9512 también :P



H - 19/07/2011 17:41:38

Incluso así hubiese tardado más, en total fueron unos 20 minutos; pero bueno es saberlo para cuando experimente con la contención. 
 
¿Qué otro hardware de PCW tienes? Y de paso, ¿resultaría útil un disco de arranque para poder iniciar en 9512 y 9512+ el software de los otros PCWs? No me cuesta nada hacerlo.




Post cerrado