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