Program pod dos-a na PC. Służy do zgrywania obrazów dyskietek z Atari. Podłączenie jest prostym kabelkiem do portu LPT (bez dodatkowej elektroniki).
Jakieś 20 lat temu znalazłem ten program i próbowałem go użyć na 486DX80 oraz pentium 100 - na obu stacja ani drgnęła. Autor programu testował program tylko na procesorze 33Mhz.
Przypomniałem sobie o tym programie i sprawdziłem dlaczego nie działał.Podłączyłem więc oscyloskop do komputera aby zobaczyć co program wysyła. Okazało się że przebieg jest zbyt szybki niż powinien.
Winna była pętla opóźniająca - liczba pętli zawarta w zmiennej data_valid była tylko 8-bitowa, zwiększyłem ją do 16 bitów - program powinien działać dobrze na procesorach od 50 MHz do 2000 MHz.
Program działa w następujący sposób:
1.Pobiera status stacji
2.Wysyła Percom aby ustawić stację w podanej gęstości
3.Odczytuje pierwszy sektor
4.Pobiera Percom - sprawdza gęstość i ustala ile sektorów pobrać
5.Pobiera wszystkie sektory.
kompilowane borland c 3.1
option/ compiler / code generation -> zaznaczyć unsigned character
Nie mam stacji do atari więc program testowałem poprzez sio2pc i trzy programy typu "ape". Przy okazji odkryłem że te programy źle wysyłają status (piąty bajt nie jest sumą czterech poprzednich a chyba powinien być.)
Aktualna wersja:
- nie mam pewności czy "Percomy" przełączą stację na odpowiednią gęstość. (nie testowałem na prawdziwej stacji tylko na różnych "ape")
- może nie ściągnąć całej dyskietki w sytuacji gdy gęstość różni się od podanej
- po napotkaniu uszkodzonego sektora zapisuje wcześniejsze i dalej już nie czyta
UWAGA !!! port LPT należy stawić na SPP czyli "normal".
Dlaczego?
Zapis i odczyt odbywa się na jednym i tym samym bajcie (port 37A) - odczyt polega na ustawieniu +5V na liniach i połączeniu ich do masy jeśli sygnałem jest zero.
W SPP popłynie 3mA a w nowszych ponad 40mA. Chodzi o to że w nowszych trybach wydajność prądowa jest większa (zastosowanie np. zasilanie kamery internetowej).
-----------------
Jest jeszcze wzorowany na tym programie odpowiednik pod linuxa , patrz psiox002.
http://umich.edu/~archive/atari/8bit/Di … /Transfer/
Nie działa po kompilacji poleceniem make - wisi (zbadałem tyle, że odczyt timera stoi w miejscu). Prawdopodobnie jest to spowodowane jednym z bugów gcc przy optymalizacji (-02).
Gdy skompiluję poleceniem gcc .... działa, a do tego program ma mniej bajtów.
Psiox dobrze działa do prędkości 38000 (2x) przy 3x jest przekłamuje odebrane odpowiedzi (invalid response).
Siocop19 działa dobrze na prędkości 3x 62000 do 65000.
Problem sprawia za to sio2pc przy prędkości 2x muli na co drugim sektorze (w 4.14i pomaga ustawienie T7 na 0000, w 4.19i już nie - pod psiox-em jest ok więc badam aktualnie co jest powodem)
Przerobiłem kabel, przeniosłem żyłę z pinu 17 na 11 aby odczyt był z portu tylko do odczytu (jest mniej błędów przy szybszym transferze no i bezpieczniej). Dopracuje oba programy i dołączę je niebawem.