Pour la convention de notation WXYZ<b> voir ici Interface cassette.

Les deux ordinogrammes correspondants à RBYTE et RBIT sont donnés après le code ci-dessous.

  Adr

Mnémonique

NbCycles

Commentaires

1 RBYTE PUSH B 11  
2   PUSH D 11  
3   PUSH H 11  
4   LXI H,:FD00 10  
5   MVI E,:FE 7  
6 RBY10 CALL :RBIT 17+d(RBIT)  
7   JC RBY20 10  
8   RAL   4  
9   MOV A,E 5  
10   RAL   4  
11   MOV E,A 5  
12   JC RBY10 10  
13 RBY20 POP H 10  
14   POP D 10  
15   POP B 10  
16   RET   10  
17 RBIT XRA A 4 Mise à zéro de A
18   MOV D,A 5 Mise à zéro de D
19   MOV B,A 5 Mise à zéro de B
20   MOV C,A 5 Mise à zéro de C
21 RBT10 DCR B 5 B = B -1
22   JZ RBT90 10 Trop long à l'état bas, on sort en signalant une erreur
23   ORA M 7 FD00<7> est le bit qui nous intéresse
24   JP RBT10 10 Signal cassette toujours à l'état bas, on continue à boucler
25 RBT30 DCR C 5 C = C -1
26   JZ RBT90 10 Trop long à l'état haut, on sort en signalant une erreur
27   DCR D 5 D = D - 1
28   ANA M 7 FD00<7> est le bit qui nous intéresse
29   JM RBT30 10 Signal cassette toujours à l'état haut, on continue à boucler
30   LXI B,:0000 10 Mise à zéro de B et C
31 RBT40 DCR B 5 B = B -1
32   JZ RBT90 10 Trop long à l'état bas, on sort en signalant une erreur
33   ORA M 7 FD00<7> est le bit qui nous intéresse
34   JP RBT40 10 Signal cassette toujours à l'état bas, on continue à boucler
35 RBT50 DCR C 5 C = C -1
36   JZ RBT90 10 Trop long à l'état haut, on sort en signalant une erreur
37   INR D 5 D = D + 1
38   ANA M 7 FD00<7> est le bit qui nous intéresse
39   JM RBT50 10 Signal cassette toujours à l'état haut, on continue à boucler
40   MOV A,D 5 On copie le résultat dans A. Le bit 7 indiquera le bit lu. Si c'est un bit 0, on aura décrémenté D moins qu'on l'aura incrémenté et le bit 7 de D sera à 0. Inversement, pour un bit 1. Pour comprendre ce qui vient d'être dit, il faut se rapprocher de la description des signaux ici.
41   RET   10 Retour
42 RBT90 STC   4 Si erreur, alors on positionne le flag Carry
43   RET   10 Retour

 

 

Copyright 2004-2023 © Bruno VIVIEN tous droits réservés.