[abc80] Diskkontroller

H. Peter Anvin hpa at zytor.com
Tors Okt 30 08:27:03 PDT 2008


Anders Sandahl wrote:
> Hej,
> 
> Jag har börjat undersöka hur datorn pratar med floppykontrollern. Datorn
> kommunicerar ju med kontrollen mha IO (motsvarande INP och OUT). Jag har
> konstaterat att man kan använda tre olika kortadresser till kontrollern.
> Först måste man välja vilken kontroller som ska vara aktiv, men sen? Nu
> till mina frågor.
> 
> - Har ABC80 alltid DOS internt? Om inte kan man ta reda på det på något sätt?
> 
> - Hur pratar datorn med floppykontrollern, hur gör dos för att läsa/skriva
> data osv. Vilka IO operationer krävs? Jag har letat efter information i
> servicemanualen för datorn (både för 806 och 80) och för floppystationen
> samt i "Bit för Bit".
> 
> - Styr kortadressen vilken enhetsbetäckning kontrollern får (DR, MF, SF)
> 
> Jag har tyvärr ingen komplett anläggning hemma just nu, bara en ABC80 och
> en ABC832. Har ingen kontroller.... Mao inget att testa på.
> 

Det fanns en rätt matnyttig artikel i ABC-bladet för många år sedan;
tillsammans med informationen på sid. 72-74 i BfB som diskuterar hur de
nyare mediatyperna fungerade; tillsammans är det nog för att jag skulle
kunna implementera en kontroller som UFD-DOS (ABC-klubbens ABC80-port)
kunde tala till i min ABC80-i-FPGA.

I ABC80 satt DOSet alltid på ett kort; i ABC800 var DOSet internt.  I
båda fallen var de 4K på adress 6000h.

Såvitt jag vet är UFD-DOS det enda DOSet som stöder mer än en typ av
skivenheter på en gång.

Din kontroller måste kunna hantera K0-bittarna 0-3 minimum om du inte
bryr dig om formattering.  Obs att DOSet kan skicka mer än ett kommando
i samma byte, om du får kommando 03h t.ex. utför bit 0 först, sen bit 1:
läs en buffer från skiva, sen skicka buffer till dator.

Det finns alltså minst 3 256-byte RAM-buffrar i själva kontrollern
(0,1,2 - buffer 3 är reserverad, men du kan implementera den om du
vill), du läser/skriver alltid till och från en av de RAM-buffrarna i
ställer för direkt till datorn.

Vilken typ av drive du har avgörs av vilken Card Select du accepterar,
enligt tabellen på sid. 74 i BfB.

Ett par ytterligare detaljer:

- Kommando C3 (OUT 4), oavsett data, är en lokal reset av kontrollern.
Den resettar dock ej Card Select.
- Kommando RESET (IN 7) är en global reset som resettar kontrollern
inklusive Card Select.
- Kommando C1 (OUT 2), oavsett data, tvingar kontrollern
att återvända till kommandomod (att den förvändar sig K0..K3 på
dataporten näst), men är inte i övrigt en reset.

	-hpa


More information about the ABC80 mailing list