FDC3: Porovnání verzí
(→Popis portů) |
(→Popis portů) |
||
(Není zobrazeno 8 mezilehlých verzí od stejného uživatele.) | |||
Řádka 4: | Řádka 4: | ||
Určitou zvláštností je vestavěný sekvenční automat, který ve spojení s 1 KB SRAM na desce nahrazuje DMA kanál a dokáže přenášet data bez účasti procesoru. Je tedy možné řadič obsluhovat klasicky procesorem, nebo zapnout automat, odeslat příkaz do WD a po vykonání příkazu automat vypnout a přečíst obsah SRAM na jednom portu | Určitou zvláštností je vestavěný sekvenční automat, který ve spojení s 1 KB SRAM na desce nahrazuje DMA kanál a dokáže přenášet data bez účasti procesoru. Je tedy možné řadič obsluhovat klasicky procesorem, nebo zapnout automat, odeslat příkaz do WD a po vykonání příkazu automat vypnout a přečíst obsah SRAM na jednom portu | ||
+ | Signál -Ready z disketové jednotky se nepoužívá. Deska si jej generuje ze signálu -Index pomocí monostabilního klopného obvodu. Pokud je ve vybrané jednotce disketa, jsou zavřená dvířka a motor se otáčí správnou rychlostí, signál Ready přejde do aktivního stavu. | ||
== Popis portů == | == Popis portů == | ||
Řádka 13: | Řádka 14: | ||
D0 = 1-přerušení povoleno 0-zakázáno | D0 = 1-přerušení povoleno 0-zakázáno | ||
R stav přerušení | R stav přerušení | ||
− | D0 = 1-řadič žádá o přerušení (i když je zakázané maskou) | + | D0 = 1-řadič žádá o přerušení (i když je zakázané maskou) nuluje se čtením base+0 |
D1 = rezerva | D1 = rezerva | ||
D2 = rezerva | D2 = rezerva | ||
Řádka 24: | Řádka 25: | ||
base+6 RW data registr WD2797 | base+6 RW data registr WD2797 | ||
− | base+8 W pomocný registr 3212 | + | base+8 R dává 0xFF, používá se pro detekci desky, port na kterém nic není dává 0x00 |
− | D0 = časování 0-8¨ | + | W pomocný registr 3212 |
+ | D0 = časování 0-8¨ 1-mini floppy | ||
D1 = Drive select 3 (aktivní v 1) | D1 = Drive select 3 (aktivní v 1) | ||
D2 = 0-Reset WD2797 | D2 = 0-Reset WD2797 | ||
D3 = Drive select 2 (aktivní v 1) | D3 = Drive select 2 (aktivní v 1) | ||
D4 = 0-MFM 1-FM (single density) | D4 = 0-MFM 1-FM (single density) | ||
− | D5 = Drive select | + | D5 = Drive select 1 (aktivní v 1) |
− | D6 = Drive select | + | D6 = Drive select 0 (aktivní v 1) |
D7 = Fault reset (aktivní v 1) používají některé starší 8¨ | D7 = Fault reset (aktivní v 1) používají některé starší 8¨ | ||
+ | |||
+ | base+A RW registr pro komunikaci se SRAM, pokud je stavový automat v poloze CPU. | ||
+ | |||
+ | base+C W po OUT na tento port se vnutí NOP při čtení instrukce, jakmile WD2797 má/požaduje byte dat. Jednorázově. | ||
+ | |||
+ | base+E W MODE registr stavového automatu | ||
+ | D0 = hrana 1->0 reset čítačů adresy ve SRAM | ||
+ | D1 = 0-se SRAM komunikuje automat 1-se SRAM komunikuje procesor | ||
+ | D2 = směr přenosu 0-WD->SRAM 1-SRAM->WD | ||
+ | D3 = 0-automat vypnut, procesor čte přímo porty WD 1-porty čte automat | ||
+ | |||
+ | |||
+ | Rozbor použítí portu 6E: | ||
+ | |||
+ | 02 (0000 0010) - GCrom zavaděč | ||
+ | ------------------------------ | ||
+ | jeho rutina vyčítá data "ručně", ne přes automat | ||
+ | vždy INI,smyčka,In A,(6A),INI,opakuj smyčku | ||
+ | INI pracuje s portem 66, s hodnotou z portu 6A se nijak nepracuje | ||
+ | |||
+ | BIOS v SYS.SYS | ||
+ | |||
+ | inicializace diskového systému | ||
+ | ------------------------------ | ||
+ | |||
+ | 0A (1010) - start SYS.SYS | ||
+ | |||
+ | 09 (1001) - hned po startu tato hodnota | ||
+ | |||
+ | |||
+ | zápis sektoru: | ||
+ | -------------- | ||
+ | |||
+ | 0B (1011) - před OTIR dat do SRAM | ||
+ | |||
+ | 0A (1010) - po OTIR | ||
+ | |||
+ | 0D (1101) - těsně před povelem zápis sektoru pro WDC !!!! (již automat) | ||
+ | |||
+ | 0B (1011) - po příchodu příznaku přerušení od WD po vykonání povelu | ||
+ | |||
+ | |||
+ | čtení sektoru | ||
+ | ------------- | ||
+ | |||
+ | 09 (1001) - těsně před povelem řadiči ke čtení !!!! (již automat) | ||
+ | |||
+ | 0B (1011) - po příchodu příznaku přerušení od WD po vykonání povelu | ||
+ | |||
+ | 0A (1010) - po skončení čtení | ||
+ | |||
+ | 0B (1011) - před INIR |
Aktuální verze z 30. 11. 2021, 11:00
FDC3 je řadič floppy disku umožňující připojení jedné až čtyř mechanik. Deska používá řadič WD2797 ve více méně obvyklém zapojení. Softwarově je možné na pomocném portu přepínat časování pro 8¨ a pro mini floppy, a také FM i MFM modulaci. Bázovou adresu desky je možné měnit propojkami u adresního dekodéru. Je tedy možné používat více desek najednou. Výchozí adresa je 0x60.
Určitou zvláštností je vestavěný sekvenční automat, který ve spojení s 1 KB SRAM na desce nahrazuje DMA kanál a dokáže přenášet data bez účasti procesoru. Je tedy možné řadič obsluhovat klasicky procesorem, nebo zapnout automat, odeslat příkaz do WD a po vykonání příkazu automat vypnout a přečíst obsah SRAM na jednom portu
Signál -Ready z disketové jednotky se nepoužívá. Deska si jej generuje ze signálu -Index pomocí monostabilního klopného obvodu. Pokud je ve vybrané jednotce disketa, jsou zavřená dvířka a motor se otáčí správnou rychlostí, signál Ready přejde do aktivního stavu.
Popis portů
base+0 W command registr WD2797 R status registr WD2797
base+1 W maska přerušení desky D0 = 1-přerušení povoleno 0-zakázáno R stav přerušení D0 = 1-řadič žádá o přerušení (i když je zakázané maskou) nuluje se čtením base+0 D1 = rezerva D2 = rezerva D3 = stav masky přerušení
base+2 RW track registr WD2797
base+4 RW sector registr WD2797
base+6 RW data registr WD2797
base+8 R dává 0xFF, používá se pro detekci desky, port na kterém nic není dává 0x00 W pomocný registr 3212 D0 = časování 0-8¨ 1-mini floppy D1 = Drive select 3 (aktivní v 1) D2 = 0-Reset WD2797 D3 = Drive select 2 (aktivní v 1) D4 = 0-MFM 1-FM (single density) D5 = Drive select 1 (aktivní v 1) D6 = Drive select 0 (aktivní v 1) D7 = Fault reset (aktivní v 1) používají některé starší 8¨
base+A RW registr pro komunikaci se SRAM, pokud je stavový automat v poloze CPU.
base+C W po OUT na tento port se vnutí NOP při čtení instrukce, jakmile WD2797 má/požaduje byte dat. Jednorázově.
base+E W MODE registr stavového automatu D0 = hrana 1->0 reset čítačů adresy ve SRAM D1 = 0-se SRAM komunikuje automat 1-se SRAM komunikuje procesor D2 = směr přenosu 0-WD->SRAM 1-SRAM->WD D3 = 0-automat vypnut, procesor čte přímo porty WD 1-porty čte automat
Rozbor použítí portu 6E:
02 (0000 0010) - GCrom zavaděč
jeho rutina vyčítá data "ručně", ne přes automat vždy INI,smyčka,In A,(6A),INI,opakuj smyčku INI pracuje s portem 66, s hodnotou z portu 6A se nijak nepracuje
BIOS v SYS.SYS
inicializace diskového systému
0A (1010) - start SYS.SYS
09 (1001) - hned po startu tato hodnota
zápis sektoru:
0B (1011) - před OTIR dat do SRAM
0A (1010) - po OTIR
0D (1101) - těsně před povelem zápis sektoru pro WDC !!!! (již automat)
0B (1011) - po příchodu příznaku přerušení od WD po vykonání povelu
čtení sektoru
09 (1001) - těsně před povelem řadiči ke čtení !!!! (již automat)
0B (1011) - po příchodu příznaku přerušení od WD po vykonání povelu
0A (1010) - po skončení čtení
0B (1011) - před INIR