Instalace Windows 95 na i486
Moderátor: Moderátoři
>xsc
Jo to vim ze z nakyho duvodu maj nekery prevodniky problem s ATAPI komunikaci (opticky mechaniky) zatimco ATA na nich funguje OK. Este mam stale paralelni CD-W TEAC pripojeny k SATA radici pres nakou redukci z ali a vypalovani funguje OK...
Edit: ze by to nak souviselo s pinem IOCS16# ?
Jinak vcera sem si este dones ze srotu dalsi mSATA SSD Adata 64GB a v te redukci se chova stejne jako ten Samsung.
After some basic diagnosis with a volt meter on the IDE cable and visual inspection of the SATA adapter boards today, I think I have an idea about why the MSB is missing. None of the SATA adapters control the -IOCS16 line, so they’re really designed for DMA transfer only where the line is ignored. RiscPC doesn’t support DMA, only PIO, so it’s expecting -IOCS16 to be pulled low if 16bit data is presented on the bus.
Ted uz jen zbyva vyresit, jak ten IOCS16 vygenerovat, aby byl radic spokojeny, resp. zjistit, jak je to na strane radice zadratovane, jestli by nestacilo ten pin na strane disku jesnoduse uzemnit. Pri nejhorsim to musi jit nak vyrobit z RD/WR signalu ORem..
EDIT:
no tak je to jak sem si myslel, Transcend ani ta mSATA redukce nemaji signal IOCS16# (pin 32) vubec zapojeny. Na obou IDE radicich je ten signal proroutovany z IDE konektoru primo na ISA sbernici IOCS16# (pin D2). Kdyz koukam na casovaci diagram, tak ten IOCS16# nebude uplne jednoduche vyrobit. Signaly DIOW#/DIOR# jsou na 1 radici taky primo propojene na ISA IOW#/IOR#, takze primo je sloucit do IOCS16# nemuzu...
Ne, tak spis bych mel vyuzit signaly CS0# a CS1# a z nich udelat AND. Protoze je IOCS16# open collector, tak by to melo jit sloucit 2 diodama se spolecnou anodou na IOCS16# a katodama na kazdy CSx#. Tedy kdyz se na kteremkoliv z nich objevi 0, tak proud protece diodou do zeme a stahne to, to by mohlo fachat. Akorat to jeste komplikuje fakt, ze pri DMA prenosu se ten IOCS16# nesmi generovat...
Hm, tak to nefunguje, navic na tech CS0# a CS1# furt neco lita i kdyz se na disk nepristupuje.
Aha, tak to tak jednoduse nepujde, ten 16-bit pristup je jen k datovemu registru, takze musim postavit plny dekoder z 5 signalu CS1#, CS0#, A2:0 a generovat IOCS16# jen pri kombinaci 0,1,0,0,0 .
rnbw píše:(má len 16 kanálov).
http://sigrok.org/wiki/Lcsoft_Mini_Board
Nešlo by využít kromě portů PB a PD (neboli FD) využít také PA ???RayeR píše:aspoň 24 by to chtělo...
Tak bychom byli na 24 kanálech.
(A možná by se daly použít i CTL/FLAG.)
5.2.11 IOCS16- (Device 16-bit I/O)
During PIO transfer modes 0, 1 or 2, IOCS16- indicates to the host system that the 16-bit data port has been
addressed and that the device is prepared to send or receive a 16-bit data word. This shall be an open
collector output.
- When transferring in any PIO mode and accessing any register except the data port, transfers shall
be 8-bit using DD0-7;
- When transferring in PIO modes 0, 1 or 2, if IOCS16- is not asserted, transfers shall be 8-bit using
DD0-7;
- When transferring in PIO modes 0, 1 or 2, if IOCS16- is asserted, transfers shall be 16-bit using
DD0-15;
- When transferring in PIO modes 3 or 4, IOCS16- shall not be used by the host, and all transfers
shall be 16-bit using DD0-15, except for bytes beyond the 512th byte for READ LONG and WRITE
LONG commands which shall be 8-bit using DD0-7;
- When transferring in DMA mode, the host shall use a 16-bit DMA channel and IOCS16- shall not
be asserted.
Globálně vzato,
Pokud by se měl vytvářet IOCS16 non, udělal bych to takto: Je-li DA(2,1,0)=000b a CS0=LOW a DIOW=LOW, potom IOCS16=LOW (jen příklad, pro zápis). Zkusit ho připojit ke GND trvale bych taky zkusil, nemělo by se nic stát (signál má být open collector).
Dokumentace na www.t13.org je dostupná jen registrovaným, já jich několik postahoval před mnoha lety, kdy to bylo ještě volně k dispozici.
Pokud u toho Sharpu komunikujete ciste 8-bitove a disk to umi (CF karty snad vsechny), tak no problem, pak IOCS16# nepotrebujes.
Podle tehle tabulky bych mel dekodovat tuhle kombinaci.
Melo by to jit udelat z 1x 4-vstup NOR a 1x 2-vstup NAND s O.K. Ten NOR 7429/74HC4002 tu zrovna nemam...
edit: POZOR, V TEHLE TABULCE JE SPATNE CS0, CS1, MA BYT PROHOZENE!
Tak to se kaju, já ty popisy nestudoval řadu let. Nechal jsem se unést, anžto jsem letmo nahlédl do ATA-2 (mám staženo a neztraceno) a neuvědomil jsem si, že to může být nadrátováno bez oddělení (zaměřil jsem se na stranu disku, ne počítače). Ale tu slovní logickou rovnici jsem spáchal stejně, jako je to v onom žlutě zvýrazněním místě v tabulce ideregs....Pripojit IOCS16# na GND je blbost a nefunguje...
Původní studie připojení ATA disku k MZ-800 tak byla skutečně vymyšlená, ale protože v tom případě nefungovalo ono "IDENTIFY DEVICE (OPCODE - ECh)" začal jsem se v původním řešení brněnského sharpisty Zdeňka Adlera vrtat a přišel s řešením se dvěma registry 74F652, které dva zápisy Z80kové instrukce OUT odbaví jako přenos jednoho šestnáctibitového slova na straně disku (analogicky i pro čtení). Na IO adrese, která odpovídá datovému portu u PC (01F0h) se děje výše zmíněný "převod", ostatní ATA porty obslouží Sharp běžnou osmibitovou instrukcí OUT (IN). A protože Sharp nemá sloty ISAPokud u toho Sharpu komunikujete ciste 8-bitove a disk to umi (CF karty snad vsechny), tak no problem...
Spachal sem ten dekoder ze 2 74-hradylek a nefungovalo to. Hodinu si lamu hlavu proc, picham do toho osciloskopem proc ze se IOCS16# negeneruje a nakonec zistuju, ze ty mrtky maj tu tabulku registru na webu spatne, ze je tam prohozena polarita CS0# a CS1#, takze spravne se ma dekodovat kdyz CS0#=0, CS1#=1, DA2:0=0. Takze prehazuju 2 dratky na nepajku a uz to frci, ctu 16-bitove, identify vypada konecne jak ma, tak reset a XTIDE se chytilo a normalne boot. Takze kecy prdy ze nemuze moderni SSDcko behat na 386 ci klidne XTcku...
Vyrobim na to nakou malou desticku, ktera se zezadu radice pripaji na IDE konektor a jumperem se generovany IOCS16# pripoji na pin 32.
Slovní "rovnici" mám dobře, ale nenapadlo mě shlédnout tu tabulku ideregs pořádně. Podvědomě jsem čekal sloupce v pořadí CS0, CS1, DA2, DA1, DA0. A ony jsou názvy signálů nad prvními dvěma sloupečky prohozené, to jsou věci.Pokud by se měl vytvářet IOCS16 non, udělal bych to takto: Je-li DA(2,1,0)=000b a CS0=LOW a DIOW=LOW, potom IOCS16=LOW (jen příklad, pro zápis).
Ale je fakt, že staré přísloví praví, že "pod svícnem je tma". A že se nejjednodušší (a zřejmé) chyby často špatně hledají...
A že ohledně informací z internetu platí věta - "důvěřuj, ale prověřuj".
http://rayer.g6.cz/hardware/retropc2.htm#XTIDE-SSD