Le contrôleur est l'organe qui va faire le lien entre l'ordinateur et le lecteur de disquette.

Pour cela le TRS-80 discute en "mappant" ses registres sur plusieurs adresses. Ces adresses sont réservées pour le module d'expansion, où seuls quelques unes sont utilisées pour le lecteur de disquette:

Registres de contrôle

Le contrôleur de disque utilisé dans le module d'expansion est un FD1771 de Western Digital, il dispose de cinq registres.

  • STATUS: Le registre de Status qui informe sur l'état du lecteur ou de l'exécution d'une commande , il est accessible en lecture uniquement.
  • COMMAND: Le registre de Commande, indique au contrôleur la prochaine commande devant être exécutée, il est accessible en écriture et partage l'adresse du registre Status.
  • TRACK: Le registre Track qui indique la piste devant être prise en compte pour l'exécution de certaines commandes.
  • SECTOR: Le registre Sector qui indique le secteur devant être pris en compte pour l'exécution de certaines commandes.
  • DATA: Le registre Data permet d'échanger des données avec le lecteur de disquette par le contrôleur, en lecture ou en écriture.

Les adresses d'accès à ces registres sont les suivantes: ${$}$37EC ~ ${$}$37EF, les deux bits de poids faible permettent de différencier les registres adressés.

Le TRS-80 est capable de gérer jusqu'à quatre lecteurs de disque, et cela avec le même contrôleur. Il utilise pour cela un registre de sélection de lecteur qui se trouve à l'adresse ${$}$37E0.

Pour sélectionner le lecteur concerné par le contrôleur, il faut inscrire un '1' dans le bit concerné:

  • Lecteur 0: bit 0 =1, revient  à écrire ${$}$01 à l'adresse ${$}$3E70
  • Lecteur 1: bit 1 =1, revient  à écrire ${$}$02 à l'adresse ${$}$3E70
  • Lecteur 2: bit 2 =1, revient  à écrire ${$}$04 à l'adresse ${$}$3E70
  • Lecteur 3: bit 3 =1, revient  à écrire ${$}$08 à l'adresse ${$}$3E70

Un seul lecteur peut être sélectionné à la fois, sous peine de provoquer des collisions de données. Il n'existe cependant pas de protection.