[abc80] Hur fungerar ABCs kontrollerkort ? ( Kretsschema för kontrollerkort? )

H. Peter Anvin hpa at zytor.com
Sön Nov 9 16:17:45 PST 2008


juhasz at abc.se wrote:
>> Jag har som sagt skrivbara diskar som funkar med UFD-DOS i min
>> FPGA-modell.  Jag kan inte, och kommer troligen aldrig att kunna, köra
> Kan du guida lite till hur det är uppbyggt i din kod? Skulle vara
> intressant att se. Jag har kollat på din kod tidigare, men är som sagt
> kass på vhdl/verilog, så jag ser inte riktigt hur din modell ser ut.

Först, se artikeln i ABC-bladet som jag scannat:

http://www.abc80.org/docs/kontrollern.pdf

Själva hårdvaran (Verilog) är en DMA-motor som helt enkelt låter CPU:n
på kontrollern programmera in ett antal bytes som dator-CPU:n ska läsa
eller skriva via OUT#/OUT 0 eller DATA#/IN 0.  Det finns också lite
logik för att driva statusporten, STATUS#/IN 1.  Resten sköts i
kontroller-CPU:n program, som är Z80 assembler.

I "utgångsläge" (efter RST#/IN 7 eller C3#/OUT 4) väntar den på att fyra
bytes ska skrivas som är kommandot per artikeln från ABC-bladet som jag
scannade häromveckan.  Som sagt implementerade jag bara kommandona 0-3,
som representeras av bittar.

Här är det viktiga med det: om mer än en bit är satt, ska man utföra
kommandona i ording, från bit 0 framåt.  UFD-DOS skickar normalt
kommandona 0+1 eller 2+3 i en operation (03h eller 0Ch).

Kommando 0 är "läs sektor från skiva till buffer".
Kommando 1 är "läs sektor från buffer till dator".
(följs av 256 bytes IN 0).
Kommando 2 är "skriv sektor från dator till buffer".
(följs av 256 bytes OUT 0).
Kommando 3 är "skriv sektor från buffer till skiva".

Till syvende och sist är det rätt klart att i alla fall UFD-DOSet inte
använder några av de finesser som kontrollern faktiskt har; om inte
ABC-bussen hade varit så beskuren jämfört med den lokala Z80-bussen hade
det nog varit betydligt billigare och snabbare att låta huvud-CPUn sköta
skivhanteringen.

	-hpa



More information about the ABC80 mailing list