Diskettstasjonkontrolleren i TIKI-100 Rev C
-------------------------------------------

TIKI-100 inneholder en FD1767PL-02 eller en FD1797-PL diskettstasjonkontroller
fra Western Digital. I TIKI-100 er ikke FD17xx kretsens INTRQ tilkoblet, s
den vil ikke kunne generere interrupts.

FD17xx kretsen kontrolleres gjennom 4 I/O porter:

I/O-port 10H: Statusord / styreord

Ved skriving er dette kommandoregisteret. Ved lesing er det statusregisteret.

I/O-port 11H: Spornummer

Her kan spor-registeret skrives og leses.

I/O-port 12H: Sektornummer

Her kan sektor-registeret skrives og leses.

I/O-port 13H: Dataregister

Gjennom denne porten leses og skrives data til diskett.

Oversikt over kommandoer

Type Navn             Bits i kommandoregister
---------------------------------------------
  I  Restore          0  0  0  0  h  V  r1 r0
  I  Seek             0  0  0  1  h  V  r1 r0
  I  Step             0  0  1  T  h  V  r1 r0
  I  Step-In          0  1  0  T  h  V  r1 r0
  I  Step-Out         0  1  1  T  h  V  r1 r0
 II  Read Sector      1  0  0  m  1  1  U  0
 II  Write Sector     1  0  1  m  1  1  U  a0
III  Read Address     1  1  0  0  0  1  U  0
III  Read Track       1  1  1  0  0  1  U  0
III  Write Track      1  1  1  1  0  1  U  0
 IV  Force Interrupt  1  1  0  1  0  0  0  0

r1,r0: Stepping Motor Rate
   0 0 =  6 ms
   0 1 = 12 ms
   1 0 = 20 ms
   1 1 = 30 ms
V: Track Number Verify Flag
   0 = ikke verifiser
   1 = sjekk at sporregisteret tilsvarer spornummeret i frste ID-felt p
       mlsporet
h: Head Load
   0 = ikke senk lese/skrive hodet
   1 = senk lese/skrive hodet
T: Track Update Flag
   0 = ikke oppdater sporregister
   1 = oppdater sporregister etter endt operasjon
U: Side select
   0 = velg side 0
   1 = velg side 1
m: Multiple Record Flag
   0 = les/skriv kun 1 sektor
   1 = les/skriv sektorer helt til hele sporet er dekket
a0: Data Address Mark
   0 = dataadressemerket er 0fbH
   1 = dataadressemerket er 0f8H (slettet dataadressemerke)

Statusregister

Type I kommandoer:

Bit  Navn                     Forklaring
----------------------------------------------------------------------------
7    Not ready                Stasjonen er ikke klar
6    Protected                Skrivebeskyttet diskett
5    Alltid 1 i TIKI-100
4    Seek error               nsket spor ikke verifisert
3    CRC error                Gal CRC i ID-felt
2    Track 0                  Hodet str over spor 0
1    Index                    Angir begynnelsen av frste sektor
0    Busy                     Kommando under utfrelse

Type II og III kommandoer:

Bit  Navn                     Forklaring
----------------------------------------------------------------------------
7    Not ready                Samme som for type I
6    Protected                Lesekommandoer: ikke brukt
                              Skrivekommandoer: diskett er skrivebeskyttet
5    Record type/Write fault  Les sektor: 1 = slettet dataadressemerke
                                          0 = vanlig dataadressemerke
                              Skrivekommandoer: Skrivefeil
4    Record not found         nsket spor, sektor eller side ikke funnet
3    CRC error                Sammen med bit 4: Feil sjekksum i kontrollfelt
                              Uten bit 4: Feil sjekksum i datafelt
2    Lost data                Prosessor har ikke hndtert DRQ raskt nok
1    Data request             Kopi av DRQ, klar for overfring av neste byte
0    Busy                     Kommando under utfrelse

Busy flagget settes nr en kommando er under utfrelse. Ingen kommando, utenom
"Force Interrupt" m legges inn i kommandoregisteret mens Busy er satt.

Type I kommandoer

Restore

Fr hodet til spor 0 og oppdater sporregisteret.
Hvis ikke sporet finnes innen 255 flytt, settes "Seek error" i
statusregisteret.

Seek

Denne kommandoen antar at sporregisteret inneholder gjeldende spornummer og
dataregisteret inneholder nsket mlspor.
Frer hodet til sporet angitt i dataregisteret og oppdaterer sporregisteret.

Step

Flytt hodet ett spor i samme retning som det ble flyttet sist.

Step-In

Flytt hodet ett spor innover (mot kende spornummer).

Step-Out

Flytt hodet ett spor utover (mot spor 0).

Type II kommandoer

Legg nsket sektor i sektorregisteret.

Read Sector

Overfrer nsket sektor byte for byte gjennom dataregisteret. Hver gang en byte
er klar for overfring settes "Data request" flagget i statusregisteret. Etter
endt operasjon settes "Recort type" flagget i statusregisteret.

Write Sector

Skriver nsket sektor til diskett. Hver gang en byte kan skrives, settes "Data
request" flagget i statusregisteret. Diskettkontrolleren lager selv ID feltet
med riktig dataadressemerke og CRC.

Type III kommandoer

Read Address

Overfrer gjennom dataregisteret det neste ID feltet som passeres. Hver gang en
byte er klar for overfring settes "Data request" flagget i statusregisteret.
ID feltet bestr av seks bytes:
  1    spor
  2    side
  3    sektor
  4    sektorlengde
        0 = 128 bytes
        1 = 256 bytes
        2 = 512 bytes
        3 = 1024 bytes
  5,6  CRC

Read Track

Overfrer hele sporet gjennom dataregisteret, inkludert ID felt og mellomrom.
Hver gang en byte er klar for overfring settes "Data request" flagget i
statusregisteret.

Write Track

Skriver et spor til diskett, inkludert mellomrom og ID felter. Brukes til
formatering av diskett. Bytes overfres gjennom dataregisteret. "Data request"
settes i statusregisteret nr det er klart for neste byte.
Bytes f5H-feH tolkes som dataadressemerke. Spesielt tolkes f5H-f7H slik:
   f5H  Skriv a1H, nullstill CRC generator.
   f6H  Skriv c2H
   f7H  Skriv 2 bytes CRC.

Type IV kommandoer

Force Interrupt

Brukes til  stanse en pgende operasjon fr den avsluttes p normalt vis,
eller sikre type I statusregister.
Hvis denne kommandoen settes mens en annen kommando utfres (busy = 1), vil
busy settes lik 0 og resten av statusregisteret er uforandret.
Hvis busy = 0 nr denne kommandoen utfres vil statusregisteret slettes /
oppdateres og reflektere type I statusregister.

---
21 januar 2001
Asbjrn Djupdal, djupdal@stud.ntnu.no

