RayeR píše:Jasne, kazdy si rad pohraje po svem, jako me potesilo treba to rozbehani LPC-ISA bridge
To by potěšilo i mě.
RayeR píše:Napada me, jestli vod ty floppiny chodi spravne IRQcko, jesi se nemusi este nekde extra povolit.
Jestli myslíš "od mechaniky", tak ta bohužel, ta za INT netahá. To dělá sám FDC (I8272/NEC µPD765, WD37C65 a jeho klony, DP8473, N82077, obvod Prime2 na kartách do 386 a všechno další, co je součástí periferního subsystému v "čipsetech" od 486 PCI) po dokončení příkazů, jako např. seek, možná i po dokončeném přenosu DMA atd. A stačí přečíst stavový registr a už to neotravuje.
V dokumentaci k DP8473 se ohledně povolení INT píše toto:
"INT - Active high output to signal that an operation requires the attention of the microprocessor. The action required depends on the current function of the controller. This signal is enabled when D3 of the Drive Control Register is set."
"DRIVE CONTROL REGISTER (Write Only)
D3 DMA Enable: When set to a 1 this enables the DRQ,
DAK, INT pins. A zero disables these signals."
RayeR píše:...ale jakykoliv pokus o cteni/zapis/format skonci chybou Overrun, co to presne znamena?
V non DMA režimu aktivní INT oznamuje, že je připravený bajt k přečtení (stejně se ještě většinou preventivně programem načítá stavový registr), pokud se používá softwarové dotazování, má se bajt (načtený řadičem) odebrat při příslušně nastaveném bitu stavového registru (D7?).
"INTERRUPT MODE
If the non-DMA mode is selected, an interrupt will be generated
in the Execution Phase when each byte is ready to be
transferred. The Main Status Register should be read to verify
that the interrupt is for a data transfer. Bits 5 and 7 of the
Main Status Register will be set. The interrupt will be
cleared when the byte is transferred to or from the Data
Register. The mP should transfer the byte within the time
allotted by Table VII. If the byte is not transferred within the
time allotted, an Overrun Error will be indicated in the Result
Phase when the command terminates at the end of the current
sector.
An interrupt will also be generated after the last byte is
transferred. This indicates the beginning of the Result
Phase. Bits 7 and 6 of the Main Status Register will be set
and bit 5 will be clear. This interrupt will be cleared by reading
the first byte in the Result Phase.
SOFTWARE POLLING
If the non-DMA mode is selected and interrupts are not suitable
, the mP can poll the Main Status Register during the
Execution Phase to determine when a byte is ready to be
transferred. In the non-DMA mode, bit 7 of the Main Status
Register reflects the state of the interrupt pin. Otherwise,
the data transfer is similar to the Interrupt Mode described
above."
Takže overrun znamená "data nebyla vyzvednuta, ale přepsána dalšími".
RayeR píše:OK, nasel sem zdrojaky tech 2 programu a oba pouzivaji DMA, takze pro me nepouzitelne. Je mozne, ze by ten linux nakou chybou, i pres pouziti parametru nodma presto DMA pouzival? Uz mam dost stary kernel 4.3.3...
Když jsem zkoušel připojovat ISA adaptér ATA/FDC k MZ-800, úspěch se dostavil (čtení jediného sektoru na stopě nula) až poté (mimo dalšího), co se provedl příkaz specify (03h, 2. bajt, 3. bajt). V tom třetím musel být nultý bit jedničkový.
Ale tohle už je od mé poptávky věcí do osmibitů dost daleko.
