cześć Koledzy! stałem się posiadaczem wymienionych w temacie scalaków i w związku z tym chciałbym spróbować coś z nich zmontować... rozrywka czysto amatorska, beż żadnych większych aspiracji. mam kilka pytań - piszę w odrębnym wątku bo może nie tylko mi się parę informacji przyda...

1. czy Ktoś mógłby wymienić wszystkie gęstości Atari i PC oraz podać format dyskietek 5,25" i 3,5"?
2. jak w wyżej wymienionych scalakach wybiera się gęstość zapisu - czy poprzez zmianę częstotliwości taktowania scalaka? widzę na schematach TOMS 710, że tam do WD podpięta jest tylko jedna częstotliwość, a stacja czyta wszystkie formaty...

2

Ile masz tych scalakow i jakie?

3 Ostatnio edytowany przez seban (2009-07-06 14:45:56)

a większość spraw dotycząca tych kontrolerów o które kolega bezrobotny pyta jest opisane w dokumentacji do tych układów:

http://drop.io/wd_upds/asset/upd765-pdf
http://drop.io/wd_upds/asset/wd2793-pdf

4

1. Podstawowe gęstości Atari: 90KB (128 bajtów na sektor FM), 130KB (128 bajtów na sektor MFM), 180KB (256 bajtów na sektor MFM), PC = 512 bajtów na sektor MFM. Są jeszcze warianty 1/2 strony i 40/80 ścieżek.
2. Kontrolerowi ustawia się FM lub MFM poprzez odpowiedni pin (np. jeśli nic nie możemy złapać w MFM to przełączamy na FM i na odwrót), a rozmiar sektora jest zapisany w nagłówku sektora i kontroler sam go rozpoznaje. Przeliczeniem numeru sektora na dysku na numer ścieżki i sektora na ścieżce zajmuje się procesor.

https://www.youtube.com/watch?v=jofNR_WkoCE

5

W temacie wszystkich gęstości polecam ten link - wprawdzie artykuł opisuje głównie stację TOMS 720, ale jest tam lista wszystkich gęstości obsługiwanych przez stację, a tym samym niemalże wszystkie gęstości, z rozpiską ile ścieżek, ile sektorów itp.

6 Ostatnio edytowany przez bezrobotny (2009-07-06 19:56:08)

dzięki! znalazłem też opis dla PC: http://www.pcguide.com/ref/fdd/formatSummary-c.html
wynika z niego, że bitrate się zmienia, gdzie w moich scalakach ustawia się szybkość transferu z/do stacji - nigdzie w pdfie nie widzę odpowiedniego rejestru...

P.S. a jaki bitrate mają poszczególne gęstości w formatach Atari? czy może mają ten sam tylko zmienia się długość sektora i ilość sektorów na ścieżce?

7 Ostatnio edytowany przez Fox (2009-07-07 09:06:38)

Nie ustawia się żadnego bitrate. Może on wynikać np. z prędkości obrotowej, FM/MFM, liczby i długości sektorów na ścieżce, różnej długości przerw między sektorami (np. w gęstości 130KB są większe niż w 180KB), różnego przeplotu (kolejno na ścieżce nie są sektory 1,2,3,... tylko np. 1,10,2,11,3,12,...).

https://www.youtube.com/watch?v=jofNR_WkoCE

8 Ostatnio edytowany przez drac030 (2009-07-07 12:25:51)

Bitrate w MFM (czyli w ED i DD) jest stałe, zależy od częstotliwości taktowania kontrolera (a nie żadnej prędkości obrotowej), i normalnie wynosi 250000 bitów na sekundę. W FM (czyli SD) połowę tego. Prędkość obrotowa wpływa tylko na to, ile się danych mieści na ścieżce, co jest łatwo obliczyć, np. przy 300 obrotach na minutę jedna ścieżka MFM będzie zawierać

(bitrate/liczba_obrotów_na_sekundę)/8

bajtów. Czyli 6250. W Atari będzie to normalnie więcej, bo silnik kręci się wolniej (288 obrotów na minutę).

KMK
? HEX$(6670358)

9

czyli jak oprogramować ten WD2793 lub uPD765, wystarczy wykonać read sector i kontroler fdc sam sobie dostosuje prędkości do dyskietki? coś mi się to nie podoba... przydało by się więcej konkretów - może być na przykładzie... chodzi o to jak oprogramować kontroler fdc.

10 Ostatnio edytowany przez mikey (2009-07-07 18:42:46)

Przeczytaj moze wreszcie te datasheety ktore ci podal seban.
Pokrotce, przeczytanie sektora to seek na sciezke, podanie FDC komendy ReadSector i odczytanie z DAL poskladanych przez niego bajtow. Predkosc dyskietki nie ma wplywu na to, z punktu widzenia programisty.

11

przeczytałem te datashety, jest w nich tylko opis komend i kilka słów o sygnałach na poszczególnych pinach... nie ma nic o ustawianiu prędkości odczytu... sory, ale ja tego nie rozumiem, jakby jeszcze Ktoś się znalazł i wyłożył mi jak chłop koniowi... w linku powyżej podałem opis formatów PC, pisze tam, że transfer danych odbywa się z prędkością 250, 500 i 1Mbit... czyli jednak zmienny - to się musi gdzieś ustawiać, bez tego nic nie zdziałam, sory za kłopot.

12 Ostatnio edytowany przez jer (2009-07-07 20:06:18)

Szybkość transferu danych flopka zależy:
a) od rodzaju napędu:
360k i 720k - transfer 250kb/sek
1,2M i 1,44M - transfer 500kb/sek
2,88M - transfer 1Mb/sek
b) od dyskowego systemu operacyjnego, czyli software'u, który określa przeplot sektorów. Najszybszy transfer jest gdy wszystkie sektory ścieżki czytane sa w czasie jednego obrotu dyskietki jeden za drugim.
c) hardware'u, czyli samego kontrolera i komputera - jak szybko bufor odczytu może zostać przepisany we właściwe miejsce pamięci. Najlepiej, gdy dzieje się to w czasie przesuwu głowicy ze ścieżki na ścieżkę. A czas ten zależy od konstrukcji napędu - bezwładnosci wózka głowicy, czasu jego ustabilizowania po przesunięciu itd.

13

chodzi o punkt 1... no właśnie o to chodzi... prędkość danych zależy od formatu... pomyślałem sobie, że może PLL w WD2793 sam dostosowuje się do szybkości napływających bitów przy odczycie - to by miało sens... tylko nie wiem jak to jest w przypadku zapisu, nie mogę nigdzie znaleść tej informacji.

14

szukaj Write Precompensation.

15

write precompensation to tylko przesunięcie fazy przy zapisie, z bitrate nie ma to nic wspólnego... czyżby Nikt tu nie robił nigdy własnej stacji na tych scalakach?

16 Ostatnio edytowany przez seban (2009-07-08 10:52:45)

Wydaje mi się iż w ogóle nie potrzebnie martwisz się o bit-rate przy zapisie, o to dba kontroler. Jeżeli wydajesz mu komendę typu II (np. read sector lub write sector) to prędkość danych jakie do niego piszesz jest uzależniona od niego samego, jeżeli jest gotowy do przyjęcia następnego bajtu to sygnalizuje to używając lini DRQ (data request). Zresztą jest to napisane w dokumentacji:

DRQ -> Data Request -> this active high output indicates the Data Register is full (on Read) or Empty (on Write operation)

Łącząc to z flow-chartem Type II Command, moża domniemać iż kontroler sam wie kiedy potrzebuje następnego bajtu bo poprzedni właśnie został zapisany i wypchnięty na wyjście w postaci szeregowej z użyciem odpowiedniego kodowania w zależności od gęstości i typu napędu z którym pracuje (FM, MFM).

Przyznaje iż ja osobiście nigdy nie miałem okazji programować żadnego kontrolera stacji dyskietek, a to co napisałem powyżej jest tylko moim domysłem zdobytym po przeczytaniu kilku datasheet-ów do różnych kontrolerów FDC. Także to co napisałem nie musi być do końca słuszne, jeżeli gdzieś nakłamałem proszę o sprostowanie :)

Co do zrobienia stacji na wspomnianych kontrolerach to nie wiem czy ktoś miał taką potrzebę i takie doświadczenie wcześniej, na pewno jednak kilka osób programowało te kontrolery, np. pisząc nowy/alternatywny firmware do stacji Karin Maxi. I to będzie chyba dobry przykład do analizy, na stronie Jer-a masz zarówno schemat stacji jak i zawartość ROM-u do niej.

schemat jest tu, a zawartość ROM-u tutaj.

Stacja Karin Maxi Drive to właściwie kontroler WD1772 wpięty w szynę PBI (Cart+Expansion port) i jest widziana przez system operacyjny ATARI jako tzw. nowe urządzenie (NEW DEVICE). Cały kod obsługujący kontroler jest zaszyty w romie i wykonuje go procesor ATARI (stacja nie ma żadnego innego mikro-kontrolera ani mikroprocesora). Analiza ROM-u tejże stacji pozwoli pewnie na rozwiązanie wszelakich wątpliwości.

Stacja KARIN-MAXI była bardzo fajnym rozwiązaniem. Była ultra szybka (podłączona pod szynę równoległą nie szeregową), jednak miała pewną wadę... była rozwiązaniem mało standardowym w tamtych czasach i część oprogramowania nie była z nią zgodna. Do tego aby umożliwić transmisję na sensownym poziomie, należało wyłączyć DMA ANTICA (wyłączony ekran przy operacjach I/O). Stacja była idealna do pracy, gdzie wymagało się szybkości (kopiowanie, programowanie [kompilacja]). Jednak część softu która miała zaszyta własne procedury I/O (tylko obsługujące SIO) po prostu na tej stacji nie działała.

A i jeszcze jedno... 0xF napisał DOS-a dla Karin Maxi Drive, udostępnił oczywiście źródła, które leżą na stronie ze źródłami Stryker-a, czyli tutaj , i z tego co pamiętam Fox wspominał iż jego MasterDos zawiera własne procedury obsługi WD1772 (Foxie popraw mnie jeżeli kłamię ;P)

UPDATE #1:

I jeszcze trochę obok tematu, pewnie Mikey zna już te linki... ale myślę iż warto je przytoczyć, oba rozwiązania trochę mało popularne chyba u nas ale dość ciekawe ze względu na sposób działania :) Mianowicie chodzi o emulatory napędów dyskietek, emulacja jest jednak na zupełnie innym poziomie :) Emulujemy bowiem sam napęd FDD. Idea projektów była taka aby zastąpić sam napęd FDD elektroniką która udawałaby napęd.

W sieci są obecnie rozwijane projekty dwóch osób: HxC Floppy Emulator oraz Sdisk Emul.

Dlaczego o tym piszę? Ano dlatego iż oba z projektów emulują napęd FDD na poziomie elektrycznym, więc zawierają kod dokonujący konwersji strumienia danych pobranych z danego obrazu dyskietki na strumień zakodowany kodem MFM. Być może byłoby to pomocne  w realizacji software-owego dekodera FM/MFM nad którym pracuje Mikey :). Projekt HxC ma dwie wersje, CPLD oraz bazującą na mikro-kontrolerze PIC serii 18Fxxx... Dodatkowo projekt Sdisk Emul emuluje szeregową stację dysków (SIO) małego Atari... w dodatku ma zaimplementowane proste OSD :) Schematy, źródła, firmware oraz PCB są dostępne na stronach projektów.

Projekt HxC jest dostępny w dwóch odmianach CPLD+USB (obrazy ładowane z poziomu softu na PC) oraz tzw. stand-alone czyli PIC+ karta SD na której są trzymane obrazy dysków.

UPDATE #2:

podstawowe info o FM, MFM i GCR jest tutaj: The floppy user guide

pozdrawiam
Seban

17

bezrobotny napisał/a:

write precompensation to tylko przesunięcie fazy przy zapisie, z bitrate nie ma to nic wspólnego... czyżby Nikt tu nie robił nigdy własnej stacji na tych scalakach?

Write Precompensation to 'zageszczanie'/wzmacnianie pulsów podczas zapisu w zaleznosci od 'dlugosci' jednego sektora.
Na zewnatrz dyskietki sektory sa 'dluzsze' niz te blizej srodka. A co do bitrate, to jak wyobrazasz sobie ze to nie ma zwiazku? Przeciez to sie dzieje wlasnie
w funkcji czasu na tym co leci do glowicy. I jeszcze raz powtorze - bitrate w twoim rozumieniu Cie nie obchodzi gdy programujesz te scalaki. One sobie same ustala wszystkie  parametry napedu i I/O, w zaleznosci od tego co im kazesz zrobic.

18

a to nie wiedziałem, musi być jak piszesz bo nawet na schematach stacji TOMS 710 i 720 do CLK podawany jest stały zegar... do pełni szczęścia potrzebuję jeszcze rozpiski formatu ścieżek dla każdej z atarowiskich i pctowych gęstości zapisu, masz coś takiego i chciałbyś się podzielić? ;o)

19

no teraz to już zupełnie zgłupiałem... w PC jest rejestr:

03F4    w    diskette controller data rate select register
         bit 7-2      reserved on 8272
         bit 7     = 1  software reset (self clearing)    82072/82077AA
         bit 6     = 1  power down            82072/82077AA
         bit 5     = 0  reserved on 8272 and 82077AA
                  PLL select bit on 82072
         bit 4-2      write precompensation value, 000 default
         bit 1-0      data rate select
             = 00  500 Kb/S MFM    250 Kb/S FM
             = 01  300 Kb/S MFM    150 Kb/S FM
             = 10  250 Kb/S MFM    125 Kb/S FM
             = 11  1Mb/S    MFM    illegal     FM on 8207x

odpowiedzialny za bitrate danych przesyłanych do i z dyskietki... czyli jednak to się gdzieś ustawia!

20

Może to będzie pomocne:

http://www.isdaman.com/alsos/hardware/fdc/floppy.htm
http://www.viralpatel.net/taj/tutorial/ … ng_fdc.php