Muy buenas.
Sobre la cadena IAI en toda comunicación el texto dice:
A cada comando o respuesta le antecede la cadena "IAI" (0x49 0x41 0x49) [...]. Un solo byte las sigue, indicando qué comando o respuesta se está enviando. Pueden seguirle mas bytes, dependiendo del comando o la respuesta exacta; la naturaleza de estos argumentos está listada más abajo por cada comando o respuesta.
Así que según esto toda comunicación, tanto por tu parte, como por el DexDrive tendrá la forma
0x49 0x41 0x49 <byte de comando/respuesta> [<bytes de argumentos>]
El texto dice:
Cuando un DexDrive se energiza por primera vez, se encuentra en un estado que yo llamo "pouting", y básicamente rechaza realizar cualquier cosa hasta que no se haya inicializado. Cualquier comando válido, a parte de INIT, será respondido mediante POUT, y no sucederá nada.
(El modelo PSX continuará rechazando comandos inválidos con ERROR, mientras el modelo N64, contestará con POUT a todo menos a INIT, siempre y cuando se lleve el prefijo "IAI".)
La para inicializar DexDrive, hay que mandar el comando INIT, seguido por un MAGIC_HANDSHAKE en los subsiguientes 100ms (aprox.) después de recibir la respuesta ID.
Sobre la respuesta de INIT y el ID:
0x00 INIT
Argumentos: <17 bytes>
Respuesta: ID
[...]
0x40 ID
Argumentos: <byte extraño> <3-bytes modelo> <versión de firmware>
Identifica el modelo de DexDrive en respuesta a INIT.
<byte extraño> está derivado de la cadena de 17 bytes mandada con INIT; ver fórmula extraña de mas abajo para mas detalles.
La cadena 3-bytes modelo es "PSX" o "N64".
<versión firmware> es la versión firmware x.yz empaquetada en un simple byte de la forma: xxyyyyzz
Sobre la fórmula extraña da el proceso de cómo calcularla, pero hay que tener en cuenta que es algo que hace DexDrive. Por tu parte el sacarla solo te serviría como comprobación. Pero viendo lo que dice el texto el algo que te puedes ahorrar. El texto dice:
No tengo ni idea de porqué es tan complejo, especialmente por el hecho de que no conduce a ningún sitio. InterAct's DexPlorer no rechazará comunicarse con ningún dispositivo que no produzca el byte esperado, aunque si siempre se envía la misma cadena de 17 bytes, ¿cuál es la idea?. [...]
Básicamente te basta recoger de qué modelo se trata, si PSX o N64, alguna función responde de una forma según el modelo.
Si no sabes inglés te será difícil que puedas crear el programa. Los traductores informáticos no dan buenos resultados a la hora de traducir este texto.
Espero haberte ayudado.