26

Witam panowie!

niechce mi się cytować, bo było by tego dużo. Napiszę najważniejsze:

1. Kontroler IDE KMK ma następujące ograniczenia:

- 24 bity na nr. sektora (256 lub 512 bajtów) czyli max 8GB dysk
  ograniczenie to jest dla trybu adresowania CHS (cylindry, głowice, sektory) natomiast jeśli zastosujemu adresowanie LBA, to numer sektora możemy zapisać na 28 bitach, co zwiększa maxymalną pojemność dysku do  8O  128GB 8O Testy przeprowadzone na dysku Maxtor 6Y0120L0 (120GB) wypadły pomyślnie!

Kontroler zapisuje 4 dodatkowe bity w rejestrze, gdzie normalnie jest wybur napędu (master/slave) - 4 najmłodsze bity.

co do biosow, to blad w hdbios12 byl prozaiczny - brakowalo LDY #$00 przed procedurą odczytu sektora "w powietrze".

jesli masz biosa v1.2 i niemasz sparty, a chcesz uzywac sobie dysku slave - np. do skopiowania czegos od drugiego posiadacza hdd zide kmk, to polecam programik rezydenty zawierajacy hdbios14.bin, ktory sie relokuje na memlo. Programik realizuje to samo co hdbios13.sys pod sparte. potem uzywamy slave.com (by KMK) i kopiujemy co trzeba. Wada tego rozwiazania jest to ze po resecie musimy uruchomic ponownie slave.com - bios (kazdy) po resecie niszczy tablice z ramu - zmodyfikowana przez slave.com - po to stworzono nowego FDisk'a - a w zasadzie to nazwy jeszcze niema, ale jestem sklonny do "PartitionWizard" lub cos w tym stylu - interfejs uzytkownika wzorowany jest na PowerQuest PartitionMagic for DOS", który dostałem wraz z płytą główną MSI do grzyba - znacznie leprze niz FDisk (PC).

rozkazy kontrolera wysylane do dysku (read/write sector(s) ) dla trybu CHS i trybu LBA są różne!

... ja musiałem to wszystko rozpracować samemu, gdyż kilkakrotna próba kontaktu z kmk zakonczyla sie niepowodzeniem - probowalem przez p. Jacka Żuka i poprzez Lizarda - od tego drugiego wiem, ze KMK niebyl chetnie nastawiony do wspolpracy, wiec wszystko musialem rozpracowac samemu - do filesystemu HiDOS użyłem dokumentacji znalezionej w necie - najpomocniejsza okazala sie dokumentacja do dyskuó WDC i Quantum - podobno na tej dokumentacji wzorowali się konstruktorzy interfejsu  :D - od tego sie zaczelo - potem znalazlem dokumentacje do najnowszych standardow obslugi dyskow i napedow cd/dvd i filesystemow cd (lizard: poszedlam za tym co napisales - znalazlem dokumentacje i zrezygnowalem z identyfikatora "CD" w swoim filesystemie)

co do 16 partycji na tym interfejsie, to problem rozwiazalem w nowym programie do zarzadzania partycjami dla dyskow pod kontrolerem IDE KMK:

- max. poj. dysku 128GB  :!:
- obsluga 256/512 bajtow na sektor
- obsluga adresowania CHS i LBA
- do 64 (!) partycji na dysku  :!:
- obsluga obu dyskow (master/slave) - wszystkie operacje dotyczace partycjonowania  :D
- mozliwosc ukrywania dowolnej partycji  :D
- juz stwrzone partycje mozna przypisywac pod dowolny numer stacji D1-D16 - nawet co kilka sekund  :D  :D  :D
- w procesie bootowania - autodetekcja i prezentacja parametrow dysków i napędu CD - jeśli jako slave jest dysk twardy, to system (przed wczytaniem jeszcze DOS'a) "zamontuje" partycje z tego dysku - (funkcja odporna na reset - nietrzeba za kazdym razem odpalac "slave.com"  :D  ) Jesli dysk slave tez byl partycjonowany moim narzędziem, to montowane beda tylko te partycje, ktore uzytkownik wybral - reszta dostepna tylko z poziomu HiDOS'a. Jesli dysk partycjonowany byl FDISK'iem (KMK), to partycje przypisywane sa po koleii, ale tylko pod numery Dx:, ktore uzytkownik zaznaczyl, ze te numery moga byc na to przeznaczone - np. d1: moze byc zarezerwowane dla naszego flopa, d2: to sio2pc, etc.
- dostep do wszystkich zalozonych partycji (>16) jest możliwy, ale tylko pod kontrolą HiDOS'a

FAQ: Cegła waży kilogram i pół cegły. Ile ważą dwie cegły ? :D

JIL 4EVER!

27

No gratuluje, przynajmniej nie bede musial pisac nowego FDISK-a.

Co do ograniczen, to jak juz powiedzialem Duddiemu, sterownik powstawal 10 lat temu, kiedy za duzy uchodzil dysk 420 MB. Mozliwosc zaadresowania 8 GB byla wiec przyjeta z 20-krotnym naddatkiem. No ale mamy roku 2004 i teraz to jest 20x za malo.

Poniewaz i tak zamierzam zmienic format tablicy partycji - tak zeby partycji mogla byc nieograniczona liczba - wiec pewnie przy okazji zrobi sie 32-bitowa adresacje z mozliwoscia rozszerzenia w przyszlosci do 64 bitow ;-)

Gdybys planowal jakies bety tego partition wizarda, to chetnie przetestuje. No i jeszcze jedna uwaga: nie wszystkie dyski, ktore ludzie maja do Atari, obsluguja LBA. Moj np. nie obsluguje. CHS jest upierdliwy, ale bezpieczniejszy.

Co do bledu w 1.2, to chyba wlasnie tak bylo, ale glowy nie dam.

KMK
? HEX$(6670358)

28

Gdzie znajde opis obslugiwanych komend kontrolera ?

Odpowiadam solidniej na pytanie pierwsze: kiedyś była jakas dokumentacja, ale zginęła. Ale, ponieważ właśnie dokonałem znaleziska najnowszych źródeł sterownika (v. 1.4, o których byłem przekonany, ze przedpadły), mogę ci powiedzieć co następuje:

Kontroler obsługuje normalnie komendy: read/put/write sector (przy czym write = put), read status, read percom. Przy tym trzeba pamiętać, że wielkość transferu jest z góry określona, to znaczy niezależna od tego, co zapiszemy w DBYT. *NIEMNIEJ* DBYT trzeba ustawiać, bo z powodu że najnowsza wersja sprzętu przeznacza aż 3 kilo na program sterownika, być może zrobię z DBYT jakiś użytek.

Blok PERCOM wygląda tak:

0 - wartość 1 (znaczy, że twardy dysk)
1 - numer wersji zczytany z ROM-u ($14 = 1.4)
2 - starszy bajt liczby sektorów partycji
3 - młodszy bajt liczby sektorów partycji
4 - najstarszy bajt liczby sektorów partycji
5 - flagi, nie pamiętam, zapisuje to FDISK
6 - liczba bajtow na sektor, starszy bajt
7 - liczba bajtow na sektor, mlodszy bajt
8 - $FF
9 - "I"
10 - "D"
11 - "E"

Ponieważ ktoś napisał, że PERCOM SIO2IDE wygląda podobnie, więc przypuszczałbym, że ktoś się tu zainspirował moimi wynalazkami.

Rozkaz read status zwraca 4 bajty, z czego:

bajt 0, bit 3 = 1 - write protection, bit 4 = 1 - podpięte są dwa dyski
bajt 1, rejestr ERROR kontrolera (bieżąca wartość), eor #$FF
bajt 2, bez znaczenia
bajt 3, bez znaczenia

Rozkazy dodatkowe:

$E6 - SLEEP - powinien zaparkować dysk i faktycznie to robi w przypadku większości napędów.

$E7 - RESET - resetuje oba napędy, co powinno je obudzić (jeśli zrobiono przedtem SLEEP)

$EC - INDENTIFY DRIVE - zwraca informacje o napędzie (p. dokumentacja dysków ATA)

$EE - MEDIA CHANGE - odczytuje na nowo bootsektor dysku (mam na myśli master boot sektor, z tablicą partycji i wszystkim) do wewnętrznej pamięci sterownika, oraz resetuje wewnętrzne zmienne.

Jedyny parametr, jakiego te rozkazy wymagają, to numer którejkolwiek partycji w DUNIT, no i $31 w DDEVIC. Jak będzie więcej miejsca, to się może zrobi, żeby DUNIT nie trzeba było ustawiać (bo i po co).

Jak rozpoznac obecnosc kontrolera SIO2IDE, KMK ?

Dodatkowa informacja: numer wersji sterownika jest zapisany pod adresem $d804 w postaci DCB, tj. $14 = 1.4

KMK
? HEX$(6670358)

29

Sorry, dalem "Zmien" przy wlasnym poscie, ale nie przewidzialem, ze toto "zmieni" tresc wstawiajac po prostu nowy post. Idzie o to, ze w bloku PERCOM jest oczywiscie wykazana wielkosc sektora w bajtach, a nie zadna liczba cylindrow, jak mi sie - nie wiadomo dlaczego - napisalo poprzednio.

KMK
? HEX$(6670358)

30

Co do ograniczen, to jak juz powiedzialem Duddiemu, sterownik powstawal 10 lat temu, kiedy za duzy uchodzil dysk 420 MB. Mozliwosc zaadresowania 8 GB byla wiec przyjeta z 20-krotnym naddatkiem. No ale mamy roku 2004 i teraz to jest 20x za malo.

To fakt. Tyle że intencje były takie, aby bez problemu podłączyć dyski które teraz (w 2004 i dalej) można nabyć. Czy za jest to mało? Jeśli będziemy na atarce odtwarzać DivX'y, to pewnie tak  :lol:  :lol:  :lol:

[quote"drac030"]Poniewaz i tak zamierzam zmienic format tablicy partycji - tak zeby partycji mogla byc nieograniczona liczba - wiec pewnie przy okazji zrobi sie 32-bitowa adresacje z mozliwoscia rozszerzenia w przyszlosci do 64 bitow"

32 bity w/g sa wystarczajace - kontroler w obecnej wersj hardware jest w stanie zaadresować sektor na 28 bitach. Dopiero dyski od 128 GB (czyli od 160 bo niema żadnego miedzy 128 a 160) potrafia - a wręcz muszą używać 48 bitowego adresowania LBA. Lecz, aby bylo to mozliwe, konieczne jest posiadanie 80 zylowego kabla i odpowiedniego dysku. - w takim adresowaniu nie używane są 4 dodatkowe bity, które pewnie znów zaczną być używane jesli 48 bitowe adresowanie znow bedzie niewystarczajace. (2x4 = 8 - po 4 bity na 40 zyl w kablu - razem 8 bitow)

Gdybys planowal jakies bety tego partition wizarda, to chetnie przetestuje.

ok, ale pierwszy w kolejce jest Pinek - to za jego zasługi!!!  :D


No i jeszcze jedna uwaga: nie wszystkie dyski, ktore ludzie maja do Atari, obsluguja LBA. Moj np. nie obsluguje. CHS jest upierdliwy, ale bezpieczniejszy.

wiem, tryb LBA używany jest jesli dysk to potrafi obsluzyc. Z reguly kazdy dysk >8GB potrafi - bo inaczej sie niezaadresuje calej jego przestrzeni :) w mniejszym dysku nie ma sensu uzywac LBA, jesli CHS dziala gittes...  :D

CHS - pozostał niezmieniony bit 7 ($80) - Dla bezpieczeństwa partycja LBA oznaczona jest bitem 6 ($40), numer dysku bez zmian - bit 4 ($10), bity 3-0 to 4 najstarsze w adresowaniu LBA - bios (przynajmniej w v1.2 i v1.4) -i tak kasują wszystkie nieużywane bity, więc zastosowanie bitu 6 spowoduje, że bios ich niezobaczy - wartos dodatnia - staralem sie zachowac kompatybilnosc.

Analogicznie jest z

Co do bledu w 1.2, to chyba wlasnie tak bylo, ale glowy nie dam.

tak bylo - spedzilem kilka dni zanim doszedlem do tego  :)

Podobnie jest z rozszeżeniem biosu - wykożystełem procke kontrolowanegop bootu, do rozszeżenia systemu - sprawdzanie dysku slave i odczyt z niego partycji - i zapis ponowny na master - przez reset nietrzeba wykopnywać ponownie slave.com. jesli dysku slave niema lub jest to urzadzenie ATAPI, to wpisy partycji z dysku slave są kasowane i zapisywane. Ponadto raz spartycjowowany dysk pod PartitionWizard, niepotrzebuje DOS'a, aby sie uruchomic - jesli ustawimy partycje startowa np., ktora go nie ma (boota), to wystarczy przytrzymac HELP przy uruchamianiu systemu i zamiast DOS'a uruchomi sie "PW" - dokonujemy zmian, zapisujemy je i bez restartu (  :lol:  :lol:  :lol:  )uruchamiamy se system  :D

Ponadto w opracowaniu jest sopsob uruchamiania programow nie dosowych - nawet z sektorem 128 bajtow i na przerwaniach IRQ zmienia dyskietke (np. klawisze sh+ctrl+ 0-9), ale narazie testy - moze zadziala. napewno ze znacznie wieksza liczba progow niz dotychczas.

FAQ: Cegła waży kilogram i pół cegły. Ile ważą dwie cegły ? :D

JIL 4EVER!