Komendy SIO
Numer urządzenia $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 bieżącego katalogu |
1.0 |
$05 |
- |
- |
ATARI->SIO2SD ($80) |
54 |
zmień bieżą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óć bieżą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 w bieżącym katalogu (pasujących do maski) |
3.0 |
$0B |
typ obiektu |
- |
ATARI->SIO2SD ($80) |
39 |
utwórz nowy obiekt 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 karcie pliki pasujące do maski |
3.0 |
$0F |
- |
- |
ATARI->SIO2SD->ATARI ($C0) |
54 |
zwróć katalog nadrzędny dla danego obiektu |
3.0 |
$10 |
numer linii |
- |
ATARI->SIO2SD ($80) |
40 |
wyświetl dane na wyświetlaczu LCD |
2.0 |
$11 |
- |
- |
SIO2SD->ATARI ($40) |
1 |
zwróć wersję oprogramowania |
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) |
długość |
odczytaj 'długość' bajtów od bieżącej pozycji |
3.0 |
$25 |
długość |
- |
ATARI->SIO2SD ($80) |
długość |
zapisz 'długość' bajtów na 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
