Projects/tigris
Projects
/
tigris
Archived
5
0
Fork 0
This repository has been archived on 2024-07-04. You can view files and clone it, but cannot push or open issues or pull requests.
tigris/reference/disk.txt

192 lines
6.0 KiB
Plaintext
Raw Permalink Normal View History

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