192 lines
6.0 KiB
Plaintext
192 lines
6.0 KiB
Plaintext
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 første ID-felt på
|
|
målsporet
|
|
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 står over spor 0
|
|
1 Index Angir begynnelsen av første sektor
|
|
0 Busy Kommando under utførelse
|
|
|
|
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 håndtert DRQ raskt nok
|
|
1 Data request Kopi av DRQ, klar for overføring av neste byte
|
|
0 Busy Kommando under utførelse
|
|
|
|
Busy flagget settes når en kommando er under utførelse. Ingen kommando, utenom
|
|
"Force Interrupt" må legges inn i kommandoregisteret mens Busy er satt.
|
|
|
|
Type I kommandoer
|
|
|
|
Restore
|
|
|
|
Før 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 målspor.
|
|
Fører 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
|
|
|
|
Overfører ønsket sektor byte for byte gjennom dataregisteret. Hver gang en byte
|
|
er klar for overføring 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
|
|
|
|
Overfører gjennom dataregisteret det neste ID feltet som passeres. Hver gang en
|
|
byte er klar for overføring settes "Data request" flagget i statusregisteret.
|
|
ID feltet består 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
|
|
|
|
Overfører hele sporet gjennom dataregisteret, inkludert ID felt og mellomrom.
|
|
Hver gang en byte er klar for overføring settes "Data request" flagget i
|
|
statusregisteret.
|
|
|
|
Write Track
|
|
|
|
Skriver et spor til diskett, inkludert mellomrom og ID felter. Brukes til
|
|
formatering av diskett. Bytes overføres gjennom dataregisteret. "Data request"
|
|
settes i statusregisteret når 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 pågående operasjon før den avsluttes på normalt vis,
|
|
eller sikre type I statusregister.
|
|
Hvis denne kommandoen settes mens en annen kommando utføres (busy = 1), vil
|
|
busy settes lik 0 og resten av statusregisteret er uforandret.
|
|
Hvis busy = 0 når denne kommandoen utføres vil statusregisteret slettes /
|
|
oppdateres og reflektere type I statusregister.
|
|
|
|
---
|
|
21 januar 2001
|
|
Asbjørn Djupdal, djupdal@stud.ntnu.no
|
|
|