@atmosphere : Je crois que les fichiers d'Assinie sont complets, les lignes de code sont autonomes avec les adresses listées notamment dans le dernier listing
Oups, oui autant pour moi j'avais zappé une partie du code 🙄
Une question, est-ce que ça pose problème pour d'autres périphériques si j'utilise un poke 768,1 pour générer une impulsion sur le port cassette ? Je m'en sers pour générer une impulsion de 10 ms environ mais bon c'est une astuce que j'ai trouvé pratique mais je ne sais pas trop en fait si ça ne va pas semer la pagaille 😊
Ca marche, c'est trop bien, merci, je vais pouvoir avancer 😊😉
Une question, est-ce que ça pose problème pour d'autres périphériques si j'utilise un poke 768,1 pour générer une impulsion sur le port cassette ?
La réponse rapide est oui: si tu as une imprimante connectée à l'Oric elle va recevoir un caractère "parasite", d'autre part le relais pour la télécomande du magnétophone reçoit aussi l'impulsion ce qui n'est pas forcément une bonne idée.
La réponse plus détaillée:
L'adresse 768 correspond certes au port B du VIA qui est bien utilisé pour le port K7, mais les bits 0 à 3 sont utilisés pour le clavier.
Le bit 4 est utilisé pour l'imprimante (signal STROBE) et le bit 5 n'est pas utilisé (il n'est connecté à rien sauf modification de l'Oric)
Pour le port K7, il y a le bit 6 pour la télécomande du magnétophone, le bit 7 pour l'envoi du signal vers le magnétophone et CS1 pour la réception du signal par l'Oric.
La valeur des bits 7 à 0 est 1011xxxx en fonctionnement normal, les x sont modifiés pour la gestion du clavier à chaque interruption si elles sont actives.
Donc en mettant la valeur 1 à l'adresse 768 tu mets le bit 0 à 1 et tous les autres à 0 soit 00000001, mais l'interruption suivante forcera à nouveau les bits 7 à 4 à 1011 et les bits 3 à 0 avec la valeur suivante pour le clavier.
Hors clavier, cela génère une impulsion négative 1->0->1 sur les pits 7, 5 et 4 donc vers la sortie K7 et vers le relais de la télécommande du magnétophone et vers le signal STROBE de l'imprimante.
Je pense qu'il vaudrait mieux ne pas toucher aux bits 6 et 4 pour éviter de toucher au relais et d'envoyer un caractère à l'imprimante si il y en a une connectée à l'Oric.
Une valeur de 0011xxxx, soit entre 48 et 63 inclus, permet de ne pas toucher au relais ni à l'imprimante (il faudrait que je vérifie le risque de perturbation de la lecture du clavier mais il doit être faible)
Dernière remarque, si la durée de l'impulsion doit être précise le mieux est de faire l'équivalent du poke en assembleur et en ayant supprimé les interruptions avant (ne pas oublier de les autoriser à nouveau après).
En effet, tu ne sais pas quel est le délai entre l'exécution du poke et la prochaine interruption donc la durée de l'impulsion peut être très inférieure à 10ms.
- Merci Assinie pour toutes ces précisions, je pensais bien que ça pouvait perturber les périphériques reliés au port B mais je n'ai pas de documents précis alors j'ai du mal comprendre. Quand je fais un poke 768,1 j'ai une impulsion entre 8 et 12 ms, ça dépend, j'ai à peu près la même chose si je fais poke 768,0 le contact du magnétophone ne se ferme pas et je n'ai constaté aucune perturbations mais je n'ai pas d'imprimante connectée sur l'oric, il faudrait que je vérifie avec l'analyseur logique. En fait je n'ai pas besoin que l'impulsion soit précise, entre 8 et 12 ms ça me convient, c'est juste pour valider une commande, ça m'évite de faire appel à la routine d'envoi de bytes via le port cassette.
En fait tu auras une impulsion sur la sortie K7 à partir du moment où tu mets le bit 7 à 0 donc pour n'importe quelle valeur inférieure à 128.
Pour les effets de bords sur le relais, il est possible que l'impulsion soit trop rapide pour le déclancher mais il vaut quand même mieux éviter de jouer avec.