SIO2SD

From Atariki

Revision as of 07:00, 6 wrz 2007; view current revision
←Older revision | Newer revision→
Jump to: navigation, search

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.

Grafika:Sio2sd.jpg

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ń

  • $73 - zgłasza się jako urządzenie numer 3, widocznie no.1 to Sio2Ide, a no.2 to 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
$0302 DCMND$0303 DSTATS$0304/5 DBUFA$0308/9 DBYT$030A DAUX1
$00 get status$40Bufor jednobajtowy. Odczytana wartość:
01 = OK
02 = brak karty w gnieździe
$01$00
$01 get drive$40Adres bufora$36Numer urządzenia: 1 - 8
$02 mount drive$80Adres bufora z nazwą wpisu$36Numer urządzenia: 1 - 8
$03 unmount drive$00$00$00Numer urządzenia: 1 - 8
$04 get name$40Adres bufora dla nazwy wpisu$36$00
$05 select directory$80Adres 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

Personal tools