1

Jakie sa ograniczenia kontrolerow HDD stosowanych w Atari ?

Czy partycja HDD musi miec koniecznie sektory max 256 bajtow ?

Czy jest ograniczona liczba sektorow ktore potrafi kontroler zaadresowac ?

W jaki sposob mozna odwolac sie do kontrolera, przez DCB ?

Gdzie znajde opis obslugiwanych komend kontrolera ?

Jak rozpoznac obecnosc kontrolera SIO2IDE, KMK ?

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

2

Jakie sa ograniczenia kontrolerow HDD stosowanych w Atari ?

Takie jak samego systemu operacyjnego Atari, bo to on tu stwarza ograniczenia. Czyli (teoretycznie, bo praktycznie bywa inaczej) jednoczesnie widoczne dla sysemu 15 partycji zawierajacych max. 65536 sektorow 256 bajtowych. Jak to sobie wewnetrznie kontroler organizuje to jego sprawa - wazne jak widzi to komputer.

Czy partycja HDD musi miec koniecznie sektory max 256 bajtow ?

Od strony Atari moze miec 128 lub 256b (chyba ze zmienisz OS lub zastosujesz swoje wlasne procedury komunikacji z dyskiem). Wewnetrznie kontroler moze sobie trzymac to wszystko (i trzyma) stosujac sektory 512b.

Czy jest ograniczona liczba sektorow ktore potrafi kontroler zaadresowac ?

Kontroler - raczej nie (zalezy od jego konstrukcji i oprogramowania). Jednak - jak pisalem wyzej - Atari ze standardowym OSem ma ograniczenie do 65536 sektorow (oczywiscie w obrebie jednej partycji).

W jaki sposob mozna odwolac sie do kontrolera, przez DCB ?

Tak jak do kazdego innego urzadzenia (przynajmniej w przypadku SIO2IDE), kontroler ma swoj identyfikator tak jak maja je inne urzadzenia podpinane do Atari ($30 - stacja dyskow, $40 - drukarka, $60 magnetofon). SIO2IDE reaguje na rozkazy wysylane do stacji dyskow (czyli $31, $32, itd.) i odpowiada wtedy jak standardowa stacja dyskow, reaguje tez na identyfikator specjalnie dla niego przeznaczony (nie pamietam juz - chyba $E1) i wtedy mozna komunikowac sie bezposrednio z kontrolerem, zmieniac przypisanie partycji i wiele innych parametrow - ale to juz zalezy od kontrolera - wszystko znajdziesz w opisie SIO2IDE.

Jak rozpoznac obecnosc kontrolera SIO2IDE, KMK ?

KMK ?? , SIO2IDE - wyslij jakies zapytanie bezposrednio do kontrolera - jesli odpowie to jest ;).

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

3

reaguje tez na identyfikator specjalnie dla niego przeznaczony (nie pamietam juz - chyba $E1)

Chodzi oczywiście o $71 (SIO2IDE)

Jak rozpoznac obecnosc kontrolera SIO2IDE

Dla SIO2IDE można użyć standardowej komendy $4E (odczyt statusu), w bajcie 1 mamy wersję SIO2IDE, a w 9-11 identyfikator "IDE".
Więcej info - patrz TECH_MANUAL w zipie z softem od autora SIO2IDE.

4

czyli ograniczenia wprowadza tylko zastosowany DOS, wlasne procedury moglyby obsluzyc pewnie i FAT16, tak ?

Ale Sparta i ograniczenie sektora do 256 bajtow, a ich liczbe do $FFFF jest w zupelnosci wystarczajace, zgadzacie sie ?

I chyba nie warto forsowac nowego formatu, chyba ze bylby to zgodny z platformą PC, zgadzacie sie ?

p.s.
planuje napisac procedury obslugujace dyskietke Sparty bez udzialu Sparty, czyli taką mini Sparte, a moze ktos juz takie posiada ?

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

5

Poczytalem dokumentacje do BWDos'a Jiri Bernaska i zdaje sie ze nie trzeba pisac wlasnych, krotszych procedur dla Sparty, bo BWDos jest w sam raz. Nie uzywa banku dodatkowego, wszystko siedzi w RAM, nie korzysta z pamieci pod ROM.

Ktos uzywal juz BWDos'a i HDD ?

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

6

Tak naprawde procedury obslugi dyskietki w trybie Sparty beda prostrze od standardowych dla Atari DOS :)
Polecam analize loadera (takze autorstwa Izego Bernaska) Micro Sparta DOS (MSDOS), jakby cos to posiadam w miare skomentowane (no dobrze .... zdisasemblowane i opisane to co bylo najpotrzebniejsze, ale latwo przeanalizowac) zrodla, ostatniej wersji przygorowanej do obslugi trybu UltraSpeed. Procedyry te poza tym ze czytaja pliki zapisane w formacie Sparta DOS maja wlasna obsluge SIO przez co wykrywaja i obsluguja wiekszosc dopalaczy (efekt uboczny - dzialaja przy wylaczonym ROMie!!) - i sa naprawde krotkie!!

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

7

BWDOS - przy HDD to lekki bezsens. Sparta X zapewnia o wiele większy komfort pracy. Co do KMK - wiem tyle, że kontroler da się przestawić tak, by dysk obsługiwany był w trybie 512B / sektor, licznik sektorów miał bodajże 24bity, więc ograniczenie partycji 16MB jest domeną istniejących dosów. W tym trybie myśle, że nie byłoby problemów z fat16 (najlepiej jakiś nowy dos...);- i to miało by sens. Ograniczenie dla istniejących dosów w postaci 16MB partycji jest bardzo "niefajne" - czego doświadcza na dłuższą metę (melinę) każdy użyszkodnik HD. KMK zachowyje przy (512B/sect.) tym R/W ok. 75kB/s przy Antic ON i ok. 100kB/s przy off. Zresztą jest kilka programów (pod SDX) obsługujących dysk we wspomnianym trybie: idecopy, anim_1MB (Lizard), player do ..hehe Matrixa by Epij, r0l0 player do *.wav.. i takie tam.

Szczegóły....  :D  Epij, Lizard, Pasiu - jest tam kto???

Kontakt: pin@usdk.pl

8

Takie jak samego systemu operacyjnego Atari, bo to on tu stwarza ograniczenia. Czyli (teoretycznie, bo praktycznie bywa inaczej) jednoczesnie widoczne dla sysemu 15 partycji zawierajacych max. 65536 sektorow 256 bajtowych. Jak to sobie wewnetrznie kontroler organizuje to jego sprawa - wazne jak widzi to komputer.

Gucio prawda. System nie stwarza takich ograniczeń. Sterownik KMK IDE stwierdza odwołanie do HDD poprzez sprawdzenie czy w DDEVIC ($0300) siedzi $31, a w DUNIT ($0301) coś z zakresu 1-16. Gdyby wywalić to drugie sprawdzenie i uznać, że jest to numer partycji, to może być ich 256!

Od strony Atari moze miec 128 lub 256b (chyba ze zmienisz OS lub zastosujesz swoje wlasne procedury komunikacji z dyskiem). Wewnetrznie kontroler moze sobie trzymac to wszystko (i trzyma) stosujac sektory 512b.

I znów pudło! Od czego jest w DCB DBYT1 ($0308) i DBYT2 ($0309)? W nich ustawia się ilość danych przesyłanych przy jednym wywołaniu SIO. Jeśli masz sektory 512B i przestawisz partycję w takie sektory i zabiszesz w DBYTn 512, to masz operacje na 512B.

Jednak - jak pisalem wyzej - Atari ze standardowym OSem ma ograniczenie do 65536 sektorow (oczywiscie w obrebie jednej partycji).

Nie do końca. Owszem numer sektora zwykle zapisuje sie w dwóch bajtach (DAUX1 - $030A i DAUX2 - $030B). Ale DCB ma jeden bajt nieużywany ($0307), który można wykorzystać np. jako najstarszy bajt numeru sektora (bity 16-23). Wtedy masz 16,77 milionów sektorów. Jesli użyjesz sektorów 512B, to partycja może mieć do 8GB (tyle też maksymalnie obsłuży sterownik KMK IDE).

Jak rozpoznac obecnosc kontrolera SIO2IDE, KMK ?

W wersji 1.2 pod adresem $DDD9 masz tekst "IDE BIOS v.1.2n(c) 1995-97 by Dracon". Poza tym pod adresami $D800-$D802 są kolejno wartości: $20, $07, $70. Są to tzw. magic numbers, niezmienne i unikatowe dla KMK IDE. :)

Zawsze mam rację, tylko nikt mnie nie słucha.

9

Pecus, chetnie przyjme zdisasemblowany loader Sparty, adres email tbiela@poczta.onet.pl

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

10

p.s.
planuje napisac procedury obslugujace dyskietke Sparty bez udzialu Sparty, czyli taką mini Sparte, a moze ktos juz takie posiada ?

Hmm, o ile pamiętam było kilka wersji spart plikowych... A poza tym - jest loader dysków sparty (obsługuje podkatalogi), używałem kiedyś ze stacją Karin Maxi. Chwilowo mam padniętą pamięć w kompie z Karinką, jak zrobię - to odgrzebię loaderek!!!

Sikor umarł...

11

Gucio prawda. System nie stwarza takich ograniczeń. Sterownik KMK IDE stwierdza odwołanie do HDD poprzez sprawdzenie czy w DDEVIC ($0300) siedzi $31, a w DUNIT ($0301) coś z zakresu 1-16. Gdyby wywalić to drugie sprawdzenie i uznać, że jest to numer partycji, to może być ich 256!

Od czego jest w DCB DBYT1 ($0308) i DBYT2 ($0309)? W nich ustawia się ilość danych przesyłanych przy jednym wywołaniu SIO. Jeśli masz sektory 512B i przestawisz partycję w takie sektory i zabiszesz w DBYTn 512, to masz operacje na 512B.

Tyle tylko ze mi chodzi o DISKINT a nie SIO, przez SIO to mozemy sobie transmitowac dowolne bloki danych i dowolnie kombinowac z parametrami. Ale interface programowy OS zajmujacy sie obsluga dyskow narzuca pewne zasady, i trzymajac sie tych zasad (a powinnismy sie raczej trzymac) dostajemy takie, a nie inne ograniczenia.

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

12

Trzeba było od razu pisać, że chodzi o DSKINT. Nigdy tego nie używałem, tylko od razu rzuciłem się na głęboką wodę, czyli SIOINT. :)
Z tego co pamiętam, to DSKINT jest tylko wstępną procedurą, która ustawia parametry dla SIOINT do obsługi stacji. To samo, a nawet - jak zauważyłeś - więcej, można zrobić przez SIOINT. Po co się ograniczać!. :)

Kto (...) będzie w stanie przy pomocy sterownika dyskowego (bez miąchania poza DCB - przyp. mój) przeformatować dyskietkę z gęstości pojedynczej na podwójną, ten winien się uznać mistrzem czarnej magii.

Ja dziękuję za taką user fiendly procedurkę. :)

Zawsze mam rację, tylko nikt mnie nie słucha.

13

ee spoko.
get_percom, ustawiamy dd, send_percom, format
wszystko via sio ... wtf? przeciez sie da.
czy juz jestem mistrzem czarnej magii?

14

Gdyby jeszcze standardowe stacje (przypadek 1050) chcialy te kombinacje z blokiem danych PERCOM rozumiec ;).
Ale przyznam ze tez chcialem to zaproponowac, bo to najladniejsza metoda (z punktu widzenia czystosci programowania).

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

15

Gdyby jeszcze standardowe stacje (przypadek 1050) chcialy te kombinacje z blokiem danych PERCOM rozumiec ;).

No jasne. Ale te stacje sa out of scope 'wyzwania' Konrada bo chodzi o PODWOJNA gestosc ktorej i tak nie obsluguja :D

16

Gucio prawda. System nie stwarza takich ograniczeń. Sterownik KMK IDE stwierdza odwołanie do HDD poprzez sprawdzenie czy w DDEVIC ($0300) siedzi $31, a w DUNIT ($0301) coś z zakresu 1-16. Gdyby wywalić to drugie sprawdzenie i uznać, że jest to numer partycji, to może być ich 256!

Tak jest, ale w tablicy partycji nie mieści się więcej wpisów niż 16. Oczywiście tablicę można zorganizować inaczej, można też zająć więcej miejsca na master bootblock (gdzie siedzi rzeczona tablica), ale to teoria, bo FDISK tego nie zrobi. Trzeba byłoby go napisać od nowa.

I znów pudło! Od czego jest w DCB DBYT1 ($0308) i DBYT2 ($0309)? W nich ustawia się ilość danych przesyłanych przy jednym wywołaniu SIO. Jeśli masz sektory 512B i przestawisz partycję w takie sektory i zabiszesz w DBYTn 512, to masz operacje na 512B.

O ile mnie pamięć nie myli, sterownik IDE w ogóle wartości DBYT nie bierze pod uwagę. Wielkość sektora logicznego jest zapisana w tablicy partycji, i może to być 256 albo 512 bajtów. Transfery sektorów mają zawsze jeden albo drugi rozmiar, ale jak się czyta sektory 128-bajtowe (DBYT = 128, a po każdym transferze DBUFA = DBUFA + DBYT), to oczywiście przeważnie nic nie szkodzi.

Nie do końca. Owszem numer sektora zwykle zapisuje sie w dwóch bajtach (DAUX1 - $030A i DAUX2 - $030B). Ale DCB ma jeden bajt nieużywany ($0307), który można wykorzystać np. jako najstarszy bajt numeru sektora (bity 16-23). Wtedy masz 16,77 milionów sektorów. Jesli użyjesz sektorów 512B, to partycja może mieć do 8GB (tyle też maksymalnie obsłuży sterownik KMK IDE).

Tak jest.

Jak rozpoznac obecnosc kontrolera SIO2IDE, KMK ?


W wersji 1.2 pod adresem $DDD9 masz tekst "IDE BIOS v.1.2n(c) 1995-97 by Dracon". Poza tym pod adresami $D800-$D802 są kolejno wartości: $20, $07, $70. Są to tzw. magic numbers, niezmienne i unikatowe dla KMK IDE. :)

Po pierwsze to jest $28, $07, $70. Po drugie tam jest też numer wersji, ale już nie pamiętam gdzie :-) Po trzecie zacytowana zajawka sterownika jest jego wewnętrzną sprawą, czyli w innej wersji może być pod innym adresem no i nie tej treści.

K.

KMK
? HEX$(6670358)