SIO2SD
From Atariki
Wersja z dnia 20:59, 22 sie 2007 Daniel Koźmiński (Dyskusja | wkład) (revert) ← Previous diff |
Wersja z dnia 06:55, 6 wrz 2007 Pajero (Dyskusja | wkład) (Programowanie Sio2SD) Next diff → |
||
Linia 53: | Linia 53: | ||
* Jeżeli podczas wyboru plików ATR na wyświetlaczu pojawiają się śmieci - należy wymienić stabilizator napięcia 3.3V (na np. precyzyjny stabilizator napięcia 1.0A w obudowie TO-220) | * Jeżeli podczas wyboru plików ATR na wyświetlaczu pojawiają się śmieci - należy wymienić stabilizator napięcia 3.3V (na np. precyzyjny stabilizator napięcia 1.0A w obudowie TO-220) | ||
* Komunikat 'Błąd odczytu karty SD' - gdy jest włożona do slotu - przyczyną jest brak styku przy kondensatorze C12 lub stabilizatorze napięcia 3.3V. PCB jest dwustronne, dlatego zaleca się poprawić lutowanie z obu stron płytki dla tych elementów. | * Komunikat 'Błąd odczytu karty SD' - gdy jest włożona do slotu - przyczyną jest brak styku przy kondensatorze C12 lub stabilizatorze napięcia 3.3V. PCB jest dwustronne, dlatego zaleca się poprawić lutowanie z obu stron płytki dla tych elementów. | ||
+ | |||
+ | ==Programowanie, obsługa SIO== | ||
+ | |||
+ | Sio2SD jest urządzeniem [[SIO]] z którym możemy się komunikować. Wykorzystuje tę możliwość dedykowany przez autora Sio2SD.com albo grupy MadTeam [[Atari Commander]] od wersji 1.7 | ||
+ | Poniżej nieoficjalne dane zebrane przez [[Pajero]] | ||
+ | |||
+ | ===Wykaz urządzeń=== | ||
+ | |||
+ | * $73 - zgłasza się jako urządzenie numer 3, widocznie no.1 to [[SIO2IDE|Sio2Ide]], a no.2 to [[SIO2PC|Sio2pc]] | ||
+ | |||
+ | ===Wykaz komend=== | ||
+ | |||
+ | * $300 DDEVIC = $70 lub $73 | ||
+ | * $301 DUNIT = $03 lub $00 | ||
+ | * $306 DTIMLO = $7f zawsze | ||
+ | * $307 DUNUSE = $00 zawsze | ||
+ | * $30B DAUX2 = $00 zawsze | ||
+ | |||
+ | <table border=1 cellpadding=5> | ||
+ | <tr><td>$0302 <b>DCMND</b></td><td>$0303 <b>DSTATS</b></td><td>$0304/5 <b>DBUFA</b></td><td>$0308/9 <b>DBYT</b></td><td>$030A <b>DAUX1</b></td></tr> | ||
+ | |||
+ | <tr><td>$00 get status</td><td>$40</td><td>Bufor jednobajtowy. Odczytana wartość:<br>01 = OK<br>02 = brak karty w gnieździe</td><td>$01</td><td>$00</td></tr> | ||
+ | |||
+ | <tr><td>$01 get drive</td><td>$40</td><td>Adres bufora</td><td>$36</td><td>Numer urządzenia: 1 - 8</td></tr> | ||
+ | |||
+ | <tr><td>$02 mount drive</td><td>$80</td><td>Adres bufora z nazwą wpisu</td><td>$36</td><td>Numer urządzenia: 1 - 8</td></tr> | ||
+ | |||
+ | <tr><td>$03 unmount drive</td><td>$00</td><td>$00</td><td>$00</td><td>Numer urządzenia: 1 - 8</td></tr> | ||
+ | |||
+ | <tr><td>$04 get name</td><td>$40</td><td>Adres bufora dla nazwy wpisu</td><td>$36</td><td>$00</td></tr> | ||
+ | |||
+ | <tr><td>$05 select directory</td><td>$80</td><td>Adres bufora z nazwą katalogu </td><td>$36</td><td>$00</td></tr> | ||
+ | |||
+ | <tr><td>$06 up directory</td><td>$00</td><td>$00</td><td>$00</td><td>$00</td></tr> | ||
+ | |||
+ | </table> | ||
+ | |||
+ | Oczywiście obowiązuje zawsze sprawdzenie czy komenda została poprawnie wykonana. | ||
+ | |||
+ | Czyli mamy możliwość sprawdzenia czy urządzenie jest włączone do gniazda SIO - get status; możemy odczytać co jest podpięte do jednego z ośmiu urządzeń - get drive; zmienić to podpięcie - mount drive; lub je wyłączyć (tzw. --OFF-- ) - unmount drive; odczytać zawartość bierzącego katalogu - get name; wejść do wybranego katalogu - select directory; przejść o katalog wyżej (do nadrzędnego) - up directory; | ||
+ | |||
+ | Niestety w tej wersji urządzenia nie można ustawiać dowolnie ścieżki katalogów (nalezy po nich "skakać" krokowo), odczytywać dowolnego wpisu z katalogu - zawsze przekazywany jest wpis po wpisie. | ||
+ | Największym bólem jest brak możliwości zapisywania do samej karty. Czyli nie można założyć nowego [[ATR|Atr'a]]. | ||
+ | |||
+ | ===Wpis katalogu=== | ||
+ | |||
+ | Komunikacja odbywa się blokami po $36 bajtów. Zawartość: | ||
+ | * $00-$26 = nazwa wpisu do katalogu wypełniona do końca spacjami | ||
+ | * $27 = status wpisu: 01 katalog, 02 atr, 03 xfd, 04 inny | ||
+ | Jeśli pierwszy bajt równy 0 = koniec katalogu, potem znowu wszystko od początku. | ||
+ | |||
+ | |||
+ | ==Przydatne linki== | ||
Więcej informacji na [http://sio2sd.gucio.pl/ stronie] autora projektu. | Więcej informacji na [http://sio2sd.gucio.pl/ stronie] autora projektu. | ||
+ | Żródło Atari Commandera na [http://madteam.atari8.info/index.php?prod=uzytki stronie MadTeamu] | ||
[[Kategoria:Peryferia 8-bit]] | [[Kategoria:Peryferia 8-bit]] | ||
[[Kategoria:Schematy i specyfikacje]] | [[Kategoria:Schematy i specyfikacje]] |
Wersja z dnia 06:55, 6 wrz 2007
Spis treści |
Informacje Ogólne
SIO2SD to interfejs autorstwa Jakuba Kruszony-Zawadzkiego, pozwalający na wczytywanie gier/programów na Atari 8-bit poprzez port SIO z kart SD/MMC.
Cechy urządzenia
- Obsługa kart SD/MMC (formaty FAT12,FAT16 i FAT32)
- Obsługa plików w formatach ATR (rw), XFD (ro) i COM/XEX (ro)
- Wyświetlacz 16x2 pokazujący aktualnie wybrany katalog i plik ATR/XEX podmapowany pod określony numer stacji dysków.
- Obsługa SIO z turbo (możliwość ustawienia prędkości - hsindex od 1 do 16, standardowo 6, co odpowiada prędkości ok. 69kb/s, do wersji 2007.02.18 była stała prędkość 51kb/s - hsindex 10)
- Wszystkie gęstości z sektorami 128B i 256B (TOMS'owe 512B na razie nieobsługiwane), w tym również dyski 16MB
- Możliwość równoleglej obsługi 8 stacji (do wersji 2007.02.08 tylko 4 stacje: D1-D4)
- Możliwość konfigurowania z poziomu ATARI (możliwe ładowanie programu konfiguracyjnego bezpośrednio z urządzenia, bez potrzeby nagrywania na kartę SD)
Wydajność
Prędkość zmierzona programem RW-Test pod SpartaDOS X:
- DOS Reading: 1719,8 B/sek.
- DOS Writing: 5137,8 B/sek.
- DOS Average: 3428,8 B/sek.
Użyto RW-Test w wersji 3.0 i karty SD Pretec Highspeed 60x.
Lista elementów
Poniżej przedstawiona jest lista elementów elektronicznych potrzebnych do budowy układu.
Lp Ilość Nazwa Elementu Wartość Oznaczenie elementu 1 2 Rezystor 10k R1,R3 2 1 Potencjometr 2.2k R2 3 3 Rezystor 1.8k R4,R5,R6 4 3 Rezystor 3.3k R7,R8,R9 5 1 Rezystor 27R R10 6 3 Rezystor 220R R11,R12,R13 7 1 Kondensator tantalowy 10uF C4 8 2 Kondensator ceramiczny 22pF C1,C2 9 4 Kondensator ceramiczny 100nF C3,C12,C10,C11 10 5 Kondensator ceramiczny 22nF C5,C6,C7,C8,C9 11 1 Kwarc 7.3728 lub 14MHz Q1 12 1 Dioda Schottkiego BAT85 opcjonalnie 13 1 Procesor ATMEGA32-16PI (lub Atmega 32L-8PU) IC1 14 1 Stabilizator 3.3V IC2 15 3 Diody LED 3V LED1,LED2,LED3 16 5 Mikrostyki - S1,S2,S3,S4,S5 17 1 Gniazdo SD - SD 18 1 Wyświetlacz 2x16 LED - JP3
Porady dotyczące uruchomienia układu
- Dla kwarca 7.3728 MHz fuse procesora Atmel ustawiamy na (H:0xD1 ; L:0xFF)
- Dla kwarca 14.3118 MHz fuse procesora Atmel ustawiamy na (H:0xC3 ; L:0xFF)
- Jeżeli podczas wyboru plików ATR na wyświetlaczu pojawiają się śmieci - należy wymienić stabilizator napięcia 3.3V (na np. precyzyjny stabilizator napięcia 1.0A w obudowie TO-220)
- Komunikat 'Błąd odczytu karty SD' - gdy jest włożona do slotu - przyczyną jest brak styku przy kondensatorze C12 lub stabilizatorze napięcia 3.3V. PCB jest dwustronne, dlatego zaleca się poprawić lutowanie z obu stron płytki dla tych elementów.
Programowanie, obsługa SIO
Sio2SD jest urządzeniem SIO z którym możemy się komunikować. Wykorzystuje tę możliwość dedykowany przez autora Sio2SD.com albo grupy MadTeam Atari Commander od wersji 1.7 Poniżej nieoficjalne dane zebrane przez Pajero
Wykaz urządzeń
Wykaz komend
- $300 DDEVIC = $70 lub $73
- $301 DUNIT = $03 lub $00
- $306 DTIMLO = $7f zawsze
- $307 DUNUSE = $00 zawsze
- $30B DAUX2 = $00 zawsze
$0302 DCMND | $0303 DSTATS | $0304/5 DBUFA | $0308/9 DBYT | $030A DAUX1 |
$00 get status | $40 | Bufor jednobajtowy. Odczytana wartość: 01 = OK 02 = brak karty w gnieździe | $01 | $00 |
$01 get drive | $40 | Adres bufora | $36 | Numer urządzenia: 1 - 8 |
$02 mount drive | $80 | Adres bufora z nazwą wpisu | $36 | Numer urządzenia: 1 - 8 |
$03 unmount drive | $00 | $00 | $00 | Numer urządzenia: 1 - 8 |
$04 get name | $40 | Adres bufora dla nazwy wpisu | $36 | $00 |
$05 select directory | $80 | Adres bufora z nazwą katalogu | $36 | $00 |
$06 up directory | $00 | $00 | $00 | $00 |
Oczywiście obowiązuje zawsze sprawdzenie czy komenda została poprawnie wykonana.
Czyli mamy możliwość sprawdzenia czy urządzenie jest włączone do gniazda SIO - get status; możemy odczytać co jest podpięte do jednego z ośmiu urządzeń - get drive; zmienić to podpięcie - mount drive; lub je wyłączyć (tzw. --OFF-- ) - unmount drive; odczytać zawartość bierzącego katalogu - get name; wejść do wybranego katalogu - select directory; przejść o katalog wyżej (do nadrzędnego) - up directory;
Niestety w tej wersji urządzenia nie można ustawiać dowolnie ścieżki katalogów (nalezy po nich "skakać" krokowo), odczytywać dowolnego wpisu z katalogu - zawsze przekazywany jest wpis po wpisie. Największym bólem jest brak możliwości zapisywania do samej karty. Czyli nie można założyć nowego Atr'a.
Wpis katalogu
Komunikacja odbywa się blokami po $36 bajtów. Zawartość:
- $00-$26 = nazwa wpisu do katalogu wypełniona do końca spacjami
- $27 = status wpisu: 01 katalog, 02 atr, 03 xfd, 04 inny
Jeśli pierwszy bajt równy 0 = koniec katalogu, potem znowu wszystko od początku.
Przydatne linki
Więcej informacji na stronie autora projektu. Żródło Atari Commandera na stronie MadTeamu