GEOS jest na tyle rozsądnie zaprojektowany, że sterownik dysku jest oddzielony od reszty. Ma własną tablicę funkcji i wektorów. System plików (zgodny z firmowym CBM) jest realizowany przez GEOS kernal. Wszystko, czego GEOS wymaga od sterownika to:
- adresowanie bloków przez 2 bajty przy czym pierwszy (ścieżka) musi być rózny od 0
- blok danych zawsze ma 256 bajtów
Funkcje, które musi realizować sterownik to:
- odczyt/zapis/zapis z weryfikacją/odczyt linku
- przechodzenie po wpisach w katalogu
- obsługa mapy zajętości (przy czym nie musi to być BAM taki sam, jak w CBM)
Jedyny problem jest w instalacji tego sterownika dysku. Na gołym C64 nie ma na to po prostu miejsca. Na C128 nie ma problemu, bo jest dosyć pamięci na 3 różne sterowniki. Na C64/128 z REU można mieć 4 różne sterowniki bez żadnego grzebania. Dlatego mój instalator ma wprowadzoną dodatkowo obsługę rozszerzeń pamięci (obecnie tylko RamCart i +60K). Tam umieszcza dodatkowy sterownik i poprawia GEOS kernal, żeby tam swapował dane.
Tak, CIA-IDE jest wolniejsze od bezpośredniego podłączenia do szyny IDE, ale ma dwie ważne zalety:
- działa na C128 (wcześniej próbowałem 3 innych projektów bezposredniego polaczenia; wszystkie dzialaly dla C64, zaden nie dawal wiarygodnych odczytow na C128)
- jest o wiele prostsze
- nie zauwazysz roznicy
Pisząc o trybie 8-bitowym miałem na myśli komendę ATA $EF (SET FEATURES) z parametrem $01. Tyle, że to jest opcjonalne i nie mam dysku, który by to obsługiwał.
Dlaczego uważasz, że uC i IDE64 to ślepa uliczka? Ok. IDE64 to kompletny projekt i nic tam nie można zmienić, ale flashowany BIOS to wspaniała sprawa. Tak samo z IEC-ATA - oparty na AVR, można w dowolnym momencie zmienić cały firmware. W wersji opisanej przez autora jest tylko 2k na firmware, co jest wykorzystane do ostatniego bajtu, ale bez problemu można użyć zamiennika z większą ilością pamięci. Nawet piny są zgodne.
CIA-IDE będzie miał load/save/open/close jak to ktoś sobie napisze. Ja zrobiłem rachunek zysku/k