FDC3: Porovnání verzí

Z OldComp Wiki
Přejít na: navigace, hledání
(Popis portů)
(Popis portů)
 
(Není zobrazeno 6 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 26: Řádka 27:
 
   base+8 R dává 0xFF, používá se pro detekci desky, port na kterém nic není dává 0x00
 
   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
 
         W pomocný registr 3212
             D0 = časování 0-8¨ nebo HD 1-mini floppy
+
             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
Řádka 37: Řádka 38:
 
   base+A RW registr pro komunikaci se SRAM, pokud je stavový automat v poloze CPU.
 
   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 místo následující instrukce, pokud WD2797 má/požaduje byte dat.
+
   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
 
   base+E W MODE registr stavového automatu
             D0 = 1-Reset čítačů adresy ve SRAM
+
             D0 = hrana 1->0 reset čítačů adresy ve SRAM
             D1 = 0-s řadičem a SRAM komunikuje CPU, 1-automat aktivní
+
             D1 = 0-se SRAM komunikuje automat 1-se SRAM komunikuje procesor
             D2 = 0-čtení 1-zápis
+
             D2 = směr přenosu 0-WD->SRAM 1-SRAM->WD
             D3 = ? (nejsem si jist, doplním)
+
             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