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 <20>nsket spor ikke verifisert
|
|||
|
3 CRC error Gal CRC i ID-felt
|
|||
|
2 Track 0 Hodet st<73>r over spor 0
|
|||
|
1 Index Angir begynnelsen av f<>rste sektor
|
|||
|
0 Busy Kommando under utf<74>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 <20>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<72>ring av neste byte
|
|||
|
0 Busy Kommando under utf<74>relse
|
|||
|
|
|||
|
Busy flagget settes n<>r en kommando er under utf<74>relse. Ingen kommando, utenom
|
|||
|
"Force Interrupt" m<> legges inn i kommandoregisteret mens Busy er satt.
|
|||
|
|
|||
|
Type I kommandoer
|
|||
|
|
|||
|
Restore
|
|||
|
|
|||
|
F<EFBFBD>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 <20>nsket m<>lspor.
|
|||
|
F<EFBFBD>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 <20>kende spornummer).
|
|||
|
|
|||
|
Step-Out
|
|||
|
|
|||
|
Flytt hodet ett spor utover (mot spor 0).
|
|||
|
|
|||
|
Type II kommandoer
|
|||
|
|
|||
|
Legg <20>nsket sektor i sektorregisteret.
|
|||
|
|
|||
|
Read Sector
|
|||
|
|
|||
|
Overf<EFBFBD>rer <20>nsket sektor byte for byte gjennom dataregisteret. Hver gang en byte
|
|||
|
er klar for overf<72>ring settes "Data request" flagget i statusregisteret. Etter
|
|||
|
endt operasjon settes "Recort type" flagget i statusregisteret.
|
|||
|
|
|||
|
Write Sector
|
|||
|
|
|||
|
Skriver <20>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<EFBFBD>rer gjennom dataregisteret det neste ID feltet som passeres. Hver gang en
|
|||
|
byte er klar for overf<72>ring settes "Data request" flagget i statusregisteret.
|
|||
|
ID feltet best<73>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<EFBFBD>rer hele sporet gjennom dataregisteret, inkludert ID felt og mellomrom.
|
|||
|
Hver gang en byte er klar for overf<72>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<72>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 <20> stanse en p<>g<EFBFBD>ende operasjon f<>r den avsluttes p<> normalt vis,
|
|||
|
eller sikre type I statusregister.
|
|||
|
Hvis denne kommandoen settes mens en annen kommando utf<74>res (busy = 1), vil
|
|||
|
busy settes lik 0 og resten av statusregisteret er uforandret.
|
|||
|
Hvis busy = 0 n<>r denne kommandoen utf<74>res vil statusregisteret slettes /
|
|||
|
oppdateres og reflektere type I statusregister.
|
|||
|
|
|||
|
---
|
|||
|
21 januar 2001
|
|||
|
Asbj<EFBFBD>rn Djupdal, djupdal@stud.ntnu.no
|
|||
|
|