<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>https://atariki.krap.pl/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Trub</id>
	<title>Atariki - Wkład użytkownika [pl]</title>
	<link rel="self" type="application/atom+xml" href="https://atariki.krap.pl/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Trub"/>
	<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php/Specjalna:Wk%C5%82ad/Trub"/>
	<updated>2026-10-24T08:11:37Z</updated>
	<subtitle>Wkład użytkownika</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=SIO&amp;diff=42076</id>
		<title>SIO</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=SIO&amp;diff=42076"/>
		<updated>2025-01-25T10:13:38Z</updated>

		<summary type="html">&lt;p&gt;Trub: FujiNet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Serial Input/Output. W założeniach jest to rezydujący w ROM-ie podsystem niskopoziomowych procedur blokowego dostępu do urządzeń szeregowych, to jest przede wszystkim stacji dysków, drukarek, modemów i magnetofonu. Wszystkie te urządzenia podłącza się w Atari do [[Gniazdo SIO|gniazda SIO]].&lt;br /&gt;
&lt;br /&gt;
W serii [[XL]] do podsystemu SIO dodano także niskopoziomową (blokową) obsługę urządzeń podłączanych do szyny równoległej ([[PBI]]), czyli tak zwanych [[nowe urządzenia|nowych urządzeń]].&lt;br /&gt;
&lt;br /&gt;
==Sposób użycia==&lt;br /&gt;
&lt;br /&gt;
Żądaną operację definiuje się ustawiwszy przedtem odpowiednie zmienne w bloku DCB (Device Control Block, $0300), a następnie wywołuje skokiem JSR pod JSIOINT $E459, co jest punktem wejściowym interfejsu szeregowo-równoległego. Przy powrocie rejestr Y zawiera wartość 1 w przypadku powodzenia, bądź ujemny [[kody błędów|kod błędu]].&lt;br /&gt;
&lt;br /&gt;
===Struktura DCB===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Adres&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Etykieta&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Wielkość&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Znaczenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$0300&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DDEVIC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Identyfikator urządzenia (zob. niżej).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$0301&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DUNIT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Numer urządzenia; w przypadku stacji dysków numer napędu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$0302&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DCMND&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda dla urządzenia.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$0303&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DSTATS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Przed wywołaniem SIO należy ustawić tu rodzaj operacji ($40 odczyt, $80 zapis, $C0 zapis i odczyt, $00 brak transferu danych). Po powrocie z systemu znajduje się tu status operacji ([[kody błędów|kod błędu]]).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$0304&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DBUFA&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Dwa bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Adres bufora. Przy operacji zapisu i odczytu jednocześnie (DSTATS = $C0) bufor na odczytywane dane znajduje się w tym samym miejscu, co bufor danch przeznaczonych do zapisu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$0306&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DTIMLO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Czas oczekiwania na pozytywną odpowiedź urządzenia, tzw. &#039;&#039;timeout&#039;&#039;. Oblicza się to jak następuje: wartość DTIMLO mnożona jest przez 64, w wyniku czego otrzymujemy liczbę &amp;quot;[[ramka|ramek]]&amp;quot; [[VBL]] do odczekania. Zwiększenie DTIMLO o jeden powoduje wydłużenie czasu oczekiwania o 1,28 sek. w systemie PAL i o 1,067 sek. w systemie NTSC. Wartość &amp;quot;0&amp;quot; oznacza 256 jednostek.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Typowo ustawia się tu wartość z zakresu od $06 do $08 (zależnie od kaprysu programisty) dla wszystkich operacji oprócz formatowania. Właściwą wartość timeout dla formatowania urządzenie przesyła w bloku statusu, w odpowiedzi na komendę READ STATUS (&amp;quot;S&amp;quot;, zob. niżej).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$0307&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DUNUSE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt nieużywany, zarezerwowany do przyszłych zastosowań.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$0308&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DBYT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Dwa bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wielkość bufora; musi być zgodna z wielkością transmitowanego bloku danych. Zero oznacza 64 kilobajty.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$030A&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DAUX1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Pierwszy bajt pomocniczy. W operacjach dyskowych młodszy bajt numeru sektora.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$030B&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DAUX2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Drugi bajt pomocniczy. W operacjach dyskowych starszy bajt numeru sektora.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Wykaz urządzeń===&lt;br /&gt;
&lt;br /&gt;
Komenda wysyłana do urządzenia formowana jest w strukturze CFB (Command Frame Buffer, $023A) składającej się z:&lt;br /&gt;
* CDEVIC&lt;br /&gt;
* CCMND&lt;br /&gt;
* CAUX1&lt;br /&gt;
* CAUX2&lt;br /&gt;
a uzupełnianej na podstawie DCB.&lt;br /&gt;
&lt;br /&gt;
Istnieje pięć urządzeń zdefiniowanych przez Atari. Właściwy identyfikator urządzenia (CDEVIC) zestawiany jest przez system z kodu urządzenia (DDEVIC) i jego numeru indywidualnego (DUNIT). Wartości te są dodawane, po czym jeszcze odejmuje się 1. Dlatego stację dysków nr 1 można wywołać też jako DDEVIC=$32 i DUNIT=0, liczy się wynik wspomnianego dodawania (CDEVIC). UWAGA: jest to tzw. &amp;quot;nieudokumentowana&amp;quot; cecha procedur szeregowych OS-u, inne urządzenia (jak np. [[nowe urządzenia]]) mogą tego nie robić.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding = 5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;DDEVIC&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;CDEVIC&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31-$3F&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;dyskowa pamięć masowa (stacja dysków, twardy dysk)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$40&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$40-$43&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;drukarka&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4F&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$4F&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;bus master (moduł [[1090]])&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$50&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50-$53&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;port szeregowy RS-232C&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$60&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$60&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;magnetofon kasetowy&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Przypisanie identyfikatorów do poszczególnych urządzeń jest niezbyt konsekwentne, np. CDEVIC=$31 to stacja dysków numer 1, ale CDEVIC=$41 to drukarka numer 2.&lt;br /&gt;
&lt;br /&gt;
Urządzeniem, które na podanej powyżej liście jest wyjątkowe, jest magnetofon kasetowy. Jest to jedyne &amp;quot;nieinteligentne&amp;quot; urządzenie peryferyjne, to jest nie zawierające własnego procesora. Wszystkie zadania związane z wysyłaniem danych na magnetofon i odbiorem z niego wykonuje system operacyjny komputera. W odróżnieniu od innych urządzeń, magnetofon okupuje tylko identyfikator $60, a wartość DUNIT jest ignorowana - w związku z tym kody urządzeń od $61 do $6F są (na razie) wolne.&lt;br /&gt;
&lt;br /&gt;
Wartości CDEVIC powyżej $7F są zarezerwowane dla pewnych rozszerzeń protokołu SIO, patrz [[SIO#Rozszerzenia_SIO|niżej]].&lt;br /&gt;
&lt;br /&gt;
Ponieważ identyfikator jest częścią wysyłanej do urządzenia komendy, więc budując własne urządzenie można posłużyć się identyfikatorem spoza powyżej wyszczególnionych:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding = 5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;DDEVIC&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;CDEVIC&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$20&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[IDE Plus]], [[SIDE]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$45&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$45&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Smart Device]] ( [[APE Time]] i [[URL Submit]])&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$5A&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$5A&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[ATR 8000]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$61&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$61&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[AtariSIO]], [[DOS2DOS]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$70&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$70&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[http://www.mathyvannisselroy.nl/aspi.htm Atari ASPI] (zob. [http://pl.wikipedia.org/wiki/ASPI ASPI])&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$70&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$70&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[FujiNet]] - komendy modułu&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$71-$78&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$70&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[FujiNet]] - komendy dla urządzenia N:&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$71-$74&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$71-$74&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[SDrive]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$71&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$70&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[SIO2USB]] [http://www.atariage.com/forums/topic/155690-ape-time/page__view__findpost__p__1916403?s=2e4d3fd681ca05ec0c05b0a7e5474dd6]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$73&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$72-$75&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[SIO2SD|Sio2SD]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Wykazy komend===&lt;br /&gt;
&lt;br /&gt;
* [[Lista komend SIO według funkcji]]&lt;br /&gt;
* [[Lista komend SIO według kodów operacyjnych]]&lt;br /&gt;
&lt;br /&gt;
===Blok statusu===&lt;br /&gt;
&lt;br /&gt;
Blok statusu przysyłany na komendę żądania statusu ($53) ma strukturę w dużym stopniu zależną od urządzenia. Są to dwa lub cztery bajty, a ich znaczenie dla poszczególnych urządzeń jest opisane poniżej. W pierwszym bajcie statusu obowiązuje jednolity dla wszystkich urządzeń podział na dwie grupy bitów:&lt;br /&gt;
&lt;br /&gt;
* bity 0-2 sygnalizują status komunikacji pomiędzy komputerem a urządzeniem&lt;br /&gt;
* bity 3-7 sygnalizują status wewnętrzny urządzenia&lt;br /&gt;
&lt;br /&gt;
====Stacja dysków====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=4&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Bajt&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Znaczenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
* bit 0 = 1 - wydana ostatnio komenda nie została rozpoznana&lt;br /&gt;
* bit 1 = 1 - przesłany ostatnio blok danych był błędny (błąd sumy kontrolnej)&lt;br /&gt;
* bit 2 = 1 - ostatnia operacja nie powiodła się (np. próbowano odczytać wadliwy sektor)&lt;br /&gt;
* bit 3 = 1 - dyskietka jest zabezpieczona przed zapisem&lt;br /&gt;
* bit 4 = 1 - kręci się silnik obracający dyskietkę&lt;br /&gt;
* bit 5 = 1 - sektory 256-bajtowe (128-bajtowe w przeciwnym wypadku)&lt;br /&gt;
* bit 6 = 0 - zarezerwowany&lt;br /&gt;
* bit 7 = 1 - praca w średniej gęstości&lt;br /&gt;
&amp;lt;p&amp;gt;W przypadku interfejsu [[KMK/JŻ]] IDE znaczenie mają tylko bity 3 i 5, reszta jest zawsze wyzerowana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Kopia rejestru statusu kontrolera WD 1772 (lub kompatybilnego), wszystkie bity są poddane inwersji.&amp;lt;/p&amp;gt;&lt;br /&gt;
* bit 0 = 1 - BUSY&lt;br /&gt;
* bit 1 = 1 - DRQ (Data Request)&lt;br /&gt;
* bit 2 = 1 - Track 0 not found&lt;br /&gt;
* bit 3 = 1 - CRC error&lt;br /&gt;
* bit 4 = 1 - Record not found&lt;br /&gt;
* bit 5 = 1 - Seek complete&lt;br /&gt;
* bit 6 = 1 - Write protected&lt;br /&gt;
* bit 7 = 1 - Not ready&lt;br /&gt;
&amp;lt;p&amp;gt;Interfejs IDE [[KMK/JŻ]] zwraca zamiast tego zawartość rejestru ERROR kontrolera IDE:&amp;lt;/p&amp;gt;&lt;br /&gt;
* bit 0 = 1 - Data Address Mark not found&lt;br /&gt;
* bit 1 = 1 - Track 0 not found&lt;br /&gt;
* bit 2 = 1 - Aborted command&lt;br /&gt;
* bit 3, zarezerwowany&lt;br /&gt;
* bit 4 = 1 - ID not found&lt;br /&gt;
* bit 5, zarezerwowany&lt;br /&gt;
* bit 6 = 1 - ECC error&lt;br /&gt;
* bit 7 = 1 - Bad sector&lt;br /&gt;
&amp;lt;p&amp;gt;Podobnie jak powyżej wszystkie bity są poddane inwersji (EOR #$FF).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Maksymalny czas oczekiwania na wykonanie komendy (timeout) przewidziany dla operacji dyskowej. Najdłużej trwa formatowanie, zalecaną wartością jest 240.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nie używany.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Drukarka====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=4&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Bajt&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Znaczenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
* bit 0 = 1 - wydana ostatnio komenda nie została rozpoznana&lt;br /&gt;
* bit 1 = 1 - przesłany ostatnio blok danych był błędny (błąd sumy kontrolnej)&lt;br /&gt;
* bit 7 = 1 - drukarka jest programowalna (w drukarkach Atari ten bit jest skasowany)&lt;br /&gt;
Pozostałe bity są zarezerwowane.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DAUX2 przesłanej ostatnio komendy&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Maksymalny czas oczekiwania na wykonanie komendy (timeout) przewidziany dla tej drukarki&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nie używany.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RS-232 ([[850|Atari 850]])====&lt;br /&gt;
&lt;br /&gt;
Blok statusu portu RS-232 ma dwa bajty (w pozostałych urządzeniach - cztery).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=4&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Bajt&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Znaczenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
* bit 0 = 1 - wydana ostatnio komenda nie została rozpoznana&lt;br /&gt;
* bit 1 = 1 - przesłany ostatnio blok danych był błędny (błąd sumy kontrolnej)&lt;br /&gt;
* bit 2, zarezerwowany&lt;br /&gt;
* bit 3, zarezerwowany&lt;br /&gt;
* bit 4 = 1 - przepełnienie bufora RS-232&lt;br /&gt;
* bit 5 = 1 - błąd parzystości RS-232&lt;br /&gt;
* bit 6 = 1 - na porcie RS-232 wystąpił nadmiar bitów (overrun) &lt;br /&gt;
* bit 7 = 1 - na porcie RS-232 wystąpiło zakłócenie transmisji szeregowej (framing error)&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
* bit 0 = 1 - RCV (czyli RX) ustawione&lt;br /&gt;
* bit 1, zarezerwowany&lt;br /&gt;
* bit 2, kopia bitu 3&lt;br /&gt;
* bit 3 = 1 - CRX (czyli DCD) ustawione&lt;br /&gt;
* bit 4, kopia bitu 5&lt;br /&gt;
* bit 5 = 1 - CTS ustawione&lt;br /&gt;
* bit 6, kopia bitu 7&lt;br /&gt;
* bit 7 = 1 - DSR ustawione&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Magnetofon kasetowy====&lt;br /&gt;
&lt;br /&gt;
Przyjmuje się, że magnetofon, jako urządzenie &amp;quot;nieinteligentne&amp;quot;, jest zawsze podłączony i gotowy do pracy, a więc nie zachodzi potrzeba sprawdzania jego statusu. W związku z tym funkcja READ STATUS ($53) nie jest dla magnetofonu zaimplementowana.&lt;br /&gt;
&lt;br /&gt;
===Blok PERCOM===&lt;br /&gt;
&lt;br /&gt;
Blok PERCOM jest to 12 bajtów informacji o konfiguracji stacji dysków. Odczyt przeprowadza się komendą $4E (&amp;quot;N&amp;quot;), a zapis - komendą $4F (&amp;quot;O&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Bajt&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba ścieżek na dyskietce; w praktyce dla stacji dysków spotyka się wartości najczęściej 40 lub 80, rzadziej 35 lub 77. Partycje twardego dysku zwracają 1.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Szybkość przesuwu głowicy ze ścieżki na ścieżkę:&lt;br /&gt;
* 0 - 30 ms&lt;br /&gt;
* 1 - 20 ms&lt;br /&gt;
* 2 - 12 ms&lt;br /&gt;
* 3 - 6 ms&lt;br /&gt;
&amp;lt;p&amp;gt;W praktyce stacje przeważnie ignorują przesłaną wartość. W przypadku twardego dysku jest ona bez znaczenia (kontroler KMK/JŻ zwraca w tym bajcie numer wersji wewnętrznego oprogramowania)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;STARSZY bajt liczby sektorów na ścieżce.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MŁODSZY bajt liczby sektorów na ścieżce.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba aktywnych stron dyskietki zmniejszona o 1 albo najstarszy bajt liczby sektorów partycji twardego dysku (patrz niżej).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;5&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
* bit 0 - zarezerwowany&lt;br /&gt;
* bit 1 = 1, dyskietka ośmiocalowa; 5,25 cala w przeciwnym wypadku&lt;br /&gt;
* bit 2 = 1, gęstość MFM, FM w przeciwnym wypadku&lt;br /&gt;
* bit 3 = 1, dysk nie ma &amp;quot;stron&amp;quot;, a zamiast liczby stron jest podany najstarszy bajt całkowitej liczby sektorów dysku (partycji twardego dysku)&lt;br /&gt;
&amp;lt;p&amp;gt;Pozostałe bity są zarezerwowane i powinny być wyzerowane.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;STARSZY bajt wielkości sektora (w bajtach)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;7&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MŁODSZY bajt wielkości sektora (w bajtach)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;8&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Niewykorzystany, zapisuje się - i przeważnie odczytuje - jako $FF. W oryginalnych stacjach PERCOM bajt ten sygnalizował stan niektórych funkcji kontrolera stacji i służył do ich wybierania:&amp;lt;/p&amp;gt;&lt;br /&gt;
* bit 0 = 1, sektory fizyczne na ścieżce numerowane są od 0, a nie od 1.&lt;br /&gt;
* bit 1 = 1, sektory fizyczne 1,2,3 mają pełne rozmiary.&lt;br /&gt;
* bit 2, zarezerwowany&lt;br /&gt;
* bit 3, zarezerwowany&lt;br /&gt;
* bit 4, zarezerwowany&lt;br /&gt;
* bit 5, zarezerwowany&lt;br /&gt;
* bit 6 = 0, napęd stacji jest odłączony (wyjęty).&lt;br /&gt;
* bit 7 = 1, napęd 80-ścieżkowy pracuje w trybie 40-ścieżkowym.&lt;br /&gt;
&amp;lt;p&amp;gt;W praktyce większość stacji nie ustawia tych bitów zgodnie z powyższym opisem.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Niewykorzystane, na ogół 0.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;10&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Niewykorzystane, na ogół 0.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;11&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Niewykorzystane, na ogół 0.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Protokół transmisji==&lt;br /&gt;
&lt;br /&gt;
=== Połączenia równoległe ===&lt;br /&gt;
&lt;br /&gt;
Protokół transmisji urządzeń podłączanych do szyny równoległej jest zależny od programu obsługi urządzenia zawartego w jego pamięci ROM. System operacyjny tego nie definiuje.&lt;br /&gt;
&lt;br /&gt;
=== Połączenia szeregowe ===&lt;br /&gt;
&lt;br /&gt;
Podziału poszczególnych bajtów na bity i wyemitowania ich na złącze szeregowe tudzież przyjmowania pojedynczych bitów i scalania ich w bajty dokonuje sprzętowo układ [[POKEY]] (quod vide).&lt;br /&gt;
&lt;br /&gt;
==== Opis przebiegu komunikacji ====&lt;br /&gt;
Przebieg komunikacji pomiędzy komputerem a urządzeniem jest następujący:&lt;br /&gt;
&lt;br /&gt;
1) komputer ustawia linię COMMAND [[gniazdo SIO|portu SIO]];&lt;br /&gt;
&lt;br /&gt;
2) komputer formuje czterobajtowy blok komendy, tzw. Command Frame. Command Frame składa się kolejno z (bajt 1) dodanych do siebie wartości DDEVIC i DUNIT, odjąć 1; (bajt 2) wartości DCMND; (bajt 3) wartości DAUX1; (bajt 4) wartości DAUX2;&lt;br /&gt;
&lt;br /&gt;
3) komenda jest wysyłana do urządzenia razem z dołączoną na końcu [[suma kontrolna SIO|sumą kontrolną]]; czas pomiędzy ustawieniem linii COMMAND a rozpoczęciem wysyłania komendy musi być nie mniejszy niż 750 usec i nie większy niż 1600 usec.&lt;br /&gt;
&lt;br /&gt;
4) komputer kasuje linię COMMAND portu SIO (nie wcześniej niż po 650 usec i nie później niż 950 usec po wysłaniu ostatniego bitu komendy) i czeka na odpowiedź;&lt;br /&gt;
&lt;br /&gt;
5) urządzenie przyjmuje komendę; jeśli urządzenie stwierdziło w komendzie błąd sumy kontrolnej, nie reaguje; jeśli komenda jest nierozpoznana, albo nieprawidłowe są jej parametry (np. nie istnieje sektor o podanym numerze), odpowiedzią jest $4E (&amp;quot;N&amp;quot;, jak Negative Acknowledge) i na tym transmisja się kończy; jeśli komenda jest urządzeniu znana a parametry prawidłowe, odpowiedzią jest $41 (&amp;quot;A&amp;quot;, jak Acknowledge). Urządzenie musi rozpocząć wysyłanie odpowiedzi w czasie od 0 do 16 msec. od skasowania linii COMMAND przez komputer;&lt;br /&gt;
&lt;br /&gt;
Dalszy przebieg jest zależny tego, czy dana komenda wymaga przesłania dodatkowego bloku danych do/z urządzenia. Możliwe są 3 sytuacje: brak transmisji danych; odczyt danych z urządzenia; zapis danych do urządzenia.&lt;br /&gt;
&lt;br /&gt;
6a) Jeśli komenda nie wymaga transmisji bloku danych, urządzenie podejmuje próbę wykonania operacji; jeśli się to nie uda, wysyła kod $45 (&amp;quot;E&amp;quot;, jak Error); w przeciwnym wypadku przesyłany jest kod $43 (&amp;quot;C&amp;quot;, jak Complete); na tym transmisja się kończy.&lt;br /&gt;
&lt;br /&gt;
6b) jeśli komenda polega na odczycie bloku danych, urządzenie podejmuje próbę wykonania operacji; jeśli się to nie uda (np. nie można odczytać sektora z powodu uszkodzenia nośnika), wysyła kod $45 (&amp;quot;E&amp;quot;, jak Error); w przeciwnym wypadku przesyłany jest kod $43 (&amp;quot;C&amp;quot;, jak Complete); następnie w obydwu przypadkach urządzenie natychmiast wysyła blok danych zakończony sumą kontrolną i na tym transmisja się kończy.&lt;br /&gt;
&lt;br /&gt;
6c) jeśli to jest zapis bloku danych, komputer przesyła blok danych plus sumę kontrolną do urządzenia. Po jego przyjęciu, jeśli blok danych jest poprawny, urządzenie odpowiada kodem $41 (&amp;quot;A&amp;quot;) i przystępuje do np. zapisania danych na nośnik. W przeciwnym wypadku, jeśli w nadesłanym bloku danych urządzenie stwierdzi błąd sumy kontrolnej lub inne nieprawidłowości, odpowiada kodem $4E (&amp;quot;N&amp;quot;) lub nie odpowiada w ogóle, a blok danych ignoruje (należy tu jednak mieć na względzie, że Atari zasygnalizuje wtedy błąd timeout-u $8A). W następnej fazie urządzenie informuje komputer o wykonaniu kodem &amp;quot;C&amp;quot; lub &amp;quot;E&amp;quot; o znaczeniu jak powyżej, i na tym transmisja się kończy. Przesłanie bloku danych musi rozpocząć się nie wcześniej niż 1000 usec. i nie później niż 1800 usec. po przesłaniu ostatniego bitu potwierdzeniu przyjęcia komendy (pierwszym &amp;quot;A&amp;quot;). Rozpoczęcie przesłania potwierdzenia otrzymania bloku (&amp;quot;A&amp;quot; lub &amp;quot;N&amp;quot;) musi nastąpić w czasie od 850 usec. do 16 msec. po przesłaniu ostatniego bitu bloku danych.&lt;br /&gt;
&lt;br /&gt;
We wszystkich 3 przypadkach transmisja potwierdzenia końcowego (&amp;quot;C&amp;quot; lub &amp;quot;E&amp;quot;) z urządzenia musi rozpocząć się nie wcześniej niż po 250 usec. i nie później niż po 255 sekundach - czyli po 4 minutach i 15 sekundach - od przesłania ostatniego bitu potwierdzenia komendy (&amp;quot;A&amp;quot;) (6a, 6b) lub od odebrania ostatniego bitu bloku danych (6c).&lt;br /&gt;
&lt;br /&gt;
Konieczność odebrania bloku danych z urządzenia podczas operacji odczytu, nawet po ustaleniu że operacja została wykonana błędnie (kod &amp;quot;E&amp;quot;) może tłumaczyć fakt, że po operacji formatowania dysku stacje dysków wysyłają listę błędnych sektorów (rozmiar odbieranego bloku danych ustalany jest w DBYT).&lt;br /&gt;
&lt;br /&gt;
==== Schemat wymiany danych ====&lt;br /&gt;
&lt;br /&gt;
W fazie oznaczonej jako &#039;&#039;wykonanie&#039;&#039; urządzenie dokonuje niezbędnych czynności (np. stacja dysków wyszukuje żądany sektor na dyskietce i odczytuje go, albo zapisuje), a komputer czeka.&lt;br /&gt;
&lt;br /&gt;
Potwierdzenia przesyłane są bez sum kontrolnych.&lt;br /&gt;
&lt;br /&gt;
===== Tylko komenda =====&lt;br /&gt;
&lt;br /&gt;
* komputer --&amp;gt; komenda 4 B + suma kontrolna --&amp;gt; urządzenie&lt;br /&gt;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* wykonanie&lt;br /&gt;
* komputer &amp;lt;-- potwierdzenie &#039;C&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* koniec&lt;br /&gt;
&lt;br /&gt;
===== Odczyt =====&lt;br /&gt;
&lt;br /&gt;
* komputer --&amp;gt; komenda 4 B + suma kontrolna --&amp;gt; urządzenie&lt;br /&gt;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* wykonanie&lt;br /&gt;
* komputer &amp;lt;-- potwierdzenie &#039;C&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* komputer &amp;lt;-- blok danych + suma kontrolna &amp;lt;-- urządzenie&lt;br /&gt;
* koniec&lt;br /&gt;
&lt;br /&gt;
===== Zapis =====&lt;br /&gt;
&lt;br /&gt;
* komputer --&amp;gt; komenda 4 B + suma kontrolna --&amp;gt; urządzenie&lt;br /&gt;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* komputer --&amp;gt; blok danych + suma kontrolna --&amp;gt; urządzenie&lt;br /&gt;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* wykonanie&lt;br /&gt;
* komputer &amp;lt;-- potwierdzenie &#039;C&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* koniec&lt;br /&gt;
&lt;br /&gt;
===== Zapis i odczyt =====&lt;br /&gt;
&lt;br /&gt;
* komputer --&amp;gt; komenda 4 B + suma kontrolna --&amp;gt; urządzenie&lt;br /&gt;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* komputer --&amp;gt; blok danych + suma kontrolna --&amp;gt; urządzenie&lt;br /&gt;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* wykonanie&lt;br /&gt;
* komputer &amp;lt;-- potwierdzenie &#039;C&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* komputer &amp;lt;-- blok danych + suma kontrolna &amp;lt;-- urządzenie&lt;br /&gt;
* koniec&lt;br /&gt;
&lt;br /&gt;
====Magnetofon====&lt;br /&gt;
&lt;br /&gt;
Powyższe schematy dotyczą wszystkich urządzeń SIO za wyjątkiem magnetofonu. Magnetofon nie zawiera w sobie mikroprocesora, jest urządzeniem &amp;quot;nieinteligentnym&amp;quot;. Transmisja jest w całości obsługiwana przez komputer, który wysyła (i przyjmuje) bloki danych, tzw. rekordy, zawierające każdy po 128 bajtów danych, bajt sumy kontrolnej oraz bajt rodzaju rekordu i dwa dodatkowe bajty służące do pomiaru równomierności przesuwu taśmy - łącznie 132 bajty.&lt;br /&gt;
&lt;br /&gt;
==Rozszerzenia SIO==&lt;br /&gt;
&lt;br /&gt;
===Systemy turbo do stacji dysków===&lt;br /&gt;
&lt;br /&gt;
Standardowa szybkość wymiany danych ze stacją dysków - 19200 bps - szybko okazała się dalece niewystarczająca. Ponieważ, jak napisano powyżej, możliwości układu [[POKEY]] pozwalają uzyskać znacznie więcej, wkrótce powstało kilka, różnych niestety, [[Systemy Turbo|systemów &amp;quot;turbo&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
===Rozszerzone adresowanie sektorów (KMK/JŻ IDE)===&lt;br /&gt;
&lt;br /&gt;
Kontroler [[KMK/JŻ IDE]] wykorzystuje bajt DUNUSE ($0307) bloku DCB jako najstarszy bajt numeru sektora. Pozwala to na zaadresowanie do 16777215 sektorów na jednej partycji.&lt;br /&gt;
&lt;br /&gt;
===Rozszerzone adresowanie pamięci (65C816)===&lt;br /&gt;
&lt;br /&gt;
[[DracOS]] (odmiana [[XL OS]] przygotowana dla procesora [[65C816]]) zawiera rozszerzenie SIO pozwalające na transfery danych bezpośrednio do i z dodatkowej pamięci adresowalnej liniowo (tj. znajdującej się pod adresami wyższymi niż $FFFF) oraz 32-bitowe adresowanie sektorów.&lt;br /&gt;
&lt;br /&gt;
==Zobacz też==&lt;br /&gt;
* [http://www.atariarchives.org/dere/ De Re Atari]&lt;br /&gt;
* [[Obsługa protokołu SIO przez urządzenie peryferyjne]]&lt;br /&gt;
&lt;br /&gt;
==Bibliografia==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;[http://ftp.pigwa.net/stuff/collections/nir_dary_cds/Tech%2520Info/SIOSPECS.PDF Atari Home Computer System: Serial Input Output Interface, User&#039;s Handbook]&#039;&#039;&lt;br /&gt;
* Harry B. Stewart, &#039;&#039;[http://www.atarimuseum.com/ahs_archives/archives/pdf/computers/8bits/1200XL/sweet-16_OS.pdf Z800/Sweet 16 Operating System, External Reference Specification]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Menu Główne]]&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Lista_handler%C3%B3w_CIO&amp;diff=42070</id>
		<title>Lista handlerów CIO</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Lista_handler%C3%B3w_CIO&amp;diff=42070"/>
		<updated>2025-01-22T12:01:43Z</updated>

		<summary type="html">&lt;p&gt;Trub: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lista identyfikatorów urządzeń [[CIO]]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! ID !! Autor !! Krótki opis !! Gdzie znaleźć program obsługi + ewentualny opis&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | A: || Atari Corp. || Odczyt dyskietki przez DOS&amp;amp;nbsp;XE w&amp;amp;nbsp;formacie AtariDOS&amp;amp;nbsp;II || [[DOS XE]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Maciej Czarnota]] || Zapis i odczyt sektorów dyskietki || [[Tajemnice Atari]] [http://tajemnice.atari8.info/3_92/3_92_handlera.html 3/1992]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | B: || Bob Martin || Tworzy pliki bootowalne || [[ANTIC (czasopismo)|ANTIC]] [http://www.atarimagazines.com/v8n3/OperatingSystemHandlers.html 3/1989]&lt;br /&gt;
|-&lt;br /&gt;
| [http://users.uoa.gr/~knakos/atari800/android/ Kostas Nakos] i [http://analog.klanky.com/8bit.htm Tom Hudson] || Browser || [[B: Device]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | C: || Atari || Handler magnetofonu || W ROM-ie&lt;br /&gt;
|-&lt;br /&gt;
| Marek Pasek || Pozwala zmienić prędkość zapisu na magnetofon || Baud Rate Selector opublikowany w [https://tajemnice.atari8.info/1-2_93/1-2_93_brs.html Tajemnicach Atari] 1-2/93&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | [[D:]] || Atari i in. || Handler dysku || W [[DOS]]-ach.&lt;br /&gt;
|-&lt;br /&gt;
| Twórcy Turbo 2000 || Handler magnetofonu dla szybkiej transmisji w systemie Turbo 2000 || Oprogramowanie do Turbo 2000&lt;br /&gt;
|-&lt;br /&gt;
| Wojciech Palacz || Ramdisk ulokowany w pamięci pod ROM || Mini-Ramdisk opublikowany w [https://tajemnice.atari8.info/3_93/3_93_miniramdisk.html Tajemnicach Atari] 3/93&lt;br /&gt;
|-&lt;br /&gt;
| [[E:]] || Atari || Konsola systemowa || W ROM-ie (standardowy) lub dostarczany razem z przystawką [[XEP80]] (80-kolumnowy)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | F: || Darek Mihocka || Host filesystem w emulatorze XFormer || [[XFormer]]&lt;br /&gt;
|-&lt;br /&gt;
| RiP || Kompresja plików &amp;quot;w locie&amp;quot; || [[Cat Food]] opublikowany w [https://tajemnice.atari8.info/6-7_93/6-7_93_catfood.html Tajemnicach Atari] 6-7/93&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | G: || Charles Johnson, 1985 || Drukowanie w trybie graficznym na drukarce EPSON i GEMINI || [http://www.strotmann.de/twiki/bin/view/APG/PgmGraphicsPrintDevice]&lt;br /&gt;
|-&lt;br /&gt;
| Rafał Mantiuk, 1991 || Wyświetlanie 80 lub 40 znaków w trybie [[Graphics 8]] || Super Text w [https://tajemnice.atari8.info/5_91/5_91_6strona.html Tajemnicach Atari] 5/91&lt;br /&gt;
|-&lt;br /&gt;
| H: || ? || Host filesystem w emulatorach || W emulatorach (Atari800)&lt;br /&gt;
|-&lt;br /&gt;
| I: || [[TOMS]] || [[STIBM]] - handler dyskietek w formacie IBM/PC ||  w oprogramowaniu systemowym stacji [[TOMS 720]] &lt;br /&gt;
|-&lt;br /&gt;
| J: || [[Wojciech Zientara]], 1988 || Transmisja danych przez porty joysticka || [[Procedury wejścia-wyjścia|Mapa pamięci ATARI XL/XE: Procedury wejścia-wyjścia]]&lt;br /&gt;
|-&lt;br /&gt;
| K: || Atari || Handler klawiatury || W ROM-ie&lt;br /&gt;
|-&lt;br /&gt;
| L: || David and Mary Lynch, 1985 || Handler drukarki Atari [[1020]] || [http://www.page6.org/archive/issue_13/page_22.htm]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | M: || [[Bill Wilkinson]] || Prosty ramdysk || [http://www.strotmann.de/twiki/bin/view/APG/PgmMemHandler] Podobny sterownik (handler) autorstwa L. Sztobryna instalujący w systemie RAM-plik w pamięci pod ROM, został opublikowany w [https://tajemnice.atari8.info/8_91/8_91_6strona.html Tajemnicach Atari] 8/91.&lt;br /&gt;
|-&lt;br /&gt;
| Witold Ściuk || Ramfile w [[Turbo Operating System]] || [[Turbo Operating System]].&lt;br /&gt;
|-&lt;br /&gt;
| N: || Bob Martin, Antic 2/89 || Urządzenie &amp;quot;null&amp;quot; || [http://www.atarimagazines.com/software/89-06a/NULLHAND.M65], ROM [[Karin Maxi]]&lt;br /&gt;
|-&lt;br /&gt;
| O: || Andrzej Biazik || Sterownik okienek w trybie tekstowym || [http://tajemnice.atari8.info/bajtek/atari_2/atari_2_djvu.html Tylko o Atari 2]&lt;br /&gt;
|-&lt;br /&gt;
| P: || Atari || Handler drukarki || W ROM-ie. Również sterownik interfejsu [[JOYSTAR]]&lt;br /&gt;
|-&lt;br /&gt;
| Q: || - || - || [http://www.cyberroach.com/analog/an16/print_itfc.htm]&lt;br /&gt;
|-&lt;br /&gt;
| R: || Atari i in. || Handler RS-232 || Sterownik modułu [[850]] znajduje się w jego ROM-ie, sterownik [[ASI]] autorstwa [[JBW]] opublikowano w piśmie [https://tajemnice.atari8.info/10_92/10_92_asi.html Tajemnice Atari] 10/92.&lt;br /&gt;
|-&lt;br /&gt;
| S: || Atari || Handler ekranu || W ROM-ie&lt;br /&gt;
|-&lt;br /&gt;
| [[S2:]] || [[KMK]] || Handler ekranu graficznego [[VBXE]] || [http://drac030.krap.pl/vbxe_s.arc U autora]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | T: || Atari i in. || Handler modemu [[XM301]] || Instalowany przez HANDLER.OBJ dołączany do dyskietki z [[XE Term]]&lt;br /&gt;
|-&lt;br /&gt;
| Witold Ściuk || Handler magnetofonu [[Turbo 2000]] || [[Turbo Operating System]]&lt;br /&gt;
|-&lt;br /&gt;
| || Handler magnetofonu [[Turbo Blizzard]] || [[Turbo Blizzard]]&lt;br /&gt;
|-&lt;br /&gt;
| || Jakieś &amp;quot;text display device&amp;quot; || [http://www.atariarchives.org/APX/showinfo.php?cat=20067]&lt;br /&gt;
|-&lt;br /&gt;
| Marek Pasek || Handler Turbo 2000 || Turbo 2000 Plus opublikowany w [https://tajemnice.atari8.info/4_93/4_93_turbo2000plus.html Tajemnicach Atari] 4/93&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | V: || Chris Bone, 1985 || Handler syntezatora mowy || [http://www.atarimagazines.com/v3n10/assemblylanguage.html]&lt;br /&gt;
|-&lt;br /&gt;
| THOR-Software || Voice interface - handler sprzętowego syntezatora mowy || [http://ftp.atari.art.pl/stuff/collections/atari_forever/Extension/Voice%20InterfaceVoice%20box%20for%20the%20800XL/Voice.asm]&lt;br /&gt;
|-&lt;br /&gt;
| Christopher Terpin || Atari Midi Interface || [http://ftp.atari.art.pl/stuff/collections/atari_forever/Extension/Midi/MIDI.ASM]&lt;br /&gt;
|-&lt;br /&gt;
| [[W:]] || [[Lesław Pasternak]], [[Janusz Pelc]] || Handler okienek tekstowych || [[Moje Atari]] [http://atarionline.pl/biblioteka/czasopisma/Moje_Atari/Moje_Atari_1990_01.djvu 1/1990]&lt;br /&gt;
|-&lt;br /&gt;
| X: || Steven W. Klassen, 1988 || Przesyłanie danych przez port joysticka ||  [http://www.cyberroach.com/analog/an16/print_itfc.htm]&lt;br /&gt;
|-&lt;br /&gt;
| [[Z:]] || [[ICD]] || Handler zegara [[R-Time 8]] || [http://www.sunmark.com/rtime/RTIME8.txt]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=ACX&amp;diff=42059</id>
		<title>ACX</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=ACX&amp;diff=42059"/>
		<updated>2025-01-13T18:25:06Z</updated>

		<summary type="html">&lt;p&gt;Trub: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ACX - od ang. &#039;&#039;Amy Chen eXecutable&#039;&#039; - jest formatem pliku przeznaczonym do przechowywania relokowalnych binariów. Format ten został stworzony dla doładowywanych z zewnątrz handlerów urządzeń podłączonych do łącza szeregowego ([[SIO]]) oraz szyny równoległej ([[PBI]]), zwłaszcza ekspandera [[1090]].&lt;br /&gt;
&lt;br /&gt;
Procedury obsługujące ten format znajdują się w [[XL OS]], w każdym seryjnym egzemplarzu [[1200XL]], [[600XL]], [[800XL]], [[65XE]] i [[130XE]]. System korzysta z nich podczas ładowania sterowników (handlerów) z podłączonych urządzeń, np. z modułu [[1090]]. Objawem tego jest znane wszystkim posiadaczom Atari &amp;quot;pierdzenie&amp;quot; wydobywające się z głośnika monitora przy starcie systemu oraz przy odwołaniu do urządzenia niezarejestrowanego w [[CIO]]. Jest to próba skomunikowania się z urządzeniami peryferyjnymi w celu ściągnięcia odpowiednich sterowników.&lt;br /&gt;
&lt;br /&gt;
Zamierzeniem twórców była dostępność procedury relokującej dla programistów. Planowane było umieszczenie oficjalnego skoku pod adresem $E486, umożliwiającego relokowanie &amp;quot;zwykłych&amp;quot; programów. Niestety, z niewiadomych przyczyn zrezygnowano z tego rozwiązania.&lt;br /&gt;
W systemie operacyjnym [[DracOS]] od wersji 2.22 przywrócono w [[Tablica skoków|tablicy skoków]] legalne odwołanie do procedury relokatora. Skok do niej umieszczono jednak pod adresem $E483, ze względu na zajęcie pierwotnego adresu przez inną procedurę.&lt;br /&gt;
&lt;br /&gt;
Loader i związany z nim format binarny zostały przeanalizowane przez [[Trub]]a w 2006 roku na podstawie dokumentacji pochodzącej z Atari. Według kodu źródłowego autorem procedur obsługi jest Y.M. &amp;quot;Amy&amp;quot; Chen; stąd pochodzi nadana formatowi nieoficjalna nazwa.&lt;br /&gt;
&lt;br /&gt;
== Ogólna struktura pliku ==&lt;br /&gt;
Właściwą strukturę pliku stanowią segmenty, z których każdy dotyczy pewnego fragmentu ładowanego programu. Segment jest podzielony na rekordy, z których pierwszy zawiera kod lub dane programu (&#039;&#039;Text record&#039;&#039;, zwany dalej &#039;&#039;rekordem kodu&#039;&#039;), zaś dalej następują rekordy informacyjne, określające parametry dla relokatora (&#039;&#039;Information records&#039;&#039;). W typowej sytuacji program musi zostać podzielony na porcje po maksymalnie 253 bajty, ponieważ segment nie może opisywać większych fragmentów. Ostatnim rekordem w pliku jest rekord końcowy (&#039;&#039;End record&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Już poza oficjalną specyfikacją przyjęto, że plik dyskowy w formacie ACX zawiera dodatkowo nagłówek (sygnaturę) w dwóch pierwszych bajtach; ich wartości wynoszą kolejno $F0,$FF (nie dotyczy sterowników ładowanych z urządzeń peryferyjnych).&lt;br /&gt;
&lt;br /&gt;
== Rekord kodu ==&lt;br /&gt;
Rekordy takie przechowują kod ładowanego programu. W zależności od typu określają sposób umieszczenia go w pamięci:&lt;br /&gt;
* $00 - relokacja poza stroną zerową&lt;br /&gt;
* $01 - relokacja na stronie zerowej&lt;br /&gt;
* $0A - bez relokacji.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Format rekordu kodu&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;table&lt;br /&gt;
 style=&amp;quot;text-align: left; &amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
 cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Typ&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Długość&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 120px;&amp;quot;&amp;gt;Adres&lt;br /&gt;
względny lub bezwzględny (2 bajty)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 300px;&amp;quot;&amp;gt;Kod&lt;br /&gt;
programu (max. 253 bajty)&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Na długość składają się, oprócz kodu programu także 2 bajty adresu, stąd powinna się mieścić w zakresie 2-255. Adres bezwględny dotyczy miejsca umieszczenia w pamięci kodu nierelokowanego (typ $0A). Dla kodu relokowalnego adres względny określa jego przemieszczenie względem adresu bazowego programu, który powinien wynosić $0000 (ew. $00 dla kodu na stronie zerowej).&lt;br /&gt;
&lt;br /&gt;
== Rekord informacyjny ==&lt;br /&gt;
Rekordy takie zawierają tzw. fixupy, czyli informacje konieczne do relokowania fragmentu programu zawartego w poprzedzającym rekordzie kodu. Są to indeksy (offsety) elementów w kodzie, które ulegają zmianie przy jego przemieszczaniu. W zależności od rodzaju wskazywanych elementów stosuje się następujące typy rekordów informacyjnych:&lt;br /&gt;
&lt;br /&gt;
Dla kodu ładowanego poza stronę zerową:&lt;br /&gt;
&lt;br /&gt;
* $06 - indeksy 2-bajtowych adresów (przy relokacji aktualizowane zostaną oba bajty)&lt;br /&gt;
* $02 - indeksy młodszych bajtów 2-bajtowych adresów&lt;br /&gt;
* $08 - indeksy starszych bajtów 2-bajtowych adresów&lt;br /&gt;
* $04 - indeksy 1-bajtowych adresów komórek na stronie zerowej&lt;br /&gt;
&lt;br /&gt;
Dla kodu ładowanego na stronę zerową:&lt;br /&gt;
&lt;br /&gt;
* $07 - indeksy 2-bajtowych adresów (przy relokacji aktualizowane zostaną oba bajty)&lt;br /&gt;
* $03 - indeksy młodszych bajtów 2-bajtowych adresów&lt;br /&gt;
* $09 - indeksy starszych bajtów 2-bajtowych adresów&lt;br /&gt;
* $05 - indeksy 1-bajtowych adresów komórek na stronie zerowej.&lt;br /&gt;
&lt;br /&gt;
Struktura rekordu informacyjnego jest inna dla typów relokujących adresy i młodsze bajty niż dla typów relokujących starsze bajty. Dla pierwszego przypadku podaje się odpowiednie indeksy (offsety) elementów w poprzedzającym rekordzie kodu, które podlegają relokacji (pierwszy bajt porcji kodu ma indeks 0).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Format rekordu informacyjnego dla typów $02,$03,$04,$05,$06,$07 (relokacja adresów lub młodszych bajtów)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;table&lt;br /&gt;
 style=&amp;quot;text-align: left; &amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
 cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Typ&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Długość&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Indeks 1&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Indeks 2&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Indeks 3&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt; ... &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Długość powinna mieścić się w zakresie 1-253.&lt;br /&gt;
&lt;br /&gt;
W przypadku relokowania starszych bajtów adresów, do właściwej ich aktualizacji potrzebne jest dodatkowo uwzględnienie wartości młodszych bajtów (LSB). Ponieważ w kodzie może ich nie być, umieszcza się je w rekordzie informacyjnym. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Format rekordu informacyjnego dla typów $08,$09 (relokacja starszych bajtów)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;table&lt;br /&gt;
 style=&amp;quot;text-align: left; &amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
 cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Typ&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Długość&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Indeks 1&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;LSB 1&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Indeks 2&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;LSB 2&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt; ... &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Długość powinna mieścić się w zakresie 0-255.&lt;br /&gt;
&lt;br /&gt;
Uwzględnienie przy relokacji części adresów (osobno starszy, młodszy bajt) umożliwia m.in. stosowanie w programie konstrukcji typu &#039;&#039;lda #&amp;lt;adres / ldx #&amp;gt;adres&#039;&#039;, co nie jest typowe dla innych formatów relokowalnych stosowanych w Atari. Interesujące jest również specjalne potraktowanie strony zerowej, np. typ $04 pozwala poprawnie relokować następujący program:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     org $600     ;kod poza stroną zerową&lt;br /&gt;
     lda zvar     ;adresowanie strony zerowej&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
     org $80      ;kod na stronie zerowej&lt;br /&gt;
zvar .byte 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rekord końcowy ==&lt;br /&gt;
Rekord końcowy oznacza koniec pliku (brak dalszych segmentów). Dodatkowo określa sposób uruchomienia załadowanego kodu.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Format rekordu końcowego&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;table&lt;br /&gt;
 style=&amp;quot;text-align: left; &amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
 cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;$0B (Typ)&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Flaga startu&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 120px;&amp;quot;&amp;gt;Adres startu&amp;lt;br&amp;gt;&lt;br /&gt;
(2 bajty)&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wartości pola &#039;&#039;Flaga startu&#039;&#039; oznaczają:&lt;br /&gt;
* $00 - brak uruchomienia programu, zawartość pola &#039;&#039;Adres startu&#039;&#039; jest ignorowana&lt;br /&gt;
* $01 - uruchomienie programu od adresu bezwzględnego podanego w polu &#039;&#039;Adres startu&#039;&#039;&lt;br /&gt;
* $02 - uruchomienie programu od adresu relokowanego podanego w polu &#039;&#039;Adres startu&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Atari 8-bit]]&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit]]&lt;br /&gt;
[[Kategoria:Formaty plików]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=ACX&amp;diff=42057</id>
		<title>ACX</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=ACX&amp;diff=42057"/>
		<updated>2025-01-13T14:35:17Z</updated>

		<summary type="html">&lt;p&gt;Trub: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ACX - od ang. &#039;&#039;Amy Chen eXecutable&#039;&#039; - jest formatem pliku przeznaczonym do przechowywania relokowalnych binariów. Format ten został stworzony dla doładowywanych z zewnątrz handlerów urządzeń podłączonych do łącza szeregowego ([[SIO]]) oraz szyny równoległej ([[PBI]]), zwłaszcza ekspandera [[1090]].&lt;br /&gt;
&lt;br /&gt;
Procedury obsługujące ten format znajdują się w [[XL OS]], w każdym seryjnym egzemplarzu [[1200XL]], [[600XL]], [[800XL]], [[65XE]] i [[130XE]]. System korzysta z nich podczas ładowania sterowników (handlerów) z podłączonych urządzeń, np. z modułu [[1090]]. Objawem tego jest znane wszystkim posiadaczom Atari &amp;quot;pierdzenie&amp;quot; wydobywające się z głośnika monitora przy starcie systemu oraz przy odwołaniu do urządzenia niezarejestrowanego w [[CIO]]. Jest to próba skomunikowania się z urządzeniami peryferyjnymi w celu ściągnięcia odpowiednich sterowników.&lt;br /&gt;
&lt;br /&gt;
Zamierzeniem twórców była dostępność procedury relokującej dla programistów. Planowane było umieszczenie oficjalnego skoku pod adresem $E486, umożliwiającego relokowanie &amp;quot;zwykłych&amp;quot; programów. Niestety, z niewiadomych przyczyn zrezygnowano z tego rozwiązania.&lt;br /&gt;
W systemie operacyjnym [[DracOS]] od wersji 2.22 przywrócono w [[Tablica skoków|tablicy skoków]] legalne odwołanie do procedury relokatora. Skok do niej umieszczono jednak pod adresem $E483, ze względu na zajęcie pierwotnego adresu przez inną procedurę.&lt;br /&gt;
&lt;br /&gt;
Loader i związany z nim format binarny zostały przeanalizowane przez [[Trub]]a w 2006 roku na podstawie dokumentacji pochodzącej z Atari. Według kodu źródłowego autorem procedur obsługi jest Y.M. &amp;quot;Amy&amp;quot; Chen; stąd pochodzi nadana formatowi nieoficjalna nazwa.&lt;br /&gt;
&lt;br /&gt;
== Ogólna struktura pliku ==&lt;br /&gt;
Właściwą strukturę pliku stanowią segmenty, z których każdy dotyczy pewnego fragmentu ładowanego programu. Segment jest podzielony na rekordy, z których pierwszy zawiera kod lub dane programu (&#039;&#039;Text record&#039;&#039;, zwany dalej &#039;&#039;rekordem kodu&#039;&#039;), zaś dalej następują rekordy informacyjne, określające parametry dla relokatora (&#039;&#039;Information records&#039;&#039;). W typowej sytuacji program musi zostać podzielony na porcje po maksymalnie 253 bajty, ponieważ segment nie może opisywać większych fragmentów. Ostatnim rekordem w pliku jest rekord końcowy (&#039;&#039;End record&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Już poza oficjalną specyfikacją przyjęto, że plik dyskowy w formacie ACX zawiera dodatkowo nagłówek (sygnaturę) w dwóch pierwszych bajtach; ich wartości wynoszą kolejno $F0,$FF (nie dotyczy sterowników ładowanych z urządzeń peryferyjnych).&lt;br /&gt;
&lt;br /&gt;
== Rekord kodu ==&lt;br /&gt;
Rekordy takie przechowują kod ładowanego programu. W zależności od typu określają sposób umieszczenia go w pamięci:&lt;br /&gt;
* $00 - relokacja poza stroną zerową&lt;br /&gt;
* $01 - relokacja na stronie zerowej&lt;br /&gt;
* $0A - bez relokacji.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Format rekordu kodu&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;table&lt;br /&gt;
 style=&amp;quot;text-align: left; &amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
 cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Typ&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Długość&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 120px;&amp;quot;&amp;gt;Adres&lt;br /&gt;
względny lub bezwzględny (2 bajty)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 300px;&amp;quot;&amp;gt;Kod&lt;br /&gt;
programu (max. 253 bajty)&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Na długość składają się, oprócz kodu programu także 2 bajty adresu, stąd powinna się mieścić w zakresie 2-255. Adres bezwględny dotyczy miejsca umieszczenia w pamięci kodu nierelokowanego (typ $01). Dla kodu relokowalnego adres względny określa jego przemieszczenie względem adresu bazowego programu, który powinien wynosić $0000 (ew. $00 dla kodu na stronie zerowej).&lt;br /&gt;
&lt;br /&gt;
== Rekord informacyjny ==&lt;br /&gt;
Rekordy takie zawierają tzw. fixupy, czyli informacje konieczne do relokowania fragmentu programu zawartego w poprzedzającym rekordzie kodu. Są to indeksy (offsety) elementów w kodzie, które ulegają zmianie przy jego przemieszczaniu. W zależności od rodzaju wskazywanych elementów stosuje się następujące typy rekordów informacyjnych:&lt;br /&gt;
&lt;br /&gt;
Dla kodu ładowanego poza stronę zerową:&lt;br /&gt;
&lt;br /&gt;
* $06 - indeksy 2-bajtowych adresów (przy relokacji aktualizowane zostaną oba bajty)&lt;br /&gt;
* $02 - indeksy młodszych bajtów 2-bajtowych adresów&lt;br /&gt;
* $08 - indeksy starszych bajtów 2-bajtowych adresów&lt;br /&gt;
* $04 - indeksy 1-bajtowych adresów komórek na stronie zerowej&lt;br /&gt;
&lt;br /&gt;
Dla kodu ładowanego na stronę zerową:&lt;br /&gt;
&lt;br /&gt;
* $07 - indeksy 2-bajtowych adresów (przy relokacji aktualizowane zostaną oba bajty)&lt;br /&gt;
* $03 - indeksy młodszych bajtów 2-bajtowych adresów&lt;br /&gt;
* $09 - indeksy starszych bajtów 2-bajtowych adresów&lt;br /&gt;
* $05 - indeksy 1-bajtowych adresów komórek na stronie zerowej.&lt;br /&gt;
&lt;br /&gt;
Struktura rekordu informacyjnego jest inna dla typów relokujących adresy i młodsze bajty niż dla typów relokujących starsze bajty. Dla pierwszego przypadku podaje się odpowiednie indeksy (offsety) elementów w poprzedzającym rekordzie kodu, które podlegają relokacji (pierwszy bajt porcji kodu ma indeks 0).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Format rekordu informacyjnego dla typów $02,$03,$04,$05,$06,$07 (relokacja adresów lub młodszych bajtów)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;table&lt;br /&gt;
 style=&amp;quot;text-align: left; &amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
 cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Typ&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Długość&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Indeks 1&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Indeks 2&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Indeks 3&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt; ... &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Długość powinna mieścić się w zakresie 1-253.&lt;br /&gt;
&lt;br /&gt;
W przypadku relokowania starszych bajtów adresów, do właściwej ich aktualizacji potrzebne jest dodatkowo uwzględnienie wartości młodszych bajtów (LSB). Ponieważ w kodzie może ich nie być, umieszcza się je w rekordzie informacyjnym. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Format rekordu informacyjnego dla typów $08,$09 (relokacja starszych bajtów)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;table&lt;br /&gt;
 style=&amp;quot;text-align: left; &amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
 cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Typ&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Długość&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Indeks 1&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;LSB 1&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Indeks 2&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;LSB 2&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt; ... &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Długość powinna mieścić się w zakresie 0-255.&lt;br /&gt;
&lt;br /&gt;
Uwzględnienie przy relokacji części adresów (osobno starszy, młodszy bajt) umożliwia m.in. stosowanie w programie konstrukcji typu &#039;&#039;lda #&amp;lt;adres / ldx #&amp;gt;adres&#039;&#039;, co nie jest typowe dla innych formatów relokowalnych stosowanych w Atari. Interesujące jest również specjalne potraktowanie strony zerowej, np. typ $04 pozwala poprawnie relokować następujący program:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     org $600     ;kod poza stroną zerową&lt;br /&gt;
     lda zvar     ;adresowanie strony zerowej&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
     org $80      ;kod na stronie zerowej&lt;br /&gt;
zvar .byte 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rekord końcowy ==&lt;br /&gt;
Rekord końcowy oznacza koniec pliku (brak dalszych segmentów). Dodatkowo określa sposób uruchomienia załadowanego kodu.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Format rekordu końcowego&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;table&lt;br /&gt;
 style=&amp;quot;text-align: left; &amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
 cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;$0B (Typ)&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 60px;&amp;quot;&amp;gt;Flaga startu&amp;lt;br&amp;gt;&lt;br /&gt;
(1 bajt)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td style=&amp;quot;width: 120px;&amp;quot;&amp;gt;Adres startu&amp;lt;br&amp;gt;&lt;br /&gt;
(2 bajty)&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wartości pola &#039;&#039;Flaga startu&#039;&#039; oznaczają:&lt;br /&gt;
* $00 - brak uruchomienia programu, zawartość pola &#039;&#039;Adres startu&#039;&#039; jest ignorowana&lt;br /&gt;
* $01 - uruchomienie programu od adresu bezwzględnego podanego w polu &#039;&#039;Adres startu&#039;&#039;&lt;br /&gt;
* $02 - uruchomienie programu od adresu relokowanego podanego w polu &#039;&#039;Adres startu&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Atari 8-bit]]&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit]]&lt;br /&gt;
[[Kategoria:Formaty plików]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=RAM_Charger&amp;diff=38176</id>
		<title>RAM Charger</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=RAM_Charger&amp;diff=38176"/>
		<updated>2020-05-28T17:15:33Z</updated>

		<summary type="html">&lt;p&gt;Trub: CA-2001 już ma buforowanie&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Indus RAM Charger (Ramcharger) jest kartą rozszerzającą dla stacji [[Indus GT]], zawierającą dodatkowe 64kB pamięci RAM. Razem z kartą dostarczany był system operacyjny [[Indus CP/M]] oraz program [[SuperSynchromesh]], który, oprócz zwiększenia szybkości transmisji do 68,2 kbps realizuje na rozszerzonej stacji [[buforowanie ścieżek]].&lt;br /&gt;
&lt;br /&gt;
[[grafika:Ramcharger.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SRAMCharger&#039;&#039;&#039; [http://trub.atari8.info/index.php?ref=sramcharger] jest funkcjonalnym odpowiednikiem tego rozszerzenia, zaproponowanym przez [[trub|truba]] (z pomocą [[Jerzy Sobola|Jerzego Soboli]] i [[jad|jada]]). Układ zastępczy wykorzystuje pamięć statyczną (zamiast dynamicznej) i jest znacznie prostszy w realizacji niż Ramcharger. Co więcej, można go zastosować również w popularnych stacjach [[LDW Super 2000]] i [[CA-2001]].&lt;br /&gt;
&lt;br /&gt;
[[grafika:sramcharger.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Zobacz też==&lt;br /&gt;
* [[Indus GT]]&lt;br /&gt;
* [[CP/M_Tool|CP/M Tool]]&lt;br /&gt;
* [http://www.retrobits.net/atari/indus.shtml Oprogramowanie dla stacji z kartą Indus Ramcharger]&lt;br /&gt;
* [http://trub.atari8.info/index.php?ref=cpm Strona o Indus CP/M 2.2 i SRAMCharger]&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Peryferia 8-bit]]&lt;br /&gt;
[[Kategoria:Rozszerzenia]]&lt;br /&gt;
[[Kategoria:CP/M]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=SpartaDOS_X&amp;diff=38144</id>
		<title>SpartaDOS X</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=SpartaDOS_X&amp;diff=38144"/>
		<updated>2020-05-04T20:05:34Z</updated>

		<summary type="html">&lt;p&gt;Trub: 4.49&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{grafr|spartados_x_kart.jpg}}&lt;br /&gt;
&lt;br /&gt;
[[Image:SpartaDOS_X_logo.png]] Odmiana [[SpartaDOS|SpartaDOS-u]] napisana przez Mike Gustafsona i wydana firmę [[ICD|ICD, Inc.]] w postaci modułu ROM. Jest to w zasadzie pakiet oprogramowania zawierający, oprócz samych procedur systemowych, także ponad 110 programów narzędziowych, umieszczonych częściowo w module ROM, a częściowo na dodatkowym dysku [[SpartaDOS X Toolkit]]. &lt;br /&gt;
&lt;br /&gt;
Ogólnie jest to najprawdopodobniej najlepszy, a już na pewno najbardziej rozbudowany - moduł ma 64kB - [[DOS]], jaki powstał na małe Atari (a może i na wszystkie komputery ośmiobitowe). Umieszczenie w module [[ROM]] sprawia, że DOS, mimo sporych rozmiarów, uruchamia się bardzo szybko.&lt;br /&gt;
&lt;br /&gt;
== Wykorzystanie pamięci ==&lt;br /&gt;
&lt;br /&gt;
Podczas normalnej pracy większość kodu SpartaDOS X rezyduje w dodatkowej pamięci: pod ROM-em, jeśli komputer ma 64k [[RAM]], albo użytkownik sobie tak zażyczy, albo w banku dodatkowej pamięci (obsługiwane są rozszerzenia [[Axlon]] oraz zgodne ze [[130XE]]). W tej pamięci DOS trzyma sterowniki, bufory plików itp. Dalsza część, tak zwana biblioteka SpartaDOS X, znajduje się na dwóch spośród ośmiu ośmiokilobajtowych banków modułu ROM (czyli zajmuje 16k). Biblioteka normalnie jest uaktywniona i zajmuje adresy $A000-$BFFF, jednak ponieważ pamięć tę wykorzystuje bardzo duża ilość programów (by już nie wspomnieć o interpreterze [[Atari BASIC]]), biblioteka może zostać odłączona poleceniem &#039;&#039;&#039;X&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{{grafr|SpartaDOS_X_prompt_small.png}}&lt;br /&gt;
&lt;br /&gt;
Premią wynikającą z takiego zagospodarowania pamięci jest bardzo niskie MEMLO, które może nawet osiągnąć wartości w okolicach $0E00.&lt;br /&gt;
&lt;br /&gt;
== Konfiguracja i obsługa ==&lt;br /&gt;
&lt;br /&gt;
Standardowo SpartaDOS X obsługuje dyski twarde, ma bardzo rozbudowane możliwości konfiguracji, obsługuje kilkanaście gęstości dyskietek, przy uruchamianu programów wykorzystuje szlak poszukiwań itp.&lt;br /&gt;
&lt;br /&gt;
Command processor (shell) wzorowany na [http://pl.wikipedia.org/wiki/MS-DOS MS-DOS] (w tym podobieństwo w konfiguracji; CONFIG.SYS / AUTOEXEC.BAT), ma zaimplementowane zmienne środowiskowe, przekierowanie I/O itd.&lt;br /&gt;
&lt;br /&gt;
Na urządzeniu CAR: - które jest pseudodyskiem zajmującym 48k modułu ROM - zapisane są podstawowe sterowniki, oraz przydatne oprogramowanie narzędziowe - ARC (paker - depaker zgodny z Atari ST / PC), MENU; czyli kopier, RS232, RAMDISK, itd.&lt;br /&gt;
&lt;br /&gt;
Jedną z ważnych innowacji SpartaDOS X w stosunku do innych DOS-ów jest to, że identyfikator urządzenia &amp;quot;D:&amp;quot; (w [[CIO]]) nie wskazuje stacji dysków nr 1, lecz dysk bieżący, to jest ten, który był ostatnio ustawiony jako domyślny przez interpreter poleceń DOS-u. Takie zachowanie zostało potem wstecznie zaimplementowane również w SpartaDOS 3.2g.&lt;br /&gt;
&lt;br /&gt;
== Format dyskietki ==&lt;br /&gt;
&lt;br /&gt;
{{grafr|SpartaDOS_X_menu_small.png}}&lt;br /&gt;
&lt;br /&gt;
SpartaDOS X używa [[Format SpartaDOS|formatu dysków SpartaDOS]], niezgodnego z klasycznym [[DOS 2.0|DOS-em 2.0]]. Format SpartaDOS-u oferuje jednak o wiele większe możliwości, przede wszystkim obsługuje dyski o pojemności do 16 MB (65536 sektorów po 256 bajtów), tworzenie podkatalogów o wielkości do 1423 wpisów w każdym, zapisuje w katalogach czas i datę utworzenia pliku, dokładną wielkość pliku w bajtach (DOS 2.0 - w sektorach), rozszerzone atrybuty, a przede wszystkim zapewnia swobodny dostęp do każdego bajtu pliku (przez odpowiednik funkcji seek()), a także szybkie wykonywanie kasowania pliku (w DOS 2.0 skasowanie pliku wymaga odczytania go w całości, w SpartaDOS nie). Nie do pogardzenia jest fakt, że format SpartaDOS pozwala na bezbłędne i stuprocentowo pewne odzyskanie skasowanego pliku - co nie jest na przykład możliwe w uważanym za profesjonalny filesystemie [http://pl.wikipedia.org/wiki/File_Allocation_Table FAT].&lt;br /&gt;
&lt;br /&gt;
Warto podkreślić, że dzięki modułowej strukturze SpartaDOS X umożliwia załadowanie sterowników obsługujących inne [[Formaty systemów plików|systemy plikowe]], w tym [[Format AtariDOS 2|AtariDOS 2]] i [[Format MyDOS|MyDOS]], a nawet [[Format CP/M 2.2|CP/M 2.2]] czy FAT.&lt;br /&gt;
&lt;br /&gt;
== Inne ==&lt;br /&gt;
Umieszczenie DOS-a w kartridżu ma jednak dużą wadę: ciągłe wkładanie i wyjmowanie karta z gniazda Atarki, może doprowadzić do obluzowania i niepewnych kontaktów. Jeżeli jeszcze dojdzie śniedzenie styków (zwłaszcza, gdy kart został wykonany nieprofesjonalnie) to kłopot pewny. Jest jeszcze inny problem: zbudowanie nowego karta wymaga doświadczenia w budowaniu układów elektronicznych, zwłaszcza wykonania płytki drukowanej. &lt;br /&gt;
&lt;br /&gt;
{{grafr|Spartados-x.jpg}}&lt;br /&gt;
&lt;br /&gt;
Jedną z w/w wad można jednak w prosty sposób wyeliminować; plik INIDOS.SYS - po COLD /N umożliwia ponowne uruchomienie SDX, - a COLD /N wg. oficjalnej dokumentacji SDX powoduje odłączenie modułu; więc potrzeba wyjmowania cartridge w nielicznych tylko przypadkach staje się koniecznością. Stąd pomysł na [http://hardware.atari8.info/sdx.php Wewnętrzną SpartaDOS X ]&lt;br /&gt;
&lt;br /&gt;
Na zdjęciu obok polska kopia kartridża wykonana przez [[AtraX]].&lt;br /&gt;
&lt;br /&gt;
== SpartaDOS X 4.4x ==&lt;br /&gt;
&lt;br /&gt;
Jest to ulepszona wersja SpartaDOS X 4.22 przygotowana przez [[DLT (grupa)|DLT]]. Mieści się na [[kartridż]]u o pojemności co najmniej 128 k. Ulepszenia polegają na usunięciu znanych błędów, poszerzeniu możliwości konfiguracji (m.in. jest zintegrowany Config Selector), dodaniu nowych sterowników i programów użytkownych, zaimplementowaniu dostępu do większej liczby dysków (z 9 do 15) i przystosowaniu filesystemu do pracy z dyskami o sektorach 512-bajtowych (maks. pojemność partycji 32 MB).&lt;br /&gt;
&lt;br /&gt;
Oficjalnie zaprezentowano jak dotąd następujące wersje:&lt;br /&gt;
&lt;br /&gt;
* 4.39RC z datą 1 X 2006 (wersja próbna)&lt;br /&gt;
* 4.41 z datą 8 II 2008 (w rzeczywistości wersja ta ukazała się dzień wcześniej)&lt;br /&gt;
* 4.42 z datą 25 XII 2008&lt;br /&gt;
* 4.43 z datą 10 IV 2011&lt;br /&gt;
* 4.44 z datą 3 VI 2011&lt;br /&gt;
* 4.45 z datą 4 XI 2011&lt;br /&gt;
* 4.46 z datą 1 I 2013&lt;br /&gt;
* 4.47 z datą 10 II 2015&lt;br /&gt;
* 4.48 z datą 23 VII 2016 (ukazała się 26 VII 2016)&lt;br /&gt;
* 4.49 z datą 7 IV 2020&lt;br /&gt;
&lt;br /&gt;
Te wersje SpartaDOS są do pobrania [http://sdx.atari8.info stąd].&lt;br /&gt;
&lt;br /&gt;
==Bibliografia==&lt;br /&gt;
*[[Wojciech Zientara]], &amp;quot;Kilka uwag o SpartaDOS X&amp;quot;, [http://atarionline.pl/biblioteka/czasopisma/Bajtek/Bajtek_1990_05_06.djvu Bajtek 5-6/1990] (w [[Atarionline.pl]]), s. 9&lt;br /&gt;
&lt;br /&gt;
== Zobacz też ==&lt;br /&gt;
* [[SpartaDOS]]&lt;br /&gt;
* [[SpartaDOS Toolkit]]&lt;br /&gt;
* [[SpartaDOS X Toolkit]]&lt;br /&gt;
* [[Rejestry modułu SpartaDOS X]]&lt;br /&gt;
* [[SpartaDOS X 256k (2x128k)]]&lt;br /&gt;
* [[Podręcznik użytkownika SpartaDOS X]]&lt;br /&gt;
* [[Przewodnik programisty SpartaDOS X]]&lt;br /&gt;
&lt;br /&gt;
== Odnośniki zewnętrzne ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/SpartaDOS_X Hasło &#039;&#039;&#039;SpartaDOS X&#039;&#039;&#039; na en.wikipedia.org]&lt;br /&gt;
* [http://sdx.atari8.info Strona główna projektu &#039;&#039;SDX Upgrade&#039;&#039;] (SpartaDOS 4.4x, binaria i dokumentacja PDF)&lt;br /&gt;
* [http://drac030.krap.pl/sdx420manual-pl.pdf SpartaDOS X 4.20 - podręcznik użytkownika] (format PDF, wersja poprawiona - uaktualniono 28.XII.2007.)&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Oprogramowanie Atari 8-bit]]&lt;br /&gt;
[[Kategoria:Programy użytkowe]]&lt;br /&gt;
[[Kategoria:SpartaDOS X]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Programowanie_stacji_LDW_Super_2000_i_CA-2001&amp;diff=36621</id>
		<title>Programowanie stacji LDW Super 2000 i CA-2001</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Programowanie_stacji_LDW_Super_2000_i_CA-2001&amp;diff=36621"/>
		<updated>2018-11-14T19:11:50Z</updated>

		<summary type="html">&lt;p&gt;Trub: aktualny link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Do stacji [[Indus GT]], [[LDW Super 2000]] i [[CA-2001]] można przesyłać własne podprogramy i zlecać ich wykonanie.&lt;br /&gt;
&lt;br /&gt;
== Od strony Atari ==&lt;br /&gt;
Do programowania stacji służy komenda [[SIO]] o kodzie $58 (&amp;quot;X&amp;quot;). Ma ona dwie postaci, pierwsza służy do przesłania programu, druga do uruchomienia go wraz z ewentualnym odebraniem wyników.&lt;br /&gt;
&lt;br /&gt;
=== Przesyłanie programu ===&lt;br /&gt;
W pierwszym przypadku parametry [[DCB]] ustawia się tak, jak do każdego nadawania danych przez SIO:&lt;br /&gt;
&lt;br /&gt;
* DDEVIC - wartość $31&lt;br /&gt;
* DUNIT - numer stacji&lt;br /&gt;
* DCMND - kod $58 (&amp;quot;X&amp;quot;)&lt;br /&gt;
* DSTATS - wartość $80 (zapis)&lt;br /&gt;
* DBUFA - adres, gdzie znajduje się kod do wysłania&lt;br /&gt;
* DTIMLO - timeout jak do zapisu sektora (8)&lt;br /&gt;
* DBYT - liczba bajtów do wysłania (zawsze &amp;lt;= 256)&lt;br /&gt;
* DAUX1 - to samo, co w młodszym bajcie DBYT&lt;br /&gt;
* DAUX2 - wartość $01 (download)&lt;br /&gt;
&lt;br /&gt;
Wywołanie [[Tablica skoków#JSIOINT|JSIOINT]] ($E459) z takimi parametrami spowoduje wysłanie programu do stacji. W tej chwili na jej konsolce powinna zapalić się lampka BUSY.&lt;br /&gt;
&lt;br /&gt;
=== Wykonywanie programu ===&lt;br /&gt;
Uruchomienie przesłanego kodu uzyskujemy tą samą komendą &amp;quot;X&amp;quot;, tylko z nieco innymi parametrami.&lt;br /&gt;
&lt;br /&gt;
* DSTATS powinien zawierać wartość $80, gdy uruchomiony kod oczekuje nadesłania z komputera dodatkowych danych; $40, gdy ma przesłać z powrotem do komputera jakieś wyniki; $C0, gdy zachodzi jedno i drugie, albo $00, gdy nic nie jest przesyłane.&lt;br /&gt;
* DBUFA to adres bufora na dane wynikowe,&lt;br /&gt;
* do DBYT trzeba wpisać ich spodziewaną ilość (w bajtach);&lt;br /&gt;
* wartość timeout (DTIMLO) też jest zależna od tego, co robi przesłany program i ile czasu mu to zajmuje - na ogół jednak timeout &amp;quot;8&amp;quot; (10,24 sek.) powinien wystarczyć dla większości zadań.&lt;br /&gt;
* DAUX1 - wartość $00&lt;br /&gt;
* DAUX2 - wartość $00 (execute)&lt;br /&gt;
&lt;br /&gt;
Wywołanie JSIOINT spowoduje uruchomienie przez stację przesłanego kodu. Po zakończeniu procedury lampka BUSY na konsolce stacji powinna zgasnąć.&lt;br /&gt;
&lt;br /&gt;
Ważny szczegół jest taki, że pomiędzy przesłaniem programu a jego wykonaniem nie można wysyłać do stacji żadnych innych rozkazów - gdy się to zrobi, stacja &amp;quot;zapomni&amp;quot; o kodzie załadowanym przez użytkownika i nie będzie można dokonać uruchomienia.&lt;br /&gt;
&lt;br /&gt;
== Od strony stacji ==&lt;br /&gt;
Program dla stacji musi być napisany w asemblerze Z80, gdyż taki właśnie procesor, taktowany zegarem 4 MHz, się tam znajduje. Komenda &amp;quot;X&amp;quot; ładuje kod do pamięci stacji pod adres $7F00. Ponieważ stacja typowo ma tylko 2k pamięci RAM zlokalizowanej w obszarze $7800-$7FFF, a pod wyższymi adresami zawartość całej pamięci od początku powtarza się, zatem przesyłany jednorazowo blok nie może mieć więcej niż 256 bajtów, gdyż bufor programu zajmuje ostatnią stronę pamięci RAM.&lt;br /&gt;
&lt;br /&gt;
Ważne: procedura przesłana rozkazem &amp;quot;X&amp;quot; odpowiada za poprawne zakończenie transmisji SIO, tj. zwłaszcza za zadbanie, by komputer dostał końcowe potwierdzenie wykonania (&amp;quot;C&amp;quot;) lub sygnał błędu (&amp;quot;E&amp;quot;). Jeśli w chwili opuszczania procedury (rozkazem RET) bit CF rejestru znaczników Z80 jest ustawiony, stanowi to sygnał dla stacji, że ma sama zakończyć transmisję przesyłając do komputera kod potwierdzenia umieszczony w rejestrze A (patrz przykład nr 1). W przeciwnym wypadku, gdy CF=0, jest to sygnał, że program użytkownika zatroszczył się o dopełnienie protokołu i żadne dalsze działania nie są potrzebne (patrz przykład 2).&lt;br /&gt;
&lt;br /&gt;
=== Tabela funkcji ROM-u ===&lt;br /&gt;
&lt;br /&gt;
Programy mogą skorzystać z wbudowanych w [[ROM]] funkcji. Nie ma oczywiście gwarancji niezmienności tej tabeli funkcji, ale jest duże tego prawdopodobieństwo.&lt;br /&gt;
&lt;br /&gt;
Aby użyć danej funkcji należy jej numer załadować do rejestru C procesora, a następnie wywołać (rozkazem CALL) procedurę spod adresu $0004. Rejestry, z których korzysta się przy wywołaniu/powrocie z funkcji znajdują się w nawiasach, z wyjątkiem funkcji 0C, która używa flagi przeniesienia (carry) procesora (CF).&lt;br /&gt;
&lt;br /&gt;
* $00 - zwraca numer wersji ROM-u (DE)&lt;br /&gt;
* $01 - powrót głowicy&lt;br /&gt;
* $02 - ustawienie głowicy nad konkretną ścieżką (D); numer ścieżki musi być pomnożony przez dwa&lt;br /&gt;
* $03 - odczyt sektora (E) ze ścieżki (D)&lt;br /&gt;
* $04 - zapis sektora (E) na ścieżce (D)&lt;br /&gt;
* $05 - odbiór bajtu z SIO (C)&lt;br /&gt;
* $06 - wysłanie bajtu na SIO (A)&lt;br /&gt;
* $07 - odbiór z SIO rekordu o długości (B) pod adres (DE); długość $00 oznacza 256 bajtów&lt;br /&gt;
* $08 - wysłanie na SIO rekordu o długości (B) spod adresu (DE) z zadanym potwierdzeniem (A); długość $00 to 256 bajtów&lt;br /&gt;
* $09 - konwersja cyfry do formatu odpowiedniego dla wyświetlacza (A do A)&lt;br /&gt;
* $0A - konwersja dwucyfrowa decymalna (A do DE)&lt;br /&gt;
* $0B - konwersja dwucyfrowa heksadecymalna (A do DE)&lt;br /&gt;
* $0C - włączenie (CF=1) lub wyłączenie (CF=0) silnika&lt;br /&gt;
* $0D - aktualizacja statusu przełączników i zmiany dysku&lt;br /&gt;
* $0E - zwraca adres bieżącego bufora (BC)&lt;br /&gt;
* $0F - zwraca adres flagi typu kontrolera (IX)&lt;br /&gt;
* $10 - wytworzenie dźwięku na linii audio&lt;br /&gt;
* $11 - aktualizacja wyświetlacza&lt;br /&gt;
* $12 - zwraca adresy rejestrów (odczyt/zapis) kontrolera (BC i DE)&lt;br /&gt;
* $13 - ustawienie gęstości zapisu w zależności od trybu&lt;br /&gt;
* $14 - zwraca adresy statusu i bieżącej ścieżki (DE i IX); numer ścieżki musi być pomnożony przez dwa&lt;br /&gt;
&lt;br /&gt;
=== Porty I/O ===&lt;br /&gt;
&lt;br /&gt;
* IN $0,$1 - sygnał audio&lt;br /&gt;
* IN $2,$3 - włączenie śledzenia impulsu indeksowego&lt;br /&gt;
* IN $4,$5 - inwertowanie linii TxD gniazda SIO&lt;br /&gt;
* IN $6,$7 - inwertowanie linii RxD gniazda SIO&lt;br /&gt;
* IN $8,$9 - włączanie/wyłączanie sygnału DDEN dla FDC&lt;br /&gt;
* IN $A,$B - włączenie/wyłączenie silnika&lt;br /&gt;
* IN $C,$D - wygenerowanie impulsu indeksowego&lt;br /&gt;
* IN $E,$F - wyłączenie/włączenie [[RAM Charger]]a w obszarze $0000-$7FFF.&lt;br /&gt;
&lt;br /&gt;
=== Mapka pamięci ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border = 1 cellpadding = 5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Adres&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$0000-$0FFF&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ROM z oprogramowaniem wewnętrznym stacji (4 kB).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$1000-$1FFF&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2 porty ośmiobitowe tylko do odczytu. $1000 i $1001 działają tak samo, z tym, że odczyt tego pierwszego zeruje zatrzaski.&amp;lt;/p&amp;gt;&lt;br /&gt;
* bit 7: przycisk PROTECT&lt;br /&gt;
* bit 6: przycisk ERROR&lt;br /&gt;
* bit 5: przycisk ID&lt;br /&gt;
* bit 4: przycisk TRACK&lt;br /&gt;
* bit 3: nieużywany&lt;br /&gt;
* bit 2: stan przełącznika gęstości (sprawdzane tylko przy włączeniu zasilania)&lt;br /&gt;
* bit 1: wybór numeru napędu, stan przełącznika nr 2&lt;br /&gt;
* bit 0: wybór numeru napędu, stan przełącznika nr 1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$2000-$2FFF&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;1 port ośmiobitowy:&amp;lt;/p&amp;gt;&lt;br /&gt;
* bit 7: INTRQ (kontroler FDD)&lt;br /&gt;
* bit 6: DRQ (kontroler FDD)&lt;br /&gt;
* bit 5: COMMAND (SIO)&lt;br /&gt;
* bit 4: READY (SIO)&lt;br /&gt;
* bit 3: DATA IN (SIO)&lt;br /&gt;
* bit 2: DATA OUT (SIO)&lt;br /&gt;
* bit 1: CLOCK IN (SIO)&lt;br /&gt;
* bit 0: CLOCK OUT (SIO)&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3000-$3FFF&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;1 port ośmiobitowy tylko do zapisu: sterowanie silnikiem krokowym napędu. Używane są tylko bity 0-3.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4000-$4FFF&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&lt;br /&gt;
1 port ośmiobitowy: prawa cyfra wyświetlacza. Skasowanie danego bitu powoduje zaświecenie się odpowiedniego segmentu wyświetlacza:&amp;lt;/p&amp;gt;&lt;br /&gt;
* bit 0 - szczytowy segment&lt;br /&gt;
* bit 1 - prawy, góry segment&lt;br /&gt;
* bit 2 - prawy, dolny segment&lt;br /&gt;
* bit 3 - najniższy segment&lt;br /&gt;
* bit 4 - lewy, dolny segment&lt;br /&gt;
* bit 5 - lewy, górny segment&lt;br /&gt;
* bit 6 - środkowy segment&lt;br /&gt;
* bit 7 - lampka BUSY&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$5000-$5FFF&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;1 port ośmiobitowy: lewa cyfra wyświetlacza. Działa analogicznie do prawej, z tym, że bit 7 to ENPRE (enable precompensation) dla FDD.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$6000-$6FFF&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Kontroler FDD:&amp;lt;/p&amp;gt;&lt;br /&gt;
* $6000 - COMMAND/STATUS&lt;br /&gt;
* $6001 - TRACK&lt;br /&gt;
* $6002 - SECTOR&lt;br /&gt;
* $6003 - DATA&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$7000-$77FF&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Powtórka adresów $7800-$7FFF&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$7800-$7FFF&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Pamięć RAM (2 kB):&amp;lt;/p&amp;gt;&lt;br /&gt;
* $7824-$7941 - bufor I/O (286 bajtów)&lt;br /&gt;
* $7942-$7A7F - pamięć wewnętrzna (318 bajtów)&lt;br /&gt;
* $7A80-$7B7F - stos Z80 (256 bajtów)&lt;br /&gt;
* $7B80-$7EFF - pamięć wewnętrzna (896 bajtów); tu m.in. rezyduje [[Synchromesh]]&lt;br /&gt;
* $7F00-$7FFF - bufor programu użytkownika (256 bajtów)&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Do bufora programu stacja wczytuje też pierwszy sektor włożonej dyskietki, gdy zostaną naciśnięte jednocześnie klawisze &amp;quot;DRIVE&amp;quot; i &amp;quot;ERROR&amp;quot;, a potem próbuje go uruchomić. Służy to przede wszystkim do bootowania systemu [[CP/M]] - oczywiście tylko w stacjach z pamięcią RAM rozszerzoną do 64k.&lt;br /&gt;
&lt;br /&gt;
=== Przykłady ===&lt;br /&gt;
&lt;br /&gt;
==== Przykład nr 1: brzęknięcie dzwonkiem stacji ====&lt;br /&gt;
Program wywołuje &amp;quot;sygnał ostrzegawczy&amp;quot; na linii audio, ten sam, którym stacja się posługuje dla zasygnalizowania np. błędów odczytu. Nie towarzyszy temu transmisja danych do komputera (DSTATS=$00), a o wysłanie potwierdzenia wykonania rozkazu &amp;quot;X&amp;quot; martwi się stacja.&lt;br /&gt;
&lt;br /&gt;
    LD   C,$10     ;0e 10         numer funkcji: &amp;quot;bell&amp;quot;&lt;br /&gt;
    CALL $0004     ;cd 04 00      wykonać&lt;br /&gt;
    LD   A,$43     ;3e 43         kod potwierdzenia: &amp;quot;C&amp;quot; (Complete)&lt;br /&gt;
    SCF            ;37            CF=1 - potwierdzenie z A wyśle ROM stacji&lt;br /&gt;
    RET            ;c9            powrot&lt;br /&gt;
&lt;br /&gt;
==== Przykład nr 2: odczytanie numeru wersji ROM ====&lt;br /&gt;
Program przesyła do komputera dwa bajty stanowiące numer wersji ROM-u stacji zapisany w postaci dziesiętnej. Najpierw przesyłany jest numer rewizji, następnie numer wersji - a więc odpowiedź w rodzaju $20,$01 trzeba rozumieć jako wersję &amp;quot;1.20&amp;quot;. Procedura wysyła też końcowe potwierdzenie wykonania rozkazu &amp;quot;X&amp;quot;. Kod pochodzi z programu [[Synchromesh]] dla [[CA-2001]].&lt;br /&gt;
&lt;br /&gt;
    LD   C,$00      ;0e 00        numer funkcji: &amp;quot;version&amp;quot;&lt;br /&gt;
    CALL $0004      ;cd 04 00     wykonać&lt;br /&gt;
    LD   ($7F17),DE ;ed 53 17 7F  zapisz DE pod adres $7F17 w pamięci stacji&lt;br /&gt;
    LD   DE,$7F17   ;17 17 7F     adres danych do przesłania umieść w DE&lt;br /&gt;
    LD   B,$02      ;06 02        ilość danych wynikowych (dwa bajty)&lt;br /&gt;
    LD   C,$08      ;0e 08        numer funkcji: &amp;quot;send record&amp;quot;&lt;br /&gt;
    LD   A,$43      ;3e 43        kod potwierdzenia: &amp;quot;C&amp;quot; (Complete)&lt;br /&gt;
    CALL $0004      ;cd 04 00     wykonać&lt;br /&gt;
    OR   A          ;b7           CF=0 - transmisja zakończona&lt;br /&gt;
    RET             ;c9           powrót&lt;br /&gt;
&lt;br /&gt;
== Zobacz też ==&lt;br /&gt;
* [https://atariwiki.org/wiki/Wiki.jsp?page=Indus%20GT%20Firmware%20ROM%20Source Indus GT Firmware ROM source]&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Peryferia_8-bit|LDW 2000 Super, Funkcje ROM]]&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit|LDW 2000 Super, Funkcje ROM]]&lt;br /&gt;
[[Kategoria:Niezbędnik kodera]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=810&amp;diff=36414</id>
		<title>810</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=810&amp;diff=36414"/>
		<updated>2018-02-10T17:52:58Z</updated>

		<summary type="html">&lt;p&gt;Trub: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{grafr|810.jpg}}&lt;br /&gt;
&lt;br /&gt;
Stacja dysków przeznaczona dla serii [[400/800]].&lt;br /&gt;
&lt;br /&gt;
* mikroprocesor [[6507]]&lt;br /&gt;
* jednostronna, pojedyncza gęstość ([[SD]])&lt;br /&gt;
* 40 ścieżek, 18 sektorów na ścieżkę, 128 bajtów na sektor&lt;br /&gt;
* 90 KB na stronę dyskietki&lt;br /&gt;
* maksymalny transfer 19200 bitów/s&lt;br /&gt;
* 288 obrotów na minutę.&lt;br /&gt;
* dostarczana wraz z [[DOS 1.0]] i [[DOS 2.0|DOS 2.0S]]&lt;br /&gt;
* dwa porty [[SIO]]&lt;br /&gt;
&lt;br /&gt;
Mechanizm stacji występuje w dwóch odmianach: MPI i Tandon (rzadsza). W MPI (na zdjęciu) duży otwór na dyskietkę ma podnoszoną klapkę i przycisk. W wersji Tandon dyskietkę wprowadza się w szczelinę.&lt;br /&gt;
&lt;br /&gt;
Dostępne akcesoria: [[CX8100]], [[CX8111]], [[CX8202]]&lt;br /&gt;
&lt;br /&gt;
==Zobacz też==&lt;br /&gt;
* [http://www.strotmann.de/twiki/pub/Infothek/AtariEightTen/a810.pdf Atari 810 Disk Drive - An Introduction to the DOS] (DOS 2.0s)&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Peryferia 8-bit]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=810&amp;diff=36413</id>
		<title>810</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=810&amp;diff=36413"/>
		<updated>2018-02-10T17:47:01Z</updated>

		<summary type="html">&lt;p&gt;Trub: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{grafr|810.jpg}}&lt;br /&gt;
&lt;br /&gt;
Stacja dysków przeznaczona dla serii [[400/800]].&lt;br /&gt;
&lt;br /&gt;
* mikroprocesor [[6507]]&lt;br /&gt;
* jednostronna, pojedyncza gęstość ([[SD]])&lt;br /&gt;
* 40 ścieżek, 18 sektorów na ścieżkę, 128 bajtów na sektor&lt;br /&gt;
* 90 KB na stronę dyskietki&lt;br /&gt;
* maksymalny transfer 19200 bitów/s&lt;br /&gt;
* 288 obrotów na minutę.&lt;br /&gt;
* dostarczana wraz z [[DOS 1.0]] i [[DOS 2.0|DOS 2.0S]]&lt;br /&gt;
* dwa porty [[SIO]]&lt;br /&gt;
&lt;br /&gt;
Mechanizm stacji występuje w dwóch odmianach: MPI (na zdjęciu) i Tandon (rzadsza). W MPI duży otwór na dyskietkę ma podnoszoną klapkę i przycisk. W wersji Tandon dyskietkę wprowadza się w szczelinę.&lt;br /&gt;
&lt;br /&gt;
Dostępne akcesoria: [[CX8100]], [[CX8111]], [[CX8202]]&lt;br /&gt;
&lt;br /&gt;
==Zobacz też==&lt;br /&gt;
* [http://www.strotmann.de/twiki/pub/Infothek/AtariEightTen/a810.pdf Atari 810 Disk Drive - An Introduction to the DOS] (DOS 2.0s)&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Peryferia 8-bit]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Lista_cz%C4%99%C5%9Bci_wed%C5%82ug_numer%C3%B3w_katalogowych&amp;diff=36412</id>
		<title>Lista części według numerów katalogowych</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Lista_cz%C4%99%C5%9Bci_wed%C5%82ug_numer%C3%B3w_katalogowych&amp;diff=36412"/>
		<updated>2018-02-10T15:38:48Z</updated>

		<summary type="html">&lt;p&gt;Trub: ROM 810&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Atari ośmiobitowe ==&lt;br /&gt;
* AWC750014 - zaślepka [[PBI]] od Atari 600XL (REV.4 CAV. B)&lt;br /&gt;
* C010174 - &amp;quot;transistor array&amp;quot; LM3086 (polski odpowiednik UL1111)&lt;br /&gt;
* C010177 - kwarc 3,57945 MHz&lt;br /&gt;
* C010448 - [[gniazdo joysticka]] od [[1450XLD]]&lt;br /&gt;
* C010472 - zasilacz od [[2600]], In:120V/60Hz/9W, Out:9V/500mA&lt;br /&gt;
* C010745 - [[6507]] od [[810]] (to samo, co C016145)&lt;br /&gt;
* C010750 - [[6532]] od 810 (to samo, co C016150)&lt;br /&gt;
* C010816 - CD4050 sześć buforów CMOS&lt;br /&gt;
* C011298 - płyta główna od [[820]]&lt;br /&gt;
* C011299B - ROM [[810]], wersja B&lt;br /&gt;
* C011299C - ROM [[810]], wersja C&lt;br /&gt;
* C012241 - [[przełącznik kanałów video]]&lt;br /&gt;
* C012284 - kwarc 4,4333 MHz&lt;br /&gt;
* C012285 - kwarc 3,5468 MHz&lt;br /&gt;
* C012294 - [[POKEY]]&lt;br /&gt;
* C012295 - [[CTIA]] NTSC&lt;br /&gt;
* C012296 - [[ANTIC (układ)|ANTIC]] &amp;quot;D&amp;quot; dla serii [[400/800]], NTSC&lt;br /&gt;
* C012298 - [[PIA]] dla serii [[400/800]]&lt;br /&gt;
* C012399B - ROM [[pakiet matematyczny|pakietu matematycznego]] dla serii [[400/800]]&lt;br /&gt;
* C012402 - ROM [[Atari BASIC]], wersja A (1)&lt;br /&gt;
* C012403 - ROM [[Assembler Editor]] (1)&lt;br /&gt;
* C012499A - ROM [[Atari OS]] dla serii [[400/800]], wersja A NTSC (1. połowa)&lt;br /&gt;
* C012499B - ROM [[Atari OS]] dla serii [[400/800]], wersja B NTSC (1. połowa)&lt;br /&gt;
* C012749 - cewka indukcyjna 1,5 uH&lt;br /&gt;
* C012987 - prototypowa (?) karta pamięci 16k ([[CX853]]) do [[800]]&lt;br /&gt;
* C012989 - karta ROM (modułu [[CX801]]) do [[800]]&lt;br /&gt;
* C012995 - gniazdo SIO&lt;br /&gt;
* C014024 - &amp;quot;side board&amp;quot; (rev. A i B) od [[810]]&lt;br /&gt;
* C014059 - płytka modułu zasilania i I/O dla [[400]]&lt;br /&gt;
* C014092 - radiator (?) zasilacza od [[800]]&lt;br /&gt;
* C014103 - kawałek gąbki pod klapką, w [[400/800]]&lt;br /&gt;
* C014175 - płyta główna [[800]]&lt;br /&gt;
* C014176 - płyta zasilacza, klawiatury i portów I/O [[800]]&lt;br /&gt;
* C014179 - kondensatory do 199 pF&lt;br /&gt;
* C014179-12 - kondensator 68 pF&lt;br /&gt;
* C014179-19 - kondensator 100 pF&lt;br /&gt;
* C014180 - kondensatory od 200 pF&lt;br /&gt;
* C014180-09 - kondensator 47 nF&lt;br /&gt;
* C014181-01 - kondensator 0.001 uF&lt;br /&gt;
* C014181-02 - kondensator 0.01 uF&lt;br /&gt;
* C014181-03 - kondensator 0.1 uF&lt;br /&gt;
* C014313 - bufor trójstanowy 74LS244&lt;br /&gt;
* C014316 - kwarc 1 MHz&lt;br /&gt;
* C014319 - zasilacz od [[810]], In:120V/60Hz/20W (lub: 120V/60Hz/18,5VA), Out:9V/15,3VA&lt;br /&gt;
* C014320 - wzmacniacz operacyjny LM324&lt;br /&gt;
* C014328 - RAM 6810 od 1050&lt;br /&gt;
* C014329 - kontroler WD 1771 od [[810]]&lt;br /&gt;
* C014331 - 16k RAM dla serii [[400/800]]&lt;br /&gt;
* C014332 - regulator napięcia LM311&lt;br /&gt;
* C014336 - CD4051 multiplekser analogowy 1x8 CMOS&lt;br /&gt;
* C014340 - 74LS02 cztery 2-wejściowe bramki NOR&lt;br /&gt;
* C014341 - 74LS00 cztery 2-wejściowe bramki NAND&lt;br /&gt;
* C014344 - 74LS138 dekoder z 1 na 8 &lt;br /&gt;
* C014345 - 74LS158 multiplekser z 8 na 4&lt;br /&gt;
* C014360 - karta CPU [[6502|6502B]] dla [[400/800]] (rev. D)&lt;br /&gt;
* C014361 - 74LS42&lt;br /&gt;
* C014362 - 74LS32 cztery 2-wejściowe bramki OR [[1450XLD]]&lt;br /&gt;
* C014370 - kondensator 470 uF&lt;br /&gt;
* C014371 - kondensator 10 uF&lt;br /&gt;
* C014377 - procesor [[6502|6502B]] dla serii [[400/800]]&lt;br /&gt;
* C014380 - dławik 22 uH&lt;br /&gt;
* C014381 - dławik 10 uH&lt;br /&gt;
* C014384 - dławik ferrytowy (bead)&lt;br /&gt;
* C014386-01 - podstawka 8-nóżkowa&lt;br /&gt;
* C014386-02 - podstawka 14-nóżkowa&lt;br /&gt;
* C014386-03 - podstawka 16-nóżkowa&lt;br /&gt;
* C014386-05 - podstawka 20-nóżkowa&lt;br /&gt;
* C014386-06 - podstawka 22-nóżkowa&lt;br /&gt;
* C014386-07 - podstawka 24-nóżkowa&lt;br /&gt;
* C014386-08 - podstawka 28-nóżkowa&lt;br /&gt;
* C014386-09 - podstawka 40-nóżkowa&lt;br /&gt;
* C014388 - [[gniazdo monitorowe]] NTSC/PAL&lt;br /&gt;
* C014389 - gniazdo kartridża (30pin)&lt;br /&gt;
* C014393 - kondensator 22uF/16V&lt;br /&gt;
* C014398 - dioda MR501&lt;br /&gt;
* C014502 - ROM [[Atari BASIC]], wersja A (2)&lt;br /&gt;
* C014503 - ROM [[Assembler Editor]] (2)&lt;br /&gt;
* C014599A - ROM [[Atari OS]] dla serii [[400/800]], wersja A NTSC (2. połowa)&lt;br /&gt;
* C014599B - ROM [[Atari OS]] dla serii [[400/800]], wersja B NTSC (2. połowa)&lt;br /&gt;
* C014700 - karta pamięci 16k (modułu [[CX853]]) do [[800]] (REV F)&lt;br /&gt;
* C014706 - płyta główna [[400]] rev. 9&lt;br /&gt;
* C014715 - [[gniazdo zasilania]]&lt;br /&gt;
* C014725 - [[gniazdo SIO]]&lt;br /&gt;
* C014762 - instrukcja obsługi od [[820]]&lt;br /&gt;
* C014795 - [[PIA]] dla ostatnich modeli [[400]]/[[800]] (1983) oraz serii [[XL]] i [[XE]]&lt;br /&gt;
* C014805 - [[GTIA]] NTSC&lt;br /&gt;
* C014806 - procesor [[6502C]] (SALLY) dla serii [[XL]] i [[XE]]&lt;br /&gt;
* C014809 - tranzystor MPSA55&lt;br /&gt;
* C014812 - [[PIA]] 6521 dla [[1450XLD]]&lt;br /&gt;
* C014887 - [[ANTIC (układ)|ANTIC]] &amp;quot;D&amp;quot; dla serii [[400/800]], PAL&lt;br /&gt;
* C014889 - [[GTIA]] PAL&lt;br /&gt;
* C015199 - ROM [[Atari OS]] dla serii [[400/800]], wersja A PAL (1. połowa)&lt;br /&gt;
* C015299 - ROM [[Atari OS]] dla serii [[400/800]], wersja A PAL (2. połowa)&lt;br /&gt;
* C015344 - tuleja rozporowa z grzybkiem do wbicia nitu (? ang. rivet nylon), [[400]]&lt;br /&gt;
* C015367 - tekturowa podkładka pod płytę główną do [[400]]&lt;br /&gt;
* C015500 - karta CPU [[6502C]] (PAL/NTSC) dla [[400/800]]&lt;br /&gt;
* C015505 - kondensator 47 uF&lt;br /&gt;
* C015510 - kwarc 3,57957 MHz&lt;br /&gt;
* C015950 - komparator LM339&lt;br /&gt;
* C016000 - tranzystor MPSA13&lt;br /&gt;
* C016010 - kwarc 3,57954 MHz&lt;br /&gt;
* C016018 - kwarc 4 MHz&lt;br /&gt;
* C016042 - adapter dla &amp;quot;malego&amp;quot; modulatora dla 400/800&lt;br /&gt;
* C016045 - przerzutnik 74LS74&lt;br /&gt;
* C016074 - plastikowa podkładka do [[400]]&lt;br /&gt;
* C016090 - kwarc 3,58 MHz&lt;br /&gt;
* C016112 - kwarc 3,546894 MHz&lt;br /&gt;
* C016114 - kwarc 6,5 MHz&lt;br /&gt;
* C016145 - [[6507]] od [[1050]] (to samo, co C010745)&lt;br /&gt;
* C016150 - [[6532]] od 1050 (to samo, co C010750)&lt;br /&gt;
* C016289 - kwarc 3,582080 MHz&lt;br /&gt;
* C016353 - zasilacz do [[2600]], In:120V/60Hz/12W, Out:9V/500mA&lt;br /&gt;
* C016540 - 74LS03&lt;br /&gt;
* C016555 - dokumentacja do 400/800 pt. &#039;&#039;Atari Home Computer System Technical Reference Notes&#039;&#039;&lt;br /&gt;
* C016569 - kondensatory 1-5 uF&lt;br /&gt;
* C016600 - karta CPU [[6502C]] do 400/800&lt;br /&gt;
* C016801 - kwarc 4,433618 MHz&lt;br /&gt;
* C016804 - zasilacz do [[400/800]], wersja amerykańska, In:120V/60Hz, Out:9V AC/31VA &lt;br /&gt;
* C017096 - 74LS04 sześć inwerterów&lt;br /&gt;
* C017097 - 74LS08 cztery 2-wejściowe bramki AND&lt;br /&gt;
* C017098 - 74LS86 cztery 2-wejściowe bramki EXCLUSIVE-OR&lt;br /&gt;
* C017099 - &amp;quot;counter sync&amp;quot; 74LS161&lt;br /&gt;
* C017101 - &amp;quot;freq/voltage converter&amp;quot; LM2917&lt;br /&gt;
* C017227 - jakaś część od [[810]]&lt;br /&gt;
* C017244 - multiplekser 74LS157&lt;br /&gt;
* C017536 - kwarc 4,433618 MHz&lt;br /&gt;
* C017760 - &amp;quot;power supply board&amp;quot; od [[810]]&lt;br /&gt;
* C017761 - &amp;quot;analog board&amp;quot; od [[810]]&lt;br /&gt;
* C017803 - kondensatory 0,22 uF&lt;br /&gt;
* C017863 - kwarc 3,562500 MHz&lt;br /&gt;
* C017864 - kwarc 4,453125 MHz&lt;br /&gt;
* C017885 - kondensator 0,1 uF&lt;br /&gt;
* C017945 - zasilacz do [[400/800]], wersja amerykańska, In:120V/60Hz/50W, Out:9V AC/31VA&lt;br /&gt;
* C017948-03 - dławik 820uH&lt;br /&gt;
* C017948-04 - dławik 100uH&lt;br /&gt;
* C017951 - wzmacniacz operacyjny&lt;br /&gt;
* C017952 - cewka indukcyjna 3,3 uH&lt;br /&gt;
* C018081 - złącze kartridża od [[5200]]&lt;br /&gt;
* C018084 - zasilacz do [[XEP80]] i [[SX212]] (In: 220V, 50 Hz, 9W, Out: 9V 500mA)&lt;br /&gt;
* C018140 - radiator stabilizatora 7805 od [[5200]]&lt;br /&gt;
* C018991 - tranzystor 2N3906&lt;br /&gt;
* C019062 - [[gniazdo joysticka]] od [[800XL]]&lt;br /&gt;
* C019702-01 - przełącznik kanałów TV&lt;br /&gt;
* C020120 - [[GTIA]] SECAM ([[FGTIA]])&lt;br /&gt;
* C020574 - [[PORKEY]] (574A 03/07/83) (stereo [[POKEY]]?)&lt;br /&gt;
* C020577 - [[CGIA]]&lt;br /&gt;
* C021463 - [[MEG]] (CMOS [[POKEY]]?)&lt;br /&gt;
* C021697 - [[ANTIC (układ)|ANTIC]] &amp;quot;E&amp;quot; dla serii [[XL]] i [[XE]], NTSC&lt;br /&gt;
* C021698 - [[ANTIC (układ)|ANTIC]] &amp;quot;E&amp;quot; dla serii [[XL]] i [[XE]], PAL&lt;br /&gt;
* C021737 - [[KERI]]&lt;br /&gt;
* C021859 - [[AMY]]&lt;br /&gt;
* C024467 - osłona (ekran) górna od [[800XL]]&lt;br /&gt;
* C024468 - osłona (ekran) dolna od [[800XL]]&lt;br /&gt;
* C024582 - &amp;quot;drzwi&amp;quot; kartridża od [[800XL]]&lt;br /&gt;
* C024643 - karta gwarancyjna&lt;br /&gt;
* C024680 - zawias &amp;quot;drzwi&amp;quot; kartridża od [[800XL]]&lt;br /&gt;
* C024681 - sprężyna &amp;quot;drzwi&amp;quot; kartridża od [[800XL]]&lt;br /&gt;
* C024763 - zaślepka [[PBI]] od 800XL (REV.1 CAV.A.M.2) oraz (REV.1 CAV.A.M.1)&lt;br /&gt;
* C024912 - kwarc 14,31818 MHz ([[XL]] NTSC)&lt;br /&gt;
* C024923 - kwarc 14,252 MHz ([[XL]]/[[XE]] SECAM)&lt;br /&gt;
* C024947A - ROM [[Atari BASIC]], wersja C&lt;br /&gt;
* C024968 - płyta główna [[800XL]] SECAM&lt;br /&gt;
* C025925 - płyta główna [[800XL]], wersja R3&lt;br /&gt;
* C025951 - &#039;&#039;Atari 130XE Personal Computer Owner&#039;s Manual&#039;&#039;&lt;br /&gt;
* C025952 - [[MMU]] od [[800XE]] (?)&lt;br /&gt;
* C025953 - tzw. &amp;quot;małe MMU&amp;quot; od [[130XE]]&lt;br /&gt;
* C025993 - kwarc 2,4576 MHz&lt;br /&gt;
* C026176 - instrukcja użytkownika [[AtariWriter Plus]]&lt;br /&gt;
* C026416 - instrukcja użytkownika [[XEP80]]&lt;br /&gt;
* C032805 - pudełko od XEP80&lt;br /&gt;
* C060046 - klawiatura od [[1400XL]]&lt;br /&gt;
* C060097 - &amp;quot;another side plastic&amp;quot; (?) od [[1400XL]]&lt;br /&gt;
* C060103 - góra obudowy od [[1400XL]]&lt;br /&gt;
* C060297 - osłona/prowadnica gniazda kartridża [[800XL]]&lt;br /&gt;
* C060302(A) - ROM [[Atari BASIC]], wersja B&lt;br /&gt;
* C060410 - [[gniazdo cartridge&#039;a]]&lt;br /&gt;
* C060472 - linia opóźniająca dla starszych [[XL]]&lt;br /&gt;
* C060474 - 74LS51 dwie bramki AND/OR-Invert&lt;br /&gt;
* C060479 - zasilacz do [[835]], In:120V/60Hz/9VA, Out:20V/330mA&lt;br /&gt;
* C060549 - procesor od [[835]]&lt;br /&gt;
* C060592 - zasilacz do [[850]], [[1050]] itp.&lt;br /&gt;
* C060607 - Dioda 1N4148&lt;br /&gt;
* C060609 - [[MMU]] od [[1200XL]] i [[1450XLD]]&lt;br /&gt;
* C060612 - 4164 64k*1 DRAM &lt;br /&gt;
* C060613 - 74LS375 od [[1450XLD]] TONG&lt;br /&gt;
* C060615 - EPROM 16k od [[1450XLD]] TONG&lt;br /&gt;
* C060616A - ROM [[XL OS]] wersja AA 0 rev. 10 dla [[1200XL]] (1. połowa)&lt;br /&gt;
* C060616B - ROM [[XL OS]] wersja AA 1 rev. 11 dla [[1200XL]] (1. połowa)&lt;br /&gt;
* C060617A - ROM [[XL OS]] wersja AA 0 rev. 10 dla [[1200XL]] (2. połowa)&lt;br /&gt;
* C060617B - ROM [[XL OS]] wersja AA 1 rev. 11 dla [[1200XL]] (2. połowa)&lt;br /&gt;
* C060619 - 74LS375 - podwójny przerzutnik typu latch &lt;br /&gt;
* C060629 - rezystor (zwora) 0 Ohm 1/4W&lt;br /&gt;
* C061022 - włącznik zasilania [[XL]] i [[XE]]&lt;br /&gt;
* C061032 - adapter PERITEL (przystawka SECAM) do [[800]]&lt;br /&gt;
* C061090 - kwarc 3,57945 MHz&lt;br /&gt;
* C061272 - dokument pt. &#039;&#039;1050 Disk Drive Product Specification&#039;&#039;&lt;br /&gt;
* C061336 - kondensator 270 pF&lt;br /&gt;
* C061336-01 - kondensator 3.9 pF&lt;br /&gt;
* C061428 - 74LS138 dekoder z 1 na 8&lt;br /&gt;
* C061481 - 74LS30 8-wejściowa bramka NAND&lt;br /&gt;
* C061598 - OS ROM [[800XL]]&lt;br /&gt;
* C061515 - zasilacz do [[1010]], In:120V/60Hz/8VA, Out:9V/5VA&lt;br /&gt;
* C061516 - zasilacz do [[1010]], In:120V/60Hz/7,5VA, Out:9V/0,5A&lt;br /&gt;
* C061516-11 - zasilacz do [[1010]], In:220V/50Hz/7VA, Out:9V/0,5A&lt;br /&gt;
* C061516-34 - zasilacz do [[1010]], In:240V/50Hz/5VA, Out:8,5V/4,25VA&lt;br /&gt;
* C061598B - ROM [[XL OS]], wersja BB 1 rev. 2 (10 maja 1983, od [[800XL]] i wczesnych [[65XE]]/[[130XE]])&lt;br /&gt;
* C061611 - dokument pt. &#039;&#039;Atari [[600XL]] Home Computer Specification&#039;&#039;&lt;br /&gt;
* C061616 - dokument pt. &#039;&#039;Environmental Engineering Manual&#039;&#039;&lt;br /&gt;
* C061618 - [[XL]]/[[XE]] [[MMU]]&lt;br /&gt;
* C061619 - modulator od [[800XL]], wersje PAL i NTSC&lt;br /&gt;
* C061636 - zasilacz do [[1027]], In:120V/60Hz/60W, Out:9.5V/40VA&lt;br /&gt;
* C061647 - kondensator elektrolityczny niepolaryzowany 4.7 uF&lt;br /&gt;
* C061658 - modulator od [[800XL]], wersja PAL, brytyjska&lt;br /&gt;
* C061659 - modulator od [[800XL]], wersja PAL&lt;br /&gt;
* C061668-04 - drabinka rezystorowa 4*470ohm SIP&lt;br /&gt;
* C061677 - płyta główna od [[600XL]]&lt;br /&gt;
* C061687 - zatrzask ośmiobitowy 74LS273&lt;br /&gt;
* C061689 - transceiver 74LS245&lt;br /&gt;
* C061690 - 6551 [[ACIA]] od [[1450XLD]] TONG&lt;br /&gt;
* C061691 - multiplekser CD4053&lt;br /&gt;
* C061692 - 74HC492 od modemu (?) w [[1450XLD]] TONG&lt;br /&gt;
* C061702 - wzmacniacz operacyjny LM358&lt;br /&gt;
* C061719 - &amp;quot;dual peripheral driver&amp;quot; od [[1450XLD]] TONG&lt;br /&gt;
* C061720 - [[SC-01A]]&lt;br /&gt;
* C061742 - płyta główna od [[1400XL]], rev. X2&lt;br /&gt;
* C061743 - schemat od [[1400XL]]&lt;br /&gt;
* C061751 - &amp;quot;bezel&amp;quot; (brązowa część obudowy otaczająca klawiaturę) od [[1400XL]]&lt;br /&gt;
* C061752 - dół obudowy od [[1400XL]]&lt;br /&gt;
* C061755 - boczny panel obudowy od [[1400XL]]&lt;br /&gt;
* C061757 - plakietka z nazwą od [[1400XL]]&lt;br /&gt;
* C061763 - zasilacz do [[XL]]/[[XE]], typ &amp;quot;ciężki&amp;quot; lub &amp;quot;gładki&amp;quot;, In:220V/50Hz/22VA , Out:5V/1,5A/7,5VA&lt;br /&gt;
* C061768 - &#039;&#039;1400XL Assembly Tree&#039;&#039; (cokolwiek to jest)&lt;br /&gt;
* C061793 - gniazdo FFC do klawiatury &lt;br /&gt;
* C061802 - podręcznik użytkownika [[1400XL]]&lt;br /&gt;
* C061838 - gniazdo zasilające (DIN 45329)&lt;br /&gt;
* C061844 - transformator audio&lt;br /&gt;
* C061845 - dioda 1N4733A&lt;br /&gt;
* C061847 - optoizolator 4N25&lt;br /&gt;
* C061848 - kwarc 1,8432 MHz&lt;br /&gt;
* C061850 - 74LS14 sześć inwerterów z wejściem Schmitta&lt;br /&gt;
* C061851 - płyta główna [[800XL]] NTSC/PAL z linią opóźniającą, wersja C i D&lt;br /&gt;
* C061868 - zaślepka [[PBI]] od [[1400XL]]&lt;br /&gt;
* C061902 - dokument pt. &#039;&#039;Atari Parallel Bus Interface ([[PBI]]) Specifications&#039;&#039;&lt;br /&gt;
* C061907 - dokument pt. &#039;&#039;Atari [[1400XL]] Home Computer Product Specification&#039;&#039;&lt;br /&gt;
* C061920 - 4k ROM PBI od [[1450XLD]] TONG&lt;br /&gt;
* C061921 - kontroler napędu dyskietek WD2797 od [[1450XLD]]&lt;br /&gt;
* C061923 - przerzutnik 74LS175 od 1450XLD&lt;br /&gt;
* C061924 - EPROM 16k od 1450XLD&lt;br /&gt;
* C061925 - przerzutnik 2301A od [[1450XLD]]&lt;br /&gt;
* C061926 - bramka NAND, 13 wejść, 74LS133&lt;br /&gt;
* C061928 - mikroprocesor Intel 8050H od (stacji dysków od) [[1450XLD]]&lt;br /&gt;
* C061929 - przerzutnik 74LS374&lt;br /&gt;
* C061930 - 74LS221 przerzutnik monostabilny&lt;br /&gt;
* C061931 - 75478 podwójny driver&lt;br /&gt;
* C061932 - 74LS123 dwa przerzutniki monostabilne&lt;br /&gt;
* C061933 - 74LS11 trzy 3-wejściowe bramki AND&lt;br /&gt;
* C061934 - 74S32 cztery 2-wejściowe szybkie bramki AND (od 1450XLD)&lt;br /&gt;
* C061935 - 7406 sześć buforów-inwerterów wysokonapięciowych (od 1450XLD)&lt;br /&gt;
* C061936 - 74LS38 cztery 2-wejściowe bramki buforowe NAND (od 1450XLD)&lt;br /&gt;
* C061982 - zasilacz do [[600XL]] i [[800XL]] (podobno rzadko spotykany), In:120V/60Hz/30W (lub: 120V/60Hz/40W, lub: 120V/60Hz/25W), Out:5V/1,5A&lt;br /&gt;
* C061983 - klawiatura [[800XL]]&lt;br /&gt;
* C061991 - [[FREDDIE]] (NCR)&lt;br /&gt;
* C061992 - [[FREDDIE]] (CITEL)&lt;br /&gt;
* C061997 - osłona/prowadnica gniazda kartridża od [[1200XL]] i [[1400XL]]&lt;br /&gt;
* C062024 - ROM [[XL OS]] wersja BB 0 rev. 1 od [[600XL]]&lt;br /&gt;
* C062039 - &#039;&#039;Atari 1400XL Power Supply Specification&#039;&#039;&lt;br /&gt;
* C062057 - kwarc 4,032 MHz (od [[1030]])&lt;br /&gt;
* C062061 - dokument pt. &#039;&#039;Speech Synthesizer Interface Specifications&#039;&#039; (do [[SC-01A]] w [[1400XL]] i [[1450XLD]])&lt;br /&gt;
* C062062 - dokument pt. &#039;&#039;Direct Connect Integral Modem Peripheral Interface Specifications&#039;&#039;&lt;br /&gt;
* C062063 - dokument pt. &#039;&#039;Atari 1450XL Home Computer Integral Disk Drive Specification&#039;&#039;&lt;br /&gt;
* C062171 - modem od [[1400XL]]&lt;br /&gt;
* C062195 - zasilacz do [[1030]], In:120V/60Hz/12VA, Out:9V/5,4VA &lt;br /&gt;
* C070013 - górna część obudowy od [[65XE]] w wersji bez expansion&lt;br /&gt;
* C070015 - klawiatura od [[XE]], [[XE#Typy klawiatur|japońska, &amp;quot;na sprężynkach&amp;quot;]]&lt;br /&gt;
* C070015-002 - klawiatura od [[XE]], [[XE#Typy klawiatur|japońska, &amp;quot;na gumie&amp;quot;]]&lt;br /&gt;
* C070015-003 - klawiatura od [[XE]], [[XE#Typy klawiatur|japońska, &amp;quot;na gumie&amp;quot;]]&lt;br /&gt;
* C070015-004 - klawiatura od [[XE]], [[XE#Typy klawiatur|chińska, &amp;quot;na gumie&amp;quot;]]&lt;br /&gt;
* C070024 - kwarc 14,31818 MHz ([[XE]] NTSC)&lt;br /&gt;
* C070025 - płyta główna [[65XE]] bez [[ECI]] z miejscem na 8 1-bitowych kości RAM 8 KB, wersja C&lt;br /&gt;
* C070034 - kwarc 14,187576 MHz ([[XE]] PAL)&lt;br /&gt;
* C070035 - kwarc 14,187576 MHz [[XEGS]]&lt;br /&gt;
* C070042-01 - zasilacz do [[65XE]] i [[XEGS]], In:117V/60Hz/22VA, Out:5V/1A&lt;br /&gt;
* C070042-11 - zasilacz do [[XEGS]], In:120V/60Hz/17W, Out:5V/1A&lt;br /&gt;
* C070045 - zasilacz do [[XL]]/[[XE]], In:220V/50Hz/18VA, Out:5V/1A (&amp;quot;prążkowany&amp;quot;, mały znaczek Atari w lewym dolnym rogu)&lt;br /&gt;
* C070050 - płyta główna [[130XE]] SECAM, rev.A i rev.2 &lt;br /&gt;
* C070067 - płyta główna dla komputerów [[XE]] z [[ECI]] i miejscem na 16 1-bitowych kości RAM 8 KB. Występuje w [[65XE]], [[130XE]] i [[800XE]]. Wersja B i C&lt;br /&gt;
* C070235 - procesor 8050 od [[XF551]]&lt;br /&gt;
* C070760 - kwarc 4,433618 MHz od [[XEGS]]&lt;br /&gt;
* C072018 - &#039;&#039;Atari 65XE Personal Computer Owner&#039;s Manual&#039;&#039;&lt;br /&gt;
* C099909 - &#039;&#039;General Qualification Specification for Keyboards&#039;&#039;&lt;br /&gt;
* C100186 - modulator od [[XEGS]]&lt;br /&gt;
* C100407 - górna część obudowy [[XEGS]]&lt;br /&gt;
* C100408 - dolna część obudowy [[XEGS]]&lt;br /&gt;
* C100417 - płyta główna [[XEGS]], rev. A&lt;br /&gt;
* C100455 - płyta głowna pierwszych wersji [[65XE]] z [[ECI]] z miejscem na 8 1-bitowych kości RAM 8 KB. Oznaczenie 65XEN. Użyta też w [[Arabski 65XE|arabskim 65XE]]&lt;br /&gt;
* C100622 - płyta główna [[XEGS]], rev. 2A&lt;br /&gt;
* C101685 - RAM 64k x 4 ([[XE]], [[Lynx]])&lt;br /&gt;
* C101686 - [[MMU]] od [[XEGS]]&lt;br /&gt;
* C101687 - ROM systemowy ([[XL OS]] wersja BB 1 rev. 4, [[Atari BASIC]] wersja C, [[Missile Command]]) od [[XEGS]]&lt;br /&gt;
* C101696 - ROM od [[XF551]]&lt;br /&gt;
* C101700 - ROM [[XL OS]] wersja BB 1 rev. 59 od [[Arabski 65XE|arabskiego 65XE]]&lt;br /&gt;
* C103579 - płyta główna dla komputerów [[XE]] z [[ECI]] z miejscem na 4 kości RAM 32 KB. Występuje w [[130XE]], [[800XE]] i [[65XE]]&lt;br /&gt;
* C300717 - ROM [[XL OS]], wersja BB 1 rev. 3 (1 marca 1985, od późnych [[65XE]]/[[130XE]])&lt;br /&gt;
* FC100357 - kwarc 4 MHz od [[1050]]&lt;br /&gt;
* FC100541 - ROM od [[1050]]&lt;br /&gt;
* FC100542 - kontroler WD2793 od [[1050]]&lt;br /&gt;
* FC100817 - kontroler WD2797 od [[1050]]&lt;br /&gt;
&lt;br /&gt;
* CA014746 - moduł przełącznika TV od [[800XL]] (wersja US)&lt;br /&gt;
* CA018087 - płyta główna od [[5200]]&lt;br /&gt;
* CA024357 - płyta główna od [[1450XLD]]&lt;br /&gt;
* CA024624 - kabel RF (RCA chinch-antena TV)&lt;br /&gt;
* CA024814 - zasilacz od [[800XL]] (wersja US)&lt;br /&gt;
* CA024969 - płyta główna od [[800XL]] SECAM ([[Rose]])&lt;br /&gt;
* CA025926 - płyta główna od [[800XL]] PAL z układem FREDDIE&lt;br /&gt;
* CA060046 - klawiatura od [[1450XLD]]&lt;br /&gt;
* CA061854 - płyta główna od [[800XL]] PAL z linią opóźniającą&lt;br /&gt;
* CA062027 - płytka L.E.D. (cokolwiek to jest) od [[1450XLD]]&lt;br /&gt;
* CA062174 - płytka modemu od [[1450XLD]]&lt;br /&gt;
* CB101219 - kwarc 8,3333 MHz od [[XF551]]&lt;br /&gt;
* CB101393 - procesor 8040 od [[XF551]]&lt;br /&gt;
&lt;br /&gt;
== Atari konsole 8-bit i automaty do gier ==&lt;br /&gt;
* C010444 - [[TIA]] NTSC (STELLA)&lt;br /&gt;
* C010750 - [[6532]] ([[2600]])&lt;br /&gt;
* C011903 - [[TIA]] PAL (PAULA)&lt;br /&gt;
* C016150 - [[6532]] ([[2600]])&lt;br /&gt;
* C018082 - RAM dla [[5200]]&lt;br /&gt;
* C018172 - [[FTIA]] (TIA SECAM)&lt;br /&gt;
* C018084-107 - zasilacz do konsoli [[2600|CX-2600]], In:220V/50Hz/9W, Out:9V/0,5A&lt;br /&gt;
* C018084-117A - zasilacz do konsoli [[2600]], In:220V/50Hz/9W, Out:9V/0,5A/4,5VA&lt;br /&gt;
* C019156 - ROM BIOS dla większości [[5200]]&lt;br /&gt;
* C019156A - ROM BIOS (2. rewizja) dla ostatnich 2-joystickowych [[5200]]&lt;br /&gt;
* C024425 - [[QUAD POKEY]] (do automatów; HA4425 06/12/84)&lt;br /&gt;
* C024922 - ROM dla [[7800]] NTSC&lt;br /&gt;
* C024674 - [[MARIA]]-B NTSC&lt;br /&gt;
* C024943-107 - zasilacz do [[7800|Atari 7800]], In:220V/50Hz/15W, Out:9V-DC/1A&lt;br /&gt;
* C025349 - [[MARIA]]-C NTSC?&lt;br /&gt;
* C025718 - [[MARIA]] PAL&lt;br /&gt;
* C026461 - płytka [[POKEY]]-cart do [[7800]]&lt;br /&gt;
* C104471-001 - płyta główna od [[Lynx II|Lynxa II]], rev.A&lt;br /&gt;
* C300452 - adapter 4-bitowych pamięci statycznych 2158 (rev. C)&lt;br /&gt;
* C300558 - ROM od [[7800]] PAL (zawiera [[Asteroids]])&lt;br /&gt;
* C300558-001B - to samo co wyżej (?)&lt;br /&gt;
* C300633-001 - płyta główna do [[7800]] rev. C&lt;br /&gt;
* C301645 - koder RGB do [[7800]]&lt;br /&gt;
* C301719-001 - [[Mikey (układ)|Mikey]]&lt;br /&gt;
* C302284-001 - [[Suzy]]&lt;br /&gt;
* C398052-001 - [[TIA]] w wersji dla [[7800]]&lt;br /&gt;
* C500388 - (4829-0912-4DC lub 4829-0912-ADC) atari p/n: 500388 - zasilacz do [[Jaguar|Atari Jaguar]], In:220V/50Hz, Out:9V/1.2A,10,8VA (odwrotna polaryzacja!)&lt;br /&gt;
&lt;br /&gt;
== Niezidentyfikowany sprzęt 8-bitowy ==&lt;br /&gt;
&lt;br /&gt;
* C014328 1k RAM H4328 09/20/82&lt;br /&gt;
* C015338 STAR 15338 10/31/81&lt;br /&gt;
* C015339 STELLETTE 15339D 04/07/83&lt;br /&gt;
* C016150 fast 6532 6150A 06/24/80&lt;br /&gt;
* C016213 2716(2kx8 EPROM)&lt;br /&gt;
* C016505 16kx4 DRAM&lt;br /&gt;
* C016598 ISABEL IBEL 05/07/81&lt;br /&gt;
* C016599 STEPHANIE 6599A 06/04/83&lt;br /&gt;
* C016701 FRANTIC 6701 05/12/81&lt;br /&gt;
* C016702 BETTY 16702 01/04/83&lt;br /&gt;
* C016819 ENCODER 6819 03/31/83&lt;br /&gt;
* C016820 DECODER 6820 03/16/83&lt;br /&gt;
* C016821 Transistor Array HFEXXX 11/21/83&lt;br /&gt;
* C018082 16kx1 DRAM 1-supp&lt;br /&gt;
* C018969 COMBO 8969A 06/22/83&lt;br /&gt;
* C020231 SARA HC0231 05/16/84&lt;br /&gt;
* C024143 MERCURY&lt;br /&gt;
* C024382 MISTY&lt;br /&gt;
* C024421 MTV-1&lt;br /&gt;
* C024422 RAINBOW GOLD&lt;br /&gt;
* C024423 RAINBOW SILVER&lt;br /&gt;
* C024424 STEPHANIE PAL&lt;br /&gt;
* C024426 BENNY&lt;br /&gt;
* C024574 MATTHEW&lt;br /&gt;
* C025307 MATT&lt;br /&gt;
* C025632 PIC 1670 H5632 05/15/84&lt;br /&gt;
* C061617 (64kx1 DRAM 1-supp, analogicznie do C060612?)&lt;br /&gt;
* C061693 2732A (EPROM)&lt;br /&gt;
* C061842 MMU&lt;br /&gt;
* C061917 PAL C H1917 08/05/83&lt;br /&gt;
* C061918 PAL B H1918 08/03/83&lt;br /&gt;
* C061919 PAL A HB1919 03/14/84&lt;br /&gt;
* C062016 MODEM (T.I.)&lt;br /&gt;
* C062208 280A (Z80A?)&lt;br /&gt;
* C062209 6116 (2kx8 SRAM)&lt;br /&gt;
* C062210 6845 VIP CONTR.&lt;br /&gt;
* C062211 280 PERIF. INTERFACE (Z80PIO?)&lt;br /&gt;
* C137410 ICY&lt;br /&gt;
&lt;br /&gt;
Źródła: [http://atarihq.com/danb/files/AtariChips.txt 1] [http://atarihq.com/danb/AtariChips.shtml 2]&lt;br /&gt;
&lt;br /&gt;
== Atari 16/32/64-bitowe ==&lt;br /&gt;
* C025912-38/38A - [[MMU]] [[ST|Atari ST]]&lt;br /&gt;
* C025913-20/38/38A - DMA&lt;br /&gt;
* C025914-38/38A - Shifter&lt;br /&gt;
* C025915-20/38/38A - Glue&lt;br /&gt;
* C025983 - generator dźwięku Yamaha YM2149&lt;br /&gt;
* C025984 - układ we/wy Motorola MC68901&lt;br /&gt;
* C025985 - ACIA Motorola MC[[6850]]&lt;br /&gt;
* C025988 - Motorola H11L1&lt;br /&gt;
* C026028 - kontroler stacji dyskietek WD1772&lt;br /&gt;
* C026302-001, C026303-001, C026304-001, C026305-001, C026306-001, C026307-001 - TOS 1.00 (Germany)&lt;br /&gt;
* C070102-3 - zewnętrzny zasilacz do [[ST]], In:220V/50Hz/48VA, Out:5V/3A;+12V/0,03A;-12V/0,03A&lt;br /&gt;
* C070122-001/002 Sterownik klawiatury&lt;br /&gt;
* C070195 - spód od stacji SF354&lt;br /&gt;
* C070196 - góra od tejże&lt;br /&gt;
* C070502-011 - klawiatura w serii ST (niemiecka)&lt;br /&gt;
* C100167-001 - rev. 5.0 płyty głównej [[Mega ST]]&lt;br /&gt;
* C103277 - [[Płyta główna Mega ST]] 1 rev. 2.2&lt;br /&gt;
* C103561-001 - Wewnętrzny kontroler SCSI do [[Mega_STE|Mega STE]] ([[Stacy]])&lt;br /&gt;
* C300588 - Shifter do STE&lt;br /&gt;
* C301225-001A - MCU w [[TT030|Atari TT030]]&lt;br /&gt;
* C302024-002B - [[TOS]] 2.05 Mega STE (Germany)&lt;br /&gt;
* C302763-001 - Płytka modułu 1/4 MB [[ST RAM]] do [[Falcon]]a&lt;br /&gt;
* C302767-001 - Płytka modułu 16 MB [[ST RAM]] do [[Falcon]]a&lt;br /&gt;
* C303070 - dyskietka systemowa nr 2 (Extra Programs), wersja USA, Falcon&lt;br /&gt;
* C303071 - dyskietka systemowa nr 1 (Language disk), wersja brytyjska, Falcon&lt;br /&gt;
* C303217-001 - [[TOS]] 4.04 Falcon&lt;br /&gt;
* C500131 - dyskietka systemowa [[MultiTOS]]-u, wersja brytyjska, Falcon&lt;br /&gt;
* VL1772-02PC - Kontroler stacji dysków (DD) firmy VLSI kompatybilny z WD1772&lt;br /&gt;
* [[CA400313]] - moduł [[ST RAM]] do [[TT030|Atari TT030]]&lt;br /&gt;
* [[CA401059]] - moduł [[ST RAM]] do [[TT030|Atari TT030]]&lt;br /&gt;
* CA401332 - płyta główna Falcon&lt;br /&gt;
** 002 REV.D/C&lt;br /&gt;
** 003 REV. D/C&lt;br /&gt;
&lt;br /&gt;
== Atari - klony PC ==&lt;br /&gt;
* C103670 - memory card 64 KB do [[Portfolio (komputer)|Portfolio]]&lt;br /&gt;
* CA400702 - [[File Manager/Tutorial]] na ramkietce do Portfolio&lt;br /&gt;
&lt;br /&gt;
==Odnośniki zewnętrzne==&lt;br /&gt;
* [http://www.atarimania.com/documents/atari-engineering-information-system-item-master_list.pdf Atari Engineering Information System - Item Master List (1984-01-13)] na [[Atarimania|Atarimanii]]&lt;br /&gt;
* [http://www.atariguide.com/pdfs/Atari_2600_VCS_Domestic_Field_Service_Manual.pdf Service manual dla Atari 2600]&lt;br /&gt;
* [http://www.digitpress.com/library/techdocs/Atari_400-800_Service_Manual.pdf Service manual dla Atari 400/800]&lt;br /&gt;
*[http://www.atariage.com/forums/topic/74377-master-chip-listing Lista układów opracowanych w Atari do 26.06.1984] na [[AtariAge]]&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Schematy i specyfikacje]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=810&amp;diff=36411</id>
		<title>810</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=810&amp;diff=36411"/>
		<updated>2018-02-10T13:57:06Z</updated>

		<summary type="html">&lt;p&gt;Trub: Typy mechanizmów&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{grafr|810.jpg}}&lt;br /&gt;
&lt;br /&gt;
Stacja dysków przeznaczona dla serii [[400/800]].&lt;br /&gt;
&lt;br /&gt;
* mikroprocesor [[6507]]&lt;br /&gt;
* jednostronna, pojedyncza gęstość ([[SD]])&lt;br /&gt;
* 40 ścieżek, 18 sektorów na ścieżkę, 128 bajtów na sektor&lt;br /&gt;
* 90 KB na stronę dyskietki&lt;br /&gt;
* maksymalny transfer 19200 bitów/s&lt;br /&gt;
* 288 obrotów na minutę.&lt;br /&gt;
* dostarczana wraz z [[DOS 1.0]] i [[DOS 2.0|DOS 2.0S]]&lt;br /&gt;
* dwa porty [[SIO]]&lt;br /&gt;
&lt;br /&gt;
Mechanizm stacji występuję w dwóch odmianach, MPI (na zdjęciu) i Tandon (rzadsza). W MPI duży otwór na dyskietkę ma podnoszoną klapkę i przycisk. W wersji Tandon dyskietkę wprowadza się w szczelinę.&lt;br /&gt;
&lt;br /&gt;
Dostępne akcesoria: [[CX8100]], [[CX8111]], [[CX8202]]&lt;br /&gt;
&lt;br /&gt;
==Zobacz też==&lt;br /&gt;
* [http://www.strotmann.de/twiki/pub/Infothek/AtariEightTen/a810.pdf Atari 810 Disk Drive - An Introduction to the DOS] (DOS 2.0s)&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Peryferia 8-bit]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=The_Last_Word&amp;diff=35803</id>
		<title>The Last Word</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=The_Last_Word&amp;diff=35803"/>
		<updated>2017-02-19T18:16:18Z</updated>

		<summary type="html">&lt;p&gt;Trub: Aktualizacja względem nowych wersji&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{grafr|tlw.png}}&lt;br /&gt;
Bardzo rozbudowany procesor tekstu dla [[Atari 8-bit]], jaki (niespodziewanie) ukazał się w roku 2009. Autor, [[flashjazzcat|Jonathan Halliday]], rozpoczął pracę nad nim w 1999 roku, rok później powstała wersja 2.1, po czym nastąpiła ośmioletnia przerwa w programowaniu. W latach 2008-2011, po powrocie autora do ośmiobitowego Atari, pojawiły się wersje 3.0-3.21b. Najnowszą udostępnioną wersją jest 3.3 (ostatnia aktualizacja w 2013), która pozwala wykorzystać 80 kolumnowy tryb [[VBXE]]. Wcześniej (2010) pojawiła się jeszcze wersja próbna oznaczona jako 4.0 VBXE Edition Beta 1. &lt;br /&gt;
&lt;br /&gt;
== Cechy programu ==&lt;br /&gt;
&lt;br /&gt;
Ogólnie program przypomina nieco [[The First XLEnt Word Processor]], na którym, jak się zdaje, był wzorowany. Ma jednak o wiele więcej funkcji. Oto ich skrócony przegląd:&lt;br /&gt;
&lt;br /&gt;
* tekst może mieć do 240 kolumn szerokości&lt;br /&gt;
* można otworzyć do edycji do 10 plików na raz (w zależności od ilości banków pamięci rozszerzonej)&lt;br /&gt;
* wbudowany jest interpreter języka służącego do definiowania makropoleceń&lt;br /&gt;
* funkcje programu można wywoływać skrótami klawiaturowymi lub za pośrednictwem ikonek&lt;br /&gt;
* możliwy jest 80-kolumnowy podgląd wydruku&lt;br /&gt;
* istnieją funkcje wycinania/kopiowania/wstawiania bloków, wyszukiwania itp.&lt;br /&gt;
* zaimplementowano zaawansowane funkcje formatujące, takie jak automatyczne wcięcia, automatyczny podział wyrazów, przypisy (!) itp.&lt;br /&gt;
* program jest bardzo szybki, nawet przy operacjach na dużych plikach&lt;br /&gt;
* program pracuje na 40- lub 80-kolumnowym ekranie (w [[Graphics 0]] lub [[Graphics 8]])&lt;br /&gt;
&lt;br /&gt;
Wadą programu jest stosunkowo nieduży bufor na tekst (ok. 18k, dla porównania w The First XLEnt Word Processor jest to około 30k). W przypadku większych plików, The Last Word umożliwia edytowanie wybranego segmentu mieszczącego się w buforze.&lt;br /&gt;
&lt;br /&gt;
== Odnośniki zewnętrzne ==&lt;br /&gt;
* [http://atari8.co.uk/the-last-word/ Strona domowa programu]&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
[[Kategoria:Oprogramowanie Atari 8-bit]]&lt;br /&gt;
[[Kategoria:Edytory tekstu]]&lt;br /&gt;
[[Kategoria:VBXE]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_kod%C3%B3w_operacyjnych&amp;diff=35000</id>
		<title>Lista komend SIO według kodów operacyjnych</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_kod%C3%B3w_operacyjnych&amp;diff=35000"/>
		<updated>2015-07-15T19:23:31Z</updated>

		<summary type="html">&lt;p&gt;Trub: DOWNLOAD - podejrzenie&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Główny artykuł: [[SIO]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$01 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET LARGE MODE&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;large mode&#039;&#039; wewnętrznej stacji dysków komputera Atari [[1450XLD]]. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako logiczną całość liczącą 2080 sektorów po 128 bajtów (260k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$02 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET SMALL MODE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;small mode&#039;&#039; wewnętrznej stacji dysków komputera Atari [[1450XLD]]. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako dwie oddzielne dyskietki liczące po 1040 sektorów po 128 bajtów (= 2x130k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan = 3&amp;gt;$20 (&amp;amp;nbsp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda wymieniana przez niektóre źródła. Szczegóły nieznane. Być może chodzi o komendę LOAD AND EXECUTE TEST w interfejsie 850 (zob. niżej)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;AUTOMATIC FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Speedy 1050]] w odpowiedni na tę komendę formatuje dyskietkę w zadanej gęstości (DAUX1 = $00 pojedyncza, $20 podwójna, $80 średnia) i, o ile konfiguracja stacji tego nie zabrania, zapisuje bootsektory i [[VTOC]] zgodne z [[DOS 2.0]] lub (w średniej gęstości) [[DOS 2.5]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;LOAD AND EXECUTE TEST&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości przesyłanego kodu&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda niepublikowana w oficjalnej dokumentacji. Powoduje wczytanie z komputera kodu programu, a następnie uruchomienie go przez interfejs [[850|Atari 850]]. W DAUX1 podawany jest rozmiar przesyłanego kodu. Ze względu na specyfikę procedury odbioru danych, kod powinien być wysyłany od ostatniego do pierwszego bajtu.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DISK&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Formatuje dyskietkę w wybranej uprzednio (komendami PERCOM) gęstości, lub w [[Formaty dyskietek|pojedynczej gęstości]] (90k), jeśli stacja nie jest konfigurowalna. Zwraca listę zawierającą numery wadliwych sektorów (kolejno LSB/MSB) wykrytych w czasie formatowania, zakończoną wartością $FFFF. Niektóre stacje zwracają tu pustą listę ($FFFF, a dalej same zera), nawet jeśli na dyskietce są wadliwe sektory: po prostu dyskietki nie są już tak drogie, jak pod koniec lat siedemdziesiątych XX wieku...&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;SEND RELOCATOR&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg odpowiedzi na komendę POLL ($3F)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jest to komenda uzupełniająca do opisanego niżej POLL ($3F). Powoduje przesłanie przez urządzenie programu odpowiedzialnego za załadowanie (komendą SEND HANDLER) i relokację właściwego handlera. Wszystkie parametry transmisji dla SEND RELOCATOR przesyłane są na komendę POLL ($3F). Program relokatora - po jego załadowaniu - uruchamia się od adresu DBUFA + 6. Przejmuje on na siebie wykonanie reszty operacji, a w wypadku niepowodzenia sygnalizuje błąd przez ustawienie bitu Carry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Komendę SEND RELOCATOR rozpoznaje moduł [[850|Atari 850]], a może dotyczyć też innych urządzeń, oprócz stacji dysków (gdzie kod operacyjny $21 oznacza formatowanie dyskietki).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$22 (&amp;quot;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT MEDIUM&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości średniej]] (130k). Komenda wprowadzona razem ze stacją [[1050]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan = 3&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DSDD&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;256 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości podwójnej dwustronnej]] (360k). Komenda wprowadzona razem ze stacją [[XF551|Atari XF-551]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;FORMAT SKEWED&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda formatowania z szybkim [[przeplot]]em w stacjach [[Indus GT]], [[LDW Super 2000]] oraz [[CA-2001]] z załadowanym [[Synchromesh]]em.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Kod operacyjny jest taki sam, jak komendy formatowania w gęstości [[DSDD]] dla stacji [[XF551]] oraz jednej z komend diagnostycznych w [[1050]].&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;DIAG1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050|Atari 1050]]. Wymaga przesłania 128-bajtowego bloku danych, w którym dwa pierwsze bajty decydują o tym, co stacja będzie robić (DAUX1/2 są ignorowane):&amp;lt;/p&amp;gt;&lt;br /&gt;
* $02 - test przejścia głowicy między ścieżkami&lt;br /&gt;
* $03 - przesuw głowicy za pomocą silnika krokowego o jeden krok w przód lub w tył; o kierunku decyduje następny bajt, wartość dodatnia (np. $01) powoduje przesuw w przód - czyli w kierunku ścieżki 39 - a wartość ujemna (np. $FF) przesuw wstecz, czyli w kierunku ścieżki 0. &amp;quot;Krok&amp;quot; silnika krokowego w tym wypadku to połowa odległości między ścieżkami, żeby więc tą komendą przesunąć głowicę na sąsiednią ścieżkę, trzeba zrobić to dwa razy. Uwaga: możliwe jest cofnięcie głowicy wstecz od ścieżki 0 (na tzw. ścieżkę -1).&lt;br /&gt;
* $04 - test zapisu i odczytu dyskietki; formatuje znajdującą się w stacji dyskietkę w średniej gęstości.&lt;br /&gt;
* $05 - przesuw główicy do ścieżki o numerze podanym w następnym bajcie.&lt;br /&gt;
&amp;lt;p&amp;gt;Jest to również komenda DRIVE DIAGNOSTIC IN wewnętrznej stacji Atari [[1450XLD]]. Szczegóły działania nieznane, poza tym że ma zapisywać do stacji zawartość bufora o bliżej nieokreślonej zawartości.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;UWAGA: kod operacyjny ($23) jest taki sam, jak kod komendy formatowania w stacji [[XF551|Atari XF-551]] oraz [[LDW Super 2000]] i [[CA-2001]] z załadowanym [[Synchromesh]]em!&#039;&#039;&#039;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050]], służy do pomiaru prędkości obrotowej dyskietki. W zależności od wartości dwóch pierwszych bajtów przesłanego bloku danych ($00, $00 lub $00, $01) stacja przesyła czas jednego obrotu dyskietki lub wartość prędkości obrotowej w obrotach na minutę.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Jest to również komenda DRIVE DIAGNOSTIC OUT wewnętrznej stacji Atari [[1450XLD]]. Szczegóły działania nieznane, poza tym że ma odczytywać ze stacji do 128-bajtowego bufora bliżej nieokreślone dane diagnostyczne.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$26 (&amp;amp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HANDLER&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator przesłany przez SEND RELOCATOR ($21) lub wg odpowiedzi na komendę POLL BUS ($40)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator (przesłany przez urządzenie lub rezydujący)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda SEND HANDLER służy do załadowania z urządzenia kodu programu obsługi (handlera) tego urządzenia. Może ona działać różnie w zależności od tego, czy transmisja została zainicjowana przez komendę POLL ($3F) czy POLL BUS ($40).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL ($3F) oznacza starszy protokół transmisji, w którym format strumienia danych przesłanych przez SEND HANDLER zależny jest od programu relokatora załadowanego wcześniej komendą SEND RELOCATOR ($21) i uruchomionego przez komputer.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL BUS ($40) oznacza nowszy protokół transmisji. Format strumienia danych jest ustalony z góry, a relokator rezyduje w ROM-ie systemu operacyjnego komputera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po otrzymaniu pozytywnej odpowiedzi na POLL BUS ($40) komputer rozpoczyna ładowanie kolejnych, 128-bajtowych rekordów binarnych, w liczbie do 256 (czyli pojedynczy &amp;quot;handler&amp;quot; może mieć maximum 32k). Przesyłany strumień danych musi być w [[ACX|specjalnym formacie]], który zapewnia relokowalność kodu, oraz zawiera podany explicite znacznik końca pliku - wystąpienie błędu przed napotkaniem tego znacznika powoduje przerwanie procedury z [[kody błędów|kodem błędu]] INCOMPLETE EXECUTION.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Ustawienia zmiennych DCB dla komendy SEND HANDLER wyglądają następująco:&amp;lt;/p&amp;gt;&lt;br /&gt;
* DDEVIC - kod urządzenia przesłany przez urządzenie $4F na komendę POLL BUS.&lt;br /&gt;
* DUNIT - zawsze $01&lt;br /&gt;
* DCMND - $26 - SEND HANDLER&lt;br /&gt;
* DSTATS - $40 - odczyt&lt;br /&gt;
* DTIMLO - 30 sekund&lt;br /&gt;
* DBYT - 128 bajtów&lt;br /&gt;
* DAUX1 - numer kolejny rekordu danych&lt;br /&gt;
* DAUX2 - zawsze 0&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ta, zwana też TYPE 2 POLL, służy do zainicjowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). W odpowiedzi urządzenie przesyła 12 bajtów odpowiadających kolejnym wartościom, jakie należy ustawić w bloku DCB celem załadowania kodu wykonywalnego handlera. Jest to starszy protokół transmisji zaprojektowany dla komputerów serii [[400]] i [[800]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W module [[850|Atari 850]] odpowiedzią na komendę POLL są wartości, jakie trzeba wstawić do DCB celem wykonania komendy SEND RELOCATOR ($21).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W celu uniknięcia wielokrotnego załadowania tego samego programu obsługi urządzenie na komendę POLL ($3F) odpowiada tylko raz, potem wykonanie komendy jest zablokowane aż do wyłączenia zasilania.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;SEND HIGH SPEED INDEX&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Stacje kompatybilne z [[US Doubler]] w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącą do ustawienia częstotliwości nośnej dla przyspieszonej transmisji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$40 (@)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL BUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$4F (bus master)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4 bajty&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;W komputerach serii XL oraz XE komendę tę system operacyjny przesyła do interfejsu szeregowo-równoległego przy każdym zimnym starcie; w pewnych warunkach - ale z nieco innymi parametrami - może też zostać wykonana po zainicjowaniu systemu. Jest to odpowiednik komendy POLL ($3F), jednak protokół transmisji handlera jest zunifikowany i nie wymaga od urządzenia przesyłania relokatora (uniwersalny relokator rezyduje w ROM-ie systemu operacyjnego). Analogicznie do POLL ($3F), komenda POLL BUS jest przeznaczona do zapoczątkowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). Zasadniczym adresatem jest tu moduł [[1090]] działający jako bus master.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Istnieje kilka odmian komendy POLL BUS różniących się parametrami przesyłanymi w DAUX1 i DAUX2:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TYPE 3 POLL: DAUX1 = 0 i DAUX2 = 0.&lt;br /&gt;
* TYPE 4 POLL: zobacz niżej.&lt;br /&gt;
* RESET POLL: DAUX1 = $4F i DAUX2 = $4F (&amp;quot;OO&amp;quot;)&lt;br /&gt;
* NULL POLL: DAUX1 = $4E i DAUX2 = $4E (&amp;quot;NN&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Przy zimnym starcie na początku system wysyła RESET POLL. Komenda ta powinna odblokować rozpoznawanie komendy TYPE 3 POLL we wszystkich podłączonych urządzeniach. Na RESET POLL urządzenia, oprócz potwierdzenia wykonania, nie przesyłają żadnej odpowiedzi, a komputer jej nie oczekuje.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Następnie system wysyła komendę TYPE 3 POLL. Pozytywna odpowiedź oznacza, że urządzenie nadesłało 4 bajty, z czego dwa pierwsze to ilość pamięci potrzebna do przeprowadzenia całości transmisji (musi to być parzysta wielkość). Jeśli jest to więcej niż dostępna ilość pamięci pomiędzy MEMLO a MEMTOP, system odpowiada przez NULL POLL (podobnie jak w wypadku RESET POLL, urządzenie przesyła tylko potwierdzenie wykonania), a następnie ponownie wysyła TYPE 3 POLL. W przypadku braku pamięci byłaby to pętla nieskończona, ale pojedyncze urządzenie na komendę TYPE 3 POLL może odpowiedzieć tylko raz - pętla jest więc przerywana błędem, który wystąpi po przetestowaniu wszystkich urządzeń zarządzanych przez bus mastera. Ponowna odpowiedź na TYPE 3 POLL jest możliwa dopiero po przesłaniu urządzeniu komendy RESET POLL, inaczej TYPE 3 POLL zostanie zignorowana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Trzeci przysłany bajt to identyfikator urządzenia (dla DDEVIC), które odpowiedziało na komendę i z którym będzie prowadzona dalsza komunikacja.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po stwierdzeniu poprawności odpowiedzi komputer dokonuje rezerwacji pamięci nad wartością MEMLO zaokrągloną w górę do najbliższej granicy słowa i próbuje dokonać odczytu z urządzenia, które się zgłosiło, 128 bajtów pod adres $03FD, przy użyciu innej &amp;quot;nietypowej&amp;quot; komendy, a mianowicie $26 - SEND HANDLER. Po załadowaniu i zainicjowaniu handlera pętla wraca do początku i wykonuje się cyklicznie aż do wystąpienia błędu - czyli do załadowania wszystkich handlerów będących w dyspozycji bus mastera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Procedura ładowania handlera wywoływana jest po procedurze bootowania DOS-u, ale niezależnie od jej wyniku; z czego wniosek, że &amp;quot;handler&amp;quot; może spełniać funkcję zarówno dodatku do DOS-u, jak i zostać załadowany &amp;lt;b&amp;gt;zamiast&amp;lt;/b&amp;gt; DOS-u.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Tą samą drogą można już po całkowitym uruchomieniu systemu, podczas pracy, załadować handler urządzenia &amp;lt;b&amp;gt;konkretnie wskazanego&amp;lt;/b&amp;gt;. Robi to [[CIO]] przy każdorazowej próbie otwarcia pliku na urządzeniu, którego system nie zna (nie ma takiego wpisu w tablicy handlerów).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Odpytanie bus mastera na okoliczność dysponowania takowym handlerem odbywa się za pomocą komendy TYPE 4 POLL. W DAUX1 ma się znajdować identyfikator urządzenia CIO, dla którego to urządzenia potrzebujemy handlera (np. dla magnetofonu $43, czyli &amp;quot;C&amp;quot;), w DAUX2 natomiast przesyła się numer wywoływanego urządzenia (np. dla &amp;quot;C1:&amp;quot; będzie to $01).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONTROL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca linie DTR, RTS i XMT (TX) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 34,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;REGISTER COMMAND&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje zarejestrowanie komendy uzytkownika. Dane powinny zawierać kolejno:&lt;br /&gt;
* kod komendy&lt;br /&gt;
* młodszy bajt adresu w pamięci stacji, gdzie znajduje się podprogram obsługi&lt;br /&gt;
* starszy bajt tego adresu&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli dana komenda jest już jakoś przypisana, to przypisanie zostanie zmienione. Gdy adres ma wartość $0000, komenda zostanie wykasowana z pamięci stacji.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ustawiająca różne parametry pracy (m.in. szybkość transmisji) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 36,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;GET COMMAND BUFFER&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;W stacjach [[XFD601]] i [[XFD602]], zwraca historię ostatnich 32 wywołań na łączu szeregowym. Wszystkich wywołań - nie tylko do stacji. Każdy wpis zawiera 4 bajty - dokładnie te same, jakie są wysyłane do urządzenia zewnetrznego przez komputer, czyli: [[SIO#DCB|DDEVIC]], [[SIO#DCB|DCMND]], [[SIO#DCB|DAUX1]], [[SIO#DCB|DAUX2]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$44 (D)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DISPLAY&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja wyświetlacza stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: wyświetlanie kodów błędów na wyświetlaczu stacji&lt;br /&gt;
* bit 6: wyświetlanie numeru ścieżki w kodzie szesnastkowym&lt;br /&gt;
* bit 5: formatowanie bez weryfikacji&lt;br /&gt;
* bit 4: zablokowanie zapisu struktury logicznej dyskietki po komendzie $20&lt;br /&gt;
* bit 3: niewyłączanie silnika po komendzie $51&lt;br /&gt;
* bit 2: nieużywany&lt;br /&gt;
* bit 1: nieużywany&lt;br /&gt;
* bit 0: sygnał dźwiękowy w wypadku błędu&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$47 (G)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GO TO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$5A ([[ATR 8000]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda pozwala na wywoływanie funkcji zdefiniowanych w ROM-ie modułu [[ATR 8000]] (q.v.).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$48 (H)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;HAPPY CONFIG&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji z rozszerzeniem [[Happy Warp]]. Szczegóły: patrz [[Happy_Warp#Konfiguracja|Happy Warp - Konfiguracja]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$49 (I)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;INDEX FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależnie od wybranej gęstości&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[TOMS Multi Drive]] komenda ta działa tak samo, jak zwykłe formatowanie ($21), z tym wyjątkiem, że do oznaczenia początku ścieżki stacja używa otworu indeksowego (normalnie w stacjach Atari ścieżka zaczyna się tam, gdzie akurat wypadnie). Służy to głównie do zabezpieczania programów przez tzw. synchroniczne ścieżki. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4B (K)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DRIVE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: zapis i odczyt dyskietki bez buforowania (0 po zmianie dyskietki)&lt;br /&gt;
* bit 6: zapis i odczyt ścieżki bez buforowania (0 po zmianie ścieżki)&lt;br /&gt;
* bit 5: nieużywany&lt;br /&gt;
* bit 4: nieużywany&lt;br /&gt;
* bit 3: wyłączenie buforowania ścieżek&lt;br /&gt;
* bit 2: wyłączenie weryfikacji dla komendy $57 (W)&lt;br /&gt;
* bit 1: zapis sektora z pominięciem buforowania&lt;br /&gt;
* bit 0: odczyt sektora z pominięciem buforowania&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4C (L)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP, NO ACKNOWLEDGE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] wywołanie wewnętrznej procedury ROM-u stacji spod adresu przekazanego w DAUX1/2 (młodszy/starszy). Potwierdzenie wykonania rozkazu musi przesłać wywoływany podprogram.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan=2&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP WITH ACKNOWLEDGE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] to samo, to $4C, ale potwierdzenie rozkazu jest przesyłane automatycznie.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;MEDIA CAPACITY INFO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nowe wersje firmware [[Multi I/O]] (od v. 1.4 wzwyż) w odpowiedzi na tę komendę zwracają informację o pojemności wskazanego dysku SCSI w [http://en.wikipedia.org/wiki/SCSI_Read_Capacity_Command tym formacie].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4E (N)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ PERCOM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;12 bajtów ([[SIO#Blok_PERCOM|Blok PERCOM]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia dwunastobajtowy blok danych opisujący jego bieżącą konfigurację, tj. przede wszystkim format znajdującej się w stacji dyskietki.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4F (O)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE PERCOM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zapisuje do urządzenia dwanaście bajtów opisujących żądaną konfigurację, tj. liczbę ścieżek, stron dyskietki, sektorów na ścieżkę, wielkość sektora, gęstość. Przyjąwszy komendę stacja powinna natychmiast przestawić się na żądane ustawienia, o ile jest w stanie je zrealizować.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli zadanych ustawień nie da się zrealizować, stacja w teorii powinna odrzucić przesłany blok danych zgłaszając komputerowi błąd wykonania (co skutkuje [[Kody_błędów_Atari_OS|kodem błędu]] nr 144). W praktyce wiele stacji stosuje uproszczoną procedurę przyjmując parametry najbliższe zdefiniowanym przez przesłany blok danych. Jednak to, że parametry są &amp;quot;najbliższe&amp;quot;, nie oznacza, że muszą być w ogóle bliskie: np. zażądanie formatu 360 KB od stacji [[Top Drive 1050]] spowoduje jej ustawienie się w [[DD]] (180k), bo to jest maximum, jakie stacja jest w stanie zrealizować. Komplikuje to zadanie programom formatującym, które w celu zapisania prawidłowego katalogu muszą sprawdzać, czy żądana od stacji pojemność dyskietki została rzeczywiście wybrana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dyskietkę zgodnie z zapisaną konfiguracją.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ]] IDE nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do definiowania wielkości partycji służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$50 (P)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;PUT SECTOR&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31 i $60&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zapisuje do urządzenia blok danych wskazany przez DBUFA, a zawierający DBYT bajtów. W przypadku stacji dysków jest to zapis bez weryfikacji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SPIN&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Komenda te występuje jako dyskowa na liście rozkazów SIO w dokumentacji sporządzonej przez Atari. Nie znam jednak stacji, która by na nie reagowała. Mogą to być komendy stacji [[810]], jakieś komendy diagnostyczne jej prototypu, albo komendy planowane, lecz nie zaimplementowane. Dostępna dokumentacja nie zawiera ich opisu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$52 (R)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SECTOR&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia blok danych o wielkości DBYT bajtów i zapisuje go w pamięci pod adresem wskazanym przez DBUFA.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$53 (S)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ STATUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wszystkie oprócz magnetofonu&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależna od urządzenia&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia blok statusu i zapisuje go pod adresem wskazanym przez DBUFA. Blok statusu dla RS-232 ma wielkość 2 bajtów, dla drukarki i stacji dysków - 4. Typowo komenda ta służy to stwierdzenia, czy urządzenie jest gotowe do pracy. W przypadku magnetofonu obowiązuje założenie, że jest on zawsze podłączony i gotów, nie ma więc potrzeby sprawdzania jego statusu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ta występuje jako dyskowa na liście rozkazów SIO w dokumentacji sporządzonej przez Atari. Może to być komenda stacji [[810]], jakaś komenda diagnostyczne jej prototypu, albo komenda planowane, lecz nigdy przez Atari nie zaimplementowane. Dostępna dokumentacja nie zawiera jej opisu.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Ze stacji innych producentów, komendę tę rozpoznają stacje [[XFD601]] i [[XFD602]]. Po odebraniu tego rozkazu stacja zwraca tzw. adres pierwszego napotkanego sektora, w formie 6 bajtów: numer scieżki, numer strony, numer sektora, rozmiar sektora, 2 bajty CRC.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$55 (U)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MOTOR ON&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Komenda ta występuje jako dyskowa na liście rozkazów SIO w dokumentacji sporządzonej przez Atari. Nie znam jednak stacji, która by na nie reagowała. Mogą to być komendy stacji [[810]], jakieś komendy diagnostyczne jej prototypu, albo komendy planowane, lecz nie zaimplementowane. Dostępna dokumentacja nie zawiera ich opisu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$56 (V)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VERIFY SECTOR&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Stacja odczytuje sektor wskazany przez DAUX1/2 i zwraca komputerowi informację, czy da się on odczytać bez błędów. Dane zawarte w sektorze nie są transmitowane do komputera. Komenda ta występuje w dokumentacji SIO sporządzonej przez Atari, ale żadna ze stacji marki Atari jej nie rozpoznaje.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan=3&amp;gt;$57 (W)&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;WRITE SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Wszystkie&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;To samo, co PUT SECTOR ($50). W przypadku stacji dysków zapis przeprowadzany jest z weryfikacją.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;W przypadku drukarki długość bufora może wynosić 20, 29 albo 40 znaków (na ogół to ostatnie), a znaczenie DAUX2 jest jak następuje:&lt;br /&gt;
* $4E (N) drukowanie normalne&lt;br /&gt;
* $53 (S) druk obrócony o 90 stopni&lt;br /&gt;
* $44 (D) druk normalny z podwójną szerokością znaków&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Dla interfejsu [[850|Atari 850]] wielkość bufora wynosi 64 bajty.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;STREAM&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda uruchamiająca tryb równoległego wejścia/wyjścia (&amp;lt;i&amp;gt;concurrent I/O&amp;lt;/i&amp;gt;). Interfejs [[850|Atari 850]] w odpowiedzi zwraca sekwencję liczb, według której handler urządzenia &amp;quot;R:&amp;quot; ustawia [[Rejestry_POKEY-a|rejestry układu POKEY]]  (kolejno AUDF,AUDC 1-4 oraz AUDCTL). Przykładowa sekwencja dla szybkości transmisji 300bps jest następująca: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78. Komenda jest używana przez handler przy poleceniu [[CIO]] XIO 40,#i,0,0,&amp;quot;Rn:&amp;quot; (START CONCURRENT MODE I/O).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;DOWNLOAD/EXECUTE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Różna&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda zaimplementowana w stacjach [[Indus GT]], [[LDW Super 2000]] i [[CA-2001]], pozwalająca na przesyłanie do stacji programów użytkownika i uruchamianie ich. Szczegóły: patrz [[Programowanie stacji LDW Super 2000 i CA-2001]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$60 (`)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE TRACK&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] zapis na dyskietkę całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$62 (b)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ TRACK&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] odczyt z dyskietki całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$66 (f)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CUSTOM FORMAT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda formatowania z zadanym przeplotem zaimplementowana w stacjach [[US Doubler]]. Wysyłane 128 bajtów określa:&lt;br /&gt;
* w pierwszych 12 bajtach: zadaną gęstość, tak jak w komendzie WRITE PERCOM&lt;br /&gt;
* następne 18 lub 26 bajtów to fizyczne numery sektorów na ścieżce w zadanej kolejności, licząc od 1.&lt;br /&gt;
&amp;lt;p&amp;gt;Przykładowe przeploty podaje hasło [[Przeplot]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$68 (h)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SIO LEN&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie dwóch bajtów określających wielkość procedury SIO, którą mozna od stacji uzyskać komendą $69. &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$69 (i)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND SIO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wynik komendy $68&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie programu szybkiej transmisji SIO. Bajty DBYT powinny być ustawione na wartość zwróconą przez komendę $68. DAUX1/2 to adres w pamięci Atari, gdzie procedura ma zostać załadowana (stacja dokonuje relokacji kodu pod ten adres przed wysłaniem go do komputera).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B0 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;?&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;?&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wewnętrzna komenda sterownika wbudowanej stacji dysków komputera [[1450XLD]]. Szczegóły nieznane.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B1 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;?&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;?&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wewnętrzna komenda sterownika wbudowanej stacji dysków komputera [[1450XLD]]. Szczegóły nieznane.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$EC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;IDENTIFY DRIVE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;512 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W [[KMK/JŻ IDE]] komenda powoduje odczytanie bloku identyfikacyjnego napędu IDE, na którym założona jest wskazana partycja, i wpisanie go do bufora wskazanego przez DBUFA. Kolejność bajtów w tym bloku jest odwrotna od normalnej, tzn. wszystkie pary bajtów należy zamienić miejscami przed odczytaniem danych z tego bufora - dotyczy to również informacji tekstowej.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit|SIO, Lista kodów operacyjnych]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_kod%C3%B3w_operacyjnych&amp;diff=34999</id>
		<title>Lista komend SIO według kodów operacyjnych</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_kod%C3%B3w_operacyjnych&amp;diff=34999"/>
		<updated>2015-07-14T16:14:06Z</updated>

		<summary type="html">&lt;p&gt;Trub: komendy 850 jak w liście wg funkcji&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Główny artykuł: [[SIO]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$01 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET LARGE MODE&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;large mode&#039;&#039; wewnętrznej stacji dysków komputera Atari [[1450XLD]]. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako logiczną całość liczącą 2080 sektorów po 128 bajtów (260k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$02 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET SMALL MODE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;small mode&#039;&#039; wewnętrznej stacji dysków komputera Atari [[1450XLD]]. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako dwie oddzielne dyskietki liczące po 1040 sektorów po 128 bajtów (= 2x130k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan = 3&amp;gt;$20 (&amp;amp;nbsp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda wymieniana przez niektóre źródła. Szczegóły nieznane.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;AUTOMATIC FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Speedy 1050]] w odpowiedni na tę komendę formatuje dyskietkę w zadanej gęstości (DAUX1 = $00 pojedyncza, $20 podwójna, $80 średnia) i, o ile konfiguracja stacji tego nie zabrania, zapisuje bootsektory i [[VTOC]] zgodne z [[DOS 2.0]] lub (w średniej gęstości) [[DOS 2.5]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;LOAD AND EXECUTE TEST&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości przesyłanego kodu&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda niepublikowana w oficjalnej dokumentacji. Powoduje wczytanie z komputera kodu programu, a następnie uruchomienie go przez interfejs [[850|Atari 850]]. W DAUX1 podawany jest rozmiar przesyłanego kodu. Ze względu na specyfikę procedury odbioru danych, kod powinien być wysyłany od ostatniego do pierwszego bajtu.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DISK&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Formatuje dyskietkę w wybranej uprzednio (komendami PERCOM) gęstości, lub w [[Formaty dyskietek|pojedynczej gęstości]] (90k), jeśli stacja nie jest konfigurowalna. Zwraca listę zawierającą numery wadliwych sektorów (kolejno LSB/MSB) wykrytych w czasie formatowania, zakończoną wartością $FFFF. Niektóre stacje zwracają tu pustą listę ($FFFF, a dalej same zera), nawet jeśli na dyskietce są wadliwe sektory: po prostu dyskietki nie są już tak drogie, jak pod koniec lat siedemdziesiątych XX wieku...&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;SEND RELOCATOR&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg odpowiedzi na komendę POLL ($3F)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jest to komenda uzupełniająca do opisanego niżej POLL ($3F). Powoduje przesłanie przez urządzenie programu odpowiedzialnego za załadowanie (komendą SEND HANDLER) i relokację właściwego handlera. Wszystkie parametry transmisji dla SEND RELOCATOR przesyłane są na komendę POLL ($3F). Program relokatora - po jego załadowaniu - uruchamia się od adresu DBUFA + 6. Przejmuje on na siebie wykonanie reszty operacji, a w wypadku niepowodzenia sygnalizuje błąd przez ustawienie bitu Carry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Komendę SEND RELOCATOR rozpoznaje moduł [[850|Atari 850]], a może dotyczyć też innych urządzeń, oprócz stacji dysków (gdzie kod operacyjny $21 oznacza formatowanie dyskietki).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$22 (&amp;quot;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT MEDIUM&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości średniej]] (130k). Komenda wprowadzona razem ze stacją [[1050]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan = 3&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DSDD&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;256 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości podwójnej dwustronnej]] (360k). Komenda wprowadzona razem ze stacją [[XF551|Atari XF-551]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;FORMAT SKEWED&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda formatowania z szybkim [[przeplot]]em w stacjach [[Indus GT]], [[LDW Super 2000]] oraz [[CA-2001]] z załadowanym [[Synchromesh]]em.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Kod operacyjny jest taki sam, jak komendy formatowania w gęstości [[DSDD]] dla stacji [[XF551]] oraz jednej z komend diagnostycznych w [[1050]].&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;DIAG1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050|Atari 1050]]. Wymaga przesłania 128-bajtowego bloku danych, w którym dwa pierwsze bajty decydują o tym, co stacja będzie robić (DAUX1/2 są ignorowane):&amp;lt;/p&amp;gt;&lt;br /&gt;
* $02 - test przejścia głowicy między ścieżkami&lt;br /&gt;
* $03 - przesuw głowicy za pomocą silnika krokowego o jeden krok w przód lub w tył; o kierunku decyduje następny bajt, wartość dodatnia (np. $01) powoduje przesuw w przód - czyli w kierunku ścieżki 39 - a wartość ujemna (np. $FF) przesuw wstecz, czyli w kierunku ścieżki 0. &amp;quot;Krok&amp;quot; silnika krokowego w tym wypadku to połowa odległości między ścieżkami, żeby więc tą komendą przesunąć głowicę na sąsiednią ścieżkę, trzeba zrobić to dwa razy. Uwaga: możliwe jest cofnięcie głowicy wstecz od ścieżki 0 (na tzw. ścieżkę -1).&lt;br /&gt;
* $04 - test zapisu i odczytu dyskietki; formatuje znajdującą się w stacji dyskietkę w średniej gęstości.&lt;br /&gt;
* $05 - przesuw główicy do ścieżki o numerze podanym w następnym bajcie.&lt;br /&gt;
&amp;lt;p&amp;gt;Jest to również komenda DRIVE DIAGNOSTIC IN wewnętrznej stacji Atari [[1450XLD]]. Szczegóły działania nieznane, poza tym że ma zapisywać do stacji zawartość bufora o bliżej nieokreślonej zawartości.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;UWAGA: kod operacyjny ($23) jest taki sam, jak kod komendy formatowania w stacji [[XF551|Atari XF-551]] oraz [[LDW Super 2000]] i [[CA-2001]] z załadowanym [[Synchromesh]]em!&#039;&#039;&#039;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050]], służy do pomiaru prędkości obrotowej dyskietki. W zależności od wartości dwóch pierwszych bajtów przesłanego bloku danych ($00, $00 lub $00, $01) stacja przesyła czas jednego obrotu dyskietki lub wartość prędkości obrotowej w obrotach na minutę.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Jest to również komenda DRIVE DIAGNOSTIC OUT wewnętrznej stacji Atari [[1450XLD]]. Szczegóły działania nieznane, poza tym że ma odczytywać ze stacji do 128-bajtowego bufora bliżej nieokreślone dane diagnostyczne.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$26 (&amp;amp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HANDLER&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator przesłany przez SEND RELOCATOR ($21) lub wg odpowiedzi na komendę POLL BUS ($40)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator (przesłany przez urządzenie lub rezydujący)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda SEND HANDLER służy do załadowania z urządzenia kodu programu obsługi (handlera) tego urządzenia. Może ona działać różnie w zależności od tego, czy transmisja została zainicjowana przez komendę POLL ($3F) czy POLL BUS ($40).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL ($3F) oznacza starszy protokół transmisji, w którym format strumienia danych przesłanych przez SEND HANDLER zależny jest od programu relokatora załadowanego wcześniej komendą SEND RELOCATOR ($21) i uruchomionego przez komputer.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL BUS ($40) oznacza nowszy protokół transmisji. Format strumienia danych jest ustalony z góry, a relokator rezyduje w ROM-ie systemu operacyjnego komputera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po otrzymaniu pozytywnej odpowiedzi na POLL BUS ($40) komputer rozpoczyna ładowanie kolejnych, 128-bajtowych rekordów binarnych, w liczbie do 256 (czyli pojedynczy &amp;quot;handler&amp;quot; może mieć maximum 32k). Przesyłany strumień danych musi być w [[ACX|specjalnym formacie]], który zapewnia relokowalność kodu, oraz zawiera podany explicite znacznik końca pliku - wystąpienie błędu przed napotkaniem tego znacznika powoduje przerwanie procedury z [[kody błędów|kodem błędu]] INCOMPLETE EXECUTION.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Ustawienia zmiennych DCB dla komendy SEND HANDLER wyglądają następująco:&amp;lt;/p&amp;gt;&lt;br /&gt;
* DDEVIC - kod urządzenia przesłany przez urządzenie $4F na komendę POLL BUS.&lt;br /&gt;
* DUNIT - zawsze $01&lt;br /&gt;
* DCMND - $26 - SEND HANDLER&lt;br /&gt;
* DSTATS - $40 - odczyt&lt;br /&gt;
* DTIMLO - 30 sekund&lt;br /&gt;
* DBYT - 128 bajtów&lt;br /&gt;
* DAUX1 - numer kolejny rekordu danych&lt;br /&gt;
* DAUX2 - zawsze 0&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ta, zwana też TYPE 2 POLL, służy do zainicjowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). W odpowiedzi urządzenie przesyła 12 bajtów odpowiadających kolejnym wartościom, jakie należy ustawić w bloku DCB celem załadowania kodu wykonywalnego handlera. Jest to starszy protokół transmisji zaprojektowany dla komputerów serii [[400]] i [[800]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W module [[850|Atari 850]] odpowiedzią na komendę POLL są wartości, jakie trzeba wstawić do DCB celem wykonania komendy SEND RELOCATOR ($21).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W celu uniknięcia wielokrotnego załadowania tego samego programu obsługi urządzenie na komendę POLL ($3F) odpowiada tylko raz, potem wykonanie komendy jest zablokowane aż do wyłączenia zasilania.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;SEND HIGH SPEED INDEX&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Stacje kompatybilne z [[US Doubler]] w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącą do ustawienia częstotliwości nośnej dla przyspieszonej transmisji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$40 (@)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL BUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$4F (bus master)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4 bajty&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;W komputerach serii XL oraz XE komendę tę system operacyjny przesyła do interfejsu szeregowo-równoległego przy każdym zimnym starcie; w pewnych warunkach - ale z nieco innymi parametrami - może też zostać wykonana po zainicjowaniu systemu. Jest to odpowiednik komendy POLL ($3F), jednak protokół transmisji handlera jest zunifikowany i nie wymaga od urządzenia przesyłania relokatora (uniwersalny relokator rezyduje w ROM-ie systemu operacyjnego). Analogicznie do POLL ($3F), komenda POLL BUS jest przeznaczona do zapoczątkowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). Zasadniczym adresatem jest tu moduł [[1090]] działający jako bus master.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Istnieje kilka odmian komendy POLL BUS różniących się parametrami przesyłanymi w DAUX1 i DAUX2:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TYPE 3 POLL: DAUX1 = 0 i DAUX2 = 0.&lt;br /&gt;
* TYPE 4 POLL: zobacz niżej.&lt;br /&gt;
* RESET POLL: DAUX1 = $4F i DAUX2 = $4F (&amp;quot;OO&amp;quot;)&lt;br /&gt;
* NULL POLL: DAUX1 = $4E i DAUX2 = $4E (&amp;quot;NN&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Przy zimnym starcie na początku system wysyła RESET POLL. Komenda ta powinna odblokować rozpoznawanie komendy TYPE 3 POLL we wszystkich podłączonych urządzeniach. Na RESET POLL urządzenia, oprócz potwierdzenia wykonania, nie przesyłają żadnej odpowiedzi, a komputer jej nie oczekuje.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Następnie system wysyła komendę TYPE 3 POLL. Pozytywna odpowiedź oznacza, że urządzenie nadesłało 4 bajty, z czego dwa pierwsze to ilość pamięci potrzebna do przeprowadzenia całości transmisji (musi to być parzysta wielkość). Jeśli jest to więcej niż dostępna ilość pamięci pomiędzy MEMLO a MEMTOP, system odpowiada przez NULL POLL (podobnie jak w wypadku RESET POLL, urządzenie przesyła tylko potwierdzenie wykonania), a następnie ponownie wysyła TYPE 3 POLL. W przypadku braku pamięci byłaby to pętla nieskończona, ale pojedyncze urządzenie na komendę TYPE 3 POLL może odpowiedzieć tylko raz - pętla jest więc przerywana błędem, który wystąpi po przetestowaniu wszystkich urządzeń zarządzanych przez bus mastera. Ponowna odpowiedź na TYPE 3 POLL jest możliwa dopiero po przesłaniu urządzeniu komendy RESET POLL, inaczej TYPE 3 POLL zostanie zignorowana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Trzeci przysłany bajt to identyfikator urządzenia (dla DDEVIC), które odpowiedziało na komendę i z którym będzie prowadzona dalsza komunikacja.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po stwierdzeniu poprawności odpowiedzi komputer dokonuje rezerwacji pamięci nad wartością MEMLO zaokrągloną w górę do najbliższej granicy słowa i próbuje dokonać odczytu z urządzenia, które się zgłosiło, 128 bajtów pod adres $03FD, przy użyciu innej &amp;quot;nietypowej&amp;quot; komendy, a mianowicie $26 - SEND HANDLER. Po załadowaniu i zainicjowaniu handlera pętla wraca do początku i wykonuje się cyklicznie aż do wystąpienia błędu - czyli do załadowania wszystkich handlerów będących w dyspozycji bus mastera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Procedura ładowania handlera wywoływana jest po procedurze bootowania DOS-u, ale niezależnie od jej wyniku; z czego wniosek, że &amp;quot;handler&amp;quot; może spełniać funkcję zarówno dodatku do DOS-u, jak i zostać załadowany &amp;lt;b&amp;gt;zamiast&amp;lt;/b&amp;gt; DOS-u.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Tą samą drogą można już po całkowitym uruchomieniu systemu, podczas pracy, załadować handler urządzenia &amp;lt;b&amp;gt;konkretnie wskazanego&amp;lt;/b&amp;gt;. Robi to [[CIO]] przy każdorazowej próbie otwarcia pliku na urządzeniu, którego system nie zna (nie ma takiego wpisu w tablicy handlerów).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Odpytanie bus mastera na okoliczność dysponowania takowym handlerem odbywa się za pomocą komendy TYPE 4 POLL. W DAUX1 ma się znajdować identyfikator urządzenia CIO, dla którego to urządzenia potrzebujemy handlera (np. dla magnetofonu $43, czyli &amp;quot;C&amp;quot;), w DAUX2 natomiast przesyła się numer wywoływanego urządzenia (np. dla &amp;quot;C1:&amp;quot; będzie to $01).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONTROL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca linie DTR, RTS i XMT (TX) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 34,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;REGISTER COMMAND&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje zarejestrowanie komendy uzytkownika. Dane powinny zawierać kolejno:&lt;br /&gt;
* kod komendy&lt;br /&gt;
* młodszy bajt adresu w pamięci stacji, gdzie znajduje się podprogram obsługi&lt;br /&gt;
* starszy bajt tego adresu&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli dana komenda jest już jakoś przypisana, to przypisanie zostanie zmienione. Gdy adres ma wartość $0000, komenda zostanie wykasowana z pamięci stacji.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ustawiająca różne parametry pracy (m.in. szybkość transmisji) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 36,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;GET COMMAND BUFFER&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;W stacjach [[XFD601]] i [[XFD602]], zwraca historię ostatnich 32 wywołań na łączu szeregowym. Wszystkich wywołań - nie tylko do stacji. Każdy wpis zawiera 4 bajty - dokładnie te same, jakie są wysyłane do urządzenia zewnetrznego przez komputer, czyli: [[SIO#DCB|DDEVIC]], [[SIO#DCB|DCMND]], [[SIO#DCB|DAUX1]], [[SIO#DCB|DAUX2]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$44 (D)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DISPLAY&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja wyświetlacza stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: wyświetlanie kodów błędów na wyświetlaczu stacji&lt;br /&gt;
* bit 6: wyświetlanie numeru ścieżki w kodzie szesnastkowym&lt;br /&gt;
* bit 5: formatowanie bez weryfikacji&lt;br /&gt;
* bit 4: zablokowanie zapisu struktury logicznej dyskietki po komendzie $20&lt;br /&gt;
* bit 3: niewyłączanie silnika po komendzie $51&lt;br /&gt;
* bit 2: nieużywany&lt;br /&gt;
* bit 1: nieużywany&lt;br /&gt;
* bit 0: sygnał dźwiękowy w wypadku błędu&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$47 (G)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GO TO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$5A ([[ATR 8000]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda pozwala na wywoływanie funkcji zdefiniowanych w ROM-ie modułu [[ATR 8000]] (q.v.).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$48 (H)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;HAPPY CONFIG&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji z rozszerzeniem [[Happy Warp]]. Szczegóły: patrz [[Happy_Warp#Konfiguracja|Happy Warp - Konfiguracja]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$49 (I)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;INDEX FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależnie od wybranej gęstości&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[TOMS Multi Drive]] komenda ta działa tak samo, jak zwykłe formatowanie ($21), z tym wyjątkiem, że do oznaczenia początku ścieżki stacja używa otworu indeksowego (normalnie w stacjach Atari ścieżka zaczyna się tam, gdzie akurat wypadnie). Służy to głównie do zabezpieczania programów przez tzw. synchroniczne ścieżki. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4B (K)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DRIVE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: zapis i odczyt dyskietki bez buforowania (0 po zmianie dyskietki)&lt;br /&gt;
* bit 6: zapis i odczyt ścieżki bez buforowania (0 po zmianie ścieżki)&lt;br /&gt;
* bit 5: nieużywany&lt;br /&gt;
* bit 4: nieużywany&lt;br /&gt;
* bit 3: wyłączenie buforowania ścieżek&lt;br /&gt;
* bit 2: wyłączenie weryfikacji dla komendy $57 (W)&lt;br /&gt;
* bit 1: zapis sektora z pominięciem buforowania&lt;br /&gt;
* bit 0: odczyt sektora z pominięciem buforowania&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4C (L)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP, NO ACKNOWLEDGE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] wywołanie wewnętrznej procedury ROM-u stacji spod adresu przekazanego w DAUX1/2 (młodszy/starszy). Potwierdzenie wykonania rozkazu musi przesłać wywoływany podprogram.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan=2&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP WITH ACKNOWLEDGE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] to samo, to $4C, ale potwierdzenie rozkazu jest przesyłane automatycznie.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;MEDIA CAPACITY INFO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nowe wersje firmware [[Multi I/O]] (od v. 1.4 wzwyż) w odpowiedzi na tę komendę zwracają informację o pojemności wskazanego dysku SCSI w [http://en.wikipedia.org/wiki/SCSI_Read_Capacity_Command tym formacie].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4E (N)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ PERCOM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;12 bajtów ([[SIO#Blok_PERCOM|Blok PERCOM]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia dwunastobajtowy blok danych opisujący jego bieżącą konfigurację, tj. przede wszystkim format znajdującej się w stacji dyskietki.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4F (O)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE PERCOM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zapisuje do urządzenia dwanaście bajtów opisujących żądaną konfigurację, tj. liczbę ścieżek, stron dyskietki, sektorów na ścieżkę, wielkość sektora, gęstość. Przyjąwszy komendę stacja powinna natychmiast przestawić się na żądane ustawienia, o ile jest w stanie je zrealizować.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli zadanych ustawień nie da się zrealizować, stacja w teorii powinna odrzucić przesłany blok danych zgłaszając komputerowi błąd wykonania (co skutkuje [[Kody_błędów_Atari_OS|kodem błędu]] nr 144). W praktyce wiele stacji stosuje uproszczoną procedurę przyjmując parametry najbliższe zdefiniowanym przez przesłany blok danych. Jednak to, że parametry są &amp;quot;najbliższe&amp;quot;, nie oznacza, że muszą być w ogóle bliskie: np. zażądanie formatu 360 KB od stacji [[Top Drive 1050]] spowoduje jej ustawienie się w [[DD]] (180k), bo to jest maximum, jakie stacja jest w stanie zrealizować. Komplikuje to zadanie programom formatującym, które w celu zapisania prawidłowego katalogu muszą sprawdzać, czy żądana od stacji pojemność dyskietki została rzeczywiście wybrana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dyskietkę zgodnie z zapisaną konfiguracją.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ]] IDE nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do definiowania wielkości partycji służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$50 (P)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;PUT SECTOR&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31 i $60&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zapisuje do urządzenia blok danych wskazany przez DBUFA, a zawierający DBYT bajtów. W przypadku stacji dysków jest to zapis bez weryfikacji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SPIN&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Komenda te występuje jako dyskowa na liście rozkazów SIO w dokumentacji sporządzonej przez Atari. Nie znam jednak stacji, która by na nie reagowała. Mogą to być komendy stacji [[810]], jakieś komendy diagnostyczne jej prototypu, albo komendy planowane, lecz nie zaimplementowane. Dostępna dokumentacja nie zawiera ich opisu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$52 (R)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SECTOR&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia blok danych o wielkości DBYT bajtów i zapisuje go w pamięci pod adresem wskazanym przez DBUFA.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$53 (S)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ STATUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wszystkie oprócz magnetofonu&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależna od urządzenia&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia blok statusu i zapisuje go pod adresem wskazanym przez DBUFA. Blok statusu dla RS-232 ma wielkość 2 bajtów, dla drukarki i stacji dysków - 4. Typowo komenda ta służy to stwierdzenia, czy urządzenie jest gotowe do pracy. W przypadku magnetofonu obowiązuje założenie, że jest on zawsze podłączony i gotów, nie ma więc potrzeby sprawdzania jego statusu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ta występuje jako dyskowa na liście rozkazów SIO w dokumentacji sporządzonej przez Atari. Może to być komenda stacji [[810]], jakaś komenda diagnostyczne jej prototypu, albo komenda planowane, lecz nigdy przez Atari nie zaimplementowane. Dostępna dokumentacja nie zawiera jej opisu.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Ze stacji innych producentów, komendę tę rozpoznają stacje [[XFD601]] i [[XFD602]]. Po odebraniu tego rozkazu stacja zwraca tzw. adres pierwszego napotkanego sektora, w formie 6 bajtów: numer scieżki, numer strony, numer sektora, rozmiar sektora, 2 bajty CRC.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$55 (U)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MOTOR ON&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Komenda ta występuje jako dyskowa na liście rozkazów SIO w dokumentacji sporządzonej przez Atari. Nie znam jednak stacji, która by na nie reagowała. Mogą to być komendy stacji [[810]], jakieś komendy diagnostyczne jej prototypu, albo komendy planowane, lecz nie zaimplementowane. Dostępna dokumentacja nie zawiera ich opisu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$56 (V)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VERIFY SECTOR&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Stacja odczytuje sektor wskazany przez DAUX1/2 i zwraca komputerowi informację, czy da się on odczytać bez błędów. Dane zawarte w sektorze nie są transmitowane do komputera. Komenda ta występuje w dokumentacji SIO sporządzonej przez Atari, ale żadna ze stacji marki Atari jej nie rozpoznaje.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan=3&amp;gt;$57 (W)&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;WRITE SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Wszystkie&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;To samo, co PUT SECTOR ($50). W przypadku stacji dysków zapis przeprowadzany jest z weryfikacją.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;W przypadku drukarki długość bufora może wynosić 20, 29 albo 40 znaków (na ogół to ostatnie), a znaczenie DAUX2 jest jak następuje:&lt;br /&gt;
* $4E (N) drukowanie normalne&lt;br /&gt;
* $53 (S) druk obrócony o 90 stopni&lt;br /&gt;
* $44 (D) druk normalny z podwójną szerokością znaków&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Dla interfejsu [[850|Atari 850]] wielkość bufora wynosi 64 bajty.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;STREAM&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda uruchamiająca tryb równoległego wejścia/wyjścia (&amp;lt;i&amp;gt;concurrent I/O&amp;lt;/i&amp;gt;). Interfejs [[850|Atari 850]] w odpowiedzi zwraca sekwencję liczb, według której handler urządzenia &amp;quot;R:&amp;quot; ustawia [[Rejestry_POKEY-a|rejestry układu POKEY]]  (kolejno AUDF,AUDC 1-4 oraz AUDCTL). Przykładowa sekwencja dla szybkości transmisji 300bps jest następująca: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78. Komenda jest używana przez handler przy poleceniu [[CIO]] XIO 40,#i,0,0,&amp;quot;Rn:&amp;quot; (START CONCURRENT MODE I/O).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;DOWNLOAD/EXECUTE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Różna&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda zaimplementowana w stacjach [[Indus GT]], [[LDW Super 2000]] i [[CA-2001]], pozwalająca na przesyłanie do stacji programów użytkownika i uruchamianie ich. Szczegóły: patrz [[Programowanie stacji LDW Super 2000 i CA-2001]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$60 (`)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE TRACK&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] zapis na dyskietkę całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$62 (b)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ TRACK&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] odczyt z dyskietki całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$66 (f)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CUSTOM FORMAT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda formatowania z zadanym przeplotem zaimplementowana w stacjach [[US Doubler]]. Wysyłane 128 bajtów określa:&lt;br /&gt;
* w pierwszych 12 bajtach: zadaną gęstość, tak jak w komendzie WRITE PERCOM&lt;br /&gt;
* następne 18 lub 26 bajtów to fizyczne numery sektorów na ścieżce w zadanej kolejności, licząc od 1.&lt;br /&gt;
&amp;lt;p&amp;gt;Przykładowe przeploty podaje hasło [[Przeplot]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$68 (h)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SIO LEN&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie dwóch bajtów określających wielkość procedury SIO, którą mozna od stacji uzyskać komendą $69. &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$69 (i)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND SIO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wynik komendy $68&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie programu szybkiej transmisji SIO. Bajty DBYT powinny być ustawione na wartość zwróconą przez komendę $68. DAUX1/2 to adres w pamięci Atari, gdzie procedura ma zostać załadowana (stacja dokonuje relokacji kodu pod ten adres przed wysłaniem go do komputera).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B0 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;?&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;?&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wewnętrzna komenda sterownika wbudowanej stacji dysków komputera [[1450XLD]]. Szczegóły nieznane.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B1 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;?&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;?&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wewnętrzna komenda sterownika wbudowanej stacji dysków komputera [[1450XLD]]. Szczegóły nieznane.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$EC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;IDENTIFY DRIVE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;512 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W [[KMK/JŻ IDE]] komenda powoduje odczytanie bloku identyfikacyjnego napędu IDE, na którym założona jest wskazana partycja, i wpisanie go do bufora wskazanego przez DBUFA. Kolejność bajtów w tym bloku jest odwrotna od normalnej, tzn. wszystkie pary bajtów należy zamienić miejscami przed odczytaniem danych z tego bufora - dotyczy to również informacji tekstowej.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit|SIO, Lista kodów operacyjnych]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=850&amp;diff=34997</id>
		<title>850</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=850&amp;diff=34997"/>
		<updated>2015-07-11T20:16:43Z</updated>

		<summary type="html">&lt;p&gt;Trub: Więcej o obsłudze drukarki i ładowaniu handlera&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://atariki.krap.pl/img/atari850.jpg  http://atariki.krap.pl/img/atari850-metal.jpg&lt;br /&gt;
&lt;br /&gt;
Interfejs przeznaczony zasadniczo dla serii [[400/800]], ale współpracujący ze wszystkimi modelami [[Atari 8-bit|ośmiobitowych Atari]], który rozszerza je o cztery szeregowe interfejsy [http://pl.wikipedia.org/wiki/RS-232 RS-232C] (gniazdo 9 PIN, różne jednak od powszechnie stosowanego w komputerach PC jeżeli chodzi o rozmieszczenie sygnałów) i jeden równoległy interfejs w standardzie Centronics (gniazdo 15 PIN). Urządzenie zawiera mikroprocesor [[6507]], dwa układy wejścia/wyjścia [[6532]] i pamięć ROM z firmware (4kB). Pierwsze egzemplarze miały czarną, metalową obudowę, późniejsze modele natomiast współgrają wzorniczo z linią 400/800.&lt;br /&gt;
&lt;br /&gt;
Interfejs 850 jest standardem, jeśli chodzi o obsługę portów RS232C w małym Atari: współpracują z nim prawie wszystkie programy telekomunikacyjne, a podobne interfejsy innych producentów (np. [[Multi I/O]] czy [[P:R: Connection]]) są z nim kompatybilne.&lt;br /&gt;
&lt;br /&gt;
Do współpracy z interfejsem w systemie operacyjnym musi być zainstalowany odpowiedni sterownik (&amp;quot;R:&amp;quot;, patrz [[CIO]]). Sterownik jest zawarty w samym interfejsie, ten zaś udostępnia go komputerowi na żądanie. Sposób, w jaki się to odbywa, jest zależny od [[DOS]]-u, np. [[SpartaDOS]] ma polecenie &#039;&#039;&#039;RS232&#039;&#039;&#039;, za którego pomocą użytkownik może &amp;quot;ściągnąć&amp;quot; z interfejsu program obsługi i zainstalować go w systemie. Jest to realizowane za pomocą mechanizmu TYPE 2 POLL (patrz [[Lista_komend_SIO_według_funkcji#Komendy_specjalne|Komendy specjalne SIO]]). Ponadto przy starcie komputera, w przypadku, kiedy DOS-u nie ma, ani nie jest podłączona stacja dysków, sterownik jest ładowany i instalowany automatycznie. W tym celu interfejs emuluje odczyt wstępny ze stacji.&lt;br /&gt;
&lt;br /&gt;
Obsługa portu Centronics nie wymaga ładowania sterownika, używany jest handler drukarki w systemie operacyjnym komputera. Interfejs reaguje na urządzenia [[CIO]] o identyfikatorach P1: i P2:.&lt;br /&gt;
&lt;br /&gt;
===Porty szeregowe RS-232===&lt;br /&gt;
&lt;br /&gt;
Interfejs ma cztery porty szeregowe RS232C. Wyprowadzone są one na zewnątrz jako żeńskie (!) gniazda DB9, i oznaczone kolejno od lewej do prawej jako R4:, R3:, R2: i R1:. Sygnały rozmieszczone są inaczej niż w typowym gniazdku RS-232, poszczególne porty różnią się też między sobą.&lt;br /&gt;
&lt;br /&gt;
Parametry transmisji są następujące:&lt;br /&gt;
&lt;br /&gt;
* 1 bit startu&lt;br /&gt;
* 1 lub 2 bity stopu&lt;br /&gt;
* 5, 6, 7 lub 8 bitów danych&lt;br /&gt;
* prędkość transmisji 75, 110, 134.5, 150, 300, 600, 1200, 1800, 2400, 4800, 9600 bps&lt;br /&gt;
&lt;br /&gt;
====Port R1:====&lt;br /&gt;
&lt;br /&gt;
Po lewej port R1: interfejsu 850, po prawej - dla porównania - typowe gniazdo DB9 (męskie) znane z [[TT030|Atari TT030]] lub PC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     1           5                 1           5&lt;br /&gt;
       o o o o o                     o o o o o&lt;br /&gt;
&lt;br /&gt;
        o o o o                       o o o o&lt;br /&gt;
      6         9                   6         9&lt;br /&gt;
&lt;br /&gt;
 1. GND         6. N/C          1. DCD         6. DSR&lt;br /&gt;
 2. RX          7. CTS          2. RX          7. RTS&lt;br /&gt;
 3. TX          8. RTS          3. TX          8. CTS&lt;br /&gt;
 4. DCD         9. DSR          4. DTR         9. RI&lt;br /&gt;
 5. DTR                         5. GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[grafika:850-port-1.gif]]&lt;br /&gt;
&lt;br /&gt;
====Porty R2: i R3:====&lt;br /&gt;
&lt;br /&gt;
Po lewej port R2: i R3: interfejsu 850, po prawej - dla porównania - typowe gniazdo DB9 (męskie) znane z [[TT030|Atari TT030]] lub PC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     1           5                 1           5&lt;br /&gt;
       o o o o o                     o o o o o&lt;br /&gt;
&lt;br /&gt;
        o o o o                       o o o o&lt;br /&gt;
      6         9                   6         9&lt;br /&gt;
&lt;br /&gt;
 1. GND         6. N/C          1. DCD         6. DSR&lt;br /&gt;
 2. RX          7. N/C          2. RX          7. RTS&lt;br /&gt;
 3. TX          8. N/C          3. TX          8. CTS&lt;br /&gt;
 4. N/C         9. DSR          4. DTR         9. RI&lt;br /&gt;
 5. DTR                         5. GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[grafika:850-port-2.gif]]&lt;br /&gt;
&lt;br /&gt;
====Port R4:====&lt;br /&gt;
&lt;br /&gt;
Po lewej port R4: interfejsu 850, po prawej - dla porównania - typowe gniazdo DB9 (męskie) znane z [[TT030|Atari TT030]] lub PC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     1           5                 1           5&lt;br /&gt;
       o o o o o                     o o o o o&lt;br /&gt;
&lt;br /&gt;
        o o o o                       o o o o&lt;br /&gt;
      6         9                   6         9&lt;br /&gt;
&lt;br /&gt;
 1. GND         6. -8 V         1. DCD         6. DSR&lt;br /&gt;
 2. RX          7. N/C          2. RX          7. RTS&lt;br /&gt;
 3. TX          8. RTS          3. TX          8. CTS&lt;br /&gt;
 4. N/C         9. N/C          4. DTR         9. RI&lt;br /&gt;
 5. DTR                         5. GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[grafika:850-port-4.gif]]&lt;br /&gt;
&lt;br /&gt;
===Port Centronics (P:)===&lt;br /&gt;
&lt;br /&gt;
Zastosowane w [[850]] gniazdo Centronics, tak samo jak gniazda RS-232-C, różni się od powszechnie stosowanych. Jest to gniazdo żeńskie, schemat poniżej. Jest przeznaczone przede wszystkim do podłączania drukarki [[825|Atari 825]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     1                 8&lt;br /&gt;
       o o o o o o o o&lt;br /&gt;
&lt;br /&gt;
        o o o o o o o&lt;br /&gt;
      9               15&lt;br /&gt;
&lt;br /&gt;
 1. D6                  9. D7&lt;br /&gt;
 2. D5                 10. N/C&lt;br /&gt;
 3. D4                 11. BUSY&lt;br /&gt;
 4. D3                 12. FAULT&lt;br /&gt;
 5. D2                 13. GND&lt;br /&gt;
 6. D1                 14. N/C&lt;br /&gt;
 7. D0                 15. +5 V&lt;br /&gt;
 8. Data Strobe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Zobacz też===&lt;br /&gt;
&lt;br /&gt;
* [http://krap.pl/mirrorz/atari/www.strotmann.de/twiki/pub/Infothek/AtariEightfivesirro/850ATARI.pdf Atari 850 Operator&#039;s Manual]&lt;br /&gt;
* [http://krap.pl/mirrorz/atari/www.strotmann.de/twiki/bin/view/Infothek/AtariEightFiftyFm Atari 850 Service Manual]&lt;br /&gt;
* [[Multi I/O]]&lt;br /&gt;
* [[Lista_komend_SIO_według_funkcji#Atari_850|Lista komend SIO specyficznych dla Atari 850]]&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Peryferia 8-bit]]&lt;br /&gt;
[[Kategoria:Schematy i specyfikacje]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34996</id>
		<title>Lista komend SIO według funkcji</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34996"/>
		<updated>2015-07-11T19:47:29Z</updated>

		<summary type="html">&lt;p&gt;Trub: /* Atari 850 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Główny artykuł: [[SIO]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Podstawowy zestaw komend====&lt;br /&gt;
&lt;br /&gt;
Poniższa tabela wyszczególnia podstawowe minimum komend rozpoznawanych przez urządzenia peryferyjne Atari.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DISK&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Formatuje dyskietkę w wybranej uprzednio (komendami PERCOM) gęstości, lub w [[Formaty dyskietek|pojedynczej gęstości]] (90k), jeśli stacja nie jest konfigurowalna. Zwraca listę zawierającą numery wadliwych sektorów (kolejno LSB/MSB) wykrytych w czasie formatowania, zakończoną wartością $FFFF. Niektóre stacje zwracają tu pustą listę ($FFFF, a dalej same zera), nawet jeśli na dyskietce są wadliwe sektory: po prostu dyskietki nie są już tak drogie, jak pod koniec lat siedemdziesiątych XX wieku...&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$50 (P)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;PUT SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31 i $60&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zapisuje do urządzenia blok danych wskazany przez DBUFA, a zawierający DBYT bajtów. W przypadku stacji dysków jest to zapis bez weryfikacji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$52 (R)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SECTOR&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Odczytuje z urządzenia blok danych o wielkości DBYT bajtów i zapisuje go w pamięci pod adresem wskazanym przez DBUFA.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$53 (S)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ STATUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wszystkie oprócz magnetofonu&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależna od urządzenia&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia blok statusu i zapisuje go pod adresem wskazanym przez DBUFA. Blok statusu dla RS-232 ma wielkość 2 bajtów, dla drukarki i stacji dysków - 4. Typowo komenda ta służy to stwierdzenia, czy urządzenie jest gotowe do pracy. W przypadku magnetofonu obowiązuje założenie, że jest on zawsze podłączony i gotów, nie ma więc potrzeby sprawdzania jego statusu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan=3&amp;gt;$57 (W)&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;WRITE SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Wszystkie&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;To samo, co PUT SECTOR ($50). W przypadku stacji dysków zapis przeprowadzany jest z weryfikacją.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;W przypadku drukarki długość bufora może wynosić 20, 29 albo 40 znaków (na ogół to ostatnie), a znaczenie DAUX2 jest jak następuje:&lt;br /&gt;
* $4E (N) drukowanie normalne&lt;br /&gt;
* $53 (S) druk obrócony o 90 stopni&lt;br /&gt;
* $44 (D) druk normalny z podwójną szerokością znaków&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Dla interfejsu [[850|Atari 850]] wielkość bufora wynosi 64 bajty.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy dodatkowe====&lt;br /&gt;
&lt;br /&gt;
Rozpoznawane przez urządzenia peryferyjne Atari komendy dodatkowe w stosunku do powyżej wspomnianego niezbędnego minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$22 (&amp;quot;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT MEDIUM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości średniej]] (130k). Komenda wprowadzona razem ze stacją [[1050]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DSDD&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;256 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości podwójnej dwustronnej]] (360k). Komenda wprowadzona razem ze stacją [[XF551|Atari XF-551]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy PERCOM====&lt;br /&gt;
&lt;br /&gt;
Komendy PERCOM noszą nazwę od stacji dysków firmy [[Percom Data Corp.|PERCOM]], w których po raz pierwszy się pojawiły. Nie są rozpoznawane przez stacje dysków firmy Atari (z wyjątkiem [[XF551|Atari XF-551]]), są jednak zaimplementowane we wszystkich rozszerzeniach oraz stacjach innych producentów i stanowią de facto standard.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4E (N)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ PERCOM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;12 bajtów ([[SIO#Blok_PERCOM|Blok PERCOM]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia dwunastobajtowy blok danych opisujący jego bieżącą konfigurację, tj. przede wszystkim format znajdującej się w stacji dyskietki.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4F (O)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE PERCOM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zapisuje do urządzenia dwanaście bajtów opisujących żądaną konfigurację, tj. liczbę ścieżek, stron dyskietki, sektorów na ścieżkę, wielkość sektora, gęstość. Przyjąwszy komendę stacja powinna natychmiast przestawić się na żądane ustawienia, o ile jest w stanie je zrealizować.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli zadanych ustawień nie da się zrealizować, stacja w teorii powinna odrzucić przesłany blok danych zgłaszając komputerowi błąd wykonania (co skutkuje [[Kody_błędów_Atari_OS|kodem błędu]] nr 144). W praktyce wiele stacji stosuje uproszczoną procedurę przyjmując parametry najbliższe zdefiniowanym przez przesłany blok danych. Jednak to, że parametry są &amp;quot;najbliższe&amp;quot;, nie oznacza, że muszą być w ogóle bliskie: np. zażądanie formatu 360 KB od stacji [[Top Drive 1050]] spowoduje jej ustawienie się w [[DD]] (180k), bo to jest maximum, jakie stacja jest w stanie zrealizować. Komplikuje to zadanie programom formatującym, które w celu zapisania prawidłowego katalogu muszą sprawdzać, czy żądana od stacji pojemność dyskietki została rzeczywiście wybrana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dyskietkę zgodnie z zapisaną konfiguracją.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ]] IDE nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do definiowania wielkości partycji służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy specjalne====&lt;br /&gt;
&lt;br /&gt;
Komendy wspomagające automatyczną instalację w systemie handlerów podłączonych urządzeń zewnętrznych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND RELOCATOR&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg odpowiedzi na komendę POLL ($3F)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jest to komenda uzupełniająca do opisanego niżej POLL ($3F). Powoduje przesłanie przez urządzenie programu odpowiedzialnego za załadowanie (komendą SEND HANDLER) i relokację właściwego handlera. Wszystkie parametry transmisji dla SEND RELOCATOR przesyłane są na komendę POLL ($3F). Program relokatora - po jego załadowaniu - uruchamia się od adresu DBUFA + 6. Przejmuje on na siebie wykonanie reszty operacji, a w wypadku niepowodzenia sygnalizuje błąd przez ustawienie bitu Carry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komendę SEND RELOCATOR rozpoznaje moduł [[850|Atari 850]], a może dotyczyć też innych urządzeń, oprócz stacji dysków (gdzie kod operacyjny $21 oznacza formatowanie dyskietki).&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$26 (&amp;amp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HANDLER&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator przesłany przez SEND RELOCATOR ($21) lub wg odpowiedzi na komendę POLL BUS ($40)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator (przesłany przez urządzenie lub rezydujący)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda SEND HANDLER służy do załadowania z urządzenia kodu programu obsługi (handlera) tego urządzenia. Może ona działać różnie w zależności od tego, czy transmisja została zainicjowana przez komendę POLL ($3F) czy POLL BUS ($40).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL ($3F) oznacza starszy protokół transmisji, w którym format strumienia danych przesłanych przez SEND HANDLER zależny jest od programu relokatora załadowanego wcześniej komendą SEND RELOCATOR ($21) i uruchomionego przez komputer.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL BUS ($40) oznacza nowszy protokół transmisji. Format strumienia danych jest ustalony z góry, a relokator rezyduje w ROM-ie systemu operacyjnego komputera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po otrzymaniu pozytywnej odpowiedzi na POLL BUS ($40) komputer rozpoczyna ładowanie kolejnych, 128-bajtowych rekordów binarnych, w liczbie do 256 (czyli pojedynczy &amp;quot;handler&amp;quot; może mieć maximum 32k). Przesyłany strumień danych musi być w [[ACX|specjalnym formacie]], który zapewnia relokowalność kodu, oraz zawiera podany explicite znacznik końca pliku - wystąpienie błędu przed napotkaniem tego znacznika powoduje przerwanie procedury z [[kody błędów|kodem błędu]] INCOMPLETE EXECUTION.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Ustawienia zmiennych DCB dla komendy SEND HANDLER wyglądają następująco:&amp;lt;/p&amp;gt;&lt;br /&gt;
* DDEVIC - kod urządzenia przesłany przez urządzenie $4F na komendę POLL BUS.&lt;br /&gt;
* DUNIT - zawsze $01&lt;br /&gt;
* DCMND - $26 - SEND HANDLER&lt;br /&gt;
* DSTATS - $40 - odczyt&lt;br /&gt;
* DTIMLO - 30 sekund&lt;br /&gt;
* DBYT - 128 bajtów&lt;br /&gt;
* DAUX1 - numer kolejny rekordu danych&lt;br /&gt;
* DAUX2 - zawsze 0&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ta, zwana też TYPE 2 POLL, służy do zainicjowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). W odpowiedzi urządzenie przesyła 12 bajtów odpowiadających kolejnym wartościom, jakie należy ustawić w bloku DCB celem załadowania kodu wykonywalnego handlera. Jest to starszy protokół transmisji zaprojektowany dla komputerów serii [[400]] i [[800]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W module [[850|Atari 850]] odpowiedzią na komendę POLL są wartości, jakie trzeba wstawić do DCB celem wykonania komendy SEND RELOCATOR ($21).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W celu uniknięcia wielokrotnego załadowania tego samego programu obsługi urządzenie na komendę POLL ($3F) odpowiada tylko raz, potem wykonanie komendy jest zablokowane aż do wyłączenia zasilania.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$40 (@)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL BUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$4F (bus master)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4 bajty&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;W komputerach serii XL oraz XE komendę tę system operacyjny przesyła do interfejsu szeregowo-równoległego przy każdym zimnym starcie; w pewnych warunkach - ale z nieco innymi parametrami - może też zostać wykonana po zainicjowaniu systemu. Jest to odpowiednik komendy POLL ($3F), jednak protokół transmisji handlera jest zunifikowany i nie wymaga od urządzenia przesyłania relokatora (uniwersalny relokator rezyduje w ROM-ie systemu operacyjnego). Analogicznie do POLL ($3F), komenda POLL BUS jest przeznaczona do zapoczątkowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). Zasadniczym adresatem jest tu moduł [[1090]] działający jako bus master.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Istnieje kilka odmian komendy POLL BUS różniących się parametrami przesyłanymi w DAUX1 i DAUX2:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TYPE 3 POLL: DAUX1 = 0 i DAUX2 = 0.&lt;br /&gt;
* TYPE 4 POLL: zobacz niżej.&lt;br /&gt;
* RESET POLL: DAUX1 = $4F i DAUX2 = $4F (&amp;quot;OO&amp;quot;)&lt;br /&gt;
* NULL POLL: DAUX1 = $4E i DAUX2 = $4E (&amp;quot;NN&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Przy zimnym starcie na początku system wysyła RESET POLL. Komenda ta powinna odblokować rozpoznawanie komendy TYPE 3 POLL we wszystkich podłączonych urządzeniach. Na RESET POLL urządzenia, oprócz potwierdzenia wykonania, nie przesyłają żadnej odpowiedzi, a komputer jej nie oczekuje.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Następnie system wysyła komendę TYPE 3 POLL. Pozytywna odpowiedź oznacza, że urządzenie nadesłało 4 bajty, z czego dwa pierwsze to ilość pamięci potrzebna do przeprowadzenia całości transmisji (musi to być parzysta wielkość). Jeśli jest to więcej niż dostępna ilość pamięci pomiędzy MEMLO a MEMTOP, system odpowiada przez NULL POLL (podobnie jak w wypadku RESET POLL, urządzenie przesyła tylko potwierdzenie wykonania), a następnie ponownie wysyła TYPE 3 POLL. W przypadku braku pamięci byłaby to pętla nieskończona, ale pojedyncze urządzenie na komendę TYPE 3 POLL może odpowiedzieć tylko raz - pętla jest więc przerywana błędem, który wystąpi po przetestowaniu wszystkich urządzeń zarządzanych przez bus mastera. Ponowna odpowiedź na TYPE 3 POLL jest możliwa dopiero po przesłaniu urządzeniu komendy RESET POLL, inaczej TYPE 3 POLL zostanie zignorowana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Trzeci przysłany bajt to identyfikator urządzenia (dla DDEVIC), które odpowiedziało na komendę i z którym będzie prowadzona dalsza komunikacja.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po stwierdzeniu poprawności odpowiedzi komputer dokonuje rezerwacji pamięci nad wartością MEMLO zaokrągloną w górę do najbliższej granicy słowa i próbuje dokonać odczytu z urządzenia, które się zgłosiło, 128 bajtów pod adres $03FD, przy użyciu innej &amp;quot;nietypowej&amp;quot; komendy, a mianowicie $26 - SEND HANDLER. Po załadowaniu i zainicjowaniu handlera pętla wraca do początku i wykonuje się cyklicznie aż do wystąpienia błędu - czyli do załadowania wszystkich handlerów będących w dyspozycji bus mastera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Procedura ładowania handlera wywoływana jest po procedurze bootowania DOS-u, ale niezależnie od jej wyniku; z czego wniosek, że &amp;quot;handler&amp;quot; może spełniać funkcję zarówno dodatku do DOS-u, jak i zostać załadowany &amp;lt;b&amp;gt;zamiast&amp;lt;/b&amp;gt; DOS-u.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Tą samą drogą można już po całkowitym uruchomieniu systemu, podczas pracy, załadować handler urządzenia &amp;lt;b&amp;gt;konkretnie wskazanego&amp;lt;/b&amp;gt;. Robi to [[CIO]] przy każdorazowej próbie otwarcia pliku na urządzeniu, którego system nie zna (nie ma takiego wpisu w tablicy handlerów).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Odpytanie bus mastera na okoliczność dysponowania takowym handlerem odbywa się za pomocą komendy TYPE 4 POLL. W DAUX1 ma się znajdować identyfikator urządzenia CIO, dla którego to urządzenia potrzebujemy handlera (np. dla magnetofonu $43, czyli &amp;quot;C&amp;quot;), w DAUX2 natomiast przesyła się numer wywoływanego urządzenia (np. dla &amp;quot;C1:&amp;quot; będzie to $01).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Pozostałe komendy====&lt;br /&gt;
&lt;br /&gt;
Komendy zdefiniowane przez Atari, na których temat brak bliższych danych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 (&amp;amp;nbsp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda wymieniana przez niektóre źródła. Szczegóły nieznane. Być może chodzi o komendę LOAD AND EXECUTE TEST w interfejsie [[850]] (zob. [[Lista_komend_SIO_według_funkcji#Atari_850|niżej]])&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG1&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050|Atari 1050]]. Wymaga przesłania 128-bajtowego bloku danych, w którym dwa pierwsze bajty decydują o tym, co stacja będzie robić (DAUX1/2 są ignorowane):&amp;lt;/p&amp;gt;&lt;br /&gt;
* $02 - test przejścia głowicy między ścieżkami&lt;br /&gt;
* $03 - przesuw głowicy za pomocą silnika krokowego o jeden krok w przód lub w tył; o kierunku decyduje następny bajt, wartość dodatnia (np. $01) powoduje przesuw w przód - czyli w kierunku ścieżki 39 - a wartość ujemna (np. $FF) przesuw wstecz, czyli w kierunku ścieżki 0. &amp;quot;Krok&amp;quot; silnika krokowego w tym wypadku to połowa odległości między ścieżkami, żeby więc tą komendą przesunąć głowicę na sąsiednią ścieżkę, trzeba zrobić to dwa razy. Uwaga: możliwe jest cofnięcie głowicy wstecz od ścieżki 0 (na tzw. ścieżkę -1).&lt;br /&gt;
* $04 - test zapisu i odczytu dyskietki; formatuje znajdującą się w stacji dyskietkę w średniej gęstości.&lt;br /&gt;
* $05 - przesuw główicy do ścieżki o numerze podanym w następnym bajcie. &lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;UWAGA: kod operacyjny ($23) jest taki sam, jak kod komendy formatowania w stacji [[XF551|Atari XF-551]] oraz [[LDW Super 2000]] i [[CA-2001]] z załadowanym [[Synchromesh]]em!&#039;&#039;&#039;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050]], służy do pomiaru prędkości obrotowej dyskietki. W zależności od wartości dwóch pierwszych bajtów przesłanego bloku danych ($00, $00 lub $00, $01) stacja przesyła czas jednego obrotu dyskietki lub wartość prędkości obrotowej w obrotach na minutę.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SPIN&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;$31&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;R (?)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;Komendy te występują jako komendy dyskowe na liście rozkazów SIO w dokumentacji sporządzonej przez Atari. Nie znam jednak stacji, która by na nie reagowała. Mogą to być komendy stacji [[810]], jakieś komendy diagnostyczne jej prototypu, albo komendy planowane, lecz nie zaimplementowane. Dostępna dokumentacja nie zawiera ich opisu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$55 (U)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MOTOR ON&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$56 (V)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VERIFY SECTOR&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Stacja odczytuje sektor wskazany przez DAUX1/2 i zwraca komputerowi informację, czy da się on odczytać bez błędów. Dane zawarte w sektorze nie są transmitowane do komputera. Komenda ta występuje w dokumentacji SIO sporządzonej przez Atari, ale żadna ze stacji marki Atari jej nie rozpoznaje.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Komendy specyficzne dla poszczególnych urządzeń ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Stacje dysków Atari 1450XLD =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$01 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET LARGE MODE&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;large mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako logiczną całość liczącą 2080 sektorów po 128 bajtów (260k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$02 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET SMALL MODE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;small mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako dwie oddzielne dyskietki liczące po 1040 sektorów po 128 bajtów (= 2x130k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC IN&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda zapisująca do stacji wskazany bufor wypełniony bliżej nieokreślonymi danymi diagnostycznymi.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC OUT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda odczytująca bliżej niesprecyzowane dane diagnostyczne do wskazanego bufora.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B1 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B2 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Atari 850 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;LOAD AND EXECUTE TEST&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 4&amp;gt;$50&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości przesyłanego kodu&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda niepublikowana w oficjalnej dokumentacji. Powoduje wczytanie z komputera kodu programu, a następnie uruchomienie go przez interfejs [[850|Atari 850]]. W DAUX1 podawany jest rozmiar przesyłanego kodu. Ze względu na specyfikę procedury odbioru danych, kod powinien być wysyłany od ostatniego do pierwszego bajtu.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONTROL&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca linie DTR, RTS i XMT (TX) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 34,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ustawiająca różne parametry pracy (m.in. szybkość transmisji) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 36,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;STREAM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda uruchamiająca tryb równoległego wejścia/wyjścia (&amp;lt;i&amp;gt;concurrent I/O&amp;lt;/i&amp;gt;). Interfejs [[850|Atari 850]] w odpowiedzi zwraca sekwencję liczb, według której handler urządzenia &amp;quot;R:&amp;quot; ustawia [[Rejestry_POKEY-a|rejestry układu POKEY]]  (kolejno AUDF,AUDC 1-4 oraz AUDCTL). Przykładowa sekwencja dla szybkości transmisji 300bps jest następująca: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78. Komenda jest używana przez handler przy poleceniu [[CIO]] XIO 40,#i,0,0,&amp;quot;Rn:&amp;quot; (START CONCURRENT MODE I/O).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== ATR 8000 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$47 (G)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GO TO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$5A ([[ATR 8000]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda pozwala na wywoływanie funkcji zdefiniowanych w ROM-ie modułu [[ATR 8000]] (q.v.).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Indus GT/LDW Super 2000/CA-2001 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT SKEWED&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda formatowania z szybkim [[przeplot]]em w stacjach [[Indus GT]], [[LDW Super 2000]] oraz [[CA-2001]] z załadowanym [[Synchromesh]]em.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Kod operacyjny jest taki sam, jak komendy formatowania w gęstości [[DSDD]] dla stacji [[XF551]] oraz jednej z komend diagnostycznych w [[1050]].&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD/EXECUTE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Różna&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda zaimplementowana w stacjach [[Indus GT]], [[LDW Super 2000]] i [[CA-2001]], pozwalająca na przesyłanie do stacji programów użytkownika i uruchamianie ich. Szczegóły: patrz [[Programowanie stacji LDW Super 2000 i CA-2001]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Happy Warp =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$48 (H)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;HAPPY CONFIG&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji z rozszerzeniem [[Happy Warp]]. Szczegóły: patrz [[Happy_Warp#Konfiguracja|Happy Warp - Konfiguracja]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== KMK/JŻ IDE =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$EC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;IDENTIFY DRIVE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;512 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W [[KMK/JŻ IDE]] komenda powoduje odczytanie bloku identyfikacyjnego napędu IDE, na którym założona jest wskazana partycja, i wpisanie go do bufora wskazanego przez DBUFA. Kolejność bajtów w tym bloku jest odwrotna od normalnej, tzn. wszystkie pary bajtów należy zamienić miejscami przed odczytaniem danych z tego bufora - dotyczy to również informacji tekstowej.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Multi I/O =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MEDIA CAPACITY INFO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nowe wersje firmware [[Multi I/O]] (od v. 1.4 wzwyż) w odpowiedzi na tę komendę zwracają informację o pojemności wskazanego dysku SCSI w [http://en.wikipedia.org/wiki/SCSI_Read_Capacity_Command tym formacie].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Speedy 1050 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;AUTOMATIC FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 11&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Speedy 1050]] w odpowiedni na tę komendę formatuje dyskietkę w zadanej gęstości (DAUX1 = $00 pojedyncza, $20 podwójna, $80 średnia) i, o ile konfiguracja stacji tego nie zabrania, zapisuje bootsektory i [[VTOC]] zgodne z [[DOS 2.0]] lub (w średniej gęstości) [[DOS 2.5]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;REGISTER COMMAND&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje zarejestrowanie komendy uzytkownika. Dane powinny zawierać kolejno:&lt;br /&gt;
* kod komendy&lt;br /&gt;
* młodszy bajt adresu w pamięci stacji, gdzie znajduje się podprogram obsługi&lt;br /&gt;
* starszy bajt tego adresu&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli dana komenda jest już jakoś przypisana, to przypisanie zostanie zmienione. Gdy adres ma wartość $0000, komenda zostanie wykasowana z pamięci stacji.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$44 (D)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DISPLAY&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja wyświetlacza stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: wyświetlanie kodów błędów na wyświetlaczu stacji&lt;br /&gt;
* bit 6: wyświetlanie numeru ścieżki w kodzie szesnastkowym&lt;br /&gt;
* bit 5: formatowanie bez weryfikacji&lt;br /&gt;
* bit 4: zablokowanie zapisu struktury logicznej dyskietki po komendzie $20&lt;br /&gt;
* bit 3: niewyłączanie silnika po komendzie $51&lt;br /&gt;
* bit 2: nieużywany&lt;br /&gt;
* bit 1: nieużywany&lt;br /&gt;
* bit 0: sygnał dźwiękowy w wypadku błędu&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4B (K)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DRIVE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: zapis i odczyt dyskietki bez buforowania (0 po zmianie dyskietki)&lt;br /&gt;
* bit 6: zapis i odczyt ścieżki bez buforowania (0 po zmianie ścieżki)&lt;br /&gt;
* bit 5: nieużywany&lt;br /&gt;
* bit 4: nieużywany&lt;br /&gt;
* bit 3: wyłączenie buforowania ścieżek&lt;br /&gt;
* bit 2: wyłączenie weryfikacji dla komendy $57 (W)&lt;br /&gt;
* bit 1: zapis sektora z pominięciem buforowania&lt;br /&gt;
* bit 0: odczyt sektora z pominięciem buforowania&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4C (L)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP, NO ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] wywołanie wewnętrznej procedury ROM-u stacji spod adresu przekazanego w DAUX1/2 (młodszy/starszy). Potwierdzenie wykonania rozkazu musi przesłać wywoływany podprogram.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP WITH ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] to samo, to $4C, ale potwierdzenie rozkazu jest przesyłane automatycznie.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FLUSH&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda ta powoduje natychmiastowy zapis zawartości bufora zapisu na dyskietkę i zatrzymanie silnika (normalnie stacja czeka z tym ok. 2 sekund po transmisji sektora).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$60 (`)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] zapis na dyskietkę całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$62 (b)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] odczyt z dyskietki całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$68 (h)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SIO LEN&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie dwóch bajtów określających wielkość procedury SIO, którą mozna od stacji uzyskać komendą $69. &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$69 (i)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND SIO&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wynik komendy $68&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie programu szybkiej transmisji SIO. Bajty DBYT powinny być ustawione na wartość zwróconą przez komendę $68. DAUX1/2 to adres w pamięci Atari, gdzie procedura ma zostać załadowana (stacja dokonuje relokacji kodu pod ten adres przed wysłaniem go do komputera).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== TOMS Multi Drive =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$49 (I)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;INDEX FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależnie od wybranej gęstości&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[TOMS Multi Drive]] komenda ta działa tak samo, jak zwykłe formatowanie ($21), z tym wyjątkiem, że do oznaczenia początku ścieżki stacja używa otworu indeksowego (normalnie w stacjach Atari ścieżka zaczyna się tam, gdzie akurat wypadnie). Służy to głównie do zabezpieczania programów przez tzw. synchroniczne sektory. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== US Doubler =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HIGH SPEED INDEX&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Stacje kompatybilne z [[US Doubler]] w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącą do ustawienia częstotliwości nośnej dla przyspieszonej transmisji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$66 (f)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CUSTOM FORMAT&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda formatowania z zadanym przeplotem zaimplementowana w stacjach [[US Doubler]]. Wysyłane 128 bajtów określa:&lt;br /&gt;
* w pierwszych 12 bajtach: zadaną gęstość, tak jak w komendzie WRITE PERCOM&lt;br /&gt;
* następne 18 lub 26 bajtów to fizyczne numery sektorów na ścieżce w zadanej kolejności, licząc od 1.&lt;br /&gt;
&amp;lt;p&amp;gt;Przykładowe przeploty podaje hasło [[Przeplot]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== [[XFD601|XFD601/602]] =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GET COMMAND BUFFER&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zwraca historię ostatnich 32 wywołań na łączu szeregowym. Wszystkich wywołań - nie tylko do stacji. Każdy wpis zawiera 4 bajty - dokładnie te same, jakie są wysyłane do urządzenia zewnetrznego przez komputer, czyli: [[SIO#DCB|DDEVIC]], [[SIO#DCB|DCMND]], [[SIO#DCB|DAUX1]], [[SIO#DCB|DAUX2]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Po odebraniu tego rozkazu stacja zwraca tzw. adres pierwszego napotkanego sektora, w formie 6 bajtów: numer scieżki, numer strony, numer sektora, rozmiar sektora, 2 bajty CRC.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit|SIO, Lista komend według funkcji]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34995</id>
		<title>Lista komend SIO według funkcji</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34995"/>
		<updated>2015-07-11T19:46:30Z</updated>

		<summary type="html">&lt;p&gt;Trub: /* Atari 850 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Główny artykuł: [[SIO]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Podstawowy zestaw komend====&lt;br /&gt;
&lt;br /&gt;
Poniższa tabela wyszczególnia podstawowe minimum komend rozpoznawanych przez urządzenia peryferyjne Atari.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DISK&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Formatuje dyskietkę w wybranej uprzednio (komendami PERCOM) gęstości, lub w [[Formaty dyskietek|pojedynczej gęstości]] (90k), jeśli stacja nie jest konfigurowalna. Zwraca listę zawierającą numery wadliwych sektorów (kolejno LSB/MSB) wykrytych w czasie formatowania, zakończoną wartością $FFFF. Niektóre stacje zwracają tu pustą listę ($FFFF, a dalej same zera), nawet jeśli na dyskietce są wadliwe sektory: po prostu dyskietki nie są już tak drogie, jak pod koniec lat siedemdziesiątych XX wieku...&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$50 (P)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;PUT SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31 i $60&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zapisuje do urządzenia blok danych wskazany przez DBUFA, a zawierający DBYT bajtów. W przypadku stacji dysków jest to zapis bez weryfikacji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$52 (R)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SECTOR&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Odczytuje z urządzenia blok danych o wielkości DBYT bajtów i zapisuje go w pamięci pod adresem wskazanym przez DBUFA.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$53 (S)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ STATUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wszystkie oprócz magnetofonu&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależna od urządzenia&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia blok statusu i zapisuje go pod adresem wskazanym przez DBUFA. Blok statusu dla RS-232 ma wielkość 2 bajtów, dla drukarki i stacji dysków - 4. Typowo komenda ta służy to stwierdzenia, czy urządzenie jest gotowe do pracy. W przypadku magnetofonu obowiązuje założenie, że jest on zawsze podłączony i gotów, nie ma więc potrzeby sprawdzania jego statusu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan=3&amp;gt;$57 (W)&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;WRITE SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Wszystkie&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;To samo, co PUT SECTOR ($50). W przypadku stacji dysków zapis przeprowadzany jest z weryfikacją.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;W przypadku drukarki długość bufora może wynosić 20, 29 albo 40 znaków (na ogół to ostatnie), a znaczenie DAUX2 jest jak następuje:&lt;br /&gt;
* $4E (N) drukowanie normalne&lt;br /&gt;
* $53 (S) druk obrócony o 90 stopni&lt;br /&gt;
* $44 (D) druk normalny z podwójną szerokością znaków&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Dla interfejsu [[850|Atari 850]] wielkość bufora wynosi 64 bajty.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy dodatkowe====&lt;br /&gt;
&lt;br /&gt;
Rozpoznawane przez urządzenia peryferyjne Atari komendy dodatkowe w stosunku do powyżej wspomnianego niezbędnego minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$22 (&amp;quot;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT MEDIUM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości średniej]] (130k). Komenda wprowadzona razem ze stacją [[1050]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DSDD&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;256 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości podwójnej dwustronnej]] (360k). Komenda wprowadzona razem ze stacją [[XF551|Atari XF-551]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy PERCOM====&lt;br /&gt;
&lt;br /&gt;
Komendy PERCOM noszą nazwę od stacji dysków firmy [[Percom Data Corp.|PERCOM]], w których po raz pierwszy się pojawiły. Nie są rozpoznawane przez stacje dysków firmy Atari (z wyjątkiem [[XF551|Atari XF-551]]), są jednak zaimplementowane we wszystkich rozszerzeniach oraz stacjach innych producentów i stanowią de facto standard.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4E (N)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ PERCOM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;12 bajtów ([[SIO#Blok_PERCOM|Blok PERCOM]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia dwunastobajtowy blok danych opisujący jego bieżącą konfigurację, tj. przede wszystkim format znajdującej się w stacji dyskietki.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4F (O)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE PERCOM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zapisuje do urządzenia dwanaście bajtów opisujących żądaną konfigurację, tj. liczbę ścieżek, stron dyskietki, sektorów na ścieżkę, wielkość sektora, gęstość. Przyjąwszy komendę stacja powinna natychmiast przestawić się na żądane ustawienia, o ile jest w stanie je zrealizować.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli zadanych ustawień nie da się zrealizować, stacja w teorii powinna odrzucić przesłany blok danych zgłaszając komputerowi błąd wykonania (co skutkuje [[Kody_błędów_Atari_OS|kodem błędu]] nr 144). W praktyce wiele stacji stosuje uproszczoną procedurę przyjmując parametry najbliższe zdefiniowanym przez przesłany blok danych. Jednak to, że parametry są &amp;quot;najbliższe&amp;quot;, nie oznacza, że muszą być w ogóle bliskie: np. zażądanie formatu 360 KB od stacji [[Top Drive 1050]] spowoduje jej ustawienie się w [[DD]] (180k), bo to jest maximum, jakie stacja jest w stanie zrealizować. Komplikuje to zadanie programom formatującym, które w celu zapisania prawidłowego katalogu muszą sprawdzać, czy żądana od stacji pojemność dyskietki została rzeczywiście wybrana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dyskietkę zgodnie z zapisaną konfiguracją.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ]] IDE nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do definiowania wielkości partycji służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy specjalne====&lt;br /&gt;
&lt;br /&gt;
Komendy wspomagające automatyczną instalację w systemie handlerów podłączonych urządzeń zewnętrznych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND RELOCATOR&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg odpowiedzi na komendę POLL ($3F)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jest to komenda uzupełniająca do opisanego niżej POLL ($3F). Powoduje przesłanie przez urządzenie programu odpowiedzialnego za załadowanie (komendą SEND HANDLER) i relokację właściwego handlera. Wszystkie parametry transmisji dla SEND RELOCATOR przesyłane są na komendę POLL ($3F). Program relokatora - po jego załadowaniu - uruchamia się od adresu DBUFA + 6. Przejmuje on na siebie wykonanie reszty operacji, a w wypadku niepowodzenia sygnalizuje błąd przez ustawienie bitu Carry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komendę SEND RELOCATOR rozpoznaje moduł [[850|Atari 850]], a może dotyczyć też innych urządzeń, oprócz stacji dysków (gdzie kod operacyjny $21 oznacza formatowanie dyskietki).&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$26 (&amp;amp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HANDLER&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator przesłany przez SEND RELOCATOR ($21) lub wg odpowiedzi na komendę POLL BUS ($40)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator (przesłany przez urządzenie lub rezydujący)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda SEND HANDLER służy do załadowania z urządzenia kodu programu obsługi (handlera) tego urządzenia. Może ona działać różnie w zależności od tego, czy transmisja została zainicjowana przez komendę POLL ($3F) czy POLL BUS ($40).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL ($3F) oznacza starszy protokół transmisji, w którym format strumienia danych przesłanych przez SEND HANDLER zależny jest od programu relokatora załadowanego wcześniej komendą SEND RELOCATOR ($21) i uruchomionego przez komputer.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL BUS ($40) oznacza nowszy protokół transmisji. Format strumienia danych jest ustalony z góry, a relokator rezyduje w ROM-ie systemu operacyjnego komputera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po otrzymaniu pozytywnej odpowiedzi na POLL BUS ($40) komputer rozpoczyna ładowanie kolejnych, 128-bajtowych rekordów binarnych, w liczbie do 256 (czyli pojedynczy &amp;quot;handler&amp;quot; może mieć maximum 32k). Przesyłany strumień danych musi być w [[ACX|specjalnym formacie]], który zapewnia relokowalność kodu, oraz zawiera podany explicite znacznik końca pliku - wystąpienie błędu przed napotkaniem tego znacznika powoduje przerwanie procedury z [[kody błędów|kodem błędu]] INCOMPLETE EXECUTION.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Ustawienia zmiennych DCB dla komendy SEND HANDLER wyglądają następująco:&amp;lt;/p&amp;gt;&lt;br /&gt;
* DDEVIC - kod urządzenia przesłany przez urządzenie $4F na komendę POLL BUS.&lt;br /&gt;
* DUNIT - zawsze $01&lt;br /&gt;
* DCMND - $26 - SEND HANDLER&lt;br /&gt;
* DSTATS - $40 - odczyt&lt;br /&gt;
* DTIMLO - 30 sekund&lt;br /&gt;
* DBYT - 128 bajtów&lt;br /&gt;
* DAUX1 - numer kolejny rekordu danych&lt;br /&gt;
* DAUX2 - zawsze 0&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ta, zwana też TYPE 2 POLL, służy do zainicjowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). W odpowiedzi urządzenie przesyła 12 bajtów odpowiadających kolejnym wartościom, jakie należy ustawić w bloku DCB celem załadowania kodu wykonywalnego handlera. Jest to starszy protokół transmisji zaprojektowany dla komputerów serii [[400]] i [[800]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W module [[850|Atari 850]] odpowiedzią na komendę POLL są wartości, jakie trzeba wstawić do DCB celem wykonania komendy SEND RELOCATOR ($21).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W celu uniknięcia wielokrotnego załadowania tego samego programu obsługi urządzenie na komendę POLL ($3F) odpowiada tylko raz, potem wykonanie komendy jest zablokowane aż do wyłączenia zasilania.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$40 (@)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL BUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$4F (bus master)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4 bajty&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;W komputerach serii XL oraz XE komendę tę system operacyjny przesyła do interfejsu szeregowo-równoległego przy każdym zimnym starcie; w pewnych warunkach - ale z nieco innymi parametrami - może też zostać wykonana po zainicjowaniu systemu. Jest to odpowiednik komendy POLL ($3F), jednak protokół transmisji handlera jest zunifikowany i nie wymaga od urządzenia przesyłania relokatora (uniwersalny relokator rezyduje w ROM-ie systemu operacyjnego). Analogicznie do POLL ($3F), komenda POLL BUS jest przeznaczona do zapoczątkowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). Zasadniczym adresatem jest tu moduł [[1090]] działający jako bus master.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Istnieje kilka odmian komendy POLL BUS różniących się parametrami przesyłanymi w DAUX1 i DAUX2:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TYPE 3 POLL: DAUX1 = 0 i DAUX2 = 0.&lt;br /&gt;
* TYPE 4 POLL: zobacz niżej.&lt;br /&gt;
* RESET POLL: DAUX1 = $4F i DAUX2 = $4F (&amp;quot;OO&amp;quot;)&lt;br /&gt;
* NULL POLL: DAUX1 = $4E i DAUX2 = $4E (&amp;quot;NN&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Przy zimnym starcie na początku system wysyła RESET POLL. Komenda ta powinna odblokować rozpoznawanie komendy TYPE 3 POLL we wszystkich podłączonych urządzeniach. Na RESET POLL urządzenia, oprócz potwierdzenia wykonania, nie przesyłają żadnej odpowiedzi, a komputer jej nie oczekuje.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Następnie system wysyła komendę TYPE 3 POLL. Pozytywna odpowiedź oznacza, że urządzenie nadesłało 4 bajty, z czego dwa pierwsze to ilość pamięci potrzebna do przeprowadzenia całości transmisji (musi to być parzysta wielkość). Jeśli jest to więcej niż dostępna ilość pamięci pomiędzy MEMLO a MEMTOP, system odpowiada przez NULL POLL (podobnie jak w wypadku RESET POLL, urządzenie przesyła tylko potwierdzenie wykonania), a następnie ponownie wysyła TYPE 3 POLL. W przypadku braku pamięci byłaby to pętla nieskończona, ale pojedyncze urządzenie na komendę TYPE 3 POLL może odpowiedzieć tylko raz - pętla jest więc przerywana błędem, który wystąpi po przetestowaniu wszystkich urządzeń zarządzanych przez bus mastera. Ponowna odpowiedź na TYPE 3 POLL jest możliwa dopiero po przesłaniu urządzeniu komendy RESET POLL, inaczej TYPE 3 POLL zostanie zignorowana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Trzeci przysłany bajt to identyfikator urządzenia (dla DDEVIC), które odpowiedziało na komendę i z którym będzie prowadzona dalsza komunikacja.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po stwierdzeniu poprawności odpowiedzi komputer dokonuje rezerwacji pamięci nad wartością MEMLO zaokrągloną w górę do najbliższej granicy słowa i próbuje dokonać odczytu z urządzenia, które się zgłosiło, 128 bajtów pod adres $03FD, przy użyciu innej &amp;quot;nietypowej&amp;quot; komendy, a mianowicie $26 - SEND HANDLER. Po załadowaniu i zainicjowaniu handlera pętla wraca do początku i wykonuje się cyklicznie aż do wystąpienia błędu - czyli do załadowania wszystkich handlerów będących w dyspozycji bus mastera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Procedura ładowania handlera wywoływana jest po procedurze bootowania DOS-u, ale niezależnie od jej wyniku; z czego wniosek, że &amp;quot;handler&amp;quot; może spełniać funkcję zarówno dodatku do DOS-u, jak i zostać załadowany &amp;lt;b&amp;gt;zamiast&amp;lt;/b&amp;gt; DOS-u.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Tą samą drogą można już po całkowitym uruchomieniu systemu, podczas pracy, załadować handler urządzenia &amp;lt;b&amp;gt;konkretnie wskazanego&amp;lt;/b&amp;gt;. Robi to [[CIO]] przy każdorazowej próbie otwarcia pliku na urządzeniu, którego system nie zna (nie ma takiego wpisu w tablicy handlerów).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Odpytanie bus mastera na okoliczność dysponowania takowym handlerem odbywa się za pomocą komendy TYPE 4 POLL. W DAUX1 ma się znajdować identyfikator urządzenia CIO, dla którego to urządzenia potrzebujemy handlera (np. dla magnetofonu $43, czyli &amp;quot;C&amp;quot;), w DAUX2 natomiast przesyła się numer wywoływanego urządzenia (np. dla &amp;quot;C1:&amp;quot; będzie to $01).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Pozostałe komendy====&lt;br /&gt;
&lt;br /&gt;
Komendy zdefiniowane przez Atari, na których temat brak bliższych danych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 (&amp;amp;nbsp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda wymieniana przez niektóre źródła. Szczegóły nieznane. Być może chodzi o komendę LOAD AND EXECUTE TEST w interfejsie [[850]] (zob. [[Lista_komend_SIO_według_funkcji#Atari_850|niżej]])&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG1&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050|Atari 1050]]. Wymaga przesłania 128-bajtowego bloku danych, w którym dwa pierwsze bajty decydują o tym, co stacja będzie robić (DAUX1/2 są ignorowane):&amp;lt;/p&amp;gt;&lt;br /&gt;
* $02 - test przejścia głowicy między ścieżkami&lt;br /&gt;
* $03 - przesuw głowicy za pomocą silnika krokowego o jeden krok w przód lub w tył; o kierunku decyduje następny bajt, wartość dodatnia (np. $01) powoduje przesuw w przód - czyli w kierunku ścieżki 39 - a wartość ujemna (np. $FF) przesuw wstecz, czyli w kierunku ścieżki 0. &amp;quot;Krok&amp;quot; silnika krokowego w tym wypadku to połowa odległości między ścieżkami, żeby więc tą komendą przesunąć głowicę na sąsiednią ścieżkę, trzeba zrobić to dwa razy. Uwaga: możliwe jest cofnięcie głowicy wstecz od ścieżki 0 (na tzw. ścieżkę -1).&lt;br /&gt;
* $04 - test zapisu i odczytu dyskietki; formatuje znajdującą się w stacji dyskietkę w średniej gęstości.&lt;br /&gt;
* $05 - przesuw główicy do ścieżki o numerze podanym w następnym bajcie. &lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;UWAGA: kod operacyjny ($23) jest taki sam, jak kod komendy formatowania w stacji [[XF551|Atari XF-551]] oraz [[LDW Super 2000]] i [[CA-2001]] z załadowanym [[Synchromesh]]em!&#039;&#039;&#039;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050]], służy do pomiaru prędkości obrotowej dyskietki. W zależności od wartości dwóch pierwszych bajtów przesłanego bloku danych ($00, $00 lub $00, $01) stacja przesyła czas jednego obrotu dyskietki lub wartość prędkości obrotowej w obrotach na minutę.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SPIN&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;$31&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;R (?)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;Komendy te występują jako komendy dyskowe na liście rozkazów SIO w dokumentacji sporządzonej przez Atari. Nie znam jednak stacji, która by na nie reagowała. Mogą to być komendy stacji [[810]], jakieś komendy diagnostyczne jej prototypu, albo komendy planowane, lecz nie zaimplementowane. Dostępna dokumentacja nie zawiera ich opisu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$55 (U)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MOTOR ON&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$56 (V)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VERIFY SECTOR&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Stacja odczytuje sektor wskazany przez DAUX1/2 i zwraca komputerowi informację, czy da się on odczytać bez błędów. Dane zawarte w sektorze nie są transmitowane do komputera. Komenda ta występuje w dokumentacji SIO sporządzonej przez Atari, ale żadna ze stacji marki Atari jej nie rozpoznaje.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Komendy specyficzne dla poszczególnych urządzeń ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Stacje dysków Atari 1450XLD =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$01 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET LARGE MODE&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;large mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako logiczną całość liczącą 2080 sektorów po 128 bajtów (260k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$02 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET SMALL MODE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;small mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako dwie oddzielne dyskietki liczące po 1040 sektorów po 128 bajtów (= 2x130k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC IN&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda zapisująca do stacji wskazany bufor wypełniony bliżej nieokreślonymi danymi diagnostycznymi.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC OUT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda odczytująca bliżej niesprecyzowane dane diagnostyczne do wskazanego bufora.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B1 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B2 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Atari 850 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;LOAD AND EXECUTE TEST&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości przesyłanego kodu&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda niepublikowana w oficjalnej dokumentacji. Powoduje wczytanie z komputera kodu programu, a następnie uruchomienie go przez interfejs [[850|Atari 850]]. W DAUX1 podawany jest rozmiar przesyłanego kodu. Ze względu na specyfikę procedury odbioru danych, kod powinien być wysyłany od ostatniego do pierwszego bajtu.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONTROL&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 4&amp;gt;$50&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca linie DTR, RTS i XMT (TX) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 34,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ustawiająca różne parametry pracy (m.in. szybkość transmisji) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 36,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;STREAM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda uruchamiająca tryb równoległego wejścia/wyjścia (&amp;lt;i&amp;gt;concurrent I/O&amp;lt;/i&amp;gt;). Interfejs [[850|Atari 850]] w odpowiedzi zwraca sekwencję liczb, według której handler urządzenia &amp;quot;R:&amp;quot; ustawia [[Rejestry_POKEY-a|rejestry układu POKEY]]  (kolejno AUDF,AUDC 1-4 oraz AUDCTL). Przykładowa sekwencja dla szybkości transmisji 300bps jest następująca: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78. Komenda jest używana przez handler przy poleceniu [[CIO]] XIO 40,#i,0,0,&amp;quot;Rn:&amp;quot; (START CONCURRENT MODE I/O).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== ATR 8000 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$47 (G)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GO TO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$5A ([[ATR 8000]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda pozwala na wywoływanie funkcji zdefiniowanych w ROM-ie modułu [[ATR 8000]] (q.v.).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Indus GT/LDW Super 2000/CA-2001 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT SKEWED&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda formatowania z szybkim [[przeplot]]em w stacjach [[Indus GT]], [[LDW Super 2000]] oraz [[CA-2001]] z załadowanym [[Synchromesh]]em.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Kod operacyjny jest taki sam, jak komendy formatowania w gęstości [[DSDD]] dla stacji [[XF551]] oraz jednej z komend diagnostycznych w [[1050]].&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD/EXECUTE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Różna&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda zaimplementowana w stacjach [[Indus GT]], [[LDW Super 2000]] i [[CA-2001]], pozwalająca na przesyłanie do stacji programów użytkownika i uruchamianie ich. Szczegóły: patrz [[Programowanie stacji LDW Super 2000 i CA-2001]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Happy Warp =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$48 (H)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;HAPPY CONFIG&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji z rozszerzeniem [[Happy Warp]]. Szczegóły: patrz [[Happy_Warp#Konfiguracja|Happy Warp - Konfiguracja]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== KMK/JŻ IDE =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$EC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;IDENTIFY DRIVE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;512 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W [[KMK/JŻ IDE]] komenda powoduje odczytanie bloku identyfikacyjnego napędu IDE, na którym założona jest wskazana partycja, i wpisanie go do bufora wskazanego przez DBUFA. Kolejność bajtów w tym bloku jest odwrotna od normalnej, tzn. wszystkie pary bajtów należy zamienić miejscami przed odczytaniem danych z tego bufora - dotyczy to również informacji tekstowej.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Multi I/O =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MEDIA CAPACITY INFO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nowe wersje firmware [[Multi I/O]] (od v. 1.4 wzwyż) w odpowiedzi na tę komendę zwracają informację o pojemności wskazanego dysku SCSI w [http://en.wikipedia.org/wiki/SCSI_Read_Capacity_Command tym formacie].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Speedy 1050 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;AUTOMATIC FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 11&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Speedy 1050]] w odpowiedni na tę komendę formatuje dyskietkę w zadanej gęstości (DAUX1 = $00 pojedyncza, $20 podwójna, $80 średnia) i, o ile konfiguracja stacji tego nie zabrania, zapisuje bootsektory i [[VTOC]] zgodne z [[DOS 2.0]] lub (w średniej gęstości) [[DOS 2.5]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;REGISTER COMMAND&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje zarejestrowanie komendy uzytkownika. Dane powinny zawierać kolejno:&lt;br /&gt;
* kod komendy&lt;br /&gt;
* młodszy bajt adresu w pamięci stacji, gdzie znajduje się podprogram obsługi&lt;br /&gt;
* starszy bajt tego adresu&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli dana komenda jest już jakoś przypisana, to przypisanie zostanie zmienione. Gdy adres ma wartość $0000, komenda zostanie wykasowana z pamięci stacji.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$44 (D)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DISPLAY&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja wyświetlacza stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: wyświetlanie kodów błędów na wyświetlaczu stacji&lt;br /&gt;
* bit 6: wyświetlanie numeru ścieżki w kodzie szesnastkowym&lt;br /&gt;
* bit 5: formatowanie bez weryfikacji&lt;br /&gt;
* bit 4: zablokowanie zapisu struktury logicznej dyskietki po komendzie $20&lt;br /&gt;
* bit 3: niewyłączanie silnika po komendzie $51&lt;br /&gt;
* bit 2: nieużywany&lt;br /&gt;
* bit 1: nieużywany&lt;br /&gt;
* bit 0: sygnał dźwiękowy w wypadku błędu&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4B (K)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DRIVE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: zapis i odczyt dyskietki bez buforowania (0 po zmianie dyskietki)&lt;br /&gt;
* bit 6: zapis i odczyt ścieżki bez buforowania (0 po zmianie ścieżki)&lt;br /&gt;
* bit 5: nieużywany&lt;br /&gt;
* bit 4: nieużywany&lt;br /&gt;
* bit 3: wyłączenie buforowania ścieżek&lt;br /&gt;
* bit 2: wyłączenie weryfikacji dla komendy $57 (W)&lt;br /&gt;
* bit 1: zapis sektora z pominięciem buforowania&lt;br /&gt;
* bit 0: odczyt sektora z pominięciem buforowania&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4C (L)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP, NO ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] wywołanie wewnętrznej procedury ROM-u stacji spod adresu przekazanego w DAUX1/2 (młodszy/starszy). Potwierdzenie wykonania rozkazu musi przesłać wywoływany podprogram.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP WITH ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] to samo, to $4C, ale potwierdzenie rozkazu jest przesyłane automatycznie.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FLUSH&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda ta powoduje natychmiastowy zapis zawartości bufora zapisu na dyskietkę i zatrzymanie silnika (normalnie stacja czeka z tym ok. 2 sekund po transmisji sektora).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$60 (`)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] zapis na dyskietkę całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$62 (b)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] odczyt z dyskietki całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$68 (h)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SIO LEN&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie dwóch bajtów określających wielkość procedury SIO, którą mozna od stacji uzyskać komendą $69. &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$69 (i)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND SIO&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wynik komendy $68&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie programu szybkiej transmisji SIO. Bajty DBYT powinny być ustawione na wartość zwróconą przez komendę $68. DAUX1/2 to adres w pamięci Atari, gdzie procedura ma zostać załadowana (stacja dokonuje relokacji kodu pod ten adres przed wysłaniem go do komputera).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== TOMS Multi Drive =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$49 (I)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;INDEX FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależnie od wybranej gęstości&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[TOMS Multi Drive]] komenda ta działa tak samo, jak zwykłe formatowanie ($21), z tym wyjątkiem, że do oznaczenia początku ścieżki stacja używa otworu indeksowego (normalnie w stacjach Atari ścieżka zaczyna się tam, gdzie akurat wypadnie). Służy to głównie do zabezpieczania programów przez tzw. synchroniczne sektory. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== US Doubler =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HIGH SPEED INDEX&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Stacje kompatybilne z [[US Doubler]] w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącą do ustawienia częstotliwości nośnej dla przyspieszonej transmisji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$66 (f)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CUSTOM FORMAT&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda formatowania z zadanym przeplotem zaimplementowana w stacjach [[US Doubler]]. Wysyłane 128 bajtów określa:&lt;br /&gt;
* w pierwszych 12 bajtach: zadaną gęstość, tak jak w komendzie WRITE PERCOM&lt;br /&gt;
* następne 18 lub 26 bajtów to fizyczne numery sektorów na ścieżce w zadanej kolejności, licząc od 1.&lt;br /&gt;
&amp;lt;p&amp;gt;Przykładowe przeploty podaje hasło [[Przeplot]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== [[XFD601|XFD601/602]] =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GET COMMAND BUFFER&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zwraca historię ostatnich 32 wywołań na łączu szeregowym. Wszystkich wywołań - nie tylko do stacji. Każdy wpis zawiera 4 bajty - dokładnie te same, jakie są wysyłane do urządzenia zewnetrznego przez komputer, czyli: [[SIO#DCB|DDEVIC]], [[SIO#DCB|DCMND]], [[SIO#DCB|DAUX1]], [[SIO#DCB|DAUX2]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Po odebraniu tego rozkazu stacja zwraca tzw. adres pierwszego napotkanego sektora, w formie 6 bajtów: numer scieżki, numer strony, numer sektora, rozmiar sektora, 2 bajty CRC.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit|SIO, Lista komend według funkcji]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34994</id>
		<title>Lista komend SIO według funkcji</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34994"/>
		<updated>2015-07-11T19:40:58Z</updated>

		<summary type="html">&lt;p&gt;Trub: /* Atari 850 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Główny artykuł: [[SIO]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Podstawowy zestaw komend====&lt;br /&gt;
&lt;br /&gt;
Poniższa tabela wyszczególnia podstawowe minimum komend rozpoznawanych przez urządzenia peryferyjne Atari.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DISK&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Formatuje dyskietkę w wybranej uprzednio (komendami PERCOM) gęstości, lub w [[Formaty dyskietek|pojedynczej gęstości]] (90k), jeśli stacja nie jest konfigurowalna. Zwraca listę zawierającą numery wadliwych sektorów (kolejno LSB/MSB) wykrytych w czasie formatowania, zakończoną wartością $FFFF. Niektóre stacje zwracają tu pustą listę ($FFFF, a dalej same zera), nawet jeśli na dyskietce są wadliwe sektory: po prostu dyskietki nie są już tak drogie, jak pod koniec lat siedemdziesiątych XX wieku...&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$50 (P)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;PUT SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31 i $60&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zapisuje do urządzenia blok danych wskazany przez DBUFA, a zawierający DBYT bajtów. W przypadku stacji dysków jest to zapis bez weryfikacji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$52 (R)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SECTOR&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Odczytuje z urządzenia blok danych o wielkości DBYT bajtów i zapisuje go w pamięci pod adresem wskazanym przez DBUFA.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$53 (S)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ STATUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wszystkie oprócz magnetofonu&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależna od urządzenia&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia blok statusu i zapisuje go pod adresem wskazanym przez DBUFA. Blok statusu dla RS-232 ma wielkość 2 bajtów, dla drukarki i stacji dysków - 4. Typowo komenda ta służy to stwierdzenia, czy urządzenie jest gotowe do pracy. W przypadku magnetofonu obowiązuje założenie, że jest on zawsze podłączony i gotów, nie ma więc potrzeby sprawdzania jego statusu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan=3&amp;gt;$57 (W)&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;WRITE SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Wszystkie&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;To samo, co PUT SECTOR ($50). W przypadku stacji dysków zapis przeprowadzany jest z weryfikacją.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;W przypadku drukarki długość bufora może wynosić 20, 29 albo 40 znaków (na ogół to ostatnie), a znaczenie DAUX2 jest jak następuje:&lt;br /&gt;
* $4E (N) drukowanie normalne&lt;br /&gt;
* $53 (S) druk obrócony o 90 stopni&lt;br /&gt;
* $44 (D) druk normalny z podwójną szerokością znaków&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Dla interfejsu [[850|Atari 850]] wielkość bufora wynosi 64 bajty.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy dodatkowe====&lt;br /&gt;
&lt;br /&gt;
Rozpoznawane przez urządzenia peryferyjne Atari komendy dodatkowe w stosunku do powyżej wspomnianego niezbędnego minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$22 (&amp;quot;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT MEDIUM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości średniej]] (130k). Komenda wprowadzona razem ze stacją [[1050]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DSDD&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;256 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości podwójnej dwustronnej]] (360k). Komenda wprowadzona razem ze stacją [[XF551|Atari XF-551]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy PERCOM====&lt;br /&gt;
&lt;br /&gt;
Komendy PERCOM noszą nazwę od stacji dysków firmy [[Percom Data Corp.|PERCOM]], w których po raz pierwszy się pojawiły. Nie są rozpoznawane przez stacje dysków firmy Atari (z wyjątkiem [[XF551|Atari XF-551]]), są jednak zaimplementowane we wszystkich rozszerzeniach oraz stacjach innych producentów i stanowią de facto standard.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4E (N)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ PERCOM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;12 bajtów ([[SIO#Blok_PERCOM|Blok PERCOM]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia dwunastobajtowy blok danych opisujący jego bieżącą konfigurację, tj. przede wszystkim format znajdującej się w stacji dyskietki.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4F (O)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE PERCOM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zapisuje do urządzenia dwanaście bajtów opisujących żądaną konfigurację, tj. liczbę ścieżek, stron dyskietki, sektorów na ścieżkę, wielkość sektora, gęstość. Przyjąwszy komendę stacja powinna natychmiast przestawić się na żądane ustawienia, o ile jest w stanie je zrealizować.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli zadanych ustawień nie da się zrealizować, stacja w teorii powinna odrzucić przesłany blok danych zgłaszając komputerowi błąd wykonania (co skutkuje [[Kody_błędów_Atari_OS|kodem błędu]] nr 144). W praktyce wiele stacji stosuje uproszczoną procedurę przyjmując parametry najbliższe zdefiniowanym przez przesłany blok danych. Jednak to, że parametry są &amp;quot;najbliższe&amp;quot;, nie oznacza, że muszą być w ogóle bliskie: np. zażądanie formatu 360 KB od stacji [[Top Drive 1050]] spowoduje jej ustawienie się w [[DD]] (180k), bo to jest maximum, jakie stacja jest w stanie zrealizować. Komplikuje to zadanie programom formatującym, które w celu zapisania prawidłowego katalogu muszą sprawdzać, czy żądana od stacji pojemność dyskietki została rzeczywiście wybrana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dyskietkę zgodnie z zapisaną konfiguracją.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ]] IDE nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do definiowania wielkości partycji służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy specjalne====&lt;br /&gt;
&lt;br /&gt;
Komendy wspomagające automatyczną instalację w systemie handlerów podłączonych urządzeń zewnętrznych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND RELOCATOR&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg odpowiedzi na komendę POLL ($3F)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jest to komenda uzupełniająca do opisanego niżej POLL ($3F). Powoduje przesłanie przez urządzenie programu odpowiedzialnego za załadowanie (komendą SEND HANDLER) i relokację właściwego handlera. Wszystkie parametry transmisji dla SEND RELOCATOR przesyłane są na komendę POLL ($3F). Program relokatora - po jego załadowaniu - uruchamia się od adresu DBUFA + 6. Przejmuje on na siebie wykonanie reszty operacji, a w wypadku niepowodzenia sygnalizuje błąd przez ustawienie bitu Carry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komendę SEND RELOCATOR rozpoznaje moduł [[850|Atari 850]], a może dotyczyć też innych urządzeń, oprócz stacji dysków (gdzie kod operacyjny $21 oznacza formatowanie dyskietki).&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$26 (&amp;amp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HANDLER&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator przesłany przez SEND RELOCATOR ($21) lub wg odpowiedzi na komendę POLL BUS ($40)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator (przesłany przez urządzenie lub rezydujący)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda SEND HANDLER służy do załadowania z urządzenia kodu programu obsługi (handlera) tego urządzenia. Może ona działać różnie w zależności od tego, czy transmisja została zainicjowana przez komendę POLL ($3F) czy POLL BUS ($40).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL ($3F) oznacza starszy protokół transmisji, w którym format strumienia danych przesłanych przez SEND HANDLER zależny jest od programu relokatora załadowanego wcześniej komendą SEND RELOCATOR ($21) i uruchomionego przez komputer.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL BUS ($40) oznacza nowszy protokół transmisji. Format strumienia danych jest ustalony z góry, a relokator rezyduje w ROM-ie systemu operacyjnego komputera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po otrzymaniu pozytywnej odpowiedzi na POLL BUS ($40) komputer rozpoczyna ładowanie kolejnych, 128-bajtowych rekordów binarnych, w liczbie do 256 (czyli pojedynczy &amp;quot;handler&amp;quot; może mieć maximum 32k). Przesyłany strumień danych musi być w [[ACX|specjalnym formacie]], który zapewnia relokowalność kodu, oraz zawiera podany explicite znacznik końca pliku - wystąpienie błędu przed napotkaniem tego znacznika powoduje przerwanie procedury z [[kody błędów|kodem błędu]] INCOMPLETE EXECUTION.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Ustawienia zmiennych DCB dla komendy SEND HANDLER wyglądają następująco:&amp;lt;/p&amp;gt;&lt;br /&gt;
* DDEVIC - kod urządzenia przesłany przez urządzenie $4F na komendę POLL BUS.&lt;br /&gt;
* DUNIT - zawsze $01&lt;br /&gt;
* DCMND - $26 - SEND HANDLER&lt;br /&gt;
* DSTATS - $40 - odczyt&lt;br /&gt;
* DTIMLO - 30 sekund&lt;br /&gt;
* DBYT - 128 bajtów&lt;br /&gt;
* DAUX1 - numer kolejny rekordu danych&lt;br /&gt;
* DAUX2 - zawsze 0&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ta, zwana też TYPE 2 POLL, służy do zainicjowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). W odpowiedzi urządzenie przesyła 12 bajtów odpowiadających kolejnym wartościom, jakie należy ustawić w bloku DCB celem załadowania kodu wykonywalnego handlera. Jest to starszy protokół transmisji zaprojektowany dla komputerów serii [[400]] i [[800]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W module [[850|Atari 850]] odpowiedzią na komendę POLL są wartości, jakie trzeba wstawić do DCB celem wykonania komendy SEND RELOCATOR ($21).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W celu uniknięcia wielokrotnego załadowania tego samego programu obsługi urządzenie na komendę POLL ($3F) odpowiada tylko raz, potem wykonanie komendy jest zablokowane aż do wyłączenia zasilania.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$40 (@)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL BUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$4F (bus master)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4 bajty&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;W komputerach serii XL oraz XE komendę tę system operacyjny przesyła do interfejsu szeregowo-równoległego przy każdym zimnym starcie; w pewnych warunkach - ale z nieco innymi parametrami - może też zostać wykonana po zainicjowaniu systemu. Jest to odpowiednik komendy POLL ($3F), jednak protokół transmisji handlera jest zunifikowany i nie wymaga od urządzenia przesyłania relokatora (uniwersalny relokator rezyduje w ROM-ie systemu operacyjnego). Analogicznie do POLL ($3F), komenda POLL BUS jest przeznaczona do zapoczątkowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). Zasadniczym adresatem jest tu moduł [[1090]] działający jako bus master.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Istnieje kilka odmian komendy POLL BUS różniących się parametrami przesyłanymi w DAUX1 i DAUX2:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TYPE 3 POLL: DAUX1 = 0 i DAUX2 = 0.&lt;br /&gt;
* TYPE 4 POLL: zobacz niżej.&lt;br /&gt;
* RESET POLL: DAUX1 = $4F i DAUX2 = $4F (&amp;quot;OO&amp;quot;)&lt;br /&gt;
* NULL POLL: DAUX1 = $4E i DAUX2 = $4E (&amp;quot;NN&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Przy zimnym starcie na początku system wysyła RESET POLL. Komenda ta powinna odblokować rozpoznawanie komendy TYPE 3 POLL we wszystkich podłączonych urządzeniach. Na RESET POLL urządzenia, oprócz potwierdzenia wykonania, nie przesyłają żadnej odpowiedzi, a komputer jej nie oczekuje.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Następnie system wysyła komendę TYPE 3 POLL. Pozytywna odpowiedź oznacza, że urządzenie nadesłało 4 bajty, z czego dwa pierwsze to ilość pamięci potrzebna do przeprowadzenia całości transmisji (musi to być parzysta wielkość). Jeśli jest to więcej niż dostępna ilość pamięci pomiędzy MEMLO a MEMTOP, system odpowiada przez NULL POLL (podobnie jak w wypadku RESET POLL, urządzenie przesyła tylko potwierdzenie wykonania), a następnie ponownie wysyła TYPE 3 POLL. W przypadku braku pamięci byłaby to pętla nieskończona, ale pojedyncze urządzenie na komendę TYPE 3 POLL może odpowiedzieć tylko raz - pętla jest więc przerywana błędem, który wystąpi po przetestowaniu wszystkich urządzeń zarządzanych przez bus mastera. Ponowna odpowiedź na TYPE 3 POLL jest możliwa dopiero po przesłaniu urządzeniu komendy RESET POLL, inaczej TYPE 3 POLL zostanie zignorowana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Trzeci przysłany bajt to identyfikator urządzenia (dla DDEVIC), które odpowiedziało na komendę i z którym będzie prowadzona dalsza komunikacja.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po stwierdzeniu poprawności odpowiedzi komputer dokonuje rezerwacji pamięci nad wartością MEMLO zaokrągloną w górę do najbliższej granicy słowa i próbuje dokonać odczytu z urządzenia, które się zgłosiło, 128 bajtów pod adres $03FD, przy użyciu innej &amp;quot;nietypowej&amp;quot; komendy, a mianowicie $26 - SEND HANDLER. Po załadowaniu i zainicjowaniu handlera pętla wraca do początku i wykonuje się cyklicznie aż do wystąpienia błędu - czyli do załadowania wszystkich handlerów będących w dyspozycji bus mastera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Procedura ładowania handlera wywoływana jest po procedurze bootowania DOS-u, ale niezależnie od jej wyniku; z czego wniosek, że &amp;quot;handler&amp;quot; może spełniać funkcję zarówno dodatku do DOS-u, jak i zostać załadowany &amp;lt;b&amp;gt;zamiast&amp;lt;/b&amp;gt; DOS-u.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Tą samą drogą można już po całkowitym uruchomieniu systemu, podczas pracy, załadować handler urządzenia &amp;lt;b&amp;gt;konkretnie wskazanego&amp;lt;/b&amp;gt;. Robi to [[CIO]] przy każdorazowej próbie otwarcia pliku na urządzeniu, którego system nie zna (nie ma takiego wpisu w tablicy handlerów).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Odpytanie bus mastera na okoliczność dysponowania takowym handlerem odbywa się za pomocą komendy TYPE 4 POLL. W DAUX1 ma się znajdować identyfikator urządzenia CIO, dla którego to urządzenia potrzebujemy handlera (np. dla magnetofonu $43, czyli &amp;quot;C&amp;quot;), w DAUX2 natomiast przesyła się numer wywoływanego urządzenia (np. dla &amp;quot;C1:&amp;quot; będzie to $01).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Pozostałe komendy====&lt;br /&gt;
&lt;br /&gt;
Komendy zdefiniowane przez Atari, na których temat brak bliższych danych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 (&amp;amp;nbsp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda wymieniana przez niektóre źródła. Szczegóły nieznane. Być może chodzi o komendę LOAD AND EXECUTE TEST w interfejsie [[850]] (zob. [[Lista_komend_SIO_według_funkcji#Atari_850|niżej]])&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG1&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050|Atari 1050]]. Wymaga przesłania 128-bajtowego bloku danych, w którym dwa pierwsze bajty decydują o tym, co stacja będzie robić (DAUX1/2 są ignorowane):&amp;lt;/p&amp;gt;&lt;br /&gt;
* $02 - test przejścia głowicy między ścieżkami&lt;br /&gt;
* $03 - przesuw głowicy za pomocą silnika krokowego o jeden krok w przód lub w tył; o kierunku decyduje następny bajt, wartość dodatnia (np. $01) powoduje przesuw w przód - czyli w kierunku ścieżki 39 - a wartość ujemna (np. $FF) przesuw wstecz, czyli w kierunku ścieżki 0. &amp;quot;Krok&amp;quot; silnika krokowego w tym wypadku to połowa odległości między ścieżkami, żeby więc tą komendą przesunąć głowicę na sąsiednią ścieżkę, trzeba zrobić to dwa razy. Uwaga: możliwe jest cofnięcie głowicy wstecz od ścieżki 0 (na tzw. ścieżkę -1).&lt;br /&gt;
* $04 - test zapisu i odczytu dyskietki; formatuje znajdującą się w stacji dyskietkę w średniej gęstości.&lt;br /&gt;
* $05 - przesuw główicy do ścieżki o numerze podanym w następnym bajcie. &lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;UWAGA: kod operacyjny ($23) jest taki sam, jak kod komendy formatowania w stacji [[XF551|Atari XF-551]] oraz [[LDW Super 2000]] i [[CA-2001]] z załadowanym [[Synchromesh]]em!&#039;&#039;&#039;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050]], służy do pomiaru prędkości obrotowej dyskietki. W zależności od wartości dwóch pierwszych bajtów przesłanego bloku danych ($00, $00 lub $00, $01) stacja przesyła czas jednego obrotu dyskietki lub wartość prędkości obrotowej w obrotach na minutę.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SPIN&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;$31&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;R (?)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;Komendy te występują jako komendy dyskowe na liście rozkazów SIO w dokumentacji sporządzonej przez Atari. Nie znam jednak stacji, która by na nie reagowała. Mogą to być komendy stacji [[810]], jakieś komendy diagnostyczne jej prototypu, albo komendy planowane, lecz nie zaimplementowane. Dostępna dokumentacja nie zawiera ich opisu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$55 (U)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MOTOR ON&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$56 (V)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VERIFY SECTOR&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Stacja odczytuje sektor wskazany przez DAUX1/2 i zwraca komputerowi informację, czy da się on odczytać bez błędów. Dane zawarte w sektorze nie są transmitowane do komputera. Komenda ta występuje w dokumentacji SIO sporządzonej przez Atari, ale żadna ze stacji marki Atari jej nie rozpoznaje.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Komendy specyficzne dla poszczególnych urządzeń ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Stacje dysków Atari 1450XLD =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$01 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET LARGE MODE&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;large mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako logiczną całość liczącą 2080 sektorów po 128 bajtów (260k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$02 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET SMALL MODE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;small mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako dwie oddzielne dyskietki liczące po 1040 sektorów po 128 bajtów (= 2x130k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC IN&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda zapisująca do stacji wskazany bufor wypełniony bliżej nieokreślonymi danymi diagnostycznymi.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC OUT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda odczytująca bliżej niesprecyzowane dane diagnostyczne do wskazanego bufora.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B1 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B2 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Atari 850 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONTROL&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 4&amp;gt;$50&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca linie DTR, RTS i XMT (TX) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 34,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ustawiająca różne parametry pracy (m.in. szybkość transmisji) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 36,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;STREAM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda uruchamiająca tryb równoległego wejścia/wyjścia (&amp;lt;i&amp;gt;concurrent I/O&amp;lt;/i&amp;gt;). Interfejs [[850|Atari 850]] w odpowiedzi zwraca sekwencję liczb, według której handler urządzenia &amp;quot;R:&amp;quot; ustawia [[Rejestry_POKEY-a|rejestry układu POKEY]]  (kolejno AUDF,AUDC 1-4 oraz AUDCTL). Przykładowa sekwencja dla szybkości transmisji 300bps jest następująca: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78. Komenda jest używana przez handler przy poleceniu [[CIO]] XIO 40,#i,0,0,&amp;quot;Rn:&amp;quot; (START CONCURRENT MODE I/O).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;LOAD AND EXECUTE TEST&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości przesyłanego kodu&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda niepublikowana w oficjalnej dokumentacji. Powoduje wczytanie z komputera kodu programu, a następnie uruchomienie go przez interfejs [[850|Atari 850]]. W DAUX1 podawany jest rozmiar przesyłanego kodu. Ze względu na specyfikę procedury odbioru danych, kod powinien być wysyłany od ostatniego do pierwszego bajtu.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== ATR 8000 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$47 (G)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GO TO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$5A ([[ATR 8000]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda pozwala na wywoływanie funkcji zdefiniowanych w ROM-ie modułu [[ATR 8000]] (q.v.).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Indus GT/LDW Super 2000/CA-2001 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT SKEWED&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda formatowania z szybkim [[przeplot]]em w stacjach [[Indus GT]], [[LDW Super 2000]] oraz [[CA-2001]] z załadowanym [[Synchromesh]]em.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Kod operacyjny jest taki sam, jak komendy formatowania w gęstości [[DSDD]] dla stacji [[XF551]] oraz jednej z komend diagnostycznych w [[1050]].&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD/EXECUTE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Różna&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda zaimplementowana w stacjach [[Indus GT]], [[LDW Super 2000]] i [[CA-2001]], pozwalająca na przesyłanie do stacji programów użytkownika i uruchamianie ich. Szczegóły: patrz [[Programowanie stacji LDW Super 2000 i CA-2001]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Happy Warp =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$48 (H)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;HAPPY CONFIG&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji z rozszerzeniem [[Happy Warp]]. Szczegóły: patrz [[Happy_Warp#Konfiguracja|Happy Warp - Konfiguracja]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== KMK/JŻ IDE =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$EC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;IDENTIFY DRIVE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;512 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W [[KMK/JŻ IDE]] komenda powoduje odczytanie bloku identyfikacyjnego napędu IDE, na którym założona jest wskazana partycja, i wpisanie go do bufora wskazanego przez DBUFA. Kolejność bajtów w tym bloku jest odwrotna od normalnej, tzn. wszystkie pary bajtów należy zamienić miejscami przed odczytaniem danych z tego bufora - dotyczy to również informacji tekstowej.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Multi I/O =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MEDIA CAPACITY INFO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nowe wersje firmware [[Multi I/O]] (od v. 1.4 wzwyż) w odpowiedzi na tę komendę zwracają informację o pojemności wskazanego dysku SCSI w [http://en.wikipedia.org/wiki/SCSI_Read_Capacity_Command tym formacie].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Speedy 1050 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;AUTOMATIC FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 11&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Speedy 1050]] w odpowiedni na tę komendę formatuje dyskietkę w zadanej gęstości (DAUX1 = $00 pojedyncza, $20 podwójna, $80 średnia) i, o ile konfiguracja stacji tego nie zabrania, zapisuje bootsektory i [[VTOC]] zgodne z [[DOS 2.0]] lub (w średniej gęstości) [[DOS 2.5]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;REGISTER COMMAND&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje zarejestrowanie komendy uzytkownika. Dane powinny zawierać kolejno:&lt;br /&gt;
* kod komendy&lt;br /&gt;
* młodszy bajt adresu w pamięci stacji, gdzie znajduje się podprogram obsługi&lt;br /&gt;
* starszy bajt tego adresu&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli dana komenda jest już jakoś przypisana, to przypisanie zostanie zmienione. Gdy adres ma wartość $0000, komenda zostanie wykasowana z pamięci stacji.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$44 (D)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DISPLAY&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja wyświetlacza stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: wyświetlanie kodów błędów na wyświetlaczu stacji&lt;br /&gt;
* bit 6: wyświetlanie numeru ścieżki w kodzie szesnastkowym&lt;br /&gt;
* bit 5: formatowanie bez weryfikacji&lt;br /&gt;
* bit 4: zablokowanie zapisu struktury logicznej dyskietki po komendzie $20&lt;br /&gt;
* bit 3: niewyłączanie silnika po komendzie $51&lt;br /&gt;
* bit 2: nieużywany&lt;br /&gt;
* bit 1: nieużywany&lt;br /&gt;
* bit 0: sygnał dźwiękowy w wypadku błędu&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4B (K)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DRIVE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: zapis i odczyt dyskietki bez buforowania (0 po zmianie dyskietki)&lt;br /&gt;
* bit 6: zapis i odczyt ścieżki bez buforowania (0 po zmianie ścieżki)&lt;br /&gt;
* bit 5: nieużywany&lt;br /&gt;
* bit 4: nieużywany&lt;br /&gt;
* bit 3: wyłączenie buforowania ścieżek&lt;br /&gt;
* bit 2: wyłączenie weryfikacji dla komendy $57 (W)&lt;br /&gt;
* bit 1: zapis sektora z pominięciem buforowania&lt;br /&gt;
* bit 0: odczyt sektora z pominięciem buforowania&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4C (L)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP, NO ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] wywołanie wewnętrznej procedury ROM-u stacji spod adresu przekazanego w DAUX1/2 (młodszy/starszy). Potwierdzenie wykonania rozkazu musi przesłać wywoływany podprogram.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP WITH ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] to samo, to $4C, ale potwierdzenie rozkazu jest przesyłane automatycznie.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FLUSH&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda ta powoduje natychmiastowy zapis zawartości bufora zapisu na dyskietkę i zatrzymanie silnika (normalnie stacja czeka z tym ok. 2 sekund po transmisji sektora).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$60 (`)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] zapis na dyskietkę całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$62 (b)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] odczyt z dyskietki całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$68 (h)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SIO LEN&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie dwóch bajtów określających wielkość procedury SIO, którą mozna od stacji uzyskać komendą $69. &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$69 (i)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND SIO&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wynik komendy $68&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie programu szybkiej transmisji SIO. Bajty DBYT powinny być ustawione na wartość zwróconą przez komendę $68. DAUX1/2 to adres w pamięci Atari, gdzie procedura ma zostać załadowana (stacja dokonuje relokacji kodu pod ten adres przed wysłaniem go do komputera).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== TOMS Multi Drive =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$49 (I)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;INDEX FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależnie od wybranej gęstości&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[TOMS Multi Drive]] komenda ta działa tak samo, jak zwykłe formatowanie ($21), z tym wyjątkiem, że do oznaczenia początku ścieżki stacja używa otworu indeksowego (normalnie w stacjach Atari ścieżka zaczyna się tam, gdzie akurat wypadnie). Służy to głównie do zabezpieczania programów przez tzw. synchroniczne sektory. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== US Doubler =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HIGH SPEED INDEX&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Stacje kompatybilne z [[US Doubler]] w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącą do ustawienia częstotliwości nośnej dla przyspieszonej transmisji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$66 (f)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CUSTOM FORMAT&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda formatowania z zadanym przeplotem zaimplementowana w stacjach [[US Doubler]]. Wysyłane 128 bajtów określa:&lt;br /&gt;
* w pierwszych 12 bajtach: zadaną gęstość, tak jak w komendzie WRITE PERCOM&lt;br /&gt;
* następne 18 lub 26 bajtów to fizyczne numery sektorów na ścieżce w zadanej kolejności, licząc od 1.&lt;br /&gt;
&amp;lt;p&amp;gt;Przykładowe przeploty podaje hasło [[Przeplot]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== [[XFD601|XFD601/602]] =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GET COMMAND BUFFER&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zwraca historię ostatnich 32 wywołań na łączu szeregowym. Wszystkich wywołań - nie tylko do stacji. Każdy wpis zawiera 4 bajty - dokładnie te same, jakie są wysyłane do urządzenia zewnetrznego przez komputer, czyli: [[SIO#DCB|DDEVIC]], [[SIO#DCB|DCMND]], [[SIO#DCB|DAUX1]], [[SIO#DCB|DAUX2]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Po odebraniu tego rozkazu stacja zwraca tzw. adres pierwszego napotkanego sektora, w formie 6 bajtów: numer scieżki, numer strony, numer sektora, rozmiar sektora, 2 bajty CRC.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit|SIO, Lista komend według funkcji]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34993</id>
		<title>Lista komend SIO według funkcji</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34993"/>
		<updated>2015-07-11T19:40:44Z</updated>

		<summary type="html">&lt;p&gt;Trub: /* Atari 850 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Główny artykuł: [[SIO]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Podstawowy zestaw komend====&lt;br /&gt;
&lt;br /&gt;
Poniższa tabela wyszczególnia podstawowe minimum komend rozpoznawanych przez urządzenia peryferyjne Atari.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DISK&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Formatuje dyskietkę w wybranej uprzednio (komendami PERCOM) gęstości, lub w [[Formaty dyskietek|pojedynczej gęstości]] (90k), jeśli stacja nie jest konfigurowalna. Zwraca listę zawierającą numery wadliwych sektorów (kolejno LSB/MSB) wykrytych w czasie formatowania, zakończoną wartością $FFFF. Niektóre stacje zwracają tu pustą listę ($FFFF, a dalej same zera), nawet jeśli na dyskietce są wadliwe sektory: po prostu dyskietki nie są już tak drogie, jak pod koniec lat siedemdziesiątych XX wieku...&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$50 (P)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;PUT SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31 i $60&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zapisuje do urządzenia blok danych wskazany przez DBUFA, a zawierający DBYT bajtów. W przypadku stacji dysków jest to zapis bez weryfikacji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$52 (R)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SECTOR&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Odczytuje z urządzenia blok danych o wielkości DBYT bajtów i zapisuje go w pamięci pod adresem wskazanym przez DBUFA.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$53 (S)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ STATUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wszystkie oprócz magnetofonu&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależna od urządzenia&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia blok statusu i zapisuje go pod adresem wskazanym przez DBUFA. Blok statusu dla RS-232 ma wielkość 2 bajtów, dla drukarki i stacji dysków - 4. Typowo komenda ta służy to stwierdzenia, czy urządzenie jest gotowe do pracy. W przypadku magnetofonu obowiązuje założenie, że jest on zawsze podłączony i gotów, nie ma więc potrzeby sprawdzania jego statusu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan=3&amp;gt;$57 (W)&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;WRITE SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Wszystkie&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;To samo, co PUT SECTOR ($50). W przypadku stacji dysków zapis przeprowadzany jest z weryfikacją.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;W przypadku drukarki długość bufora może wynosić 20, 29 albo 40 znaków (na ogół to ostatnie), a znaczenie DAUX2 jest jak następuje:&lt;br /&gt;
* $4E (N) drukowanie normalne&lt;br /&gt;
* $53 (S) druk obrócony o 90 stopni&lt;br /&gt;
* $44 (D) druk normalny z podwójną szerokością znaków&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Dla interfejsu [[850|Atari 850]] wielkość bufora wynosi 64 bajty.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy dodatkowe====&lt;br /&gt;
&lt;br /&gt;
Rozpoznawane przez urządzenia peryferyjne Atari komendy dodatkowe w stosunku do powyżej wspomnianego niezbędnego minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$22 (&amp;quot;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT MEDIUM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości średniej]] (130k). Komenda wprowadzona razem ze stacją [[1050]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DSDD&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;256 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości podwójnej dwustronnej]] (360k). Komenda wprowadzona razem ze stacją [[XF551|Atari XF-551]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy PERCOM====&lt;br /&gt;
&lt;br /&gt;
Komendy PERCOM noszą nazwę od stacji dysków firmy [[Percom Data Corp.|PERCOM]], w których po raz pierwszy się pojawiły. Nie są rozpoznawane przez stacje dysków firmy Atari (z wyjątkiem [[XF551|Atari XF-551]]), są jednak zaimplementowane we wszystkich rozszerzeniach oraz stacjach innych producentów i stanowią de facto standard.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4E (N)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ PERCOM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;12 bajtów ([[SIO#Blok_PERCOM|Blok PERCOM]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia dwunastobajtowy blok danych opisujący jego bieżącą konfigurację, tj. przede wszystkim format znajdującej się w stacji dyskietki.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4F (O)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE PERCOM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zapisuje do urządzenia dwanaście bajtów opisujących żądaną konfigurację, tj. liczbę ścieżek, stron dyskietki, sektorów na ścieżkę, wielkość sektora, gęstość. Przyjąwszy komendę stacja powinna natychmiast przestawić się na żądane ustawienia, o ile jest w stanie je zrealizować.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli zadanych ustawień nie da się zrealizować, stacja w teorii powinna odrzucić przesłany blok danych zgłaszając komputerowi błąd wykonania (co skutkuje [[Kody_błędów_Atari_OS|kodem błędu]] nr 144). W praktyce wiele stacji stosuje uproszczoną procedurę przyjmując parametry najbliższe zdefiniowanym przez przesłany blok danych. Jednak to, że parametry są &amp;quot;najbliższe&amp;quot;, nie oznacza, że muszą być w ogóle bliskie: np. zażądanie formatu 360 KB od stacji [[Top Drive 1050]] spowoduje jej ustawienie się w [[DD]] (180k), bo to jest maximum, jakie stacja jest w stanie zrealizować. Komplikuje to zadanie programom formatującym, które w celu zapisania prawidłowego katalogu muszą sprawdzać, czy żądana od stacji pojemność dyskietki została rzeczywiście wybrana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dyskietkę zgodnie z zapisaną konfiguracją.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ]] IDE nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do definiowania wielkości partycji służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy specjalne====&lt;br /&gt;
&lt;br /&gt;
Komendy wspomagające automatyczną instalację w systemie handlerów podłączonych urządzeń zewnętrznych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND RELOCATOR&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg odpowiedzi na komendę POLL ($3F)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jest to komenda uzupełniająca do opisanego niżej POLL ($3F). Powoduje przesłanie przez urządzenie programu odpowiedzialnego za załadowanie (komendą SEND HANDLER) i relokację właściwego handlera. Wszystkie parametry transmisji dla SEND RELOCATOR przesyłane są na komendę POLL ($3F). Program relokatora - po jego załadowaniu - uruchamia się od adresu DBUFA + 6. Przejmuje on na siebie wykonanie reszty operacji, a w wypadku niepowodzenia sygnalizuje błąd przez ustawienie bitu Carry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komendę SEND RELOCATOR rozpoznaje moduł [[850|Atari 850]], a może dotyczyć też innych urządzeń, oprócz stacji dysków (gdzie kod operacyjny $21 oznacza formatowanie dyskietki).&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$26 (&amp;amp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HANDLER&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator przesłany przez SEND RELOCATOR ($21) lub wg odpowiedzi na komendę POLL BUS ($40)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator (przesłany przez urządzenie lub rezydujący)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda SEND HANDLER służy do załadowania z urządzenia kodu programu obsługi (handlera) tego urządzenia. Może ona działać różnie w zależności od tego, czy transmisja została zainicjowana przez komendę POLL ($3F) czy POLL BUS ($40).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL ($3F) oznacza starszy protokół transmisji, w którym format strumienia danych przesłanych przez SEND HANDLER zależny jest od programu relokatora załadowanego wcześniej komendą SEND RELOCATOR ($21) i uruchomionego przez komputer.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL BUS ($40) oznacza nowszy protokół transmisji. Format strumienia danych jest ustalony z góry, a relokator rezyduje w ROM-ie systemu operacyjnego komputera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po otrzymaniu pozytywnej odpowiedzi na POLL BUS ($40) komputer rozpoczyna ładowanie kolejnych, 128-bajtowych rekordów binarnych, w liczbie do 256 (czyli pojedynczy &amp;quot;handler&amp;quot; może mieć maximum 32k). Przesyłany strumień danych musi być w [[ACX|specjalnym formacie]], który zapewnia relokowalność kodu, oraz zawiera podany explicite znacznik końca pliku - wystąpienie błędu przed napotkaniem tego znacznika powoduje przerwanie procedury z [[kody błędów|kodem błędu]] INCOMPLETE EXECUTION.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Ustawienia zmiennych DCB dla komendy SEND HANDLER wyglądają następująco:&amp;lt;/p&amp;gt;&lt;br /&gt;
* DDEVIC - kod urządzenia przesłany przez urządzenie $4F na komendę POLL BUS.&lt;br /&gt;
* DUNIT - zawsze $01&lt;br /&gt;
* DCMND - $26 - SEND HANDLER&lt;br /&gt;
* DSTATS - $40 - odczyt&lt;br /&gt;
* DTIMLO - 30 sekund&lt;br /&gt;
* DBYT - 128 bajtów&lt;br /&gt;
* DAUX1 - numer kolejny rekordu danych&lt;br /&gt;
* DAUX2 - zawsze 0&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ta, zwana też TYPE 2 POLL, służy do zainicjowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). W odpowiedzi urządzenie przesyła 12 bajtów odpowiadających kolejnym wartościom, jakie należy ustawić w bloku DCB celem załadowania kodu wykonywalnego handlera. Jest to starszy protokół transmisji zaprojektowany dla komputerów serii [[400]] i [[800]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W module [[850|Atari 850]] odpowiedzią na komendę POLL są wartości, jakie trzeba wstawić do DCB celem wykonania komendy SEND RELOCATOR ($21).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W celu uniknięcia wielokrotnego załadowania tego samego programu obsługi urządzenie na komendę POLL ($3F) odpowiada tylko raz, potem wykonanie komendy jest zablokowane aż do wyłączenia zasilania.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$40 (@)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL BUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$4F (bus master)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4 bajty&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;W komputerach serii XL oraz XE komendę tę system operacyjny przesyła do interfejsu szeregowo-równoległego przy każdym zimnym starcie; w pewnych warunkach - ale z nieco innymi parametrami - może też zostać wykonana po zainicjowaniu systemu. Jest to odpowiednik komendy POLL ($3F), jednak protokół transmisji handlera jest zunifikowany i nie wymaga od urządzenia przesyłania relokatora (uniwersalny relokator rezyduje w ROM-ie systemu operacyjnego). Analogicznie do POLL ($3F), komenda POLL BUS jest przeznaczona do zapoczątkowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). Zasadniczym adresatem jest tu moduł [[1090]] działający jako bus master.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Istnieje kilka odmian komendy POLL BUS różniących się parametrami przesyłanymi w DAUX1 i DAUX2:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TYPE 3 POLL: DAUX1 = 0 i DAUX2 = 0.&lt;br /&gt;
* TYPE 4 POLL: zobacz niżej.&lt;br /&gt;
* RESET POLL: DAUX1 = $4F i DAUX2 = $4F (&amp;quot;OO&amp;quot;)&lt;br /&gt;
* NULL POLL: DAUX1 = $4E i DAUX2 = $4E (&amp;quot;NN&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Przy zimnym starcie na początku system wysyła RESET POLL. Komenda ta powinna odblokować rozpoznawanie komendy TYPE 3 POLL we wszystkich podłączonych urządzeniach. Na RESET POLL urządzenia, oprócz potwierdzenia wykonania, nie przesyłają żadnej odpowiedzi, a komputer jej nie oczekuje.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Następnie system wysyła komendę TYPE 3 POLL. Pozytywna odpowiedź oznacza, że urządzenie nadesłało 4 bajty, z czego dwa pierwsze to ilość pamięci potrzebna do przeprowadzenia całości transmisji (musi to być parzysta wielkość). Jeśli jest to więcej niż dostępna ilość pamięci pomiędzy MEMLO a MEMTOP, system odpowiada przez NULL POLL (podobnie jak w wypadku RESET POLL, urządzenie przesyła tylko potwierdzenie wykonania), a następnie ponownie wysyła TYPE 3 POLL. W przypadku braku pamięci byłaby to pętla nieskończona, ale pojedyncze urządzenie na komendę TYPE 3 POLL może odpowiedzieć tylko raz - pętla jest więc przerywana błędem, który wystąpi po przetestowaniu wszystkich urządzeń zarządzanych przez bus mastera. Ponowna odpowiedź na TYPE 3 POLL jest możliwa dopiero po przesłaniu urządzeniu komendy RESET POLL, inaczej TYPE 3 POLL zostanie zignorowana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Trzeci przysłany bajt to identyfikator urządzenia (dla DDEVIC), które odpowiedziało na komendę i z którym będzie prowadzona dalsza komunikacja.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po stwierdzeniu poprawności odpowiedzi komputer dokonuje rezerwacji pamięci nad wartością MEMLO zaokrągloną w górę do najbliższej granicy słowa i próbuje dokonać odczytu z urządzenia, które się zgłosiło, 128 bajtów pod adres $03FD, przy użyciu innej &amp;quot;nietypowej&amp;quot; komendy, a mianowicie $26 - SEND HANDLER. Po załadowaniu i zainicjowaniu handlera pętla wraca do początku i wykonuje się cyklicznie aż do wystąpienia błędu - czyli do załadowania wszystkich handlerów będących w dyspozycji bus mastera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Procedura ładowania handlera wywoływana jest po procedurze bootowania DOS-u, ale niezależnie od jej wyniku; z czego wniosek, że &amp;quot;handler&amp;quot; może spełniać funkcję zarówno dodatku do DOS-u, jak i zostać załadowany &amp;lt;b&amp;gt;zamiast&amp;lt;/b&amp;gt; DOS-u.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Tą samą drogą można już po całkowitym uruchomieniu systemu, podczas pracy, załadować handler urządzenia &amp;lt;b&amp;gt;konkretnie wskazanego&amp;lt;/b&amp;gt;. Robi to [[CIO]] przy każdorazowej próbie otwarcia pliku na urządzeniu, którego system nie zna (nie ma takiego wpisu w tablicy handlerów).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Odpytanie bus mastera na okoliczność dysponowania takowym handlerem odbywa się za pomocą komendy TYPE 4 POLL. W DAUX1 ma się znajdować identyfikator urządzenia CIO, dla którego to urządzenia potrzebujemy handlera (np. dla magnetofonu $43, czyli &amp;quot;C&amp;quot;), w DAUX2 natomiast przesyła się numer wywoływanego urządzenia (np. dla &amp;quot;C1:&amp;quot; będzie to $01).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Pozostałe komendy====&lt;br /&gt;
&lt;br /&gt;
Komendy zdefiniowane przez Atari, na których temat brak bliższych danych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 (&amp;amp;nbsp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda wymieniana przez niektóre źródła. Szczegóły nieznane. Być może chodzi o komendę LOAD AND EXECUTE TEST w interfejsie [[850]] (zob. [[Lista_komend_SIO_według_funkcji#Atari_850|niżej]])&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG1&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050|Atari 1050]]. Wymaga przesłania 128-bajtowego bloku danych, w którym dwa pierwsze bajty decydują o tym, co stacja będzie robić (DAUX1/2 są ignorowane):&amp;lt;/p&amp;gt;&lt;br /&gt;
* $02 - test przejścia głowicy między ścieżkami&lt;br /&gt;
* $03 - przesuw głowicy za pomocą silnika krokowego o jeden krok w przód lub w tył; o kierunku decyduje następny bajt, wartość dodatnia (np. $01) powoduje przesuw w przód - czyli w kierunku ścieżki 39 - a wartość ujemna (np. $FF) przesuw wstecz, czyli w kierunku ścieżki 0. &amp;quot;Krok&amp;quot; silnika krokowego w tym wypadku to połowa odległości między ścieżkami, żeby więc tą komendą przesunąć głowicę na sąsiednią ścieżkę, trzeba zrobić to dwa razy. Uwaga: możliwe jest cofnięcie głowicy wstecz od ścieżki 0 (na tzw. ścieżkę -1).&lt;br /&gt;
* $04 - test zapisu i odczytu dyskietki; formatuje znajdującą się w stacji dyskietkę w średniej gęstości.&lt;br /&gt;
* $05 - przesuw główicy do ścieżki o numerze podanym w następnym bajcie. &lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;UWAGA: kod operacyjny ($23) jest taki sam, jak kod komendy formatowania w stacji [[XF551|Atari XF-551]] oraz [[LDW Super 2000]] i [[CA-2001]] z załadowanym [[Synchromesh]]em!&#039;&#039;&#039;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050]], służy do pomiaru prędkości obrotowej dyskietki. W zależności od wartości dwóch pierwszych bajtów przesłanego bloku danych ($00, $00 lub $00, $01) stacja przesyła czas jednego obrotu dyskietki lub wartość prędkości obrotowej w obrotach na minutę.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SPIN&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;$31&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;R (?)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;Komendy te występują jako komendy dyskowe na liście rozkazów SIO w dokumentacji sporządzonej przez Atari. Nie znam jednak stacji, która by na nie reagowała. Mogą to być komendy stacji [[810]], jakieś komendy diagnostyczne jej prototypu, albo komendy planowane, lecz nie zaimplementowane. Dostępna dokumentacja nie zawiera ich opisu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$55 (U)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MOTOR ON&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$56 (V)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VERIFY SECTOR&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Stacja odczytuje sektor wskazany przez DAUX1/2 i zwraca komputerowi informację, czy da się on odczytać bez błędów. Dane zawarte w sektorze nie są transmitowane do komputera. Komenda ta występuje w dokumentacji SIO sporządzonej przez Atari, ale żadna ze stacji marki Atari jej nie rozpoznaje.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Komendy specyficzne dla poszczególnych urządzeń ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Stacje dysków Atari 1450XLD =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$01 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET LARGE MODE&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;large mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako logiczną całość liczącą 2080 sektorów po 128 bajtów (260k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$02 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET SMALL MODE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;small mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako dwie oddzielne dyskietki liczące po 1040 sektorów po 128 bajtów (= 2x130k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC IN&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda zapisująca do stacji wskazany bufor wypełniony bliżej nieokreślonymi danymi diagnostycznymi.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC OUT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda odczytująca bliżej niesprecyzowane dane diagnostyczne do wskazanego bufora.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B1 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B2 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Atari 850 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONTROL&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 4&amp;gt;$50&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca linie DTR, RTS i XMT (TX) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 34,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ustawiająca różne parametry pracy (m.in. szybkość transmisji) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 36,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;STREAM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda uruchamiająca tryb równoległego wejścia/wyjścia (&amp;lt;i&amp;gt;concurrent I/O&amp;lt;/i&amp;gt;). Interfejs [[850|Atari 850]] w odpowiedzi zwraca sekwencję liczb, według której handler urządzenia &amp;quot;R:&amp;quot; ustawia [[Rejestry_POKEY-a|rejestry układu POKEY]]  (kolejno AUDF,AUDC 1-4 oraz AUDCTL). Przykładowa sekwencja dla szybkości transmisji 300bps jest następująca: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78. Komenda jest używana przez handler przy poleceniu [[CIO]] XIO 40,#i,0,0,&amp;quot;Rn:&amp;quot; (START CONCURRENT MODE I/O)&amp;lt;/p&amp;gt;.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;LOAD AND EXECUTE TEST&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości przesyłanego kodu&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda niepublikowana w oficjalnej dokumentacji. Powoduje wczytanie z komputera kodu programu, a następnie uruchomienie go przez interfejs [[850|Atari 850]]. W DAUX1 podawany jest rozmiar przesyłanego kodu. Ze względu na specyfikę procedury odbioru danych, kod powinien być wysyłany od ostatniego do pierwszego bajtu.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== ATR 8000 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$47 (G)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GO TO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$5A ([[ATR 8000]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda pozwala na wywoływanie funkcji zdefiniowanych w ROM-ie modułu [[ATR 8000]] (q.v.).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Indus GT/LDW Super 2000/CA-2001 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT SKEWED&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda formatowania z szybkim [[przeplot]]em w stacjach [[Indus GT]], [[LDW Super 2000]] oraz [[CA-2001]] z załadowanym [[Synchromesh]]em.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Kod operacyjny jest taki sam, jak komendy formatowania w gęstości [[DSDD]] dla stacji [[XF551]] oraz jednej z komend diagnostycznych w [[1050]].&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD/EXECUTE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Różna&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda zaimplementowana w stacjach [[Indus GT]], [[LDW Super 2000]] i [[CA-2001]], pozwalająca na przesyłanie do stacji programów użytkownika i uruchamianie ich. Szczegóły: patrz [[Programowanie stacji LDW Super 2000 i CA-2001]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Happy Warp =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$48 (H)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;HAPPY CONFIG&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji z rozszerzeniem [[Happy Warp]]. Szczegóły: patrz [[Happy_Warp#Konfiguracja|Happy Warp - Konfiguracja]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== KMK/JŻ IDE =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$EC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;IDENTIFY DRIVE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;512 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W [[KMK/JŻ IDE]] komenda powoduje odczytanie bloku identyfikacyjnego napędu IDE, na którym założona jest wskazana partycja, i wpisanie go do bufora wskazanego przez DBUFA. Kolejność bajtów w tym bloku jest odwrotna od normalnej, tzn. wszystkie pary bajtów należy zamienić miejscami przed odczytaniem danych z tego bufora - dotyczy to również informacji tekstowej.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Multi I/O =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MEDIA CAPACITY INFO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nowe wersje firmware [[Multi I/O]] (od v. 1.4 wzwyż) w odpowiedzi na tę komendę zwracają informację o pojemności wskazanego dysku SCSI w [http://en.wikipedia.org/wiki/SCSI_Read_Capacity_Command tym formacie].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Speedy 1050 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;AUTOMATIC FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 11&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Speedy 1050]] w odpowiedni na tę komendę formatuje dyskietkę w zadanej gęstości (DAUX1 = $00 pojedyncza, $20 podwójna, $80 średnia) i, o ile konfiguracja stacji tego nie zabrania, zapisuje bootsektory i [[VTOC]] zgodne z [[DOS 2.0]] lub (w średniej gęstości) [[DOS 2.5]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;REGISTER COMMAND&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje zarejestrowanie komendy uzytkownika. Dane powinny zawierać kolejno:&lt;br /&gt;
* kod komendy&lt;br /&gt;
* młodszy bajt adresu w pamięci stacji, gdzie znajduje się podprogram obsługi&lt;br /&gt;
* starszy bajt tego adresu&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli dana komenda jest już jakoś przypisana, to przypisanie zostanie zmienione. Gdy adres ma wartość $0000, komenda zostanie wykasowana z pamięci stacji.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$44 (D)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DISPLAY&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja wyświetlacza stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: wyświetlanie kodów błędów na wyświetlaczu stacji&lt;br /&gt;
* bit 6: wyświetlanie numeru ścieżki w kodzie szesnastkowym&lt;br /&gt;
* bit 5: formatowanie bez weryfikacji&lt;br /&gt;
* bit 4: zablokowanie zapisu struktury logicznej dyskietki po komendzie $20&lt;br /&gt;
* bit 3: niewyłączanie silnika po komendzie $51&lt;br /&gt;
* bit 2: nieużywany&lt;br /&gt;
* bit 1: nieużywany&lt;br /&gt;
* bit 0: sygnał dźwiękowy w wypadku błędu&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4B (K)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DRIVE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: zapis i odczyt dyskietki bez buforowania (0 po zmianie dyskietki)&lt;br /&gt;
* bit 6: zapis i odczyt ścieżki bez buforowania (0 po zmianie ścieżki)&lt;br /&gt;
* bit 5: nieużywany&lt;br /&gt;
* bit 4: nieużywany&lt;br /&gt;
* bit 3: wyłączenie buforowania ścieżek&lt;br /&gt;
* bit 2: wyłączenie weryfikacji dla komendy $57 (W)&lt;br /&gt;
* bit 1: zapis sektora z pominięciem buforowania&lt;br /&gt;
* bit 0: odczyt sektora z pominięciem buforowania&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4C (L)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP, NO ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] wywołanie wewnętrznej procedury ROM-u stacji spod adresu przekazanego w DAUX1/2 (młodszy/starszy). Potwierdzenie wykonania rozkazu musi przesłać wywoływany podprogram.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP WITH ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] to samo, to $4C, ale potwierdzenie rozkazu jest przesyłane automatycznie.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FLUSH&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda ta powoduje natychmiastowy zapis zawartości bufora zapisu na dyskietkę i zatrzymanie silnika (normalnie stacja czeka z tym ok. 2 sekund po transmisji sektora).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$60 (`)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] zapis na dyskietkę całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$62 (b)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] odczyt z dyskietki całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$68 (h)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SIO LEN&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie dwóch bajtów określających wielkość procedury SIO, którą mozna od stacji uzyskać komendą $69. &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$69 (i)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND SIO&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wynik komendy $68&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie programu szybkiej transmisji SIO. Bajty DBYT powinny być ustawione na wartość zwróconą przez komendę $68. DAUX1/2 to adres w pamięci Atari, gdzie procedura ma zostać załadowana (stacja dokonuje relokacji kodu pod ten adres przed wysłaniem go do komputera).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== TOMS Multi Drive =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$49 (I)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;INDEX FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależnie od wybranej gęstości&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[TOMS Multi Drive]] komenda ta działa tak samo, jak zwykłe formatowanie ($21), z tym wyjątkiem, że do oznaczenia początku ścieżki stacja używa otworu indeksowego (normalnie w stacjach Atari ścieżka zaczyna się tam, gdzie akurat wypadnie). Służy to głównie do zabezpieczania programów przez tzw. synchroniczne sektory. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== US Doubler =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HIGH SPEED INDEX&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Stacje kompatybilne z [[US Doubler]] w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącą do ustawienia częstotliwości nośnej dla przyspieszonej transmisji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$66 (f)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CUSTOM FORMAT&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda formatowania z zadanym przeplotem zaimplementowana w stacjach [[US Doubler]]. Wysyłane 128 bajtów określa:&lt;br /&gt;
* w pierwszych 12 bajtach: zadaną gęstość, tak jak w komendzie WRITE PERCOM&lt;br /&gt;
* następne 18 lub 26 bajtów to fizyczne numery sektorów na ścieżce w zadanej kolejności, licząc od 1.&lt;br /&gt;
&amp;lt;p&amp;gt;Przykładowe przeploty podaje hasło [[Przeplot]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== [[XFD601|XFD601/602]] =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GET COMMAND BUFFER&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zwraca historię ostatnich 32 wywołań na łączu szeregowym. Wszystkich wywołań - nie tylko do stacji. Każdy wpis zawiera 4 bajty - dokładnie te same, jakie są wysyłane do urządzenia zewnetrznego przez komputer, czyli: [[SIO#DCB|DDEVIC]], [[SIO#DCB|DCMND]], [[SIO#DCB|DAUX1]], [[SIO#DCB|DAUX2]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Po odebraniu tego rozkazu stacja zwraca tzw. adres pierwszego napotkanego sektora, w formie 6 bajtów: numer scieżki, numer strony, numer sektora, rozmiar sektora, 2 bajty CRC.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit|SIO, Lista komend według funkcji]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34992</id>
		<title>Lista komend SIO według funkcji</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34992"/>
		<updated>2015-07-11T19:40:09Z</updated>

		<summary type="html">&lt;p&gt;Trub: /* Atari 850 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Główny artykuł: [[SIO]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Podstawowy zestaw komend====&lt;br /&gt;
&lt;br /&gt;
Poniższa tabela wyszczególnia podstawowe minimum komend rozpoznawanych przez urządzenia peryferyjne Atari.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DISK&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Formatuje dyskietkę w wybranej uprzednio (komendami PERCOM) gęstości, lub w [[Formaty dyskietek|pojedynczej gęstości]] (90k), jeśli stacja nie jest konfigurowalna. Zwraca listę zawierającą numery wadliwych sektorów (kolejno LSB/MSB) wykrytych w czasie formatowania, zakończoną wartością $FFFF. Niektóre stacje zwracają tu pustą listę ($FFFF, a dalej same zera), nawet jeśli na dyskietce są wadliwe sektory: po prostu dyskietki nie są już tak drogie, jak pod koniec lat siedemdziesiątych XX wieku...&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$50 (P)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;PUT SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31 i $60&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zapisuje do urządzenia blok danych wskazany przez DBUFA, a zawierający DBYT bajtów. W przypadku stacji dysków jest to zapis bez weryfikacji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$52 (R)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SECTOR&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Odczytuje z urządzenia blok danych o wielkości DBYT bajtów i zapisuje go w pamięci pod adresem wskazanym przez DBUFA.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$53 (S)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ STATUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wszystkie oprócz magnetofonu&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależna od urządzenia&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia blok statusu i zapisuje go pod adresem wskazanym przez DBUFA. Blok statusu dla RS-232 ma wielkość 2 bajtów, dla drukarki i stacji dysków - 4. Typowo komenda ta służy to stwierdzenia, czy urządzenie jest gotowe do pracy. W przypadku magnetofonu obowiązuje założenie, że jest on zawsze podłączony i gotów, nie ma więc potrzeby sprawdzania jego statusu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan=3&amp;gt;$57 (W)&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;WRITE SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Wszystkie&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;To samo, co PUT SECTOR ($50). W przypadku stacji dysków zapis przeprowadzany jest z weryfikacją.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;W przypadku drukarki długość bufora może wynosić 20, 29 albo 40 znaków (na ogół to ostatnie), a znaczenie DAUX2 jest jak następuje:&lt;br /&gt;
* $4E (N) drukowanie normalne&lt;br /&gt;
* $53 (S) druk obrócony o 90 stopni&lt;br /&gt;
* $44 (D) druk normalny z podwójną szerokością znaków&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Dla interfejsu [[850|Atari 850]] wielkość bufora wynosi 64 bajty.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy dodatkowe====&lt;br /&gt;
&lt;br /&gt;
Rozpoznawane przez urządzenia peryferyjne Atari komendy dodatkowe w stosunku do powyżej wspomnianego niezbędnego minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$22 (&amp;quot;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT MEDIUM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości średniej]] (130k). Komenda wprowadzona razem ze stacją [[1050]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DSDD&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;256 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości podwójnej dwustronnej]] (360k). Komenda wprowadzona razem ze stacją [[XF551|Atari XF-551]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy PERCOM====&lt;br /&gt;
&lt;br /&gt;
Komendy PERCOM noszą nazwę od stacji dysków firmy [[Percom Data Corp.|PERCOM]], w których po raz pierwszy się pojawiły. Nie są rozpoznawane przez stacje dysków firmy Atari (z wyjątkiem [[XF551|Atari XF-551]]), są jednak zaimplementowane we wszystkich rozszerzeniach oraz stacjach innych producentów i stanowią de facto standard.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4E (N)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ PERCOM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;12 bajtów ([[SIO#Blok_PERCOM|Blok PERCOM]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia dwunastobajtowy blok danych opisujący jego bieżącą konfigurację, tj. przede wszystkim format znajdującej się w stacji dyskietki.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4F (O)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE PERCOM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zapisuje do urządzenia dwanaście bajtów opisujących żądaną konfigurację, tj. liczbę ścieżek, stron dyskietki, sektorów na ścieżkę, wielkość sektora, gęstość. Przyjąwszy komendę stacja powinna natychmiast przestawić się na żądane ustawienia, o ile jest w stanie je zrealizować.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli zadanych ustawień nie da się zrealizować, stacja w teorii powinna odrzucić przesłany blok danych zgłaszając komputerowi błąd wykonania (co skutkuje [[Kody_błędów_Atari_OS|kodem błędu]] nr 144). W praktyce wiele stacji stosuje uproszczoną procedurę przyjmując parametry najbliższe zdefiniowanym przez przesłany blok danych. Jednak to, że parametry są &amp;quot;najbliższe&amp;quot;, nie oznacza, że muszą być w ogóle bliskie: np. zażądanie formatu 360 KB od stacji [[Top Drive 1050]] spowoduje jej ustawienie się w [[DD]] (180k), bo to jest maximum, jakie stacja jest w stanie zrealizować. Komplikuje to zadanie programom formatującym, które w celu zapisania prawidłowego katalogu muszą sprawdzać, czy żądana od stacji pojemność dyskietki została rzeczywiście wybrana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dyskietkę zgodnie z zapisaną konfiguracją.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ]] IDE nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do definiowania wielkości partycji służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy specjalne====&lt;br /&gt;
&lt;br /&gt;
Komendy wspomagające automatyczną instalację w systemie handlerów podłączonych urządzeń zewnętrznych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND RELOCATOR&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg odpowiedzi na komendę POLL ($3F)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jest to komenda uzupełniająca do opisanego niżej POLL ($3F). Powoduje przesłanie przez urządzenie programu odpowiedzialnego za załadowanie (komendą SEND HANDLER) i relokację właściwego handlera. Wszystkie parametry transmisji dla SEND RELOCATOR przesyłane są na komendę POLL ($3F). Program relokatora - po jego załadowaniu - uruchamia się od adresu DBUFA + 6. Przejmuje on na siebie wykonanie reszty operacji, a w wypadku niepowodzenia sygnalizuje błąd przez ustawienie bitu Carry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komendę SEND RELOCATOR rozpoznaje moduł [[850|Atari 850]], a może dotyczyć też innych urządzeń, oprócz stacji dysków (gdzie kod operacyjny $21 oznacza formatowanie dyskietki).&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$26 (&amp;amp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HANDLER&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator przesłany przez SEND RELOCATOR ($21) lub wg odpowiedzi na komendę POLL BUS ($40)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator (przesłany przez urządzenie lub rezydujący)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda SEND HANDLER służy do załadowania z urządzenia kodu programu obsługi (handlera) tego urządzenia. Może ona działać różnie w zależności od tego, czy transmisja została zainicjowana przez komendę POLL ($3F) czy POLL BUS ($40).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL ($3F) oznacza starszy protokół transmisji, w którym format strumienia danych przesłanych przez SEND HANDLER zależny jest od programu relokatora załadowanego wcześniej komendą SEND RELOCATOR ($21) i uruchomionego przez komputer.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL BUS ($40) oznacza nowszy protokół transmisji. Format strumienia danych jest ustalony z góry, a relokator rezyduje w ROM-ie systemu operacyjnego komputera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po otrzymaniu pozytywnej odpowiedzi na POLL BUS ($40) komputer rozpoczyna ładowanie kolejnych, 128-bajtowych rekordów binarnych, w liczbie do 256 (czyli pojedynczy &amp;quot;handler&amp;quot; może mieć maximum 32k). Przesyłany strumień danych musi być w [[ACX|specjalnym formacie]], który zapewnia relokowalność kodu, oraz zawiera podany explicite znacznik końca pliku - wystąpienie błędu przed napotkaniem tego znacznika powoduje przerwanie procedury z [[kody błędów|kodem błędu]] INCOMPLETE EXECUTION.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Ustawienia zmiennych DCB dla komendy SEND HANDLER wyglądają następująco:&amp;lt;/p&amp;gt;&lt;br /&gt;
* DDEVIC - kod urządzenia przesłany przez urządzenie $4F na komendę POLL BUS.&lt;br /&gt;
* DUNIT - zawsze $01&lt;br /&gt;
* DCMND - $26 - SEND HANDLER&lt;br /&gt;
* DSTATS - $40 - odczyt&lt;br /&gt;
* DTIMLO - 30 sekund&lt;br /&gt;
* DBYT - 128 bajtów&lt;br /&gt;
* DAUX1 - numer kolejny rekordu danych&lt;br /&gt;
* DAUX2 - zawsze 0&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ta, zwana też TYPE 2 POLL, służy do zainicjowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). W odpowiedzi urządzenie przesyła 12 bajtów odpowiadających kolejnym wartościom, jakie należy ustawić w bloku DCB celem załadowania kodu wykonywalnego handlera. Jest to starszy protokół transmisji zaprojektowany dla komputerów serii [[400]] i [[800]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W module [[850|Atari 850]] odpowiedzią na komendę POLL są wartości, jakie trzeba wstawić do DCB celem wykonania komendy SEND RELOCATOR ($21).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W celu uniknięcia wielokrotnego załadowania tego samego programu obsługi urządzenie na komendę POLL ($3F) odpowiada tylko raz, potem wykonanie komendy jest zablokowane aż do wyłączenia zasilania.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$40 (@)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL BUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$4F (bus master)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4 bajty&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;W komputerach serii XL oraz XE komendę tę system operacyjny przesyła do interfejsu szeregowo-równoległego przy każdym zimnym starcie; w pewnych warunkach - ale z nieco innymi parametrami - może też zostać wykonana po zainicjowaniu systemu. Jest to odpowiednik komendy POLL ($3F), jednak protokół transmisji handlera jest zunifikowany i nie wymaga od urządzenia przesyłania relokatora (uniwersalny relokator rezyduje w ROM-ie systemu operacyjnego). Analogicznie do POLL ($3F), komenda POLL BUS jest przeznaczona do zapoczątkowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). Zasadniczym adresatem jest tu moduł [[1090]] działający jako bus master.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Istnieje kilka odmian komendy POLL BUS różniących się parametrami przesyłanymi w DAUX1 i DAUX2:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TYPE 3 POLL: DAUX1 = 0 i DAUX2 = 0.&lt;br /&gt;
* TYPE 4 POLL: zobacz niżej.&lt;br /&gt;
* RESET POLL: DAUX1 = $4F i DAUX2 = $4F (&amp;quot;OO&amp;quot;)&lt;br /&gt;
* NULL POLL: DAUX1 = $4E i DAUX2 = $4E (&amp;quot;NN&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Przy zimnym starcie na początku system wysyła RESET POLL. Komenda ta powinna odblokować rozpoznawanie komendy TYPE 3 POLL we wszystkich podłączonych urządzeniach. Na RESET POLL urządzenia, oprócz potwierdzenia wykonania, nie przesyłają żadnej odpowiedzi, a komputer jej nie oczekuje.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Następnie system wysyła komendę TYPE 3 POLL. Pozytywna odpowiedź oznacza, że urządzenie nadesłało 4 bajty, z czego dwa pierwsze to ilość pamięci potrzebna do przeprowadzenia całości transmisji (musi to być parzysta wielkość). Jeśli jest to więcej niż dostępna ilość pamięci pomiędzy MEMLO a MEMTOP, system odpowiada przez NULL POLL (podobnie jak w wypadku RESET POLL, urządzenie przesyła tylko potwierdzenie wykonania), a następnie ponownie wysyła TYPE 3 POLL. W przypadku braku pamięci byłaby to pętla nieskończona, ale pojedyncze urządzenie na komendę TYPE 3 POLL może odpowiedzieć tylko raz - pętla jest więc przerywana błędem, który wystąpi po przetestowaniu wszystkich urządzeń zarządzanych przez bus mastera. Ponowna odpowiedź na TYPE 3 POLL jest możliwa dopiero po przesłaniu urządzeniu komendy RESET POLL, inaczej TYPE 3 POLL zostanie zignorowana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Trzeci przysłany bajt to identyfikator urządzenia (dla DDEVIC), które odpowiedziało na komendę i z którym będzie prowadzona dalsza komunikacja.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po stwierdzeniu poprawności odpowiedzi komputer dokonuje rezerwacji pamięci nad wartością MEMLO zaokrągloną w górę do najbliższej granicy słowa i próbuje dokonać odczytu z urządzenia, które się zgłosiło, 128 bajtów pod adres $03FD, przy użyciu innej &amp;quot;nietypowej&amp;quot; komendy, a mianowicie $26 - SEND HANDLER. Po załadowaniu i zainicjowaniu handlera pętla wraca do początku i wykonuje się cyklicznie aż do wystąpienia błędu - czyli do załadowania wszystkich handlerów będących w dyspozycji bus mastera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Procedura ładowania handlera wywoływana jest po procedurze bootowania DOS-u, ale niezależnie od jej wyniku; z czego wniosek, że &amp;quot;handler&amp;quot; może spełniać funkcję zarówno dodatku do DOS-u, jak i zostać załadowany &amp;lt;b&amp;gt;zamiast&amp;lt;/b&amp;gt; DOS-u.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Tą samą drogą można już po całkowitym uruchomieniu systemu, podczas pracy, załadować handler urządzenia &amp;lt;b&amp;gt;konkretnie wskazanego&amp;lt;/b&amp;gt;. Robi to [[CIO]] przy każdorazowej próbie otwarcia pliku na urządzeniu, którego system nie zna (nie ma takiego wpisu w tablicy handlerów).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Odpytanie bus mastera na okoliczność dysponowania takowym handlerem odbywa się za pomocą komendy TYPE 4 POLL. W DAUX1 ma się znajdować identyfikator urządzenia CIO, dla którego to urządzenia potrzebujemy handlera (np. dla magnetofonu $43, czyli &amp;quot;C&amp;quot;), w DAUX2 natomiast przesyła się numer wywoływanego urządzenia (np. dla &amp;quot;C1:&amp;quot; będzie to $01).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Pozostałe komendy====&lt;br /&gt;
&lt;br /&gt;
Komendy zdefiniowane przez Atari, na których temat brak bliższych danych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 (&amp;amp;nbsp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda wymieniana przez niektóre źródła. Szczegóły nieznane. Być może chodzi o komendę LOAD AND EXECUTE TEST w interfejsie [[850]] (zob. [[Lista_komend_SIO_według_funkcji#Atari_850|niżej]])&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG1&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050|Atari 1050]]. Wymaga przesłania 128-bajtowego bloku danych, w którym dwa pierwsze bajty decydują o tym, co stacja będzie robić (DAUX1/2 są ignorowane):&amp;lt;/p&amp;gt;&lt;br /&gt;
* $02 - test przejścia głowicy między ścieżkami&lt;br /&gt;
* $03 - przesuw głowicy za pomocą silnika krokowego o jeden krok w przód lub w tył; o kierunku decyduje następny bajt, wartość dodatnia (np. $01) powoduje przesuw w przód - czyli w kierunku ścieżki 39 - a wartość ujemna (np. $FF) przesuw wstecz, czyli w kierunku ścieżki 0. &amp;quot;Krok&amp;quot; silnika krokowego w tym wypadku to połowa odległości między ścieżkami, żeby więc tą komendą przesunąć głowicę na sąsiednią ścieżkę, trzeba zrobić to dwa razy. Uwaga: możliwe jest cofnięcie głowicy wstecz od ścieżki 0 (na tzw. ścieżkę -1).&lt;br /&gt;
* $04 - test zapisu i odczytu dyskietki; formatuje znajdującą się w stacji dyskietkę w średniej gęstości.&lt;br /&gt;
* $05 - przesuw główicy do ścieżki o numerze podanym w następnym bajcie. &lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;UWAGA: kod operacyjny ($23) jest taki sam, jak kod komendy formatowania w stacji [[XF551|Atari XF-551]] oraz [[LDW Super 2000]] i [[CA-2001]] z załadowanym [[Synchromesh]]em!&#039;&#039;&#039;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050]], służy do pomiaru prędkości obrotowej dyskietki. W zależności od wartości dwóch pierwszych bajtów przesłanego bloku danych ($00, $00 lub $00, $01) stacja przesyła czas jednego obrotu dyskietki lub wartość prędkości obrotowej w obrotach na minutę.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SPIN&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;$31&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;R (?)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;Komendy te występują jako komendy dyskowe na liście rozkazów SIO w dokumentacji sporządzonej przez Atari. Nie znam jednak stacji, która by na nie reagowała. Mogą to być komendy stacji [[810]], jakieś komendy diagnostyczne jej prototypu, albo komendy planowane, lecz nie zaimplementowane. Dostępna dokumentacja nie zawiera ich opisu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$55 (U)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MOTOR ON&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$56 (V)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VERIFY SECTOR&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Stacja odczytuje sektor wskazany przez DAUX1/2 i zwraca komputerowi informację, czy da się on odczytać bez błędów. Dane zawarte w sektorze nie są transmitowane do komputera. Komenda ta występuje w dokumentacji SIO sporządzonej przez Atari, ale żadna ze stacji marki Atari jej nie rozpoznaje.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Komendy specyficzne dla poszczególnych urządzeń ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Stacje dysków Atari 1450XLD =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$01 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET LARGE MODE&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;large mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako logiczną całość liczącą 2080 sektorów po 128 bajtów (260k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$02 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET SMALL MODE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;small mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako dwie oddzielne dyskietki liczące po 1040 sektorów po 128 bajtów (= 2x130k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC IN&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda zapisująca do stacji wskazany bufor wypełniony bliżej nieokreślonymi danymi diagnostycznymi.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC OUT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda odczytująca bliżej niesprecyzowane dane diagnostyczne do wskazanego bufora.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B1 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B2 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Atari 850 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONTROL&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 4&amp;gt;$50&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca linie DTR, RTS i XMT (TX) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 34,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ustawiająca różne parametry pracy (m.in. szybkość transmisji) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 36,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;STREAM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda uruchamiająca tryb równoległego wejścia/wyjścia (&amp;lt;i&amp;gt;concurrent I/O&amp;lt;/i&amp;gt;). Interfejs [[850|Atari 850]] w odpowiedzi zwraca sekwencję liczb, według której handler urządzenia &amp;quot;R:&amp;quot; ustawia [[Rejestry_POKEY-a|rejestry układu POKEY]]  (kolejno AUDF,AUDC 1-4 oraz AUDCTL). Przykładowa sekwencja dla szybkości transmisji 300bps jest następująca: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78. Komenda jest używana przez handler przy poleceniu [[CIO]] XIO 40,#i,0,0,&amp;quot;Rn:&amp;quot; (START CONCURRENT MODE I/O)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;LOAD AND EXECUTE TEST&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości przesyłanego kodu&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda niepublikowana w oficjalnej dokumentacji. Powoduje wczytanie z komputera kodu programu, a następnie uruchomienie go przez interfejs [[850|Atari 850]]. W DAUX1 podawany jest rozmiar przesyłanego kodu. Ze względu na specyfikę procedury odbioru danych, kod powinien być wysyłany od ostatniego do pierwszego bajtu.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== ATR 8000 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$47 (G)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GO TO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$5A ([[ATR 8000]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda pozwala na wywoływanie funkcji zdefiniowanych w ROM-ie modułu [[ATR 8000]] (q.v.).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Indus GT/LDW Super 2000/CA-2001 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT SKEWED&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda formatowania z szybkim [[przeplot]]em w stacjach [[Indus GT]], [[LDW Super 2000]] oraz [[CA-2001]] z załadowanym [[Synchromesh]]em.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Kod operacyjny jest taki sam, jak komendy formatowania w gęstości [[DSDD]] dla stacji [[XF551]] oraz jednej z komend diagnostycznych w [[1050]].&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD/EXECUTE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Różna&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda zaimplementowana w stacjach [[Indus GT]], [[LDW Super 2000]] i [[CA-2001]], pozwalająca na przesyłanie do stacji programów użytkownika i uruchamianie ich. Szczegóły: patrz [[Programowanie stacji LDW Super 2000 i CA-2001]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Happy Warp =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$48 (H)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;HAPPY CONFIG&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji z rozszerzeniem [[Happy Warp]]. Szczegóły: patrz [[Happy_Warp#Konfiguracja|Happy Warp - Konfiguracja]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== KMK/JŻ IDE =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$EC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;IDENTIFY DRIVE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;512 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W [[KMK/JŻ IDE]] komenda powoduje odczytanie bloku identyfikacyjnego napędu IDE, na którym założona jest wskazana partycja, i wpisanie go do bufora wskazanego przez DBUFA. Kolejność bajtów w tym bloku jest odwrotna od normalnej, tzn. wszystkie pary bajtów należy zamienić miejscami przed odczytaniem danych z tego bufora - dotyczy to również informacji tekstowej.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Multi I/O =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MEDIA CAPACITY INFO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nowe wersje firmware [[Multi I/O]] (od v. 1.4 wzwyż) w odpowiedzi na tę komendę zwracają informację o pojemności wskazanego dysku SCSI w [http://en.wikipedia.org/wiki/SCSI_Read_Capacity_Command tym formacie].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Speedy 1050 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;AUTOMATIC FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 11&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Speedy 1050]] w odpowiedni na tę komendę formatuje dyskietkę w zadanej gęstości (DAUX1 = $00 pojedyncza, $20 podwójna, $80 średnia) i, o ile konfiguracja stacji tego nie zabrania, zapisuje bootsektory i [[VTOC]] zgodne z [[DOS 2.0]] lub (w średniej gęstości) [[DOS 2.5]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;REGISTER COMMAND&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje zarejestrowanie komendy uzytkownika. Dane powinny zawierać kolejno:&lt;br /&gt;
* kod komendy&lt;br /&gt;
* młodszy bajt adresu w pamięci stacji, gdzie znajduje się podprogram obsługi&lt;br /&gt;
* starszy bajt tego adresu&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli dana komenda jest już jakoś przypisana, to przypisanie zostanie zmienione. Gdy adres ma wartość $0000, komenda zostanie wykasowana z pamięci stacji.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$44 (D)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DISPLAY&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja wyświetlacza stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: wyświetlanie kodów błędów na wyświetlaczu stacji&lt;br /&gt;
* bit 6: wyświetlanie numeru ścieżki w kodzie szesnastkowym&lt;br /&gt;
* bit 5: formatowanie bez weryfikacji&lt;br /&gt;
* bit 4: zablokowanie zapisu struktury logicznej dyskietki po komendzie $20&lt;br /&gt;
* bit 3: niewyłączanie silnika po komendzie $51&lt;br /&gt;
* bit 2: nieużywany&lt;br /&gt;
* bit 1: nieużywany&lt;br /&gt;
* bit 0: sygnał dźwiękowy w wypadku błędu&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4B (K)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DRIVE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: zapis i odczyt dyskietki bez buforowania (0 po zmianie dyskietki)&lt;br /&gt;
* bit 6: zapis i odczyt ścieżki bez buforowania (0 po zmianie ścieżki)&lt;br /&gt;
* bit 5: nieużywany&lt;br /&gt;
* bit 4: nieużywany&lt;br /&gt;
* bit 3: wyłączenie buforowania ścieżek&lt;br /&gt;
* bit 2: wyłączenie weryfikacji dla komendy $57 (W)&lt;br /&gt;
* bit 1: zapis sektora z pominięciem buforowania&lt;br /&gt;
* bit 0: odczyt sektora z pominięciem buforowania&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4C (L)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP, NO ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] wywołanie wewnętrznej procedury ROM-u stacji spod adresu przekazanego w DAUX1/2 (młodszy/starszy). Potwierdzenie wykonania rozkazu musi przesłać wywoływany podprogram.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP WITH ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] to samo, to $4C, ale potwierdzenie rozkazu jest przesyłane automatycznie.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FLUSH&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda ta powoduje natychmiastowy zapis zawartości bufora zapisu na dyskietkę i zatrzymanie silnika (normalnie stacja czeka z tym ok. 2 sekund po transmisji sektora).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$60 (`)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] zapis na dyskietkę całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$62 (b)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] odczyt z dyskietki całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$68 (h)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SIO LEN&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie dwóch bajtów określających wielkość procedury SIO, którą mozna od stacji uzyskać komendą $69. &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$69 (i)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND SIO&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wynik komendy $68&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie programu szybkiej transmisji SIO. Bajty DBYT powinny być ustawione na wartość zwróconą przez komendę $68. DAUX1/2 to adres w pamięci Atari, gdzie procedura ma zostać załadowana (stacja dokonuje relokacji kodu pod ten adres przed wysłaniem go do komputera).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== TOMS Multi Drive =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$49 (I)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;INDEX FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależnie od wybranej gęstości&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[TOMS Multi Drive]] komenda ta działa tak samo, jak zwykłe formatowanie ($21), z tym wyjątkiem, że do oznaczenia początku ścieżki stacja używa otworu indeksowego (normalnie w stacjach Atari ścieżka zaczyna się tam, gdzie akurat wypadnie). Służy to głównie do zabezpieczania programów przez tzw. synchroniczne sektory. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== US Doubler =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HIGH SPEED INDEX&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Stacje kompatybilne z [[US Doubler]] w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącą do ustawienia częstotliwości nośnej dla przyspieszonej transmisji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$66 (f)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CUSTOM FORMAT&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda formatowania z zadanym przeplotem zaimplementowana w stacjach [[US Doubler]]. Wysyłane 128 bajtów określa:&lt;br /&gt;
* w pierwszych 12 bajtach: zadaną gęstość, tak jak w komendzie WRITE PERCOM&lt;br /&gt;
* następne 18 lub 26 bajtów to fizyczne numery sektorów na ścieżce w zadanej kolejności, licząc od 1.&lt;br /&gt;
&amp;lt;p&amp;gt;Przykładowe przeploty podaje hasło [[Przeplot]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== [[XFD601|XFD601/602]] =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GET COMMAND BUFFER&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zwraca historię ostatnich 32 wywołań na łączu szeregowym. Wszystkich wywołań - nie tylko do stacji. Każdy wpis zawiera 4 bajty - dokładnie te same, jakie są wysyłane do urządzenia zewnetrznego przez komputer, czyli: [[SIO#DCB|DDEVIC]], [[SIO#DCB|DCMND]], [[SIO#DCB|DAUX1]], [[SIO#DCB|DAUX2]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Po odebraniu tego rozkazu stacja zwraca tzw. adres pierwszego napotkanego sektora, w formie 6 bajtów: numer scieżki, numer strony, numer sektora, rozmiar sektora, 2 bajty CRC.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit|SIO, Lista komend według funkcji]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34991</id>
		<title>Lista komend SIO według funkcji</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34991"/>
		<updated>2015-07-11T19:39:31Z</updated>

		<summary type="html">&lt;p&gt;Trub: /* Atari 850 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Główny artykuł: [[SIO]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Podstawowy zestaw komend====&lt;br /&gt;
&lt;br /&gt;
Poniższa tabela wyszczególnia podstawowe minimum komend rozpoznawanych przez urządzenia peryferyjne Atari.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DISK&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Formatuje dyskietkę w wybranej uprzednio (komendami PERCOM) gęstości, lub w [[Formaty dyskietek|pojedynczej gęstości]] (90k), jeśli stacja nie jest konfigurowalna. Zwraca listę zawierającą numery wadliwych sektorów (kolejno LSB/MSB) wykrytych w czasie formatowania, zakończoną wartością $FFFF. Niektóre stacje zwracają tu pustą listę ($FFFF, a dalej same zera), nawet jeśli na dyskietce są wadliwe sektory: po prostu dyskietki nie są już tak drogie, jak pod koniec lat siedemdziesiątych XX wieku...&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$50 (P)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;PUT SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31 i $60&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zapisuje do urządzenia blok danych wskazany przez DBUFA, a zawierający DBYT bajtów. W przypadku stacji dysków jest to zapis bez weryfikacji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$52 (R)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SECTOR&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Odczytuje z urządzenia blok danych o wielkości DBYT bajtów i zapisuje go w pamięci pod adresem wskazanym przez DBUFA.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$53 (S)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ STATUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wszystkie oprócz magnetofonu&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależna od urządzenia&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia blok statusu i zapisuje go pod adresem wskazanym przez DBUFA. Blok statusu dla RS-232 ma wielkość 2 bajtów, dla drukarki i stacji dysków - 4. Typowo komenda ta służy to stwierdzenia, czy urządzenie jest gotowe do pracy. W przypadku magnetofonu obowiązuje założenie, że jest on zawsze podłączony i gotów, nie ma więc potrzeby sprawdzania jego statusu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan=3&amp;gt;$57 (W)&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;WRITE SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Wszystkie&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;To samo, co PUT SECTOR ($50). W przypadku stacji dysków zapis przeprowadzany jest z weryfikacją.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;W przypadku drukarki długość bufora może wynosić 20, 29 albo 40 znaków (na ogół to ostatnie), a znaczenie DAUX2 jest jak następuje:&lt;br /&gt;
* $4E (N) drukowanie normalne&lt;br /&gt;
* $53 (S) druk obrócony o 90 stopni&lt;br /&gt;
* $44 (D) druk normalny z podwójną szerokością znaków&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Dla interfejsu [[850|Atari 850]] wielkość bufora wynosi 64 bajty.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy dodatkowe====&lt;br /&gt;
&lt;br /&gt;
Rozpoznawane przez urządzenia peryferyjne Atari komendy dodatkowe w stosunku do powyżej wspomnianego niezbędnego minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$22 (&amp;quot;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT MEDIUM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości średniej]] (130k). Komenda wprowadzona razem ze stacją [[1050]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DSDD&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;256 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości podwójnej dwustronnej]] (360k). Komenda wprowadzona razem ze stacją [[XF551|Atari XF-551]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy PERCOM====&lt;br /&gt;
&lt;br /&gt;
Komendy PERCOM noszą nazwę od stacji dysków firmy [[Percom Data Corp.|PERCOM]], w których po raz pierwszy się pojawiły. Nie są rozpoznawane przez stacje dysków firmy Atari (z wyjątkiem [[XF551|Atari XF-551]]), są jednak zaimplementowane we wszystkich rozszerzeniach oraz stacjach innych producentów i stanowią de facto standard.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4E (N)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ PERCOM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;12 bajtów ([[SIO#Blok_PERCOM|Blok PERCOM]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia dwunastobajtowy blok danych opisujący jego bieżącą konfigurację, tj. przede wszystkim format znajdującej się w stacji dyskietki.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4F (O)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE PERCOM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zapisuje do urządzenia dwanaście bajtów opisujących żądaną konfigurację, tj. liczbę ścieżek, stron dyskietki, sektorów na ścieżkę, wielkość sektora, gęstość. Przyjąwszy komendę stacja powinna natychmiast przestawić się na żądane ustawienia, o ile jest w stanie je zrealizować.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli zadanych ustawień nie da się zrealizować, stacja w teorii powinna odrzucić przesłany blok danych zgłaszając komputerowi błąd wykonania (co skutkuje [[Kody_błędów_Atari_OS|kodem błędu]] nr 144). W praktyce wiele stacji stosuje uproszczoną procedurę przyjmując parametry najbliższe zdefiniowanym przez przesłany blok danych. Jednak to, że parametry są &amp;quot;najbliższe&amp;quot;, nie oznacza, że muszą być w ogóle bliskie: np. zażądanie formatu 360 KB od stacji [[Top Drive 1050]] spowoduje jej ustawienie się w [[DD]] (180k), bo to jest maximum, jakie stacja jest w stanie zrealizować. Komplikuje to zadanie programom formatującym, które w celu zapisania prawidłowego katalogu muszą sprawdzać, czy żądana od stacji pojemność dyskietki została rzeczywiście wybrana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dyskietkę zgodnie z zapisaną konfiguracją.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ]] IDE nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do definiowania wielkości partycji służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy specjalne====&lt;br /&gt;
&lt;br /&gt;
Komendy wspomagające automatyczną instalację w systemie handlerów podłączonych urządzeń zewnętrznych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND RELOCATOR&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg odpowiedzi na komendę POLL ($3F)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jest to komenda uzupełniająca do opisanego niżej POLL ($3F). Powoduje przesłanie przez urządzenie programu odpowiedzialnego za załadowanie (komendą SEND HANDLER) i relokację właściwego handlera. Wszystkie parametry transmisji dla SEND RELOCATOR przesyłane są na komendę POLL ($3F). Program relokatora - po jego załadowaniu - uruchamia się od adresu DBUFA + 6. Przejmuje on na siebie wykonanie reszty operacji, a w wypadku niepowodzenia sygnalizuje błąd przez ustawienie bitu Carry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komendę SEND RELOCATOR rozpoznaje moduł [[850|Atari 850]], a może dotyczyć też innych urządzeń, oprócz stacji dysków (gdzie kod operacyjny $21 oznacza formatowanie dyskietki).&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$26 (&amp;amp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HANDLER&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator przesłany przez SEND RELOCATOR ($21) lub wg odpowiedzi na komendę POLL BUS ($40)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator (przesłany przez urządzenie lub rezydujący)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda SEND HANDLER służy do załadowania z urządzenia kodu programu obsługi (handlera) tego urządzenia. Może ona działać różnie w zależności od tego, czy transmisja została zainicjowana przez komendę POLL ($3F) czy POLL BUS ($40).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL ($3F) oznacza starszy protokół transmisji, w którym format strumienia danych przesłanych przez SEND HANDLER zależny jest od programu relokatora załadowanego wcześniej komendą SEND RELOCATOR ($21) i uruchomionego przez komputer.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL BUS ($40) oznacza nowszy protokół transmisji. Format strumienia danych jest ustalony z góry, a relokator rezyduje w ROM-ie systemu operacyjnego komputera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po otrzymaniu pozytywnej odpowiedzi na POLL BUS ($40) komputer rozpoczyna ładowanie kolejnych, 128-bajtowych rekordów binarnych, w liczbie do 256 (czyli pojedynczy &amp;quot;handler&amp;quot; może mieć maximum 32k). Przesyłany strumień danych musi być w [[ACX|specjalnym formacie]], który zapewnia relokowalność kodu, oraz zawiera podany explicite znacznik końca pliku - wystąpienie błędu przed napotkaniem tego znacznika powoduje przerwanie procedury z [[kody błędów|kodem błędu]] INCOMPLETE EXECUTION.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Ustawienia zmiennych DCB dla komendy SEND HANDLER wyglądają następująco:&amp;lt;/p&amp;gt;&lt;br /&gt;
* DDEVIC - kod urządzenia przesłany przez urządzenie $4F na komendę POLL BUS.&lt;br /&gt;
* DUNIT - zawsze $01&lt;br /&gt;
* DCMND - $26 - SEND HANDLER&lt;br /&gt;
* DSTATS - $40 - odczyt&lt;br /&gt;
* DTIMLO - 30 sekund&lt;br /&gt;
* DBYT - 128 bajtów&lt;br /&gt;
* DAUX1 - numer kolejny rekordu danych&lt;br /&gt;
* DAUX2 - zawsze 0&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ta, zwana też TYPE 2 POLL, służy do zainicjowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). W odpowiedzi urządzenie przesyła 12 bajtów odpowiadających kolejnym wartościom, jakie należy ustawić w bloku DCB celem załadowania kodu wykonywalnego handlera. Jest to starszy protokół transmisji zaprojektowany dla komputerów serii [[400]] i [[800]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W module [[850|Atari 850]] odpowiedzią na komendę POLL są wartości, jakie trzeba wstawić do DCB celem wykonania komendy SEND RELOCATOR ($21).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W celu uniknięcia wielokrotnego załadowania tego samego programu obsługi urządzenie na komendę POLL ($3F) odpowiada tylko raz, potem wykonanie komendy jest zablokowane aż do wyłączenia zasilania.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$40 (@)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL BUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$4F (bus master)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4 bajty&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;W komputerach serii XL oraz XE komendę tę system operacyjny przesyła do interfejsu szeregowo-równoległego przy każdym zimnym starcie; w pewnych warunkach - ale z nieco innymi parametrami - może też zostać wykonana po zainicjowaniu systemu. Jest to odpowiednik komendy POLL ($3F), jednak protokół transmisji handlera jest zunifikowany i nie wymaga od urządzenia przesyłania relokatora (uniwersalny relokator rezyduje w ROM-ie systemu operacyjnego). Analogicznie do POLL ($3F), komenda POLL BUS jest przeznaczona do zapoczątkowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). Zasadniczym adresatem jest tu moduł [[1090]] działający jako bus master.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Istnieje kilka odmian komendy POLL BUS różniących się parametrami przesyłanymi w DAUX1 i DAUX2:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TYPE 3 POLL: DAUX1 = 0 i DAUX2 = 0.&lt;br /&gt;
* TYPE 4 POLL: zobacz niżej.&lt;br /&gt;
* RESET POLL: DAUX1 = $4F i DAUX2 = $4F (&amp;quot;OO&amp;quot;)&lt;br /&gt;
* NULL POLL: DAUX1 = $4E i DAUX2 = $4E (&amp;quot;NN&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Przy zimnym starcie na początku system wysyła RESET POLL. Komenda ta powinna odblokować rozpoznawanie komendy TYPE 3 POLL we wszystkich podłączonych urządzeniach. Na RESET POLL urządzenia, oprócz potwierdzenia wykonania, nie przesyłają żadnej odpowiedzi, a komputer jej nie oczekuje.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Następnie system wysyła komendę TYPE 3 POLL. Pozytywna odpowiedź oznacza, że urządzenie nadesłało 4 bajty, z czego dwa pierwsze to ilość pamięci potrzebna do przeprowadzenia całości transmisji (musi to być parzysta wielkość). Jeśli jest to więcej niż dostępna ilość pamięci pomiędzy MEMLO a MEMTOP, system odpowiada przez NULL POLL (podobnie jak w wypadku RESET POLL, urządzenie przesyła tylko potwierdzenie wykonania), a następnie ponownie wysyła TYPE 3 POLL. W przypadku braku pamięci byłaby to pętla nieskończona, ale pojedyncze urządzenie na komendę TYPE 3 POLL może odpowiedzieć tylko raz - pętla jest więc przerywana błędem, który wystąpi po przetestowaniu wszystkich urządzeń zarządzanych przez bus mastera. Ponowna odpowiedź na TYPE 3 POLL jest możliwa dopiero po przesłaniu urządzeniu komendy RESET POLL, inaczej TYPE 3 POLL zostanie zignorowana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Trzeci przysłany bajt to identyfikator urządzenia (dla DDEVIC), które odpowiedziało na komendę i z którym będzie prowadzona dalsza komunikacja.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po stwierdzeniu poprawności odpowiedzi komputer dokonuje rezerwacji pamięci nad wartością MEMLO zaokrągloną w górę do najbliższej granicy słowa i próbuje dokonać odczytu z urządzenia, które się zgłosiło, 128 bajtów pod adres $03FD, przy użyciu innej &amp;quot;nietypowej&amp;quot; komendy, a mianowicie $26 - SEND HANDLER. Po załadowaniu i zainicjowaniu handlera pętla wraca do początku i wykonuje się cyklicznie aż do wystąpienia błędu - czyli do załadowania wszystkich handlerów będących w dyspozycji bus mastera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Procedura ładowania handlera wywoływana jest po procedurze bootowania DOS-u, ale niezależnie od jej wyniku; z czego wniosek, że &amp;quot;handler&amp;quot; może spełniać funkcję zarówno dodatku do DOS-u, jak i zostać załadowany &amp;lt;b&amp;gt;zamiast&amp;lt;/b&amp;gt; DOS-u.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Tą samą drogą można już po całkowitym uruchomieniu systemu, podczas pracy, załadować handler urządzenia &amp;lt;b&amp;gt;konkretnie wskazanego&amp;lt;/b&amp;gt;. Robi to [[CIO]] przy każdorazowej próbie otwarcia pliku na urządzeniu, którego system nie zna (nie ma takiego wpisu w tablicy handlerów).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Odpytanie bus mastera na okoliczność dysponowania takowym handlerem odbywa się za pomocą komendy TYPE 4 POLL. W DAUX1 ma się znajdować identyfikator urządzenia CIO, dla którego to urządzenia potrzebujemy handlera (np. dla magnetofonu $43, czyli &amp;quot;C&amp;quot;), w DAUX2 natomiast przesyła się numer wywoływanego urządzenia (np. dla &amp;quot;C1:&amp;quot; będzie to $01).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Pozostałe komendy====&lt;br /&gt;
&lt;br /&gt;
Komendy zdefiniowane przez Atari, na których temat brak bliższych danych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 (&amp;amp;nbsp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda wymieniana przez niektóre źródła. Szczegóły nieznane. Być może chodzi o komendę LOAD AND EXECUTE TEST w interfejsie [[850]] (zob. [[Lista_komend_SIO_według_funkcji#Atari_850|niżej]])&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG1&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050|Atari 1050]]. Wymaga przesłania 128-bajtowego bloku danych, w którym dwa pierwsze bajty decydują o tym, co stacja będzie robić (DAUX1/2 są ignorowane):&amp;lt;/p&amp;gt;&lt;br /&gt;
* $02 - test przejścia głowicy między ścieżkami&lt;br /&gt;
* $03 - przesuw głowicy za pomocą silnika krokowego o jeden krok w przód lub w tył; o kierunku decyduje następny bajt, wartość dodatnia (np. $01) powoduje przesuw w przód - czyli w kierunku ścieżki 39 - a wartość ujemna (np. $FF) przesuw wstecz, czyli w kierunku ścieżki 0. &amp;quot;Krok&amp;quot; silnika krokowego w tym wypadku to połowa odległości między ścieżkami, żeby więc tą komendą przesunąć głowicę na sąsiednią ścieżkę, trzeba zrobić to dwa razy. Uwaga: możliwe jest cofnięcie głowicy wstecz od ścieżki 0 (na tzw. ścieżkę -1).&lt;br /&gt;
* $04 - test zapisu i odczytu dyskietki; formatuje znajdującą się w stacji dyskietkę w średniej gęstości.&lt;br /&gt;
* $05 - przesuw główicy do ścieżki o numerze podanym w następnym bajcie. &lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;UWAGA: kod operacyjny ($23) jest taki sam, jak kod komendy formatowania w stacji [[XF551|Atari XF-551]] oraz [[LDW Super 2000]] i [[CA-2001]] z załadowanym [[Synchromesh]]em!&#039;&#039;&#039;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050]], służy do pomiaru prędkości obrotowej dyskietki. W zależności od wartości dwóch pierwszych bajtów przesłanego bloku danych ($00, $00 lub $00, $01) stacja przesyła czas jednego obrotu dyskietki lub wartość prędkości obrotowej w obrotach na minutę.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SPIN&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;$31&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;R (?)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;Komendy te występują jako komendy dyskowe na liście rozkazów SIO w dokumentacji sporządzonej przez Atari. Nie znam jednak stacji, która by na nie reagowała. Mogą to być komendy stacji [[810]], jakieś komendy diagnostyczne jej prototypu, albo komendy planowane, lecz nie zaimplementowane. Dostępna dokumentacja nie zawiera ich opisu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$55 (U)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MOTOR ON&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$56 (V)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VERIFY SECTOR&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Stacja odczytuje sektor wskazany przez DAUX1/2 i zwraca komputerowi informację, czy da się on odczytać bez błędów. Dane zawarte w sektorze nie są transmitowane do komputera. Komenda ta występuje w dokumentacji SIO sporządzonej przez Atari, ale żadna ze stacji marki Atari jej nie rozpoznaje.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Komendy specyficzne dla poszczególnych urządzeń ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Stacje dysków Atari 1450XLD =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$01 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET LARGE MODE&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;large mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako logiczną całość liczącą 2080 sektorów po 128 bajtów (260k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$02 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET SMALL MODE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;small mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako dwie oddzielne dyskietki liczące po 1040 sektorów po 128 bajtów (= 2x130k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC IN&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda zapisująca do stacji wskazany bufor wypełniony bliżej nieokreślonymi danymi diagnostycznymi.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC OUT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda odczytująca bliżej niesprecyzowane dane diagnostyczne do wskazanego bufora.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B1 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B2 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Atari 850 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONTROL&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 4&amp;gt;$50&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca linie DTR, RTS i XMT (TX) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 34,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ustawiająca różne parametry pracy (m.in. szybkość transmisji) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 36,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;STREAM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda uruchamiająca tryb równoległego wejścia/wyjścia (Concurrent I/O). Interfejs [[850|Atari 850]] w odpowiedzi zwraca sekwencję liczb, według której handler urządzenia &amp;quot;R:&amp;quot; ustawia [[Rejestry_POKEY-a|rejestry układu POKEY]]  (kolejno AUDF,AUDC 1-4 oraz AUDCTL). Przykładowa sekwencja dla szybkości transmisji 300bps jest następująca: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78. Komenda jest używana przez handler przy poleceniu [[CIO]] XIO 40,#i,0,0,&amp;quot;Rn:&amp;quot; (START CONCURRENT MODE I/O)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;LOAD AND EXECUTE TEST&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości przesyłanego kodu&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda niepublikowana w oficjalnej dokumentacji. Powoduje wczytanie z komputera kodu programu, a następnie uruchomienie go przez interfejs [[850|Atari 850]]. W DAUX1 podawany jest rozmiar przesyłanego kodu. Ze względu na specyfikę procedury odbioru danych, kod powinien być wysyłany od ostatniego do pierwszego bajtu.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== ATR 8000 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$47 (G)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GO TO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$5A ([[ATR 8000]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda pozwala na wywoływanie funkcji zdefiniowanych w ROM-ie modułu [[ATR 8000]] (q.v.).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Indus GT/LDW Super 2000/CA-2001 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT SKEWED&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda formatowania z szybkim [[przeplot]]em w stacjach [[Indus GT]], [[LDW Super 2000]] oraz [[CA-2001]] z załadowanym [[Synchromesh]]em.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Kod operacyjny jest taki sam, jak komendy formatowania w gęstości [[DSDD]] dla stacji [[XF551]] oraz jednej z komend diagnostycznych w [[1050]].&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD/EXECUTE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Różna&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda zaimplementowana w stacjach [[Indus GT]], [[LDW Super 2000]] i [[CA-2001]], pozwalająca na przesyłanie do stacji programów użytkownika i uruchamianie ich. Szczegóły: patrz [[Programowanie stacji LDW Super 2000 i CA-2001]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Happy Warp =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$48 (H)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;HAPPY CONFIG&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji z rozszerzeniem [[Happy Warp]]. Szczegóły: patrz [[Happy_Warp#Konfiguracja|Happy Warp - Konfiguracja]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== KMK/JŻ IDE =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$EC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;IDENTIFY DRIVE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;512 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W [[KMK/JŻ IDE]] komenda powoduje odczytanie bloku identyfikacyjnego napędu IDE, na którym założona jest wskazana partycja, i wpisanie go do bufora wskazanego przez DBUFA. Kolejność bajtów w tym bloku jest odwrotna od normalnej, tzn. wszystkie pary bajtów należy zamienić miejscami przed odczytaniem danych z tego bufora - dotyczy to również informacji tekstowej.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Multi I/O =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MEDIA CAPACITY INFO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nowe wersje firmware [[Multi I/O]] (od v. 1.4 wzwyż) w odpowiedzi na tę komendę zwracają informację o pojemności wskazanego dysku SCSI w [http://en.wikipedia.org/wiki/SCSI_Read_Capacity_Command tym formacie].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Speedy 1050 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;AUTOMATIC FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 11&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Speedy 1050]] w odpowiedni na tę komendę formatuje dyskietkę w zadanej gęstości (DAUX1 = $00 pojedyncza, $20 podwójna, $80 średnia) i, o ile konfiguracja stacji tego nie zabrania, zapisuje bootsektory i [[VTOC]] zgodne z [[DOS 2.0]] lub (w średniej gęstości) [[DOS 2.5]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;REGISTER COMMAND&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje zarejestrowanie komendy uzytkownika. Dane powinny zawierać kolejno:&lt;br /&gt;
* kod komendy&lt;br /&gt;
* młodszy bajt adresu w pamięci stacji, gdzie znajduje się podprogram obsługi&lt;br /&gt;
* starszy bajt tego adresu&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli dana komenda jest już jakoś przypisana, to przypisanie zostanie zmienione. Gdy adres ma wartość $0000, komenda zostanie wykasowana z pamięci stacji.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$44 (D)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DISPLAY&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja wyświetlacza stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: wyświetlanie kodów błędów na wyświetlaczu stacji&lt;br /&gt;
* bit 6: wyświetlanie numeru ścieżki w kodzie szesnastkowym&lt;br /&gt;
* bit 5: formatowanie bez weryfikacji&lt;br /&gt;
* bit 4: zablokowanie zapisu struktury logicznej dyskietki po komendzie $20&lt;br /&gt;
* bit 3: niewyłączanie silnika po komendzie $51&lt;br /&gt;
* bit 2: nieużywany&lt;br /&gt;
* bit 1: nieużywany&lt;br /&gt;
* bit 0: sygnał dźwiękowy w wypadku błędu&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4B (K)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DRIVE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: zapis i odczyt dyskietki bez buforowania (0 po zmianie dyskietki)&lt;br /&gt;
* bit 6: zapis i odczyt ścieżki bez buforowania (0 po zmianie ścieżki)&lt;br /&gt;
* bit 5: nieużywany&lt;br /&gt;
* bit 4: nieużywany&lt;br /&gt;
* bit 3: wyłączenie buforowania ścieżek&lt;br /&gt;
* bit 2: wyłączenie weryfikacji dla komendy $57 (W)&lt;br /&gt;
* bit 1: zapis sektora z pominięciem buforowania&lt;br /&gt;
* bit 0: odczyt sektora z pominięciem buforowania&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4C (L)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP, NO ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] wywołanie wewnętrznej procedury ROM-u stacji spod adresu przekazanego w DAUX1/2 (młodszy/starszy). Potwierdzenie wykonania rozkazu musi przesłać wywoływany podprogram.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP WITH ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] to samo, to $4C, ale potwierdzenie rozkazu jest przesyłane automatycznie.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FLUSH&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda ta powoduje natychmiastowy zapis zawartości bufora zapisu na dyskietkę i zatrzymanie silnika (normalnie stacja czeka z tym ok. 2 sekund po transmisji sektora).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$60 (`)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] zapis na dyskietkę całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$62 (b)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] odczyt z dyskietki całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$68 (h)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SIO LEN&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie dwóch bajtów określających wielkość procedury SIO, którą mozna od stacji uzyskać komendą $69. &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$69 (i)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND SIO&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wynik komendy $68&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie programu szybkiej transmisji SIO. Bajty DBYT powinny być ustawione na wartość zwróconą przez komendę $68. DAUX1/2 to adres w pamięci Atari, gdzie procedura ma zostać załadowana (stacja dokonuje relokacji kodu pod ten adres przed wysłaniem go do komputera).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== TOMS Multi Drive =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$49 (I)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;INDEX FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależnie od wybranej gęstości&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[TOMS Multi Drive]] komenda ta działa tak samo, jak zwykłe formatowanie ($21), z tym wyjątkiem, że do oznaczenia początku ścieżki stacja używa otworu indeksowego (normalnie w stacjach Atari ścieżka zaczyna się tam, gdzie akurat wypadnie). Służy to głównie do zabezpieczania programów przez tzw. synchroniczne sektory. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== US Doubler =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HIGH SPEED INDEX&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Stacje kompatybilne z [[US Doubler]] w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącą do ustawienia częstotliwości nośnej dla przyspieszonej transmisji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$66 (f)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CUSTOM FORMAT&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda formatowania z zadanym przeplotem zaimplementowana w stacjach [[US Doubler]]. Wysyłane 128 bajtów określa:&lt;br /&gt;
* w pierwszych 12 bajtach: zadaną gęstość, tak jak w komendzie WRITE PERCOM&lt;br /&gt;
* następne 18 lub 26 bajtów to fizyczne numery sektorów na ścieżce w zadanej kolejności, licząc od 1.&lt;br /&gt;
&amp;lt;p&amp;gt;Przykładowe przeploty podaje hasło [[Przeplot]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== [[XFD601|XFD601/602]] =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GET COMMAND BUFFER&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zwraca historię ostatnich 32 wywołań na łączu szeregowym. Wszystkich wywołań - nie tylko do stacji. Każdy wpis zawiera 4 bajty - dokładnie te same, jakie są wysyłane do urządzenia zewnetrznego przez komputer, czyli: [[SIO#DCB|DDEVIC]], [[SIO#DCB|DCMND]], [[SIO#DCB|DAUX1]], [[SIO#DCB|DAUX2]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Po odebraniu tego rozkazu stacja zwraca tzw. adres pierwszego napotkanego sektora, w formie 6 bajtów: numer scieżki, numer strony, numer sektora, rozmiar sektora, 2 bajty CRC.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit|SIO, Lista komend według funkcji]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34990</id>
		<title>Lista komend SIO według funkcji</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34990"/>
		<updated>2015-07-11T19:22:08Z</updated>

		<summary type="html">&lt;p&gt;Trub: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Główny artykuł: [[SIO]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Podstawowy zestaw komend====&lt;br /&gt;
&lt;br /&gt;
Poniższa tabela wyszczególnia podstawowe minimum komend rozpoznawanych przez urządzenia peryferyjne Atari.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DISK&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Formatuje dyskietkę w wybranej uprzednio (komendami PERCOM) gęstości, lub w [[Formaty dyskietek|pojedynczej gęstości]] (90k), jeśli stacja nie jest konfigurowalna. Zwraca listę zawierającą numery wadliwych sektorów (kolejno LSB/MSB) wykrytych w czasie formatowania, zakończoną wartością $FFFF. Niektóre stacje zwracają tu pustą listę ($FFFF, a dalej same zera), nawet jeśli na dyskietce są wadliwe sektory: po prostu dyskietki nie są już tak drogie, jak pod koniec lat siedemdziesiątych XX wieku...&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$50 (P)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;PUT SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31 i $60&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zapisuje do urządzenia blok danych wskazany przez DBUFA, a zawierający DBYT bajtów. W przypadku stacji dysków jest to zapis bez weryfikacji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$52 (R)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SECTOR&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Odczytuje z urządzenia blok danych o wielkości DBYT bajtów i zapisuje go w pamięci pod adresem wskazanym przez DBUFA.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$53 (S)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ STATUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wszystkie oprócz magnetofonu&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależna od urządzenia&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia blok statusu i zapisuje go pod adresem wskazanym przez DBUFA. Blok statusu dla RS-232 ma wielkość 2 bajtów, dla drukarki i stacji dysków - 4. Typowo komenda ta służy to stwierdzenia, czy urządzenie jest gotowe do pracy. W przypadku magnetofonu obowiązuje założenie, że jest on zawsze podłączony i gotów, nie ma więc potrzeby sprawdzania jego statusu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan=3&amp;gt;$57 (W)&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;WRITE SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Wszystkie&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;To samo, co PUT SECTOR ($50). W przypadku stacji dysków zapis przeprowadzany jest z weryfikacją.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;W przypadku drukarki długość bufora może wynosić 20, 29 albo 40 znaków (na ogół to ostatnie), a znaczenie DAUX2 jest jak następuje:&lt;br /&gt;
* $4E (N) drukowanie normalne&lt;br /&gt;
* $53 (S) druk obrócony o 90 stopni&lt;br /&gt;
* $44 (D) druk normalny z podwójną szerokością znaków&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Dla interfejsu [[850|Atari 850]] wielkość bufora wynosi 64 bajty.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy dodatkowe====&lt;br /&gt;
&lt;br /&gt;
Rozpoznawane przez urządzenia peryferyjne Atari komendy dodatkowe w stosunku do powyżej wspomnianego niezbędnego minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$22 (&amp;quot;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT MEDIUM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości średniej]] (130k). Komenda wprowadzona razem ze stacją [[1050]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DSDD&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;256 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości podwójnej dwustronnej]] (360k). Komenda wprowadzona razem ze stacją [[XF551|Atari XF-551]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy PERCOM====&lt;br /&gt;
&lt;br /&gt;
Komendy PERCOM noszą nazwę od stacji dysków firmy [[Percom Data Corp.|PERCOM]], w których po raz pierwszy się pojawiły. Nie są rozpoznawane przez stacje dysków firmy Atari (z wyjątkiem [[XF551|Atari XF-551]]), są jednak zaimplementowane we wszystkich rozszerzeniach oraz stacjach innych producentów i stanowią de facto standard.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4E (N)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ PERCOM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;12 bajtów ([[SIO#Blok_PERCOM|Blok PERCOM]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia dwunastobajtowy blok danych opisujący jego bieżącą konfigurację, tj. przede wszystkim format znajdującej się w stacji dyskietki.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4F (O)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE PERCOM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zapisuje do urządzenia dwanaście bajtów opisujących żądaną konfigurację, tj. liczbę ścieżek, stron dyskietki, sektorów na ścieżkę, wielkość sektora, gęstość. Przyjąwszy komendę stacja powinna natychmiast przestawić się na żądane ustawienia, o ile jest w stanie je zrealizować.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli zadanych ustawień nie da się zrealizować, stacja w teorii powinna odrzucić przesłany blok danych zgłaszając komputerowi błąd wykonania (co skutkuje [[Kody_błędów_Atari_OS|kodem błędu]] nr 144). W praktyce wiele stacji stosuje uproszczoną procedurę przyjmując parametry najbliższe zdefiniowanym przez przesłany blok danych. Jednak to, że parametry są &amp;quot;najbliższe&amp;quot;, nie oznacza, że muszą być w ogóle bliskie: np. zażądanie formatu 360 KB od stacji [[Top Drive 1050]] spowoduje jej ustawienie się w [[DD]] (180k), bo to jest maximum, jakie stacja jest w stanie zrealizować. Komplikuje to zadanie programom formatującym, które w celu zapisania prawidłowego katalogu muszą sprawdzać, czy żądana od stacji pojemność dyskietki została rzeczywiście wybrana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dyskietkę zgodnie z zapisaną konfiguracją.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ]] IDE nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do definiowania wielkości partycji służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy specjalne====&lt;br /&gt;
&lt;br /&gt;
Komendy wspomagające automatyczną instalację w systemie handlerów podłączonych urządzeń zewnętrznych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND RELOCATOR&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg odpowiedzi na komendę POLL ($3F)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jest to komenda uzupełniająca do opisanego niżej POLL ($3F). Powoduje przesłanie przez urządzenie programu odpowiedzialnego za załadowanie (komendą SEND HANDLER) i relokację właściwego handlera. Wszystkie parametry transmisji dla SEND RELOCATOR przesyłane są na komendę POLL ($3F). Program relokatora - po jego załadowaniu - uruchamia się od adresu DBUFA + 6. Przejmuje on na siebie wykonanie reszty operacji, a w wypadku niepowodzenia sygnalizuje błąd przez ustawienie bitu Carry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komendę SEND RELOCATOR rozpoznaje moduł [[850|Atari 850]], a może dotyczyć też innych urządzeń, oprócz stacji dysków (gdzie kod operacyjny $21 oznacza formatowanie dyskietki).&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$26 (&amp;amp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HANDLER&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator przesłany przez SEND RELOCATOR ($21) lub wg odpowiedzi na komendę POLL BUS ($40)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator (przesłany przez urządzenie lub rezydujący)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda SEND HANDLER służy do załadowania z urządzenia kodu programu obsługi (handlera) tego urządzenia. Może ona działać różnie w zależności od tego, czy transmisja została zainicjowana przez komendę POLL ($3F) czy POLL BUS ($40).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL ($3F) oznacza starszy protokół transmisji, w którym format strumienia danych przesłanych przez SEND HANDLER zależny jest od programu relokatora załadowanego wcześniej komendą SEND RELOCATOR ($21) i uruchomionego przez komputer.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL BUS ($40) oznacza nowszy protokół transmisji. Format strumienia danych jest ustalony z góry, a relokator rezyduje w ROM-ie systemu operacyjnego komputera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po otrzymaniu pozytywnej odpowiedzi na POLL BUS ($40) komputer rozpoczyna ładowanie kolejnych, 128-bajtowych rekordów binarnych, w liczbie do 256 (czyli pojedynczy &amp;quot;handler&amp;quot; może mieć maximum 32k). Przesyłany strumień danych musi być w [[ACX|specjalnym formacie]], który zapewnia relokowalność kodu, oraz zawiera podany explicite znacznik końca pliku - wystąpienie błędu przed napotkaniem tego znacznika powoduje przerwanie procedury z [[kody błędów|kodem błędu]] INCOMPLETE EXECUTION.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Ustawienia zmiennych DCB dla komendy SEND HANDLER wyglądają następująco:&amp;lt;/p&amp;gt;&lt;br /&gt;
* DDEVIC - kod urządzenia przesłany przez urządzenie $4F na komendę POLL BUS.&lt;br /&gt;
* DUNIT - zawsze $01&lt;br /&gt;
* DCMND - $26 - SEND HANDLER&lt;br /&gt;
* DSTATS - $40 - odczyt&lt;br /&gt;
* DTIMLO - 30 sekund&lt;br /&gt;
* DBYT - 128 bajtów&lt;br /&gt;
* DAUX1 - numer kolejny rekordu danych&lt;br /&gt;
* DAUX2 - zawsze 0&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ta, zwana też TYPE 2 POLL, służy do zainicjowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). W odpowiedzi urządzenie przesyła 12 bajtów odpowiadających kolejnym wartościom, jakie należy ustawić w bloku DCB celem załadowania kodu wykonywalnego handlera. Jest to starszy protokół transmisji zaprojektowany dla komputerów serii [[400]] i [[800]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W module [[850|Atari 850]] odpowiedzią na komendę POLL są wartości, jakie trzeba wstawić do DCB celem wykonania komendy SEND RELOCATOR ($21).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W celu uniknięcia wielokrotnego załadowania tego samego programu obsługi urządzenie na komendę POLL ($3F) odpowiada tylko raz, potem wykonanie komendy jest zablokowane aż do wyłączenia zasilania.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$40 (@)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL BUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$4F (bus master)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4 bajty&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;W komputerach serii XL oraz XE komendę tę system operacyjny przesyła do interfejsu szeregowo-równoległego przy każdym zimnym starcie; w pewnych warunkach - ale z nieco innymi parametrami - może też zostać wykonana po zainicjowaniu systemu. Jest to odpowiednik komendy POLL ($3F), jednak protokół transmisji handlera jest zunifikowany i nie wymaga od urządzenia przesyłania relokatora (uniwersalny relokator rezyduje w ROM-ie systemu operacyjnego). Analogicznie do POLL ($3F), komenda POLL BUS jest przeznaczona do zapoczątkowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). Zasadniczym adresatem jest tu moduł [[1090]] działający jako bus master.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Istnieje kilka odmian komendy POLL BUS różniących się parametrami przesyłanymi w DAUX1 i DAUX2:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TYPE 3 POLL: DAUX1 = 0 i DAUX2 = 0.&lt;br /&gt;
* TYPE 4 POLL: zobacz niżej.&lt;br /&gt;
* RESET POLL: DAUX1 = $4F i DAUX2 = $4F (&amp;quot;OO&amp;quot;)&lt;br /&gt;
* NULL POLL: DAUX1 = $4E i DAUX2 = $4E (&amp;quot;NN&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Przy zimnym starcie na początku system wysyła RESET POLL. Komenda ta powinna odblokować rozpoznawanie komendy TYPE 3 POLL we wszystkich podłączonych urządzeniach. Na RESET POLL urządzenia, oprócz potwierdzenia wykonania, nie przesyłają żadnej odpowiedzi, a komputer jej nie oczekuje.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Następnie system wysyła komendę TYPE 3 POLL. Pozytywna odpowiedź oznacza, że urządzenie nadesłało 4 bajty, z czego dwa pierwsze to ilość pamięci potrzebna do przeprowadzenia całości transmisji (musi to być parzysta wielkość). Jeśli jest to więcej niż dostępna ilość pamięci pomiędzy MEMLO a MEMTOP, system odpowiada przez NULL POLL (podobnie jak w wypadku RESET POLL, urządzenie przesyła tylko potwierdzenie wykonania), a następnie ponownie wysyła TYPE 3 POLL. W przypadku braku pamięci byłaby to pętla nieskończona, ale pojedyncze urządzenie na komendę TYPE 3 POLL może odpowiedzieć tylko raz - pętla jest więc przerywana błędem, który wystąpi po przetestowaniu wszystkich urządzeń zarządzanych przez bus mastera. Ponowna odpowiedź na TYPE 3 POLL jest możliwa dopiero po przesłaniu urządzeniu komendy RESET POLL, inaczej TYPE 3 POLL zostanie zignorowana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Trzeci przysłany bajt to identyfikator urządzenia (dla DDEVIC), które odpowiedziało na komendę i z którym będzie prowadzona dalsza komunikacja.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po stwierdzeniu poprawności odpowiedzi komputer dokonuje rezerwacji pamięci nad wartością MEMLO zaokrągloną w górę do najbliższej granicy słowa i próbuje dokonać odczytu z urządzenia, które się zgłosiło, 128 bajtów pod adres $03FD, przy użyciu innej &amp;quot;nietypowej&amp;quot; komendy, a mianowicie $26 - SEND HANDLER. Po załadowaniu i zainicjowaniu handlera pętla wraca do początku i wykonuje się cyklicznie aż do wystąpienia błędu - czyli do załadowania wszystkich handlerów będących w dyspozycji bus mastera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Procedura ładowania handlera wywoływana jest po procedurze bootowania DOS-u, ale niezależnie od jej wyniku; z czego wniosek, że &amp;quot;handler&amp;quot; może spełniać funkcję zarówno dodatku do DOS-u, jak i zostać załadowany &amp;lt;b&amp;gt;zamiast&amp;lt;/b&amp;gt; DOS-u.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Tą samą drogą można już po całkowitym uruchomieniu systemu, podczas pracy, załadować handler urządzenia &amp;lt;b&amp;gt;konkretnie wskazanego&amp;lt;/b&amp;gt;. Robi to [[CIO]] przy każdorazowej próbie otwarcia pliku na urządzeniu, którego system nie zna (nie ma takiego wpisu w tablicy handlerów).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Odpytanie bus mastera na okoliczność dysponowania takowym handlerem odbywa się za pomocą komendy TYPE 4 POLL. W DAUX1 ma się znajdować identyfikator urządzenia CIO, dla którego to urządzenia potrzebujemy handlera (np. dla magnetofonu $43, czyli &amp;quot;C&amp;quot;), w DAUX2 natomiast przesyła się numer wywoływanego urządzenia (np. dla &amp;quot;C1:&amp;quot; będzie to $01).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Pozostałe komendy====&lt;br /&gt;
&lt;br /&gt;
Komendy zdefiniowane przez Atari, na których temat brak bliższych danych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 (&amp;amp;nbsp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda wymieniana przez niektóre źródła. Szczegóły nieznane. Być może chodzi o komendę LOAD AND EXECUTE TEST w interfejsie [[850]] (zob. [[Lista_komend_SIO_według_funkcji#Atari_850|niżej]])&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG1&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050|Atari 1050]]. Wymaga przesłania 128-bajtowego bloku danych, w którym dwa pierwsze bajty decydują o tym, co stacja będzie robić (DAUX1/2 są ignorowane):&amp;lt;/p&amp;gt;&lt;br /&gt;
* $02 - test przejścia głowicy między ścieżkami&lt;br /&gt;
* $03 - przesuw głowicy za pomocą silnika krokowego o jeden krok w przód lub w tył; o kierunku decyduje następny bajt, wartość dodatnia (np. $01) powoduje przesuw w przód - czyli w kierunku ścieżki 39 - a wartość ujemna (np. $FF) przesuw wstecz, czyli w kierunku ścieżki 0. &amp;quot;Krok&amp;quot; silnika krokowego w tym wypadku to połowa odległości między ścieżkami, żeby więc tą komendą przesunąć głowicę na sąsiednią ścieżkę, trzeba zrobić to dwa razy. Uwaga: możliwe jest cofnięcie głowicy wstecz od ścieżki 0 (na tzw. ścieżkę -1).&lt;br /&gt;
* $04 - test zapisu i odczytu dyskietki; formatuje znajdującą się w stacji dyskietkę w średniej gęstości.&lt;br /&gt;
* $05 - przesuw główicy do ścieżki o numerze podanym w następnym bajcie. &lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;UWAGA: kod operacyjny ($23) jest taki sam, jak kod komendy formatowania w stacji [[XF551|Atari XF-551]] oraz [[LDW Super 2000]] i [[CA-2001]] z załadowanym [[Synchromesh]]em!&#039;&#039;&#039;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050]], służy do pomiaru prędkości obrotowej dyskietki. W zależności od wartości dwóch pierwszych bajtów przesłanego bloku danych ($00, $00 lub $00, $01) stacja przesyła czas jednego obrotu dyskietki lub wartość prędkości obrotowej w obrotach na minutę.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SPIN&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;$31&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;R (?)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;Komendy te występują jako komendy dyskowe na liście rozkazów SIO w dokumentacji sporządzonej przez Atari. Nie znam jednak stacji, która by na nie reagowała. Mogą to być komendy stacji [[810]], jakieś komendy diagnostyczne jej prototypu, albo komendy planowane, lecz nie zaimplementowane. Dostępna dokumentacja nie zawiera ich opisu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$55 (U)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MOTOR ON&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$56 (V)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VERIFY SECTOR&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Stacja odczytuje sektor wskazany przez DAUX1/2 i zwraca komputerowi informację, czy da się on odczytać bez błędów. Dane zawarte w sektorze nie są transmitowane do komputera. Komenda ta występuje w dokumentacji SIO sporządzonej przez Atari, ale żadna ze stacji marki Atari jej nie rozpoznaje.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Komendy specyficzne dla poszczególnych urządzeń ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Stacje dysków Atari 1450XLD =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$01 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET LARGE MODE&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;large mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako logiczną całość liczącą 2080 sektorów po 128 bajtów (260k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$02 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET SMALL MODE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;small mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako dwie oddzielne dyskietki liczące po 1040 sektorów po 128 bajtów (= 2x130k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC IN&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda zapisująca do stacji wskazany bufor wypełniony bliżej nieokreślonymi danymi diagnostycznymi.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC OUT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda odczytująca bliżej niesprecyzowane dane diagnostyczne do wskazanego bufora.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B1 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B2 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Atari 850 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONTROL&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 4&amp;gt;$50&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca linie DTR, RTS i XMT (TX) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 34,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ustawiająca różne parametry pracy (m.in. szybkość transmisji) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 36,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;STREAM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda uruchamiająca tryb równoległego wejścia/wyjścia (Concurrent I/O). Interfejs [[850|Atari 850]] w odpowiedzi zwraca sekwencję liczb, według której handler urządzenia &amp;quot;R:&amp;quot; ustawia [[Rejestry_POKEY-a|rejestry układu POKEY]]  (kolejno AUDF,AUDC 1-4 oraz AUDCTL). Przykładowa sekwencja dla szybkości transmisji 300bps jest następująca: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;LOAD AND EXECUTE TEST&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości przesyłanego kodu&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda niepublikowana w oficjalnej dokumentacji. Powoduje wczytanie z komputera kodu programu, a następnie uruchomienie go przez interfejs [[850|Atari 850]]. W DAUX1 podawany jest rozmiar przesyłanego kodu. Ze względu na specyfikę procedury odbioru danych, kod powinien być wysyłany od ostatniego do pierwszego bajtu.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== ATR 8000 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$47 (G)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GO TO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$5A ([[ATR 8000]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda pozwala na wywoływanie funkcji zdefiniowanych w ROM-ie modułu [[ATR 8000]] (q.v.).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Indus GT/LDW Super 2000/CA-2001 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT SKEWED&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda formatowania z szybkim [[przeplot]]em w stacjach [[Indus GT]], [[LDW Super 2000]] oraz [[CA-2001]] z załadowanym [[Synchromesh]]em.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Kod operacyjny jest taki sam, jak komendy formatowania w gęstości [[DSDD]] dla stacji [[XF551]] oraz jednej z komend diagnostycznych w [[1050]].&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD/EXECUTE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Różna&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda zaimplementowana w stacjach [[Indus GT]], [[LDW Super 2000]] i [[CA-2001]], pozwalająca na przesyłanie do stacji programów użytkownika i uruchamianie ich. Szczegóły: patrz [[Programowanie stacji LDW Super 2000 i CA-2001]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Happy Warp =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$48 (H)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;HAPPY CONFIG&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji z rozszerzeniem [[Happy Warp]]. Szczegóły: patrz [[Happy_Warp#Konfiguracja|Happy Warp - Konfiguracja]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== KMK/JŻ IDE =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$EC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;IDENTIFY DRIVE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;512 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W [[KMK/JŻ IDE]] komenda powoduje odczytanie bloku identyfikacyjnego napędu IDE, na którym założona jest wskazana partycja, i wpisanie go do bufora wskazanego przez DBUFA. Kolejność bajtów w tym bloku jest odwrotna od normalnej, tzn. wszystkie pary bajtów należy zamienić miejscami przed odczytaniem danych z tego bufora - dotyczy to również informacji tekstowej.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Multi I/O =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MEDIA CAPACITY INFO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nowe wersje firmware [[Multi I/O]] (od v. 1.4 wzwyż) w odpowiedzi na tę komendę zwracają informację o pojemności wskazanego dysku SCSI w [http://en.wikipedia.org/wiki/SCSI_Read_Capacity_Command tym formacie].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Speedy 1050 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;AUTOMATIC FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 11&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Speedy 1050]] w odpowiedni na tę komendę formatuje dyskietkę w zadanej gęstości (DAUX1 = $00 pojedyncza, $20 podwójna, $80 średnia) i, o ile konfiguracja stacji tego nie zabrania, zapisuje bootsektory i [[VTOC]] zgodne z [[DOS 2.0]] lub (w średniej gęstości) [[DOS 2.5]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;REGISTER COMMAND&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje zarejestrowanie komendy uzytkownika. Dane powinny zawierać kolejno:&lt;br /&gt;
* kod komendy&lt;br /&gt;
* młodszy bajt adresu w pamięci stacji, gdzie znajduje się podprogram obsługi&lt;br /&gt;
* starszy bajt tego adresu&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli dana komenda jest już jakoś przypisana, to przypisanie zostanie zmienione. Gdy adres ma wartość $0000, komenda zostanie wykasowana z pamięci stacji.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$44 (D)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DISPLAY&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja wyświetlacza stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: wyświetlanie kodów błędów na wyświetlaczu stacji&lt;br /&gt;
* bit 6: wyświetlanie numeru ścieżki w kodzie szesnastkowym&lt;br /&gt;
* bit 5: formatowanie bez weryfikacji&lt;br /&gt;
* bit 4: zablokowanie zapisu struktury logicznej dyskietki po komendzie $20&lt;br /&gt;
* bit 3: niewyłączanie silnika po komendzie $51&lt;br /&gt;
* bit 2: nieużywany&lt;br /&gt;
* bit 1: nieużywany&lt;br /&gt;
* bit 0: sygnał dźwiękowy w wypadku błędu&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4B (K)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DRIVE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: zapis i odczyt dyskietki bez buforowania (0 po zmianie dyskietki)&lt;br /&gt;
* bit 6: zapis i odczyt ścieżki bez buforowania (0 po zmianie ścieżki)&lt;br /&gt;
* bit 5: nieużywany&lt;br /&gt;
* bit 4: nieużywany&lt;br /&gt;
* bit 3: wyłączenie buforowania ścieżek&lt;br /&gt;
* bit 2: wyłączenie weryfikacji dla komendy $57 (W)&lt;br /&gt;
* bit 1: zapis sektora z pominięciem buforowania&lt;br /&gt;
* bit 0: odczyt sektora z pominięciem buforowania&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4C (L)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP, NO ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] wywołanie wewnętrznej procedury ROM-u stacji spod adresu przekazanego w DAUX1/2 (młodszy/starszy). Potwierdzenie wykonania rozkazu musi przesłać wywoływany podprogram.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP WITH ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] to samo, to $4C, ale potwierdzenie rozkazu jest przesyłane automatycznie.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FLUSH&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda ta powoduje natychmiastowy zapis zawartości bufora zapisu na dyskietkę i zatrzymanie silnika (normalnie stacja czeka z tym ok. 2 sekund po transmisji sektora).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$60 (`)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] zapis na dyskietkę całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$62 (b)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] odczyt z dyskietki całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$68 (h)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SIO LEN&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie dwóch bajtów określających wielkość procedury SIO, którą mozna od stacji uzyskać komendą $69. &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$69 (i)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND SIO&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wynik komendy $68&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie programu szybkiej transmisji SIO. Bajty DBYT powinny być ustawione na wartość zwróconą przez komendę $68. DAUX1/2 to adres w pamięci Atari, gdzie procedura ma zostać załadowana (stacja dokonuje relokacji kodu pod ten adres przed wysłaniem go do komputera).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== TOMS Multi Drive =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$49 (I)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;INDEX FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależnie od wybranej gęstości&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[TOMS Multi Drive]] komenda ta działa tak samo, jak zwykłe formatowanie ($21), z tym wyjątkiem, że do oznaczenia początku ścieżki stacja używa otworu indeksowego (normalnie w stacjach Atari ścieżka zaczyna się tam, gdzie akurat wypadnie). Służy to głównie do zabezpieczania programów przez tzw. synchroniczne sektory. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== US Doubler =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HIGH SPEED INDEX&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Stacje kompatybilne z [[US Doubler]] w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącą do ustawienia częstotliwości nośnej dla przyspieszonej transmisji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$66 (f)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CUSTOM FORMAT&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda formatowania z zadanym przeplotem zaimplementowana w stacjach [[US Doubler]]. Wysyłane 128 bajtów określa:&lt;br /&gt;
* w pierwszych 12 bajtach: zadaną gęstość, tak jak w komendzie WRITE PERCOM&lt;br /&gt;
* następne 18 lub 26 bajtów to fizyczne numery sektorów na ścieżce w zadanej kolejności, licząc od 1.&lt;br /&gt;
&amp;lt;p&amp;gt;Przykładowe przeploty podaje hasło [[Przeplot]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== [[XFD601|XFD601/602]] =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GET COMMAND BUFFER&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zwraca historię ostatnich 32 wywołań na łączu szeregowym. Wszystkich wywołań - nie tylko do stacji. Każdy wpis zawiera 4 bajty - dokładnie te same, jakie są wysyłane do urządzenia zewnetrznego przez komputer, czyli: [[SIO#DCB|DDEVIC]], [[SIO#DCB|DCMND]], [[SIO#DCB|DAUX1]], [[SIO#DCB|DAUX2]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Po odebraniu tego rozkazu stacja zwraca tzw. adres pierwszego napotkanego sektora, w formie 6 bajtów: numer scieżki, numer strony, numer sektora, rozmiar sektora, 2 bajty CRC.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit|SIO, Lista komend według funkcji]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34989</id>
		<title>Lista komend SIO według funkcji</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34989"/>
		<updated>2015-07-11T19:19:30Z</updated>

		<summary type="html">&lt;p&gt;Trub: /* Atari 850 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Główny artykuł: [[SIO]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Podstawowy zestaw komend====&lt;br /&gt;
&lt;br /&gt;
Poniższa tabela wyszczególnia podstawowe minimum komend rozpoznawanych przez urządzenia peryferyjne Atari.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DISK&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Formatuje dyskietkę w wybranej uprzednio (komendami PERCOM) gęstości, lub w [[Formaty dyskietek|pojedynczej gęstości]] (90k), jeśli stacja nie jest konfigurowalna. Zwraca listę zawierającą numery wadliwych sektorów (kolejno LSB/MSB) wykrytych w czasie formatowania, zakończoną wartością $FFFF. Niektóre stacje zwracają tu pustą listę ($FFFF, a dalej same zera), nawet jeśli na dyskietce są wadliwe sektory: po prostu dyskietki nie są już tak drogie, jak pod koniec lat siedemdziesiątych XX wieku...&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$50 (P)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;PUT SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31 i $60&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zapisuje do urządzenia blok danych wskazany przez DBUFA, a zawierający DBYT bajtów. W przypadku stacji dysków jest to zapis bez weryfikacji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$52 (R)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SECTOR&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Odczytuje z urządzenia blok danych o wielkości DBYT bajtów i zapisuje go w pamięci pod adresem wskazanym przez DBUFA.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$53 (S)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ STATUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wszystkie oprócz magnetofonu&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależna od urządzenia&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia blok statusu i zapisuje go pod adresem wskazanym przez DBUFA. Blok statusu dla RS-232 ma wielkość 2 bajtów, dla drukarki i stacji dysków - 4. Typowo komenda ta służy to stwierdzenia, czy urządzenie jest gotowe do pracy. W przypadku magnetofonu obowiązuje założenie, że jest on zawsze podłączony i gotów, nie ma więc potrzeby sprawdzania jego statusu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan=3&amp;gt;$57 (W)&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;WRITE SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Wszystkie&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;To samo, co PUT SECTOR ($50). W przypadku stacji dysków zapis przeprowadzany jest z weryfikacją.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;W przypadku drukarki długość bufora może wynosić 20, 29 albo 40 znaków (na ogół to ostatnie), a znaczenie DAUX2 jest jak następuje:&lt;br /&gt;
* $4E (N) drukowanie normalne&lt;br /&gt;
* $53 (S) druk obrócony o 90 stopni&lt;br /&gt;
* $44 (D) druk normalny z podwójną szerokością znaków&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Dla interfejsu [[850|Atari 850]] wielkość bufora wynosi 64 bajty.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy dodatkowe====&lt;br /&gt;
&lt;br /&gt;
Rozpoznawane przez urządzenia peryferyjne Atari komendy dodatkowe w stosunku do powyżej wspomnianego niezbędnego minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$22 (&amp;quot;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT MEDIUM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości średniej]] (130k). Komenda wprowadzona razem ze stacją [[1050]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DSDD&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;256 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości podwójnej dwustronnej]] (360k). Komenda wprowadzona razem ze stacją [[XF551|Atari XF-551]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy PERCOM====&lt;br /&gt;
&lt;br /&gt;
Komendy PERCOM noszą nazwę od stacji dysków firmy [[Percom Data Corp.|PERCOM]], w których po raz pierwszy się pojawiły. Nie są rozpoznawane przez stacje dysków firmy Atari (z wyjątkiem [[XF551|Atari XF-551]]), są jednak zaimplementowane we wszystkich rozszerzeniach oraz stacjach innych producentów i stanowią de facto standard.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4E (N)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ PERCOM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;12 bajtów ([[SIO#Blok_PERCOM|Blok PERCOM]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia dwunastobajtowy blok danych opisujący jego bieżącą konfigurację, tj. przede wszystkim format znajdującej się w stacji dyskietki.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4F (O)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE PERCOM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zapisuje do urządzenia dwanaście bajtów opisujących żądaną konfigurację, tj. liczbę ścieżek, stron dyskietki, sektorów na ścieżkę, wielkość sektora, gęstość. Przyjąwszy komendę stacja powinna natychmiast przestawić się na żądane ustawienia, o ile jest w stanie je zrealizować.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli zadanych ustawień nie da się zrealizować, stacja w teorii powinna odrzucić przesłany blok danych zgłaszając komputerowi błąd wykonania (co skutkuje [[Kody_błędów_Atari_OS|kodem błędu]] nr 144). W praktyce wiele stacji stosuje uproszczoną procedurę przyjmując parametry najbliższe zdefiniowanym przez przesłany blok danych. Jednak to, że parametry są &amp;quot;najbliższe&amp;quot;, nie oznacza, że muszą być w ogóle bliskie: np. zażądanie formatu 360 KB od stacji [[Top Drive 1050]] spowoduje jej ustawienie się w [[DD]] (180k), bo to jest maximum, jakie stacja jest w stanie zrealizować. Komplikuje to zadanie programom formatującym, które w celu zapisania prawidłowego katalogu muszą sprawdzać, czy żądana od stacji pojemność dyskietki została rzeczywiście wybrana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dyskietkę zgodnie z zapisaną konfiguracją.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ]] IDE nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do definiowania wielkości partycji służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy specjalne====&lt;br /&gt;
&lt;br /&gt;
Komendy wspomagające automatyczną instalację w systemie handlerów podłączonych urządzeń zewnętrznych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND RELOCATOR&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg odpowiedzi na komendę POLL ($3F)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jest to komenda uzupełniająca do opisanego niżej POLL ($3F). Powoduje przesłanie przez urządzenie programu odpowiedzialnego za załadowanie (komendą SEND HANDLER) i relokację właściwego handlera. Wszystkie parametry transmisji dla SEND RELOCATOR przesyłane są na komendę POLL ($3F). Program relokatora - po jego załadowaniu - uruchamia się od adresu DBUFA + 6. Przejmuje on na siebie wykonanie reszty operacji, a w wypadku niepowodzenia sygnalizuje błąd przez ustawienie bitu Carry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komendę SEND RELOCATOR rozpoznaje moduł [[850|Atari 850]], a może dotyczyć też innych urządzeń, oprócz stacji dysków (gdzie kod operacyjny $21 oznacza formatowanie dyskietki).&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$26 (&amp;amp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HANDLER&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator przesłany przez SEND RELOCATOR ($21) lub wg odpowiedzi na komendę POLL BUS ($40)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator (przesłany przez urządzenie lub rezydujący)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda SEND HANDLER służy do załadowania z urządzenia kodu programu obsługi (handlera) tego urządzenia. Może ona działać różnie w zależności od tego, czy transmisja została zainicjowana przez komendę POLL ($3F) czy POLL BUS ($40).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL ($3F) oznacza starszy protokół transmisji, w którym format strumienia danych przesłanych przez SEND HANDLER zależny jest od programu relokatora załadowanego wcześniej komendą SEND RELOCATOR ($21) i uruchomionego przez komputer.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL BUS ($40) oznacza nowszy protokół transmisji. Format strumienia danych jest ustalony z góry, a relokator rezyduje w ROM-ie systemu operacyjnego komputera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po otrzymaniu pozytywnej odpowiedzi na POLL BUS ($40) komputer rozpoczyna ładowanie kolejnych, 128-bajtowych rekordów binarnych, w liczbie do 256 (czyli pojedynczy &amp;quot;handler&amp;quot; może mieć maximum 32k). Przesyłany strumień danych musi być w [[ACX|specjalnym formacie]], który zapewnia relokowalność kodu, oraz zawiera podany explicite znacznik końca pliku - wystąpienie błędu przed napotkaniem tego znacznika powoduje przerwanie procedury z [[kody błędów|kodem błędu]] INCOMPLETE EXECUTION.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Ustawienia zmiennych DCB dla komendy SEND HANDLER wyglądają następująco:&amp;lt;/p&amp;gt;&lt;br /&gt;
* DDEVIC - kod urządzenia przesłany przez urządzenie $4F na komendę POLL BUS.&lt;br /&gt;
* DUNIT - zawsze $01&lt;br /&gt;
* DCMND - $26 - SEND HANDLER&lt;br /&gt;
* DSTATS - $40 - odczyt&lt;br /&gt;
* DTIMLO - 30 sekund&lt;br /&gt;
* DBYT - 128 bajtów&lt;br /&gt;
* DAUX1 - numer kolejny rekordu danych&lt;br /&gt;
* DAUX2 - zawsze 0&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ta, zwana też TYPE 2 POLL, służy do zainicjowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). W odpowiedzi urządzenie przesyła 12 bajtów odpowiadających kolejnym wartościom, jakie należy ustawić w bloku DCB celem załadowania kodu wykonywalnego handlera. Jest to starszy protokół transmisji zaprojektowany dla komputerów serii [[400]] i [[800]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W module [[850|Atari 850]] odpowiedzią na komendę POLL są wartości, jakie trzeba wstawić do DCB celem wykonania komendy SEND RELOCATOR ($21).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W celu uniknięcia wielokrotnego załadowania tego samego programu obsługi urządzenie na komendę POLL ($3F) odpowiada tylko raz, potem wykonanie komendy jest zablokowane aż do wyłączenia zasilania.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$40 (@)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL BUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$4F (bus master)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4 bajty&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;W komputerach serii XL oraz XE komendę tę system operacyjny przesyła do interfejsu szeregowo-równoległego przy każdym zimnym starcie; w pewnych warunkach - ale z nieco innymi parametrami - może też zostać wykonana po zainicjowaniu systemu. Jest to odpowiednik komendy POLL ($3F), jednak protokół transmisji handlera jest zunifikowany i nie wymaga od urządzenia przesyłania relokatora (uniwersalny relokator rezyduje w ROM-ie systemu operacyjnego). Analogicznie do POLL ($3F), komenda POLL BUS jest przeznaczona do zapoczątkowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). Zasadniczym adresatem jest tu moduł [[1090]] działający jako bus master.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Istnieje kilka odmian komendy POLL BUS różniących się parametrami przesyłanymi w DAUX1 i DAUX2:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TYPE 3 POLL: DAUX1 = 0 i DAUX2 = 0.&lt;br /&gt;
* TYPE 4 POLL: zobacz niżej.&lt;br /&gt;
* RESET POLL: DAUX1 = $4F i DAUX2 = $4F (&amp;quot;OO&amp;quot;)&lt;br /&gt;
* NULL POLL: DAUX1 = $4E i DAUX2 = $4E (&amp;quot;NN&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Przy zimnym starcie na początku system wysyła RESET POLL. Komenda ta powinna odblokować rozpoznawanie komendy TYPE 3 POLL we wszystkich podłączonych urządzeniach. Na RESET POLL urządzenia, oprócz potwierdzenia wykonania, nie przesyłają żadnej odpowiedzi, a komputer jej nie oczekuje.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Następnie system wysyła komendę TYPE 3 POLL. Pozytywna odpowiedź oznacza, że urządzenie nadesłało 4 bajty, z czego dwa pierwsze to ilość pamięci potrzebna do przeprowadzenia całości transmisji (musi to być parzysta wielkość). Jeśli jest to więcej niż dostępna ilość pamięci pomiędzy MEMLO a MEMTOP, system odpowiada przez NULL POLL (podobnie jak w wypadku RESET POLL, urządzenie przesyła tylko potwierdzenie wykonania), a następnie ponownie wysyła TYPE 3 POLL. W przypadku braku pamięci byłaby to pętla nieskończona, ale pojedyncze urządzenie na komendę TYPE 3 POLL może odpowiedzieć tylko raz - pętla jest więc przerywana błędem, który wystąpi po przetestowaniu wszystkich urządzeń zarządzanych przez bus mastera. Ponowna odpowiedź na TYPE 3 POLL jest możliwa dopiero po przesłaniu urządzeniu komendy RESET POLL, inaczej TYPE 3 POLL zostanie zignorowana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Trzeci przysłany bajt to identyfikator urządzenia (dla DDEVIC), które odpowiedziało na komendę i z którym będzie prowadzona dalsza komunikacja.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po stwierdzeniu poprawności odpowiedzi komputer dokonuje rezerwacji pamięci nad wartością MEMLO zaokrągloną w górę do najbliższej granicy słowa i próbuje dokonać odczytu z urządzenia, które się zgłosiło, 128 bajtów pod adres $03FD, przy użyciu innej &amp;quot;nietypowej&amp;quot; komendy, a mianowicie $26 - SEND HANDLER. Po załadowaniu i zainicjowaniu handlera pętla wraca do początku i wykonuje się cyklicznie aż do wystąpienia błędu - czyli do załadowania wszystkich handlerów będących w dyspozycji bus mastera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Procedura ładowania handlera wywoływana jest po procedurze bootowania DOS-u, ale niezależnie od jej wyniku; z czego wniosek, że &amp;quot;handler&amp;quot; może spełniać funkcję zarówno dodatku do DOS-u, jak i zostać załadowany &amp;lt;b&amp;gt;zamiast&amp;lt;/b&amp;gt; DOS-u.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Tą samą drogą można już po całkowitym uruchomieniu systemu, podczas pracy, załadować handler urządzenia &amp;lt;b&amp;gt;konkretnie wskazanego&amp;lt;/b&amp;gt;. Robi to [[CIO]] przy każdorazowej próbie otwarcia pliku na urządzeniu, którego system nie zna (nie ma takiego wpisu w tablicy handlerów).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Odpytanie bus mastera na okoliczność dysponowania takowym handlerem odbywa się za pomocą komendy TYPE 4 POLL. W DAUX1 ma się znajdować identyfikator urządzenia CIO, dla którego to urządzenia potrzebujemy handlera (np. dla magnetofonu $43, czyli &amp;quot;C&amp;quot;), w DAUX2 natomiast przesyła się numer wywoływanego urządzenia (np. dla &amp;quot;C1:&amp;quot; będzie to $01).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Pozostałe komendy====&lt;br /&gt;
&lt;br /&gt;
Komendy zdefiniowane przez Atari, na których temat brak bliższych danych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 (&amp;amp;nbsp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda wymieniana przez niektóre źródła. Szczegóły nieznane. Być może chodzi o komendę LOAD AND EXECUTE TEST w interfejsie [[850]] (zob. niżej)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG1&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050|Atari 1050]]. Wymaga przesłania 128-bajtowego bloku danych, w którym dwa pierwsze bajty decydują o tym, co stacja będzie robić (DAUX1/2 są ignorowane):&amp;lt;/p&amp;gt;&lt;br /&gt;
* $02 - test przejścia głowicy między ścieżkami&lt;br /&gt;
* $03 - przesuw głowicy za pomocą silnika krokowego o jeden krok w przód lub w tył; o kierunku decyduje następny bajt, wartość dodatnia (np. $01) powoduje przesuw w przód - czyli w kierunku ścieżki 39 - a wartość ujemna (np. $FF) przesuw wstecz, czyli w kierunku ścieżki 0. &amp;quot;Krok&amp;quot; silnika krokowego w tym wypadku to połowa odległości między ścieżkami, żeby więc tą komendą przesunąć głowicę na sąsiednią ścieżkę, trzeba zrobić to dwa razy. Uwaga: możliwe jest cofnięcie głowicy wstecz od ścieżki 0 (na tzw. ścieżkę -1).&lt;br /&gt;
* $04 - test zapisu i odczytu dyskietki; formatuje znajdującą się w stacji dyskietkę w średniej gęstości.&lt;br /&gt;
* $05 - przesuw główicy do ścieżki o numerze podanym w następnym bajcie. &lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;UWAGA: kod operacyjny ($23) jest taki sam, jak kod komendy formatowania w stacji [[XF551|Atari XF-551]] oraz [[LDW Super 2000]] i [[CA-2001]] z załadowanym [[Synchromesh]]em!&#039;&#039;&#039;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050]], służy do pomiaru prędkości obrotowej dyskietki. W zależności od wartości dwóch pierwszych bajtów przesłanego bloku danych ($00, $00 lub $00, $01) stacja przesyła czas jednego obrotu dyskietki lub wartość prędkości obrotowej w obrotach na minutę.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SPIN&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;$31&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;R (?)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;Komendy te występują jako komendy dyskowe na liście rozkazów SIO w dokumentacji sporządzonej przez Atari. Nie znam jednak stacji, która by na nie reagowała. Mogą to być komendy stacji [[810]], jakieś komendy diagnostyczne jej prototypu, albo komendy planowane, lecz nie zaimplementowane. Dostępna dokumentacja nie zawiera ich opisu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$55 (U)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MOTOR ON&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$56 (V)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VERIFY SECTOR&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Stacja odczytuje sektor wskazany przez DAUX1/2 i zwraca komputerowi informację, czy da się on odczytać bez błędów. Dane zawarte w sektorze nie są transmitowane do komputera. Komenda ta występuje w dokumentacji SIO sporządzonej przez Atari, ale żadna ze stacji marki Atari jej nie rozpoznaje.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Komendy specyficzne dla poszczególnych urządzeń ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Stacje dysków Atari 1450XLD =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$01 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET LARGE MODE&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;large mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako logiczną całość liczącą 2080 sektorów po 128 bajtów (260k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$02 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET SMALL MODE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;small mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako dwie oddzielne dyskietki liczące po 1040 sektorów po 128 bajtów (= 2x130k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC IN&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda zapisująca do stacji wskazany bufor wypełniony bliżej nieokreślonymi danymi diagnostycznymi.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC OUT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda odczytująca bliżej niesprecyzowane dane diagnostyczne do wskazanego bufora.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B1 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B2 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Atari 850 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONTROL&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 4&amp;gt;$50&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca linie DTR, RTS i XMT (TX) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 34,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ustawiająca różne parametry pracy (m.in. szybkość transmisji) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 36,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;STREAM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda uruchamiająca tryb równoległego wejścia/wyjścia (Concurrent I/O). Interfejs [[850|Atari 850]] w odpowiedzi zwraca sekwencję liczb, według której handler urządzenia &amp;quot;R:&amp;quot; ustawia [[Rejestry_POKEY-a|rejestry układu POKEY]]  (kolejno AUDF,AUDC 1-4 oraz AUDCTL). Przykładowa sekwencja dla szybkości transmisji 300bps jest następująca: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;LOAD AND EXECUTE TEST&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości przesyłanego kodu&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda niepublikowana w oficjalnej dokumentacji. Powoduje wczytanie z komputera kodu programu, a następnie uruchomienie go przez interfejs [[850|Atari 850]]. W DAUX1 podawany jest rozmiar przesyłanego kodu. Ze względu na specyfikę procedury odbioru danych, kod powinien być wysyłany od ostatniego do pierwszego bajtu.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== ATR 8000 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$47 (G)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GO TO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$5A ([[ATR 8000]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda pozwala na wywoływanie funkcji zdefiniowanych w ROM-ie modułu [[ATR 8000]] (q.v.).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Indus GT/LDW Super 2000/CA-2001 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT SKEWED&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda formatowania z szybkim [[przeplot]]em w stacjach [[Indus GT]], [[LDW Super 2000]] oraz [[CA-2001]] z załadowanym [[Synchromesh]]em.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Kod operacyjny jest taki sam, jak komendy formatowania w gęstości [[DSDD]] dla stacji [[XF551]] oraz jednej z komend diagnostycznych w [[1050]].&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD/EXECUTE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Różna&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda zaimplementowana w stacjach [[Indus GT]], [[LDW Super 2000]] i [[CA-2001]], pozwalająca na przesyłanie do stacji programów użytkownika i uruchamianie ich. Szczegóły: patrz [[Programowanie stacji LDW Super 2000 i CA-2001]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Happy Warp =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$48 (H)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;HAPPY CONFIG&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji z rozszerzeniem [[Happy Warp]]. Szczegóły: patrz [[Happy_Warp#Konfiguracja|Happy Warp - Konfiguracja]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== KMK/JŻ IDE =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$EC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;IDENTIFY DRIVE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;512 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W [[KMK/JŻ IDE]] komenda powoduje odczytanie bloku identyfikacyjnego napędu IDE, na którym założona jest wskazana partycja, i wpisanie go do bufora wskazanego przez DBUFA. Kolejność bajtów w tym bloku jest odwrotna od normalnej, tzn. wszystkie pary bajtów należy zamienić miejscami przed odczytaniem danych z tego bufora - dotyczy to również informacji tekstowej.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Multi I/O =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MEDIA CAPACITY INFO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nowe wersje firmware [[Multi I/O]] (od v. 1.4 wzwyż) w odpowiedzi na tę komendę zwracają informację o pojemności wskazanego dysku SCSI w [http://en.wikipedia.org/wiki/SCSI_Read_Capacity_Command tym formacie].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Speedy 1050 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;AUTOMATIC FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 11&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Speedy 1050]] w odpowiedni na tę komendę formatuje dyskietkę w zadanej gęstości (DAUX1 = $00 pojedyncza, $20 podwójna, $80 średnia) i, o ile konfiguracja stacji tego nie zabrania, zapisuje bootsektory i [[VTOC]] zgodne z [[DOS 2.0]] lub (w średniej gęstości) [[DOS 2.5]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;REGISTER COMMAND&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje zarejestrowanie komendy uzytkownika. Dane powinny zawierać kolejno:&lt;br /&gt;
* kod komendy&lt;br /&gt;
* młodszy bajt adresu w pamięci stacji, gdzie znajduje się podprogram obsługi&lt;br /&gt;
* starszy bajt tego adresu&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli dana komenda jest już jakoś przypisana, to przypisanie zostanie zmienione. Gdy adres ma wartość $0000, komenda zostanie wykasowana z pamięci stacji.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$44 (D)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DISPLAY&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja wyświetlacza stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: wyświetlanie kodów błędów na wyświetlaczu stacji&lt;br /&gt;
* bit 6: wyświetlanie numeru ścieżki w kodzie szesnastkowym&lt;br /&gt;
* bit 5: formatowanie bez weryfikacji&lt;br /&gt;
* bit 4: zablokowanie zapisu struktury logicznej dyskietki po komendzie $20&lt;br /&gt;
* bit 3: niewyłączanie silnika po komendzie $51&lt;br /&gt;
* bit 2: nieużywany&lt;br /&gt;
* bit 1: nieużywany&lt;br /&gt;
* bit 0: sygnał dźwiękowy w wypadku błędu&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4B (K)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DRIVE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: zapis i odczyt dyskietki bez buforowania (0 po zmianie dyskietki)&lt;br /&gt;
* bit 6: zapis i odczyt ścieżki bez buforowania (0 po zmianie ścieżki)&lt;br /&gt;
* bit 5: nieużywany&lt;br /&gt;
* bit 4: nieużywany&lt;br /&gt;
* bit 3: wyłączenie buforowania ścieżek&lt;br /&gt;
* bit 2: wyłączenie weryfikacji dla komendy $57 (W)&lt;br /&gt;
* bit 1: zapis sektora z pominięciem buforowania&lt;br /&gt;
* bit 0: odczyt sektora z pominięciem buforowania&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4C (L)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP, NO ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] wywołanie wewnętrznej procedury ROM-u stacji spod adresu przekazanego w DAUX1/2 (młodszy/starszy). Potwierdzenie wykonania rozkazu musi przesłać wywoływany podprogram.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP WITH ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] to samo, to $4C, ale potwierdzenie rozkazu jest przesyłane automatycznie.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FLUSH&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda ta powoduje natychmiastowy zapis zawartości bufora zapisu na dyskietkę i zatrzymanie silnika (normalnie stacja czeka z tym ok. 2 sekund po transmisji sektora).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$60 (`)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] zapis na dyskietkę całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$62 (b)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] odczyt z dyskietki całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$68 (h)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SIO LEN&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie dwóch bajtów określających wielkość procedury SIO, którą mozna od stacji uzyskać komendą $69. &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$69 (i)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND SIO&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wynik komendy $68&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie programu szybkiej transmisji SIO. Bajty DBYT powinny być ustawione na wartość zwróconą przez komendę $68. DAUX1/2 to adres w pamięci Atari, gdzie procedura ma zostać załadowana (stacja dokonuje relokacji kodu pod ten adres przed wysłaniem go do komputera).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== TOMS Multi Drive =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$49 (I)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;INDEX FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależnie od wybranej gęstości&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[TOMS Multi Drive]] komenda ta działa tak samo, jak zwykłe formatowanie ($21), z tym wyjątkiem, że do oznaczenia początku ścieżki stacja używa otworu indeksowego (normalnie w stacjach Atari ścieżka zaczyna się tam, gdzie akurat wypadnie). Służy to głównie do zabezpieczania programów przez tzw. synchroniczne sektory. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== US Doubler =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HIGH SPEED INDEX&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Stacje kompatybilne z [[US Doubler]] w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącą do ustawienia częstotliwości nośnej dla przyspieszonej transmisji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$66 (f)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CUSTOM FORMAT&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda formatowania z zadanym przeplotem zaimplementowana w stacjach [[US Doubler]]. Wysyłane 128 bajtów określa:&lt;br /&gt;
* w pierwszych 12 bajtach: zadaną gęstość, tak jak w komendzie WRITE PERCOM&lt;br /&gt;
* następne 18 lub 26 bajtów to fizyczne numery sektorów na ścieżce w zadanej kolejności, licząc od 1.&lt;br /&gt;
&amp;lt;p&amp;gt;Przykładowe przeploty podaje hasło [[Przeplot]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== [[XFD601|XFD601/602]] =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GET COMMAND BUFFER&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zwraca historię ostatnich 32 wywołań na łączu szeregowym. Wszystkich wywołań - nie tylko do stacji. Każdy wpis zawiera 4 bajty - dokładnie te same, jakie są wysyłane do urządzenia zewnetrznego przez komputer, czyli: [[SIO#DCB|DDEVIC]], [[SIO#DCB|DCMND]], [[SIO#DCB|DAUX1]], [[SIO#DCB|DAUX2]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Po odebraniu tego rozkazu stacja zwraca tzw. adres pierwszego napotkanego sektora, w formie 6 bajtów: numer scieżki, numer strony, numer sektora, rozmiar sektora, 2 bajty CRC.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit|SIO, Lista komend według funkcji]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34988</id>
		<title>Lista komend SIO według funkcji</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34988"/>
		<updated>2015-07-11T19:19:10Z</updated>

		<summary type="html">&lt;p&gt;Trub: /* Pozostałe komendy */ DOWNLOAD&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Główny artykuł: [[SIO]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Podstawowy zestaw komend====&lt;br /&gt;
&lt;br /&gt;
Poniższa tabela wyszczególnia podstawowe minimum komend rozpoznawanych przez urządzenia peryferyjne Atari.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DISK&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Formatuje dyskietkę w wybranej uprzednio (komendami PERCOM) gęstości, lub w [[Formaty dyskietek|pojedynczej gęstości]] (90k), jeśli stacja nie jest konfigurowalna. Zwraca listę zawierającą numery wadliwych sektorów (kolejno LSB/MSB) wykrytych w czasie formatowania, zakończoną wartością $FFFF. Niektóre stacje zwracają tu pustą listę ($FFFF, a dalej same zera), nawet jeśli na dyskietce są wadliwe sektory: po prostu dyskietki nie są już tak drogie, jak pod koniec lat siedemdziesiątych XX wieku...&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$50 (P)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;PUT SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31 i $60&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zapisuje do urządzenia blok danych wskazany przez DBUFA, a zawierający DBYT bajtów. W przypadku stacji dysków jest to zapis bez weryfikacji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$52 (R)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SECTOR&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Odczytuje z urządzenia blok danych o wielkości DBYT bajtów i zapisuje go w pamięci pod adresem wskazanym przez DBUFA.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$53 (S)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ STATUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wszystkie oprócz magnetofonu&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależna od urządzenia&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia blok statusu i zapisuje go pod adresem wskazanym przez DBUFA. Blok statusu dla RS-232 ma wielkość 2 bajtów, dla drukarki i stacji dysków - 4. Typowo komenda ta służy to stwierdzenia, czy urządzenie jest gotowe do pracy. W przypadku magnetofonu obowiązuje założenie, że jest on zawsze podłączony i gotów, nie ma więc potrzeby sprawdzania jego statusu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan=3&amp;gt;$57 (W)&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;WRITE SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Wszystkie&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;To samo, co PUT SECTOR ($50). W przypadku stacji dysków zapis przeprowadzany jest z weryfikacją.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;W przypadku drukarki długość bufora może wynosić 20, 29 albo 40 znaków (na ogół to ostatnie), a znaczenie DAUX2 jest jak następuje:&lt;br /&gt;
* $4E (N) drukowanie normalne&lt;br /&gt;
* $53 (S) druk obrócony o 90 stopni&lt;br /&gt;
* $44 (D) druk normalny z podwójną szerokością znaków&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Dla interfejsu [[850|Atari 850]] wielkość bufora wynosi 64 bajty.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy dodatkowe====&lt;br /&gt;
&lt;br /&gt;
Rozpoznawane przez urządzenia peryferyjne Atari komendy dodatkowe w stosunku do powyżej wspomnianego niezbędnego minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$22 (&amp;quot;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT MEDIUM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości średniej]] (130k). Komenda wprowadzona razem ze stacją [[1050]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DSDD&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;256 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości podwójnej dwustronnej]] (360k). Komenda wprowadzona razem ze stacją [[XF551|Atari XF-551]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy PERCOM====&lt;br /&gt;
&lt;br /&gt;
Komendy PERCOM noszą nazwę od stacji dysków firmy [[Percom Data Corp.|PERCOM]], w których po raz pierwszy się pojawiły. Nie są rozpoznawane przez stacje dysków firmy Atari (z wyjątkiem [[XF551|Atari XF-551]]), są jednak zaimplementowane we wszystkich rozszerzeniach oraz stacjach innych producentów i stanowią de facto standard.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4E (N)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ PERCOM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;12 bajtów ([[SIO#Blok_PERCOM|Blok PERCOM]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia dwunastobajtowy blok danych opisujący jego bieżącą konfigurację, tj. przede wszystkim format znajdującej się w stacji dyskietki.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4F (O)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE PERCOM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zapisuje do urządzenia dwanaście bajtów opisujących żądaną konfigurację, tj. liczbę ścieżek, stron dyskietki, sektorów na ścieżkę, wielkość sektora, gęstość. Przyjąwszy komendę stacja powinna natychmiast przestawić się na żądane ustawienia, o ile jest w stanie je zrealizować.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli zadanych ustawień nie da się zrealizować, stacja w teorii powinna odrzucić przesłany blok danych zgłaszając komputerowi błąd wykonania (co skutkuje [[Kody_błędów_Atari_OS|kodem błędu]] nr 144). W praktyce wiele stacji stosuje uproszczoną procedurę przyjmując parametry najbliższe zdefiniowanym przez przesłany blok danych. Jednak to, że parametry są &amp;quot;najbliższe&amp;quot;, nie oznacza, że muszą być w ogóle bliskie: np. zażądanie formatu 360 KB od stacji [[Top Drive 1050]] spowoduje jej ustawienie się w [[DD]] (180k), bo to jest maximum, jakie stacja jest w stanie zrealizować. Komplikuje to zadanie programom formatującym, które w celu zapisania prawidłowego katalogu muszą sprawdzać, czy żądana od stacji pojemność dyskietki została rzeczywiście wybrana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dyskietkę zgodnie z zapisaną konfiguracją.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ]] IDE nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do definiowania wielkości partycji służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy specjalne====&lt;br /&gt;
&lt;br /&gt;
Komendy wspomagające automatyczną instalację w systemie handlerów podłączonych urządzeń zewnętrznych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND RELOCATOR&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg odpowiedzi na komendę POLL ($3F)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jest to komenda uzupełniająca do opisanego niżej POLL ($3F). Powoduje przesłanie przez urządzenie programu odpowiedzialnego za załadowanie (komendą SEND HANDLER) i relokację właściwego handlera. Wszystkie parametry transmisji dla SEND RELOCATOR przesyłane są na komendę POLL ($3F). Program relokatora - po jego załadowaniu - uruchamia się od adresu DBUFA + 6. Przejmuje on na siebie wykonanie reszty operacji, a w wypadku niepowodzenia sygnalizuje błąd przez ustawienie bitu Carry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komendę SEND RELOCATOR rozpoznaje moduł [[850|Atari 850]], a może dotyczyć też innych urządzeń, oprócz stacji dysków (gdzie kod operacyjny $21 oznacza formatowanie dyskietki).&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$26 (&amp;amp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HANDLER&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator przesłany przez SEND RELOCATOR ($21) lub wg odpowiedzi na komendę POLL BUS ($40)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator (przesłany przez urządzenie lub rezydujący)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda SEND HANDLER służy do załadowania z urządzenia kodu programu obsługi (handlera) tego urządzenia. Może ona działać różnie w zależności od tego, czy transmisja została zainicjowana przez komendę POLL ($3F) czy POLL BUS ($40).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL ($3F) oznacza starszy protokół transmisji, w którym format strumienia danych przesłanych przez SEND HANDLER zależny jest od programu relokatora załadowanego wcześniej komendą SEND RELOCATOR ($21) i uruchomionego przez komputer.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL BUS ($40) oznacza nowszy protokół transmisji. Format strumienia danych jest ustalony z góry, a relokator rezyduje w ROM-ie systemu operacyjnego komputera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po otrzymaniu pozytywnej odpowiedzi na POLL BUS ($40) komputer rozpoczyna ładowanie kolejnych, 128-bajtowych rekordów binarnych, w liczbie do 256 (czyli pojedynczy &amp;quot;handler&amp;quot; może mieć maximum 32k). Przesyłany strumień danych musi być w [[ACX|specjalnym formacie]], który zapewnia relokowalność kodu, oraz zawiera podany explicite znacznik końca pliku - wystąpienie błędu przed napotkaniem tego znacznika powoduje przerwanie procedury z [[kody błędów|kodem błędu]] INCOMPLETE EXECUTION.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Ustawienia zmiennych DCB dla komendy SEND HANDLER wyglądają następująco:&amp;lt;/p&amp;gt;&lt;br /&gt;
* DDEVIC - kod urządzenia przesłany przez urządzenie $4F na komendę POLL BUS.&lt;br /&gt;
* DUNIT - zawsze $01&lt;br /&gt;
* DCMND - $26 - SEND HANDLER&lt;br /&gt;
* DSTATS - $40 - odczyt&lt;br /&gt;
* DTIMLO - 30 sekund&lt;br /&gt;
* DBYT - 128 bajtów&lt;br /&gt;
* DAUX1 - numer kolejny rekordu danych&lt;br /&gt;
* DAUX2 - zawsze 0&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ta, zwana też TYPE 2 POLL, służy do zainicjowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). W odpowiedzi urządzenie przesyła 12 bajtów odpowiadających kolejnym wartościom, jakie należy ustawić w bloku DCB celem załadowania kodu wykonywalnego handlera. Jest to starszy protokół transmisji zaprojektowany dla komputerów serii [[400]] i [[800]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W module [[850|Atari 850]] odpowiedzią na komendę POLL są wartości, jakie trzeba wstawić do DCB celem wykonania komendy SEND RELOCATOR ($21).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W celu uniknięcia wielokrotnego załadowania tego samego programu obsługi urządzenie na komendę POLL ($3F) odpowiada tylko raz, potem wykonanie komendy jest zablokowane aż do wyłączenia zasilania.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$40 (@)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL BUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$4F (bus master)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4 bajty&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;W komputerach serii XL oraz XE komendę tę system operacyjny przesyła do interfejsu szeregowo-równoległego przy każdym zimnym starcie; w pewnych warunkach - ale z nieco innymi parametrami - może też zostać wykonana po zainicjowaniu systemu. Jest to odpowiednik komendy POLL ($3F), jednak protokół transmisji handlera jest zunifikowany i nie wymaga od urządzenia przesyłania relokatora (uniwersalny relokator rezyduje w ROM-ie systemu operacyjnego). Analogicznie do POLL ($3F), komenda POLL BUS jest przeznaczona do zapoczątkowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). Zasadniczym adresatem jest tu moduł [[1090]] działający jako bus master.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Istnieje kilka odmian komendy POLL BUS różniących się parametrami przesyłanymi w DAUX1 i DAUX2:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TYPE 3 POLL: DAUX1 = 0 i DAUX2 = 0.&lt;br /&gt;
* TYPE 4 POLL: zobacz niżej.&lt;br /&gt;
* RESET POLL: DAUX1 = $4F i DAUX2 = $4F (&amp;quot;OO&amp;quot;)&lt;br /&gt;
* NULL POLL: DAUX1 = $4E i DAUX2 = $4E (&amp;quot;NN&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Przy zimnym starcie na początku system wysyła RESET POLL. Komenda ta powinna odblokować rozpoznawanie komendy TYPE 3 POLL we wszystkich podłączonych urządzeniach. Na RESET POLL urządzenia, oprócz potwierdzenia wykonania, nie przesyłają żadnej odpowiedzi, a komputer jej nie oczekuje.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Następnie system wysyła komendę TYPE 3 POLL. Pozytywna odpowiedź oznacza, że urządzenie nadesłało 4 bajty, z czego dwa pierwsze to ilość pamięci potrzebna do przeprowadzenia całości transmisji (musi to być parzysta wielkość). Jeśli jest to więcej niż dostępna ilość pamięci pomiędzy MEMLO a MEMTOP, system odpowiada przez NULL POLL (podobnie jak w wypadku RESET POLL, urządzenie przesyła tylko potwierdzenie wykonania), a następnie ponownie wysyła TYPE 3 POLL. W przypadku braku pamięci byłaby to pętla nieskończona, ale pojedyncze urządzenie na komendę TYPE 3 POLL może odpowiedzieć tylko raz - pętla jest więc przerywana błędem, który wystąpi po przetestowaniu wszystkich urządzeń zarządzanych przez bus mastera. Ponowna odpowiedź na TYPE 3 POLL jest możliwa dopiero po przesłaniu urządzeniu komendy RESET POLL, inaczej TYPE 3 POLL zostanie zignorowana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Trzeci przysłany bajt to identyfikator urządzenia (dla DDEVIC), które odpowiedziało na komendę i z którym będzie prowadzona dalsza komunikacja.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po stwierdzeniu poprawności odpowiedzi komputer dokonuje rezerwacji pamięci nad wartością MEMLO zaokrągloną w górę do najbliższej granicy słowa i próbuje dokonać odczytu z urządzenia, które się zgłosiło, 128 bajtów pod adres $03FD, przy użyciu innej &amp;quot;nietypowej&amp;quot; komendy, a mianowicie $26 - SEND HANDLER. Po załadowaniu i zainicjowaniu handlera pętla wraca do początku i wykonuje się cyklicznie aż do wystąpienia błędu - czyli do załadowania wszystkich handlerów będących w dyspozycji bus mastera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Procedura ładowania handlera wywoływana jest po procedurze bootowania DOS-u, ale niezależnie od jej wyniku; z czego wniosek, że &amp;quot;handler&amp;quot; może spełniać funkcję zarówno dodatku do DOS-u, jak i zostać załadowany &amp;lt;b&amp;gt;zamiast&amp;lt;/b&amp;gt; DOS-u.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Tą samą drogą można już po całkowitym uruchomieniu systemu, podczas pracy, załadować handler urządzenia &amp;lt;b&amp;gt;konkretnie wskazanego&amp;lt;/b&amp;gt;. Robi to [[CIO]] przy każdorazowej próbie otwarcia pliku na urządzeniu, którego system nie zna (nie ma takiego wpisu w tablicy handlerów).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Odpytanie bus mastera na okoliczność dysponowania takowym handlerem odbywa się za pomocą komendy TYPE 4 POLL. W DAUX1 ma się znajdować identyfikator urządzenia CIO, dla którego to urządzenia potrzebujemy handlera (np. dla magnetofonu $43, czyli &amp;quot;C&amp;quot;), w DAUX2 natomiast przesyła się numer wywoływanego urządzenia (np. dla &amp;quot;C1:&amp;quot; będzie to $01).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Pozostałe komendy====&lt;br /&gt;
&lt;br /&gt;
Komendy zdefiniowane przez Atari, na których temat brak bliższych danych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 (&amp;amp;nbsp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda wymieniana przez niektóre źródła. Szczegóły nieznane. Być może chodzi o komendę LOAD AND EXECUTE TEST w interfejsie [[850]] (zob. niżej)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG1&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050|Atari 1050]]. Wymaga przesłania 128-bajtowego bloku danych, w którym dwa pierwsze bajty decydują o tym, co stacja będzie robić (DAUX1/2 są ignorowane):&amp;lt;/p&amp;gt;&lt;br /&gt;
* $02 - test przejścia głowicy między ścieżkami&lt;br /&gt;
* $03 - przesuw głowicy za pomocą silnika krokowego o jeden krok w przód lub w tył; o kierunku decyduje następny bajt, wartość dodatnia (np. $01) powoduje przesuw w przód - czyli w kierunku ścieżki 39 - a wartość ujemna (np. $FF) przesuw wstecz, czyli w kierunku ścieżki 0. &amp;quot;Krok&amp;quot; silnika krokowego w tym wypadku to połowa odległości między ścieżkami, żeby więc tą komendą przesunąć głowicę na sąsiednią ścieżkę, trzeba zrobić to dwa razy. Uwaga: możliwe jest cofnięcie głowicy wstecz od ścieżki 0 (na tzw. ścieżkę -1).&lt;br /&gt;
* $04 - test zapisu i odczytu dyskietki; formatuje znajdującą się w stacji dyskietkę w średniej gęstości.&lt;br /&gt;
* $05 - przesuw główicy do ścieżki o numerze podanym w następnym bajcie. &lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;UWAGA: kod operacyjny ($23) jest taki sam, jak kod komendy formatowania w stacji [[XF551|Atari XF-551]] oraz [[LDW Super 2000]] i [[CA-2001]] z załadowanym [[Synchromesh]]em!&#039;&#039;&#039;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050]], służy do pomiaru prędkości obrotowej dyskietki. W zależności od wartości dwóch pierwszych bajtów przesłanego bloku danych ($00, $00 lub $00, $01) stacja przesyła czas jednego obrotu dyskietki lub wartość prędkości obrotowej w obrotach na minutę.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SPIN&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;$31&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;R (?)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;Komendy te występują jako komendy dyskowe na liście rozkazów SIO w dokumentacji sporządzonej przez Atari. Nie znam jednak stacji, która by na nie reagowała. Mogą to być komendy stacji [[810]], jakieś komendy diagnostyczne jej prototypu, albo komendy planowane, lecz nie zaimplementowane. Dostępna dokumentacja nie zawiera ich opisu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$55 (U)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MOTOR ON&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$56 (V)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VERIFY SECTOR&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Stacja odczytuje sektor wskazany przez DAUX1/2 i zwraca komputerowi informację, czy da się on odczytać bez błędów. Dane zawarte w sektorze nie są transmitowane do komputera. Komenda ta występuje w dokumentacji SIO sporządzonej przez Atari, ale żadna ze stacji marki Atari jej nie rozpoznaje.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Komendy specyficzne dla poszczególnych urządzeń ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Stacje dysków Atari 1450XLD =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$01 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET LARGE MODE&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;large mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako logiczną całość liczącą 2080 sektorów po 128 bajtów (260k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$02 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET SMALL MODE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;small mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako dwie oddzielne dyskietki liczące po 1040 sektorów po 128 bajtów (= 2x130k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC IN&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda zapisująca do stacji wskazany bufor wypełniony bliżej nieokreślonymi danymi diagnostycznymi.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC OUT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda odczytująca bliżej niesprecyzowane dane diagnostyczne do wskazanego bufora.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B1 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B2 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Atari 850 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONTROL&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 4&amp;gt;$50&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca linie DTR, RTS i XMT (TX) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 34,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ustawiająca różne parametry pracy (m.in. szybkość transmisji) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 36,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;STREAM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda uruchamiająca tryb równoległego wejścia/wyjścia (Concurrent I/O). Interfejs [[850|Atari 850]] w odpowiedzi zwraca sekwencję liczb, według której handler urządzenia &amp;quot;R:&amp;quot; ustawia [[Rejestry_POKEY-a|rejestry układu POKEY]]  (kolejno AUDF,AUDC 1-4 oraz AUDCTL). Przykładowa sekwencja dla szybkości transmisji 300bps jest następująca: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;LOAD AND EXECUTE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości przesyłanego kodu&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda niepublikowana w oficjalnej dokumentacji. Powoduje wczytanie z komputera kodu programu, a następnie uruchomienie go przez interfejs [[850|Atari 850]]. W DAUX1 podawany jest rozmiar przesyłanego kodu. Ze względu na specyfikę procedury odbioru danych, kod powinien być wysyłany od ostatniego do pierwszego bajtu.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== ATR 8000 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$47 (G)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GO TO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$5A ([[ATR 8000]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda pozwala na wywoływanie funkcji zdefiniowanych w ROM-ie modułu [[ATR 8000]] (q.v.).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Indus GT/LDW Super 2000/CA-2001 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT SKEWED&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda formatowania z szybkim [[przeplot]]em w stacjach [[Indus GT]], [[LDW Super 2000]] oraz [[CA-2001]] z załadowanym [[Synchromesh]]em.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Kod operacyjny jest taki sam, jak komendy formatowania w gęstości [[DSDD]] dla stacji [[XF551]] oraz jednej z komend diagnostycznych w [[1050]].&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD/EXECUTE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Różna&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda zaimplementowana w stacjach [[Indus GT]], [[LDW Super 2000]] i [[CA-2001]], pozwalająca na przesyłanie do stacji programów użytkownika i uruchamianie ich. Szczegóły: patrz [[Programowanie stacji LDW Super 2000 i CA-2001]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Happy Warp =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$48 (H)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;HAPPY CONFIG&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji z rozszerzeniem [[Happy Warp]]. Szczegóły: patrz [[Happy_Warp#Konfiguracja|Happy Warp - Konfiguracja]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== KMK/JŻ IDE =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$EC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;IDENTIFY DRIVE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;512 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W [[KMK/JŻ IDE]] komenda powoduje odczytanie bloku identyfikacyjnego napędu IDE, na którym założona jest wskazana partycja, i wpisanie go do bufora wskazanego przez DBUFA. Kolejność bajtów w tym bloku jest odwrotna od normalnej, tzn. wszystkie pary bajtów należy zamienić miejscami przed odczytaniem danych z tego bufora - dotyczy to również informacji tekstowej.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Multi I/O =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MEDIA CAPACITY INFO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nowe wersje firmware [[Multi I/O]] (od v. 1.4 wzwyż) w odpowiedzi na tę komendę zwracają informację o pojemności wskazanego dysku SCSI w [http://en.wikipedia.org/wiki/SCSI_Read_Capacity_Command tym formacie].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Speedy 1050 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;AUTOMATIC FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 11&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Speedy 1050]] w odpowiedni na tę komendę formatuje dyskietkę w zadanej gęstości (DAUX1 = $00 pojedyncza, $20 podwójna, $80 średnia) i, o ile konfiguracja stacji tego nie zabrania, zapisuje bootsektory i [[VTOC]] zgodne z [[DOS 2.0]] lub (w średniej gęstości) [[DOS 2.5]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;REGISTER COMMAND&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje zarejestrowanie komendy uzytkownika. Dane powinny zawierać kolejno:&lt;br /&gt;
* kod komendy&lt;br /&gt;
* młodszy bajt adresu w pamięci stacji, gdzie znajduje się podprogram obsługi&lt;br /&gt;
* starszy bajt tego adresu&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli dana komenda jest już jakoś przypisana, to przypisanie zostanie zmienione. Gdy adres ma wartość $0000, komenda zostanie wykasowana z pamięci stacji.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$44 (D)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DISPLAY&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja wyświetlacza stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: wyświetlanie kodów błędów na wyświetlaczu stacji&lt;br /&gt;
* bit 6: wyświetlanie numeru ścieżki w kodzie szesnastkowym&lt;br /&gt;
* bit 5: formatowanie bez weryfikacji&lt;br /&gt;
* bit 4: zablokowanie zapisu struktury logicznej dyskietki po komendzie $20&lt;br /&gt;
* bit 3: niewyłączanie silnika po komendzie $51&lt;br /&gt;
* bit 2: nieużywany&lt;br /&gt;
* bit 1: nieużywany&lt;br /&gt;
* bit 0: sygnał dźwiękowy w wypadku błędu&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4B (K)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DRIVE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: zapis i odczyt dyskietki bez buforowania (0 po zmianie dyskietki)&lt;br /&gt;
* bit 6: zapis i odczyt ścieżki bez buforowania (0 po zmianie ścieżki)&lt;br /&gt;
* bit 5: nieużywany&lt;br /&gt;
* bit 4: nieużywany&lt;br /&gt;
* bit 3: wyłączenie buforowania ścieżek&lt;br /&gt;
* bit 2: wyłączenie weryfikacji dla komendy $57 (W)&lt;br /&gt;
* bit 1: zapis sektora z pominięciem buforowania&lt;br /&gt;
* bit 0: odczyt sektora z pominięciem buforowania&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4C (L)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP, NO ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] wywołanie wewnętrznej procedury ROM-u stacji spod adresu przekazanego w DAUX1/2 (młodszy/starszy). Potwierdzenie wykonania rozkazu musi przesłać wywoływany podprogram.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP WITH ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] to samo, to $4C, ale potwierdzenie rozkazu jest przesyłane automatycznie.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FLUSH&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda ta powoduje natychmiastowy zapis zawartości bufora zapisu na dyskietkę i zatrzymanie silnika (normalnie stacja czeka z tym ok. 2 sekund po transmisji sektora).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$60 (`)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] zapis na dyskietkę całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$62 (b)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] odczyt z dyskietki całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$68 (h)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SIO LEN&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie dwóch bajtów określających wielkość procedury SIO, którą mozna od stacji uzyskać komendą $69. &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$69 (i)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND SIO&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wynik komendy $68&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie programu szybkiej transmisji SIO. Bajty DBYT powinny być ustawione na wartość zwróconą przez komendę $68. DAUX1/2 to adres w pamięci Atari, gdzie procedura ma zostać załadowana (stacja dokonuje relokacji kodu pod ten adres przed wysłaniem go do komputera).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== TOMS Multi Drive =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$49 (I)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;INDEX FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależnie od wybranej gęstości&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[TOMS Multi Drive]] komenda ta działa tak samo, jak zwykłe formatowanie ($21), z tym wyjątkiem, że do oznaczenia początku ścieżki stacja używa otworu indeksowego (normalnie w stacjach Atari ścieżka zaczyna się tam, gdzie akurat wypadnie). Służy to głównie do zabezpieczania programów przez tzw. synchroniczne sektory. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== US Doubler =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HIGH SPEED INDEX&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Stacje kompatybilne z [[US Doubler]] w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącą do ustawienia częstotliwości nośnej dla przyspieszonej transmisji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$66 (f)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CUSTOM FORMAT&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda formatowania z zadanym przeplotem zaimplementowana w stacjach [[US Doubler]]. Wysyłane 128 bajtów określa:&lt;br /&gt;
* w pierwszych 12 bajtach: zadaną gęstość, tak jak w komendzie WRITE PERCOM&lt;br /&gt;
* następne 18 lub 26 bajtów to fizyczne numery sektorów na ścieżce w zadanej kolejności, licząc od 1.&lt;br /&gt;
&amp;lt;p&amp;gt;Przykładowe przeploty podaje hasło [[Przeplot]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== [[XFD601|XFD601/602]] =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GET COMMAND BUFFER&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zwraca historię ostatnich 32 wywołań na łączu szeregowym. Wszystkich wywołań - nie tylko do stacji. Każdy wpis zawiera 4 bajty - dokładnie te same, jakie są wysyłane do urządzenia zewnetrznego przez komputer, czyli: [[SIO#DCB|DDEVIC]], [[SIO#DCB|DCMND]], [[SIO#DCB|DAUX1]], [[SIO#DCB|DAUX2]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Po odebraniu tego rozkazu stacja zwraca tzw. adres pierwszego napotkanego sektora, w formie 6 bajtów: numer scieżki, numer strony, numer sektora, rozmiar sektora, 2 bajty CRC.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit|SIO, Lista komend według funkcji]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34982</id>
		<title>Lista komend SIO według funkcji</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34982"/>
		<updated>2015-07-10T20:23:11Z</updated>

		<summary type="html">&lt;p&gt;Trub: /* Atari 850 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Główny artykuł: [[SIO]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Podstawowy zestaw komend====&lt;br /&gt;
&lt;br /&gt;
Poniższa tabela wyszczególnia podstawowe minimum komend rozpoznawanych przez urządzenia peryferyjne Atari.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DISK&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Formatuje dyskietkę w wybranej uprzednio (komendami PERCOM) gęstości, lub w [[Formaty dyskietek|pojedynczej gęstości]] (90k), jeśli stacja nie jest konfigurowalna. Zwraca listę zawierającą numery wadliwych sektorów (kolejno LSB/MSB) wykrytych w czasie formatowania, zakończoną wartością $FFFF. Niektóre stacje zwracają tu pustą listę ($FFFF, a dalej same zera), nawet jeśli na dyskietce są wadliwe sektory: po prostu dyskietki nie są już tak drogie, jak pod koniec lat siedemdziesiątych XX wieku...&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$50 (P)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;PUT SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31 i $60&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zapisuje do urządzenia blok danych wskazany przez DBUFA, a zawierający DBYT bajtów. W przypadku stacji dysków jest to zapis bez weryfikacji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$52 (R)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SECTOR&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Odczytuje z urządzenia blok danych o wielkości DBYT bajtów i zapisuje go w pamięci pod adresem wskazanym przez DBUFA.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$53 (S)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ STATUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wszystkie oprócz magnetofonu&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależna od urządzenia&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia blok statusu i zapisuje go pod adresem wskazanym przez DBUFA. Blok statusu dla RS-232 ma wielkość 2 bajtów, dla drukarki i stacji dysków - 4. Typowo komenda ta służy to stwierdzenia, czy urządzenie jest gotowe do pracy. W przypadku magnetofonu obowiązuje założenie, że jest on zawsze podłączony i gotów, nie ma więc potrzeby sprawdzania jego statusu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan=3&amp;gt;$57 (W)&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;WRITE SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Wszystkie&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;To samo, co PUT SECTOR ($50). W przypadku stacji dysków zapis przeprowadzany jest z weryfikacją.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;W przypadku drukarki długość bufora może wynosić 20, 29 albo 40 znaków (na ogół to ostatnie), a znaczenie DAUX2 jest jak następuje:&lt;br /&gt;
* $4E (N) drukowanie normalne&lt;br /&gt;
* $53 (S) druk obrócony o 90 stopni&lt;br /&gt;
* $44 (D) druk normalny z podwójną szerokością znaków&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Dla interfejsu [[850|Atari 850]] wielkość bufora wynosi 64 bajty.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy dodatkowe====&lt;br /&gt;
&lt;br /&gt;
Rozpoznawane przez urządzenia peryferyjne Atari komendy dodatkowe w stosunku do powyżej wspomnianego niezbędnego minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$22 (&amp;quot;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT MEDIUM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości średniej]] (130k). Komenda wprowadzona razem ze stacją [[1050]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DSDD&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;256 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości podwójnej dwustronnej]] (360k). Komenda wprowadzona razem ze stacją [[XF551|Atari XF-551]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy PERCOM====&lt;br /&gt;
&lt;br /&gt;
Komendy PERCOM noszą nazwę od stacji dysków firmy [[Percom Data Corp.|PERCOM]], w których po raz pierwszy się pojawiły. Nie są rozpoznawane przez stacje dysków firmy Atari (z wyjątkiem [[XF551|Atari XF-551]]), są jednak zaimplementowane we wszystkich rozszerzeniach oraz stacjach innych producentów i stanowią de facto standard.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4E (N)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ PERCOM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;12 bajtów ([[SIO#Blok_PERCOM|Blok PERCOM]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia dwunastobajtowy blok danych opisujący jego bieżącą konfigurację, tj. przede wszystkim format znajdującej się w stacji dyskietki.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4F (O)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE PERCOM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zapisuje do urządzenia dwanaście bajtów opisujących żądaną konfigurację, tj. liczbę ścieżek, stron dyskietki, sektorów na ścieżkę, wielkość sektora, gęstość. Przyjąwszy komendę stacja powinna natychmiast przestawić się na żądane ustawienia, o ile jest w stanie je zrealizować.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli zadanych ustawień nie da się zrealizować, stacja w teorii powinna odrzucić przesłany blok danych zgłaszając komputerowi błąd wykonania (co skutkuje [[Kody_błędów_Atari_OS|kodem błędu]] nr 144). W praktyce wiele stacji stosuje uproszczoną procedurę przyjmując parametry najbliższe zdefiniowanym przez przesłany blok danych. Jednak to, że parametry są &amp;quot;najbliższe&amp;quot;, nie oznacza, że muszą być w ogóle bliskie: np. zażądanie formatu 360 KB od stacji [[Top Drive 1050]] spowoduje jej ustawienie się w [[DD]] (180k), bo to jest maximum, jakie stacja jest w stanie zrealizować. Komplikuje to zadanie programom formatującym, które w celu zapisania prawidłowego katalogu muszą sprawdzać, czy żądana od stacji pojemność dyskietki została rzeczywiście wybrana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dyskietkę zgodnie z zapisaną konfiguracją.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ]] IDE nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do definiowania wielkości partycji służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy specjalne====&lt;br /&gt;
&lt;br /&gt;
Komendy wspomagające automatyczną instalację w systemie handlerów podłączonych urządzeń zewnętrznych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND RELOCATOR&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg odpowiedzi na komendę POLL ($3F)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jest to komenda uzupełniająca do opisanego niżej POLL ($3F). Powoduje przesłanie przez urządzenie programu odpowiedzialnego za załadowanie (komendą SEND HANDLER) i relokację właściwego handlera. Wszystkie parametry transmisji dla SEND RELOCATOR przesyłane są na komendę POLL ($3F). Program relokatora - po jego załadowaniu - uruchamia się od adresu DBUFA + 6. Przejmuje on na siebie wykonanie reszty operacji, a w wypadku niepowodzenia sygnalizuje błąd przez ustawienie bitu Carry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komendę SEND RELOCATOR rozpoznaje moduł [[850|Atari 850]], a może dotyczyć też innych urządzeń, oprócz stacji dysków (gdzie kod operacyjny $21 oznacza formatowanie dyskietki).&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$26 (&amp;amp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HANDLER&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator przesłany przez SEND RELOCATOR ($21) lub wg odpowiedzi na komendę POLL BUS ($40)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator (przesłany przez urządzenie lub rezydujący)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda SEND HANDLER służy do załadowania z urządzenia kodu programu obsługi (handlera) tego urządzenia. Może ona działać różnie w zależności od tego, czy transmisja została zainicjowana przez komendę POLL ($3F) czy POLL BUS ($40).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL ($3F) oznacza starszy protokół transmisji, w którym format strumienia danych przesłanych przez SEND HANDLER zależny jest od programu relokatora załadowanego wcześniej komendą SEND RELOCATOR ($21) i uruchomionego przez komputer.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL BUS ($40) oznacza nowszy protokół transmisji. Format strumienia danych jest ustalony z góry, a relokator rezyduje w ROM-ie systemu operacyjnego komputera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po otrzymaniu pozytywnej odpowiedzi na POLL BUS ($40) komputer rozpoczyna ładowanie kolejnych, 128-bajtowych rekordów binarnych, w liczbie do 256 (czyli pojedynczy &amp;quot;handler&amp;quot; może mieć maximum 32k). Przesyłany strumień danych musi być w [[ACX|specjalnym formacie]], który zapewnia relokowalność kodu, oraz zawiera podany explicite znacznik końca pliku - wystąpienie błędu przed napotkaniem tego znacznika powoduje przerwanie procedury z [[kody błędów|kodem błędu]] INCOMPLETE EXECUTION.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Ustawienia zmiennych DCB dla komendy SEND HANDLER wyglądają następująco:&amp;lt;/p&amp;gt;&lt;br /&gt;
* DDEVIC - kod urządzenia przesłany przez urządzenie $4F na komendę POLL BUS.&lt;br /&gt;
* DUNIT - zawsze $01&lt;br /&gt;
* DCMND - $26 - SEND HANDLER&lt;br /&gt;
* DSTATS - $40 - odczyt&lt;br /&gt;
* DTIMLO - 30 sekund&lt;br /&gt;
* DBYT - 128 bajtów&lt;br /&gt;
* DAUX1 - numer kolejny rekordu danych&lt;br /&gt;
* DAUX2 - zawsze 0&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ta, zwana też TYPE 2 POLL, służy do zainicjowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). W odpowiedzi urządzenie przesyła 12 bajtów odpowiadających kolejnym wartościom, jakie należy ustawić w bloku DCB celem załadowania kodu wykonywalnego handlera. Jest to starszy protokół transmisji zaprojektowany dla komputerów serii [[400]] i [[800]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W module [[850|Atari 850]] odpowiedzią na komendę POLL są wartości, jakie trzeba wstawić do DCB celem wykonania komendy SEND RELOCATOR ($21).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W celu uniknięcia wielokrotnego załadowania tego samego programu obsługi urządzenie na komendę POLL ($3F) odpowiada tylko raz, potem wykonanie komendy jest zablokowane aż do wyłączenia zasilania.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$40 (@)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL BUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$4F (bus master)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4 bajty&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;W komputerach serii XL oraz XE komendę tę system operacyjny przesyła do interfejsu szeregowo-równoległego przy każdym zimnym starcie; w pewnych warunkach - ale z nieco innymi parametrami - może też zostać wykonana po zainicjowaniu systemu. Jest to odpowiednik komendy POLL ($3F), jednak protokół transmisji handlera jest zunifikowany i nie wymaga od urządzenia przesyłania relokatora (uniwersalny relokator rezyduje w ROM-ie systemu operacyjnego). Analogicznie do POLL ($3F), komenda POLL BUS jest przeznaczona do zapoczątkowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). Zasadniczym adresatem jest tu moduł [[1090]] działający jako bus master.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Istnieje kilka odmian komendy POLL BUS różniących się parametrami przesyłanymi w DAUX1 i DAUX2:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TYPE 3 POLL: DAUX1 = 0 i DAUX2 = 0.&lt;br /&gt;
* TYPE 4 POLL: zobacz niżej.&lt;br /&gt;
* RESET POLL: DAUX1 = $4F i DAUX2 = $4F (&amp;quot;OO&amp;quot;)&lt;br /&gt;
* NULL POLL: DAUX1 = $4E i DAUX2 = $4E (&amp;quot;NN&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Przy zimnym starcie na początku system wysyła RESET POLL. Komenda ta powinna odblokować rozpoznawanie komendy TYPE 3 POLL we wszystkich podłączonych urządzeniach. Na RESET POLL urządzenia, oprócz potwierdzenia wykonania, nie przesyłają żadnej odpowiedzi, a komputer jej nie oczekuje.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Następnie system wysyła komendę TYPE 3 POLL. Pozytywna odpowiedź oznacza, że urządzenie nadesłało 4 bajty, z czego dwa pierwsze to ilość pamięci potrzebna do przeprowadzenia całości transmisji (musi to być parzysta wielkość). Jeśli jest to więcej niż dostępna ilość pamięci pomiędzy MEMLO a MEMTOP, system odpowiada przez NULL POLL (podobnie jak w wypadku RESET POLL, urządzenie przesyła tylko potwierdzenie wykonania), a następnie ponownie wysyła TYPE 3 POLL. W przypadku braku pamięci byłaby to pętla nieskończona, ale pojedyncze urządzenie na komendę TYPE 3 POLL może odpowiedzieć tylko raz - pętla jest więc przerywana błędem, który wystąpi po przetestowaniu wszystkich urządzeń zarządzanych przez bus mastera. Ponowna odpowiedź na TYPE 3 POLL jest możliwa dopiero po przesłaniu urządzeniu komendy RESET POLL, inaczej TYPE 3 POLL zostanie zignorowana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Trzeci przysłany bajt to identyfikator urządzenia (dla DDEVIC), które odpowiedziało na komendę i z którym będzie prowadzona dalsza komunikacja.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po stwierdzeniu poprawności odpowiedzi komputer dokonuje rezerwacji pamięci nad wartością MEMLO zaokrągloną w górę do najbliższej granicy słowa i próbuje dokonać odczytu z urządzenia, które się zgłosiło, 128 bajtów pod adres $03FD, przy użyciu innej &amp;quot;nietypowej&amp;quot; komendy, a mianowicie $26 - SEND HANDLER. Po załadowaniu i zainicjowaniu handlera pętla wraca do początku i wykonuje się cyklicznie aż do wystąpienia błędu - czyli do załadowania wszystkich handlerów będących w dyspozycji bus mastera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Procedura ładowania handlera wywoływana jest po procedurze bootowania DOS-u, ale niezależnie od jej wyniku; z czego wniosek, że &amp;quot;handler&amp;quot; może spełniać funkcję zarówno dodatku do DOS-u, jak i zostać załadowany &amp;lt;b&amp;gt;zamiast&amp;lt;/b&amp;gt; DOS-u.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Tą samą drogą można już po całkowitym uruchomieniu systemu, podczas pracy, załadować handler urządzenia &amp;lt;b&amp;gt;konkretnie wskazanego&amp;lt;/b&amp;gt;. Robi to [[CIO]] przy każdorazowej próbie otwarcia pliku na urządzeniu, którego system nie zna (nie ma takiego wpisu w tablicy handlerów).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Odpytanie bus mastera na okoliczność dysponowania takowym handlerem odbywa się za pomocą komendy TYPE 4 POLL. W DAUX1 ma się znajdować identyfikator urządzenia CIO, dla którego to urządzenia potrzebujemy handlera (np. dla magnetofonu $43, czyli &amp;quot;C&amp;quot;), w DAUX2 natomiast przesyła się numer wywoływanego urządzenia (np. dla &amp;quot;C1:&amp;quot; będzie to $01).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Pozostałe komendy====&lt;br /&gt;
&lt;br /&gt;
Komendy zdefiniowane przez Atari, na których temat brak bliższych danych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 (&amp;amp;nbsp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda wymieniana przez niektóre źródła. Szczegóły nieznane.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG1&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050|Atari 1050]]. Wymaga przesłania 128-bajtowego bloku danych, w którym dwa pierwsze bajty decydują o tym, co stacja będzie robić (DAUX1/2 są ignorowane):&amp;lt;/p&amp;gt;&lt;br /&gt;
* $02 - test przejścia głowicy między ścieżkami&lt;br /&gt;
* $03 - przesuw głowicy za pomocą silnika krokowego o jeden krok w przód lub w tył; o kierunku decyduje następny bajt, wartość dodatnia (np. $01) powoduje przesuw w przód - czyli w kierunku ścieżki 39 - a wartość ujemna (np. $FF) przesuw wstecz, czyli w kierunku ścieżki 0. &amp;quot;Krok&amp;quot; silnika krokowego w tym wypadku to połowa odległości między ścieżkami, żeby więc tą komendą przesunąć głowicę na sąsiednią ścieżkę, trzeba zrobić to dwa razy. Uwaga: możliwe jest cofnięcie głowicy wstecz od ścieżki 0 (na tzw. ścieżkę -1).&lt;br /&gt;
* $04 - test zapisu i odczytu dyskietki; formatuje znajdującą się w stacji dyskietkę w średniej gęstości.&lt;br /&gt;
* $05 - przesuw główicy do ścieżki o numerze podanym w następnym bajcie. &lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;UWAGA: kod operacyjny ($23) jest taki sam, jak kod komendy formatowania w stacji [[XF551|Atari XF-551]] oraz [[LDW Super 2000]] i [[CA-2001]] z załadowanym [[Synchromesh]]em!&#039;&#039;&#039;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050]], służy do pomiaru prędkości obrotowej dyskietki. W zależności od wartości dwóch pierwszych bajtów przesłanego bloku danych ($00, $00 lub $00, $01) stacja przesyła czas jednego obrotu dyskietki lub wartość prędkości obrotowej w obrotach na minutę.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SPIN&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;$31&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;R (?)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;Komendy te występują jako komendy dyskowe na liście rozkazów SIO w dokumentacji sporządzonej przez Atari. Nie znam jednak stacji, która by na nie reagowała. Mogą to być komendy stacji [[810]], jakieś komendy diagnostyczne jej prototypu, albo komendy planowane, lecz nie zaimplementowane. Dostępna dokumentacja nie zawiera ich opisu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$55 (U)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MOTOR ON&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$56 (V)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VERIFY SECTOR&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Stacja odczytuje sektor wskazany przez DAUX1/2 i zwraca komputerowi informację, czy da się on odczytać bez błędów. Dane zawarte w sektorze nie są transmitowane do komputera. Komenda ta występuje w dokumentacji SIO sporządzonej przez Atari, ale żadna ze stacji marki Atari jej nie rozpoznaje.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Komendy specyficzne dla poszczególnych urządzeń ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Stacje dysków Atari 1450XLD =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$01 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET LARGE MODE&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;large mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako logiczną całość liczącą 2080 sektorów po 128 bajtów (260k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$02 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET SMALL MODE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;small mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako dwie oddzielne dyskietki liczące po 1040 sektorów po 128 bajtów (= 2x130k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC IN&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda zapisująca do stacji wskazany bufor wypełniony bliżej nieokreślonymi danymi diagnostycznymi.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC OUT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda odczytująca bliżej niesprecyzowane dane diagnostyczne do wskazanego bufora.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B1 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B2 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Atari 850 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONTROL&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 4&amp;gt;$50&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca linie DTR, RTS i XMT (TX) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 34,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ustawiająca różne parametry pracy (m.in. szybkość transmisji) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 36,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;STREAM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda uruchamiająca tryb równoległego wejścia/wyjścia (Concurrent I/O). Interfejs [[850|Atari 850]] w odpowiedzi zwraca sekwencję liczb, według której handler urządzenia &amp;quot;R:&amp;quot; ustawia [[Rejestry_POKEY-a|rejestry układu POKEY]]  (kolejno AUDF,AUDC 1-4 oraz AUDCTL). Przykładowa sekwencja dla szybkości transmisji 300bps jest następująca: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;LOAD AND EXECUTE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości przesyłanego kodu&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda niepublikowana w oficjalnej dokumentacji. Powoduje wczytanie z komputera kodu programu, a następnie uruchomienie go przez interfejs [[850|Atari 850]]. W DAUX1 podawany jest rozmiar przesyłanego kodu. Ze względu na specyfikę procedury odbioru danych, kod powinien być wysyłany od ostatniego do pierwszego bajtu.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== ATR 8000 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$47 (G)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GO TO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$5A ([[ATR 8000]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda pozwala na wywoływanie funkcji zdefiniowanych w ROM-ie modułu [[ATR 8000]] (q.v.).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Indus GT/LDW Super 2000/CA-2001 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT SKEWED&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda formatowania z szybkim [[przeplot]]em w stacjach [[Indus GT]], [[LDW Super 2000]] oraz [[CA-2001]] z załadowanym [[Synchromesh]]em.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Kod operacyjny jest taki sam, jak komendy formatowania w gęstości [[DSDD]] dla stacji [[XF551]] oraz jednej z komend diagnostycznych w [[1050]].&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD/EXECUTE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Różna&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda zaimplementowana w stacjach [[Indus GT]], [[LDW Super 2000]] i [[CA-2001]], pozwalająca na przesyłanie do stacji programów użytkownika i uruchamianie ich. Szczegóły: patrz [[Programowanie stacji LDW Super 2000 i CA-2001]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Happy Warp =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$48 (H)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;HAPPY CONFIG&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji z rozszerzeniem [[Happy Warp]]. Szczegóły: patrz [[Happy_Warp#Konfiguracja|Happy Warp - Konfiguracja]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== KMK/JŻ IDE =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$EC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;IDENTIFY DRIVE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;512 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W [[KMK/JŻ IDE]] komenda powoduje odczytanie bloku identyfikacyjnego napędu IDE, na którym założona jest wskazana partycja, i wpisanie go do bufora wskazanego przez DBUFA. Kolejność bajtów w tym bloku jest odwrotna od normalnej, tzn. wszystkie pary bajtów należy zamienić miejscami przed odczytaniem danych z tego bufora - dotyczy to również informacji tekstowej.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Multi I/O =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MEDIA CAPACITY INFO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nowe wersje firmware [[Multi I/O]] (od v. 1.4 wzwyż) w odpowiedzi na tę komendę zwracają informację o pojemności wskazanego dysku SCSI w [http://en.wikipedia.org/wiki/SCSI_Read_Capacity_Command tym formacie].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Speedy 1050 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;AUTOMATIC FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 11&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Speedy 1050]] w odpowiedni na tę komendę formatuje dyskietkę w zadanej gęstości (DAUX1 = $00 pojedyncza, $20 podwójna, $80 średnia) i, o ile konfiguracja stacji tego nie zabrania, zapisuje bootsektory i [[VTOC]] zgodne z [[DOS 2.0]] lub (w średniej gęstości) [[DOS 2.5]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;REGISTER COMMAND&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje zarejestrowanie komendy uzytkownika. Dane powinny zawierać kolejno:&lt;br /&gt;
* kod komendy&lt;br /&gt;
* młodszy bajt adresu w pamięci stacji, gdzie znajduje się podprogram obsługi&lt;br /&gt;
* starszy bajt tego adresu&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli dana komenda jest już jakoś przypisana, to przypisanie zostanie zmienione. Gdy adres ma wartość $0000, komenda zostanie wykasowana z pamięci stacji.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$44 (D)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DISPLAY&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja wyświetlacza stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: wyświetlanie kodów błędów na wyświetlaczu stacji&lt;br /&gt;
* bit 6: wyświetlanie numeru ścieżki w kodzie szesnastkowym&lt;br /&gt;
* bit 5: formatowanie bez weryfikacji&lt;br /&gt;
* bit 4: zablokowanie zapisu struktury logicznej dyskietki po komendzie $20&lt;br /&gt;
* bit 3: niewyłączanie silnika po komendzie $51&lt;br /&gt;
* bit 2: nieużywany&lt;br /&gt;
* bit 1: nieużywany&lt;br /&gt;
* bit 0: sygnał dźwiękowy w wypadku błędu&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4B (K)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DRIVE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: zapis i odczyt dyskietki bez buforowania (0 po zmianie dyskietki)&lt;br /&gt;
* bit 6: zapis i odczyt ścieżki bez buforowania (0 po zmianie ścieżki)&lt;br /&gt;
* bit 5: nieużywany&lt;br /&gt;
* bit 4: nieużywany&lt;br /&gt;
* bit 3: wyłączenie buforowania ścieżek&lt;br /&gt;
* bit 2: wyłączenie weryfikacji dla komendy $57 (W)&lt;br /&gt;
* bit 1: zapis sektora z pominięciem buforowania&lt;br /&gt;
* bit 0: odczyt sektora z pominięciem buforowania&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4C (L)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP, NO ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] wywołanie wewnętrznej procedury ROM-u stacji spod adresu przekazanego w DAUX1/2 (młodszy/starszy). Potwierdzenie wykonania rozkazu musi przesłać wywoływany podprogram.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP WITH ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] to samo, to $4C, ale potwierdzenie rozkazu jest przesyłane automatycznie.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FLUSH&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda ta powoduje natychmiastowy zapis zawartości bufora zapisu na dyskietkę i zatrzymanie silnika (normalnie stacja czeka z tym ok. 2 sekund po transmisji sektora).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$60 (`)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] zapis na dyskietkę całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$62 (b)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] odczyt z dyskietki całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$68 (h)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SIO LEN&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie dwóch bajtów określających wielkość procedury SIO, którą mozna od stacji uzyskać komendą $69. &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$69 (i)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND SIO&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wynik komendy $68&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie programu szybkiej transmisji SIO. Bajty DBYT powinny być ustawione na wartość zwróconą przez komendę $68. DAUX1/2 to adres w pamięci Atari, gdzie procedura ma zostać załadowana (stacja dokonuje relokacji kodu pod ten adres przed wysłaniem go do komputera).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== TOMS Multi Drive =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$49 (I)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;INDEX FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależnie od wybranej gęstości&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[TOMS Multi Drive]] komenda ta działa tak samo, jak zwykłe formatowanie ($21), z tym wyjątkiem, że do oznaczenia początku ścieżki stacja używa otworu indeksowego (normalnie w stacjach Atari ścieżka zaczyna się tam, gdzie akurat wypadnie). Służy to głównie do zabezpieczania programów przez tzw. synchroniczne sektory. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== US Doubler =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HIGH SPEED INDEX&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Stacje kompatybilne z [[US Doubler]] w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącą do ustawienia częstotliwości nośnej dla przyspieszonej transmisji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$66 (f)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CUSTOM FORMAT&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda formatowania z zadanym przeplotem zaimplementowana w stacjach [[US Doubler]]. Wysyłane 128 bajtów określa:&lt;br /&gt;
* w pierwszych 12 bajtach: zadaną gęstość, tak jak w komendzie WRITE PERCOM&lt;br /&gt;
* następne 18 lub 26 bajtów to fizyczne numery sektorów na ścieżce w zadanej kolejności, licząc od 1.&lt;br /&gt;
&amp;lt;p&amp;gt;Przykładowe przeploty podaje hasło [[Przeplot]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== [[XFD601|XFD601/602]] =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GET COMMAND BUFFER&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zwraca historię ostatnich 32 wywołań na łączu szeregowym. Wszystkich wywołań - nie tylko do stacji. Każdy wpis zawiera 4 bajty - dokładnie te same, jakie są wysyłane do urządzenia zewnetrznego przez komputer, czyli: [[SIO#DCB|DDEVIC]], [[SIO#DCB|DCMND]], [[SIO#DCB|DAUX1]], [[SIO#DCB|DAUX2]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Po odebraniu tego rozkazu stacja zwraca tzw. adres pierwszego napotkanego sektora, w formie 6 bajtów: numer scieżki, numer strony, numer sektora, rozmiar sektora, 2 bajty CRC.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit|SIO, Lista komend według funkcji]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34981</id>
		<title>Lista komend SIO według funkcji</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34981"/>
		<updated>2015-07-10T20:21:43Z</updated>

		<summary type="html">&lt;p&gt;Trub: /* Atari 850 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Główny artykuł: [[SIO]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Podstawowy zestaw komend====&lt;br /&gt;
&lt;br /&gt;
Poniższa tabela wyszczególnia podstawowe minimum komend rozpoznawanych przez urządzenia peryferyjne Atari.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DISK&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Formatuje dyskietkę w wybranej uprzednio (komendami PERCOM) gęstości, lub w [[Formaty dyskietek|pojedynczej gęstości]] (90k), jeśli stacja nie jest konfigurowalna. Zwraca listę zawierającą numery wadliwych sektorów (kolejno LSB/MSB) wykrytych w czasie formatowania, zakończoną wartością $FFFF. Niektóre stacje zwracają tu pustą listę ($FFFF, a dalej same zera), nawet jeśli na dyskietce są wadliwe sektory: po prostu dyskietki nie są już tak drogie, jak pod koniec lat siedemdziesiątych XX wieku...&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$50 (P)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;PUT SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31 i $60&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zapisuje do urządzenia blok danych wskazany przez DBUFA, a zawierający DBYT bajtów. W przypadku stacji dysków jest to zapis bez weryfikacji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$52 (R)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SECTOR&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Odczytuje z urządzenia blok danych o wielkości DBYT bajtów i zapisuje go w pamięci pod adresem wskazanym przez DBUFA.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$53 (S)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ STATUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wszystkie oprócz magnetofonu&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależna od urządzenia&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia blok statusu i zapisuje go pod adresem wskazanym przez DBUFA. Blok statusu dla RS-232 ma wielkość 2 bajtów, dla drukarki i stacji dysków - 4. Typowo komenda ta służy to stwierdzenia, czy urządzenie jest gotowe do pracy. W przypadku magnetofonu obowiązuje założenie, że jest on zawsze podłączony i gotów, nie ma więc potrzeby sprawdzania jego statusu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan=3&amp;gt;$57 (W)&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;WRITE SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Wszystkie&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;To samo, co PUT SECTOR ($50). W przypadku stacji dysków zapis przeprowadzany jest z weryfikacją.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;W przypadku drukarki długość bufora może wynosić 20, 29 albo 40 znaków (na ogół to ostatnie), a znaczenie DAUX2 jest jak następuje:&lt;br /&gt;
* $4E (N) drukowanie normalne&lt;br /&gt;
* $53 (S) druk obrócony o 90 stopni&lt;br /&gt;
* $44 (D) druk normalny z podwójną szerokością znaków&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Dla interfejsu [[850|Atari 850]] wielkość bufora wynosi 64 bajty.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy dodatkowe====&lt;br /&gt;
&lt;br /&gt;
Rozpoznawane przez urządzenia peryferyjne Atari komendy dodatkowe w stosunku do powyżej wspomnianego niezbędnego minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$22 (&amp;quot;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT MEDIUM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości średniej]] (130k). Komenda wprowadzona razem ze stacją [[1050]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DSDD&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;256 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości podwójnej dwustronnej]] (360k). Komenda wprowadzona razem ze stacją [[XF551|Atari XF-551]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy PERCOM====&lt;br /&gt;
&lt;br /&gt;
Komendy PERCOM noszą nazwę od stacji dysków firmy [[Percom Data Corp.|PERCOM]], w których po raz pierwszy się pojawiły. Nie są rozpoznawane przez stacje dysków firmy Atari (z wyjątkiem [[XF551|Atari XF-551]]), są jednak zaimplementowane we wszystkich rozszerzeniach oraz stacjach innych producentów i stanowią de facto standard.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4E (N)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ PERCOM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;12 bajtów ([[SIO#Blok_PERCOM|Blok PERCOM]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia dwunastobajtowy blok danych opisujący jego bieżącą konfigurację, tj. przede wszystkim format znajdującej się w stacji dyskietki.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4F (O)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE PERCOM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zapisuje do urządzenia dwanaście bajtów opisujących żądaną konfigurację, tj. liczbę ścieżek, stron dyskietki, sektorów na ścieżkę, wielkość sektora, gęstość. Przyjąwszy komendę stacja powinna natychmiast przestawić się na żądane ustawienia, o ile jest w stanie je zrealizować.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli zadanych ustawień nie da się zrealizować, stacja w teorii powinna odrzucić przesłany blok danych zgłaszając komputerowi błąd wykonania (co skutkuje [[Kody_błędów_Atari_OS|kodem błędu]] nr 144). W praktyce wiele stacji stosuje uproszczoną procedurę przyjmując parametry najbliższe zdefiniowanym przez przesłany blok danych. Jednak to, że parametry są &amp;quot;najbliższe&amp;quot;, nie oznacza, że muszą być w ogóle bliskie: np. zażądanie formatu 360 KB od stacji [[Top Drive 1050]] spowoduje jej ustawienie się w [[DD]] (180k), bo to jest maximum, jakie stacja jest w stanie zrealizować. Komplikuje to zadanie programom formatującym, które w celu zapisania prawidłowego katalogu muszą sprawdzać, czy żądana od stacji pojemność dyskietki została rzeczywiście wybrana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dyskietkę zgodnie z zapisaną konfiguracją.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ]] IDE nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do definiowania wielkości partycji służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy specjalne====&lt;br /&gt;
&lt;br /&gt;
Komendy wspomagające automatyczną instalację w systemie handlerów podłączonych urządzeń zewnętrznych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND RELOCATOR&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg odpowiedzi na komendę POLL ($3F)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jest to komenda uzupełniająca do opisanego niżej POLL ($3F). Powoduje przesłanie przez urządzenie programu odpowiedzialnego za załadowanie (komendą SEND HANDLER) i relokację właściwego handlera. Wszystkie parametry transmisji dla SEND RELOCATOR przesyłane są na komendę POLL ($3F). Program relokatora - po jego załadowaniu - uruchamia się od adresu DBUFA + 6. Przejmuje on na siebie wykonanie reszty operacji, a w wypadku niepowodzenia sygnalizuje błąd przez ustawienie bitu Carry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komendę SEND RELOCATOR rozpoznaje moduł [[850|Atari 850]], a może dotyczyć też innych urządzeń, oprócz stacji dysków (gdzie kod operacyjny $21 oznacza formatowanie dyskietki).&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$26 (&amp;amp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HANDLER&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator przesłany przez SEND RELOCATOR ($21) lub wg odpowiedzi na komendę POLL BUS ($40)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator (przesłany przez urządzenie lub rezydujący)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda SEND HANDLER służy do załadowania z urządzenia kodu programu obsługi (handlera) tego urządzenia. Może ona działać różnie w zależności od tego, czy transmisja została zainicjowana przez komendę POLL ($3F) czy POLL BUS ($40).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL ($3F) oznacza starszy protokół transmisji, w którym format strumienia danych przesłanych przez SEND HANDLER zależny jest od programu relokatora załadowanego wcześniej komendą SEND RELOCATOR ($21) i uruchomionego przez komputer.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL BUS ($40) oznacza nowszy protokół transmisji. Format strumienia danych jest ustalony z góry, a relokator rezyduje w ROM-ie systemu operacyjnego komputera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po otrzymaniu pozytywnej odpowiedzi na POLL BUS ($40) komputer rozpoczyna ładowanie kolejnych, 128-bajtowych rekordów binarnych, w liczbie do 256 (czyli pojedynczy &amp;quot;handler&amp;quot; może mieć maximum 32k). Przesyłany strumień danych musi być w [[ACX|specjalnym formacie]], który zapewnia relokowalność kodu, oraz zawiera podany explicite znacznik końca pliku - wystąpienie błędu przed napotkaniem tego znacznika powoduje przerwanie procedury z [[kody błędów|kodem błędu]] INCOMPLETE EXECUTION.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Ustawienia zmiennych DCB dla komendy SEND HANDLER wyglądają następująco:&amp;lt;/p&amp;gt;&lt;br /&gt;
* DDEVIC - kod urządzenia przesłany przez urządzenie $4F na komendę POLL BUS.&lt;br /&gt;
* DUNIT - zawsze $01&lt;br /&gt;
* DCMND - $26 - SEND HANDLER&lt;br /&gt;
* DSTATS - $40 - odczyt&lt;br /&gt;
* DTIMLO - 30 sekund&lt;br /&gt;
* DBYT - 128 bajtów&lt;br /&gt;
* DAUX1 - numer kolejny rekordu danych&lt;br /&gt;
* DAUX2 - zawsze 0&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ta, zwana też TYPE 2 POLL, służy do zainicjowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). W odpowiedzi urządzenie przesyła 12 bajtów odpowiadających kolejnym wartościom, jakie należy ustawić w bloku DCB celem załadowania kodu wykonywalnego handlera. Jest to starszy protokół transmisji zaprojektowany dla komputerów serii [[400]] i [[800]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W module [[850|Atari 850]] odpowiedzią na komendę POLL są wartości, jakie trzeba wstawić do DCB celem wykonania komendy SEND RELOCATOR ($21).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W celu uniknięcia wielokrotnego załadowania tego samego programu obsługi urządzenie na komendę POLL ($3F) odpowiada tylko raz, potem wykonanie komendy jest zablokowane aż do wyłączenia zasilania.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$40 (@)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL BUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$4F (bus master)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4 bajty&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;W komputerach serii XL oraz XE komendę tę system operacyjny przesyła do interfejsu szeregowo-równoległego przy każdym zimnym starcie; w pewnych warunkach - ale z nieco innymi parametrami - może też zostać wykonana po zainicjowaniu systemu. Jest to odpowiednik komendy POLL ($3F), jednak protokół transmisji handlera jest zunifikowany i nie wymaga od urządzenia przesyłania relokatora (uniwersalny relokator rezyduje w ROM-ie systemu operacyjnego). Analogicznie do POLL ($3F), komenda POLL BUS jest przeznaczona do zapoczątkowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). Zasadniczym adresatem jest tu moduł [[1090]] działający jako bus master.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Istnieje kilka odmian komendy POLL BUS różniących się parametrami przesyłanymi w DAUX1 i DAUX2:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TYPE 3 POLL: DAUX1 = 0 i DAUX2 = 0.&lt;br /&gt;
* TYPE 4 POLL: zobacz niżej.&lt;br /&gt;
* RESET POLL: DAUX1 = $4F i DAUX2 = $4F (&amp;quot;OO&amp;quot;)&lt;br /&gt;
* NULL POLL: DAUX1 = $4E i DAUX2 = $4E (&amp;quot;NN&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Przy zimnym starcie na początku system wysyła RESET POLL. Komenda ta powinna odblokować rozpoznawanie komendy TYPE 3 POLL we wszystkich podłączonych urządzeniach. Na RESET POLL urządzenia, oprócz potwierdzenia wykonania, nie przesyłają żadnej odpowiedzi, a komputer jej nie oczekuje.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Następnie system wysyła komendę TYPE 3 POLL. Pozytywna odpowiedź oznacza, że urządzenie nadesłało 4 bajty, z czego dwa pierwsze to ilość pamięci potrzebna do przeprowadzenia całości transmisji (musi to być parzysta wielkość). Jeśli jest to więcej niż dostępna ilość pamięci pomiędzy MEMLO a MEMTOP, system odpowiada przez NULL POLL (podobnie jak w wypadku RESET POLL, urządzenie przesyła tylko potwierdzenie wykonania), a następnie ponownie wysyła TYPE 3 POLL. W przypadku braku pamięci byłaby to pętla nieskończona, ale pojedyncze urządzenie na komendę TYPE 3 POLL może odpowiedzieć tylko raz - pętla jest więc przerywana błędem, który wystąpi po przetestowaniu wszystkich urządzeń zarządzanych przez bus mastera. Ponowna odpowiedź na TYPE 3 POLL jest możliwa dopiero po przesłaniu urządzeniu komendy RESET POLL, inaczej TYPE 3 POLL zostanie zignorowana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Trzeci przysłany bajt to identyfikator urządzenia (dla DDEVIC), które odpowiedziało na komendę i z którym będzie prowadzona dalsza komunikacja.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po stwierdzeniu poprawności odpowiedzi komputer dokonuje rezerwacji pamięci nad wartością MEMLO zaokrągloną w górę do najbliższej granicy słowa i próbuje dokonać odczytu z urządzenia, które się zgłosiło, 128 bajtów pod adres $03FD, przy użyciu innej &amp;quot;nietypowej&amp;quot; komendy, a mianowicie $26 - SEND HANDLER. Po załadowaniu i zainicjowaniu handlera pętla wraca do początku i wykonuje się cyklicznie aż do wystąpienia błędu - czyli do załadowania wszystkich handlerów będących w dyspozycji bus mastera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Procedura ładowania handlera wywoływana jest po procedurze bootowania DOS-u, ale niezależnie od jej wyniku; z czego wniosek, że &amp;quot;handler&amp;quot; może spełniać funkcję zarówno dodatku do DOS-u, jak i zostać załadowany &amp;lt;b&amp;gt;zamiast&amp;lt;/b&amp;gt; DOS-u.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Tą samą drogą można już po całkowitym uruchomieniu systemu, podczas pracy, załadować handler urządzenia &amp;lt;b&amp;gt;konkretnie wskazanego&amp;lt;/b&amp;gt;. Robi to [[CIO]] przy każdorazowej próbie otwarcia pliku na urządzeniu, którego system nie zna (nie ma takiego wpisu w tablicy handlerów).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Odpytanie bus mastera na okoliczność dysponowania takowym handlerem odbywa się za pomocą komendy TYPE 4 POLL. W DAUX1 ma się znajdować identyfikator urządzenia CIO, dla którego to urządzenia potrzebujemy handlera (np. dla magnetofonu $43, czyli &amp;quot;C&amp;quot;), w DAUX2 natomiast przesyła się numer wywoływanego urządzenia (np. dla &amp;quot;C1:&amp;quot; będzie to $01).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Pozostałe komendy====&lt;br /&gt;
&lt;br /&gt;
Komendy zdefiniowane przez Atari, na których temat brak bliższych danych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 (&amp;amp;nbsp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda wymieniana przez niektóre źródła. Szczegóły nieznane.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG1&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050|Atari 1050]]. Wymaga przesłania 128-bajtowego bloku danych, w którym dwa pierwsze bajty decydują o tym, co stacja będzie robić (DAUX1/2 są ignorowane):&amp;lt;/p&amp;gt;&lt;br /&gt;
* $02 - test przejścia głowicy między ścieżkami&lt;br /&gt;
* $03 - przesuw głowicy za pomocą silnika krokowego o jeden krok w przód lub w tył; o kierunku decyduje następny bajt, wartość dodatnia (np. $01) powoduje przesuw w przód - czyli w kierunku ścieżki 39 - a wartość ujemna (np. $FF) przesuw wstecz, czyli w kierunku ścieżki 0. &amp;quot;Krok&amp;quot; silnika krokowego w tym wypadku to połowa odległości między ścieżkami, żeby więc tą komendą przesunąć głowicę na sąsiednią ścieżkę, trzeba zrobić to dwa razy. Uwaga: możliwe jest cofnięcie głowicy wstecz od ścieżki 0 (na tzw. ścieżkę -1).&lt;br /&gt;
* $04 - test zapisu i odczytu dyskietki; formatuje znajdującą się w stacji dyskietkę w średniej gęstości.&lt;br /&gt;
* $05 - przesuw główicy do ścieżki o numerze podanym w następnym bajcie. &lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;UWAGA: kod operacyjny ($23) jest taki sam, jak kod komendy formatowania w stacji [[XF551|Atari XF-551]] oraz [[LDW Super 2000]] i [[CA-2001]] z załadowanym [[Synchromesh]]em!&#039;&#039;&#039;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050]], służy do pomiaru prędkości obrotowej dyskietki. W zależności od wartości dwóch pierwszych bajtów przesłanego bloku danych ($00, $00 lub $00, $01) stacja przesyła czas jednego obrotu dyskietki lub wartość prędkości obrotowej w obrotach na minutę.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SPIN&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;$31&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;R (?)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;Komendy te występują jako komendy dyskowe na liście rozkazów SIO w dokumentacji sporządzonej przez Atari. Nie znam jednak stacji, która by na nie reagowała. Mogą to być komendy stacji [[810]], jakieś komendy diagnostyczne jej prototypu, albo komendy planowane, lecz nie zaimplementowane. Dostępna dokumentacja nie zawiera ich opisu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$55 (U)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MOTOR ON&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$56 (V)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VERIFY SECTOR&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Stacja odczytuje sektor wskazany przez DAUX1/2 i zwraca komputerowi informację, czy da się on odczytać bez błędów. Dane zawarte w sektorze nie są transmitowane do komputera. Komenda ta występuje w dokumentacji SIO sporządzonej przez Atari, ale żadna ze stacji marki Atari jej nie rozpoznaje.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Komendy specyficzne dla poszczególnych urządzeń ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Stacje dysków Atari 1450XLD =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$01 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET LARGE MODE&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;large mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako logiczną całość liczącą 2080 sektorów po 128 bajtów (260k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$02 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET SMALL MODE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;small mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako dwie oddzielne dyskietki liczące po 1040 sektorów po 128 bajtów (= 2x130k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC IN&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda zapisująca do stacji wskazany bufor wypełniony bliżej nieokreślonymi danymi diagnostycznymi.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC OUT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda odczytująca bliżej niesprecyzowane dane diagnostyczne do wskazanego bufora.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B1 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B2 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Atari 850 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONTROL&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 3&amp;gt;$50&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca linie DTR, RTS i XMT (TX) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 34,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ustawiająca różne parametry pracy (m.in. szybkość transmisji) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 36,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;STREAM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda uruchamiająca tryb równoległego wejścia/wyjścia (Concurrent I/O). Interfejs [[850|Atari 850]] w odpowiedzi zwraca sekwencję liczb, według której handler urządzenia &amp;quot;R:&amp;quot; ustawia [[Rejestry_POKEY-a|rejestry układu POKEY]]  (kolejno AUDF,AUDC 1-4 oraz AUDCTL). Przykładowa sekwencja dla szybkości transmisji 300bps jest następująca: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;LOAD AND EXECUTE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości przesyłanego kodu&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda niepublikowana w oficjalnej dokumentacji. Powoduje wczytanie z komputera kodu programu, a następnie uruchomienie go przez interfejs [[850|Atari 850]]. W DAUX1 podawany jest rozmiar przesyłanego kodu. Ze względu na specyfikę procedury odbioru danych, kod powinien być wysyłany od ostatniego do pierwszego bajtu.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== ATR 8000 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$47 (G)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GO TO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$5A ([[ATR 8000]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda pozwala na wywoływanie funkcji zdefiniowanych w ROM-ie modułu [[ATR 8000]] (q.v.).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Indus GT/LDW Super 2000/CA-2001 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT SKEWED&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda formatowania z szybkim [[przeplot]]em w stacjach [[Indus GT]], [[LDW Super 2000]] oraz [[CA-2001]] z załadowanym [[Synchromesh]]em.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Kod operacyjny jest taki sam, jak komendy formatowania w gęstości [[DSDD]] dla stacji [[XF551]] oraz jednej z komend diagnostycznych w [[1050]].&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD/EXECUTE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Różna&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda zaimplementowana w stacjach [[Indus GT]], [[LDW Super 2000]] i [[CA-2001]], pozwalająca na przesyłanie do stacji programów użytkownika i uruchamianie ich. Szczegóły: patrz [[Programowanie stacji LDW Super 2000 i CA-2001]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Happy Warp =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$48 (H)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;HAPPY CONFIG&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji z rozszerzeniem [[Happy Warp]]. Szczegóły: patrz [[Happy_Warp#Konfiguracja|Happy Warp - Konfiguracja]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== KMK/JŻ IDE =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$EC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;IDENTIFY DRIVE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;512 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W [[KMK/JŻ IDE]] komenda powoduje odczytanie bloku identyfikacyjnego napędu IDE, na którym założona jest wskazana partycja, i wpisanie go do bufora wskazanego przez DBUFA. Kolejność bajtów w tym bloku jest odwrotna od normalnej, tzn. wszystkie pary bajtów należy zamienić miejscami przed odczytaniem danych z tego bufora - dotyczy to również informacji tekstowej.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Multi I/O =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MEDIA CAPACITY INFO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nowe wersje firmware [[Multi I/O]] (od v. 1.4 wzwyż) w odpowiedzi na tę komendę zwracają informację o pojemności wskazanego dysku SCSI w [http://en.wikipedia.org/wiki/SCSI_Read_Capacity_Command tym formacie].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Speedy 1050 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;AUTOMATIC FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 11&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Speedy 1050]] w odpowiedni na tę komendę formatuje dyskietkę w zadanej gęstości (DAUX1 = $00 pojedyncza, $20 podwójna, $80 średnia) i, o ile konfiguracja stacji tego nie zabrania, zapisuje bootsektory i [[VTOC]] zgodne z [[DOS 2.0]] lub (w średniej gęstości) [[DOS 2.5]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;REGISTER COMMAND&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje zarejestrowanie komendy uzytkownika. Dane powinny zawierać kolejno:&lt;br /&gt;
* kod komendy&lt;br /&gt;
* młodszy bajt adresu w pamięci stacji, gdzie znajduje się podprogram obsługi&lt;br /&gt;
* starszy bajt tego adresu&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli dana komenda jest już jakoś przypisana, to przypisanie zostanie zmienione. Gdy adres ma wartość $0000, komenda zostanie wykasowana z pamięci stacji.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$44 (D)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DISPLAY&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja wyświetlacza stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: wyświetlanie kodów błędów na wyświetlaczu stacji&lt;br /&gt;
* bit 6: wyświetlanie numeru ścieżki w kodzie szesnastkowym&lt;br /&gt;
* bit 5: formatowanie bez weryfikacji&lt;br /&gt;
* bit 4: zablokowanie zapisu struktury logicznej dyskietki po komendzie $20&lt;br /&gt;
* bit 3: niewyłączanie silnika po komendzie $51&lt;br /&gt;
* bit 2: nieużywany&lt;br /&gt;
* bit 1: nieużywany&lt;br /&gt;
* bit 0: sygnał dźwiękowy w wypadku błędu&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4B (K)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DRIVE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: zapis i odczyt dyskietki bez buforowania (0 po zmianie dyskietki)&lt;br /&gt;
* bit 6: zapis i odczyt ścieżki bez buforowania (0 po zmianie ścieżki)&lt;br /&gt;
* bit 5: nieużywany&lt;br /&gt;
* bit 4: nieużywany&lt;br /&gt;
* bit 3: wyłączenie buforowania ścieżek&lt;br /&gt;
* bit 2: wyłączenie weryfikacji dla komendy $57 (W)&lt;br /&gt;
* bit 1: zapis sektora z pominięciem buforowania&lt;br /&gt;
* bit 0: odczyt sektora z pominięciem buforowania&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4C (L)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP, NO ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] wywołanie wewnętrznej procedury ROM-u stacji spod adresu przekazanego w DAUX1/2 (młodszy/starszy). Potwierdzenie wykonania rozkazu musi przesłać wywoływany podprogram.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP WITH ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] to samo, to $4C, ale potwierdzenie rozkazu jest przesyłane automatycznie.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FLUSH&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda ta powoduje natychmiastowy zapis zawartości bufora zapisu na dyskietkę i zatrzymanie silnika (normalnie stacja czeka z tym ok. 2 sekund po transmisji sektora).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$60 (`)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] zapis na dyskietkę całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$62 (b)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] odczyt z dyskietki całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$68 (h)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SIO LEN&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie dwóch bajtów określających wielkość procedury SIO, którą mozna od stacji uzyskać komendą $69. &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$69 (i)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND SIO&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wynik komendy $68&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie programu szybkiej transmisji SIO. Bajty DBYT powinny być ustawione na wartość zwróconą przez komendę $68. DAUX1/2 to adres w pamięci Atari, gdzie procedura ma zostać załadowana (stacja dokonuje relokacji kodu pod ten adres przed wysłaniem go do komputera).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== TOMS Multi Drive =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$49 (I)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;INDEX FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależnie od wybranej gęstości&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[TOMS Multi Drive]] komenda ta działa tak samo, jak zwykłe formatowanie ($21), z tym wyjątkiem, że do oznaczenia początku ścieżki stacja używa otworu indeksowego (normalnie w stacjach Atari ścieżka zaczyna się tam, gdzie akurat wypadnie). Służy to głównie do zabezpieczania programów przez tzw. synchroniczne sektory. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== US Doubler =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HIGH SPEED INDEX&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Stacje kompatybilne z [[US Doubler]] w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącą do ustawienia częstotliwości nośnej dla przyspieszonej transmisji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$66 (f)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CUSTOM FORMAT&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda formatowania z zadanym przeplotem zaimplementowana w stacjach [[US Doubler]]. Wysyłane 128 bajtów określa:&lt;br /&gt;
* w pierwszych 12 bajtach: zadaną gęstość, tak jak w komendzie WRITE PERCOM&lt;br /&gt;
* następne 18 lub 26 bajtów to fizyczne numery sektorów na ścieżce w zadanej kolejności, licząc od 1.&lt;br /&gt;
&amp;lt;p&amp;gt;Przykładowe przeploty podaje hasło [[Przeplot]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== [[XFD601|XFD601/602]] =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GET COMMAND BUFFER&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zwraca historię ostatnich 32 wywołań na łączu szeregowym. Wszystkich wywołań - nie tylko do stacji. Każdy wpis zawiera 4 bajty - dokładnie te same, jakie są wysyłane do urządzenia zewnetrznego przez komputer, czyli: [[SIO#DCB|DDEVIC]], [[SIO#DCB|DCMND]], [[SIO#DCB|DAUX1]], [[SIO#DCB|DAUX2]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Po odebraniu tego rozkazu stacja zwraca tzw. adres pierwszego napotkanego sektora, w formie 6 bajtów: numer scieżki, numer strony, numer sektora, rozmiar sektora, 2 bajty CRC.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit|SIO, Lista komend według funkcji]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34980</id>
		<title>Lista komend SIO według funkcji</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34980"/>
		<updated>2015-07-10T20:20:36Z</updated>

		<summary type="html">&lt;p&gt;Trub: /* Atari 850 */ LOAD AND EXECUTE&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Główny artykuł: [[SIO]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Podstawowy zestaw komend====&lt;br /&gt;
&lt;br /&gt;
Poniższa tabela wyszczególnia podstawowe minimum komend rozpoznawanych przez urządzenia peryferyjne Atari.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DISK&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Formatuje dyskietkę w wybranej uprzednio (komendami PERCOM) gęstości, lub w [[Formaty dyskietek|pojedynczej gęstości]] (90k), jeśli stacja nie jest konfigurowalna. Zwraca listę zawierającą numery wadliwych sektorów (kolejno LSB/MSB) wykrytych w czasie formatowania, zakończoną wartością $FFFF. Niektóre stacje zwracają tu pustą listę ($FFFF, a dalej same zera), nawet jeśli na dyskietce są wadliwe sektory: po prostu dyskietki nie są już tak drogie, jak pod koniec lat siedemdziesiątych XX wieku...&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$50 (P)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;PUT SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31 i $60&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zapisuje do urządzenia blok danych wskazany przez DBUFA, a zawierający DBYT bajtów. W przypadku stacji dysków jest to zapis bez weryfikacji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$52 (R)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SECTOR&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Odczytuje z urządzenia blok danych o wielkości DBYT bajtów i zapisuje go w pamięci pod adresem wskazanym przez DBUFA.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$53 (S)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ STATUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wszystkie oprócz magnetofonu&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależna od urządzenia&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia blok statusu i zapisuje go pod adresem wskazanym przez DBUFA. Blok statusu dla RS-232 ma wielkość 2 bajtów, dla drukarki i stacji dysków - 4. Typowo komenda ta służy to stwierdzenia, czy urządzenie jest gotowe do pracy. W przypadku magnetofonu obowiązuje założenie, że jest on zawsze podłączony i gotów, nie ma więc potrzeby sprawdzania jego statusu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan=3&amp;gt;$57 (W)&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;WRITE SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Wszystkie&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;To samo, co PUT SECTOR ($50). W przypadku stacji dysków zapis przeprowadzany jest z weryfikacją.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;W przypadku drukarki długość bufora może wynosić 20, 29 albo 40 znaków (na ogół to ostatnie), a znaczenie DAUX2 jest jak następuje:&lt;br /&gt;
* $4E (N) drukowanie normalne&lt;br /&gt;
* $53 (S) druk obrócony o 90 stopni&lt;br /&gt;
* $44 (D) druk normalny z podwójną szerokością znaków&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Dla interfejsu [[850|Atari 850]] wielkość bufora wynosi 64 bajty.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy dodatkowe====&lt;br /&gt;
&lt;br /&gt;
Rozpoznawane przez urządzenia peryferyjne Atari komendy dodatkowe w stosunku do powyżej wspomnianego niezbędnego minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$22 (&amp;quot;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT MEDIUM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości średniej]] (130k). Komenda wprowadzona razem ze stacją [[1050]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DSDD&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;256 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości podwójnej dwustronnej]] (360k). Komenda wprowadzona razem ze stacją [[XF551|Atari XF-551]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy PERCOM====&lt;br /&gt;
&lt;br /&gt;
Komendy PERCOM noszą nazwę od stacji dysków firmy [[Percom Data Corp.|PERCOM]], w których po raz pierwszy się pojawiły. Nie są rozpoznawane przez stacje dysków firmy Atari (z wyjątkiem [[XF551|Atari XF-551]]), są jednak zaimplementowane we wszystkich rozszerzeniach oraz stacjach innych producentów i stanowią de facto standard.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4E (N)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ PERCOM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;12 bajtów ([[SIO#Blok_PERCOM|Blok PERCOM]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia dwunastobajtowy blok danych opisujący jego bieżącą konfigurację, tj. przede wszystkim format znajdującej się w stacji dyskietki.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4F (O)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE PERCOM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zapisuje do urządzenia dwanaście bajtów opisujących żądaną konfigurację, tj. liczbę ścieżek, stron dyskietki, sektorów na ścieżkę, wielkość sektora, gęstość. Przyjąwszy komendę stacja powinna natychmiast przestawić się na żądane ustawienia, o ile jest w stanie je zrealizować.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli zadanych ustawień nie da się zrealizować, stacja w teorii powinna odrzucić przesłany blok danych zgłaszając komputerowi błąd wykonania (co skutkuje [[Kody_błędów_Atari_OS|kodem błędu]] nr 144). W praktyce wiele stacji stosuje uproszczoną procedurę przyjmując parametry najbliższe zdefiniowanym przez przesłany blok danych. Jednak to, że parametry są &amp;quot;najbliższe&amp;quot;, nie oznacza, że muszą być w ogóle bliskie: np. zażądanie formatu 360 KB od stacji [[Top Drive 1050]] spowoduje jej ustawienie się w [[DD]] (180k), bo to jest maximum, jakie stacja jest w stanie zrealizować. Komplikuje to zadanie programom formatującym, które w celu zapisania prawidłowego katalogu muszą sprawdzać, czy żądana od stacji pojemność dyskietki została rzeczywiście wybrana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dyskietkę zgodnie z zapisaną konfiguracją.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ]] IDE nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do definiowania wielkości partycji służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy specjalne====&lt;br /&gt;
&lt;br /&gt;
Komendy wspomagające automatyczną instalację w systemie handlerów podłączonych urządzeń zewnętrznych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND RELOCATOR&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg odpowiedzi na komendę POLL ($3F)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jest to komenda uzupełniająca do opisanego niżej POLL ($3F). Powoduje przesłanie przez urządzenie programu odpowiedzialnego za załadowanie (komendą SEND HANDLER) i relokację właściwego handlera. Wszystkie parametry transmisji dla SEND RELOCATOR przesyłane są na komendę POLL ($3F). Program relokatora - po jego załadowaniu - uruchamia się od adresu DBUFA + 6. Przejmuje on na siebie wykonanie reszty operacji, a w wypadku niepowodzenia sygnalizuje błąd przez ustawienie bitu Carry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komendę SEND RELOCATOR rozpoznaje moduł [[850|Atari 850]], a może dotyczyć też innych urządzeń, oprócz stacji dysków (gdzie kod operacyjny $21 oznacza formatowanie dyskietki).&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$26 (&amp;amp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HANDLER&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator przesłany przez SEND RELOCATOR ($21) lub wg odpowiedzi na komendę POLL BUS ($40)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator (przesłany przez urządzenie lub rezydujący)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda SEND HANDLER służy do załadowania z urządzenia kodu programu obsługi (handlera) tego urządzenia. Może ona działać różnie w zależności od tego, czy transmisja została zainicjowana przez komendę POLL ($3F) czy POLL BUS ($40).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL ($3F) oznacza starszy protokół transmisji, w którym format strumienia danych przesłanych przez SEND HANDLER zależny jest od programu relokatora załadowanego wcześniej komendą SEND RELOCATOR ($21) i uruchomionego przez komputer.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL BUS ($40) oznacza nowszy protokół transmisji. Format strumienia danych jest ustalony z góry, a relokator rezyduje w ROM-ie systemu operacyjnego komputera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po otrzymaniu pozytywnej odpowiedzi na POLL BUS ($40) komputer rozpoczyna ładowanie kolejnych, 128-bajtowych rekordów binarnych, w liczbie do 256 (czyli pojedynczy &amp;quot;handler&amp;quot; może mieć maximum 32k). Przesyłany strumień danych musi być w [[ACX|specjalnym formacie]], który zapewnia relokowalność kodu, oraz zawiera podany explicite znacznik końca pliku - wystąpienie błędu przed napotkaniem tego znacznika powoduje przerwanie procedury z [[kody błędów|kodem błędu]] INCOMPLETE EXECUTION.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Ustawienia zmiennych DCB dla komendy SEND HANDLER wyglądają następująco:&amp;lt;/p&amp;gt;&lt;br /&gt;
* DDEVIC - kod urządzenia przesłany przez urządzenie $4F na komendę POLL BUS.&lt;br /&gt;
* DUNIT - zawsze $01&lt;br /&gt;
* DCMND - $26 - SEND HANDLER&lt;br /&gt;
* DSTATS - $40 - odczyt&lt;br /&gt;
* DTIMLO - 30 sekund&lt;br /&gt;
* DBYT - 128 bajtów&lt;br /&gt;
* DAUX1 - numer kolejny rekordu danych&lt;br /&gt;
* DAUX2 - zawsze 0&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ta, zwana też TYPE 2 POLL, służy do zainicjowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). W odpowiedzi urządzenie przesyła 12 bajtów odpowiadających kolejnym wartościom, jakie należy ustawić w bloku DCB celem załadowania kodu wykonywalnego handlera. Jest to starszy protokół transmisji zaprojektowany dla komputerów serii [[400]] i [[800]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W module [[850|Atari 850]] odpowiedzią na komendę POLL są wartości, jakie trzeba wstawić do DCB celem wykonania komendy SEND RELOCATOR ($21).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W celu uniknięcia wielokrotnego załadowania tego samego programu obsługi urządzenie na komendę POLL ($3F) odpowiada tylko raz, potem wykonanie komendy jest zablokowane aż do wyłączenia zasilania.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$40 (@)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL BUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$4F (bus master)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4 bajty&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;W komputerach serii XL oraz XE komendę tę system operacyjny przesyła do interfejsu szeregowo-równoległego przy każdym zimnym starcie; w pewnych warunkach - ale z nieco innymi parametrami - może też zostać wykonana po zainicjowaniu systemu. Jest to odpowiednik komendy POLL ($3F), jednak protokół transmisji handlera jest zunifikowany i nie wymaga od urządzenia przesyłania relokatora (uniwersalny relokator rezyduje w ROM-ie systemu operacyjnego). Analogicznie do POLL ($3F), komenda POLL BUS jest przeznaczona do zapoczątkowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). Zasadniczym adresatem jest tu moduł [[1090]] działający jako bus master.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Istnieje kilka odmian komendy POLL BUS różniących się parametrami przesyłanymi w DAUX1 i DAUX2:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TYPE 3 POLL: DAUX1 = 0 i DAUX2 = 0.&lt;br /&gt;
* TYPE 4 POLL: zobacz niżej.&lt;br /&gt;
* RESET POLL: DAUX1 = $4F i DAUX2 = $4F (&amp;quot;OO&amp;quot;)&lt;br /&gt;
* NULL POLL: DAUX1 = $4E i DAUX2 = $4E (&amp;quot;NN&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Przy zimnym starcie na początku system wysyła RESET POLL. Komenda ta powinna odblokować rozpoznawanie komendy TYPE 3 POLL we wszystkich podłączonych urządzeniach. Na RESET POLL urządzenia, oprócz potwierdzenia wykonania, nie przesyłają żadnej odpowiedzi, a komputer jej nie oczekuje.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Następnie system wysyła komendę TYPE 3 POLL. Pozytywna odpowiedź oznacza, że urządzenie nadesłało 4 bajty, z czego dwa pierwsze to ilość pamięci potrzebna do przeprowadzenia całości transmisji (musi to być parzysta wielkość). Jeśli jest to więcej niż dostępna ilość pamięci pomiędzy MEMLO a MEMTOP, system odpowiada przez NULL POLL (podobnie jak w wypadku RESET POLL, urządzenie przesyła tylko potwierdzenie wykonania), a następnie ponownie wysyła TYPE 3 POLL. W przypadku braku pamięci byłaby to pętla nieskończona, ale pojedyncze urządzenie na komendę TYPE 3 POLL może odpowiedzieć tylko raz - pętla jest więc przerywana błędem, który wystąpi po przetestowaniu wszystkich urządzeń zarządzanych przez bus mastera. Ponowna odpowiedź na TYPE 3 POLL jest możliwa dopiero po przesłaniu urządzeniu komendy RESET POLL, inaczej TYPE 3 POLL zostanie zignorowana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Trzeci przysłany bajt to identyfikator urządzenia (dla DDEVIC), które odpowiedziało na komendę i z którym będzie prowadzona dalsza komunikacja.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po stwierdzeniu poprawności odpowiedzi komputer dokonuje rezerwacji pamięci nad wartością MEMLO zaokrągloną w górę do najbliższej granicy słowa i próbuje dokonać odczytu z urządzenia, które się zgłosiło, 128 bajtów pod adres $03FD, przy użyciu innej &amp;quot;nietypowej&amp;quot; komendy, a mianowicie $26 - SEND HANDLER. Po załadowaniu i zainicjowaniu handlera pętla wraca do początku i wykonuje się cyklicznie aż do wystąpienia błędu - czyli do załadowania wszystkich handlerów będących w dyspozycji bus mastera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Procedura ładowania handlera wywoływana jest po procedurze bootowania DOS-u, ale niezależnie od jej wyniku; z czego wniosek, że &amp;quot;handler&amp;quot; może spełniać funkcję zarówno dodatku do DOS-u, jak i zostać załadowany &amp;lt;b&amp;gt;zamiast&amp;lt;/b&amp;gt; DOS-u.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Tą samą drogą można już po całkowitym uruchomieniu systemu, podczas pracy, załadować handler urządzenia &amp;lt;b&amp;gt;konkretnie wskazanego&amp;lt;/b&amp;gt;. Robi to [[CIO]] przy każdorazowej próbie otwarcia pliku na urządzeniu, którego system nie zna (nie ma takiego wpisu w tablicy handlerów).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Odpytanie bus mastera na okoliczność dysponowania takowym handlerem odbywa się za pomocą komendy TYPE 4 POLL. W DAUX1 ma się znajdować identyfikator urządzenia CIO, dla którego to urządzenia potrzebujemy handlera (np. dla magnetofonu $43, czyli &amp;quot;C&amp;quot;), w DAUX2 natomiast przesyła się numer wywoływanego urządzenia (np. dla &amp;quot;C1:&amp;quot; będzie to $01).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Pozostałe komendy====&lt;br /&gt;
&lt;br /&gt;
Komendy zdefiniowane przez Atari, na których temat brak bliższych danych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 (&amp;amp;nbsp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda wymieniana przez niektóre źródła. Szczegóły nieznane.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG1&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050|Atari 1050]]. Wymaga przesłania 128-bajtowego bloku danych, w którym dwa pierwsze bajty decydują o tym, co stacja będzie robić (DAUX1/2 są ignorowane):&amp;lt;/p&amp;gt;&lt;br /&gt;
* $02 - test przejścia głowicy między ścieżkami&lt;br /&gt;
* $03 - przesuw głowicy za pomocą silnika krokowego o jeden krok w przód lub w tył; o kierunku decyduje następny bajt, wartość dodatnia (np. $01) powoduje przesuw w przód - czyli w kierunku ścieżki 39 - a wartość ujemna (np. $FF) przesuw wstecz, czyli w kierunku ścieżki 0. &amp;quot;Krok&amp;quot; silnika krokowego w tym wypadku to połowa odległości między ścieżkami, żeby więc tą komendą przesunąć głowicę na sąsiednią ścieżkę, trzeba zrobić to dwa razy. Uwaga: możliwe jest cofnięcie głowicy wstecz od ścieżki 0 (na tzw. ścieżkę -1).&lt;br /&gt;
* $04 - test zapisu i odczytu dyskietki; formatuje znajdującą się w stacji dyskietkę w średniej gęstości.&lt;br /&gt;
* $05 - przesuw główicy do ścieżki o numerze podanym w następnym bajcie. &lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;UWAGA: kod operacyjny ($23) jest taki sam, jak kod komendy formatowania w stacji [[XF551|Atari XF-551]] oraz [[LDW Super 2000]] i [[CA-2001]] z załadowanym [[Synchromesh]]em!&#039;&#039;&#039;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050]], służy do pomiaru prędkości obrotowej dyskietki. W zależności od wartości dwóch pierwszych bajtów przesłanego bloku danych ($00, $00 lub $00, $01) stacja przesyła czas jednego obrotu dyskietki lub wartość prędkości obrotowej w obrotach na minutę.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SPIN&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;$31&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;R (?)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;Komendy te występują jako komendy dyskowe na liście rozkazów SIO w dokumentacji sporządzonej przez Atari. Nie znam jednak stacji, która by na nie reagowała. Mogą to być komendy stacji [[810]], jakieś komendy diagnostyczne jej prototypu, albo komendy planowane, lecz nie zaimplementowane. Dostępna dokumentacja nie zawiera ich opisu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$55 (U)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MOTOR ON&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$56 (V)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VERIFY SECTOR&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Stacja odczytuje sektor wskazany przez DAUX1/2 i zwraca komputerowi informację, czy da się on odczytać bez błędów. Dane zawarte w sektorze nie są transmitowane do komputera. Komenda ta występuje w dokumentacji SIO sporządzonej przez Atari, ale żadna ze stacji marki Atari jej nie rozpoznaje.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Komendy specyficzne dla poszczególnych urządzeń ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Stacje dysków Atari 1450XLD =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$01 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET LARGE MODE&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;large mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako logiczną całość liczącą 2080 sektorów po 128 bajtów (260k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$02 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET SMALL MODE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;small mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako dwie oddzielne dyskietki liczące po 1040 sektorów po 128 bajtów (= 2x130k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC IN&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda zapisująca do stacji wskazany bufor wypełniony bliżej nieokreślonymi danymi diagnostycznymi.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC OUT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda odczytująca bliżej niesprecyzowane dane diagnostyczne do wskazanego bufora.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B1 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B2 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Atari 850 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONTROL&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 3&amp;gt;$50&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca linie DTR, RTS i XMT (TX) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 34,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ustawiająca różne parametry pracy (m.in. szybkość transmisji) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 36,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;STREAM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda uruchamiająca tryb równoległego wejścia/wyjścia (Concurrent I/O). Interfejs [[850|Atari 850]] w odpowiedzi zwraca sekwencję liczb, według której handler urządzenia &amp;quot;R:&amp;quot; ustawia [[Rejestry_POKEY-a|rejestry układu POKEY]]  (kolejno AUDF,AUDC 1-4 oraz AUDCTL). Przykładowa sekwencja dla szybkości transmisji 300bps jest następująca: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;LOAD AND EXECUTE&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda niepublikowana w oficjalnej dokumentacji. Powoduje wczytanie z komputera kodu programu, a następnie uruchomienie go przez interfejs [[850|Atari 850]]. W DAUX1 podawany jest rozmiar przesyłanego kodu. Ze względu na specyfikę procedury odbioru danych, kod powinien być wysyłany od ostatniego do pierwszego bajtu.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== ATR 8000 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$47 (G)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GO TO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$5A ([[ATR 8000]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda pozwala na wywoływanie funkcji zdefiniowanych w ROM-ie modułu [[ATR 8000]] (q.v.).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Indus GT/LDW Super 2000/CA-2001 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT SKEWED&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda formatowania z szybkim [[przeplot]]em w stacjach [[Indus GT]], [[LDW Super 2000]] oraz [[CA-2001]] z załadowanym [[Synchromesh]]em.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Kod operacyjny jest taki sam, jak komendy formatowania w gęstości [[DSDD]] dla stacji [[XF551]] oraz jednej z komend diagnostycznych w [[1050]].&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD/EXECUTE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Różna&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda zaimplementowana w stacjach [[Indus GT]], [[LDW Super 2000]] i [[CA-2001]], pozwalająca na przesyłanie do stacji programów użytkownika i uruchamianie ich. Szczegóły: patrz [[Programowanie stacji LDW Super 2000 i CA-2001]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Happy Warp =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$48 (H)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;HAPPY CONFIG&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji z rozszerzeniem [[Happy Warp]]. Szczegóły: patrz [[Happy_Warp#Konfiguracja|Happy Warp - Konfiguracja]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== KMK/JŻ IDE =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$EC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;IDENTIFY DRIVE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;512 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W [[KMK/JŻ IDE]] komenda powoduje odczytanie bloku identyfikacyjnego napędu IDE, na którym założona jest wskazana partycja, i wpisanie go do bufora wskazanego przez DBUFA. Kolejność bajtów w tym bloku jest odwrotna od normalnej, tzn. wszystkie pary bajtów należy zamienić miejscami przed odczytaniem danych z tego bufora - dotyczy to również informacji tekstowej.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Multi I/O =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MEDIA CAPACITY INFO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nowe wersje firmware [[Multi I/O]] (od v. 1.4 wzwyż) w odpowiedzi na tę komendę zwracają informację o pojemności wskazanego dysku SCSI w [http://en.wikipedia.org/wiki/SCSI_Read_Capacity_Command tym formacie].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Speedy 1050 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;AUTOMATIC FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 11&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Speedy 1050]] w odpowiedni na tę komendę formatuje dyskietkę w zadanej gęstości (DAUX1 = $00 pojedyncza, $20 podwójna, $80 średnia) i, o ile konfiguracja stacji tego nie zabrania, zapisuje bootsektory i [[VTOC]] zgodne z [[DOS 2.0]] lub (w średniej gęstości) [[DOS 2.5]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;REGISTER COMMAND&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje zarejestrowanie komendy uzytkownika. Dane powinny zawierać kolejno:&lt;br /&gt;
* kod komendy&lt;br /&gt;
* młodszy bajt adresu w pamięci stacji, gdzie znajduje się podprogram obsługi&lt;br /&gt;
* starszy bajt tego adresu&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli dana komenda jest już jakoś przypisana, to przypisanie zostanie zmienione. Gdy adres ma wartość $0000, komenda zostanie wykasowana z pamięci stacji.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$44 (D)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DISPLAY&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja wyświetlacza stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: wyświetlanie kodów błędów na wyświetlaczu stacji&lt;br /&gt;
* bit 6: wyświetlanie numeru ścieżki w kodzie szesnastkowym&lt;br /&gt;
* bit 5: formatowanie bez weryfikacji&lt;br /&gt;
* bit 4: zablokowanie zapisu struktury logicznej dyskietki po komendzie $20&lt;br /&gt;
* bit 3: niewyłączanie silnika po komendzie $51&lt;br /&gt;
* bit 2: nieużywany&lt;br /&gt;
* bit 1: nieużywany&lt;br /&gt;
* bit 0: sygnał dźwiękowy w wypadku błędu&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4B (K)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DRIVE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: zapis i odczyt dyskietki bez buforowania (0 po zmianie dyskietki)&lt;br /&gt;
* bit 6: zapis i odczyt ścieżki bez buforowania (0 po zmianie ścieżki)&lt;br /&gt;
* bit 5: nieużywany&lt;br /&gt;
* bit 4: nieużywany&lt;br /&gt;
* bit 3: wyłączenie buforowania ścieżek&lt;br /&gt;
* bit 2: wyłączenie weryfikacji dla komendy $57 (W)&lt;br /&gt;
* bit 1: zapis sektora z pominięciem buforowania&lt;br /&gt;
* bit 0: odczyt sektora z pominięciem buforowania&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4C (L)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP, NO ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] wywołanie wewnętrznej procedury ROM-u stacji spod adresu przekazanego w DAUX1/2 (młodszy/starszy). Potwierdzenie wykonania rozkazu musi przesłać wywoływany podprogram.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP WITH ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] to samo, to $4C, ale potwierdzenie rozkazu jest przesyłane automatycznie.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FLUSH&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda ta powoduje natychmiastowy zapis zawartości bufora zapisu na dyskietkę i zatrzymanie silnika (normalnie stacja czeka z tym ok. 2 sekund po transmisji sektora).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$60 (`)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] zapis na dyskietkę całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$62 (b)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] odczyt z dyskietki całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$68 (h)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SIO LEN&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie dwóch bajtów określających wielkość procedury SIO, którą mozna od stacji uzyskać komendą $69. &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$69 (i)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND SIO&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wynik komendy $68&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie programu szybkiej transmisji SIO. Bajty DBYT powinny być ustawione na wartość zwróconą przez komendę $68. DAUX1/2 to adres w pamięci Atari, gdzie procedura ma zostać załadowana (stacja dokonuje relokacji kodu pod ten adres przed wysłaniem go do komputera).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== TOMS Multi Drive =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$49 (I)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;INDEX FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależnie od wybranej gęstości&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[TOMS Multi Drive]] komenda ta działa tak samo, jak zwykłe formatowanie ($21), z tym wyjątkiem, że do oznaczenia początku ścieżki stacja używa otworu indeksowego (normalnie w stacjach Atari ścieżka zaczyna się tam, gdzie akurat wypadnie). Służy to głównie do zabezpieczania programów przez tzw. synchroniczne sektory. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== US Doubler =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HIGH SPEED INDEX&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Stacje kompatybilne z [[US Doubler]] w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącą do ustawienia częstotliwości nośnej dla przyspieszonej transmisji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$66 (f)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CUSTOM FORMAT&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda formatowania z zadanym przeplotem zaimplementowana w stacjach [[US Doubler]]. Wysyłane 128 bajtów określa:&lt;br /&gt;
* w pierwszych 12 bajtach: zadaną gęstość, tak jak w komendzie WRITE PERCOM&lt;br /&gt;
* następne 18 lub 26 bajtów to fizyczne numery sektorów na ścieżce w zadanej kolejności, licząc od 1.&lt;br /&gt;
&amp;lt;p&amp;gt;Przykładowe przeploty podaje hasło [[Przeplot]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== [[XFD601|XFD601/602]] =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GET COMMAND BUFFER&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zwraca historię ostatnich 32 wywołań na łączu szeregowym. Wszystkich wywołań - nie tylko do stacji. Każdy wpis zawiera 4 bajty - dokładnie te same, jakie są wysyłane do urządzenia zewnetrznego przez komputer, czyli: [[SIO#DCB|DDEVIC]], [[SIO#DCB|DCMND]], [[SIO#DCB|DAUX1]], [[SIO#DCB|DAUX2]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Po odebraniu tego rozkazu stacja zwraca tzw. adres pierwszego napotkanego sektora, w formie 6 bajtów: numer scieżki, numer strony, numer sektora, rozmiar sektora, 2 bajty CRC.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit|SIO, Lista komend według funkcji]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=850&amp;diff=34979</id>
		<title>850</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=850&amp;diff=34979"/>
		<updated>2015-07-10T13:47:45Z</updated>

		<summary type="html">&lt;p&gt;Trub: Zobacz też&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://atariki.krap.pl/img/atari850.jpg  http://atariki.krap.pl/img/atari850-metal.jpg&lt;br /&gt;
&lt;br /&gt;
Interfejs przeznaczony zasadniczo dla serii [[400/800]], ale współpracujący ze wszystkimi modelami [[Atari 8-bit|ośmiobitowych Atari]], który rozszerza je o cztery szeregowe interfejsy [http://pl.wikipedia.org/wiki/RS-232 RS-232C] (gniazdo 9 PIN, różne jednak od powszechnie stosowanego w komputerach PC jeżeli chodzi o rozmieszczenie sygnałów) i jeden równoległy interfejs w standardzie Centronics (gniazdo 15 PIN). Pierwsze egzemplarze miały czarną, metalową obudowę, późniejsze modele natomiast współgrają wzorniczo z linią 400/800.&lt;br /&gt;
&lt;br /&gt;
Interfejs 850 jest standardem, jeśli chodzi o implementację portów RS232C w małym Atari: współpracują z nim prawie wszystkie programy telekomunikacyjne, a podobne interfejsy innych producentów (np. [[Multi I/O]] czy [[P:R: Connection]]) są z nim kompatybilne.&lt;br /&gt;
&lt;br /&gt;
Urządzenie zawiera mikroprocesor [[6507]] i dwa układy [[6532]]. Do współpracy z interfejsem w systemie operacyjnym musi być zainstalowany odpowiedni sterownik (&amp;quot;R:&amp;quot;, patrz [[CIO]]). Sterownik jest zawarty w samym interfejsie, ten zaś udostępnia go komputerowi na żądanie. Sposób, w jaki się to odbywa, jest zależny od [[DOS]]-u, np. [[SpartaDOS]] ma polecenie &#039;&#039;&#039;RS232&#039;&#039;&#039;, za którego pomocą użytkownik może &amp;quot;ściągnąć&amp;quot; z interfejsu program obsługi i zainstalować go w systemie. W przypadku, kiedy DOS-u nie ma, a do komputera nie podłączona jest stacja dysków, program ten jest instalowany automatycznie przy starcie komputera.&lt;br /&gt;
&lt;br /&gt;
===Porty szeregowe RS-232===&lt;br /&gt;
&lt;br /&gt;
Interfejs ma cztery porty szeregowe RS232C. Wyprowadzone są one na zewnątrz jako żeńskie (!) gniazda DB9, i oznaczone kolejno od lewej do prawej jako R4:, R3:, R2: i R1:. Sygnały rozmieszczone są inaczej niż w typowym gniazdku RS-232, poszczególne porty różnią się też między sobą.&lt;br /&gt;
&lt;br /&gt;
Parametry transmisji są następujące:&lt;br /&gt;
&lt;br /&gt;
* 1 bit startu&lt;br /&gt;
* 1 lub 2 bity stopu&lt;br /&gt;
* 5, 6, 7 lub 8 bitów danych&lt;br /&gt;
* prędkość transmisji 75, 110, 134.5, 150, 300, 600, 1200, 1800, 2400, 4800, 9600 bps&lt;br /&gt;
&lt;br /&gt;
====Port R1:====&lt;br /&gt;
&lt;br /&gt;
Po lewej port R1: interfejsu 850, po prawej - dla porównania - typowe gniazdo DB9 (męskie) znane z [[TT030|Atari TT030]] lub PC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     1           5                 1           5&lt;br /&gt;
       o o o o o                     o o o o o&lt;br /&gt;
&lt;br /&gt;
        o o o o                       o o o o&lt;br /&gt;
      6         9                   6         9&lt;br /&gt;
&lt;br /&gt;
 1. GND         6. N/C          1. DCD         6. DSR&lt;br /&gt;
 2. RX          7. CTS          2. RX          7. RTS&lt;br /&gt;
 3. TX          8. RTS          3. TX          8. CTS&lt;br /&gt;
 4. DCD         9. DSR          4. DTR         9. RI&lt;br /&gt;
 5. DTR                         5. GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[grafika:850-port-1.gif]]&lt;br /&gt;
&lt;br /&gt;
====Porty R2: i R3:====&lt;br /&gt;
&lt;br /&gt;
Po lewej port R2: i R3: interfejsu 850, po prawej - dla porównania - typowe gniazdo DB9 (męskie) znane z [[TT030|Atari TT030]] lub PC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     1           5                 1           5&lt;br /&gt;
       o o o o o                     o o o o o&lt;br /&gt;
&lt;br /&gt;
        o o o o                       o o o o&lt;br /&gt;
      6         9                   6         9&lt;br /&gt;
&lt;br /&gt;
 1. GND         6. N/C          1. DCD         6. DSR&lt;br /&gt;
 2. RX          7. N/C          2. RX          7. RTS&lt;br /&gt;
 3. TX          8. N/C          3. TX          8. CTS&lt;br /&gt;
 4. N/C         9. DSR          4. DTR         9. RI&lt;br /&gt;
 5. DTR                         5. GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[grafika:850-port-2.gif]]&lt;br /&gt;
&lt;br /&gt;
====Port R4:====&lt;br /&gt;
&lt;br /&gt;
Po lewej port R4: interfejsu 850, po prawej - dla porównania - typowe gniazdo DB9 (męskie) znane z [[TT030|Atari TT030]] lub PC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     1           5                 1           5&lt;br /&gt;
       o o o o o                     o o o o o&lt;br /&gt;
&lt;br /&gt;
        o o o o                       o o o o&lt;br /&gt;
      6         9                   6         9&lt;br /&gt;
&lt;br /&gt;
 1. GND         6. -8 V         1. DCD         6. DSR&lt;br /&gt;
 2. RX          7. N/C          2. RX          7. RTS&lt;br /&gt;
 3. TX          8. RTS          3. TX          8. CTS&lt;br /&gt;
 4. N/C         9. N/C          4. DTR         9. RI&lt;br /&gt;
 5. DTR                         5. GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[grafika:850-port-4.gif]]&lt;br /&gt;
&lt;br /&gt;
===Port Centronics (P:)===&lt;br /&gt;
&lt;br /&gt;
Zastosowane w [[850]] gniazdo Centronics, tak samo jak gniazda RS-232-C, różni się od poszechnie stosowanych. Jest to gniazdo żeńskie, schemat poniżej. Jest przeznaczone przede wszystkim do podłączania drukarki [[825|Atari 825]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     1                 8&lt;br /&gt;
       o o o o o o o o&lt;br /&gt;
&lt;br /&gt;
        o o o o o o o&lt;br /&gt;
      9               15&lt;br /&gt;
&lt;br /&gt;
 1. D6                  9. D7&lt;br /&gt;
 2. D5                 10. N/C&lt;br /&gt;
 3. D4                 11. BUSY&lt;br /&gt;
 4. D3                 12. FAULT&lt;br /&gt;
 5. D2                 13. GND&lt;br /&gt;
 6. D1                 14. N/C&lt;br /&gt;
 7. D0                 15. +5 V&lt;br /&gt;
 8. Data Strobe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Zobacz też===&lt;br /&gt;
&lt;br /&gt;
* [http://krap.pl/mirrorz/atari/www.strotmann.de/twiki/pub/Infothek/AtariEightfivesirro/850ATARI.pdf Atari 850 Operator&#039;s Manual]&lt;br /&gt;
* [http://krap.pl/mirrorz/atari/www.strotmann.de/twiki/bin/view/Infothek/AtariEightFiftyFm Atari 850 Service Manual]&lt;br /&gt;
* [[Multi I/O]]&lt;br /&gt;
* [[Lista_komend_SIO_według_funkcji#Atari_850|Lista komend SIO specyficznych dla Atari 850]]&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Peryferia 8-bit]]&lt;br /&gt;
[[Kategoria:Schematy i specyfikacje]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34969</id>
		<title>Lista komend SIO według funkcji</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34969"/>
		<updated>2015-07-09T09:35:14Z</updated>

		<summary type="html">&lt;p&gt;Trub: /* Atari 850 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Główny artykuł: [[SIO]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Podstawowy zestaw komend====&lt;br /&gt;
&lt;br /&gt;
Poniższa tabela wyszczególnia podstawowe minimum komend rozpoznawanych przez urządzenia peryferyjne Atari.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DISK&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Formatuje dyskietkę w wybranej uprzednio (komendami PERCOM) gęstości, lub w [[Formaty dyskietek|pojedynczej gęstości]] (90k), jeśli stacja nie jest konfigurowalna. Zwraca listę zawierającą numery wadliwych sektorów (kolejno LSB/MSB) wykrytych w czasie formatowania, zakończoną wartością $FFFF. Niektóre stacje zwracają tu pustą listę ($FFFF, a dalej same zera), nawet jeśli na dyskietce są wadliwe sektory: po prostu dyskietki nie są już tak drogie, jak pod koniec lat siedemdziesiątych XX wieku...&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$50 (P)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;PUT SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31 i $60&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zapisuje do urządzenia blok danych wskazany przez DBUFA, a zawierający DBYT bajtów. W przypadku stacji dysków jest to zapis bez weryfikacji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$52 (R)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SECTOR&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Odczytuje z urządzenia blok danych o wielkości DBYT bajtów i zapisuje go w pamięci pod adresem wskazanym przez DBUFA.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$53 (S)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ STATUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wszystkie oprócz magnetofonu&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależna od urządzenia&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia blok statusu i zapisuje go pod adresem wskazanym przez DBUFA. Blok statusu dla RS-232 ma wielkość 2 bajtów, dla drukarki i stacji dysków - 4. Typowo komenda ta służy to stwierdzenia, czy urządzenie jest gotowe do pracy. W przypadku magnetofonu obowiązuje założenie, że jest on zawsze podłączony i gotów, nie ma więc potrzeby sprawdzania jego statusu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan=3&amp;gt;$57 (W)&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;WRITE SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Wszystkie&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;To samo, co PUT SECTOR ($50). W przypadku stacji dysków zapis przeprowadzany jest z weryfikacją.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;W przypadku drukarki długość bufora może wynosić 20, 29 albo 40 znaków (na ogół to ostatnie), a znaczenie DAUX2 jest jak następuje:&lt;br /&gt;
* $4E (N) drukowanie normalne&lt;br /&gt;
* $53 (S) druk obrócony o 90 stopni&lt;br /&gt;
* $44 (D) druk normalny z podwójną szerokością znaków&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Dla interfejsu [[850|Atari 850]] wielkość bufora wynosi 64 bajty.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy dodatkowe====&lt;br /&gt;
&lt;br /&gt;
Rozpoznawane przez urządzenia peryferyjne Atari komendy dodatkowe w stosunku do powyżej wspomnianego niezbędnego minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$22 (&amp;quot;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT MEDIUM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości średniej]] (130k). Komenda wprowadzona razem ze stacją [[1050]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DSDD&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;256 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości podwójnej dwustronnej]] (360k). Komenda wprowadzona razem ze stacją [[XF551|Atari XF-551]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy PERCOM====&lt;br /&gt;
&lt;br /&gt;
Komendy PERCOM noszą nazwę od stacji dysków firmy [[Percom Data Corp.|PERCOM]], w których po raz pierwszy się pojawiły. Nie są rozpoznawane przez stacje dysków firmy Atari (z wyjątkiem [[XF551|Atari XF-551]]), są jednak zaimplementowane we wszystkich rozszerzeniach oraz stacjach innych producentów i stanowią de facto standard.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4E (N)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ PERCOM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;12 bajtów ([[SIO#Blok_PERCOM|Blok PERCOM]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia dwunastobajtowy blok danych opisujący jego bieżącą konfigurację, tj. przede wszystkim format znajdującej się w stacji dyskietki.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4F (O)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE PERCOM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zapisuje do urządzenia dwanaście bajtów opisujących żądaną konfigurację, tj. liczbę ścieżek, stron dyskietki, sektorów na ścieżkę, wielkość sektora, gęstość. Przyjąwszy komendę stacja powinna natychmiast przestawić się na żądane ustawienia, o ile jest w stanie je zrealizować.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli zadanych ustawień nie da się zrealizować, stacja w teorii powinna odrzucić przesłany blok danych zgłaszając komputerowi błąd wykonania (co skutkuje [[Kody_błędów_Atari_OS|kodem błędu]] nr 144). W praktyce wiele stacji stosuje uproszczoną procedurę przyjmując parametry najbliższe zdefiniowanym przez przesłany blok danych. Jednak to, że parametry są &amp;quot;najbliższe&amp;quot;, nie oznacza, że muszą być w ogóle bliskie: np. zażądanie formatu 360 KB od stacji [[Top Drive 1050]] spowoduje jej ustawienie się w [[DD]] (180k), bo to jest maximum, jakie stacja jest w stanie zrealizować. Komplikuje to zadanie programom formatującym, które w celu zapisania prawidłowego katalogu muszą sprawdzać, czy żądana od stacji pojemność dyskietki została rzeczywiście wybrana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dyskietkę zgodnie z zapisaną konfiguracją.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ]] IDE nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do definiowania wielkości partycji służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy specjalne====&lt;br /&gt;
&lt;br /&gt;
Komendy wspomagające automatyczną instalację w systemie handlerów podłączonych urządzeń zewnętrznych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND RELOCATOR&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg odpowiedzi na komendę POLL ($3F)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jest to komenda uzupełniająca do opisanego niżej POLL ($3F). Powoduje przesłanie przez urządzenie programu odpowiedzialnego za załadowanie (komendą SEND HANDLER) i relokację właściwego handlera. Wszystkie parametry transmisji dla SEND RELOCATOR przesyłane są na komendę POLL ($3F). Program relokatora - po jego załadowaniu - uruchamia się od adresu DBUFA + 6. Przejmuje on na siebie wykonanie reszty operacji, a w wypadku niepowodzenia sygnalizuje błąd przez ustawienie bitu Carry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komendę SEND RELOCATOR rozpoznaje moduł [[850|Atari 850]], a może dotyczyć też innych urządzeń, oprócz stacji dysków (gdzie kod operacyjny $21 oznacza formatowanie dyskietki).&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$26 (&amp;amp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HANDLER&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator przesłany przez SEND RELOCATOR ($21) lub wg odpowiedzi na komendę POLL BUS ($40)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator (przesłany przez urządzenie lub rezydujący)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda SEND HANDLER służy do załadowania z urządzenia kodu programu obsługi (handlera) tego urządzenia. Może ona działać różnie w zależności od tego, czy transmisja została zainicjowana przez komendę POLL ($3F) czy POLL BUS ($40).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL ($3F) oznacza starszy protokół transmisji, w którym format strumienia danych przesłanych przez SEND HANDLER zależny jest od programu relokatora załadowanego wcześniej komendą SEND RELOCATOR ($21) i uruchomionego przez komputer.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL BUS ($40) oznacza nowszy protokół transmisji. Format strumienia danych jest ustalony z góry, a relokator rezyduje w ROM-ie systemu operacyjnego komputera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po otrzymaniu pozytywnej odpowiedzi na POLL BUS ($40) komputer rozpoczyna ładowanie kolejnych, 128-bajtowych rekordów binarnych, w liczbie do 256 (czyli pojedynczy &amp;quot;handler&amp;quot; może mieć maximum 32k). Przesyłany strumień danych musi być w [[ACX|specjalnym formacie]], który zapewnia relokowalność kodu, oraz zawiera podany explicite znacznik końca pliku - wystąpienie błędu przed napotkaniem tego znacznika powoduje przerwanie procedury z [[kody błędów|kodem błędu]] INCOMPLETE EXECUTION.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Ustawienia zmiennych DCB dla komendy SEND HANDLER wyglądają następująco:&amp;lt;/p&amp;gt;&lt;br /&gt;
* DDEVIC - kod urządzenia przesłany przez urządzenie $4F na komendę POLL BUS.&lt;br /&gt;
* DUNIT - zawsze $01&lt;br /&gt;
* DCMND - $26 - SEND HANDLER&lt;br /&gt;
* DSTATS - $40 - odczyt&lt;br /&gt;
* DTIMLO - 30 sekund&lt;br /&gt;
* DBYT - 128 bajtów&lt;br /&gt;
* DAUX1 - numer kolejny rekordu danych&lt;br /&gt;
* DAUX2 - zawsze 0&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ta, zwana też TYPE 2 POLL, służy do zainicjowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). W odpowiedzi urządzenie przesyła 12 bajtów odpowiadających kolejnym wartościom, jakie należy ustawić w bloku DCB celem załadowania kodu wykonywalnego handlera. Jest to starszy protokół transmisji zaprojektowany dla komputerów serii [[400]] i [[800]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W module [[850|Atari 850]] odpowiedzią na komendę POLL są wartości, jakie trzeba wstawić do DCB celem wykonania komendy SEND RELOCATOR ($21).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W celu uniknięcia wielokrotnego załadowania tego samego programu obsługi urządzenie na komendę POLL ($3F) odpowiada tylko raz, potem wykonanie komendy jest zablokowane aż do wyłączenia zasilania.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$40 (@)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL BUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$4F (bus master)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4 bajty&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;W komputerach serii XL oraz XE komendę tę system operacyjny przesyła do interfejsu szeregowo-równoległego przy każdym zimnym starcie; w pewnych warunkach - ale z nieco innymi parametrami - może też zostać wykonana po zainicjowaniu systemu. Jest to odpowiednik komendy POLL ($3F), jednak protokół transmisji handlera jest zunifikowany i nie wymaga od urządzenia przesyłania relokatora (uniwersalny relokator rezyduje w ROM-ie systemu operacyjnego). Analogicznie do POLL ($3F), komenda POLL BUS jest przeznaczona do zapoczątkowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). Zasadniczym adresatem jest tu moduł [[1090]] działający jako bus master.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Istnieje kilka odmian komendy POLL BUS różniących się parametrami przesyłanymi w DAUX1 i DAUX2:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TYPE 3 POLL: DAUX1 = 0 i DAUX2 = 0.&lt;br /&gt;
* TYPE 4 POLL: zobacz niżej.&lt;br /&gt;
* RESET POLL: DAUX1 = $4F i DAUX2 = $4F (&amp;quot;OO&amp;quot;)&lt;br /&gt;
* NULL POLL: DAUX1 = $4E i DAUX2 = $4E (&amp;quot;NN&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Przy zimnym starcie na początku system wysyła RESET POLL. Komenda ta powinna odblokować rozpoznawanie komendy TYPE 3 POLL we wszystkich podłączonych urządzeniach. Na RESET POLL urządzenia, oprócz potwierdzenia wykonania, nie przesyłają żadnej odpowiedzi, a komputer jej nie oczekuje.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Następnie system wysyła komendę TYPE 3 POLL. Pozytywna odpowiedź oznacza, że urządzenie nadesłało 4 bajty, z czego dwa pierwsze to ilość pamięci potrzebna do przeprowadzenia całości transmisji (musi to być parzysta wielkość). Jeśli jest to więcej niż dostępna ilość pamięci pomiędzy MEMLO a MEMTOP, system odpowiada przez NULL POLL (podobnie jak w wypadku RESET POLL, urządzenie przesyła tylko potwierdzenie wykonania), a następnie ponownie wysyła TYPE 3 POLL. W przypadku braku pamięci byłaby to pętla nieskończona, ale pojedyncze urządzenie na komendę TYPE 3 POLL może odpowiedzieć tylko raz - pętla jest więc przerywana błędem, który wystąpi po przetestowaniu wszystkich urządzeń zarządzanych przez bus mastera. Ponowna odpowiedź na TYPE 3 POLL jest możliwa dopiero po przesłaniu urządzeniu komendy RESET POLL, inaczej TYPE 3 POLL zostanie zignorowana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Trzeci przysłany bajt to identyfikator urządzenia (dla DDEVIC), które odpowiedziało na komendę i z którym będzie prowadzona dalsza komunikacja.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po stwierdzeniu poprawności odpowiedzi komputer dokonuje rezerwacji pamięci nad wartością MEMLO zaokrągloną w górę do najbliższej granicy słowa i próbuje dokonać odczytu z urządzenia, które się zgłosiło, 128 bajtów pod adres $03FD, przy użyciu innej &amp;quot;nietypowej&amp;quot; komendy, a mianowicie $26 - SEND HANDLER. Po załadowaniu i zainicjowaniu handlera pętla wraca do początku i wykonuje się cyklicznie aż do wystąpienia błędu - czyli do załadowania wszystkich handlerów będących w dyspozycji bus mastera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Procedura ładowania handlera wywoływana jest po procedurze bootowania DOS-u, ale niezależnie od jej wyniku; z czego wniosek, że &amp;quot;handler&amp;quot; może spełniać funkcję zarówno dodatku do DOS-u, jak i zostać załadowany &amp;lt;b&amp;gt;zamiast&amp;lt;/b&amp;gt; DOS-u.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Tą samą drogą można już po całkowitym uruchomieniu systemu, podczas pracy, załadować handler urządzenia &amp;lt;b&amp;gt;konkretnie wskazanego&amp;lt;/b&amp;gt;. Robi to [[CIO]] przy każdorazowej próbie otwarcia pliku na urządzeniu, którego system nie zna (nie ma takiego wpisu w tablicy handlerów).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Odpytanie bus mastera na okoliczność dysponowania takowym handlerem odbywa się za pomocą komendy TYPE 4 POLL. W DAUX1 ma się znajdować identyfikator urządzenia CIO, dla którego to urządzenia potrzebujemy handlera (np. dla magnetofonu $43, czyli &amp;quot;C&amp;quot;), w DAUX2 natomiast przesyła się numer wywoływanego urządzenia (np. dla &amp;quot;C1:&amp;quot; będzie to $01).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Pozostałe komendy====&lt;br /&gt;
&lt;br /&gt;
Komendy zdefiniowane przez Atari, na których temat brak bliższych danych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 (&amp;amp;nbsp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda wymieniana przez niektóre źródła. Szczegóły nieznane.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG1&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050|Atari 1050]]. Wymaga przesłania 128-bajtowego bloku danych, w którym dwa pierwsze bajty decydują o tym, co stacja będzie robić (DAUX1/2 są ignorowane):&amp;lt;/p&amp;gt;&lt;br /&gt;
* $02 - test przejścia głowicy między ścieżkami&lt;br /&gt;
* $03 - przesuw głowicy za pomocą silnika krokowego o jeden krok w przód lub w tył; o kierunku decyduje następny bajt, wartość dodatnia (np. $01) powoduje przesuw w przód - czyli w kierunku ścieżki 39 - a wartość ujemna (np. $FF) przesuw wstecz, czyli w kierunku ścieżki 0. &amp;quot;Krok&amp;quot; silnika krokowego w tym wypadku to połowa odległości między ścieżkami, żeby więc tą komendą przesunąć głowicę na sąsiednią ścieżkę, trzeba zrobić to dwa razy. Uwaga: możliwe jest cofnięcie głowicy wstecz od ścieżki 0 (na tzw. ścieżkę -1).&lt;br /&gt;
* $04 - test zapisu i odczytu dyskietki; formatuje znajdującą się w stacji dyskietkę w średniej gęstości.&lt;br /&gt;
* $05 - przesuw główicy do ścieżki o numerze podanym w następnym bajcie. &lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;UWAGA: kod operacyjny ($23) jest taki sam, jak kod komendy formatowania w stacji [[XF551|Atari XF-551]] oraz [[LDW Super 2000]] i [[CA-2001]] z załadowanym [[Synchromesh]]em!&#039;&#039;&#039;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050]], służy do pomiaru prędkości obrotowej dyskietki. W zależności od wartości dwóch pierwszych bajtów przesłanego bloku danych ($00, $00 lub $00, $01) stacja przesyła czas jednego obrotu dyskietki lub wartość prędkości obrotowej w obrotach na minutę.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SPIN&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;$31&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;R (?)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;Komendy te występują jako komendy dyskowe na liście rozkazów SIO w dokumentacji sporządzonej przez Atari. Nie znam jednak stacji, która by na nie reagowała. Mogą to być komendy stacji [[810]], jakieś komendy diagnostyczne jej prototypu, albo komendy planowane, lecz nie zaimplementowane. Dostępna dokumentacja nie zawiera ich opisu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$55 (U)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MOTOR ON&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$56 (V)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VERIFY SECTOR&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Stacja odczytuje sektor wskazany przez DAUX1/2 i zwraca komputerowi informację, czy da się on odczytać bez błędów. Dane zawarte w sektorze nie są transmitowane do komputera. Komenda ta występuje w dokumentacji SIO sporządzonej przez Atari, ale żadna ze stacji marki Atari jej nie rozpoznaje.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Komendy specyficzne dla poszczególnych urządzeń ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Stacje dysków Atari 1450XLD =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$01 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET LARGE MODE&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;large mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako logiczną całość liczącą 2080 sektorów po 128 bajtów (260k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$02 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET SMALL MODE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;small mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako dwie oddzielne dyskietki liczące po 1040 sektorów po 128 bajtów (= 2x130k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC IN&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda zapisująca do stacji wskazany bufor wypełniony bliżej nieokreślonymi danymi diagnostycznymi.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC OUT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda odczytująca bliżej niesprecyzowane dane diagnostyczne do wskazanego bufora.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B1 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B2 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Atari 850 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONTROL&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 3&amp;gt;$50&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca linie DTR, RTS i XMT (TX) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 34,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ustawiająca różne parametry pracy (m.in. szybkość transmisji) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 36,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;STREAM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda uruchamiająca tryb równoległego wejścia/wyjścia (Concurrent I/O). Interfejs [[850|Atari 850]] w odpowiedzi zwraca sekwencję liczb, według której handler urządzenia &amp;quot;R:&amp;quot; ustawia [[Rejestry_POKEY-a|rejestry układu POKEY]]  (kolejno AUDF,AUDC 1-4 oraz AUDCTL). Przykładowa sekwencja dla szybkości transmisji 300bps jest następująca: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== ATR 8000 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$47 (G)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GO TO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$5A ([[ATR 8000]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda pozwala na wywoływanie funkcji zdefiniowanych w ROM-ie modułu [[ATR 8000]] (q.v.).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Indus GT/LDW Super 2000/CA-2001 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT SKEWED&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda formatowania z szybkim [[przeplot]]em w stacjach [[Indus GT]], [[LDW Super 2000]] oraz [[CA-2001]] z załadowanym [[Synchromesh]]em.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Kod operacyjny jest taki sam, jak komendy formatowania w gęstości [[DSDD]] dla stacji [[XF551]] oraz jednej z komend diagnostycznych w [[1050]].&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD/EXECUTE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Różna&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda zaimplementowana w stacjach [[Indus GT]], [[LDW Super 2000]] i [[CA-2001]], pozwalająca na przesyłanie do stacji programów użytkownika i uruchamianie ich. Szczegóły: patrz [[Programowanie stacji LDW Super 2000 i CA-2001]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Happy Warp =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$48 (H)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;HAPPY CONFIG&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji z rozszerzeniem [[Happy Warp]]. Szczegóły: patrz [[Happy_Warp#Konfiguracja|Happy Warp - Konfiguracja]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== KMK/JŻ IDE =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$EC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;IDENTIFY DRIVE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;512 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W [[KMK/JŻ IDE]] komenda powoduje odczytanie bloku identyfikacyjnego napędu IDE, na którym założona jest wskazana partycja, i wpisanie go do bufora wskazanego przez DBUFA. Kolejność bajtów w tym bloku jest odwrotna od normalnej, tzn. wszystkie pary bajtów należy zamienić miejscami przed odczytaniem danych z tego bufora - dotyczy to również informacji tekstowej.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Multi I/O =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MEDIA CAPACITY INFO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nowe wersje firmware [[Multi I/O]] (od v. 1.4 wzwyż) w odpowiedzi na tę komendę zwracają informację o pojemności wskazanego dysku SCSI w [http://en.wikipedia.org/wiki/SCSI_Read_Capacity_Command tym formacie].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Speedy 1050 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;AUTOMATIC FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 11&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Speedy 1050]] w odpowiedni na tę komendę formatuje dyskietkę w zadanej gęstości (DAUX1 = $00 pojedyncza, $20 podwójna, $80 średnia) i, o ile konfiguracja stacji tego nie zabrania, zapisuje bootsektory i [[VTOC]] zgodne z [[DOS 2.0]] lub (w średniej gęstości) [[DOS 2.5]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;REGISTER COMMAND&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje zarejestrowanie komendy uzytkownika. Dane powinny zawierać kolejno:&lt;br /&gt;
* kod komendy&lt;br /&gt;
* młodszy bajt adresu w pamięci stacji, gdzie znajduje się podprogram obsługi&lt;br /&gt;
* starszy bajt tego adresu&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli dana komenda jest już jakoś przypisana, to przypisanie zostanie zmienione. Gdy adres ma wartość $0000, komenda zostanie wykasowana z pamięci stacji.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$44 (D)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DISPLAY&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja wyświetlacza stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: wyświetlanie kodów błędów na wyświetlaczu stacji&lt;br /&gt;
* bit 6: wyświetlanie numeru ścieżki w kodzie szesnastkowym&lt;br /&gt;
* bit 5: formatowanie bez weryfikacji&lt;br /&gt;
* bit 4: zablokowanie zapisu struktury logicznej dyskietki po komendzie $20&lt;br /&gt;
* bit 3: niewyłączanie silnika po komendzie $51&lt;br /&gt;
* bit 2: nieużywany&lt;br /&gt;
* bit 1: nieużywany&lt;br /&gt;
* bit 0: sygnał dźwiękowy w wypadku błędu&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4B (K)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DRIVE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: zapis i odczyt dyskietki bez buforowania (0 po zmianie dyskietki)&lt;br /&gt;
* bit 6: zapis i odczyt ścieżki bez buforowania (0 po zmianie ścieżki)&lt;br /&gt;
* bit 5: nieużywany&lt;br /&gt;
* bit 4: nieużywany&lt;br /&gt;
* bit 3: wyłączenie buforowania ścieżek&lt;br /&gt;
* bit 2: wyłączenie weryfikacji dla komendy $57 (W)&lt;br /&gt;
* bit 1: zapis sektora z pominięciem buforowania&lt;br /&gt;
* bit 0: odczyt sektora z pominięciem buforowania&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4C (L)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP, NO ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] wywołanie wewnętrznej procedury ROM-u stacji spod adresu przekazanego w DAUX1/2 (młodszy/starszy). Potwierdzenie wykonania rozkazu musi przesłać wywoływany podprogram.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP WITH ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] to samo, to $4C, ale potwierdzenie rozkazu jest przesyłane automatycznie.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FLUSH&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda ta powoduje natychmiastowy zapis zawartości bufora zapisu na dyskietkę i zatrzymanie silnika (normalnie stacja czeka z tym ok. 2 sekund po transmisji sektora).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$60 (`)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] zapis na dyskietkę całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$62 (b)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] odczyt z dyskietki całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$68 (h)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SIO LEN&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie dwóch bajtów określających wielkość procedury SIO, którą mozna od stacji uzyskać komendą $69. &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$69 (i)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND SIO&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wynik komendy $68&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie programu szybkiej transmisji SIO. Bajty DBYT powinny być ustawione na wartość zwróconą przez komendę $68. DAUX1/2 to adres w pamięci Atari, gdzie procedura ma zostać załadowana (stacja dokonuje relokacji kodu pod ten adres przed wysłaniem go do komputera).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== TOMS Multi Drive =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$49 (I)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;INDEX FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależnie od wybranej gęstości&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[TOMS Multi Drive]] komenda ta działa tak samo, jak zwykłe formatowanie ($21), z tym wyjątkiem, że do oznaczenia początku ścieżki stacja używa otworu indeksowego (normalnie w stacjach Atari ścieżka zaczyna się tam, gdzie akurat wypadnie). Służy to głównie do zabezpieczania programów przez tzw. synchroniczne sektory. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== US Doubler =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HIGH SPEED INDEX&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Stacje kompatybilne z [[US Doubler]] w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącą do ustawienia częstotliwości nośnej dla przyspieszonej transmisji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$66 (f)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CUSTOM FORMAT&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda formatowania z zadanym przeplotem zaimplementowana w stacjach [[US Doubler]]. Wysyłane 128 bajtów określa:&lt;br /&gt;
* w pierwszych 12 bajtach: zadaną gęstość, tak jak w komendzie WRITE PERCOM&lt;br /&gt;
* następne 18 lub 26 bajtów to fizyczne numery sektorów na ścieżce w zadanej kolejności, licząc od 1.&lt;br /&gt;
&amp;lt;p&amp;gt;Przykładowe przeploty podaje hasło [[Przeplot]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== [[XFD601|XFD601/602]] =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GET COMMAND BUFFER&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zwraca historię ostatnich 32 wywołań na łączu szeregowym. Wszystkich wywołań - nie tylko do stacji. Każdy wpis zawiera 4 bajty - dokładnie te same, jakie są wysyłane do urządzenia zewnetrznego przez komputer, czyli: [[SIO#DCB|DDEVIC]], [[SIO#DCB|DCMND]], [[SIO#DCB|DAUX1]], [[SIO#DCB|DAUX2]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Po odebraniu tego rozkazu stacja zwraca tzw. adres pierwszego napotkanego sektora, w formie 6 bajtów: numer scieżki, numer strony, numer sektora, rozmiar sektora, 2 bajty CRC.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit|SIO, Lista komend według funkcji]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34964</id>
		<title>Lista komend SIO według funkcji</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34964"/>
		<updated>2015-07-09T08:38:11Z</updated>

		<summary type="html">&lt;p&gt;Trub: /* Atari 850 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Główny artykuł: [[SIO]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Podstawowy zestaw komend====&lt;br /&gt;
&lt;br /&gt;
Poniższa tabela wyszczególnia podstawowe minimum komend rozpoznawanych przez urządzenia peryferyjne Atari.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DISK&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Formatuje dyskietkę w wybranej uprzednio (komendami PERCOM) gęstości, lub w [[Formaty dyskietek|pojedynczej gęstości]] (90k), jeśli stacja nie jest konfigurowalna. Zwraca listę zawierającą numery wadliwych sektorów (kolejno LSB/MSB) wykrytych w czasie formatowania, zakończoną wartością $FFFF. Niektóre stacje zwracają tu pustą listę ($FFFF, a dalej same zera), nawet jeśli na dyskietce są wadliwe sektory: po prostu dyskietki nie są już tak drogie, jak pod koniec lat siedemdziesiątych XX wieku...&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$50 (P)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;PUT SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31 i $60&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zapisuje do urządzenia blok danych wskazany przez DBUFA, a zawierający DBYT bajtów. W przypadku stacji dysków jest to zapis bez weryfikacji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$52 (R)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SECTOR&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Odczytuje z urządzenia blok danych o wielkości DBYT bajtów i zapisuje go w pamięci pod adresem wskazanym przez DBUFA.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$53 (S)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ STATUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wszystkie oprócz magnetofonu&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależna od urządzenia&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia blok statusu i zapisuje go pod adresem wskazanym przez DBUFA. Blok statusu dla RS-232 ma wielkość 2 bajtów, dla drukarki i stacji dysków - 4. Typowo komenda ta służy to stwierdzenia, czy urządzenie jest gotowe do pracy. W przypadku magnetofonu obowiązuje założenie, że jest on zawsze podłączony i gotów, nie ma więc potrzeby sprawdzania jego statusu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan=3&amp;gt;$57 (W)&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;WRITE SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Wszystkie&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;To samo, co PUT SECTOR ($50). W przypadku stacji dysków zapis przeprowadzany jest z weryfikacją.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;W przypadku drukarki długość bufora może wynosić 20, 29 albo 40 znaków (na ogół to ostatnie), a znaczenie DAUX2 jest jak następuje:&lt;br /&gt;
* $4E (N) drukowanie normalne&lt;br /&gt;
* $53 (S) druk obrócony o 90 stopni&lt;br /&gt;
* $44 (D) druk normalny z podwójną szerokością znaków&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Dla interfejsu [[850|Atari 850]] wielkość bufora wynosi 64 bajty.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy dodatkowe====&lt;br /&gt;
&lt;br /&gt;
Rozpoznawane przez urządzenia peryferyjne Atari komendy dodatkowe w stosunku do powyżej wspomnianego niezbędnego minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$22 (&amp;quot;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT MEDIUM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości średniej]] (130k). Komenda wprowadzona razem ze stacją [[1050]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DSDD&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;256 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości podwójnej dwustronnej]] (360k). Komenda wprowadzona razem ze stacją [[XF551|Atari XF-551]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy PERCOM====&lt;br /&gt;
&lt;br /&gt;
Komendy PERCOM noszą nazwę od stacji dysków firmy [[Percom Data Corp.|PERCOM]], w których po raz pierwszy się pojawiły. Nie są rozpoznawane przez stacje dysków firmy Atari (z wyjątkiem [[XF551|Atari XF-551]]), są jednak zaimplementowane we wszystkich rozszerzeniach oraz stacjach innych producentów i stanowią de facto standard.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4E (N)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ PERCOM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;12 bajtów ([[SIO#Blok_PERCOM|Blok PERCOM]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia dwunastobajtowy blok danych opisujący jego bieżącą konfigurację, tj. przede wszystkim format znajdującej się w stacji dyskietki.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4F (O)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE PERCOM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zapisuje do urządzenia dwanaście bajtów opisujących żądaną konfigurację, tj. liczbę ścieżek, stron dyskietki, sektorów na ścieżkę, wielkość sektora, gęstość. Przyjąwszy komendę stacja powinna natychmiast przestawić się na żądane ustawienia, o ile jest w stanie je zrealizować.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli zadanych ustawień nie da się zrealizować, stacja w teorii powinna odrzucić przesłany blok danych zgłaszając komputerowi błąd wykonania (co skutkuje [[Kody_błędów_Atari_OS|kodem błędu]] nr 144). W praktyce wiele stacji stosuje uproszczoną procedurę przyjmując parametry najbliższe zdefiniowanym przez przesłany blok danych. Jednak to, że parametry są &amp;quot;najbliższe&amp;quot;, nie oznacza, że muszą być w ogóle bliskie: np. zażądanie formatu 360 KB od stacji [[Top Drive 1050]] spowoduje jej ustawienie się w [[DD]] (180k), bo to jest maximum, jakie stacja jest w stanie zrealizować. Komplikuje to zadanie programom formatującym, które w celu zapisania prawidłowego katalogu muszą sprawdzać, czy żądana od stacji pojemność dyskietki została rzeczywiście wybrana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dyskietkę zgodnie z zapisaną konfiguracją.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ]] IDE nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do definiowania wielkości partycji służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy specjalne====&lt;br /&gt;
&lt;br /&gt;
Komendy wspomagające automatyczną instalację w systemie handlerów podłączonych urządzeń zewnętrznych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND RELOCATOR&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg odpowiedzi na komendę POLL ($3F)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jest to komenda uzupełniająca do opisanego niżej POLL ($3F). Powoduje przesłanie przez urządzenie programu odpowiedzialnego za załadowanie (komendą SEND HANDLER) i relokację właściwego handlera. Wszystkie parametry transmisji dla SEND RELOCATOR przesyłane są na komendę POLL ($3F). Program relokatora - po jego załadowaniu - uruchamia się od adresu DBUFA + 6. Przejmuje on na siebie wykonanie reszty operacji, a w wypadku niepowodzenia sygnalizuje błąd przez ustawienie bitu Carry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komendę SEND RELOCATOR rozpoznaje moduł [[850|Atari 850]], a może dotyczyć też innych urządzeń, oprócz stacji dysków (gdzie kod operacyjny $21 oznacza formatowanie dyskietki).&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$26 (&amp;amp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HANDLER&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator przesłany przez SEND RELOCATOR ($21) lub wg odpowiedzi na komendę POLL BUS ($40)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator (przesłany przez urządzenie lub rezydujący)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda SEND HANDLER służy do załadowania z urządzenia kodu programu obsługi (handlera) tego urządzenia. Może ona działać różnie w zależności od tego, czy transmisja została zainicjowana przez komendę POLL ($3F) czy POLL BUS ($40).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL ($3F) oznacza starszy protokół transmisji, w którym format strumienia danych przesłanych przez SEND HANDLER zależny jest od programu relokatora załadowanego wcześniej komendą SEND RELOCATOR ($21) i uruchomionego przez komputer.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL BUS ($40) oznacza nowszy protokół transmisji. Format strumienia danych jest ustalony z góry, a relokator rezyduje w ROM-ie systemu operacyjnego komputera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po otrzymaniu pozytywnej odpowiedzi na POLL BUS ($40) komputer rozpoczyna ładowanie kolejnych, 128-bajtowych rekordów binarnych, w liczbie do 256 (czyli pojedynczy &amp;quot;handler&amp;quot; może mieć maximum 32k). Przesyłany strumień danych musi być w [[ACX|specjalnym formacie]], który zapewnia relokowalność kodu, oraz zawiera podany explicite znacznik końca pliku - wystąpienie błędu przed napotkaniem tego znacznika powoduje przerwanie procedury z [[kody błędów|kodem błędu]] INCOMPLETE EXECUTION.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Ustawienia zmiennych DCB dla komendy SEND HANDLER wyglądają następująco:&amp;lt;/p&amp;gt;&lt;br /&gt;
* DDEVIC - kod urządzenia przesłany przez urządzenie $4F na komendę POLL BUS.&lt;br /&gt;
* DUNIT - zawsze $01&lt;br /&gt;
* DCMND - $26 - SEND HANDLER&lt;br /&gt;
* DSTATS - $40 - odczyt&lt;br /&gt;
* DTIMLO - 30 sekund&lt;br /&gt;
* DBYT - 128 bajtów&lt;br /&gt;
* DAUX1 - numer kolejny rekordu danych&lt;br /&gt;
* DAUX2 - zawsze 0&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ta, zwana też TYPE 2 POLL, służy do zainicjowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). W odpowiedzi urządzenie przesyła 12 bajtów odpowiadających kolejnym wartościom, jakie należy ustawić w bloku DCB celem załadowania kodu wykonywalnego handlera. Jest to starszy protokół transmisji zaprojektowany dla komputerów serii [[400]] i [[800]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W module [[850|Atari 850]] odpowiedzią na komendę POLL są wartości, jakie trzeba wstawić do DCB celem wykonania komendy SEND RELOCATOR ($21).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W celu uniknięcia wielokrotnego załadowania tego samego programu obsługi urządzenie na komendę POLL ($3F) odpowiada tylko raz, potem wykonanie komendy jest zablokowane aż do wyłączenia zasilania.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$40 (@)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL BUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$4F (bus master)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4 bajty&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;W komputerach serii XL oraz XE komendę tę system operacyjny przesyła do interfejsu szeregowo-równoległego przy każdym zimnym starcie; w pewnych warunkach - ale z nieco innymi parametrami - może też zostać wykonana po zainicjowaniu systemu. Jest to odpowiednik komendy POLL ($3F), jednak protokół transmisji handlera jest zunifikowany i nie wymaga od urządzenia przesyłania relokatora (uniwersalny relokator rezyduje w ROM-ie systemu operacyjnego). Analogicznie do POLL ($3F), komenda POLL BUS jest przeznaczona do zapoczątkowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). Zasadniczym adresatem jest tu moduł [[1090]] działający jako bus master.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Istnieje kilka odmian komendy POLL BUS różniących się parametrami przesyłanymi w DAUX1 i DAUX2:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TYPE 3 POLL: DAUX1 = 0 i DAUX2 = 0.&lt;br /&gt;
* TYPE 4 POLL: zobacz niżej.&lt;br /&gt;
* RESET POLL: DAUX1 = $4F i DAUX2 = $4F (&amp;quot;OO&amp;quot;)&lt;br /&gt;
* NULL POLL: DAUX1 = $4E i DAUX2 = $4E (&amp;quot;NN&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Przy zimnym starcie na początku system wysyła RESET POLL. Komenda ta powinna odblokować rozpoznawanie komendy TYPE 3 POLL we wszystkich podłączonych urządzeniach. Na RESET POLL urządzenia, oprócz potwierdzenia wykonania, nie przesyłają żadnej odpowiedzi, a komputer jej nie oczekuje.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Następnie system wysyła komendę TYPE 3 POLL. Pozytywna odpowiedź oznacza, że urządzenie nadesłało 4 bajty, z czego dwa pierwsze to ilość pamięci potrzebna do przeprowadzenia całości transmisji (musi to być parzysta wielkość). Jeśli jest to więcej niż dostępna ilość pamięci pomiędzy MEMLO a MEMTOP, system odpowiada przez NULL POLL (podobnie jak w wypadku RESET POLL, urządzenie przesyła tylko potwierdzenie wykonania), a następnie ponownie wysyła TYPE 3 POLL. W przypadku braku pamięci byłaby to pętla nieskończona, ale pojedyncze urządzenie na komendę TYPE 3 POLL może odpowiedzieć tylko raz - pętla jest więc przerywana błędem, który wystąpi po przetestowaniu wszystkich urządzeń zarządzanych przez bus mastera. Ponowna odpowiedź na TYPE 3 POLL jest możliwa dopiero po przesłaniu urządzeniu komendy RESET POLL, inaczej TYPE 3 POLL zostanie zignorowana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Trzeci przysłany bajt to identyfikator urządzenia (dla DDEVIC), które odpowiedziało na komendę i z którym będzie prowadzona dalsza komunikacja.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po stwierdzeniu poprawności odpowiedzi komputer dokonuje rezerwacji pamięci nad wartością MEMLO zaokrągloną w górę do najbliższej granicy słowa i próbuje dokonać odczytu z urządzenia, które się zgłosiło, 128 bajtów pod adres $03FD, przy użyciu innej &amp;quot;nietypowej&amp;quot; komendy, a mianowicie $26 - SEND HANDLER. Po załadowaniu i zainicjowaniu handlera pętla wraca do początku i wykonuje się cyklicznie aż do wystąpienia błędu - czyli do załadowania wszystkich handlerów będących w dyspozycji bus mastera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Procedura ładowania handlera wywoływana jest po procedurze bootowania DOS-u, ale niezależnie od jej wyniku; z czego wniosek, że &amp;quot;handler&amp;quot; może spełniać funkcję zarówno dodatku do DOS-u, jak i zostać załadowany &amp;lt;b&amp;gt;zamiast&amp;lt;/b&amp;gt; DOS-u.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Tą samą drogą można już po całkowitym uruchomieniu systemu, podczas pracy, załadować handler urządzenia &amp;lt;b&amp;gt;konkretnie wskazanego&amp;lt;/b&amp;gt;. Robi to [[CIO]] przy każdorazowej próbie otwarcia pliku na urządzeniu, którego system nie zna (nie ma takiego wpisu w tablicy handlerów).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Odpytanie bus mastera na okoliczność dysponowania takowym handlerem odbywa się za pomocą komendy TYPE 4 POLL. W DAUX1 ma się znajdować identyfikator urządzenia CIO, dla którego to urządzenia potrzebujemy handlera (np. dla magnetofonu $43, czyli &amp;quot;C&amp;quot;), w DAUX2 natomiast przesyła się numer wywoływanego urządzenia (np. dla &amp;quot;C1:&amp;quot; będzie to $01).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Pozostałe komendy====&lt;br /&gt;
&lt;br /&gt;
Komendy zdefiniowane przez Atari, na których temat brak bliższych danych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 (&amp;amp;nbsp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda wymieniana przez niektóre źródła. Szczegóły nieznane.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG1&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050|Atari 1050]]. Wymaga przesłania 128-bajtowego bloku danych, w którym dwa pierwsze bajty decydują o tym, co stacja będzie robić (DAUX1/2 są ignorowane):&amp;lt;/p&amp;gt;&lt;br /&gt;
* $02 - test przejścia głowicy między ścieżkami&lt;br /&gt;
* $03 - przesuw głowicy za pomocą silnika krokowego o jeden krok w przód lub w tył; o kierunku decyduje następny bajt, wartość dodatnia (np. $01) powoduje przesuw w przód - czyli w kierunku ścieżki 39 - a wartość ujemna (np. $FF) przesuw wstecz, czyli w kierunku ścieżki 0. &amp;quot;Krok&amp;quot; silnika krokowego w tym wypadku to połowa odległości między ścieżkami, żeby więc tą komendą przesunąć głowicę na sąsiednią ścieżkę, trzeba zrobić to dwa razy. Uwaga: możliwe jest cofnięcie głowicy wstecz od ścieżki 0 (na tzw. ścieżkę -1).&lt;br /&gt;
* $04 - test zapisu i odczytu dyskietki; formatuje znajdującą się w stacji dyskietkę w średniej gęstości.&lt;br /&gt;
* $05 - przesuw główicy do ścieżki o numerze podanym w następnym bajcie. &lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;UWAGA: kod operacyjny ($23) jest taki sam, jak kod komendy formatowania w stacji [[XF551|Atari XF-551]] oraz [[LDW Super 2000]] i [[CA-2001]] z załadowanym [[Synchromesh]]em!&#039;&#039;&#039;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050]], służy do pomiaru prędkości obrotowej dyskietki. W zależności od wartości dwóch pierwszych bajtów przesłanego bloku danych ($00, $00 lub $00, $01) stacja przesyła czas jednego obrotu dyskietki lub wartość prędkości obrotowej w obrotach na minutę.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SPIN&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;$31&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;R (?)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;Komendy te występują jako komendy dyskowe na liście rozkazów SIO w dokumentacji sporządzonej przez Atari. Nie znam jednak stacji, która by na nie reagowała. Mogą to być komendy stacji [[810]], jakieś komendy diagnostyczne jej prototypu, albo komendy planowane, lecz nie zaimplementowane. Dostępna dokumentacja nie zawiera ich opisu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$55 (U)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MOTOR ON&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$56 (V)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VERIFY SECTOR&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Stacja odczytuje sektor wskazany przez DAUX1/2 i zwraca komputerowi informację, czy da się on odczytać bez błędów. Dane zawarte w sektorze nie są transmitowane do komputera. Komenda ta występuje w dokumentacji SIO sporządzonej przez Atari, ale żadna ze stacji marki Atari jej nie rozpoznaje.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Komendy specyficzne dla poszczególnych urządzeń ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Stacje dysków Atari 1450XLD =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$01 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET LARGE MODE&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;large mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako logiczną całość liczącą 2080 sektorów po 128 bajtów (260k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$02 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET SMALL MODE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;small mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako dwie oddzielne dyskietki liczące po 1040 sektorów po 128 bajtów (= 2x130k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC IN&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda zapisująca do stacji wskazany bufor wypełniony bliżej nieokreślonymi danymi diagnostycznymi.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC OUT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda odczytująca bliżej niesprecyzowane dane diagnostyczne do wskazanego bufora.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B1 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B2 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Atari 850 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONTROL&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 3&amp;gt;$50&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca linie DTR, RTS i XMT (TX) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 34,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ustawiająca różne parametry pracy (m.in. szybkość transmisji) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 36,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;STREAM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda uruchamiająca tryb równoległego wejścia/wyjścia (Concurrent I/O). Interfejs [[850|Atari 850]] w odpowiedzi zwraca następującą sekwencję liczb: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78. Handler urządzenia &amp;quot;R:&amp;quot; ustawia według niej [[Rejestry_POKEY-a|rejestry układu POKEY]], tj. kolejno AUDF,AUDC 1-4 oraz AUDCTL.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== ATR 8000 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$47 (G)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GO TO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$5A ([[ATR 8000]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda pozwala na wywoływanie funkcji zdefiniowanych w ROM-ie modułu [[ATR 8000]] (q.v.).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Indus GT/LDW Super 2000/CA-2001 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT SKEWED&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda formatowania z szybkim [[przeplot]]em w stacjach [[Indus GT]], [[LDW Super 2000]] oraz [[CA-2001]] z załadowanym [[Synchromesh]]em.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Kod operacyjny jest taki sam, jak komendy formatowania w gęstości [[DSDD]] dla stacji [[XF551]] oraz jednej z komend diagnostycznych w [[1050]].&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD/EXECUTE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Różna&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda zaimplementowana w stacjach [[Indus GT]], [[LDW Super 2000]] i [[CA-2001]], pozwalająca na przesyłanie do stacji programów użytkownika i uruchamianie ich. Szczegóły: patrz [[Programowanie stacji LDW Super 2000 i CA-2001]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Happy Warp =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$48 (H)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;HAPPY CONFIG&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji z rozszerzeniem [[Happy Warp]]. Szczegóły: patrz [[Happy_Warp#Konfiguracja|Happy Warp - Konfiguracja]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== KMK/JŻ IDE =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$EC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;IDENTIFY DRIVE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;512 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W [[KMK/JŻ IDE]] komenda powoduje odczytanie bloku identyfikacyjnego napędu IDE, na którym założona jest wskazana partycja, i wpisanie go do bufora wskazanego przez DBUFA. Kolejność bajtów w tym bloku jest odwrotna od normalnej, tzn. wszystkie pary bajtów należy zamienić miejscami przed odczytaniem danych z tego bufora - dotyczy to również informacji tekstowej.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Multi I/O =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MEDIA CAPACITY INFO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nowe wersje firmware [[Multi I/O]] (od v. 1.4 wzwyż) w odpowiedzi na tę komendę zwracają informację o pojemności wskazanego dysku SCSI w [http://en.wikipedia.org/wiki/SCSI_Read_Capacity_Command tym formacie].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Speedy 1050 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;AUTOMATIC FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 11&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Speedy 1050]] w odpowiedni na tę komendę formatuje dyskietkę w zadanej gęstości (DAUX1 = $00 pojedyncza, $20 podwójna, $80 średnia) i, o ile konfiguracja stacji tego nie zabrania, zapisuje bootsektory i [[VTOC]] zgodne z [[DOS 2.0]] lub (w średniej gęstości) [[DOS 2.5]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;REGISTER COMMAND&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje zarejestrowanie komendy uzytkownika. Dane powinny zawierać kolejno:&lt;br /&gt;
* kod komendy&lt;br /&gt;
* młodszy bajt adresu w pamięci stacji, gdzie znajduje się podprogram obsługi&lt;br /&gt;
* starszy bajt tego adresu&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli dana komenda jest już jakoś przypisana, to przypisanie zostanie zmienione. Gdy adres ma wartość $0000, komenda zostanie wykasowana z pamięci stacji.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$44 (D)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DISPLAY&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja wyświetlacza stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: wyświetlanie kodów błędów na wyświetlaczu stacji&lt;br /&gt;
* bit 6: wyświetlanie numeru ścieżki w kodzie szesnastkowym&lt;br /&gt;
* bit 5: formatowanie bez weryfikacji&lt;br /&gt;
* bit 4: zablokowanie zapisu struktury logicznej dyskietki po komendzie $20&lt;br /&gt;
* bit 3: niewyłączanie silnika po komendzie $51&lt;br /&gt;
* bit 2: nieużywany&lt;br /&gt;
* bit 1: nieużywany&lt;br /&gt;
* bit 0: sygnał dźwiękowy w wypadku błędu&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4B (K)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DRIVE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: zapis i odczyt dyskietki bez buforowania (0 po zmianie dyskietki)&lt;br /&gt;
* bit 6: zapis i odczyt ścieżki bez buforowania (0 po zmianie ścieżki)&lt;br /&gt;
* bit 5: nieużywany&lt;br /&gt;
* bit 4: nieużywany&lt;br /&gt;
* bit 3: wyłączenie buforowania ścieżek&lt;br /&gt;
* bit 2: wyłączenie weryfikacji dla komendy $57 (W)&lt;br /&gt;
* bit 1: zapis sektora z pominięciem buforowania&lt;br /&gt;
* bit 0: odczyt sektora z pominięciem buforowania&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4C (L)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP, NO ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] wywołanie wewnętrznej procedury ROM-u stacji spod adresu przekazanego w DAUX1/2 (młodszy/starszy). Potwierdzenie wykonania rozkazu musi przesłać wywoływany podprogram.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP WITH ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] to samo, to $4C, ale potwierdzenie rozkazu jest przesyłane automatycznie.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FLUSH&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda ta powoduje natychmiastowy zapis zawartości bufora zapisu na dyskietkę i zatrzymanie silnika (normalnie stacja czeka z tym ok. 2 sekund po transmisji sektora).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$60 (`)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] zapis na dyskietkę całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$62 (b)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] odczyt z dyskietki całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$68 (h)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SIO LEN&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie dwóch bajtów określających wielkość procedury SIO, którą mozna od stacji uzyskać komendą $69. &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$69 (i)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND SIO&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wynik komendy $68&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie programu szybkiej transmisji SIO. Bajty DBYT powinny być ustawione na wartość zwróconą przez komendę $68. DAUX1/2 to adres w pamięci Atari, gdzie procedura ma zostać załadowana (stacja dokonuje relokacji kodu pod ten adres przed wysłaniem go do komputera).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== TOMS Multi Drive =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$49 (I)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;INDEX FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależnie od wybranej gęstości&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[TOMS Multi Drive]] komenda ta działa tak samo, jak zwykłe formatowanie ($21), z tym wyjątkiem, że do oznaczenia początku ścieżki stacja używa otworu indeksowego (normalnie w stacjach Atari ścieżka zaczyna się tam, gdzie akurat wypadnie). Służy to głównie do zabezpieczania programów przez tzw. synchroniczne sektory. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== US Doubler =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HIGH SPEED INDEX&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Stacje kompatybilne z [[US Doubler]] w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącą do ustawienia częstotliwości nośnej dla przyspieszonej transmisji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$66 (f)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CUSTOM FORMAT&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda formatowania z zadanym przeplotem zaimplementowana w stacjach [[US Doubler]]. Wysyłane 128 bajtów określa:&lt;br /&gt;
* w pierwszych 12 bajtach: zadaną gęstość, tak jak w komendzie WRITE PERCOM&lt;br /&gt;
* następne 18 lub 26 bajtów to fizyczne numery sektorów na ścieżce w zadanej kolejności, licząc od 1.&lt;br /&gt;
&amp;lt;p&amp;gt;Przykładowe przeploty podaje hasło [[Przeplot]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== [[XFD601|XFD601/602]] =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GET COMMAND BUFFER&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zwraca historię ostatnich 32 wywołań na łączu szeregowym. Wszystkich wywołań - nie tylko do stacji. Każdy wpis zawiera 4 bajty - dokładnie te same, jakie są wysyłane do urządzenia zewnetrznego przez komputer, czyli: [[SIO#DCB|DDEVIC]], [[SIO#DCB|DCMND]], [[SIO#DCB|DAUX1]], [[SIO#DCB|DAUX2]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Po odebraniu tego rozkazu stacja zwraca tzw. adres pierwszego napotkanego sektora, w formie 6 bajtów: numer scieżki, numer strony, numer sektora, rozmiar sektora, 2 bajty CRC.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit|SIO, Lista komend według funkcji]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34963</id>
		<title>Lista komend SIO według funkcji</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Lista_komend_SIO_wed%C5%82ug_funkcji&amp;diff=34963"/>
		<updated>2015-07-09T08:37:11Z</updated>

		<summary type="html">&lt;p&gt;Trub: komendy 850 wg dokumentacji&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Główny artykuł: [[SIO]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Podstawowy zestaw komend====&lt;br /&gt;
&lt;br /&gt;
Poniższa tabela wyszczególnia podstawowe minimum komend rozpoznawanych przez urządzenia peryferyjne Atari.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DISK&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Formatuje dyskietkę w wybranej uprzednio (komendami PERCOM) gęstości, lub w [[Formaty dyskietek|pojedynczej gęstości]] (90k), jeśli stacja nie jest konfigurowalna. Zwraca listę zawierającą numery wadliwych sektorów (kolejno LSB/MSB) wykrytych w czasie formatowania, zakończoną wartością $FFFF. Niektóre stacje zwracają tu pustą listę ($FFFF, a dalej same zera), nawet jeśli na dyskietce są wadliwe sektory: po prostu dyskietki nie są już tak drogie, jak pod koniec lat siedemdziesiątych XX wieku...&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$50 (P)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;PUT SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31 i $60&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zapisuje do urządzenia blok danych wskazany przez DBUFA, a zawierający DBYT bajtów. W przypadku stacji dysków jest to zapis bez weryfikacji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$52 (R)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SECTOR&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Odczytuje z urządzenia blok danych o wielkości DBYT bajtów i zapisuje go w pamięci pod adresem wskazanym przez DBUFA.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$53 (S)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ STATUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wszystkie oprócz magnetofonu&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależna od urządzenia&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia blok statusu i zapisuje go pod adresem wskazanym przez DBUFA. Blok statusu dla RS-232 ma wielkość 2 bajtów, dla drukarki i stacji dysków - 4. Typowo komenda ta służy to stwierdzenia, czy urządzenie jest gotowe do pracy. W przypadku magnetofonu obowiązuje założenie, że jest on zawsze podłączony i gotów, nie ma więc potrzeby sprawdzania jego statusu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td rowspan=3&amp;gt;$57 (W)&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;WRITE SECTOR&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Wszystkie&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan=3&amp;gt;Zależna od urządzenia i trybu pracy.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;To samo, co PUT SECTOR ($50). W przypadku stacji dysków zapis przeprowadzany jest z weryfikacją.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;W przypadku drukarki długość bufora może wynosić 20, 29 albo 40 znaków (na ogół to ostatnie), a znaczenie DAUX2 jest jak następuje:&lt;br /&gt;
* $4E (N) drukowanie normalne&lt;br /&gt;
* $53 (S) druk obrócony o 90 stopni&lt;br /&gt;
* $44 (D) druk normalny z podwójną szerokością znaków&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Dla interfejsu [[850|Atari 850]] wielkość bufora wynosi 64 bajty.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy dodatkowe====&lt;br /&gt;
&lt;br /&gt;
Rozpoznawane przez urządzenia peryferyjne Atari komendy dodatkowe w stosunku do powyżej wspomnianego niezbędnego minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$22 (&amp;quot;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT MEDIUM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości średniej]] (130k). Komenda wprowadzona razem ze stacją [[1050]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT DSDD&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;256 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Analogicznie do FORMAT DISK ($21), z tym że formatowanie zawsze przeprowadzane jest w [[Formaty dyskietek|gęstości podwójnej dwustronnej]] (360k). Komenda wprowadzona razem ze stacją [[XF551|Atari XF-551]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ IDE]] nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do partycjonowania i &amp;quot;formatowania&amp;quot; dysku służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy PERCOM====&lt;br /&gt;
&lt;br /&gt;
Komendy PERCOM noszą nazwę od stacji dysków firmy [[Percom Data Corp.|PERCOM]], w których po raz pierwszy się pojawiły. Nie są rozpoznawane przez stacje dysków firmy Atari (z wyjątkiem [[XF551|Atari XF-551]]), są jednak zaimplementowane we wszystkich rozszerzeniach oraz stacjach innych producentów i stanowią de facto standard.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4E (N)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ PERCOM&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;12 bajtów ([[SIO#Blok_PERCOM|Blok PERCOM]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Odczytuje z urządzenia dwunastobajtowy blok danych opisujący jego bieżącą konfigurację, tj. przede wszystkim format znajdującej się w stacji dyskietki.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4F (O)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE PERCOM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zapisuje do urządzenia dwanaście bajtów opisujących żądaną konfigurację, tj. liczbę ścieżek, stron dyskietki, sektorów na ścieżkę, wielkość sektora, gęstość. Przyjąwszy komendę stacja powinna natychmiast przestawić się na żądane ustawienia, o ile jest w stanie je zrealizować.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli zadanych ustawień nie da się zrealizować, stacja w teorii powinna odrzucić przesłany blok danych zgłaszając komputerowi błąd wykonania (co skutkuje [[Kody_błędów_Atari_OS|kodem błędu]] nr 144). W praktyce wiele stacji stosuje uproszczoną procedurę przyjmując parametry najbliższe zdefiniowanym przez przesłany blok danych. Jednak to, że parametry są &amp;quot;najbliższe&amp;quot;, nie oznacza, że muszą być w ogóle bliskie: np. zażądanie formatu 360 KB od stacji [[Top Drive 1050]] spowoduje jej ustawienie się w [[DD]] (180k), bo to jest maximum, jakie stacja jest w stanie zrealizować. Komplikuje to zadanie programom formatującym, które w celu zapisania prawidłowego katalogu muszą sprawdzać, czy żądana od stacji pojemność dyskietki została rzeczywiście wybrana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dyskietkę zgodnie z zapisaną konfiguracją.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Kontroler [[KMK/JŻ]] IDE nie rozpoznaje tej komendy dla bezpieczeństwa danych na dysku (do definiowania wielkości partycji służy oddzielny program).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Komendy specjalne====&lt;br /&gt;
&lt;br /&gt;
Komendy wspomagające automatyczną instalację w systemie handlerów podłączonych urządzeń zewnętrznych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$21 (!)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND RELOCATOR&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg odpowiedzi na komendę POLL ($3F)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jest to komenda uzupełniająca do opisanego niżej POLL ($3F). Powoduje przesłanie przez urządzenie programu odpowiedzialnego za załadowanie (komendą SEND HANDLER) i relokację właściwego handlera. Wszystkie parametry transmisji dla SEND RELOCATOR przesyłane są na komendę POLL ($3F). Program relokatora - po jego załadowaniu - uruchamia się od adresu DBUFA + 6. Przejmuje on na siebie wykonanie reszty operacji, a w wypadku niepowodzenia sygnalizuje błąd przez ustawienie bitu Carry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komendę SEND RELOCATOR rozpoznaje moduł [[850|Atari 850]], a może dotyczyć też innych urządzeń, oprócz stacji dysków (gdzie kod operacyjny $21 oznacza formatowanie dyskietki).&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$26 (&amp;amp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HANDLER&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator przesłany przez SEND RELOCATOR ($21) lub wg odpowiedzi na komendę POLL BUS ($40)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wg parametrów ustawionych przez relokator (przesłany przez urządzenie lub rezydujący)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda SEND HANDLER służy do załadowania z urządzenia kodu programu obsługi (handlera) tego urządzenia. Może ona działać różnie w zależności od tego, czy transmisja została zainicjowana przez komendę POLL ($3F) czy POLL BUS ($40).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL ($3F) oznacza starszy protokół transmisji, w którym format strumienia danych przesłanych przez SEND HANDLER zależny jest od programu relokatora załadowanego wcześniej komendą SEND RELOCATOR ($21) i uruchomionego przez komputer.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Komenda POLL BUS ($40) oznacza nowszy protokół transmisji. Format strumienia danych jest ustalony z góry, a relokator rezyduje w ROM-ie systemu operacyjnego komputera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po otrzymaniu pozytywnej odpowiedzi na POLL BUS ($40) komputer rozpoczyna ładowanie kolejnych, 128-bajtowych rekordów binarnych, w liczbie do 256 (czyli pojedynczy &amp;quot;handler&amp;quot; może mieć maximum 32k). Przesyłany strumień danych musi być w [[ACX|specjalnym formacie]], który zapewnia relokowalność kodu, oraz zawiera podany explicite znacznik końca pliku - wystąpienie błędu przed napotkaniem tego znacznika powoduje przerwanie procedury z [[kody błędów|kodem błędu]] INCOMPLETE EXECUTION.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Ustawienia zmiennych DCB dla komendy SEND HANDLER wyglądają następująco:&amp;lt;/p&amp;gt;&lt;br /&gt;
* DDEVIC - kod urządzenia przesłany przez urządzenie $4F na komendę POLL BUS.&lt;br /&gt;
* DUNIT - zawsze $01&lt;br /&gt;
* DCMND - $26 - SEND HANDLER&lt;br /&gt;
* DSTATS - $40 - odczyt&lt;br /&gt;
* DTIMLO - 30 sekund&lt;br /&gt;
* DBYT - 128 bajtów&lt;br /&gt;
* DAUX1 - numer kolejny rekordu danych&lt;br /&gt;
* DAUX2 - zawsze 0&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ta, zwana też TYPE 2 POLL, służy do zainicjowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). W odpowiedzi urządzenie przesyła 12 bajtów odpowiadających kolejnym wartościom, jakie należy ustawić w bloku DCB celem załadowania kodu wykonywalnego handlera. Jest to starszy protokół transmisji zaprojektowany dla komputerów serii [[400]] i [[800]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W module [[850|Atari 850]] odpowiedzią na komendę POLL są wartości, jakie trzeba wstawić do DCB celem wykonania komendy SEND RELOCATOR ($21).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;W celu uniknięcia wielokrotnego załadowania tego samego programu obsługi urządzenie na komendę POLL ($3F) odpowiada tylko raz, potem wykonanie komendy jest zablokowane aż do wyłączenia zasilania.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$40 (@)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;POLL BUS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$4F (bus master)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4 bajty&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;W komputerach serii XL oraz XE komendę tę system operacyjny przesyła do interfejsu szeregowo-równoległego przy każdym zimnym starcie; w pewnych warunkach - ale z nieco innymi parametrami - może też zostać wykonana po zainicjowaniu systemu. Jest to odpowiednik komendy POLL ($3F), jednak protokół transmisji handlera jest zunifikowany i nie wymaga od urządzenia przesyłania relokatora (uniwersalny relokator rezyduje w ROM-ie systemu operacyjnego). Analogicznie do POLL ($3F), komenda POLL BUS jest przeznaczona do zapoczątkowania transmisji mającej na celu automatyczne ściągnięcie z urządzenia i zainstalowanie odpowiedniego dlań programu obsługi (handlera). Zasadniczym adresatem jest tu moduł [[1090]] działający jako bus master.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Istnieje kilka odmian komendy POLL BUS różniących się parametrami przesyłanymi w DAUX1 i DAUX2:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TYPE 3 POLL: DAUX1 = 0 i DAUX2 = 0.&lt;br /&gt;
* TYPE 4 POLL: zobacz niżej.&lt;br /&gt;
* RESET POLL: DAUX1 = $4F i DAUX2 = $4F (&amp;quot;OO&amp;quot;)&lt;br /&gt;
* NULL POLL: DAUX1 = $4E i DAUX2 = $4E (&amp;quot;NN&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Przy zimnym starcie na początku system wysyła RESET POLL. Komenda ta powinna odblokować rozpoznawanie komendy TYPE 3 POLL we wszystkich podłączonych urządzeniach. Na RESET POLL urządzenia, oprócz potwierdzenia wykonania, nie przesyłają żadnej odpowiedzi, a komputer jej nie oczekuje.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Następnie system wysyła komendę TYPE 3 POLL. Pozytywna odpowiedź oznacza, że urządzenie nadesłało 4 bajty, z czego dwa pierwsze to ilość pamięci potrzebna do przeprowadzenia całości transmisji (musi to być parzysta wielkość). Jeśli jest to więcej niż dostępna ilość pamięci pomiędzy MEMLO a MEMTOP, system odpowiada przez NULL POLL (podobnie jak w wypadku RESET POLL, urządzenie przesyła tylko potwierdzenie wykonania), a następnie ponownie wysyła TYPE 3 POLL. W przypadku braku pamięci byłaby to pętla nieskończona, ale pojedyncze urządzenie na komendę TYPE 3 POLL może odpowiedzieć tylko raz - pętla jest więc przerywana błędem, który wystąpi po przetestowaniu wszystkich urządzeń zarządzanych przez bus mastera. Ponowna odpowiedź na TYPE 3 POLL jest możliwa dopiero po przesłaniu urządzeniu komendy RESET POLL, inaczej TYPE 3 POLL zostanie zignorowana.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Trzeci przysłany bajt to identyfikator urządzenia (dla DDEVIC), które odpowiedziało na komendę i z którym będzie prowadzona dalsza komunikacja.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Po stwierdzeniu poprawności odpowiedzi komputer dokonuje rezerwacji pamięci nad wartością MEMLO zaokrągloną w górę do najbliższej granicy słowa i próbuje dokonać odczytu z urządzenia, które się zgłosiło, 128 bajtów pod adres $03FD, przy użyciu innej &amp;quot;nietypowej&amp;quot; komendy, a mianowicie $26 - SEND HANDLER. Po załadowaniu i zainicjowaniu handlera pętla wraca do początku i wykonuje się cyklicznie aż do wystąpienia błędu - czyli do załadowania wszystkich handlerów będących w dyspozycji bus mastera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Procedura ładowania handlera wywoływana jest po procedurze bootowania DOS-u, ale niezależnie od jej wyniku; z czego wniosek, że &amp;quot;handler&amp;quot; może spełniać funkcję zarówno dodatku do DOS-u, jak i zostać załadowany &amp;lt;b&amp;gt;zamiast&amp;lt;/b&amp;gt; DOS-u.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Tą samą drogą można już po całkowitym uruchomieniu systemu, podczas pracy, załadować handler urządzenia &amp;lt;b&amp;gt;konkretnie wskazanego&amp;lt;/b&amp;gt;. Robi to [[CIO]] przy każdorazowej próbie otwarcia pliku na urządzeniu, którego system nie zna (nie ma takiego wpisu w tablicy handlerów).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Odpytanie bus mastera na okoliczność dysponowania takowym handlerem odbywa się za pomocą komendy TYPE 4 POLL. W DAUX1 ma się znajdować identyfikator urządzenia CIO, dla którego to urządzenia potrzebujemy handlera (np. dla magnetofonu $43, czyli &amp;quot;C&amp;quot;), w DAUX2 natomiast przesyła się numer wywoływanego urządzenia (np. dla &amp;quot;C1:&amp;quot; będzie to $01).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Pozostałe komendy====&lt;br /&gt;
&lt;br /&gt;
Komendy zdefiniowane przez Atari, na których temat brak bliższych danych.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 (&amp;amp;nbsp;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda wymieniana przez niektóre źródła. Szczegóły nieznane.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG1&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050|Atari 1050]]. Wymaga przesłania 128-bajtowego bloku danych, w którym dwa pierwsze bajty decydują o tym, co stacja będzie robić (DAUX1/2 są ignorowane):&amp;lt;/p&amp;gt;&lt;br /&gt;
* $02 - test przejścia głowicy między ścieżkami&lt;br /&gt;
* $03 - przesuw głowicy za pomocą silnika krokowego o jeden krok w przód lub w tył; o kierunku decyduje następny bajt, wartość dodatnia (np. $01) powoduje przesuw w przód - czyli w kierunku ścieżki 39 - a wartość ujemna (np. $FF) przesuw wstecz, czyli w kierunku ścieżki 0. &amp;quot;Krok&amp;quot; silnika krokowego w tym wypadku to połowa odległości między ścieżkami, żeby więc tą komendą przesunąć głowicę na sąsiednią ścieżkę, trzeba zrobić to dwa razy. Uwaga: możliwe jest cofnięcie głowicy wstecz od ścieżki 0 (na tzw. ścieżkę -1).&lt;br /&gt;
* $04 - test zapisu i odczytu dyskietki; formatuje znajdującą się w stacji dyskietkę w średniej gęstości.&lt;br /&gt;
* $05 - przesuw główicy do ścieżki o numerze podanym w następnym bajcie. &lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;UWAGA: kod operacyjny ($23) jest taki sam, jak kod komendy formatowania w stacji [[XF551|Atari XF-551]] oraz [[LDW Super 2000]] i [[CA-2001]] z załadowanym [[Synchromesh]]em!&#039;&#039;&#039;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DIAG2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda diagnostyczna stacji [[1050]], służy do pomiaru prędkości obrotowej dyskietki. W zależności od wartości dwóch pierwszych bajtów przesłanego bloku danych ($00, $00 lub $00, $01) stacja przesyła czas jednego obrotu dyskietki lub wartość prędkości obrotowej w obrotach na minutę.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ SPIN&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;$31&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;R (?)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td rowspan=3&amp;gt;Komendy te występują jako komendy dyskowe na liście rozkazów SIO w dokumentacji sporządzonej przez Atari. Nie znam jednak stacji, która by na nie reagowała. Mogą to być komendy stacji [[810]], jakieś komendy diagnostyczne jej prototypu, albo komendy planowane, lecz nie zaimplementowane. Dostępna dokumentacja nie zawiera ich opisu.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$55 (U)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MOTOR ON&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$56 (V)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VERIFY SECTOR&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Stacja odczytuje sektor wskazany przez DAUX1/2 i zwraca komputerowi informację, czy da się on odczytać bez błędów. Dane zawarte w sektorze nie są transmitowane do komputera. Komenda ta występuje w dokumentacji SIO sporządzonej przez Atari, ale żadna ze stacji marki Atari jej nie rozpoznaje.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Komendy specyficzne dla poszczególnych urządzeń ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Stacje dysków Atari 1450XLD =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$01 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET LARGE MODE&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;large mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako logiczną całość liczącą 2080 sektorów po 128 bajtów (260k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$02 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SET SMALL MODE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca tzw. &#039;&#039;small mode&#039;&#039;. W tym trybie stacja &amp;quot;widzi&amp;quot; dyskietkę dwustronną jako dwie oddzielne dyskietki liczące po 1040 sektorów po 128 bajtów (= 2x130k).&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC IN&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda zapisująca do stacji wskazany bufor wypełniony bliżej nieokreślonymi danymi diagnostycznymi.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$24 ($)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DRIVE DIAGNOSTIC OUT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda odczytująca bliżej niesprecyzowane dane diagnostyczne do wskazanego bufora.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B1 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$B2 (-)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda wewnętrzna sterownika stacji, nieopisana w dokumentacji.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Atari 850 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONTROL&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 3&amp;gt;$50&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda aktywująca linie DTR, RTS i XMT (TX) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 34,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda ustawiająca różne parametry pracy (m.in. szybkość transmisji) wskazanego portu RS-232 interfejsu [[850|Atari 850]]. Odpowiada komendzie [[CIO]] XIO 36,#i,x,y,&amp;quot;Rn:&amp;quot;, przy czym parametry &#039;&#039;x&#039;&#039; i &#039;&#039;y&#039;&#039; wysyłane są odpowiednio jako DAUX1 i DAUX2. Wykonanie komendy nie pociąga za sobą transmisji danych.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;STREAM&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9 bajtów&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda uruchamia tryb równoległego wejścia/wyjścia (Concurrent I/O). Interfejs [[850|Atari 850]] w odpowiedzi zwraca następującą sekwencję liczb: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78. Handler urządzenia &amp;quot;R:&amp;quot; ustawia według niej [[Rejestry_POKEY-a|rejestry układu POKEY]], tj. kolejno AUDF,AUDC 1-4 oraz AUDCTL.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== ATR 8000 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$47 (G)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GO TO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$5A ([[ATR 8000]])&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda pozwala na wywoływanie funkcji zdefiniowanych w ROM-ie modułu [[ATR 8000]] (q.v.).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Indus GT/LDW Super 2000/CA-2001 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$23 (#)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FORMAT SKEWED&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Równa wielkości sektora danych na dysku&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Komenda formatowania z szybkim [[przeplot]]em w stacjach [[Indus GT]], [[LDW Super 2000]] oraz [[CA-2001]] z załadowanym [[Synchromesh]]em.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Kod operacyjny jest taki sam, jak komendy formatowania w gęstości [[DSDD]] dla stacji [[XF551]] oraz jednej z komend diagnostycznych w [[1050]].&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DOWNLOAD/EXECUTE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Różna&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda zaimplementowana w stacjach [[Indus GT]], [[LDW Super 2000]] i [[CA-2001]], pozwalająca na przesyłanie do stacji programów użytkownika i uruchamianie ich. Szczegóły: patrz [[Programowanie stacji LDW Super 2000 i CA-2001]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Happy Warp =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$48 (H)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;HAPPY CONFIG&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji z rozszerzeniem [[Happy Warp]]. Szczegóły: patrz [[Happy_Warp#Konfiguracja|Happy Warp - Konfiguracja]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== KMK/JŻ IDE =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$EC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;IDENTIFY DRIVE&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;512 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W [[KMK/JŻ IDE]] komenda powoduje odczytanie bloku identyfikacyjnego napędu IDE, na którym założona jest wskazana partycja, i wpisanie go do bufora wskazanego przez DBUFA. Kolejność bajtów w tym bloku jest odwrotna od normalnej, tzn. wszystkie pary bajtów należy zamienić miejscami przed odczytaniem danych z tego bufora - dotyczy to również informacji tekstowej.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Multi I/O =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;MEDIA CAPACITY INFO&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nowe wersje firmware [[Multi I/O]] (od v. 1.4 wzwyż) w odpowiedzi na tę komendę zwracają informację o pojemności wskazanego dysku SCSI w [http://en.wikipedia.org/wiki/SCSI_Read_Capacity_Command tym formacie].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== Speedy 1050 =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$20 ( )&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;AUTOMATIC FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 11&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Speedy 1050]] w odpowiedni na tę komendę formatuje dyskietkę w zadanej gęstości (DAUX1 = $00 pojedyncza, $20 podwójna, $80 średnia) i, o ile konfiguracja stacji tego nie zabrania, zapisuje bootsektory i [[VTOC]] zgodne z [[DOS 2.0]] lub (w średniej gęstości) [[DOS 2.5]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$41 (A)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;REGISTER COMMAND&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje zarejestrowanie komendy uzytkownika. Dane powinny zawierać kolejno:&lt;br /&gt;
* kod komendy&lt;br /&gt;
* młodszy bajt adresu w pamięci stacji, gdzie znajduje się podprogram obsługi&lt;br /&gt;
* starszy bajt tego adresu&lt;br /&gt;
&amp;lt;p&amp;gt;Jeśli dana komenda jest już jakoś przypisana, to przypisanie zostanie zmienione. Gdy adres ma wartość $0000, komenda zostanie wykasowana z pamięci stacji.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$44 (D)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DISPLAY&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja wyświetlacza stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: wyświetlanie kodów błędów na wyświetlaczu stacji&lt;br /&gt;
* bit 6: wyświetlanie numeru ścieżki w kodzie szesnastkowym&lt;br /&gt;
* bit 5: formatowanie bez weryfikacji&lt;br /&gt;
* bit 4: zablokowanie zapisu struktury logicznej dyskietki po komendzie $20&lt;br /&gt;
* bit 3: niewyłączanie silnika po komendzie $51&lt;br /&gt;
* bit 2: nieużywany&lt;br /&gt;
* bit 1: nieużywany&lt;br /&gt;
* bit 0: sygnał dźwiękowy w wypadku błędu&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4B (K)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CONFIGURE DRIVE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Konfiguracja stacji [[Speedy 1050]]. DAUX2 powinien być wyzerowany, bity DAUX1 mają znaczenie jak następuje (gdy = 1):&lt;br /&gt;
* bit 7: zapis i odczyt dyskietki bez buforowania (0 po zmianie dyskietki)&lt;br /&gt;
* bit 6: zapis i odczyt ścieżki bez buforowania (0 po zmianie ścieżki)&lt;br /&gt;
* bit 5: nieużywany&lt;br /&gt;
* bit 4: nieużywany&lt;br /&gt;
* bit 3: wyłączenie buforowania ścieżek&lt;br /&gt;
* bit 2: wyłączenie weryfikacji dla komendy $57 (W)&lt;br /&gt;
* bit 1: zapis sektora z pominięciem buforowania&lt;br /&gt;
* bit 0: odczyt sektora z pominięciem buforowania&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4C (L)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP, NO ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] wywołanie wewnętrznej procedury ROM-u stacji spod adresu przekazanego w DAUX1/2 (młodszy/starszy). Potwierdzenie wykonania rozkazu musi przesłać wywoływany podprogram.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$4D (M)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;JUMP WITH ACKNOWLEDGE&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] to samo, to $4C, ale potwierdzenie rozkazu jest przesyłane automatycznie.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$51 (Q)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;FLUSH&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda ta powoduje natychmiastowy zapis zawartości bufora zapisu na dyskietkę i zatrzymanie silnika (normalnie stacja czeka z tym ok. 2 sekund po transmisji sektora).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$60 (`)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;WRITE TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] zapis na dyskietkę całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$62 (b)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ TRACK&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Liczba sektorów na ścieżce razy liczba bajtów w sektorze&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] odczyt z dyskietki całej ścieżki od numeru sektora wskazanego bajtami DAUX1/2.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$68 (h)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SIO LEN&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2 bajty&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie dwóch bajtów określających wielkość procedury SIO, którą mozna od stacji uzyskać komendą $69. &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$69 (i)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND SIO&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wynik komendy $68&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[Speedy 1050]] komenda powoduje przesłanie programu szybkiej transmisji SIO. Bajty DBYT powinny być ustawione na wartość zwróconą przez komendę $68. DAUX1/2 to adres w pamięci Atari, gdzie procedura ma zostać załadowana (stacja dokonuje relokacji kodu pod ten adres przed wysłaniem go do komputera).&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== TOMS Multi Drive =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$49 (I)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;INDEX FORMATTING&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Zależnie od wybranej gęstości&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;W stacjach [[TOMS Multi Drive]] komenda ta działa tak samo, jak zwykłe formatowanie ($21), z tym wyjątkiem, że do oznaczenia początku ścieżki stacja używa otworu indeksowego (normalnie w stacjach Atari ścieżka zaczyna się tam, gdzie akurat wypadnie). Służy to głównie do zabezpieczania programów przez tzw. synchroniczne sektory. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== US Doubler =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$3F (?)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SEND HIGH SPEED INDEX&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Stacje kompatybilne z [[US Doubler]] w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącą do ustawienia częstotliwości nośnej dla przyspieszonej transmisji.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$66 (f)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;CUSTOM FORMAT&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Komenda formatowania z zadanym przeplotem zaimplementowana w stacjach [[US Doubler]]. Wysyłane 128 bajtów określa:&lt;br /&gt;
* w pierwszych 12 bajtach: zadaną gęstość, tak jak w komendzie WRITE PERCOM&lt;br /&gt;
* następne 18 lub 26 bajtów to fizyczne numery sektorów na ścieżce w zadanej kolejności, licząc od 1.&lt;br /&gt;
&amp;lt;p&amp;gt;Przykładowe przeploty podaje hasło [[Przeplot]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan = 6&amp;gt;&lt;br /&gt;
===== [[XFD601|XFD601/602]] =====&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Kod&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nazwa&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Urządzenie&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;R/W&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Ilość danych&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Opis&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$42 (B)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GET COMMAND BUFFER&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Zwraca historię ostatnich 32 wywołań na łączu szeregowym. Wszystkich wywołań - nie tylko do stacji. Każdy wpis zawiera 4 bajty - dokładnie te same, jakie są wysyłane do urządzenia zewnetrznego przez komputer, czyli: [[SIO#DCB|DDEVIC]], [[SIO#DCB|DCMND]], [[SIO#DCB|DAUX1]], [[SIO#DCB|DAUX2]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$54 (T)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;READ ADDRESS&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6 bajtów&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Po odebraniu tego rozkazu stacja zwraca tzw. adres pierwszego napotkanego sektora, w formie 6 bajtów: numer scieżki, numer strony, numer sektora, rozmiar sektora, 2 bajty CRC.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit|SIO, Lista komend według funkcji]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Trub&amp;diff=34895</id>
		<title>Trub</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Trub&amp;diff=34895"/>
		<updated>2015-06-28T19:43:40Z</updated>

		<summary type="html">&lt;p&gt;Trub: przyrost naturalny&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{grafr|Trub2.jpg}}&lt;br /&gt;
Członek grupy [[DLT (grupa)|DLT]]. Atari 130XE posiada od 1987 roku - cały czas ten sam egzemplarz, choć w międzyczasie zaliczyło uderzenie kolumną głośnikową oraz zainstalowano w nim sporo rozszerzeń. Na przełomie lat 80-tych i 90-tych współorganizował jedną z giełd komputerowych w Rzeszowie, skąd pochodzi i gdzie mieszka. &lt;br /&gt;
Na [[scena|scenie]] bardziej aktywny dopiero w XXI wieku.&lt;br /&gt;
&lt;br /&gt;
Znany jest przede wszystkim z programów systemowych i użytkowych na Atari.&lt;br /&gt;
Do największych osiągnięć zaliczyć można:&lt;br /&gt;
* udział w unowocześnieniu [[SpartaDOS X]]&lt;br /&gt;
* &amp;quot;odkrycie&amp;quot; i uruchomienie [[Indus CP/M]].&lt;br /&gt;
Uznanie użytkowników zdobyły również narzędzia napisane dla interfejsu [[SIO2IDE]].&lt;br /&gt;
&lt;br /&gt;
Zawodowo zajmuje się tzw. nauką (doktorat z informatyki). W domu żona i trzy trubki.&lt;br /&gt;
&lt;br /&gt;
== Odnośniki zewnętrzne ==&lt;br /&gt;
* [http://trub.atari8.info truba strona o Atari]&lt;br /&gt;
* [http://sdx.atari8.info SDX Upgrade Project]&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Ludzie]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Top_Drive_1050&amp;diff=34894</id>
		<title>Top Drive 1050</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Top_Drive_1050&amp;diff=34894"/>
		<updated>2015-06-28T19:15:38Z</updated>

		<summary type="html">&lt;p&gt;Trub: oryginał, autor, Centronics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Proste rozszerzenie do stacji [[1050]], umożliwiające odczyt i zapis dyskietek sformatowanych w gęstości [[DD]], a także kopiowanie dysków zabezpieczonych [[Bad Sector|Bad Sectorami]].&lt;br /&gt;
&lt;br /&gt;
Oryginalne rozszerzenie zostało opracowane w Niemczech przez Bernharda Engla jako &amp;quot;1050 Turbo&amp;quot; (kolejne wersje w latach 1985,86,88). Oprócz usprawnionej obsługi dyskietek, oryginalna wersja posiadała możliwość obsługi drukarki w standardzie Centronics. Na jego podstawie powstawały &amp;quot;klony&amp;quot;, w tym także sprzedawana w Polsce wersja firmy [[P.Z. Karen]], których ROM różnił się od oryginalnego w zasadzie wyłącznie napisami.&lt;br /&gt;
&lt;br /&gt;
Opis wykonania modyfikacji oraz więcej informacji na temat rozszerzenia można znaleźć na stronie [[Jerzy Sobola|Jurka Soboli]]: [http://dereatari.republika.pl/serw.htm http://dereatari.republika.pl/serw.htm]&lt;br /&gt;
&lt;br /&gt;
== Protokół transmisji Top Drive / TOMS Turbo ==&lt;br /&gt;
&lt;br /&gt;
Stacje z rozszerzeniem [[Top Drive 1050]], [[TOMS Turbo Drive]] oraz [[TOMS Multi Drive]] mogą pracować z prędkością 68,2 kbps. Dla zasygnalizowania stacji, że komputer żąda pracy w turbo, przy prędkości 68,2 kbps używany jest inny protokół transmisji będący zmodyfikowaną wersją standardowego. Protokół ten jest odmienny niż w wypadku stacji [[XF551|XF-551]].&lt;br /&gt;
&lt;br /&gt;
Blok komendy (Command Frame) dla stacji, tak samo jak w standardzie, wysyłany jest z prędkością 19200 bps. Czwarty bajt tego bloku, niosący wartość bajtu DAUX2 bloku DCB, jest zwiększony o 128 (ORA #$80). Po wysłaniu komendy komputer - &#039;&#039;&#039;nie czekając na odpowiedź&#039;&#039;&#039; - przeprogramowuje układ [[POKEY]] na 68,2 kbps (wartość licznika - $06) założywszy w ciemno, że stacja ze swej strony również przełącza się na szybką transmisję. Odbiór ewentualnej negatywnej odpowiedzi oczywiście nie jest w takim układzie możliwy.&lt;br /&gt;
&lt;br /&gt;
Dalsza wymiana danych wywołana przez tę jedną komendę odbywa się w przyspieszonej transmisji. Po wykonaniu komendy następuje powrót do prędkości standardowej.&lt;br /&gt;
&lt;br /&gt;
Ogólnie schemat wymiany danych przy odczycie jest następujący:&lt;br /&gt;
&lt;br /&gt;
* prędkość 19200 bps&lt;br /&gt;
* komputer --&amp;gt; komenda 4 B + CRC --&amp;gt; urządzenie&lt;br /&gt;
* przełączenie na 68,2 kbps&lt;br /&gt;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* wykonanie&lt;br /&gt;
* komputer &amp;lt;-- potwierdzenie &#039;C&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* komputer &amp;lt;-- blok danych + CRC &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 19200 bps&lt;br /&gt;
* koniec.&lt;br /&gt;
&lt;br /&gt;
Natomiast zapis wygląda tak:&lt;br /&gt;
&lt;br /&gt;
* prędkość 19200 bps&lt;br /&gt;
* komputer --&amp;gt; komenda 4 B + CRC --&amp;gt; urządzenie&lt;br /&gt;
* przełączenie na 68,2 kbps&lt;br /&gt;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* komputer --&amp;gt; blok danych + CRC --&amp;gt; urządzenie&lt;br /&gt;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* wykonanie&lt;br /&gt;
* komputer &amp;lt;-- potwierdzenie &#039;C&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 19200 bps&lt;br /&gt;
* koniec&lt;br /&gt;
&lt;br /&gt;
Jest to zdecydowanie najpodlejsze turbo z czwórki głównych [[Systemy Turbo|systemów turbo]] do stacji dysków; Top Drive nie dość, że ma wszystkie wady protokołu [[XF551|XF-551]], to jeszcze dorzuca do nich jedną własną (którą jest wspomniana wyżej niemożność odrzucenia przez stację w cywilizowany sposób żądanego przez komputer trybu pracy), nie mając przy tym żadnych równoważących to zalet (jeden bajt więcej przesłany w szybkiej transmisji zwiększa prędkość wymiany danych o niecałe 8 promili).&lt;br /&gt;
&lt;br /&gt;
== Zobacz też ==&lt;br /&gt;
&lt;br /&gt;
* [[SIO]]&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Peryferia 8-bit]]&lt;br /&gt;
[[Kategoria:Rozszerzenia]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=PBI&amp;diff=33771</id>
		<title>PBI</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=PBI&amp;diff=33771"/>
		<updated>2013-11-25T16:25:58Z</updated>

		<summary type="html">&lt;p&gt;Trub: linki akt.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{grafr|pbi.gif}}&lt;br /&gt;
&lt;br /&gt;
Parallel Bus Interface, złącze używane w [[600XL]] oraz [[800XL]]. Złącze ma 50 linii i służy do podłączania urządzeń zewnętrznych (tzw. [[nowe urządzenia|nowych urządzeń]]) jako forma portu równoległego. Autorem koncepcji PBI jest Earl Rice. Komputery serii [[XE]] są wyposażone w nieco odmienne (inny kształt, nieco inny zestaw sygnałów) złącze tzw. [[ECI|CART/ECI]] będące rozwinięciem PBI.&lt;br /&gt;
&lt;br /&gt;
== Schemat wyprowadzeń ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#ffdead&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;25&amp;quot; | &#039;&#039;&#039;Parallel Bus Interface (PBI)&#039;&#039;&#039; - &amp;lt;small&amp;gt;&#039;&#039;looking at the back&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 1 || 3 || 5 || 7 || 9 || 11 || 13 || 15 || 17 || 19 || 21 || 23 || 25 || 27 || 29 || 31 || 33 || 35 || 37 || 39 || 41 || 43 || 45 || 47 || 49&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 22 || 24 || 26 || 28 || 30 || 32 || 34 || 36 || 38 || 40 || 42 || 44 || 46 || 48 || 50&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;cellpadding=2; font-size: 90%&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#ffdead&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;25&amp;quot; | &#039;&#039;&#039;Parallel Bus Interface (PBI)&#039;&#039;&#039; - &#039;&#039;Pinout&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; | &#039;&#039;&#039;Pin&#039;&#039;&#039; || bgcolor=&amp;quot;#efefef&amp;quot; | &#039;&#039;&#039;TOP&#039;&#039;&#039; || &#039;&#039;&#039;Pin&#039;&#039;&#039; || &#039;&#039;&#039;BOTTOM&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 1 || bgcolor=&amp;quot;#efefef&amp;quot; | GND Ground&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2 || External select&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 3 || bgcolor=&amp;quot;#efefef&amp;quot; | A0 Address output&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4 || A1&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 5 || bgcolor=&amp;quot;#efefef&amp;quot; | A2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 6 || A3&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 7 || bgcolor=&amp;quot;#efefef&amp;quot; | A4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 8 || A5&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 9 || bgcolor=&amp;quot;#efefef&amp;quot; | A6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 10 || GND&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 11 || bgcolor=&amp;quot;#efefef&amp;quot; | A7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 12 || A8&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 13 || bgcolor=&amp;quot;#efefef&amp;quot; | A9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 14 || A10&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 15 || bgcolor=&amp;quot;#efefef&amp;quot; | A11&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 16 || A12&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 17 || bgcolor=&amp;quot;#efefef&amp;quot; | A13&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 18 || A14&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 19 || bgcolor=&amp;quot;#efefef&amp;quot; | GND&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 20 || A15&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 21 || bgcolor=&amp;quot;#efefef&amp;quot; | D0 Data (bidirectional)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 22 || D1&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 23 || bgcolor=&amp;quot;#efefef&amp;quot; | D2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 24 || D3&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 25 || bgcolor=&amp;quot;#efefef&amp;quot; | D4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 26 || D5&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 27 || bgcolor=&amp;quot;#efefef&amp;quot; | D6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 28 || D7&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 29 || bgcolor=&amp;quot;#efefef&amp;quot; | GND&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 30 || GND&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 31 || bgcolor=&amp;quot;#efefef&amp;quot; | Phase 2 clock output&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 32 || GND&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 33 || bgcolor=&amp;quot;#efefef&amp;quot; | NC Reserved&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 34 || Reset output&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 35 || bgcolor=&amp;quot;#efefef&amp;quot; | (IRQ) Interrupt request&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 36 || Ready input&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 37 || bgcolor=&amp;quot;#efefef&amp;quot; | NC&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 38 || External decoder output&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 39 || bgcolor=&amp;quot;#efefef&amp;quot; | NC&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 40 || Refresh output&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 41 || bgcolor=&amp;quot;#efefef&amp;quot; | Column address output&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 42 || GND&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 43 || bgcolor=&amp;quot;#efefef&amp;quot; | MPD Math pack disable input&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 44 || Row address strobe&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 45 || bgcolor=&amp;quot;#efefef&amp;quot; | GND&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 46 || Latch read/write out&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 47 || bgcolor=&amp;quot;#efefef&amp;quot; | NC (+5V on 600XL only)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 48 || NC (+5V on 600XL only, used for 1064)&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#efefef&amp;quot; align=&amp;quot;center&amp;quot; | 49 || bgcolor=&amp;quot;#efefef&amp;quot; | Audio input&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 50 || GND&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Przykłady urządzeń ==&lt;br /&gt;
* [[1064]]&lt;br /&gt;
* [[1090|1090 XL Expansion System]]&lt;br /&gt;
* [[BlackBox]]&lt;br /&gt;
* [[BTL Hard Disk]]&lt;br /&gt;
* [[Multi I/O]]&lt;br /&gt;
* [[SupraDrive]]&lt;br /&gt;
&lt;br /&gt;
== Zobacz także ==&lt;br /&gt;
* [[Rejestry PBI]]&lt;br /&gt;
* [[Gniazdo ECI]]&lt;br /&gt;
* [[GSPBI]]&lt;br /&gt;
&lt;br /&gt;
== Odnośniki zewnętrzne ==&lt;br /&gt;
&lt;br /&gt;
=== Seria artykułów autorstwa Earla Rice ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.atarimagazines.com/v3n9/Parallel_Bus.html Antic, January 1985, 45-47, 75] (generic device handler)&lt;br /&gt;
* [http://www.atarimagazines.com/v3n10/parallelbus.html Antic, February 1985, 68-71] (hardware interface)&lt;br /&gt;
* [http://www.atarimagazines.com/v3n11/parallel_bus.html Antic, March 1985, 69-72, 76] (design of serial I/O board) &lt;br /&gt;
* [http://www.atarimagazines.com/v3n12/toolbox.html Antic, April 1985, 49-52, 78] (ditto, plus software driver) &lt;br /&gt;
&lt;br /&gt;
=== Inne ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.myatari.co.uk/issues/may2001/pbi.htm MyAtari.net - The Atari XL Parallel Bus Interface Part I]&lt;br /&gt;
* [http://www.myatari.co.uk/issues/jul2001/xl_pbi.htm MyAtari.net - The Atari XL Parallel Bus Interface Part 2]&lt;br /&gt;
* [http://www.myatari.co.uk/issues/aug2001/pbi_p3.htm MyAtari.net - The Atari XL Parallel Bus Interface Part 3]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Parallel_Bus_Interface Parallel Bus Interface] w Wikpiedii&lt;br /&gt;
&lt;br /&gt;
=== Stabilizacja interfejsu PBI ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.mathyvannisselroy.nl/stabiliz.txt STABILIZING XL/XE COMPUTERS WITH PBI DEVICES] ([[Bob Puff]])&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Atari 8-bit]]&lt;br /&gt;
[[Kategoria:Schematy złącz]]&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Axlon&amp;diff=33659</id>
		<title>Axlon</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Axlon&amp;diff=33659"/>
		<updated>2013-10-19T16:55:18Z</updated>

		<summary type="html">&lt;p&gt;Trub: lit.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rozszerzenie pamięci przeznaczone dla komputerów serii [[400/800]]. Podobnie jak w [[130XE]] rozszerzona pamięć podzielona na banki po 16 KB znajduje się w obszarze $4000-$7FFF. Inaczej niż w 130XE nie ma możliwości oddzielnego adresowania dodatkowej pamięci przez [[6502C|CPU]] i [[ANTIC (układ)|ANTIC]].&lt;br /&gt;
&lt;br /&gt;
Ze względu na inne wykorzystanie drugiego portu układu [[PIA]] (w 400/800 jest on podłączony do dwóch z czterech gniazd joysticków), rejestr sterujący rozszerzeniem umieszczony jest pod adresem $CFFF. Rejestr ten jest tylko do zapisu (w rzeczywistości, ze względu na niepełne dekodowanie, ten rejestr zajmuje obszar $CFC0-$CFFF oraz $0FC0-$0FFF).&lt;br /&gt;
&lt;br /&gt;
Wartość $00 wstawiona do rejestru Axlon powoduje podłączenie pamięci podstawowej, każda inna - jednego z banków pamięci dodatkowej. To pozwala na instalację w komputerze do 4 MB pamięci dodatkowej (255 banków po 16k - 4080 KB). &lt;br /&gt;
&lt;br /&gt;
Oryginalne rozszerzenie Axlon zawierało 128 KB dodatkowej pamięci. Inni producenci ([[Magna Systems]]) oferowali działające według standardu Axlon rozszerzenia o 256, 512 lub 1 MB RAM.&lt;br /&gt;
&lt;br /&gt;
== Axlon na XL/XE ==&lt;br /&gt;
&lt;br /&gt;
W 2012 roku [[Simius]] zbudował prototypowe rozszerzenie pamięci [[SIMMius 4 MB]] pozwalające na użycie trybu Axlon również na XL/XE. Rejestr przełączający znajduje się w pamięci ROM (tj. działa, gdy bit 0 rejestru PORTB jest ustawiony) wyłącznie pod adresem $CFFF i jest tylko do zapisu.&lt;br /&gt;
&lt;br /&gt;
== Oprogramowanie ==&lt;br /&gt;
&lt;br /&gt;
Rozszerzenie Axlon wykrywa i wykorzystuje [[SpartaDOS X]], od wersji 4.46 również na XL/XE: test na obecność rozszerzenia jest przeprowadzany, jeśli test na obecność &amp;quot;zwykłego&amp;quot; rozszerzenia pamięci (typu [[Rambo XL]] lub [[Compy Shop (rozszerzenie RAM)|Compy Shop]]) da negatywny wynik.&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Rozszerzenia RAM Atari 8-bit]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Podstawowe_procedury_systemu_operacyjnego&amp;diff=33573</id>
		<title>Podstawowe procedury systemu operacyjnego</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Podstawowe_procedury_systemu_operacyjnego&amp;diff=33573"/>
		<updated>2013-10-03T17:08:30Z</updated>

		<summary type="html">&lt;p&gt;Trub: Błędy w wersji elektronicznej&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&amp;quot;Mapa pamięci Atari XL/XE: Podstawowe procedury systemu operacyjnego&amp;quot;&#039;&#039;&#039; to książka [[Wojciech Zientara|Wojciecha Zientary]] wydana w 1988 roku przez [[SOETO]].&lt;br /&gt;
&lt;br /&gt;
Jest to kompletny listing procedur inicjujących [[XL OS]]-u, podsystemu przerwań oraz [[pakiet matematyczny|pakietu artymetyki zmiennoprzecinkowej]] wraz z komentarzem. Brak informacji o nakładzie (prawdopodobnie 5050 egzemplarzy). Format A-5, 114 stron. Pierwotna cena 920 zł. (od 1,5 do dwóch złotych obecnych).&lt;br /&gt;
&lt;br /&gt;
Wersja elektroniczna dostepna w [http://tajemnice.atari8.info/ Elektronicznym Archiwum Tajemnic Atari] (w dziale: Książki)&lt;br /&gt;
&lt;br /&gt;
==Errata==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border = 1 cellpadding = 5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Strona&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Wiersz&amp;lt;br&amp;gt;od góry&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Wiersz&amp;lt;br&amp;gt;od dołu&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Jest&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Powinno być&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;8&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;0420     JSR SIOINT&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;0420     JSR SIOINIT&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;22&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;28&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;0220     CPX #$04&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;0220     CPY #$04&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;48&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;0190     BEQ DCL&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;0190     BEQ NOT0&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;56&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&#039;&#039;brak pierwszych dwóch&amp;lt;br&amp;gt;rozkazów procedury&#039;&#039;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
0251     TYA&lt;br /&gt;
0252     PHA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;79&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;23&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
0290     CPX #$05&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
0290     CPY #$05&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;84&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;16&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
0600     BCS RR&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
0600     BCS ADJ&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;86&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;10&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
0150 EVSGN = $DCE0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
0150 MVARG = $DCE0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;86&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;21&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
0400     JSR EVSGN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
0400     JSR MVARG&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;87&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;22&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
0820     JSR EVSGN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
0820     JSR MVARG&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;92&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;13&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
0220 FRE =   $E6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
0460 FR2 =   $E6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;92&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;19&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
0460     LDX #FRE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
0460     LDX #FR2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;92&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
0560     LDX #FRE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
0560     LDX #FR2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;?*&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
1050 LOOP LDA #$FF&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
1050 LOOP1 LDA #$FF&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;?*&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
2350     LDA CARTBOOT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
2350     LDA CARTOPT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 * - błąd występuje w wersji elektronicznej (w p.2.1.2, &amp;quot;Przebieg procedury RESET&amp;quot;), w oryginalnej książce zapis jest poprawny&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Atari 8-bit]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=SN-360&amp;diff=33258</id>
		<title>SN-360</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=SN-360&amp;diff=33258"/>
		<updated>2013-05-18T12:49:50Z</updated>

		<summary type="html">&lt;p&gt;Trub: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ImgFrm|http://atariki.krap.pl/images/0/06/Sn360-1-small.JPG|http://atariki.krap.pl/images/1/14/Sn360-1.jpg|Stacja SN 360}}&lt;br /&gt;
==Opis==&lt;br /&gt;
Polska stacja dysków 5.25&amp;quot; zaprojektowana przez Sławomira Nienałtowskiego, autora m.in. [[Atari Super Turbo|Atari Super Turbo (AST)]]. Sprzedawana przez firmę Atari Studio (późniejszy [[Mirage]]). Obsługuje tryby gęstości [[SD]], [[ED]], [[DD]], [[DD|DSDD]]. Do stacji dołączony był zestaw programów o nazwie &amp;quot;SN-Converter&amp;quot; służący do przenoszenia programów z/do PC. W tym celu dyskietka formatowana była na PC z nietypowymi dla tej platformy 256-bajtowymi sektorami. &lt;br /&gt;
&lt;br /&gt;
Do stacji można podłączyć napęd 3,5&amp;quot; od Amigi/ST lub PC i uzyskać pojemność 720k (wymagany specjalny firmware). &lt;br /&gt;
&lt;br /&gt;
==Konstrukcja==&lt;br /&gt;
&lt;br /&gt;
* mikroprocesor: 80C51 &lt;br /&gt;
* kontroler: WD 2797B&lt;br /&gt;
* [[ROM]]: 8 KB (EPROM z firmware stacji)&lt;br /&gt;
* [[RAM]] 8 KB &lt;br /&gt;
* prędkość obrotowa: 300 obr./min.&lt;br /&gt;
&lt;br /&gt;
==Cechy użytkowe==&lt;br /&gt;
&lt;br /&gt;
* maksymalny transfer oryginalnej stacji - 19200 bps (57600 bps z firmware opracowanym przez [[Mikey]]a)&lt;br /&gt;
* brak przelotowego gniazda SIO&lt;br /&gt;
* możliwość ustawienia ID tylko w zakresie D1-D2.&lt;br /&gt;
&lt;br /&gt;
==Benchmark==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellpadding=3 cellspacing=3&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;DOS II+/D&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td width=&amp;quot;10&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;SpartaDOS X&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td width=&amp;quot;10&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
Standard:&lt;br /&gt;
&lt;br /&gt;
* DOS zapis: 1191.25 B/s&lt;br /&gt;
* DOS odczyt: 1401.21 B/s&lt;br /&gt;
* DOS średnia: 1296.23 B/s&lt;br /&gt;
&lt;br /&gt;
Turbo:&lt;br /&gt;
&lt;br /&gt;
* DOS zapis: 2540.92 B/s&lt;br /&gt;
* DOS odczyt: 2622.49 B/s&lt;br /&gt;
* DOS średnia: 2581.70 B/s&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td width=&amp;quot;10&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
Standard (DSDD):&lt;br /&gt;
&lt;br /&gt;
* DOS zapis: 1389.89 B/s&lt;br /&gt;
* DOS odczyt: 1400.61 B/s&lt;br /&gt;
* DOS średnia: 1395.25 B/s&lt;br /&gt;
&lt;br /&gt;
Standard (SSDD):&lt;br /&gt;
&lt;br /&gt;
* DOS zapis: 1410.28 B/s&lt;br /&gt;
* DOS odczyt: 1416.40 B/s&lt;br /&gt;
* DOS średnia: 1413.34 B/s&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td width=&amp;quot;10&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
Turbo (DSDD):&lt;br /&gt;
&lt;br /&gt;
* DOS zapis: 3103.16 B/s&lt;br /&gt;
* DOS odczyt: 3094.34 B/s&lt;br /&gt;
* DOS średnia: 3098.75 B/s&lt;br /&gt;
&lt;br /&gt;
Turbo (SSDD):&lt;br /&gt;
&lt;br /&gt;
* DOS zapis: 3163.24 B/s&lt;br /&gt;
* DOS odczyt: 3141.95 B/s&lt;br /&gt;
* DOS średnia: 3152.59 B/s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pliki==&lt;br /&gt;
&lt;br /&gt;
* [[Media:Sn360.bin.gz| Zawartość EPROM-u stacji]]&lt;br /&gt;
* [[Media:Sn360utilz.atr| Obraz oryginalnej dyskietki dołączanej do stacji przez producenta]]&lt;br /&gt;
* [[Media:INSTRUKCJA_OBSŁUGI_SN-360.pdf| Instrukcja]]&lt;br /&gt;
&lt;br /&gt;
==Bibliografia==&lt;br /&gt;
* [[KMK|Konrad Kokoszkiewicz]], &amp;quot;SN-360 - nowa stacja dla Atari&amp;quot;, Bajtek 8-9/1993, s. 16-17&lt;br /&gt;
* [[mikey|Mikey/NG]] SN-360, Syzygy Magazine #5&lt;br /&gt;
[[Kategoria:Peryferia 8-bit]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=SN-360&amp;diff=33257</id>
		<title>SN-360</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=SN-360&amp;diff=33257"/>
		<updated>2013-05-18T11:14:30Z</updated>

		<summary type="html">&lt;p&gt;Trub: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ImgFrm|http://atariki.krap.pl/images/0/06/Sn360-1-small.JPG|http://atariki.krap.pl/images/1/14/Sn360-1.jpg|Stacja SN 360}}&lt;br /&gt;
==Opis==&lt;br /&gt;
Polska stacja dysków 5.25&amp;quot; zaprojektowana przez Sławomira Nienałtowskiego, autora m.in. [[Atari Super Turbo|Atari Super Turbo (AST)]]. Sprzedawana przez firmę Atari Studio (późniejszy [[Mirage]]). Obsługuje tryby gęstości [[SD]], [[ED]], [[DD]], [[DD|DSDD]]. Do stacji dołączony był zestaw programów o nazwie &amp;quot;SN-Converter&amp;quot; służący do przenoszenia programów z/do PC. W tym celu dyskietka formatowana była na PC z nietypowymi dla tej platformy 256-bajtowymi sektorami. &lt;br /&gt;
&lt;br /&gt;
Do stacji można podłączyć napęd 3,5&amp;quot; od Amigi/ST lub PC i uzyskać pojemność 720k ze specjalnym firmware. &lt;br /&gt;
&lt;br /&gt;
==Konstrukcja==&lt;br /&gt;
&lt;br /&gt;
* mikroprocesor: 80C51 &lt;br /&gt;
* kontroler: WD 2797B&lt;br /&gt;
* [[ROM]]: 8 KB (EPROM z firmware stacji)&lt;br /&gt;
* [[RAM]] 8 KB &lt;br /&gt;
* prędkość obrotowa: 300 obr./min.&lt;br /&gt;
&lt;br /&gt;
==Cechy użytkowe==&lt;br /&gt;
&lt;br /&gt;
* maksymalny transfer oryginalnej stacji - 19200 bps (57600 bps z firmware opracowanym przez [[Mikey]]a)&lt;br /&gt;
* brak przelotowego gniazda SIO&lt;br /&gt;
* możliwość ustawienia ID tylko w zakresie D1-D2.&lt;br /&gt;
&lt;br /&gt;
==Benchmark==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellpadding=3 cellspacing=3&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;DOS II+/D&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td width=&amp;quot;10&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;SpartaDOS X&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td width=&amp;quot;10&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
Standard:&lt;br /&gt;
&lt;br /&gt;
* DOS zapis: 1191.25 B/s&lt;br /&gt;
* DOS odczyt: 1401.21 B/s&lt;br /&gt;
* DOS średnia: 1296.23 B/s&lt;br /&gt;
&lt;br /&gt;
Turbo:&lt;br /&gt;
&lt;br /&gt;
* DOS zapis: 2540.92 B/s&lt;br /&gt;
* DOS odczyt: 2622.49 B/s&lt;br /&gt;
* DOS średnia: 2581.70 B/s&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td width=&amp;quot;10&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
Standard (DSDD):&lt;br /&gt;
&lt;br /&gt;
* DOS zapis: 1389.89 B/s&lt;br /&gt;
* DOS odczyt: 1400.61 B/s&lt;br /&gt;
* DOS średnia: 1395.25 B/s&lt;br /&gt;
&lt;br /&gt;
Standard (SSDD):&lt;br /&gt;
&lt;br /&gt;
* DOS zapis: 1410.28 B/s&lt;br /&gt;
* DOS odczyt: 1416.40 B/s&lt;br /&gt;
* DOS średnia: 1413.34 B/s&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td width=&amp;quot;10&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
Turbo (DSDD):&lt;br /&gt;
&lt;br /&gt;
* DOS zapis: 3103.16 B/s&lt;br /&gt;
* DOS odczyt: 3094.34 B/s&lt;br /&gt;
* DOS średnia: 3098.75 B/s&lt;br /&gt;
&lt;br /&gt;
Turbo (SSDD):&lt;br /&gt;
&lt;br /&gt;
* DOS zapis: 3163.24 B/s&lt;br /&gt;
* DOS odczyt: 3141.95 B/s&lt;br /&gt;
* DOS średnia: 3152.59 B/s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pliki==&lt;br /&gt;
&lt;br /&gt;
* [[Media:Sn360.bin.gz| Zawartość EPROM-u stacji]]&lt;br /&gt;
* [[Media:Sn360utilz.atr| Obraz oryginalnej dyskietki dołączanej do stacji przez producenta]]&lt;br /&gt;
* [[Media:INSTRUKCJA_OBSŁUGI_SN-360.pdf| Instrukcja]]&lt;br /&gt;
&lt;br /&gt;
==Bibliografia==&lt;br /&gt;
* [[KMK|Konrad Kokoszkiewicz]], &amp;quot;SN-360 - nowa stacja dla Atari&amp;quot;, Bajtek 8-9/1993, s. 16-17&lt;br /&gt;
* [[mikey|Mikey/NG]] SN-360, Syzygy Magazine #5&lt;br /&gt;
[[Kategoria:Peryferia 8-bit]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=SN-360&amp;diff=33256</id>
		<title>SN-360</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=SN-360&amp;diff=33256"/>
		<updated>2013-05-18T08:27:08Z</updated>

		<summary type="html">&lt;p&gt;Trub: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ImgFrm|http://atariki.krap.pl/images/0/06/Sn360-1-small.JPG|http://atariki.krap.pl/images/1/14/Sn360-1.jpg|Stacja SN 360}}&lt;br /&gt;
==Opis==&lt;br /&gt;
Polska stacja dysków 5.25&amp;quot; zaprojektowana przez Sławomira Nienałtowskiego, autora m.in. [[Atari Super Turbo|Atari Super Turbo (AST)]]. Sprzedawana przez firmę Atari Studio (późniejszy [[Mirage]]). Obsługuje tryby gęstości [[SD]], [[ED]], [[DD]], [[DD|DSDD]]. Z racji zastosowania napędu 360k istniała możliwość przenoszenia programów z/do PC via dyskietki. Do stacji dołączony był zestaw programów o nazwie &amp;quot;SN-Converter&amp;quot;, służący do tego celu. &lt;br /&gt;
&lt;br /&gt;
Do stacji można podłączyć napęd 720k od Amigi/ST lub pecetowy 1.44M (po drobnych modyfikacjach oraz po zmianie firmware&#039;u) i uzyskać pojemność 720k.&lt;br /&gt;
&lt;br /&gt;
==Konstrukcja==&lt;br /&gt;
&lt;br /&gt;
* mikroprocesor: 80C51 &lt;br /&gt;
* kontroler: WD 2797B&lt;br /&gt;
* [[ROM]]: 8 KB (EPROM z firmware&#039;em stacji)&lt;br /&gt;
* [[RAM]] 8 KB &lt;br /&gt;
* prędkość obrotowa: 300 obr./min.&lt;br /&gt;
&lt;br /&gt;
==Cechy użytkowe==&lt;br /&gt;
&lt;br /&gt;
* maksymalny transfer oryginalnej stacji - 19200 bps (57600 bps z firmware opracowanym przez [[Mikey]]a)&lt;br /&gt;
* brak przelotowego gniazda SIO&lt;br /&gt;
* możliwość ustawienia ID tylko w zakresie D1-D2.&lt;br /&gt;
&lt;br /&gt;
==Benchmark==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellpadding=3 cellspacing=3&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;DOS II+/D&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td width=&amp;quot;10&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;SpartaDOS X&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td width=&amp;quot;10&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
Standard:&lt;br /&gt;
&lt;br /&gt;
* DOS zapis: 1191.25 B/s&lt;br /&gt;
* DOS odczyt: 1401.21 B/s&lt;br /&gt;
* DOS średnia: 1296.23 B/s&lt;br /&gt;
&lt;br /&gt;
Turbo:&lt;br /&gt;
&lt;br /&gt;
* DOS zapis: 2540.92 B/s&lt;br /&gt;
* DOS odczyt: 2622.49 B/s&lt;br /&gt;
* DOS średnia: 2581.70 B/s&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td width=&amp;quot;10&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
Standard (DSDD):&lt;br /&gt;
&lt;br /&gt;
* DOS zapis: 1389.89 B/s&lt;br /&gt;
* DOS odczyt: 1400.61 B/s&lt;br /&gt;
* DOS średnia: 1395.25 B/s&lt;br /&gt;
&lt;br /&gt;
Standard (SSDD):&lt;br /&gt;
&lt;br /&gt;
* DOS zapis: 1410.28 B/s&lt;br /&gt;
* DOS odczyt: 1416.40 B/s&lt;br /&gt;
* DOS średnia: 1413.34 B/s&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td width=&amp;quot;10&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
Turbo (DSDD):&lt;br /&gt;
&lt;br /&gt;
* DOS zapis: 3103.16 B/s&lt;br /&gt;
* DOS odczyt: 3094.34 B/s&lt;br /&gt;
* DOS średnia: 3098.75 B/s&lt;br /&gt;
&lt;br /&gt;
Turbo (SSDD):&lt;br /&gt;
&lt;br /&gt;
* DOS zapis: 3163.24 B/s&lt;br /&gt;
* DOS odczyt: 3141.95 B/s&lt;br /&gt;
* DOS średnia: 3152.59 B/s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pliki==&lt;br /&gt;
&lt;br /&gt;
* [[Media:Sn360.bin.gz| Zawartość EPROM-u stacji]]&lt;br /&gt;
* [[Media:Sn360utilz.atr| Obraz oryginalnej dyskietki dołączanej do stacji przez producenta]]&lt;br /&gt;
* [[Media:INSTRUKCJA_OBSŁUGI_SN-360.pdf| Instrukcja]]&lt;br /&gt;
&lt;br /&gt;
==Bibliografia==&lt;br /&gt;
* [[KMK|Konrad Kokoszkiewicz]], &amp;quot;SN-360 - nowa stacja dla Atari&amp;quot;, Bajtek 8-9/1993, s. 16-17&lt;br /&gt;
* [[mikey|Mikey/NG]] SN-360, Syzygy Magazine #5&lt;br /&gt;
[[Kategoria:Peryferia 8-bit]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=RAM_Charger&amp;diff=33255</id>
		<title>RAM Charger</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=RAM_Charger&amp;diff=33255"/>
		<updated>2013-05-18T07:32:16Z</updated>

		<summary type="html">&lt;p&gt;Trub: Zobacz też&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Indus RAM Charger (Ramcharger) jest kartą rozszerzającą dla stacji [[Indus GT]], zawierającą dodatkowe 64kB pamięci RAM. Razem z kartą dostarczany był system operacyjny [[Indus CP/M]] oraz program [[SuperSynchromesh]], który, oprócz zwiększenia szybkości transmisji do 68,2 kbps realizuje na rozszerzonej stacji [[buforowanie ścieżek]].&lt;br /&gt;
&lt;br /&gt;
[[grafika:Ramcharger.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SRAMCharger&#039;&#039;&#039; [http://trub.atari8.info/index.php?ref=sramcharger] jest funkcjonalnym odpowiednikiem tego rozszerzenia, zaproponowanym przez [[trub|truba]] (z pomocą [[Jerzy Sobola|Jerzego Soboli]] i [[jad|jada]]). Układ zastępczy wykorzystuje pamięć statyczną (zamiast dynamicznej) i jest znacznie prostszy w realizacji niż Ramcharger. Co więcej, można go zastosować również w popularnych stacjach [[LDW Super 2000]] i [[CA-2001]] (w tej ostatniej nie będzie buforowania ścieżek).&lt;br /&gt;
&lt;br /&gt;
[[grafika:sramcharger.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Zobacz też==&lt;br /&gt;
* [[Indus GT]]&lt;br /&gt;
* [[CP/M_Tool|CP/M Tool]]&lt;br /&gt;
* [http://www.retrobits.net/atari/indus.shtml Oprogramowanie dla stacji z kartą Indus Ramcharger]&lt;br /&gt;
* [http://trub.atari8.info/index.php?ref=cpm Strona o Indus CP/M 2.2 i SRAMCharger]&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Peryferia 8-bit]]&lt;br /&gt;
[[Kategoria:Rozszerzenia]]&lt;br /&gt;
[[Kategoria:CP/M]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=TTerminal&amp;diff=32839</id>
		<title>TTerminal</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=TTerminal&amp;diff=32839"/>
		<updated>2013-02-01T13:08:53Z</updated>

		<summary type="html">&lt;p&gt;Trub: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Trub Terminal (TTerminal). Napisany przez [[trub]]a ulepszony program terminalowy do [[Indus CP/M]] używający 80-kolumnowego trybu tekstowego [[VBXE]]. Oprócz oczywistych zalet korzystania z rzeczywistego trybu 80-kolumnowego dostępne są następujące rozszerzenia:&lt;br /&gt;
&lt;br /&gt;
* emulacja terminala Lear Sieger ADM-31 (zamiast prostszego [http://en.wikipedia.org/wiki/ADM-3A ADM-3A])&lt;br /&gt;
* możliwość dostępu do dyskietek w [[SD]]&lt;br /&gt;
* ustawienia kolorów mogą być zapisane do pliku (Ctrl/Shift/S) i odczytane przy następnym starcie&lt;br /&gt;
* poprawna obsługa podświetleń i inwersji&lt;br /&gt;
* echo lokalne (Ctrl/Shift/E)&lt;br /&gt;
* lepsza obsługa klawiszy specjalnych&lt;br /&gt;
* lepsza zgodność z różnymi [[DOS]]-ami&lt;br /&gt;
* możliwość powrotu do DOS (Ctrl/Shift/Q)&lt;br /&gt;
&lt;br /&gt;
Niektóre programy, szczególnie tzw. całoekranowe wymagają skonfigurowania terminala z jakim program ma pracować. Bez tej czynności ekran będzie odświeżany powoli lub niepoprawnie. Dla TTerminal należy wybrać jedną z opcji: Lear Sieger ADM-31, Commodore 128, Kaypro (w zależności od ich dostępności).&lt;br /&gt;
&lt;br /&gt;
TTerminal jest niezależny sprzętowo. Funkcje VBXE wywoływane są przez sterownik &amp;quot;[[S2:]]&amp;quot; napisany przez [[KMK]]. Inny sterownik tego samego autora, RC_GR8.SYS umożliwia uruchomienie terminala w trybie graficznym [[Graphics 8]].&lt;br /&gt;
&lt;br /&gt;
Na obrazku poniżej, [http://en.wikipedia.org/wiki/Turbo_Pascal Borland Turbo Pascal 3.0]. W tym przypadku terminal należy skonfigurować przy pomocy TINST.COM. &lt;br /&gt;
&lt;br /&gt;
[[Grafika:Cpmvbxe4a.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Kody sterujące ==&lt;br /&gt;
Terminal rozpoznaje następujące kody sterujące:&lt;br /&gt;
* ESC =	row col	- cursor position&lt;br /&gt;
* ESC T		- clear to end of line&lt;br /&gt;
* ESC Y		- clear to end of screen&lt;br /&gt;
* ESC :		- home &amp;amp; clear screen&lt;br /&gt;
* ESC *		- home &amp;amp; clear screen&lt;br /&gt;
* ESC )		- high intensity video on&lt;br /&gt;
* ESC (		- high intensity video off&lt;br /&gt;
* ESC G 4	- reverse video on&lt;br /&gt;
* ESC G 0	- reverse video off&lt;br /&gt;
* ESC E		- insert line&lt;br /&gt;
* ESC R		- delete line&lt;br /&gt;
* ^H		- cursor left&lt;br /&gt;
* ^L		- cursor right&lt;br /&gt;
* ^J		- cursor down&lt;br /&gt;
* ^K		- cursor up&lt;br /&gt;
* ^Z		- home and clear screen&lt;br /&gt;
* ^M		- carriage return&lt;br /&gt;
* ^G		- bell&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
* [http://trub.atari8.info/index.php?ref=indus_cpm TTerminal]&lt;br /&gt;
* [http://drac030.krap.pl/vbxe_s.arc Sterownik &amp;quot;S:&amp;quot; dla VBXE]&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Oprogramowanie Atari 8-bit]]&lt;br /&gt;
[[Kategoria:Programy użytkowe]]&lt;br /&gt;
[[Kategoria:Polskie programy]]&lt;br /&gt;
[[Kategoria:CP/M]]&lt;br /&gt;
[[Kategoria:VBXE]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=TTerminal&amp;diff=32838</id>
		<title>TTerminal</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=TTerminal&amp;diff=32838"/>
		<updated>2013-02-01T13:00:42Z</updated>

		<summary type="html">&lt;p&gt;Trub: Aktualizacja + kody&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Trub Terminal (TTerminal). Napisany przez [[trub]]a ulepszony program terminalowy do [[Indus CP/M]] używający 80-kolumnowego trybu tekstowego [[VBXE]]. Oprócz oczywistych zalet korzystania z rzeczywistego trybu 80-kolumnowego dostępne są następujące rozszerzenia:&lt;br /&gt;
&lt;br /&gt;
* emulacja terminala Lear Sieger ADM-31 (zamiast prostszego [http://en.wikipedia.org/wiki/ADM-3A ADM-3A])&lt;br /&gt;
* możliwość dostępu do dyskietek w [[SD]]&lt;br /&gt;
* ustawienia kolorów mogą być zapisane do pliku (Ctrl/Shift/S) i odczytane przy następnym starcie&lt;br /&gt;
* poprawna obsługa podświetleń i inwersji&lt;br /&gt;
* echo lokalne (Ctrl/Shift/E)&lt;br /&gt;
* lepsza obsługa klawiszy specjalnych&lt;br /&gt;
* lepsza zgodność z różnymi [[DOS]]-ami&lt;br /&gt;
* możliwość powrotu do DOS (Ctrl/Shift/Q)&lt;br /&gt;
&lt;br /&gt;
Niektóre programy, szczególnie tzw. całoekranowe wymagają skonfigurowania terminala z jakim program ma pracować. Bez tej czynności ekran będzie odświeżany powoli lub niepoprawnie. Dla TTerminal należy wybrać jedną z opcji: Lear Sieger ADM-31, Commodore 128, Kaypro (w zależności od ich dostępności).&lt;br /&gt;
&lt;br /&gt;
TTerminal jest niezależny sprzętowo. Funkcje VBXE wywoływane są przez sterownik &amp;quot;[[S2:]]&amp;quot; napisany przez [[KMK]]. Inny sterownik tego samego autora, RC_GR8.SYS umożliwia uruchomienie terminala w trybie graficznym [[Graphics 8]].&lt;br /&gt;
&lt;br /&gt;
Na obrazku poniżej, [http://en.wikipedia.org/wiki/Turbo_Pascal Borland Turbo Pascal 3.0]. W tym przypadku terminal należy skonfigurować przy pomocy TINST.COM. &lt;br /&gt;
&lt;br /&gt;
[[Grafika:Cpmvbxe4a.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Kody sterujące ==&lt;br /&gt;
Terminal rozpoznaje następujące kody sterujące:&lt;br /&gt;
* ESC =		row col	cursor position&lt;br /&gt;
* ESC T		clear to end of line&lt;br /&gt;
* ESC Y		clear to end of screen&lt;br /&gt;
* ESC :		home &amp;amp; clear screen&lt;br /&gt;
* ESC *		home &amp;amp; clear screen&lt;br /&gt;
* ESC )		high intensity video on&lt;br /&gt;
* ESC (		high intensity video off&lt;br /&gt;
* ESC G 4	reverse video on&lt;br /&gt;
* ESC G 0	reverse video off&lt;br /&gt;
* ESC E		insert line&lt;br /&gt;
* ESC R		delete Line&lt;br /&gt;
* ^H		cursor left&lt;br /&gt;
* ^L		cursor right&lt;br /&gt;
* ^J		cursor down&lt;br /&gt;
* ^K		cursor up&lt;br /&gt;
* ^Z		home and clear screen&lt;br /&gt;
* ^M		carriage return&lt;br /&gt;
* ^G		bell&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
* [http://trub.atari8.info/index.php?ref=indus_cpm TTerminal]&lt;br /&gt;
* [http://drac030.krap.pl/vbxe_s.arc Sterownik &amp;quot;S:&amp;quot; dla VBXE]&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Oprogramowanie Atari 8-bit]]&lt;br /&gt;
[[Kategoria:Programy użytkowe]]&lt;br /&gt;
[[Kategoria:Polskie programy]]&lt;br /&gt;
[[Kategoria:CP/M]]&lt;br /&gt;
[[Kategoria:VBXE]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=SpartaDOS_X&amp;diff=32805</id>
		<title>SpartaDOS X</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=SpartaDOS_X&amp;diff=32805"/>
		<updated>2013-01-07T23:09:15Z</updated>

		<summary type="html">&lt;p&gt;Trub: Co najmniej 128k&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{grafr|spartados_x_kart.jpg}}&lt;br /&gt;
&lt;br /&gt;
[[Image:SpartaDOS_X_logo.png]] Odmiana [[SpartaDOS|SpartaDOS-u]] napisana przez Mike Gustafsona i wydana firmę [[ICD|ICD, Inc.]] w postaci modułu ROM. Jest to najprawdopodobniej najlepszy, a już na pewno najbardziej rozbudowany - moduł ma 64kB - [[DOS]], jaki powstał na małe Atari (a może i na wszystkie komputery ośmiobitowe). Umieszczenie w module [[ROM]] sprawia, że DOS, mimo sporych rozmiarów, uruchamia się bardzo szybko.&lt;br /&gt;
&lt;br /&gt;
== Wykorzystanie pamięci ==&lt;br /&gt;
&lt;br /&gt;
Podczas normalnej pracy większość kodu SpartaDOS X rezyduje w dodatkowej pamięci: pod ROM-em, jeśli komputer ma 64k [[RAM]], albo użytkownik sobie tak zażyczy, albo w banku dodatkowej pamięci (obsługiwane są rozszerzenia [[Axlon]] oraz zgodne ze [[130XE]]). W tej pamięci DOS trzyma sterowniki, bufory plików itp. Dalsza część, tak zwana biblioteka SpartaDOS X, znajduje się na dwóch spośród ośmiu ośmiokilobajtowych banków modułu ROM (czyli zajmuje 16k). Biblioteka normalnie jest uaktywniona i zajmuje adresy $A000-$BFFF, jednak ponieważ pamięć tę wykorzystuje bardzo duża ilość programów (by już nie wspomnieć o interpreterze [[Atari BASIC]]), biblioteka może zostać odłączona poleceniem &#039;&#039;&#039;X&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{{grafr|SpartaDOS_X_prompt_small.png}}&lt;br /&gt;
&lt;br /&gt;
Premią wynikającą z takiego zagospodarowania pamięci jest bardzo niskie MEMLO, które może nawet osiągnąć wartości w okolicach $0E00.&lt;br /&gt;
&lt;br /&gt;
== Konfiguracja i obsługa ==&lt;br /&gt;
&lt;br /&gt;
Standardowo SpartaDOS X obsługuje dyski twarde, ma bardzo rozbudowane możliwości konfiguracji, obsługuje kilkanaście gęstości dyskietek, przy uruchamianu programów wykorzystuje szlak poszukiwań itp.&lt;br /&gt;
&lt;br /&gt;
Command processor (shell) wzorowany na [http://pl.wikipedia.org/wiki/MS-DOS MS-DOS] (w tym podobieństwo w konfiguracji; CONFIG.SYS / AUTOEXEC.BAT), ma zaimplementowane zmienne środowiskowe, przekierowanie I/O itd.&lt;br /&gt;
&lt;br /&gt;
Na urządzeniu CAR: - które jest pseudodyskiem zajmującym 48k modułu ROM - zapisane są podstawowe sterowniki, oraz przydatne oprogramowanie narzędziowe - ARC (paker - depaker zgodny z Atari ST / PC), MENU; czyli kopier, RS232, RAMDISK, itd.&lt;br /&gt;
&lt;br /&gt;
Jedną z ważnych innowacji SpartaDOS X w stosunku do innych DOS-ów jest to, że identyfikator urządzenia &amp;quot;D:&amp;quot; (w [[CIO]]) nie wskazuje stacji dysków nr 1, lecz dysk bieżący, to jest ten, który był ostatnio ustawiony jako domyślny przez interpreter poleceń DOS-u. Takie zachowanie zostało potem wstecznie zaimplementowane również w SpartaDOS 3.2g.&lt;br /&gt;
&lt;br /&gt;
== Format dyskietki ==&lt;br /&gt;
&lt;br /&gt;
{{grafr|SpartaDOS_X_menu_small.png}}&lt;br /&gt;
&lt;br /&gt;
SpartaDOS X używa [[Format SpartaDOS|formatu dysków SpartaDOS]], niezgodnego z klasycznym [[DOS 2.0|DOS-em 2.0]]. Format SpartaDOS-u oferuje jednak o wiele większe możliwości, przede wszystkim obsługuje dyski o pojemności do 16 MB (65536 sektorów po 256 bajtów), tworzenie podkatalogów o wielkości do 1423 wpisów w każdym, zapisuje w katalogach czas i datę utworzenia pliku, dokładną wielkość pliku w bajtach (DOS 2.0 - w sektorach), rozszerzone atrybuty, a przede wszystkim zapewnia swobodny dostęp do każdego bajtu pliku (przez odpowiednik funkcji seek()), a także szybkie wykonywanie kasowania pliku (w DOS 2.0 skasowanie pliku wymaga odczytania go w całości, w SpartaDOS nie). Nie do pogardzenia jest fakt, że format SpartaDOS pozwala na bezbłędne i stuprocentowo pewne odzyskanie skasowanego pliku - co nie jest na przykład możliwe w uważanym za profesjonalny filesystemie [http://pl.wikipedia.org/wiki/File_Allocation_Table FAT].&lt;br /&gt;
&lt;br /&gt;
Warto podkreślić, że dzięki modułowej strukturze SpartaDOS X umożliwia załadowanie sterowników obsługujących inne [[Formaty systemów plików|systemy plikowe]], w tym [[Format AtariDOS 2|AtariDOS 2]] i [[Format MyDOS|MyDOS]], a nawet [[Format CP/M 2.2|CP/M 2.2]] czy FAT.&lt;br /&gt;
&lt;br /&gt;
== Inne ==&lt;br /&gt;
Umieszczenie DOS-a w kartridżu ma jednak dużą wadę: ciągłe wkładanie i wyjmowanie karta z gniazda Atarki, może doprowadzić do obluzowania i niepewnych kontaktów. Jeżeli jeszcze dojdzie śniedzenie styków (zwłaszcza, gdy kart został wykonany nieprofesjonalnie) to kłopot pewny. Jest jeszcze inny problem: zbudowanie nowego karta wymaga doświadczenia w budowaniu układów elektronicznych, zwłaszcza wykonania płytki drukowanej. &lt;br /&gt;
&lt;br /&gt;
{{grafr|Spartados-x.jpg}}&lt;br /&gt;
&lt;br /&gt;
Jedną z w/w wad można jednak w prosty sposób wyeliminować; plik INIDOS.SYS - po COLD /N umożliwia ponowne uruchomienie SDX, - a COLD /N wg. oficjalnej dokumentacji SDX powoduje odłączenie modułu; więc potrzeba wyjmowania cartridge w nielicznych tylko przypadkach staje się koniecznością. Stąd pomysł na [http://hardware.atari8.info/sdx.php Wewnętrzną SpartaDOS X ]&lt;br /&gt;
&lt;br /&gt;
Na zdjęciu obok polska kopia kartridża wykonana przez [[AtraX]].&lt;br /&gt;
&lt;br /&gt;
== SpartaDOS X 4.4x ==&lt;br /&gt;
&lt;br /&gt;
Jest to ulepszona wersja SpartaDOS X 4.22 przygotowana przez [[DLT (grupa)|DLT]]. Mieści się na [[kartridż]]u o pojemności co najmniej 128 k. Ulepszenia polegają na usunięciu znanych błędów, poszerzeniu możliwości konfiguracji (m.in. jest zintegrowany Config Selector), dodaniu nowych sterowników i programów użytkownych, zaimplementowaniu dostępu do większej liczby dysków (z 9 do 15) i przystosowaniu filesystemu do pracy z dyskami o sektorach 512-bajtowych (maks. pojemność partycji 32 MB).&lt;br /&gt;
&lt;br /&gt;
Oficjalnie zaprezentowano jak dotąd następujące wersje:&lt;br /&gt;
&lt;br /&gt;
* 4.39RC z datą 1.X.2006 (wersja próbna)&lt;br /&gt;
* 4.41 z datą 8.II.2008 (w rzeczywistości wersja ta ukazała się dzień wcześniej)&lt;br /&gt;
* 4.42 z datą 25.XII.2008.&lt;br /&gt;
* 4.43 z datą 10.IV.2011.&lt;br /&gt;
* 4.44 z datą 3.VI.2011.&lt;br /&gt;
* 4.45 z datą 4.XI.2011.&lt;br /&gt;
* 4.46 z datą 1.I.2013.&lt;br /&gt;
&lt;br /&gt;
Te wersje SpartaDOS są do pobrania [http://sdx.atari8.info stąd].&lt;br /&gt;
&lt;br /&gt;
==Bibliografia==&lt;br /&gt;
*[[Wojciech Zientara]], &amp;quot;Kilka uwag o SpartaDOS X&amp;quot;, [http://atarionline.pl/biblioteka/czasopisma/Bajtek/Bajtek_1990_05_06.djvu Bajtek 5-6/1990] (w [[Atarionline.pl]]), s. 9&lt;br /&gt;
&lt;br /&gt;
== Zobacz też ==&lt;br /&gt;
* [[SpartaDOS]]&lt;br /&gt;
* [[Rejestry modułu SpartaDOS X]]&lt;br /&gt;
* [[SpartaDOS X 256k (2x128k)]]&lt;br /&gt;
&lt;br /&gt;
== Odnośniki zewnętrzne ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/SpartaDOS_X Hasło &#039;&#039;&#039;SpartaDOS X&#039;&#039;&#039; na en.wikipedia.org]&lt;br /&gt;
* [http://sdx.atari8.info Strona główna projektu &#039;&#039;SDX Upgrade&#039;&#039;] (SpartaDOS 4.4x, binaria i dokumentacja PDF)&lt;br /&gt;
* [http://www.goodbytexl.homepage.t-online.de/MyATARI.htm Strona [[GoodByteXL]] z angielskimi manualami do SpartaDOS X 4.20 i 4.42] (format PDF)&lt;br /&gt;
* [http://drac030.krap.pl/sdx420manual-pl.pdf SpartaDOS X 4.20 - podręcznik użytkownika] (format PDF, wersja poprawiona - uaktualniono 28.XII.2007.)&lt;br /&gt;
* [http://drac030.krap.pl/pl-sparta-pliki.php Parę programów do ściągnięcia]&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Oprogramowanie Atari 8-bit]]&lt;br /&gt;
[[Kategoria:Programy użytkowe]]&lt;br /&gt;
[[Kategoria:SpartaDOS X]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=SpartaDOS_X&amp;diff=32797</id>
		<title>SpartaDOS X</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=SpartaDOS_X&amp;diff=32797"/>
		<updated>2013-01-03T16:47:31Z</updated>

		<summary type="html">&lt;p&gt;Trub: Nowa wersja, inne systemy plików&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{grafr|spartados_x_kart.jpg}}&lt;br /&gt;
&lt;br /&gt;
[[Image:SpartaDOS_X_logo.png]] Odmiana [[SpartaDOS|SpartaDOS-u]] napisana przez Mike Gustafsona i wydana firmę [[ICD|ICD, Inc.]] w postaci modułu ROM. Jest to najprawdopodobniej najlepszy, a już na pewno najbardziej rozbudowany - moduł ma 64kB - DOS, jaki powstał na małe Atari (a może i na wszystkie komputery ośmiobitowe). Umieszczenie w module ROM sprawia, że DOS, mimo sporych rozmiarów, uruchamia się bardzo szybko.&lt;br /&gt;
&lt;br /&gt;
== Wykorzystanie pamięci ==&lt;br /&gt;
&lt;br /&gt;
Podczas normalnej pracy większość kodu SpartaDOS X rezyduje w dodatkowej pamięci: pod [[ROM]]-em, jeśli komputer ma 64k [[RAM]], albo użytkownik sobie tak zażyczy, albo w banku dodatkowej pamięci (obsługiwane są rozszerzenia [[Axlon]] oraz zgodne ze [[130XE]]). W tej pamięci DOS trzyma sterowniki, bufory plików itp. Dalsza część, tak zwana biblioteka SpartaDOS X, znajduje się na dwóch spośród ośmiu ośmiokilobajtowych banków modułu ROM (czyli zajmuje 16k). Biblioteka normalnie jest uaktywniona i zajmuje adresy $A000-$BFFF, jednak ponieważ pamięć tę wykorzystuje bardzo duża ilość programów (by już nie wspomnieć o interpreterze [[Atari BASIC]]), biblioteka może zostać odłączona poleceniem &#039;&#039;&#039;X&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{{grafr|SpartaDOS_X_prompt_small.png}}&lt;br /&gt;
&lt;br /&gt;
Premią wynikającą z takiego zagospodarowania pamięci jest bardzo niskie MEMLO, które może nawet osiągnąć wartości w okolicach $0E00.&lt;br /&gt;
&lt;br /&gt;
== Konfiguracja i obsługa ==&lt;br /&gt;
&lt;br /&gt;
Standardowo SpartaDOS X obsługuje dyski twarde, ma bardzo rozbudowane możliwości konfiguracji, obsługuje kilkanaście gęstości dyskietek, przy uruchamianu programów wykorzystuje szlak poszukiwań itp.&lt;br /&gt;
&lt;br /&gt;
Command processor (shell) wzorowany na MS-DOS (w tym podobieństwo w konfiguracji; CONFIG.SYS / AUTOEXEC.BAT), ma zaimplementowane zmienne środowiskowe, przekierowanie I/O itd.&lt;br /&gt;
&lt;br /&gt;
Na urządzeniu CAR: - które jest pseudodyskiem zajmującym 48k modułu ROM - zapisane są podstawowe sterowniki, oraz przydatne oprogramowanie narzędziowe - ARC (paker - depaker zgodny z Atari ST / PC), MENU; czyli kopier, RS232, RAMDISK, itd.&lt;br /&gt;
&lt;br /&gt;
Jedną z ważnych innowacji SpartaDOS X w stosunku do innych DOS-ów jest to, że identyfikator urządzenia &amp;quot;D:&amp;quot; (w [[CIO]]) nie wskazuje stacji dysków nr 1, lecz dysk bieżący, to jest ten, który był ostatnio ustawiony jako domyślny przez interpreter poleceń DOS-u. Takie zachowanie zostało potem wstecznie zaimplementowane również w SpartaDOS 3.2g.&lt;br /&gt;
&lt;br /&gt;
== Format dyskietki ==&lt;br /&gt;
&lt;br /&gt;
{{grafr|SpartaDOS_X_menu_small.png}}&lt;br /&gt;
&lt;br /&gt;
SpartaDOS X używa [[Format SpartaDOS|formatu dysków SpartaDOS]], niezgodnego z klasycznym [[DOS 2.0|DOS-em 2.0]]. Format SpartaDOS-u oferuje jednak o wiele większe możliwości, przede wszystkim obsługuje dyski o pojemności do 16 MB (65536 sektorów po 256 bajtów), tworzenie podkatalogów o wielkości do 1423 wpisów w każdym, zapisuje w katalogach czas i datę utworzenia pliku, dokładną wielkość pliku w bajtach (DOS 2.0 - w sektorach), rozszerzone atrybuty, a przede wszystkim zapewnia swobodny dostęp do każdego bajtu pliku (przez odpowiednik funkcji seek()), a także szybkie wykonywanie kasowania pliku (w DOS 2.0 skasowanie pliku wymaga odczytania go w całości, w SpartaDOS nie). Nie do pogardzenia jest fakt, że format SpartaDOS pozwala na bezbłędne i stuprocentowo pewne odzyskanie skasowanego pliku - co nie jest na przykład możliwe w uważanym za profesjonalny filesystemie FAT.&lt;br /&gt;
&lt;br /&gt;
Warto podkreślić, że dzięki modułowej strukturze SpartaDOS X umożliwia załadowanie sterowników obsługujących inne [[Formaty systemów plików|systemy plikowe]], w tym [[Format AtariDOS 2|AtariDOS 2]] i [[Format MyDOS|MyDOS]], a nawet [[Format CP/M 2.2|CP/M 2.2]] czy FAT.&lt;br /&gt;
&lt;br /&gt;
== Inne ==&lt;br /&gt;
Umieszczenie DOS-a w kartridżu ma jednak dużą wadę: ciągłe wkładanie i wyjmowanie karta z gniazda Atarki, może doprowadzić do obluzowania i niepewnych kontaktów. Jeżeli jeszcze dojdzie śniedzenie styków (zwłaszcza, gdy kart został wykonany nieprofesjonalnie) to kłopot pewny. Jest jeszcze inny problem: zbudowanie nowego karta wymaga doświadczenia w budowaniu układów elektronicznych, zwłaszcza wykonania płytki drukowanej. &lt;br /&gt;
&lt;br /&gt;
{{grafr|Spartados-x.jpg}}&lt;br /&gt;
&lt;br /&gt;
Jedną z w/w wad można jednak w prosty sposób wyeliminować; plik INIDOS.SYS - po COLD /N umożliwia ponowne uruchomienie SDX, - a COLD /N wg. oficjalnej dokumentacji SDX powoduje odłączenie modułu; więc potrzeba wyjmowania cartridge w nielicznych tylko przypadkach staje się koniecznością. Stąd pomysł na [http://hardware.atari8.info/sdx.php Wewnętrzną SpartaDOS X ]&lt;br /&gt;
&lt;br /&gt;
Na zdjęciu obok polska kopia kartridża wykonana przez [[AtraX]].&lt;br /&gt;
&lt;br /&gt;
== SpartaDOS X 4.4x ==&lt;br /&gt;
&lt;br /&gt;
Jest to ulepszona wersja SpartaDOS X 4.22 przygotowana przez [[DLT (grupa)|DLT]]. Mieści się na [[kartridż]]u o pojemności 128 k. Ulepszenia polegają na usunięciu znanych błędów, poszerzeniu możliwości konfiguracji (m.in. jest zintegrowany Config Selector), dodaniu nowych sterowników i programów użytkownych, zaimplementowaniu dostępu do większej liczby dysków (z 9 do 15) i przystosowaniu filesystemu do pracy z dyskami o sektorach 512-bajtowych (maks. pojemność partycji 32 MB).&lt;br /&gt;
&lt;br /&gt;
Oficjalnie zaprezentowano jak dotąd następujące wersje:&lt;br /&gt;
&lt;br /&gt;
* 4.39RC z datą 1.X.2006 (wersja próbna)&lt;br /&gt;
* 4.41 z datą 8.II.2008 (w rzeczywistości wersja ta ukazała się dzień wcześniej)&lt;br /&gt;
* 4.42 z datą 25.XII.2008.&lt;br /&gt;
* 4.43 z datą 10.IV.2011.&lt;br /&gt;
* 4.44 z datą 3.VI.2011.&lt;br /&gt;
* 4.45 z datą 4.XI.2011.&lt;br /&gt;
* 4.46 z datą 1.I.2013.&lt;br /&gt;
&lt;br /&gt;
Te wersje SpartaDOS są do pobrania [http://sdx.atari8.info stąd].&lt;br /&gt;
&lt;br /&gt;
==Bibliografia==&lt;br /&gt;
*[[Wojciech Zientara]], &amp;quot;Kilka uwag o SpartaDOS X&amp;quot;, [http://atarionline.pl/biblioteka/czasopisma/Bajtek/Bajtek_1990_05_06.djvu Bajtek 5-6/1990] (w [[Atarionline.pl]]), s. 9&lt;br /&gt;
&lt;br /&gt;
== Zobacz też ==&lt;br /&gt;
* [[SpartaDOS]]&lt;br /&gt;
* [[Rejestry modułu SpartaDOS X]]&lt;br /&gt;
* [[SpartaDOS X 256k (2x128k)]]&lt;br /&gt;
&lt;br /&gt;
== Odnośniki zewnętrzne ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/SpartaDOS_X Hasło &#039;&#039;&#039;SpartaDOS X&#039;&#039;&#039; na en.wikipedia.org]&lt;br /&gt;
* [http://sdx.atari8.info Strona główna projektu &#039;&#039;SDX Upgrade&#039;&#039;] (SpartaDOS 4.4x, binaria i dokumentacja PDF)&lt;br /&gt;
* [http://www.goodbytexl.homepage.t-online.de/MyATARI.htm Strona [[GoodByteXL]] z angielskimi manualami do SpartaDOS X 4.20 i 4.42] (format PDF)&lt;br /&gt;
* [http://drac030.krap.pl/sdx420manual-pl.pdf SpartaDOS X 4.20 - podręcznik użytkownika] (format PDF, wersja poprawiona - uaktualniono 28.XII.2007.)&lt;br /&gt;
* [http://drac030.krap.pl/pl-sparta-pliki.php Parę programów do ściągnięcia]&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Oprogramowanie Atari 8-bit]]&lt;br /&gt;
[[Kategoria:Programy użytkowe]]&lt;br /&gt;
[[Kategoria:SpartaDOS X]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=E605&amp;diff=32664</id>
		<title>E605</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=E605&amp;diff=32664"/>
		<updated>2012-11-14T21:50:51Z</updated>

		<summary type="html">&lt;p&gt;Trub: jeszcze kogo czego&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Demo grupy Light odpowiedzialnej m.in. za słynny [http://pouet.net/prod.php?which=34211 CD-Player STE], odtwarzacz modułów muzycznych napisany specjalnie dla serii [[STE|STE]]. Demo zawiera moduły muzyczne autorstwa TIP-a i Mantronixa/Phenomena (Amiga) oraz Jespera Kyda/The Silents (Amiga, demo Global Trash), a także procedurę odtwarzającą Noispackera (Amiga) autorstwa Twinsa/Phenomena.&lt;br /&gt;
&lt;br /&gt;
Za kod odpowiedzialny jest Percy, a za grafikę Dr. Death. Demo przeznaczone jest dla [[STE|STE]].&lt;br /&gt;
{{pouet|14448|gif}}&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Dema ST/E]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Indus_GT&amp;diff=32610</id>
		<title>Indus GT</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Indus_GT&amp;diff=32610"/>
		<updated>2012-10-19T15:47:48Z</updated>

		<summary type="html">&lt;p&gt;Trub: WART&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{grafr|Indusgt_front.jpg}}&lt;br /&gt;
Stacja dysków 5.25&amp;quot; produkowana przez [[Indus Systems]], a później przez [[Future Systems]] od 1983 roku. Oparta jest na mechanizmie Tandon TM50-1. Niektóre egzemplarze Indus GT mają napęd z charakterystycznym kluczykiem &amp;quot;zsuwanym&amp;quot; do dołu (a nie przekręcanym). Na etapie projektowania stację określano nazwą &amp;quot;WART&amp;quot; od &amp;quot;Wonderful Atari Rotating Thing&amp;quot;. Później skrót ten stosowano tylko jako określenie płyty głównej.&lt;br /&gt;
&lt;br /&gt;
Oprócz wersji dla [[Atari 8-bit]] produkowane były też wersje dla [http://retrobits.net/atari/images/indus/indusad1.jpg Apple II] i [http://www.lyonlabs.org/commodore/hardware/index.html#indus Commodore 64].&lt;br /&gt;
&lt;br /&gt;
Klon stacji Indus GT o nazwie [[LDW Super 2000]] był sprzedawany w Europie, zapewne na licencji, przez firmę [[LDW]]. Stacja różni się zastosowaniem innego mechanizmu oraz szczegółami konstrukcji.&lt;br /&gt;
&lt;br /&gt;
==Charakterystyka ogólna==&lt;br /&gt;
{{grafr|Indusgt_back.jpg}}&lt;br /&gt;
* mikroprocesor Z80/4 MHz, 4k [[ROM]], 2k [[RAM]] (rozszerzalne do 64k)&lt;br /&gt;
* kontroler FDC WD2797 (rzadziej WD1772/1770, zob. niżej)&lt;br /&gt;
* jednostronna, pojedyncza gęstość ([[SD]], 90 kB)&lt;br /&gt;
* jednostronna, rozszerzona gęstość ([[ED]], 130 kB)&lt;br /&gt;
* jednostronna, podwójna gęstość ([[DD]], 180 kB)&lt;br /&gt;
* dwa porty [[SIO]]&lt;br /&gt;
* możliwość pracy jako D1-D4.&lt;br /&gt;
* szybkości transmisji:&lt;br /&gt;
** 19200 bps w standardzie&lt;br /&gt;
** 38400 bps w trybie [[Synchromesh]] pod [[DOS XL]] 2.35I1&lt;br /&gt;
** 68200 bps w trybie [[SuperSynchromesh]] pod [[DOS XL]] 2.35I2 i [[SpartaDOS X]]&lt;br /&gt;
&lt;br /&gt;
Firmowe oprogramowanie wewnętrzne stacji (ROM) występuje w kilku wersjach. Wcześniejsze egzemplarze zawierały wadliwe wersje 1.00 i 1.10, które m.in. nie obsługiwały poprawnie rozszerzonej gęstości. W ostatniej wersji 1.20 poprawiono wcześniejsze błędy.&lt;br /&gt;
&lt;br /&gt;
Płyta główna i oprogramowanie są przystosowane do obsługi kontrolerów WD177x, lecz najprawdopodobniej w produkcji stosowano wyłącznie FDC WD2797 [http://reedcc.com/files/INDUS_GT_FSManual.pdf].&lt;br /&gt;
&lt;br /&gt;
==Funkcje klawiszy i wyświetlacza==&lt;br /&gt;
Na wyświetlaczu stacja podaje niektóre parametry pracy oraz informacje o stanie transmisji. Normalnie (po włączeniu zasilania) jest tam numer ścieżki, na której aktualnie znajduje się głowica.&lt;br /&gt;
&lt;br /&gt;
Gdy naciśnięty zostanie przycisk &amp;quot;DRIVE&amp;quot;, numer ścieżki zostaje zastąpiony informacją o numerze, jaki ma stacja (lewe pole wyświetlacza, cyfry z zakresu od 1 do 4) oraz aktualnej gęstości (prawe pole wyświetlacza, litery: A - gęstość pojedyncza, b - podwójna, C - średnia).&lt;br /&gt;
&lt;br /&gt;
W razie wystąpienia jakichś kłopotów, albo gdy użytkownik nacisnął klawisz &amp;quot;ERROR&amp;quot;, na wyświetlaczu pojawia się informacja o statusie transmisji. Składa się ona z kodu literowego i cyfry, jak następuje:&lt;br /&gt;
&lt;br /&gt;
* Lewe pole wyświetlacza, litery: G - błąd czytania danych, P - błąd podczas zapisu danych, F - błąd formatowania&lt;br /&gt;
* Prawe pole wyświetlacza, cyfry: 3 - błąd transmisji, 4 - błędna suma kontrolna, 5 - nie znaleziono sektora, 7 - dysk zabezpieczony przed zapisem (okienko dysku zaklejone), 9 - błąd weryfikacji&lt;br /&gt;
&lt;br /&gt;
Kod &amp;quot;E-&amp;quot; oznacza, że wszystko jest OK.&lt;br /&gt;
&lt;br /&gt;
Naciśnięcie klawisza &amp;quot;DRIVE&amp;quot;, gdy wciśnięty jest klawisz &amp;quot;TRACK&amp;quot; spowoduje natychmiastową analizę włożonej dyskietki i odpowiednie ustalenie gęstości stacji.&lt;br /&gt;
&lt;br /&gt;
Dodatkowo po załączeniu zasilania, w czasie inicjowania stacji przeprowadzane są testy diagnostyczne niektórych jej elementów. Rozpoczynają się od kontroli działania podstawowych rejestrów Z80. Dalsze testy są sygnalizowane na wyświetlaczu literą &amp;quot;C&amp;quot; z odpowiednim numerem, tj:&lt;br /&gt;
* 0 - test sumy kontrolnej ROM&lt;br /&gt;
* 1 - szybki test pamięci RAM&lt;br /&gt;
* 2 - test rejestrów indeksowych procesora Z80&lt;br /&gt;
* 3 - test kontrolera FDC.&lt;br /&gt;
Testy te przebiegają dość szybko, więc trudno dostrzec zmiany na wyświetlaczu. gdy wszystko przebiega prawidłowo. Litera &amp;quot;H&amp;quot; (Halt) oznacza błąd wykryty podczas testu i powoduje zatrzymanie działania stacji.&lt;br /&gt;
&lt;br /&gt;
Po połączeniu pinów 1,2,7 oraz 3,5,10 w łączu SIO i jednoczesnym naciśnięciu klawiszy &amp;quot;TRACK&amp;quot;, &amp;quot;ERROR&amp;quot; i &amp;quot;DRIVE TYPE&amp;quot; przy włączaniu stacji przeprowadzane są dodatkowe testy o kodach:&lt;br /&gt;
* 4 - test interfejsu szeregowego&lt;br /&gt;
* 5 - test systemu przerwań&lt;br /&gt;
* 6 - rozszerzony test pamięci RAM.&lt;br /&gt;
&lt;br /&gt;
==CP/M i RAM Charger==&lt;br /&gt;
Dla stacji Indus GT istnieje rozszerzenie pamięci zwane [[RAM Charger]]. Z jego wykorzystaniem możliwe jest załadowanie do stacji i uruchomienie na niej systemu [[Indus CP/M]] 2.2, Atari spełnia wtedy funkcję terminala [http://trub.atari8.info/cpm/indus_cpm.txt]. Załadowanie CP/M z dyskietki systemowej zatytułowanej &amp;quot;CP/M Boot Disk&amp;quot; następuje po włożeniu jej do stacji i jednoczesnym wciśnięciu klawiszy &amp;quot;DRIVE TYPE&amp;quot; i &amp;quot;ERROR&amp;quot;. Ta kombinacja klawiszy jest rozpoznawana tylko przez stację wyposażoną w ROM w wersji 1.20.&lt;br /&gt;
&lt;br /&gt;
Pamięć rozszerzenia RAM Charger jest również używana przez program [[SuperSynchromesh]] do [[buforowanie ścieżek|buforowania sektorów]]. W tym trybie stacja wyświetla napis &amp;quot;BF&amp;quot; na wyświetlaczu.&lt;br /&gt;
&lt;br /&gt;
==Zobacz też==&lt;br /&gt;
* [[Indus CP/M]]&lt;br /&gt;
* [[LDW Super 2000]]&lt;br /&gt;
* [[Programowanie stacji LDW Super 2000 i CA-2001]]&lt;br /&gt;
&lt;br /&gt;
==Odnośniki zewnętrzne==&lt;br /&gt;
* [http://www.retrobits.net/atari/indus.shtml Indus GT manual + software] (UWAGA: znajdujące się na tej stronie obrazy dyskietek z CP/M są &#039;&#039;&#039;uszkodzone&#039;&#039;&#039;, należy je naprawić za pomocą narzędzia [[CP/M_Tool|CP/M Tool]])&lt;br /&gt;
* [http://reedcc.com/files/INDUS_GT_FSManual.pdf Indus GT Field Service Manual]&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Peryferia 8-bit]]&lt;br /&gt;
[[Kategoria:CP/M]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=SIO2IDE_4.x&amp;diff=32588</id>
		<title>SIO2IDE 4.x</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=SIO2IDE_4.x&amp;diff=32588"/>
		<updated>2012-10-12T11:48:39Z</updated>

		<summary type="html">&lt;p&gt;Trub: Tryb diagnostyczny&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Informacje ogólne==&lt;br /&gt;
&lt;br /&gt;
Interfejs pozwalający podpiąc dowolny dysk twardy IDE (w tym również karty Compact Flash z wykorzystaniem przejściówki IDE-CF (obsługa kart CF od wersji 4.4) do portu [[SIO]] Atari. Interfejs zaprojektował [[Marek Mikołajewski]].&lt;br /&gt;
&lt;br /&gt;
Interfejs od strony Atari widziany jest jako stacja dysków (D1:-D8:), używając nagranych na dysk twardy obrazów dyskietek w formacie [[ATR]]. Interfejs obsługuje formaty dysków stosowane w PC (FAT16, FAT32, ISO9660), ma również port USB (opcjonalnie). Port ten służy wyłącznie do nagrywania/usuwania obrazów dyskietek z dysku twardego z poziomu PC, nie ma możliwości wykorzystania go od strony Atari.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Grafika:Sio2ide.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lista elementów==&lt;br /&gt;
&lt;br /&gt;
Poniżej przedstawiona jest lista elementów elektronicznych potrzebnych do budowy układu.&lt;br /&gt;
&lt;br /&gt;
    Lp  Ilość   Nazwa Elementu         Wartość          Oznaczenie elementu&lt;br /&gt;
     1     1    Rezystor                1k5                 R33&lt;br /&gt;
     2     2    Rezystor                24R                 R31 R32&lt;br /&gt;
     3     4    Rezystor                330R                R2 R3 R4 R51&lt;br /&gt;
     4     6    Rezystor                10k                 R10 R11 R41 R42 R43 R44&lt;br /&gt;
     5     1    Rezystor                1M                  opcjonalnie (jeżeli Y2)&lt;br /&gt;
     6     1    Kondensator elektr.     1uF                 C25&lt;br /&gt;
     7     4    Kondensator             30pF                C2 C3 C21 C22&lt;br /&gt;
     8     2    Kondensator             47nF                C4 C41&lt;br /&gt;
     9     2    Kondensator             47pF                C31 C32&lt;br /&gt;
    10     1    Kondensator elektr.     10uF                C1&lt;br /&gt;
    11     1    Kwarc                   7.3728 MHz          Y1&lt;br /&gt;
    12     2    Kwarc                   24MHz               U4 Y2&lt;br /&gt;
    13     1    Dioda Schottkiego       BAT85               opcjonalnie&lt;br /&gt;
    14     1    Procesor ATMEGA32-16PI (lub Atmega 32L-8PU) U1&lt;br /&gt;
    15     1    Układ scalony CD4053      -                 U3&lt;br /&gt;
    16     1    Układ scalony USBN9603    -                 U2&lt;br /&gt;
    17     4    Diody LED                 3V                IDE_LED LINK_LED PWR_LED SIO_LED&lt;br /&gt;
    18     1    Gniazdo IDE               -                 IDE_IO&lt;br /&gt;
    19     1    Gniazdo USB               -                 USB&lt;br /&gt;
    20     3    Zworki                    -                 HD1_ZW MODE_ZW MS_ZW&lt;br /&gt;
    21     2    Gniazda ZZ8/1             -                 ISP_IO SIO_IO&lt;br /&gt;
&lt;br /&gt;
Układ zasilany jest małym napięciem (5V) dlatego dobrze jest zakupić rezystory o małej mocy 1/8W, a kondensatory elektrolityczne (C1,C2) na jak najmniejsze napięcie np. 16V.&lt;br /&gt;
Jeżeli w układzie zamiast &#039;&#039;&#039;oscylatora 24 MHz (U4)&#039;&#039;&#039; zastosujemy &#039;&#039;&#039;kwarc 24 MHz (Y2)&#039;&#039;&#039;, to &#039;&#039;&#039;koniecznie&#039;&#039;&#039; należy równolegle z kwarcem połączyć rezystor 1M, w przeciwnym wypadku mogą wystąpić problemy z działaniem układu w trybie SIO2USB.&lt;br /&gt;
&lt;br /&gt;
Drugą modyfikacją układu jest dołożenie dodatkowo &#039;&#039;&#039;diody Schottkego BAT85&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Zapewni to bezproblemową pracę interfejsu z innymi urządzeniami peryferyjnymi lub z SIO2PC.&lt;br /&gt;
Diodkę przylutowujemy do 2 pinu gniazda SIO_IO interfejsu - katodą w stronę SIO2IDE a Anodą do Atari SIO.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Katodę wskazuje czarny pierścień na obudowie diody.&lt;br /&gt;
&lt;br /&gt;
==Poszczególne etapy montażu układu==&lt;br /&gt;
&lt;br /&gt;
===Widok czystej płytki drukowanej SIO2IDE===&lt;br /&gt;
&amp;lt;CENTER&amp;gt; [[grafika:Sio2ide_etap0.jpg|płytka drukowana sio2ide]]&amp;lt;/CENTER&amp;gt;&lt;br /&gt;
&lt;br /&gt;
W sklepie elektronicznym poza zakupem niezbędnych części do budowy układu, trzeba nabyć pastę lutowniczą, odrobinę przewodu (najlepiej srebrzanki) potrzebnego do wykonania kilkunastu zworek na płytce drukowanej oraz porządne, mocne piwo (na finisz naszych zmagań). Kiedy wszystko jest już gotowe, zabieramy się powoli do pracy. Na pierwszy ogień tradycyjnie idą wszystkie zworki (Z1....Z14) oraz gniazda (IDE, USB, SIO_IO, ISP_IO).&lt;br /&gt;
&lt;br /&gt;
Po zakończeniu obwód powinien prezentować się mniej więcej tak jak na zdjęciu poniżej.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CENTER&amp;gt; [[grafika:Sio2ide_etap1.jpg|płytka drukowana sio2ide pierwszy etap montażu]]&amp;lt;/CENTER&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Drugim krokiem są już poszczególne elementy, zaczynamy od tych najmniej wrażliwych tzn. rezystory, kondensatory (w przypadku dwóch elektrolitycznych (C1,C2) zwracamy uwagę na biegunowość która jest zaznaczona zarówno na płytce jak i elementach), kwarce itp.&lt;br /&gt;
&lt;br /&gt;
W przypadku diod LED dobrze jest przynajmniej 3 z nich (USB_LED, POWER_LED, IDE_LED) umieścić sobie na przewodach - tak żeby można było później łatwo je zamocować w górnej części obudowy komputera Atari.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CENTER&amp;gt; [[grafika:Sio2ide_etap2.jpg|płytka drukowana sio2ide drugi etap montażu]]&amp;lt;/CENTER&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Teraz pozostało już tylko zaprogramowanie procesora Atmel Atmega32 16PI (punkt kolejny), umieszczenie układów scalonych w podstawkach i podpięcie układu do gniazda SIO Atari.&lt;br /&gt;
&lt;br /&gt;
===Numeracja wyprowadzeń gniazda SIO_IO na płytce SIO2IDE===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CENTER&amp;gt; [[grafika:Numeracja_sio_io.jpg|Numeracja gniazda SIO_IO]]&amp;lt;/CENTER&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Sposób podpięcia interfejsu obrazuje poniższa tabelka:&lt;br /&gt;
&lt;br /&gt;
    SIO_IO        ATARI SIO             SYGNAŁ&lt;br /&gt;
       1              5                DATA_OUT&lt;br /&gt;
       2              3                DATA_IN  &lt;br /&gt;
       3              7                COMMAND&lt;br /&gt;
       5              4                MASA&lt;br /&gt;
       6              -                Nie używany&lt;br /&gt;
       7              10                +5V&lt;br /&gt;
&lt;br /&gt;
Sposób numerowania pinów gniazda SIO na płycie Atari - widok od strony ścieżek&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CENTER&amp;gt; [[grafika:Sio_plyta.jpg|Sposób numerowania pinów gniazda SIO na płycie Atari]]&amp;lt;/CENTER&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Sposób numerowania pinów gniazda SIO na płycie Atari - widok od strony elementów&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CENTER&amp;gt; [[grafika:Sio_plyta_gora.jpg|Sposób numerowania pinów gniazda SIO na płycie Atari]]&amp;lt;/CENTER&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Identyfikacja interfejsu w systemie windows XP/2000 pracującego w trybie sio2usb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CENTER&amp;gt; [[Grafika:Sio2ide_w_trybie_usb.jpg|Tryb sio2usb]]&amp;lt;/CENTER&amp;gt; &lt;br /&gt;
       &lt;br /&gt;
==Programowanie Atmela==&lt;br /&gt;
&lt;br /&gt;
===Schemat programatora===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Grafika:Programator.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    Pin LPT          Sygnał             Pin Atmega 32-16PI   &lt;br /&gt;
       3              RESET                     9&lt;br /&gt;
       4              SCK                       8&lt;br /&gt;
       5              MOSI                      6&lt;br /&gt;
       10             MISO                      7&lt;br /&gt;
       25             MASA(GND)                 11&lt;br /&gt;
        -             XTAL2                     12               &lt;br /&gt;
        -             XTAL1                     13&lt;br /&gt;
&lt;br /&gt;
Elementy użyte w programatorze - Kondesatory C1,C2 33pF, kwarc 4 MHz&lt;br /&gt;
Po zaprogramowaniu Atmela Atmega32 16PI należy również poprawnie ustawić w nim przełączniki FUSE na:&lt;br /&gt;
&lt;br /&gt;
                                LFB = 0xFF&lt;br /&gt;
                                HFB = 0xDF&lt;br /&gt;
&lt;br /&gt;
==Uruchomienie układu==&lt;br /&gt;
&lt;br /&gt;
Na początku trzeba sformatować dysk pod PC - założyć &#039;&#039;&#039;jedną podstawową partycję&#039;&#039;&#039; w zależności od pojemności dysku zastosować system plików FAT16 (zalecany dla dysków do 512 MB) lub FAT32. Kolejną czynnością będzie skopiowanie na tak utworzoną partycję dwóch plików (znajdują się one w archwium z dokumentacją SIO2IDE):&lt;br /&gt;
 &lt;br /&gt;
* &#039;&#039;&#039;mydos453.atr&#039;&#039;&#039; (wcześniej za pomocą programu ATRUTIL lub plugina autorstwa Pajero pod Windows Commandera proponuję do tego pliku ATR dodać program FDISK z archwium SIO2IDE), oraz&lt;br /&gt;
* plik konfiguracyjny &#039;&#039;&#039;SIO2IDE.CFG&#039;&#039;&#039;, jest on zwykłym plikiem tekstowym, przed skopiowaniem trzeba go zmodyfikować - dopisać w nim linie postaci: &#039;&#039;&#039;D9=mydos453&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Odłączamy dysk od PC i podłączamy go do interfejsu SIO2IDE, ustawiamy zworkę &#039;&#039;&#039;MS_ZW&#039;&#039;&#039; (nasz interfejs będzie pracował w trybie &#039;&#039;&#039;MASTER&#039;&#039;&#039;) oraz &#039;&#039;&#039;HD1_ZW&#039;&#039;&#039; (plik obrazu ustawiony pod D9 w SIO2IDE.CFG automatycznie zostanie podmapowany jako urządzenie D1). Uruchamiamy ATARI z wciśniętym klawiszem OPTION, po chwili jeżeli wszystko przebiegło poprawnie (m.in interfejs poprawnie rozpoznał dysk) powinna palić się tylko dioda &#039;&#039;&#039;PWR_LED&#039;&#039;&#039; a na ekranie pokaże się nam [[SELF TEST]] - &#039;&#039;powodem jest to, że Atari uruchamia się dużo szybciej niż rozpędza się i inicjuje dysk twardy podpięty pod interfejs&#039;&#039;. Dlatego ponownie naciskamy &#039;&#039;&#039;RESET + OPTION&#039;&#039;&#039; - teraz powinien zacząć się już nam ładować [[MyDOS]].&lt;br /&gt;
&lt;br /&gt;
Jeżeli po włączeniu interfejsu dioda SIO_LED mruga i nie gaśnie, dysk nie został prawidłowo rozpoznany. Może to oznaczać zarówno problem sprzętowy jak i złą strukturę systemu plików na dysku. Do diagnozowania przyczyny warto uruchomić tryb diagnostyczny SIO2IDE (TEST mode). Zakładając że posiadamy odpowiedni kabel SIO łączący Atari z SIO2IDE, należy uruchomić program terminalowy (np. Ice-T) w trybie 19200bps, 1 bit stopu, bez kontroli parzystości. Zworę MODE_SW należy zewrzeć, włączyć interfejs, a następnie w ciągu 3 sek. zworę usunąć. SIO2IDE wejdzie w tryb diagnostyczny i prześle na terminal szczegółowe informacje o inicjalizacji.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CENTER&amp;gt; [[grafika:Mydos_a.png]]&amp;lt;/CENTER&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Po załadowaniu DOS-u wciskamu klawisz L (LOAD) i uruchamiamy program FDISK.&lt;br /&gt;
Po poprawnym załadowaniu ukaże nam się plansza:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CENTER&amp;gt; [[grafika:Fdisk_a.png]]&amp;lt;/CENTER&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Ponieważ nasz interfejs ustawiliśmy za pomocą zworki MS_ZW jako MASTER, to za pomocą klawiszy kursora wybieramy opcję MASTER i naciskamy RETURN. (Atari może jednocześnie obsługiwać 2 interfejsy SIO2IDE - jeden ustawiony jako MASTER a drugi jako SLAVE).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CENTER&amp;gt; [[grafika:Fdisk_b.jpg]]&amp;lt;/CENTER&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Po wybraniu interfejsu którego konfiguracje chcemy zmienić (MASTER/SLAVE) przechodzimy do głównego MENU programu zarządzającego interfejsem SIO2IDE. Mamy w nim do wyboru następujące opcje:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;P&#039;&#039;&#039; - Pozwala obejrzeć parametry dysku podpiętego pod interfejs.&lt;br /&gt;
*&#039;&#039;&#039;D&#039;&#039;&#039; - Służy do zmiany aktywnego katalogu na dysku. (SIO2IDE obsługuje jednocześnie tylko jeden katalog, jeżeli chcemy skorzystać z plików ATR znajdujących się w innym folderze to musimy najpierw za pomocą tej opcji zmienić aktywny folder).&lt;br /&gt;
*&#039;&#039;&#039;V&#039;&#039;&#039; - Wyświetla listę plików ATR znajdujących się w aktywnym katalogu.&lt;br /&gt;
*&#039;&#039;&#039;A&#039;&#039;&#039; - Służy do podmontowywania plików atr pod określone stacje dysków Atari (D1-D8).&lt;br /&gt;
*&#039;&#039;&#039;S&#039;&#039;&#039; - Zapisuje plik sio2ide.cfg na dysku.&lt;br /&gt;
*&#039;&#039;&#039;E&#039;&#039;&#039; - Wyjście z programu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CENTER&amp;gt; [[grafika:Fdisk_c.jpg]]&amp;lt;/CENTER&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Przykładowy zrzut ekranowy pierwszej z dostępnych opcji &#039;&#039;&#039;VIEW PARAMETERS&#039;&#039;&#039;, jak widać interfejs SIO2IDE w tym przypadku pracuje w trybie SLAVE, wersja to 4.4, partycja na dysku w systemie FAT32 o objętości 1GB. W aktualnym aktywnym folderze znajduje się 9 plików ATR.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CENTER&amp;gt; [[grafika:Fdisk_d.jpg]]&amp;lt;/CENTER&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Druga opcja &#039;&#039;&#039;Change Activ Dir&#039;&#039;&#039; służy do zmiany aktywnego katalogu z plikami ATR na dysku.&lt;br /&gt;
Po jej wybraniu, na ekranie pojawi się nam lista katalogów na partycji dysku (jeżeli takowe istnieją). Za pomocą klawiszy kursora dokonujemy wyboru katalogu, a klawiszem &#039;&#039;&#039;A&#039;&#039;&#039; aktywujemy wybrany katalog. Standardowo &#039;&#039;&#039;Esc&#039;&#039;&#039; pozwala nam powrócić do poprzedniego menu.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;W przypadku korzystania z katalogów na dysku należy pamiętać, że każdy katalog musi zawierać plik sio2ide.cfg&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
W powyższym przykładzie partycja zawiera 2 katalogi: &#039;&#039;&#039;DEMA&#039;&#039;&#039; oraz &#039;&#039;&#039;DEMAC&#039;&#039;&#039;. Natomiast aktywnym katalogiem jest katalog główny (w FDISK-u oznaczony jako ROOT).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CENTER&amp;gt; [[grafika:Fdisk_e.jpg]]&amp;lt;/CENTER&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Trzecia z opcji &#039;&#039;&#039;VIEW ATR FILES&#039;&#039;&#039; pozwala zobaczyć listę wszystkich plików ATR znajdujących się w aktywnym katalogu na dysku. Za pomocą klawisza spacji włączamy/wyłączamy podgląd długich nazw w okienku &#039;&#039;&#039;ATR file details&#039;&#039;&#039;. W okienku tym możemy zobaczyć również inne informacje o dowolnym pliku ATR, takie jak:&lt;br /&gt;
&lt;br /&gt;
* numer pliku na dysku,&lt;br /&gt;
* ilość sektorów,&lt;br /&gt;
* atrybuty pliku ATR (zapis/odczyt),&lt;br /&gt;
* ilość bajtów na sektor,&lt;br /&gt;
* i wspomnianą wyżej pełną nazwę pliku.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CENTER&amp;gt; [[grafika:Fdisk_f.jpg]]&amp;lt;/CENTER&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Kolejna opcja &#039;&#039;&#039;Assign Disk&#039;&#039;&#039; pozwala podpiąć dowolny obraz (plik) ATR pod konkretny numer stacji dysków (D1-D8). Za pomocą klawiszy kursora wybieramy napęd, klikamy &#039;&#039;&#039;RETURN&#039;&#039;&#039; i wybieramy interesujący nas plik ATR (w momencie wyboru klawisz spacji włącza/wyłącza długie nazwy plików). Po dokonaniu wyboru za pomocą klawisza &#039;&#039;&#039;R&#039;&#039;&#039; możemy zmienić atrybut pliku ATR na &#039;&#039;&#039;Tylko do odczytu&#039;&#039;&#039; (RO), lub analogicznie za pomocą &#039;&#039;&#039;W&#039;&#039;&#039; zezwolić na odczyt/zapis (RW).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CENTER&amp;gt; [[grafika:Fdisk_g.jpg]]&amp;lt;/CENTER&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Przedostatnia opcja służy do zapisania wszystkich zmian w pliku konfiguracyjnym interfejsu od momentu uruchomienia programu FDISK. A ostatnia to wyjście z programu.&lt;br /&gt;
&lt;br /&gt;
==Sposób instalacji dysku 2.5 Cala==&lt;br /&gt;
&lt;br /&gt;
Istnieje możliwość podpięcia do interfejsu dysku 2.5 calowego (stosowane w notebookach).&lt;br /&gt;
Wymagane do tego jest użycie odpowiedniej przelotki. Zdjęcie poniżej przedstawia jedną z wielu tego typu przelotek dostępnych na rynku.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Grafika:Adapterhdd.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a) wyprowadzenia dla przewodów&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Grafika:Idc44f.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
b) wyprowadzenia dla gniazd i urządzeń peryferyjnych&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Grafika:Idc44m.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Zasilanie===&lt;br /&gt;
&lt;br /&gt;
 41 +5VL  +5 VDC (Logic) &lt;br /&gt;
 42 +5VM  +5 VDC (Motor) &lt;br /&gt;
 43 GND  Masa&lt;br /&gt;
 44 /TYPE  Type (0=ATA)&lt;br /&gt;
&lt;br /&gt;
==Sposób instalacji karty CF==&lt;br /&gt;
&lt;br /&gt;
Interface SIO2IDE od wersji 4.4 umożliwia korzystanie z kart CF.&lt;br /&gt;
Aby jednak było to możliwe, wymagany do tego jest odpowiedni adapter CF-IDE.&lt;br /&gt;
Zdjęcie poniżej przedstawia jedną z wielu tego typu przelotek dostępnych na rynku.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Grafika:Cf-ide.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zaleca się stosować karty CF firmy Kingston (są jednymi z lepszych na rynku) i na pewno działają z interfacem SIO2IDE. Powyższa przejściówka wymaga dodatkowego zasilania. Ponieważ w swoim egzemplarzu SIO2IDE używam karty Kingston CF 512 Elite Pro (Hight Speed), która wymaga zasilania 3.3V to wystarczy do przelotki doprowadzić tylko napięcie 5V.&lt;br /&gt;
Poniższy rysunek przedstawia wyprowadzenia standardowej wtyczki z zasilaniem stosowaną powszechnie w szerokiej gamie zasilaczy ATX&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Grafika:Wtykzas.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Zobacz także==&lt;br /&gt;
* Więcej informacji oraz schemat na [http://atariarea.krap.pl/sio2ide atariarea.krap.pl/sio2ide].&lt;br /&gt;
* [[SIO2IDE 1.7/3.3]]&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Peryferia 8-bit]]&lt;br /&gt;
[[Kategoria:Schematy i specyfikacje]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Karin_Maxi&amp;diff=32526</id>
		<title>Karin Maxi</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Karin_Maxi&amp;diff=32526"/>
		<updated>2012-10-09T09:22:55Z</updated>

		<summary type="html">&lt;p&gt;Trub: Opcje menu, obsługa&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Interfejs pozwalający na podłączenie do Atari [[XE]] jednego lub dwóch typowych napędów dyskietek od PC. Połączenie pomiędzy stacją a komputerem jest równoległe ([[nowe urządzenia|nowe urządzenie]]), co pozwala na uzyskanie transferów powyżej 20 kB/s. Interfejs stworzony został w połowie lat 90 XX wieku przez firmę [[Karin]].&lt;br /&gt;
&lt;br /&gt;
Interfejs przeznaczony jest dla komputerów posiadających złącze [[Gniazdo_ECI|ECI]]. Firma Karin oferowała montaż brakującego złącza ECI lub odpowiednią przejściowkę ze złącza [[PBI]]. Istnieje także wersja wewnętrzna (interfejs wpina się w odpowiednie sygnały na płycie komputera).&lt;br /&gt;
&lt;br /&gt;
Stosuje się zwykle napędy 5,25&amp;quot; i 3,5&amp;quot;, 40- lub 80-ścieżkowe o pojemności 360 do 720 kB. Na 3,5&amp;quot; napędzie 720k można &amp;quot;wycisnąć&amp;quot; do 980 kilobajtów pojemności dyskietki formatując ją dwustronnie po 24 256-bajtowe sektory na ścieżkę. Uzyskanie większych pojemności wymaga przetaktowania kontrolera i może się zdarzyć, że nie będą wówczas obsługiwane dyskietki sformatowane na nieprzerobionych stacjach.&lt;br /&gt;
&lt;br /&gt;
Ciekawostką interfejsu jest obsługa pełnej pojemności boot-sektora (można zapisać 256 bajtów zamiast 128 jak w standardowych stacjach).&lt;br /&gt;
&lt;br /&gt;
Cenę interfejsu z 1997r. można zobaczyć pod tym linkiem:&lt;br /&gt;
[http://www.digipedia.pl/usenet/thread/43/38217/ Grupa pl.comp.sys.atari]&lt;br /&gt;
&lt;br /&gt;
W 2012 r. powstała nowa wersja z udoskonaloną elektroniką i oprogramowaniem, nazywana dalej &amp;lt;b&amp;gt;Karin Maxi II&amp;lt;/b&amp;gt;. Jej produkcji podjął się [[Stryker]], a osoby zaangażowane to [[Zaxon]], [[Jerzy Sobola|Jer]], [[trub]], [[KMK|drac030]], [[Candle]] i [[Dely]].&lt;br /&gt;
&lt;br /&gt;
== Technikalia ==&lt;br /&gt;
* Zastosowany zegar: 8 MHz&lt;br /&gt;
* Zastosowany kontroler: WD1770 lub WD1772&lt;br /&gt;
* Identyfikator nowego urządzenia PBI: 7 (ustawiony sprzętowo na stałe)&lt;br /&gt;
&lt;br /&gt;
== Konfiguracja ==&lt;br /&gt;
Interfejs posiada zastaw przełączników pozwalający na ustawienie numeru stacji Karin Maxi oraz automatyczne lub ręczne skonfigurowanie napędów (mogą być różnego typu). Znaczenie przełączników podano w tabeli.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&lt;br /&gt;
 style=&amp;quot;text-align: left; &amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
 cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nr&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Parametr&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;ON&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;OFF&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Numery stacji Karin&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;D2: i D3:&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;D1: i D2:&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Konfiguracja&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Automatyczna (przy reset)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Ręczna (wg przełączników 3-6)&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Szybkość kroku głowicy w napędzie 2&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;3ms&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;6ms&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Szybkość kroku głowicy w napędzie 1&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;3ms&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;6ms&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;5&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Ilość ścieżek w napędzie 2&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;80&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;40&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;6&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Ilość ścieżek w napędzie 1&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;80&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;40&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
       &amp;lt;td colspan=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;i&amp;gt;Dodatkowe przełączniki w Karin Maxi II&amp;lt;/i&amp;gt;&lt;br /&gt;
       &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;7&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Wybór wersji firmware*&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Dolna połówka EPROM&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Górna połówka EPROM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;8&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Sterowanie interfejsem&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Aktywny&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Nieaktywny&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;* W fabrycznym EPROMie nagranym przez Strykera dolną połówkę zajmuje BIOS dla WD1770, górną - WD1772 &amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Obsługa ==&lt;br /&gt;
Uruchomienie komputera lub reset z wciśniętym klawiszem SELECT powoduje:&lt;br /&gt;
&lt;br /&gt;
a) w starszych wersjach interfejsu: ustawienie stacji Karin Maxi jako D2: i D3: (niezależnie od przełącznika), przydatne w przypadku bootowania z innej stacji (np. szeregowej),&lt;br /&gt;
&lt;br /&gt;
b) w Karin Maxi II: wyświetlenie menu konfiguracyjnego Karin Maxi Setup. Jego opcje są następujące:&lt;br /&gt;
&lt;br /&gt;
* X - odłączenie interfejsu (logiczne)&lt;br /&gt;
* S - zamiana napędów 1 na 2 i odwrotnie&lt;br /&gt;
* 2 - ustawienie logicznych dysków na D2: i D3: (a nie D1: i D2:)&lt;br /&gt;
* D - wyłączenie migotania podczas operacji we/wy (ekran Antica pozostaje wyłączony)&lt;br /&gt;
* Esc - wyjście z menu&lt;br /&gt;
* Shift+Esc - wyjście z menu z resetowaniem ustawień gęstości dyskietek (format zostanie ustalony przy pierwszym dostępie)&lt;br /&gt;
* Shift+Return - wykonanie zimnego restartu.&lt;br /&gt;
&lt;br /&gt;
Przytrzymanie klawisza &amp;quot;Shift&amp;quot; podczas transmisji danych służy do chwilowego wstrzymania transmisji i umożliwia podejrzenie zawartości ekranu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zdjęcia ==&lt;br /&gt;
Na zdjęciach przedstawiono interfejs sprzedawany przez firmę Karin. Do kompletu dodawany był napęd dyskietek 5.25 lub 3.5 cala (od PC), instrukcja oraz dyskietka z [[MyDOS|MyDOSem]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[grafika:Karinmaxi1.jpg]]&lt;br /&gt;
[[Grafika:Karinmaxi2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Grafika:Wd1770.jpg|Wersja z WD1770]]&lt;br /&gt;
[[Grafika:Wd1770_2.jpg|Wersja z WD1770]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Grafika:Wd1772.jpg|Wersja z WD1772]]&lt;br /&gt;
[[Grafika:Wd1772_2.jpg|Wersja z WD1772]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Konflikt z innymi urządzeniami ==&lt;br /&gt;
&lt;br /&gt;
Oryginalny interfejs posiada dwie wady, programową i sprzętową, które uniemożliwiają lub powodują problemy przy współpracy z innymi [[Nowe_urządzenia|nowymi urządzeniami]]. Błąd w programie Karin Maxi usuwa z rejestru PDVMSK ($247) wcześniej zarejestrowane urządzenia, przez co są one niewidoczne. Usterka sprzętowa na stałe mapuje rejestry interfejsu na stronę D1, nawet wtedy gdy nie jest on aktywowany przez system. W takiej sytuacji wszelkie zapisy na tę stronę wykonywanie przez sterowniki innych urządzeń PBI (np. [[IDE Plus]], [[KMK/JŻ IDE]] itp.) mogą być fałszywie odbierane przez Karin Maxi. Objawia się to niestabilną pracą lub całkowitym zawieszeniem komputera, np. przy kopiowaniu plików z IDE Plus do stacji.&lt;br /&gt;
&lt;br /&gt;
W Karin Maxi II powyższe usterki nie występują.&lt;br /&gt;
&lt;br /&gt;
=== Naprawa ===&lt;br /&gt;
Wymagana jest drobna zmiana na płytce interfejsu, przeprogramowanie układu GAL16V8 (U3) oraz EPROMu.&lt;br /&gt;
* zaprogramować EPROM poprawioną wersją oprogramowania stacji, do pobrania [http://atariki.krap.pl/images/a/a5/Maxifix.zip z tego linku]&lt;br /&gt;
* przeciąć ścieżkę dochodzącą do pinu 4 układu GAL (sygnał D1XX powinien teraz dochodzić tylko do pinu 1)&lt;br /&gt;
* połączyć pin 4 układu GAL z pinem 12 układu U9 (74LS259) lub pinem 3 układu U7 (74LS30)&lt;br /&gt;
* zaprogramować GAL nowym plikiem [http://trub.atari8.info/files/KarinFix.zip .jed] .&lt;br /&gt;
&lt;br /&gt;
Pin 19 może służyć do wyłączania interfejsu bez jego odpinania od komputera. Poniżej fragment schematu Karin Maxi z naniesionymi poprawkami.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Grafika:KarinFix.png|center|Poprawka Karin Maxi]]&lt;br /&gt;
&lt;br /&gt;
== Karin Midi Drive ==&lt;br /&gt;
[[Mariusz Geisler]] z firmy [[Karin]] zaprojektował również stację równoległą, która nie wymagała złącza [[Gniazdo_ECI|ECI]] i korzystała wyłącznie ze złącza kartridża. Jedynym śladem tej stacji, nazwanej Karin Midi Drive jest [http://www.dereatari.republika.pl/atarisch/karinmid.zip schemat] opracowany przez [[Jerzy Sobola|Jerzego Sobolę]].&lt;br /&gt;
&lt;br /&gt;
== Odnośniki zewnętrzne ==&lt;br /&gt;
*[http://atariarea.krap.pl/files/karin_maxi_drive_instrukcja_uzytkowania.pdf Karin Maxi Disk Drive - Instrukcja użytkowania] - zawiera także dość obszerny opis systemu [[MyDOS]].&lt;br /&gt;
*[http://www.dereatari.republika.pl/atarisch/maxi.zip Strona dereatari] - link do archiwum w którym znajdziemy schemat, wsad do gal&#039;a i romy w wersji dla WD1770 i WD1772.&lt;br /&gt;
*[http://trub.atari8.info/files/KarinFix.zip Archiwum z poprawionym wsadem do gal&#039;a.] Znajduję się tam też schemat z poprawką oraz napisane od nowa równania dla GALa Karinki (pełny plik pld).&lt;br /&gt;
*[http://atariki.krap.pl/images/a/a5/Maxifix.zip Poprawione romy w wersji 1770/1772]. &lt;br /&gt;
&lt;br /&gt;
== Zobacz też ==&lt;br /&gt;
[[MasterDOS]]&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Peryferia 8-bit]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Karin_Maxi&amp;diff=32525</id>
		<title>Karin Maxi</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Karin_Maxi&amp;diff=32525"/>
		<updated>2012-10-08T19:06:47Z</updated>

		<summary type="html">&lt;p&gt;Trub: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Interfejs pozwalający na podłączenie do Atari [[XE]] jednego lub dwóch typowych napędów dyskietek od PC. Połączenie pomiędzy stacją a komputerem jest równoległe ([[nowe urządzenia|nowe urządzenie]]), co pozwala na uzyskanie transferów powyżej 20 kB/s. Interfejs stworzony został w połowie lat 90 XX wieku przez firmę [[Karin]].&lt;br /&gt;
&lt;br /&gt;
Interfejs przeznaczony jest dla komputerów posiadających złącze [[Gniazdo_ECI|ECI]]. Firma Karin oferowała montaż brakującego złącza ECI lub odpowiednią przejściowkę ze złącza [[PBI]]. Istnieje także wersja wewnętrzna (interfejs wpina się w odpowiednie sygnały na płycie komputera).&lt;br /&gt;
&lt;br /&gt;
Stosuje się zwykle napędy 5,25&amp;quot; i 3,5&amp;quot;, 40- lub 80-ścieżkowe o pojemności 360 do 720 kB. Na 3,5&amp;quot; napędzie 720k można &amp;quot;wycisnąć&amp;quot; do 980 kilobajtów pojemności dyskietki formatując ją dwustronnie po 24 256-bajtowe sektory na ścieżkę. Uzyskanie większych pojemności wymaga przetaktowania kontrolera i może się zdarzyć, że nie będą wówczas obsługiwane dyskietki sformatowane na nieprzerobionych stacjach.&lt;br /&gt;
&lt;br /&gt;
Ciekawostką interfejsu jest obsługa pełnej pojemności boot-sektora (można zapisać 256 bajtów zamiast 128 jak w standardowych stacjach).&lt;br /&gt;
&lt;br /&gt;
Cenę interfejsu z 1997r. można zobaczyć pod tym linkiem:&lt;br /&gt;
[http://www.digipedia.pl/usenet/thread/43/38217/ Grupa pl.comp.sys.atari]&lt;br /&gt;
&lt;br /&gt;
W 2012 r. powstała nowa wersja z udoskonaloną elektroniką i oprogramowaniem, nazywana dalej &amp;lt;b&amp;gt;Karin Maxi II&amp;lt;/b&amp;gt;. Jej produkcji podjął się [[Stryker]], a osoby zaangażowane to [[Zaxon]], [[Jerzy Sobola|Jer]], [[trub]], [[KMK|drac030]], [[Candle]] i [[Dely]].&lt;br /&gt;
&lt;br /&gt;
== Technikalia ==&lt;br /&gt;
* Zastosowany zegar: 8 MHz&lt;br /&gt;
* Zastosowany kontroler: WD1770 lub WD1772&lt;br /&gt;
* Identyfikator nowego urządzenia PBI: 7 (ustawiony sprzętowo na stałe)&lt;br /&gt;
&lt;br /&gt;
== Obsługa ==&lt;br /&gt;
Interfejs posiada zastaw przełączników pozwalający na ustawienie numeru stacji Karin Maxi oraz automatyczne lub ręczne skonfigurowanie napędów (mogą być różnego typu). Znaczenie przełączników podano w tabeli.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&lt;br /&gt;
 style=&amp;quot;text-align: left; &amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
 cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nr&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Parametr&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;ON&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;OFF&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Numery stacji Karin&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;D2: i D3:&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;D1: i D2:&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Konfiguracja&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Automatyczna (przy reset)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Ręczna (wg przełączników 3-6)&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Szybkość kroku głowicy w napędzie 2&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;3ms&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;6ms&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Szybkość kroku głowicy w napędzie 1&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;3ms&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;6ms&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;5&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Ilość ścieżek w napędzie 2&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;80&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;40&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;6&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Ilość ścieżek w napędzie 1&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;80&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;40&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
       &amp;lt;td colspan=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;i&amp;gt;Dodatkowe przełączniki w Karin Maxi II&amp;lt;/i&amp;gt;&lt;br /&gt;
       &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;7&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Wybór wersji firmware*&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Dolna połówka EPROM&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Górna połówka EPROM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;8&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Sterowanie interfejsem&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Aktywny&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Nieaktywny&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;* W fabrycznym EPROMie nagranym przez Strykera dolną połówkę zajmuje BIOS dla WD1770, górną - WD1772 &amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sztuczki:&lt;br /&gt;
* uruchomienie komputera z wciśniętym klawiszem &amp;quot;SELECT&amp;quot; - ustawienie stacji Karin Maxi jako D2: i D3: (niezależnie od przełącznika), przydatne w przypadku bootowania z innej stacji (np. szeregowej); w Karin Maxi II klawisz ten wyświetla menu konfiguracyjne (Karin Maxi Setup).&lt;br /&gt;
* przytrzymanie klawisza &amp;quot;Shift&amp;quot; podczas transmisji danych - chwilowe wstrzymanie transmisji i podejrzenie zawartości ekranu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zdjęcia ==&lt;br /&gt;
Na zdjęciach przedstawiono interfejs sprzedawany przez firmę Karin. Do kompletu dodawany był napęd dyskietek 5.25 lub 3.5 cala (od PC), instrukcja oraz dyskietka z [[MyDOS|MyDOSem]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[grafika:Karinmaxi1.jpg]]&lt;br /&gt;
[[Grafika:Karinmaxi2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Grafika:Wd1770.jpg|Wersja z WD1770]]&lt;br /&gt;
[[Grafika:Wd1770_2.jpg|Wersja z WD1770]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Grafika:Wd1772.jpg|Wersja z WD1772]]&lt;br /&gt;
[[Grafika:Wd1772_2.jpg|Wersja z WD1772]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Konflikt z innymi urządzeniami ==&lt;br /&gt;
&lt;br /&gt;
Oryginalny interfejs posiada dwie wady, programową i sprzętową, które uniemożliwiają lub powodują problemy przy współpracy z innymi [[Nowe_urządzenia|nowymi urządzeniami]]. Błąd w programie Karin Maxi usuwa z rejestru PDVMSK ($247) wcześniej zarejestrowane urządzenia, przez co są one niewidoczne. Usterka sprzętowa na stałe mapuje rejestry interfejsu na stronę D1, nawet wtedy gdy nie jest on aktywowany przez system. W takiej sytuacji wszelkie zapisy na tę stronę wykonywanie przez sterowniki innych urządzeń PBI (np. [[IDE Plus]], [[KMK/JŻ IDE]] itp.) mogą być fałszywie odbierane przez Karin Maxi. Objawia się to niestabilną pracą lub całkowitym zawieszeniem komputera, np. przy kopiowaniu plików z IDE Plus do stacji.&lt;br /&gt;
&lt;br /&gt;
W Karin Maxi II powyższe usterki nie występują.&lt;br /&gt;
&lt;br /&gt;
=== Naprawa ===&lt;br /&gt;
Wymagana jest drobna zmiana na płytce interfejsu, przeprogramowanie układu GAL16V8 (U3) oraz EPROMu.&lt;br /&gt;
* zaprogramować EPROM poprawioną wersją oprogramowania stacji, do pobrania [http://atariki.krap.pl/images/a/a5/Maxifix.zip z tego linku]&lt;br /&gt;
* przeciąć ścieżkę dochodzącą do pinu 4 układu GAL (sygnał D1XX powinien teraz dochodzić tylko do pinu 1)&lt;br /&gt;
* połączyć pin 4 układu GAL z pinem 12 układu U9 (74LS259) lub pinem 3 układu U7 (74LS30)&lt;br /&gt;
* zaprogramować GAL nowym plikiem [http://trub.atari8.info/files/KarinFix.zip .jed] .&lt;br /&gt;
&lt;br /&gt;
Pin 19 może służyć do wyłączania interfejsu bez jego odpinania od komputera. Poniżej fragment schematu Karin Maxi z naniesionymi poprawkami.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Grafika:KarinFix.png|center|Poprawka Karin Maxi]]&lt;br /&gt;
&lt;br /&gt;
== Karin Midi Drive ==&lt;br /&gt;
[[Mariusz Geisler]] z firmy [[Karin]] zaprojektował również stację równoległą, która nie wymagała złącza [[Gniazdo_ECI|ECI]] i korzystała wyłącznie ze złącza kartridża. Jedynym śladem tej stacji, nazwanej Karin Midi Drive jest [http://www.dereatari.republika.pl/atarisch/karinmid.zip schemat] opracowany przez [[Jerzy Sobola|Jerzego Sobolę]].&lt;br /&gt;
&lt;br /&gt;
== Odnośniki zewnętrzne ==&lt;br /&gt;
*[http://atariarea.krap.pl/files/karin_maxi_drive_instrukcja_uzytkowania.pdf Karin Maxi Disk Drive - Instrukcja użytkowania] - zawiera także dość obszerny opis systemu [[MyDOS]].&lt;br /&gt;
*[http://www.dereatari.republika.pl/atarisch/maxi.zip Strona dereatari] - link do archiwum w którym znajdziemy schemat, wsad do gal&#039;a i romy w wersji dla WD1770 i WD1772.&lt;br /&gt;
*[http://trub.atari8.info/files/KarinFix.zip Archiwum z poprawionym wsadem do gal&#039;a.] Znajduję się tam też schemat z poprawką oraz napisane od nowa równania dla GALa Karinki (pełny plik pld).&lt;br /&gt;
*[http://atariki.krap.pl/images/a/a5/Maxifix.zip Poprawione romy w wersji 1770/1772]. &lt;br /&gt;
&lt;br /&gt;
== Zobacz też ==&lt;br /&gt;
[[MasterDOS]]&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Peryferia 8-bit]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Karin_Maxi&amp;diff=32524</id>
		<title>Karin Maxi</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Karin_Maxi&amp;diff=32524"/>
		<updated>2012-10-08T18:02:11Z</updated>

		<summary type="html">&lt;p&gt;Trub: Karin Maxi II&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Interfejs pozwalający na podłączenie do Atari [[XE]] jednego lub dwóch typowych napędów dyskietek od PC. Połączenie pomiędzy stacją a komputerem jest równoległe ([[nowe urządzenia|nowe urządzenie]]), co pozwala na uzyskanie transferów powyżej 20 kB/s. Interfejs stworzony został w połowie lat 90 XX wieku przez firmę [[Karin]].&lt;br /&gt;
&lt;br /&gt;
Interfejs przeznaczony jest dla komputerów posiadających złącze [[Gniazdo_ECI|ECI]]. Firma Karin oferowała montaż brakującego złącza ECI lub odpowiednią przejściowkę ze złącza [[PBI]]. Istnieje także wersja wewnętrzna (interfejs wpina się w odpowiednie sygnały na płycie komputera).&lt;br /&gt;
&lt;br /&gt;
Stosuje się zwykle napędy 5,25&amp;quot; i 3,5&amp;quot;, 40- lub 80-ścieżkowe o pojemności 360 do 720 kB. Na 3,5&amp;quot; napędzie 720k można &amp;quot;wycisnąć&amp;quot; do 980 kilobajtów pojemności dyskietki formatując ją dwustronnie po 24 256-bajtowe sektory na ścieżkę. Uzyskanie większych pojemności wymaga przetaktowania kontrolera i może się zdarzyć, że nie będą wówczas obsługiwane dyskietki sformatowane na nieprzerobionych stacjach.&lt;br /&gt;
&lt;br /&gt;
Ciekawostką interfejsu jest obsługa pełnej pojemności boot-sektora (można zapisać 256 bajtów zamiast 128 jak w standardowych stacjach).&lt;br /&gt;
&lt;br /&gt;
Cenę interfejsu z 1997r. można zobaczyć pod tym linkiem:&lt;br /&gt;
[http://www.digipedia.pl/usenet/thread/43/38217/ Grupa pl.comp.sys.atari]&lt;br /&gt;
&lt;br /&gt;
W 2012 r. powstała nowa wersja z udoskonaloną elektroniką i oprogramowaniem, nazywana dalej &amp;lt;b&amp;gt;Karin Maxi II&amp;lt;/b&amp;gt;. Jej produkcji podjął się [[Stryker]], a osoby zaangażowane to [[Zaxon]], [[Jerzy Sobola|Jer]], [[trub]], [[KMK|drac030]] i [[Dely]].&lt;br /&gt;
&lt;br /&gt;
== Technikalia ==&lt;br /&gt;
* Zastosowany zegar: 8 MHz&lt;br /&gt;
* Zastosowany kontroler: WD1770 lub WD1772&lt;br /&gt;
* Identyfikator nowego urządzenia PBI: 7 (ustawiony sprzętowo na stałe)&lt;br /&gt;
&lt;br /&gt;
== Obsługa ==&lt;br /&gt;
Interfejs posiada zastaw przełączników pozwalający na ustawienie numeru stacji Karin Maxi oraz automatyczne lub ręczne skonfigurowanie napędów (mogą być różnego typu). Znaczenie przełączników podano w tabeli.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&lt;br /&gt;
 style=&amp;quot;text-align: left; &amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
 cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Nr&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Parametr&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;ON&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;OFF&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Numery stacji Karin&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;D2: i D3:&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;D1: i D2:&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Konfiguracja&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Automatyczna (przy reset)&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Ręczna (wg przełączników 3-6)&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Szybkość kroku głowicy w napędzie 2&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;3ms&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;6ms&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Szybkość kroku głowicy w napędzie 1&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;3ms&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;6ms&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;5&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Ilość ścieżek w napędzie 2&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;80&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;40&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;6&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Ilość ścieżek w napędzie 1&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;80&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;40&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
       &amp;lt;td colspan=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;i&amp;gt;Dodatkowe przełączniki w Karin Maxi II&amp;lt;/i&amp;gt;&lt;br /&gt;
       &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;7&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Wybór wersji firmware*&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Dolna połówka EPROM&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Górna połówka EPROM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;8&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Sterowanie interfejsem&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Aktywny&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Nieaktywny&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;* W fabrycznym EPROMie nagranym przez Strykera dolną połówkę zajmuje BIOS dla WD1770, górną - WD1772 &amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sztuczki:&lt;br /&gt;
* uruchomienie komputera z wciśniętym klawiszem &amp;quot;SELECT&amp;quot; - ustawienie stacji Karin Maxi jako D2: i D3: (niezależnie od przełącznika), przydatne w przypadku bootowania z innej stacji (np. szeregowej); w Karin Maxi II klawisz ten wyświetla menu konfiguracyjne (Karin Maxi Setup).&lt;br /&gt;
* przytrzymanie klawisza &amp;quot;Shift&amp;quot; podczas transmisji danych - chwilowe wstrzymanie transmisji i podejrzenie zawartości ekranu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zdjęcia ==&lt;br /&gt;
Na zdjęciach przedstawiono interfejs sprzedawany przez firmę Karin. Do kompletu dodawany był napęd dyskietek 5.25 lub 3.5 cala (od PC), instrukcja oraz dyskietka z [[MyDOS|MyDOSem]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[grafika:Karinmaxi1.jpg]]&lt;br /&gt;
[[Grafika:Karinmaxi2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Grafika:Wd1770.jpg|Wersja z WD1770]]&lt;br /&gt;
[[Grafika:Wd1770_2.jpg|Wersja z WD1770]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Grafika:Wd1772.jpg|Wersja z WD1772]]&lt;br /&gt;
[[Grafika:Wd1772_2.jpg|Wersja z WD1772]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Konflikt z innymi urządzeniami ==&lt;br /&gt;
&lt;br /&gt;
Oryginalny interfejs posiada dwie wady, programową i sprzętową, które uniemożliwiają lub powodują problemy przy współpracy z innymi [[Nowe_urządzenia|nowymi urządzeniami]]. Błąd w programie Karin Maxi usuwa z rejestru PDVMSK ($247) wcześniej zarejestrowane urządzenia, przez co są one niewidoczne. Usterka sprzętowa na stałe mapuje rejestry interfejsu na stronę D1, nawet wtedy gdy nie jest on aktywowany przez system. W takiej sytuacji wszelkie zapisy na tę stronę wykonywanie przez sterowniki innych urządzeń PBI (np. [[IDE Plus]], [[KMK/JŻ IDE]] itp.) mogą być fałszywie odbierane przez Karin Maxi. Objawia się to niestabilną pracą lub całkowitym zawieszeniem komputera, np. przy kopiowaniu plików z IDE Plus do stacji.&lt;br /&gt;
&lt;br /&gt;
W Karin Maxi II powyższe usterki nie występują.&lt;br /&gt;
&lt;br /&gt;
=== Naprawa ===&lt;br /&gt;
Wymagana jest drobna zmiana na płytce interfejsu, przeprogramowanie układu GAL16V8 (U3) oraz EPROMu.&lt;br /&gt;
* zaprogramować EPROM poprawioną wersją oprogramowania stacji, do pobrania [http://atariki.krap.pl/images/a/a5/Maxifix.zip z tego linku]&lt;br /&gt;
* przeciąć ścieżkę dochodzącą do pinu 4 układu GAL (sygnał D1XX powinien teraz dochodzić tylko do pinu 1)&lt;br /&gt;
* połączyć pin 4 układu GAL z pinem 12 układu U9 (74LS259) lub pinem 3 układu U7 (74LS30)&lt;br /&gt;
* zaprogramować GAL nowym plikiem [http://trub.atari8.info/files/KarinFix.zip .jed] .&lt;br /&gt;
&lt;br /&gt;
Pin 19 może służyć do wyłączania interfejsu bez jego odpinania od komputera. Poniżej fragment schematu Karin Maxi z naniesionymi poprawkami.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Grafika:KarinFix.png|center|Poprawka Karin Maxi]]&lt;br /&gt;
&lt;br /&gt;
== Karin Midi Drive ==&lt;br /&gt;
[[Mariusz Geisler]] z firmy [[Karin]] zaprojektował również stację równoległą, która nie wymagała złącza [[Gniazdo_ECI|ECI]] i korzystała wyłącznie ze złącza kartridża. Jedynym śladem tej stacji, nazwanej Karin Midi Drive jest [http://www.dereatari.republika.pl/atarisch/karinmid.zip schemat] opracowany przez [[Jerzy Sobola|Jerzego Sobolę]].&lt;br /&gt;
&lt;br /&gt;
== Odnośniki zewnętrzne ==&lt;br /&gt;
*[http://atariarea.krap.pl/files/karin_maxi_drive_instrukcja_uzytkowania.pdf Karin Maxi Disk Drive - Instrukcja użytkowania] - zawiera także dość obszerny opis systemu [[MyDOS]].&lt;br /&gt;
*[http://www.dereatari.republika.pl/atarisch/maxi.zip Strona dereatari] - link do archiwum w którym znajdziemy schemat, wsad do gal&#039;a i romy w wersji dla WD1770 i WD1772.&lt;br /&gt;
*[http://trub.atari8.info/files/KarinFix.zip Archiwum z poprawionym wsadem do gal&#039;a.] Znajduję się tam też schemat z poprawką oraz napisane od nowa równania dla GALa Karinki (pełny plik pld).&lt;br /&gt;
*[http://atariki.krap.pl/images/a/a5/Maxifix.zip Poprawione romy w wersji 1770/1772]. &lt;br /&gt;
&lt;br /&gt;
== Zobacz też ==&lt;br /&gt;
[[MasterDOS]]&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Peryferia 8-bit]]&lt;/div&gt;</summary>
		<author><name>Trub</name></author>
	</entry>
</feed>