SIO2SD

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 23:53, 20 lis 2007
Pajero (Dyskusja | wkład)
(Wykaz komend)
← Previous diff
Aktualna wersja
Jhusak (Dyskusja | wkład)
(Przydatne linki)
Linia 5: Linia 5:
==Cechy urządzenia== ==Cechy urządzenia==
-* Obsługa kart SD/MMC (formaty FAT12,FAT16 i FAT32) +* Obsługa kart SD/MMC (formaty FAT12, FAT16 i FAT32)
* Obsługa plików w formatach ATR (rw), XFD (ro) i COM/XEX (ro) * 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. * 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) +* Obsługa SIO z turbo (możliwość ustawienia prędkości - [[HS Index]] od 1 do 16, standardowo 6, co odpowiada prędkości ok. 68,2 kbps, do wersji 2007.02.18 była stała prędkość 51 kbps - HS Index 10)
-* Wszystkie gęstości z sektorami 128B i 256B (TOMS'owe 512B na razie nieobsługiwane), w tym również dyski 16MB +* Wszystkie gęstości z sektorami 128 B i 256 B (TOMS-owe 512 B na razie nieobsługiwane), w tym również dyski 16 MB
-* Możliwość równoleglej obsługi 8 stacji (do wersji 2007.02.08 tylko 4 stacje: D1-D4) +* Możliwość równoległej 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) +* Możliwość konfigurowania z poziomu ATARI (możliwe ładowanie programu konfiguracyjnego bezpośrednio z urządzenia, bez potrzeby nagrywania na kartę SD)
==Wydajność== ==Wydajność==
Linia 50: Linia 50:
* Dla kwarca 7.3728 MHz fuse procesora Atmel ustawiamy na (H:0xD1 ; L:0xFF) * 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)+* Dla kwarca 14.3118 MHz fuse procesora Atmel ustawiamy na (H:0xC3 ; L:0x3F)
* 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.
Linia 56: Linia 56:
==Programowanie, obsługa SIO== ==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<br> +Sio2SD jest urządzeniem [[SIO]], z którym możemy się komunikować.
-Poniżej nieoficjalne dane zebrane przez [[Pajero]]+Wykorzystuje tę możliwość dedykowany przez autora Sio2SD.com, a także grupy MadTeam [[Atari Commander]] od wersji 1.7 oraz S2S.com autorstwa Truba<br>
-===Wykaz urządzeń===+Poniżej oficjalne dane zebrane przez [[Pajero]] zgodne z wersją firmware 2.5.<br>Nowsze wersje (3.0) mają o wiele większą liczbę komend, co opisane jest na <b>nowej</b> stronie www...
- +
-* $73 - zgłasza się jako urządzenie numer 3, widocznie no.1 to [[SIO2IDE|Sio2Ide]], a no.2 to [[SIO2PC|Sio2pc]]+
===Wykaz komend=== ===Wykaz komend===
-* $300 DDEVIC = $70 lub $73+* $300 DDEVIC = $73
-* $301 DUNIT = $03 lub $00+* $301 DUNIT = deviceID
-* $306 DTIMLO = $7f zawsze+* $306 DTIMLO = $7f minimum, optymalnie $90
* $307 DUNUSE = $00 zawsze * $307 DUNUSE = $00 zawsze
-* $30B DAUX2 = $00 zawsze 
-<table border=1 cellpadding=5>+DeviceID znajduje się w pliku konfiguracji Sio2SD.com (musi być to 6.bajt programu!).<br>Wartość: 0-3. To pozwala podłączyć do 4 urządzeń do Atari jednocześnie.
-<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>00 = brak karty<br>01 = OK <br>02 = OK zmieniono kartę na inną<br>03 = OK zmiany w D1-D8</td><td>$01</td><td>$00</td></tr>+<table border=1 cellpadding=6>
 +<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><td>$030B <b>DAUX2</b></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>$00 get status</td><td>$40</td><td>Odczytana wartość:<br>00 = brak karty<br>01 = OK <br>02 = OK zmieniono kartę na inną<br>03 = OK zmiany w D1-D8</td><td>$01</td><td>$00</td><td>$00</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>$01 get drive</td><td>$40</td><td>Adres bufora dla:<br>- jednego wpisu<br>- wpisów 1-4</td><td><br>$36<br>$36 * Ilość wpisów</td><td>Numer urządzenia:<br>1 - 8<br> 0 - 7</td><td><br>$00<br>Ilość wpisów: 1-4</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>$02 mount drive</td><td>$80</td><td>Adres bufora:<br>- z jednym wpisem<br>- z wpisami 1-4</td><td><br>$36<br>$36 * Ilość wpisów</td><td>Numer urządzenia:<br>1 - 8<br> 0 - 7</td><td><br>$00<br>Ilość wpisów: 1-4</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>$03 unmount drive</td><td>$00</td><td>$00</td><td>$00</td><td>Numer urządzenia:<br>1 - 8<br> 0 - 7</td><td><br>$00<br>Ilość wpisów: 1-8</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>$04 get name</td><td>$40</td><td>Adres bufora dla:<br>- jednego wpisu<br>- wpisów 1-4</td><td><br>$36<br>$36 * Ilość wpisów</td><td><br>$00<br>Ilość wpisów: 1-4</td><td>00 = kolejny wpis<br>01 = rewind i wczytaj kolejny wpis</td></tr>
-<tr><td>$06 up directory</td><td>$00</td><td>$00</td><td>$00</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><td>$00</td></tr>
-<tr><td>$10 lcd set</td><td>$80</td><td>Adres bufora z linią do wyświetlenia</td><td>$28</td><td>$00 = linia górna<br>$01 = linia dolna</td></tr>+<tr><td>$06 up directory</td><td>$00</td><td>$00</td><td>$00</td><td>$00</td><td>$00</td></tr>
 + 
 +<tr><td>$10 lcd set</td><td>$80</td><td>Adres bufora z linią do wyświetlenia</td><td>$28</td><td>$00 = linia górna<br>$01 = linia dolna</td><td>$00</td></tr>
</table> </table>
-Oczywiście obowiązuje zawsze sprawdzenie czy komenda została poprawnie wykonana. +Uwagi:
 +* nie wolno przekraczać założenia: 8 >= Numer urządzenia + Ilość wpisów
 +* 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; a także wysłać tekst na wyświetlacz.+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ść bieżącego katalogu - get name; wejść do wybranego katalogu - select directory; przejść o katalog wyżej (do nadrzędnego) - up directory; a także wysłać tekst na wyświetlacz.
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. 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]].+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=== ===Wpis katalogu===
Linia 105: Linia 106:
* $00-$26 = nazwa wpisu do katalogu wypełniona do końca spacjami * $00-$26 = nazwa wpisu do katalogu wypełniona do końca spacjami
* $27 = status wpisu: 01 katalog, 02 atr, 03 xfd, 04 inny * $27 = status wpisu: 01 katalog, 02 atr, 03 xfd, 04 inny
 +* $2c-$2f = file size (0=dla katalogu)
 +* reszta zawiera dane dot.położenia wpisu na karcie SD.
Jeśli pierwszy bajt równy 0 = koniec katalogu, potem znowu wszystko od początku. Jeśli pierwszy bajt równy 0 = koniec katalogu, potem znowu wszystko od początku.
 +
 +Uwaga: dane $28-$35 mają inną organizacje we wersji wsadu od 3.0 włącznie!
==Programowanie układu ATMEL== ==Programowanie układu ATMEL==
-Aby zmienić firmware wystarczy wgrać program binarny [[BIN|*.BIN]] do katalogu karty SD i odpalić Sio2SD z Shift+K3. Ale przy błędzie takiej operacji, lub jeśli rozprogramuje się układ Atmel możemy tylko wykonać operacje programowania procesora.+Aby zmienić firmware wystarczy: wgrać program binarny SIO2SD.BIN o długości 30720 B do głównego katalogu karty SD; odpalić Sio2SD z wciśniętym K4 by wejść do trybu konfiguracji; a tam w menu wcisnąć Shift+K3. Ale przy błędzie takiej operacji lub jeśli rozprogramuje się układ Atmel możemy tylko ratować się programując procesor.
-Do tego celu może posłużyć dowolny programator (np. STK 200/300 za 16PLN na Allegro) podłączany do portu LPT (drukarki) w PC'ecie. Za pomocą programu (np. darmowy PonyProg) szybko odratujemy Atmela. +Do tego celu może posłużyć dowolny programator (np. [http://allegro.pl/listing.php/search?string=stk200*&from_showcat=1&category=68366&description=1&from_showcat=1&order=p&change_view=1 STK 200/300] za ~12PLN na Allegro) podłączany do portu LPT (drukarki) w PC. Za pomocą programu (np. darmowy PonyProg) szybko odratujemy Atmela.
Podłączamy kable programatora do złącza JP2 w płytce Sio2SD. Oznaczenia pinów - widok na PCB od strony elementów - powyżej jest Atmel: Podłączamy kable programatora do złącza JP2 w płytce Sio2SD. Oznaczenia pinów - widok na PCB od strony elementów - powyżej jest Atmel:
Linia 116: Linia 121:
GND MOSI VCC GND MOSI VCC
-Włączamy PC (wtyk D-Sub 25 wpięty już jest do LPT), podłączamy Sio2SD do Atari i je włączamy!+Włączamy PC (wtyk D-Sub 25 wpięty już jest do LPT), podłączamy Sio2SD do Atari i je włączamy.
-Uruchamiamy program który wykona programowanie. Szczegóły obsługi programu dostępne są w sieci lub u sprzedawcy programatora!+Uruchamiamy program, który wykona programowanie. Szczegóły obsługi programu dostępne są w sieci lub u sprzedawcy programatora.
==Przydatne linki== ==Przydatne linki==
-Więcej informacji na [http://sio2sd.gucio.pl/ stronie] autora projektu.+Więcej informacji na [http://sio2sd.org/ nowej stronie] autora projektu.
Żródło Atari Commandera na [http://madteam.atari8.info/index.php?prod=uzytki stronie MadTeamu] Ż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]]

Aktualna wersja

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 - HS Index od 1 do 16, standardowo 6, co odpowiada prędkości ok. 68,2 kbps, do wersji 2007.02.18 była stała prędkość 51 kbps - HS Index 10)
  • Wszystkie gęstości z sektorami 128 B i 256 B (TOMS-owe 512 B na razie nieobsługiwane), w tym również dyski 16 MB
  • Możliwość równoległej 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:0x3F)
  • 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, a także grupy MadTeam Atari Commander od wersji 1.7 oraz S2S.com autorstwa Truba

Poniżej oficjalne dane zebrane przez Pajero zgodne z wersją firmware 2.5.
Nowsze wersje (3.0) mają o wiele większą liczbę komend, co opisane jest na nowej stronie www...

Wykaz komend

  • $300 DDEVIC = $73
  • $301 DUNIT = deviceID
  • $306 DTIMLO = $7f minimum, optymalnie $90
  • $307 DUNUSE = $00 zawsze

DeviceID znajduje się w pliku konfiguracji Sio2SD.com (musi być to 6.bajt programu!).
Wartość: 0-3. To pozwala podłączyć do 4 urządzeń do Atari jednocześnie.


$0302 DCMND$0303 DSTATS$0304/5 DBUFA$0308/9 DBYT$030A DAUX1$030B DAUX2
$00 get status$40Odczytana wartość:
00 = brak karty
01 = OK
02 = OK zmieniono kartę na inną
03 = OK zmiany w D1-D8
$01$00$00
$01 get drive$40Adres bufora dla:
- jednego wpisu
- wpisów 1-4

$36
$36 * Ilość wpisów
Numer urządzenia:
1 - 8
0 - 7

$00
Ilość wpisów: 1-4
$02 mount drive$80Adres bufora:
- z jednym wpisem
- z wpisami 1-4

$36
$36 * Ilość wpisów
Numer urządzenia:
1 - 8
0 - 7

$00
Ilość wpisów: 1-4
$03 unmount drive$00$00$00Numer urządzenia:
1 - 8
0 - 7

$00
Ilość wpisów: 1-8
$04 get name$40Adres bufora dla:
- jednego wpisu
- wpisów 1-4

$36
$36 * Ilość wpisów

$00
Ilość wpisów: 1-4
00 = kolejny wpis
01 = rewind i wczytaj kolejny wpis
$05 select directory$80Adres bufora z nazwą katalogu $36$00$00
$06 up directory$00$00$00$00$00
$10 lcd set$80Adres bufora z linią do wyświetlenia$28$00 = linia górna
$01 = linia dolna
$00

Uwagi:

  • nie wolno przekraczać założenia: 8 >= Numer urządzenia + Ilość wpisów
  • 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ść bieżącego katalogu - get name; wejść do wybranego katalogu - select directory; przejść o katalog wyżej (do nadrzędnego) - up directory; a także wysłać tekst na wyświetlacz.

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
  • $2c-$2f = file size (0=dla katalogu)
  • reszta zawiera dane dot.położenia wpisu na karcie SD.

Jeśli pierwszy bajt równy 0 = koniec katalogu, potem znowu wszystko od początku.

Uwaga: dane $28-$35 mają inną organizacje we wersji wsadu od 3.0 włącznie!

Programowanie układu ATMEL

Aby zmienić firmware wystarczy: wgrać program binarny SIO2SD.BIN o długości 30720 B do głównego katalogu karty SD; odpalić Sio2SD z wciśniętym K4 by wejść do trybu konfiguracji; a tam w menu wcisnąć Shift+K3. Ale przy błędzie takiej operacji lub jeśli rozprogramuje się układ Atmel możemy tylko ratować się programując procesor. Do tego celu może posłużyć dowolny programator (np. STK 200/300 za ~12PLN na Allegro) podłączany do portu LPT (drukarki) w PC. Za pomocą programu (np. darmowy PonyProg) szybko odratujemy Atmela. Podłączamy kable programatora do złącza JP2 w płytce Sio2SD. Oznaczenia pinów - widok na PCB od strony elementów - powyżej jest Atmel:

RESET  CLK  MISO
 GND  MOSI   VCC

Włączamy PC (wtyk D-Sub 25 wpięty już jest do LPT), podłączamy Sio2SD do Atari i je włączamy. Uruchamiamy program, który wykona programowanie. Szczegóły obsługi programu dostępne są w sieci lub u sprzedawcy programatora.

Przydatne linki

Więcej informacji na nowej stronie autora projektu. Żródło Atari Commandera na stronie MadTeamu

Personal tools