Komendy SIO
SIO device number: $73 + deviceID
Komenda | aux1 | aux2 | kierunek transmisji | długość | opis | firmware |
---|---|---|---|---|---|---|
$00 | - | - | SIO2SD->ATARI ($40) | 1 | status urządzenia (patrz niżej) | 1.0 |
$01 | numer dysku (1-15,128-228) | ilość dysków (1-4) | SIO2SD->ATARI ($40) | 54*ilość dysków | pobierz parametry mapowania dysków | 1.0 |
$02 | numer dysku (1-15,129-228) | ilość dysków (1-4) | ATARI->SIO2SD ($80) | 54*ilość dysków | ustaw parametry mapowania dysków | 1.0 |
$03 | numer dysku (1-15,129-228) | ilość dysków (1-100) | - ($00) | - | wyłącz mapowanie dysków | 1.0 |
$04 | ilość wpisów (1-4) | flagi (0-3) | SIO2SD->ATARI ($40) | 54*ilość wpisów | pobierz kolejne wpisy z bierzącego katalogu | 1.0 |
$05 | - | - | ATARI->SIO2SD ($80) | 54 | zmień bierzący katalog na podany | 1.0 |
$06 | - | - | - ($00) | - | wejdź do nadkatalogu | 1.0 |
$07 | - | - | - ($00) | - | wejdź do głównego katalogu | 3.0 |
$08 | - | - | SIO2SD->ATARI ($40) | 54 | zwróć bierzący katalog | 3.0 |
$09 | typy obiektów | - | ATARI->SIO2SD ($80) | 16 | ustaw maskę przeszukiwania | 3.0 |
$0A | - | - | SIO2SD->ATARI ($40) | 2 | zwróć liczbę wpisów dla bieżącego katalogu (pasujących do maski) | 3.0 |
$0B | typ obiektu | - | ATARI->SIO2SD ($80) | 39 | utwórz nowy wpis w bieżącym katalogu | 3.0 |
$0C | - | - | ATARI->SIO2SD ($80) | 54 | skasuj wskazany plik | 3.0 |
$0D | - | - | ATARI->SIO2SD ($80) | 54 | zmień nazwę wskazanego pliku | 3.0 |
$0E | - | - | SIO2SD->ATARI ($40) | 54 | znajdź na całej karcie SD pliki pasujące do maski | 3.0 |
$0F | - | - | ATARI->SIO2SD->ATARI ($C0) | 54 | zwróć katalog nadrzędny dla wskazanego obiektu | 3.0 |
$10 | line number | - | ATARI->SIO2SD ($80) | 40 | wyświetl dane na wyświetlaczu LCD | 2.0 |
$11 | - | - | SIO2SD->ATARI ($40) | 1 | zwróć wersję oprogramowania systemowego | 3.0 |
$12 | - | - | SIO2SD->ATARI ($40) | 16 | zwróć bajty konfiguracyjne | 3.0 |
$13 | - | - | ATARI->SIO2SD ($80) | 16 | ustaw bajty konfiguracyjne | 3.0 |
$14 | - | - | SIO2SD->ATARI ($40) | 15 | zwróć konfigurację mapowania dysków wirtualnych | 3.0 |
$15 | - | - | ATARI->SIO2SD ($80) | 15 | ustaw konfigurację mapowania dysków wirtualnych | 3.0 |
$1E | - | - | SIO2SD->ATARI ($40) | 1 | zwróć indeks szybkości dla turbo normalnego | 3.0 |
$1F | - | - | SIO2SD->ATARI ($40) | 1 | zwróć indeks szybkości dla turbo 7-bit | 3.0 |
$20 | parametry | - | ATARI->SIO2SD ($80) | 39 | stwórz/otwórz plik | 3.0 |
$21 | - | - | ATARI->SIO2SD ($80) | 54 | otwórz plik | 3.0 |
$22 | - | - | SIO2SD->ATARI ($40) | 3 | zwróć pozycję operacji odczytu/zapisu (w bajtach) | 3.0 |
$23 | - | - | ATARI->SIO2SD ($80) | 3 | ustaw pozycję operacji odczytu/zapisu (w bajtach) | 3.0 |
$24 | długość | - | SIO2SD->ATARI ($40) | ‘aux1’ bajtów | odczytaj podaną ilość bajtów z bieżącej pozycji | 3.0 |
$25 | długość | - | ATARI->SIO2SD ($80) | ‘aux1’ bajtów | zapisz podaną ilość bajtów od bieżącej pozycji | 3.0 |
$26 | - | - | SIO2SD->ATARI ($40) | 3 | zwróć długość otwartego pliku (w bajtach) | 3.0 |
$27 | - | - | ATARI->SIO2SD ($80) | 3 | ustaw długość otwartego pliku (w bajtach) | 3.0 |
$00
status:
- 0 - brak karty
- 1 - jest karta w slocie
- 2 - jest karta w slocie, uległy zmianie mapowania dysków oraz bieżący katalog
- 3 - jest karta w slocie, uległy zmianie mapowania dysków
- 4 - jest karta w slocie, uległ zmianie bieżący katalog
$01,$02,$03
numery dysków:
- <1-15> - zwykłe dyski D1 do D15
- <129-228> - dyski “wirtualne” V0 do V99
- 128 - dysk konfiguracyjny
$04
flagi (bit 0 = start/kontynuacja , bit 1 = przód/tył):
- 0 - kontynuuj od początku
- 1 - ustaw na początek i zwróć pierwsze pliki
- 2 - kontynuuj od końca
- 3 - ustaw na koniec i zwróć ostatnie pliki
$09
maska typów:
- 1 - katalogi
- 2 - pliki
- 3 - wszystko
dane:
- Maska jest podawana w formie napisu zakończonego zerem lub zajmującego pełne 16B w formie: []text[] lub []text[].[]text[]
$0B
typ obiektu:
- 1 - katalog
- 2 - plik (tworzony jest plik o zerowej długości, który jest traktowany jak plik ATR)
$0D
- bajty <0-38> - nowa nazwa pliku
- bajty <39-53> - dane pliku, któremu chcemy zmienić nazwę
$0E
- Komenda ta do pracy wymaga wcześniejszego ustawienia maski komendą $09
$12,$13
- bajt 0 - ustawienie prędkości turbo (0-16 prędkość turbo , 17 - turbo wyłączone)
- bajt 1 - ustawienie prędkości turbo w trybie 7-bit/XF551
- bajt 2 - ustaw prędkość transmisji karty MMC/SD
- 0 - szybko (jak na AVR’a) - około 2.4Mb/s
- 1 - pośrednia prędkość - około 900kb/s
- 2 - wolno - około 500kb/s
- bajt 3 - tryb działania diod LED
- 0 - tylko odczyty i zapisy na karcie SD
- 1 - tylko odczyty i zapisy z ATARI (SIO)
- 2 - jedna dioda odczyty i zapisy SD, a druga aktywność SIO
- bajt 4 - numer urządzenia SIO2SD (0-3)
- bajt 5 - parametry zabezpieczenia przed zapisem
- 0 - ATR’y zawsze mogą być zapisywane
- 1 - zachowanie zgodne z ustawieniem flagi w ATR
- 2 - ATR’y zawsze są zabezpieczone przed zapisem
- bajt 6 - czas od wciśnięcia klawisza do rozpoczęcia samopowtarzania (0-50 w 1/50s)
- bajt 7 - czas pomiędzy wciśnięciami w czasie samopowtarzania (0-10 w 1/50s)
- bajty 8-15 - na razie nie są używane
$14,$15
Tablica mapowania dysków. Kolejne bajty odpowiadają kolejnym dyskom. Każdy bajt zawiera numer dysku, na który dany dysk rzeczywisty ma być przemapowany.
- wartości 1 - 15 odpowiadają dyskom D1 do D15
- wartości 129 - 228 odpowiadają dyskom wirtualnym V0 do V99
- wartość 128 odpowiada programowi konfiguracyjnemu
$20
parametry (bit 0 = wybór miejsca, bit 1 = błąd, gdy nie ma pliku):
- 0 - otwórz plik o danej nazwie w katalogu ATARI (jeżeli nie było pliku to go stwórz) - dla plików konfiguracyjnych
- 1 - otwórz plik o danej nazwie w bieżącym katalogu (jeżeli nie było pliku to go stwórz) - generacja nowego pliku
- 2 - otwórz plik o danej nazwie w katalogu ATARI (jeżeli nie było pliku to błąd)
- 3 - otwórz plik o danej nazwie w bieżącym katalogu (jeżeli nie było pliku to błąd)
$0B,$0D,$20
nazwa pliku:
Typowo powinno to być do 39 znaków dopełnionych zerami. Przy czym o ile w nazwie nie ma zera, to spacje z końca są usuwane, zatem wypełnienie nazwy spacjami (tak jak system zwraca w innych komendach) jest dopuszczalne. Z przekazanej nazwy system weźmie znaki o kodach od 32 do 126 z pominięciem znaków: ‘', ‘/’, ‘:’, ‘*’, ‘?’, ‘"’, ‘<’, ‘>’, ‘|’. Oznacza to np., że nazwa ze znakiem EOL (atari:155) na końcu zostanie zaakceptowana, a znak EOL po prostu pominięty.
$01,$02,$04,$05,$08,$21
opis pliku/katalogu (54B)
- bajty 0-38 (nazwa obiektu)
- bajt 39 - typ obiektu:
- 0 - wyłączony (tylko komendy $01 i $02)
- 1 - katalog
- 2 - plik
- 3 - pusty dysk (tylko komendy $01 i $02)
- bajty 40-43 - numer pierwszego bloku pliku (first cluster)
- bajty 44-47 - dla plików długość pliku, dla katalogów 0
- bajty 48-53 - opis pozycji w katalogu, gdzie znajduje się dany obiekt