Ah, moi et les docs... C'est ma bête noire...
Bon, je vais essayer de t'expliquer ici même...
Le port joystick sur le CPC dispose de 6 signaux : les 4 directions et 2 boutons de feu, que l'on peut lire. Sur le PC, on dispose du port parallèle qui lui contient 8 signaux. On utilisera donc 6 des 8 signaux du port // du PC.
J'ai numéroté les bits du port joystick du cpc de 0 à 5.
Pour transférer un octet, j'utilise la méthode suivante :
Je crée un "octet" contenant :
- les 4 bits (0 à 3) de poids faible de l'octet à envoyer vers les bits 0 à 3 de mon octet,
- le bit 4 positionné à 1, indiquant le transfert du premier "quartet"
- le bit 5 positionné à 0,
J'envoie cet octet sur le port // du PC, et j'attends un certain temps,
Je crée ensuite un "octet" contenant :
- les 4 bits (0 à 3) de poids faible de l'octet à envoyer vers les bits 0 à 3 de mon octet,
- le bit 4 positionné à 0,
- le bit 5 positionné à 1, indiquant le transfert du premier "quartet"
J'envoie cet octet sur le port // du PC, et j'attends un certain temps,
Je recommence cette procédure pour tous les octets à transférer.
Ensuite, je termine par un octet à zéro (tous les bits), indiquant la fin du transfert. Pour cet octet, j'attends un time-out 10 fois plus long que le time-out inter-octets.
J'ai réglé le time-out inter-octets par essais successifs, il ne faut pas le mettre trop petit, sinon le CPC se désynchronise, et trop grand, le transfert durera trop longtemps.
J'ai finalement choisi 250 micro-secondes comme time-out inter-caractères.
Voila, j'espère que mes explications sont précises, tu peux également jetter un oeil au source, il est assez simple, même si il n'est pas commenté...