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 |
|