<?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=Piotrv</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=Piotrv"/>
	<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php/Specjalna:Wk%C5%82ad/Piotrv"/>
	<updated>2026-10-24T06:10:24Z</updated>
	<subtitle>Wkład użytkownika</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=MagnumTT&amp;diff=11027</id>
		<title>MagnumTT</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=MagnumTT&amp;diff=11027"/>
		<updated>2006-03-23T10:57:59Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Magnum TT RAM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Karta [[TT RAM]] firmy [[Aixit]] przeznaczona dla Atari [[TT030]], umożliwiająca włożenie do 256 MB na dwóch [[SIMM]]&#039;ach PS/2 (72piny) FPM lub EDO.&lt;br /&gt;
&lt;br /&gt;
[[kategoria:Atari ST]]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Dyskusja:Strona_g%C5%82%C3%B3wna&amp;diff=10927</id>
		<title>Dyskusja:Strona główna</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Dyskusja:Strona_g%C5%82%C3%B3wna&amp;diff=10927"/>
		<updated>2006-03-20T14:04:40Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: easy, amigos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Literatura&#039;&#039;&#039;&#039;&#039; - czy nie jest przesadą umieszczanie takich tytułów jak &amp;quot;Chip&amp;quot; czy &amp;quot;PC World Computer&amp;quot;? Wszak to jest Atariki, a nie wiki...? Wypowiedzcie się na ten temat.--[[Wikipedysta:Sikor|Sikor]] 23:22, 27 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
Nie jest! A jesli nawet to prosze wykasuj Secret Service bo to duzo predzej nie pisalo o atari, a jesli juz cokolwiek bylo to nawet dot. nie STka a gier!, poza tym wg. zasady &amp;quot;ATARIKI nie WIKI&amp;quot; to proponuje wypier. takie haselka jak [[AMIGA]]. Ja proponuje Sikor wprzywrocic wykasoane hasla bo tam w odroznieniu od nie istotnych informacji dla Atariki umieszczane byly artykuly rzeczywiscie dot. Atari! --[[Wikipedysta:Vulgar|Vulgar]] 11:11, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::podaj bliższe przykłady, niejednostkowe. Pytanie moje było przytoczone dość dawno, nikt na nie nie odpowiedział, więc - zgodnie z zasadą - brak odpowiedzi jest aprobatą - wykasowałem. Zresztą - i tak były puste. Co do Secret Service - owszem, pismo dotyczy gier, ale przez bardzo długi okres czasu były tam także opisywane gry na ST i na małe Atari, więc jest jak najbardziej na miejscu. Co do Amigi - zgadzam się z Tobą, jak już - powinien być link zewnętrzny i już. --[[Wikipedysta:Sikor|Sikor]] 11:29, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::jestem za zachowaniem hasła [[Amiga]], jest to ostatni etap ewolucji [[XL]], więc dodanie paru zdań na ten temat jest na miejscu. Tak samo można by wywalić [[Atari MainFrame]] i wszystkie czasopisma traktujące o C=, gdybyśmy mieli być tacy dokładni.--[[Wikipedysta:Piotrv|Piotrv]] 12:23, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:co do atari mainframe - w pełni podzielam ten pogląd. Co do Amigi - hmm, czy do końca miała być następcą serii XE...? W sumie może zostać--[[Wikipedysta:Sikor|Sikor]] 13:01, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:Sikor, chodzi o serie [[XL]] - a nie [[XE]]. Zob. [[Amiga]]. --[[Wikipedysta:Piotrv|Piotrv]] 14:06, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:osobiscie uwazam ze haslo [[Amiga]] w Atariki jest calkowicie zbedne. Wystarczy ze odpowiednie informacje znajda sie pod haslem [[1850XLD]].  Atari produkowalo rowniez klony PC a jednak nie ma sensu umieszczac tutaj hasla IBM PC. [[Wikipedysta:CK|CK]] 18:52, 19 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::A ja z kolei uwazam, ze pozostawienie hasla &amp;quot;Amiga&amp;quot; jest jak najbardziej sluszne! Przeciez nie zajmuje wiele cennego miejsca, a faktem jest ze Amiga byla uzywana przez wielu atarowcow i to nie tylko do samego grania ale i wspoltworzenia softu na 8-bit (wspomnieni w artykule znani koderzy), dawala natchnienie do dem (np. w &amp;quot;Asskicker&amp;quot;) ; oczywiscie pobocznym faktem jest, ze to na Amige a nie ST przechodzili czesto pozniej maloatarowcy (m.in. wskutek fatalnej polityki marketingowej firmy Atari i braku latwego dostepu do softu, tak jak to bylo w przypadku &amp;quot;Przyjaciolki&amp;quot;... ;) --[[Wikipedysta:Dracon|Dracon/TQA]] 21:42, 19 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:::uzywane rowniez byly pecety i to w zdecydowanie wiekszej ilosci. hmm... byc moze i maki rowniez byly uzywane. czy oznacza to ze powinny sie znalez w atariki? kwestia pirackiego ops... &amp;quot;latwego dostepu do soft&amp;quot; i przechodzenia maloatarowcow na inne sprzety (glownie pecety) raczej nie dotyczy Atariki [[Wikipedysta:CK|CK]] 01:21, 20 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:::: Amiga byla po prostu popularniejsza, bez dwoch zdan i nic na to nie poradze (a na ST tez piracono, szcz. w Polsce). Dziwnym trafem ;) Jay Miner maczal kiedys palce w konstrukcji malego Atari. Lista produkcji powstalych z uzyciem Amigi (np. jako edytora tekstu i do obslugi crossassemblera) nie jest taka malutka, ze wymienie tylko: MegaBlast, Dwie Wieze, Miecze Valdgira, Fatum, The TOP3... Fakt, PC tez sie uzywalo (chyba w Atariki haslo jest? ;]) ale raczej pozniej, o Mac-ach mi nic nie wiadomo... ;P --[[Wikipedysta:Dracon|Dracon/TQA]] 12:10, 20 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::::: nie mam ochoty na kolejne flame-ware  atari vs amiga, pomine wiec temat popularnosci. Amiga nie jest komputerem firmy Atari i nie zmienia tego prywatne sympatie pewnych uzytkownikow malego Atari. Co prawda firma miala wypuscic klon tego kompuera ale nie zrobila tego. Mamy za to klony PC, wiec oznacza to ze mamy umieszczac tutaj tytuly dotyczace koputerow IMB PC, Compaq itp? Jesli juz wrzucamy info o rzeczach ktore mialy udzial przy  pisaniu dem to czemu nie dorzucic info o pizza, piwie albo hamburgerach? :) Na pewno mialy one wiekszy udzial niz Amiga. Sprawdzilem i faktycznie jes haslo PC - pytanie tylko po co? Malo to stron o pc? [[Wikipedysta:CK|CK]] 14:01, 20 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:proponuje się skupić na tym co można &#039;&#039;&#039;dodać&#039;&#039;&#039;, a potem ew. jeśli serwer tak spuchnie, że trzeba będzie wycinać artykuły, to się ten wzmiankowany artykuł wytnie. --[[Wikipedysta:Piotrv|Piotrv]] 15:04, 20 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
== propozycja rozszerzenia funkcjonalnosci... ==&lt;br /&gt;
&lt;br /&gt;
moze dodanie http://meta.wikimedia.org/wiki/FCKeditor nieco zwiekszylo zapal&lt;br /&gt;
edytujacych - co za tym idzie - ilosc dostepnych stron&lt;br /&gt;
--[[Wikipedysta:Jellonek|Jellonek]] 09:22, 13 lip 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Nowy wygląd strony głównej ==&lt;br /&gt;
&lt;br /&gt;
Rodacy!!! Wreszcie skończyłem nowy wygląd strony głównej. Proszę o uwagi. Poza tym mam propozycje aby wypunktowania pionowe zmienić na zwykłą listę poziomą &amp;quot;wyprzecinkowaną&amp;quot; ponieważ np. Literatura robi się już nieprzywoicie &amp;quot;wysoka&amp;quot;. Myślę, że wpłynie to pozytywnie na szybkość odnajdowywania informacji - nikomu się nie chce przewijać strony żeby zobaczyć co będzie dalej - tak będzie wszystko od razu widoczne. --[[Wikipedysta:Daniel Koźmiński|dely]] 14:51, 10 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
: Ladnie, troche inaczej niz w &amp;quot;oryginale&amp;quot;, chyba wole ta wersje od poprzedniej, jednak jeszcze cos tu brakuje... Kierowniku moze w kazdej z kategori, zwyczajnie zrobic jeszcze po dwie kolumny? --[[Wikipedysta:Vulgar|Vulgar]] 15:11, 10 mar 2006 (CET)&lt;br /&gt;
:: a pomyślałeś o tych, co mają mniejsze rozdzielczości?--[[Wikipedysta:Daniel Koźmiński|dely]] 18:52, 10 mar 2006 (CET)&lt;br /&gt;
::: To tylko propzycja, ale w zasadzie podobnie mozna powiedziec o tych co maja &amp;quot;za duze&amp;quot; rozdzielczosci ;) az sie prosi zeby cos tam wrzucic. Ale widze ew. rozwiazanie - sztywne tabelki! jezeli jet to mozliwe w wiki. albo m/w tak: http://atariki.krap.pl/index.php/Moja_glowna. Poza tym to proponuje cos zrobic z kategoriami bo np. kategoria PROGRAMOWANIE troche sie rzadzi innymmi zasadami--[[Wikipedysta:Vulgar|Vulgar]] 19:01, 10 mar 2006 (CET)&lt;br /&gt;
:::: No to Hameryki nie odkryłeś, proponowałem to powyżej. A tabelki stałeś szerokości w tym lejałcie nie przejdą. Nie zgadzam się.--[[Wikipedysta:Daniel Koźmiński|dely]] 19:53, 10 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::::: Ba! Mowa. Kolumb nawet jej nie odkrył :) Co mi tam. Ale jakos i tak wole sztywne tabelki bo po zminimalizowaniu okna robi sie SPLASK...&lt;br /&gt;
--[[Wikipedysta:Vulgar|Vulgar]] 20:01, 10 mar 2006 (CET)&lt;br /&gt;
::Proponuje sie przyzwyczaic do mysli ze WIEKSZA CZESC POLSKICH INTERNAUTOW kozysta z rozdzielczosci 1024x768, a 1280x1024 (choc szybko sie przebija) nadal pozostaje (pewnie jeszcze z pol roku, moze rok) LUKSUSEM. --[[Wikipedysta:Jellonek|Jellonek]] 12:12, 11 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::Niezależnie od tego strona główna chyba bardzo dobrze się wymiaruje - ja przynajmniej nic nie zauważyłem. Natomiast osobiście uważam, że literatura i [[OS]]y mogłyby być wymienione tylko jako link do kategorii. Lista byłaby krótsza i bardziej zwięzła. --[[Wikipedysta:Piotrv|Piotrv]] 22:02, 11 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:Ładnie, miło i estetycznie. Mi się podoba.--[[Wikipedysta:Sikor|Sikor]] 15:18, 10 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:Dlaczego niema historii firmy Atari, kto zalozyl itd. oraz dlaczego pierwsza kategoria sa programy a w nich dema?! Najpierw pownien byc opis sprzetu potem programow a na koncu dema.[[Wikipedysta:Mazi|Mazi]]&lt;br /&gt;
&lt;br /&gt;
:Dobrze gada. O [[Atari]] nikt nie pisze, bo się pewnie boi ruszyć ten temat (najważniejszy tutaj) :) I wymieniona kolejność wg mnie też lepsza... --[[Wikipedysta:Piotrv|Piotrv]] 10:20, 18 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:Jeszcze jedno. Dlaczego nie ma screenow z dzialania roznych urzedzen. Przykladem moze tu byc [[XEP80]] albo [[Video Pinball]], ktory widze pierwszy raz na oczy i jestem ciekawy jak to wyglada po wlaczeniu. Zdjecie samego urzedzenie mnie nie satysfakcjonuje..[[Wikipedysta:Mazi|Mazi]]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Dyskusja:Strona_g%C5%82%C3%B3wna&amp;diff=10905</id>
		<title>Dyskusja:Strona główna</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Dyskusja:Strona_g%C5%82%C3%B3wna&amp;diff=10905"/>
		<updated>2006-03-18T09:20:54Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: /* Nowy wygląd strony głównej */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Literatura&#039;&#039;&#039;&#039;&#039; - czy nie jest przesadą umieszczanie takich tytułów jak &amp;quot;Chip&amp;quot; czy &amp;quot;PC World Computer&amp;quot;? Wszak to jest Atariki, a nie wiki...? Wypowiedzcie się na ten temat.--[[Wikipedysta:Sikor|Sikor]] 23:22, 27 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
Nie jest! A jesli nawet to prosze wykasuj Secret Service bo to duzo predzej nie pisalo o atari, a jesli juz cokolwiek bylo to nawet dot. nie STka a gier!, poza tym wg. zasady &amp;quot;ATARIKI nie WIKI&amp;quot; to proponuje wypier. takie haselka jak [[AMIGA]]. Ja proponuje Sikor wprzywrocic wykasoane hasla bo tam w odroznieniu od nie istotnych informacji dla Atariki umieszczane byly artykuly rzeczywiscie dot. Atari! --[[Wikipedysta:Vulgar|Vulgar]] 11:11, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::podaj bliższe przykłady, niejednostkowe. Pytanie moje było przytoczone dość dawno, nikt na nie nie odpowiedział, więc - zgodnie z zasadą - brak odpowiedzi jest aprobatą - wykasowałem. Zresztą - i tak były puste. Co do Secret Service - owszem, pismo dotyczy gier, ale przez bardzo długi okres czasu były tam także opisywane gry na ST i na małe Atari, więc jest jak najbardziej na miejscu. Co do Amigi - zgadzam się z Tobą, jak już - powinien być link zewnętrzny i już. --[[Wikipedysta:Sikor|Sikor]] 11:29, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::jestem za zachowaniem hasła [[Amiga]], jest to ostatni etap ewolucji [[XL]], więc dodanie paru zdań na ten temat jest na miejscu. Tak samo można by wywalić [[Atari MainFrame]] i wszystkie czasopisma traktujące o C=, gdybyśmy mieli być tacy dokładni.--[[Wikipedysta:Piotrv|Piotrv]] 12:23, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:co do atari mainframe - w pełni podzielam ten pogląd. Co do Amigi - hmm, czy do końca miała być następcą serii XE...? W sumie może zostać--[[Wikipedysta:Sikor|Sikor]] 13:01, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:Sikor, chodzi o serie [[XL]] - a nie [[XE]]. Zob. [[Amiga]]. --[[Wikipedysta:Piotrv|Piotrv]] 14:06, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
== propozycja rozszerzenia funkcjonalnosci... ==&lt;br /&gt;
&lt;br /&gt;
moze dodanie http://meta.wikimedia.org/wiki/FCKeditor nieco zwiekszylo zapal&lt;br /&gt;
edytujacych - co za tym idzie - ilosc dostepnych stron&lt;br /&gt;
--[[Wikipedysta:Jellonek|Jellonek]] 09:22, 13 lip 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Nowy wygląd strony głównej ==&lt;br /&gt;
&lt;br /&gt;
Rodacy!!! Wreszcie skończyłem nowy wygląd strony głównej. Proszę o uwagi. Poza tym mam propozycje aby wypunktowania pionowe zmienić na zwykłą listę poziomą &amp;quot;wyprzecinkowaną&amp;quot; ponieważ np. Literatura robi się już nieprzywoicie &amp;quot;wysoka&amp;quot;. Myślę, że wpłynie to pozytywnie na szybkość odnajdowywania informacji - nikomu się nie chce przewijać strony żeby zobaczyć co będzie dalej - tak będzie wszystko od razu widoczne. --[[Wikipedysta:Daniel Koźmiński|dely]] 14:51, 10 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
: Ladnie, troche inaczej niz w &amp;quot;oryginale&amp;quot;, chyba wole ta wersje od poprzedniej, jednak jeszcze cos tu brakuje... Kierowniku moze w kazdej z kategori, zwyczajnie zrobic jeszcze po dwie kolumny? --[[Wikipedysta:Vulgar|Vulgar]] 15:11, 10 mar 2006 (CET)&lt;br /&gt;
:: a pomyślałeś o tych, co mają mniejsze rozdzielczości?--[[Wikipedysta:Daniel Koźmiński|dely]] 18:52, 10 mar 2006 (CET)&lt;br /&gt;
::: To tylko propzycja, ale w zasadzie podobnie mozna powiedziec o tych co maja &amp;quot;za duze&amp;quot; rozdzielczosci ;) az sie prosi zeby cos tam wrzucic. Ale widze ew. rozwiazanie - sztywne tabelki! jezeli jet to mozliwe w wiki. albo m/w tak: http://atariki.krap.pl/index.php/Moja_glowna. Poza tym to proponuje cos zrobic z kategoriami bo np. kategoria PROGRAMOWANIE troche sie rzadzi innymmi zasadami--[[Wikipedysta:Vulgar|Vulgar]] 19:01, 10 mar 2006 (CET)&lt;br /&gt;
:::: No to Hameryki nie odkryłeś, proponowałem to powyżej. A tabelki stałeś szerokości w tym lejałcie nie przejdą. Nie zgadzam się.--[[Wikipedysta:Daniel Koźmiński|dely]] 19:53, 10 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::::: Ba! Mowa. Kolumb nawet jej nie odkrył :) Co mi tam. Ale jakos i tak wole sztywne tabelki bo po zminimalizowaniu okna robi sie SPLASK...&lt;br /&gt;
--[[Wikipedysta:Vulgar|Vulgar]] 20:01, 10 mar 2006 (CET)&lt;br /&gt;
::Proponuje sie przyzwyczaic do mysli ze WIEKSZA CZESC POLSKICH INTERNAUTOW kozysta z rozdzielczosci 1024x768, a 1280x1024 (choc szybko sie przebija) nadal pozostaje (pewnie jeszcze z pol roku, moze rok) LUKSUSEM. --[[Wikipedysta:Jellonek|Jellonek]] 12:12, 11 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::Niezależnie od tego strona główna chyba bardzo dobrze się wymiaruje - ja przynajmniej nic nie zauważyłem. Natomiast osobiście uważam, że literatura i [[OS]]y mogłyby być wymienione tylko jako link do kategorii. Lista byłaby krótsza i bardziej zwięzła. --[[Wikipedysta:Piotrv|Piotrv]] 22:02, 11 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:Ładnie, miło i estetycznie. Mi się podoba.--[[Wikipedysta:Sikor|Sikor]] 15:18, 10 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:Dlaczego niema historii firmy Atari, kto zalozyl itd. oraz dlaczego pierwsza kategoria sa programy a w nich dema?! Najpierw pownien byc opis sprzetu potem programow a na koncu dema.[[Wikipedysta:Mazi|Mazi]]&lt;br /&gt;
&lt;br /&gt;
:Dobrze gada. O [[Atari]] nikt nie pisze, bo się pewnie boi ruszyć ten temat (najważniejszy tutaj) :) I wymieniona kolejność wg mnie też lepsza... --[[Wikipedysta:Piotrv|Piotrv]] 10:20, 18 mar 2006 (CET)&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=SIO&amp;diff=11678</id>
		<title>SIO</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=SIO&amp;diff=11678"/>
		<updated>2006-03-15T08:39:27Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: /* Blok DCB - bold */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SIO - 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 nastepnie 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, $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.&amp;lt;/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;Czas oczekiwania - w sekundach - na pozytywną odpowiedź 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;$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.&amp;lt;/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;
Interfejs SIO znajdujący się w ROM-ie rozpoznaje pięć predefiniowanych urządzeń:&lt;br /&gt;
&lt;br /&gt;
* $31: dyskową pamięć masową (stację dysków, twardy dysk)&lt;br /&gt;
* $40: drukarkę&lt;br /&gt;
* $4F: bus master (moduł [[1090]])&lt;br /&gt;
* $50: port szeregowy RS-232C&lt;br /&gt;
* $60: magnetofon kasetowy&lt;br /&gt;
&lt;br /&gt;
Właściwy identyfikator urządzenia 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. Przypisanie identyfikatorów do poszczególnych urządzeń jest niezbyt konsekwentne, np. $31 to stacja dysków numer 1, ale $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.&lt;br /&gt;
&lt;br /&gt;
===Wykaz komend===&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 (stacja dysków)&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;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 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;br&amp;gt;&lt;br /&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;/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 (stacja dysków i magnetofon)&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 (stacja dysków)&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]]. 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;/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]]. 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;/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;???&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;(brak)&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;???&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;/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, 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;
&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 (stacja dysków)&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&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;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ść. Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dykietkę zgodnie z zapisaną konfiguracją (o ile jest w stanie ją zrealizować). 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;/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 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. Moe 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 [[Formaty handlerów systemowych|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 rowspan = 2&amp;gt;POLL&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$31 (stacja dysków)&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Stacje kompatybilne z US Doubler w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącego 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;td&amp;gt;$50 (RS-232)&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;&lt;br /&gt;
Komenda ta 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 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 nie reaguje), 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 POLL TYPE 4. 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;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 źrodł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 (stacja dysków)&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&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]]!&#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;&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 (stacja dysków)&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;&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;&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;(brak)&amp;lt;/td&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 (stacja dysków)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;(brak)&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&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&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;Interfejs [[850|Atari 850]] w odpowiedzi na tę komendę zwraca następującą sekwencję liczb: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78. Pierwsze cztery pary stanowią zapewne jakieś parametry czterech portów RS-232 modułu [[850]], ostatnia natomiast odnosi się do portu Centronics.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&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;Bajt statusu kontrolera WD 1772, 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;&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;STARSZY bajt liczby sektorów na ścieżce.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&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;
&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 nastarszy bajt liczby sektorów partycji twardego dysku (patrz 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;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;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pozostałe bity są zarezerwowane i powinny być wyzerowane.&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;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;
&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;
&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;
&lt;br /&gt;
* bit 0 = 1, sektory na ścieżce numerowane są od 0, a nie od 1.&lt;br /&gt;
* bit 1 = 1, sektory logiczne 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-ściezkowy pracuje w trybie 40-ścieżkowym.&lt;br /&gt;
&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;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 3&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;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;11&amp;lt;/td&amp;gt;&lt;br /&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;
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 sumą kontrolną; czas pomiędzy ustawieniem linii COMMAND a wysłaniem 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 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 numere), 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). Odpowiedź urządzenia musi nastąpić w czasie od 0 do 16 msec. od skasowania linii COMMAND przez komputer;&lt;br /&gt;
&lt;br /&gt;
6) jeśli komenda jest wykonalna i jest to odczyt 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) i na tym transmisja się kończy; w przeciwnym wypadku przesyłany jest kod $43 (&amp;quot;C&amp;quot;, jak Complete), a następnie blok danych zakończony sumą kontrolną i na tym transmisja się kończy; po przesłaniu potwierdzenia (&amp;quot;C&amp;quot;) blok danych po musi nadejść nie wcześniej niż w ciągu 1000 usec. i nie później niż w ciągu 1800 usec.;&lt;br /&gt;
&lt;br /&gt;
7) jeśli to jest zapis danych, komputer przesyła blok danych plus sumę kontrolną do urządzenia. Po jego przyjęciu i stwierdzeniu poprawności urządzenie odpowiada kodem $41 (&amp;quot;A&amp;quot;) i przystępuje do np. zapisania danych na nośnik. Po zapisie urządzenie informuje komputer 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 danych po potwierdzeniu (&amp;quot;A&amp;quot;) musi nastąpić nie wcześniej niż w ciągu 1000 usec. i nie później niż w ciągu 1800 usec. Przesłanie potwierdzenia końcowego (&amp;quot;C&amp;quot; lub &amp;quot;E&amp;quot;) musi nastąpić w czasie od 850 usec. do 16 msec. po przesłaniu bloku danych.&lt;br /&gt;
&lt;br /&gt;
Ogólnie potwierdzenie końcowe (&amp;quot;C&amp;quot; lub &amp;quot;E&amp;quot;) musi nadejść z urządzenia nie wcześniej niż po 250 usec. i nie później niż po 255 sekundach - czyli po 4 minutach i 15 sekundach - od nadesłania potwierdzenia komendy (&amp;quot;A&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Ogólnie schemat wymiany danych przy odczycie jest następujący:&lt;br /&gt;
&lt;br /&gt;
* komputer --&amp;gt; komenda 4 B + 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;
* komputer &amp;lt;-- blok danych + CRC &amp;lt;-- urządzenie&lt;br /&gt;
* koniec.&lt;br /&gt;
&lt;br /&gt;
Natomiast zapis wygląda tak:&lt;br /&gt;
&lt;br /&gt;
* komputer --&amp;gt; komenda 4 B + CRC --&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 + 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;
* koniec&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 (CRC).&lt;br /&gt;
&lt;br /&gt;
====Magnetofon====&lt;br /&gt;
&lt;br /&gt;
Opisany schemat dotyczy 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, sumę kontrolną oraz dwa dodatkowe bajty służące do pomiaru równomierności przesuwu taśmy.&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, systemów &amp;quot;turbo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
====US Doubler / Happy Warp====&lt;br /&gt;
&lt;br /&gt;
Protokół transmisji US Doublera (i zgodnego z nim [[Happy Warp]]), znany też jako UltraSpeed bądź po prostu &amp;quot;Ultra&amp;quot;, jest identyczny jak w standardzie, z tą różnicą, że układ [[POKEY]] programowany jest do pracy z prędkością 52 kbps. Praca w standardowym 19,2 kbps także jest możliwa. Stacja przełącza się automatycznie pomiędzy tymi dwoma trybami pracy, a do pomiaru żądanej przez komputer prędkości wykorzystuje pojawiający się na [[gniazdo SIO|złączu szeregowym Atari]] synchronizujący sygnał zegarowy (CLOCK OUT).&lt;br /&gt;
&lt;br /&gt;
Stacje z rozszerzeniem US Doubler implementują dodatkową komendę POLL (&#039;?&#039;). Wysłanie - w standardzie - tej komendy do stacji dysków powoduje, że zwraca ona 1 bajt stanowiący wartość, jaką należy wstawić do licznika układu [[POKEY]] celem uzyskania szybkiej transmisji. W standardowych stacjach US Doubler wartością tą jest $0A, ale stacje innych producentów dzięki temu mechanizmowi mogą implementować wyższe prędkości i wciąż pozostają zgodne z US Doublerem.&lt;br /&gt;
&lt;br /&gt;
====Atari XF-551 / CA-2001 ====&lt;br /&gt;
&lt;br /&gt;
Stacje [[XF551|Atari XF-551]] oraz [[CA2001|California Access 2001]] mogą pracować z prędkością 38400 bps. Dla zasygnalizowania stacji, że komputer żąda pracy w turbo, przy prędkości 38400 bps używany jest inny protokół transmisji będący - oczywiście - zmodyfikowaną wersją standardowego (patrz wyżej).&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. Jednakże drugi bajt tego bloku, zawierający wartość bajtu DCMND bloku DCB, jest zwiększony o 128 (ORA #$80). Po wysłaniu komendy komputer, identycznie jak w standardzie, czeka - cały czas mając układ [[POKEY]] zaprogramowany na 19200 bps - na potwierdzenie jej przyjęcia. Negatywna odpowiedź urządzenia na taką komendę oznacza, że nie zna ono tego protokołu transmisji i nie może pracować w turbo zgodnym z [[XF551|XF-551]].&lt;br /&gt;
&lt;br /&gt;
Odpowiedź pozytywna (&#039;A&#039;) jest sygnałem do przeprogramowania układu [[POKEY]] na większą prędkość. Komputer wstawia do licznika AUDF3/4 wartość $10; analogicznej operacji ze swojej strony dokonuje stacja dysków. 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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 38400 bps&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 38400 bps&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;
Budzącym zakłopotanie niedopatrzeniem jest w tym wszystkim niemożność odpytania stacji na okoliczność wartości, jaką ma mieć licznik [[POKEY]]-a w czasie przyspieszonej transmisji. Dodatkowym kłopotem posiadaczy [[CA2001|CA-2001]] jest to, że stację trzeba specjalnie zaprogramować (programem o nazwie [[Synchromesh]] dostarczonym przez producenta na dyskietce), żeby w ogóle działała w turbo. [[XF551|XF-551]] jest tej ostatniej wady na szczęście pozbawiona.&lt;br /&gt;
&lt;br /&gt;
====Indus GT / LDW 2000 Super====&lt;br /&gt;
&lt;br /&gt;
Protokół przyspieszonej transmisji używany przez stacje [[Indus GT]] oraz [[LDW Super 2000]] jest identyczny z tym opisanym powyżej dla [[XF551|Atari XF-551]] oraz [[CA2001|California Access 2001]]. Jedyną różnicą jest szybkość transmisji: dla LDW wynosi ona 68,2 kbps (wartość licznika [[POKEY]]-a - $06). Dla uzyskania tej prędkości konieczne jest uprzednie zaprogramowanie stacji programem [[Synchromesh]] dostarczonym przez producenta na dyskietce. Stacja pozostaje zaprogramowana aż do wyłączenia zasilania.&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 68,2 kbps&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 68,2 kbps&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;
====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 omawianej tu czwórki; 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;
===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;
====Blok DCB====&lt;br /&gt;
&lt;br /&gt;
Block DCB w tej wersji systemu jest rozszerzony do 16 bajtów i wygląda następująco:&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). 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.&amp;lt;/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;Czas oczekiwania - w sekundach - na pozytywną odpowiedź 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;$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.&amp;lt;/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;tr&amp;gt;&amp;lt;td&amp;gt;$030C&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DAUXA&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Trzeci bajt pomocniczy. Młodszy bajt starszego słowa 32-bitowego 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;$030D&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DAUXB&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Czwarty bajt pomocniczy. Starszy bajt starszego słowa 32-bitowego 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;$030E&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DBFX1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Najstarszy bajt adresu bufora.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$030F&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DBFX2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt zarezerwowany.&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;
====Sposób użycia====&lt;br /&gt;
&lt;br /&gt;
Dla utrzymania zgodności z dotychczasowym oprogramowaniem, a już zwłaszcza z dotychczasowymi sterownikami urządzeń podłączanych do szyny równoległej, wpisanie pod $000304/5/E 24-bitowego adresu nie da pożądanego wyniku; jeśliby bowiem urządzenie brało pod uwagę tylko 16 najmłodszych bitów adresu ignorując najstarszy bajt wpisany pod $00030E, wtedy - przy odczycie - dane zostałyby umieszczone nie tam, gdzie trzeba. Musi więc istnieć mechanizm, który zapobiega tego typu nieporozumieniom.&lt;br /&gt;
&lt;br /&gt;
W tym celu SIO definiuje trzy nowe urządzenia wirtualne, o kodach jak następuje:&lt;br /&gt;
&lt;br /&gt;
* $B1 (= $31 + $80) - stacja dysków&lt;br /&gt;
* $C0 (= $40 + $80) - drukarka&lt;br /&gt;
* $D0 (= $50 + $80) - RS-232C &lt;br /&gt;
&lt;br /&gt;
Wywołanie urządzenia z takim kodem w DDEVIC powiadamia sterownik SIO, że adres bufora w DCB jest 24-bitowy i że najstarszy bajt adresu jest pod $00030E (w przeciwnym wypadku SIO zakłada, że najstarszy bajt adresu to 0); oraz że numer sektora jest 32-bitowy i jest umieszczony w DAUX1/DAUX2/DAUXA/DAUXB (&#039;&#039;&#039;UWAGA: w przypadku szeregowych stacji dysków, [[SIO2IDE]], [[SIO2PC]] itp. dwa najstarsze bajty tego numeru są ignorowane&#039;&#039;&#039;, ale powinny być wyzerowane dla kompatybilności). Poza tym działanie urządzeń wirtualnych jest identyczne, jak tradycyjnych (odpowiednio $31, $40 i $50), a kod urządzenia jest przed wysłaniem na port szeregowy przekładany na kod rzeczywisty.&lt;br /&gt;
&lt;br /&gt;
Przyjmując komendę do wykonania SIO w żaden sposób nie sprawdza, czy dodatkowa pamięć w ogóle istnieje - zakłada się, że program sam stwierdzi jej istnienie (choćby za pomocą funkcji alokacji pamięci) przed próbą odczytu do niej danych.&lt;br /&gt;
&lt;br /&gt;
==Zobacz też==&lt;br /&gt;
* [http://www.atariarchives.org/dere/ De Re Atari]&lt;br /&gt;
&lt;br /&gt;
==Bibliografia==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Atari Home Computer System: Serial Input Output Interface, User&#039;s Handbook&#039;&#039;&lt;br /&gt;
* Harry B. Stewart, &#039;&#039;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>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Modele_Atari&amp;diff=12911</id>
		<title>Modele Atari</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Modele_Atari&amp;diff=12911"/>
		<updated>2006-03-15T08:35:23Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: /* Prototypy - 130ST lepiej */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 400/800 ==&lt;br /&gt;
&lt;br /&gt;
[[400]], [[600]], [[800]], [[800D]], [[1000]], [[1000-X]], [[1200]]&lt;br /&gt;
&lt;br /&gt;
== XL ==&lt;br /&gt;
&lt;br /&gt;
[[600XL]], [[800XL]], [[800XLD]], [[800XLCR]], [[900XLF]], [[1200XL]], [[1200XLS]], [[1250XLD]], [[1400XL]], [[1450XL]], [[1450XLD]], [[1600XL]], [[1650XLD]], [[1850XLD]].&lt;br /&gt;
&lt;br /&gt;
== XE ==&lt;br /&gt;
&lt;br /&gt;
[[65XE]], [[65XEP]], [[65XEM]], [[130XE]], [[800XE]], [[XEGS]]&lt;br /&gt;
&lt;br /&gt;
== ST/TT/Falcon ==&lt;br /&gt;
&lt;br /&gt;
* [[ST]], [[Mega ST]], [[Stacy]]&lt;br /&gt;
* [[STE]], [[Mega STE]], [[STBook]], [[STylus]]&lt;br /&gt;
* [[TT030]]&lt;br /&gt;
* [[Falcon030]]&lt;br /&gt;
&lt;br /&gt;
=== Systemy oparte o technologie Atari ===&lt;br /&gt;
* [[190ST]], &lt;br /&gt;
* [[Rhotron Falcon]], [[C-LAB Falcon]], [[Sonovista]]&lt;br /&gt;
&lt;br /&gt;
=== Prototypy ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.bambi.net/atari/atari_st_prototype.html Prototyp Atari ST]&lt;br /&gt;
* [[130ST]]&lt;br /&gt;
* [[2080STf]]&lt;br /&gt;
* [[4160ST]]&lt;br /&gt;
* [[4160STe]]&lt;br /&gt;
* [[STE plus|STE+]]&lt;br /&gt;
* [[EST]]&lt;br /&gt;
* [[TT/X]]&lt;br /&gt;
* [[Sparrow]], [[FX-1]], &lt;br /&gt;
* [[Microbox Falcon]], [[Falcon040]]&lt;br /&gt;
&lt;br /&gt;
=== Klony ===&lt;br /&gt;
&lt;br /&gt;
* [[Eagle]], [[Medusa]], [[Hades]], [[Milan]]&lt;br /&gt;
* [[Phenix]]&lt;br /&gt;
&lt;br /&gt;
== Konsole ==&lt;br /&gt;
* [[Video Pinball]]&lt;br /&gt;
* [[2600]], [[5200]], [[7800]]&lt;br /&gt;
* [[Lynx]], [[Panther (konsola)|Panther]], [[Jaguar]], [[JaguarDUO]], [[Jaguar II]], [[Painter]]&lt;br /&gt;
* [[Flashback (konsola)|Flashback]]&lt;br /&gt;
&lt;br /&gt;
== Kompatybilne z PC ==&lt;br /&gt;
&lt;br /&gt;
[[Portfolio (komputer)]], [[PC1]], [[PC2]], [[PC3]], [[PC4]], [[PC5]], [[ABC 286/30]], [[ABC 386SX II]], [[ABC 386DX II]], [[ABC N386SX]]&lt;br /&gt;
&lt;br /&gt;
== Inne ==&lt;br /&gt;
[[ATW800]]&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Menu Główne]]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=SIO&amp;diff=10829</id>
		<title>SIO</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=SIO&amp;diff=10829"/>
		<updated>2006-03-15T08:33:28Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: /* Blok PERCOM - bold */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SIO - 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 nastepnie 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, $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.&amp;lt;/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;Czas oczekiwania - w sekundach - na pozytywną odpowiedź 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;$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.&amp;lt;/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;
Interfejs SIO znajdujący się w ROM-ie rozpoznaje pięć predefiniowanych urządzeń:&lt;br /&gt;
&lt;br /&gt;
* $31: dyskową pamięć masową (stację dysków, twardy dysk)&lt;br /&gt;
* $40: drukarkę&lt;br /&gt;
* $4F: bus master (moduł [[1090]])&lt;br /&gt;
* $50: port szeregowy RS-232C&lt;br /&gt;
* $60: magnetofon kasetowy&lt;br /&gt;
&lt;br /&gt;
Właściwy identyfikator urządzenia 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. Przypisanie identyfikatorów do poszczególnych urządzeń jest niezbyt konsekwentne, np. $31 to stacja dysków numer 1, ale $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.&lt;br /&gt;
&lt;br /&gt;
===Wykaz komend===&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 (stacja dysków)&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;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 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;br&amp;gt;&lt;br /&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;/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 (stacja dysków i magnetofon)&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 (stacja dysków)&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]]. 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;/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]]. 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;/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;???&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;(brak)&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;???&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;/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, 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;
&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 (stacja dysków)&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&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;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ść. Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dykietkę zgodnie z zapisaną konfiguracją (o ile jest w stanie ją zrealizować). 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;/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 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. Moe 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 [[Formaty handlerów systemowych|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 rowspan = 2&amp;gt;POLL&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$31 (stacja dysków)&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Stacje kompatybilne z US Doubler w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącego 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;td&amp;gt;$50 (RS-232)&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;&lt;br /&gt;
Komenda ta 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 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 nie reaguje), 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 POLL TYPE 4. 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;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 źrodł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 (stacja dysków)&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&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 wiekunku ś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]]!&#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;&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 (stacja dysków)&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;&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;&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;(brak)&amp;lt;/td&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 (stacja dysków)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;(brak)&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&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&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;Interfejs [[850|Atari 850]] w odpowiedzi na tę komendę zwraca następującą sekwencję liczb: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78. Pierwsze cztery pary stanowią zapewne jakieś parametry czterech portów RS-232 modułu [[850]], ostatnia natomiast odnosi się do portu Centronics.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&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;Bajt statusu kontrolera WD 1772, 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;&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;STARSZY bajt liczby sektorów na ścieżce.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&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;
&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 nastarszy bajt liczby sektorów partycji twardego dysku (patrz 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;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;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pozostałe bity są zarezerwowane i powinny być wyzerowane.&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;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;
&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;
&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;
&lt;br /&gt;
* bit 0 = 1, sektory na ścieżce numerowane są od 0, a nie od 1.&lt;br /&gt;
* bit 1 = 1, sektory logiczne 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-ściezkowy pracuje w trybie 40-ścieżkowym.&lt;br /&gt;
&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;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 3&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;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;11&amp;lt;/td&amp;gt;&lt;br /&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;
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 sumą kontrolną; czas pomiędzy ustawieniem linii COMMAND a wysłaniem 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 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 numere), 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). Odpowiedź urządzenia musi nastąpić w czasie od 0 do 16 msec. od skasowania linii COMMAND przez komputer;&lt;br /&gt;
&lt;br /&gt;
6) jeśli komenda jest wykonalna i jest to odczyt 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) i na tym transmisja się kończy; w przeciwnym wypadku przesyłany jest kod $43 (&amp;quot;C&amp;quot;, jak Complete), a następnie blok danych zakończony sumą kontrolną i na tym transmisja się kończy; po przesłaniu potwierdzenia (&amp;quot;C&amp;quot;) blok danych po musi nadejść nie wcześniej niż w ciągu 1000 usec. i nie później niż w ciągu 1800 usec.;&lt;br /&gt;
&lt;br /&gt;
7) jeśli to jest zapis danych, komputer przesyła blok danych plus sumę kontrolną do urządzenia. Po jego przyjęciu i stwierdzeniu poprawności urządzenie odpowiada kodem $41 (&amp;quot;A&amp;quot;) i przystępuje do np. zapisania danych na nośnik. Po zapisie urządzenie informuje komputer 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 danych po potwierdzeniu (&amp;quot;A&amp;quot;) musi nastąpić nie wcześniej niż w ciągu 1000 usec. i nie później niż w ciągu 1800 usec. Przesłanie potwierdzenia końcowego (&amp;quot;C&amp;quot; lub &amp;quot;E&amp;quot;) musi nastąpić w czasie od 850 usec. do 16 msec. po przesłaniu bloku danych.&lt;br /&gt;
&lt;br /&gt;
Ogólnie potwierdzenie końcowe (&amp;quot;C&amp;quot; lub &amp;quot;E&amp;quot;) musi nadejść z urządzenia nie wcześniej niż po 250 usec. i nie później niż po 255 sekundach - czyli po 4 minutach i 15 sekundach - od nadesłania potwierdzenia komendy (&amp;quot;A&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Ogólnie schemat wymiany danych przy odczycie jest następujący:&lt;br /&gt;
&lt;br /&gt;
* komputer --&amp;gt; komenda 4 B + 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;
* komputer &amp;lt;-- blok danych + CRC &amp;lt;-- urządzenie&lt;br /&gt;
* koniec.&lt;br /&gt;
&lt;br /&gt;
Natomiast zapis wygląda tak:&lt;br /&gt;
&lt;br /&gt;
* komputer --&amp;gt; komenda 4 B + CRC --&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 + 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;
* koniec&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 (CRC).&lt;br /&gt;
&lt;br /&gt;
====Magnetofon====&lt;br /&gt;
&lt;br /&gt;
Opisany schemat dotyczy 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, sumę kontrolną oraz dwa dodatkowe bajty służące do pomiaru równomierności przesuwu taśmy.&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, systemów &amp;quot;turbo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
====US Doubler / Happy Warp====&lt;br /&gt;
&lt;br /&gt;
Protokół transmisji US Doublera (i zgodnego z nim [[Happy Warp]]), znany też jako UltraSpeed bądź po prostu &amp;quot;Ultra&amp;quot;, jest identyczny jak w standardzie, z tą różnicą, że układ [[POKEY]] programowany jest do pracy z prędkością 52 kbps. Praca w standardowym 19,2 kbps także jest możliwa. Stacja przełącza się automatycznie pomiędzy tymi dwoma trybami pracy, a do pomiaru żądanej przez komputer prędkości wykorzystuje pojawiający się na [[gniazdo SIO|złączu szeregowym Atari]] synchronizujący sygnał zegarowy (CLOCK OUT).&lt;br /&gt;
&lt;br /&gt;
Stacje z rozszerzeniem US Doubler implementują dodatkową komendę POLL (&#039;?&#039;). Wysłanie - w standardzie - tej komendy do stacji dysków powoduje, że zwraca ona 1 bajt stanowiący wartość, jaką należy wstawić do licznika układu [[POKEY]] celem uzyskania szybkiej transmisji. W standardowych stacjach US Doubler wartością tą jest $0A, ale stacje innych producentów dzięki temu mechanizmowi mogą implementować wyższe prędkości i wciąż pozostają zgodne z US Doublerem.&lt;br /&gt;
&lt;br /&gt;
====Atari XF-551 / CA-2001 ====&lt;br /&gt;
&lt;br /&gt;
Stacje [[XF551|Atari XF-551]] oraz [[CA2001|California Access 2001]] mogą pracować z prędkością 38400 bps. Dla zasygnalizowania stacji, że komputer żąda pracy w turbo, przy prędkości 38400 bps używany jest inny protokół transmisji będący - oczywiście - zmodyfikowaną wersją standardowego (patrz wyżej).&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. Jednakże drugi bajt tego bloku, zawierający wartość bajtu DCMND bloku DCB, jest zwiększony o 128 (ORA #$80). Po wysłaniu komendy komputer, identycznie jak w standardzie, czeka - cały czas mając układ [[POKEY]] zaprogramowany na 19200 bps - na potwierdzenie jej przyjęcia. Negatywna odpowiedź urządzenia na taką komendę oznacza, że nie zna ono tego protokołu transmisji i nie może pracować w turbo zgodnym z [[XF551|XF-551]].&lt;br /&gt;
&lt;br /&gt;
Odpowiedź pozytywna (&#039;A&#039;) jest sygnałem do przeprogramowania układu [[POKEY]] na większą prędkość. Komputer wstawia do licznika AUDF3/4 wartość $10; analogicznej operacji ze swojej strony dokonuje stacja dysków. 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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 38400 bps&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 38400 bps&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;
Budzącym zakłopotanie niedopatrzeniem jest w tym wszystkim niemożność odpytania stacji na okoliczność wartości, jaką ma mieć licznik [[POKEY]]-a w czasie przyspieszonej transmisji. Dodatkowym kłopotem posiadaczy [[CA2001|CA-2001]] jest to, że stację trzeba specjalnie zaprogramować (programem o nazwie [[Synchromesh]] dostarczonym przez producenta na dyskietce), żeby w ogóle działała w turbo. [[XF551|XF-551]] jest tej ostatniej wady na szczęście pozbawiona.&lt;br /&gt;
&lt;br /&gt;
====Indus GT / LDW 2000 Super====&lt;br /&gt;
&lt;br /&gt;
Protokół przyspieszonej transmisji używany przez stacje [[Indus GT]] oraz [[LDW Super 2000]] jest identyczny z tym opisanym powyżej dla [[XF551|Atari XF-551]] oraz [[CA2001|California Access 2001]]. Jedyną różnicą jest szybkość transmisji: dla LDW wynosi ona 68,2 kbps (wartość licznika [[POKEY]]-a - $06). Dla uzyskania tej prędkości konieczne jest uprzednie zaprogramowanie stacji programem [[Synchromesh]] dostarczonym przez producenta na dyskietce. Stacja pozostaje zaprogramowana aż do wyłączenia zasilania.&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 68,2 kbps&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 68,2 kbps&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;
====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 omawianej tu czwórki; 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;
===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;
====Blok DCB====&lt;br /&gt;
&lt;br /&gt;
Block DCB w tej wersji systemu jest rozszerzony do 16 bajtów i wygląda następująco:&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;Adres&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Etykieta&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wielkość&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Znaczenie&amp;lt;/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). 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.&amp;lt;/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;Czas oczekiwania - w sekundach - na pozytywną odpowiedź 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;$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.&amp;lt;/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;tr&amp;gt;&amp;lt;td&amp;gt;$030C&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DAUXA&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Trzeci bajt pomocniczy. Młodszy bajt starszego słowa 32-bitowego 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;$030D&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DAUXB&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Czwarty bajt pomocniczy. Starszy bajt starszego słowa 32-bitowego 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;$030E&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DBFX1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Najstarszy bajt adresu bufora.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$030F&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DBFX2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt zarezerwowany.&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;
====Sposób użycia====&lt;br /&gt;
&lt;br /&gt;
Dla utrzymania zgodności z dotychczasowym oprogramowaniem, a już zwłaszcza z dotychczasowymi sterownikami urządzeń podłączanych do szyny równoległej, wpisanie pod $000304/5/E 24-bitowego adresu nie da pożądanego wyniku; jeśliby bowiem urządzenie brało pod uwagę tylko 16 najmłodszych bitów adresu ignorując najstarszy bajt wpisany pod $00030E, wtedy - przy odczycie - dane zostałyby umieszczone nie tam, gdzie trzeba. Musi więc istnieć mechanizm, który zapobiega tego typu nieporozumieniom.&lt;br /&gt;
&lt;br /&gt;
W tym celu SIO definiuje trzy nowe urządzenia wirtualne, o kodach jak następuje:&lt;br /&gt;
&lt;br /&gt;
* $B1 (= $31 + $80) - stacja dysków&lt;br /&gt;
* $C0 (= $40 + $80) - drukarka&lt;br /&gt;
* $D0 (= $50 + $80) - RS-232C &lt;br /&gt;
&lt;br /&gt;
Wywołanie urządzenia z takim kodem w DDEVIC powiadamia sterownik SIO, że adres bufora w DCB jest 24-bitowy i że najstarszy bajt adresu jest pod $00030E (w przeciwnym wypadku SIO zakłada, że najstarszy bajt adresu to 0); oraz że numer sektora jest 32-bitowy i jest umieszczony w DAUX1/DAUX2/DAUXA/DAUXB (&#039;&#039;&#039;UWAGA: w przypadku szeregowych stacji dysków, [[SIO2IDE]], [[SIO2PC]] itp. dwa najstarsze bajty tego numeru są ignorowane&#039;&#039;&#039;, ale powinny być wyzerowane dla kompatybilności). Poza tym działanie urządzeń wirtualnych jest identyczne, jak tradycyjnych (odpowiednio $31, $40 i $50), a kod urządzenia jest przed wysłaniem na port szeregowy przekładany na kod rzeczywisty.&lt;br /&gt;
&lt;br /&gt;
Przyjmując komendę do wykonania SIO w żaden sposób nie sprawdza, czy dodatkowa pamięć w ogóle istnieje - zakłada się, że program sam stwierdzi jej istnienie (choćby za pomocą funkcji alokacji pamięci) przed próbą odczytu do niej danych.&lt;br /&gt;
&lt;br /&gt;
==Zobacz też==&lt;br /&gt;
* [http://www.atariarchives.org/dere/ De Re Atari]&lt;br /&gt;
&lt;br /&gt;
==Bibliografia==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Atari Home Computer System: Serial Input Output Interface, User&#039;s Handbook&#039;&#039;&lt;br /&gt;
* Harry B. Stewart, &#039;&#039;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>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=SIO&amp;diff=10828</id>
		<title>SIO</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=SIO&amp;diff=10828"/>
		<updated>2006-03-15T08:31:43Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: /* Pozostałe komendy - bold */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SIO - 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 nastepnie 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, $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.&amp;lt;/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;Czas oczekiwania - w sekundach - na pozytywną odpowiedź 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;$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.&amp;lt;/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;
Interfejs SIO znajdujący się w ROM-ie rozpoznaje pięć predefiniowanych urządzeń:&lt;br /&gt;
&lt;br /&gt;
* $31: dyskową pamięć masową (stację dysków, twardy dysk)&lt;br /&gt;
* $40: drukarkę&lt;br /&gt;
* $4F: bus master (moduł [[1090]])&lt;br /&gt;
* $50: port szeregowy RS-232C&lt;br /&gt;
* $60: magnetofon kasetowy&lt;br /&gt;
&lt;br /&gt;
Właściwy identyfikator urządzenia 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. Przypisanie identyfikatorów do poszczególnych urządzeń jest niezbyt konsekwentne, np. $31 to stacja dysków numer 1, ale $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.&lt;br /&gt;
&lt;br /&gt;
===Wykaz komend===&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 (stacja dysków)&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;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 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;br&amp;gt;&lt;br /&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;/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 (stacja dysków i magnetofon)&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 (stacja dysków)&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]]. 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;/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]]. 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;/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;???&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;(brak)&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;???&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;/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, 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;
&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 (stacja dysków)&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&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;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ść. Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dykietkę zgodnie z zapisaną konfiguracją (o ile jest w stanie ją zrealizować). 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;/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 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. Moe 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 [[Formaty handlerów systemowych|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 rowspan = 2&amp;gt;POLL&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$31 (stacja dysków)&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Stacje kompatybilne z US Doubler w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącego 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;td&amp;gt;$50 (RS-232)&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;&lt;br /&gt;
Komenda ta 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 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 nie reaguje), 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 POLL TYPE 4. 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;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 źrodł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 (stacja dysków)&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&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 wiekunku ś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]]!&#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;&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 (stacja dysków)&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;&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;&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;(brak)&amp;lt;/td&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 (stacja dysków)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;(brak)&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&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&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;Interfejs [[850|Atari 850]] w odpowiedzi na tę komendę zwraca następującą sekwencję liczb: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78. Pierwsze cztery pary stanowią zapewne jakieś parametry czterech portów RS-232 modułu [[850]], ostatnia natomiast odnosi się do portu Centronics.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&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;Bajt statusu kontrolera WD 1772, 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;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Opis&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;&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;STARSZY bajt liczby sektorów na ścieżce.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&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;
&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 nastarszy bajt liczby sektorów partycji twardego dysku (patrz 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;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;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pozostałe bity są zarezerwowane i powinny być wyzerowane.&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;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;
&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;
&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;
&lt;br /&gt;
* bit 0 = 1, sektory na ścieżce numerowane są od 0, a nie od 1.&lt;br /&gt;
* bit 1 = 1, sektory logiczne 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-ściezkowy pracuje w trybie 40-ścieżkowym.&lt;br /&gt;
&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;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 3&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;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;11&amp;lt;/td&amp;gt;&lt;br /&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;
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 sumą kontrolną; czas pomiędzy ustawieniem linii COMMAND a wysłaniem 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 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 numere), 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). Odpowiedź urządzenia musi nastąpić w czasie od 0 do 16 msec. od skasowania linii COMMAND przez komputer;&lt;br /&gt;
&lt;br /&gt;
6) jeśli komenda jest wykonalna i jest to odczyt 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) i na tym transmisja się kończy; w przeciwnym wypadku przesyłany jest kod $43 (&amp;quot;C&amp;quot;, jak Complete), a następnie blok danych zakończony sumą kontrolną i na tym transmisja się kończy; po przesłaniu potwierdzenia (&amp;quot;C&amp;quot;) blok danych po musi nadejść nie wcześniej niż w ciągu 1000 usec. i nie później niż w ciągu 1800 usec.;&lt;br /&gt;
&lt;br /&gt;
7) jeśli to jest zapis danych, komputer przesyła blok danych plus sumę kontrolną do urządzenia. Po jego przyjęciu i stwierdzeniu poprawności urządzenie odpowiada kodem $41 (&amp;quot;A&amp;quot;) i przystępuje do np. zapisania danych na nośnik. Po zapisie urządzenie informuje komputer 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 danych po potwierdzeniu (&amp;quot;A&amp;quot;) musi nastąpić nie wcześniej niż w ciągu 1000 usec. i nie później niż w ciągu 1800 usec. Przesłanie potwierdzenia końcowego (&amp;quot;C&amp;quot; lub &amp;quot;E&amp;quot;) musi nastąpić w czasie od 850 usec. do 16 msec. po przesłaniu bloku danych.&lt;br /&gt;
&lt;br /&gt;
Ogólnie potwierdzenie końcowe (&amp;quot;C&amp;quot; lub &amp;quot;E&amp;quot;) musi nadejść z urządzenia nie wcześniej niż po 250 usec. i nie później niż po 255 sekundach - czyli po 4 minutach i 15 sekundach - od nadesłania potwierdzenia komendy (&amp;quot;A&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Ogólnie schemat wymiany danych przy odczycie jest następujący:&lt;br /&gt;
&lt;br /&gt;
* komputer --&amp;gt; komenda 4 B + 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;
* komputer &amp;lt;-- blok danych + CRC &amp;lt;-- urządzenie&lt;br /&gt;
* koniec.&lt;br /&gt;
&lt;br /&gt;
Natomiast zapis wygląda tak:&lt;br /&gt;
&lt;br /&gt;
* komputer --&amp;gt; komenda 4 B + CRC --&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 + 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;
* koniec&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 (CRC).&lt;br /&gt;
&lt;br /&gt;
====Magnetofon====&lt;br /&gt;
&lt;br /&gt;
Opisany schemat dotyczy 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, sumę kontrolną oraz dwa dodatkowe bajty służące do pomiaru równomierności przesuwu taśmy.&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, systemów &amp;quot;turbo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
====US Doubler / Happy Warp====&lt;br /&gt;
&lt;br /&gt;
Protokół transmisji US Doublera (i zgodnego z nim [[Happy Warp]]), znany też jako UltraSpeed bądź po prostu &amp;quot;Ultra&amp;quot;, jest identyczny jak w standardzie, z tą różnicą, że układ [[POKEY]] programowany jest do pracy z prędkością 52 kbps. Praca w standardowym 19,2 kbps także jest możliwa. Stacja przełącza się automatycznie pomiędzy tymi dwoma trybami pracy, a do pomiaru żądanej przez komputer prędkości wykorzystuje pojawiający się na [[gniazdo SIO|złączu szeregowym Atari]] synchronizujący sygnał zegarowy (CLOCK OUT).&lt;br /&gt;
&lt;br /&gt;
Stacje z rozszerzeniem US Doubler implementują dodatkową komendę POLL (&#039;?&#039;). Wysłanie - w standardzie - tej komendy do stacji dysków powoduje, że zwraca ona 1 bajt stanowiący wartość, jaką należy wstawić do licznika układu [[POKEY]] celem uzyskania szybkiej transmisji. W standardowych stacjach US Doubler wartością tą jest $0A, ale stacje innych producentów dzięki temu mechanizmowi mogą implementować wyższe prędkości i wciąż pozostają zgodne z US Doublerem.&lt;br /&gt;
&lt;br /&gt;
====Atari XF-551 / CA-2001 ====&lt;br /&gt;
&lt;br /&gt;
Stacje [[XF551|Atari XF-551]] oraz [[CA2001|California Access 2001]] mogą pracować z prędkością 38400 bps. Dla zasygnalizowania stacji, że komputer żąda pracy w turbo, przy prędkości 38400 bps używany jest inny protokół transmisji będący - oczywiście - zmodyfikowaną wersją standardowego (patrz wyżej).&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. Jednakże drugi bajt tego bloku, zawierający wartość bajtu DCMND bloku DCB, jest zwiększony o 128 (ORA #$80). Po wysłaniu komendy komputer, identycznie jak w standardzie, czeka - cały czas mając układ [[POKEY]] zaprogramowany na 19200 bps - na potwierdzenie jej przyjęcia. Negatywna odpowiedź urządzenia na taką komendę oznacza, że nie zna ono tego protokołu transmisji i nie może pracować w turbo zgodnym z [[XF551|XF-551]].&lt;br /&gt;
&lt;br /&gt;
Odpowiedź pozytywna (&#039;A&#039;) jest sygnałem do przeprogramowania układu [[POKEY]] na większą prędkość. Komputer wstawia do licznika AUDF3/4 wartość $10; analogicznej operacji ze swojej strony dokonuje stacja dysków. 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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 38400 bps&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 38400 bps&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;
Budzącym zakłopotanie niedopatrzeniem jest w tym wszystkim niemożność odpytania stacji na okoliczność wartości, jaką ma mieć licznik [[POKEY]]-a w czasie przyspieszonej transmisji. Dodatkowym kłopotem posiadaczy [[CA2001|CA-2001]] jest to, że stację trzeba specjalnie zaprogramować (programem o nazwie [[Synchromesh]] dostarczonym przez producenta na dyskietce), żeby w ogóle działała w turbo. [[XF551|XF-551]] jest tej ostatniej wady na szczęście pozbawiona.&lt;br /&gt;
&lt;br /&gt;
====Indus GT / LDW 2000 Super====&lt;br /&gt;
&lt;br /&gt;
Protokół przyspieszonej transmisji używany przez stacje [[Indus GT]] oraz [[LDW Super 2000]] jest identyczny z tym opisanym powyżej dla [[XF551|Atari XF-551]] oraz [[CA2001|California Access 2001]]. Jedyną różnicą jest szybkość transmisji: dla LDW wynosi ona 68,2 kbps (wartość licznika [[POKEY]]-a - $06). Dla uzyskania tej prędkości konieczne jest uprzednie zaprogramowanie stacji programem [[Synchromesh]] dostarczonym przez producenta na dyskietce. Stacja pozostaje zaprogramowana aż do wyłączenia zasilania.&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 68,2 kbps&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 68,2 kbps&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;
====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 omawianej tu czwórki; 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;
===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;
====Blok DCB====&lt;br /&gt;
&lt;br /&gt;
Block DCB w tej wersji systemu jest rozszerzony do 16 bajtów i wygląda następująco:&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;Adres&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Etykieta&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wielkość&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Znaczenie&amp;lt;/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). 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.&amp;lt;/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;Czas oczekiwania - w sekundach - na pozytywną odpowiedź 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;$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.&amp;lt;/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;tr&amp;gt;&amp;lt;td&amp;gt;$030C&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DAUXA&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Trzeci bajt pomocniczy. Młodszy bajt starszego słowa 32-bitowego 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;$030D&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DAUXB&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Czwarty bajt pomocniczy. Starszy bajt starszego słowa 32-bitowego 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;$030E&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DBFX1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Najstarszy bajt adresu bufora.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$030F&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DBFX2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt zarezerwowany.&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;
====Sposób użycia====&lt;br /&gt;
&lt;br /&gt;
Dla utrzymania zgodności z dotychczasowym oprogramowaniem, a już zwłaszcza z dotychczasowymi sterownikami urządzeń podłączanych do szyny równoległej, wpisanie pod $000304/5/E 24-bitowego adresu nie da pożądanego wyniku; jeśliby bowiem urządzenie brało pod uwagę tylko 16 najmłodszych bitów adresu ignorując najstarszy bajt wpisany pod $00030E, wtedy - przy odczycie - dane zostałyby umieszczone nie tam, gdzie trzeba. Musi więc istnieć mechanizm, który zapobiega tego typu nieporozumieniom.&lt;br /&gt;
&lt;br /&gt;
W tym celu SIO definiuje trzy nowe urządzenia wirtualne, o kodach jak następuje:&lt;br /&gt;
&lt;br /&gt;
* $B1 (= $31 + $80) - stacja dysków&lt;br /&gt;
* $C0 (= $40 + $80) - drukarka&lt;br /&gt;
* $D0 (= $50 + $80) - RS-232C &lt;br /&gt;
&lt;br /&gt;
Wywołanie urządzenia z takim kodem w DDEVIC powiadamia sterownik SIO, że adres bufora w DCB jest 24-bitowy i że najstarszy bajt adresu jest pod $00030E (w przeciwnym wypadku SIO zakłada, że najstarszy bajt adresu to 0); oraz że numer sektora jest 32-bitowy i jest umieszczony w DAUX1/DAUX2/DAUXA/DAUXB (&#039;&#039;&#039;UWAGA: w przypadku szeregowych stacji dysków, [[SIO2IDE]], [[SIO2PC]] itp. dwa najstarsze bajty tego numeru są ignorowane&#039;&#039;&#039;, ale powinny być wyzerowane dla kompatybilności). Poza tym działanie urządzeń wirtualnych jest identyczne, jak tradycyjnych (odpowiednio $31, $40 i $50), a kod urządzenia jest przed wysłaniem na port szeregowy przekładany na kod rzeczywisty.&lt;br /&gt;
&lt;br /&gt;
Przyjmując komendę do wykonania SIO w żaden sposób nie sprawdza, czy dodatkowa pamięć w ogóle istnieje - zakłada się, że program sam stwierdzi jej istnienie (choćby za pomocą funkcji alokacji pamięci) przed próbą odczytu do niej danych.&lt;br /&gt;
&lt;br /&gt;
==Zobacz też==&lt;br /&gt;
* [http://www.atariarchives.org/dere/ De Re Atari]&lt;br /&gt;
&lt;br /&gt;
==Bibliografia==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Atari Home Computer System: Serial Input Output Interface, User&#039;s Handbook&#039;&#039;&lt;br /&gt;
* Harry B. Stewart, &#039;&#039;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>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=SIO&amp;diff=10827</id>
		<title>SIO</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=SIO&amp;diff=10827"/>
		<updated>2006-03-15T08:30:26Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: /* Komendy specjalne - bold */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SIO - 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 nastepnie 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, $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.&amp;lt;/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;Czas oczekiwania - w sekundach - na pozytywną odpowiedź 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;$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.&amp;lt;/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;
Interfejs SIO znajdujący się w ROM-ie rozpoznaje pięć predefiniowanych urządzeń:&lt;br /&gt;
&lt;br /&gt;
* $31: dyskową pamięć masową (stację dysków, twardy dysk)&lt;br /&gt;
* $40: drukarkę&lt;br /&gt;
* $4F: bus master (moduł [[1090]])&lt;br /&gt;
* $50: port szeregowy RS-232C&lt;br /&gt;
* $60: magnetofon kasetowy&lt;br /&gt;
&lt;br /&gt;
Właściwy identyfikator urządzenia 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. Przypisanie identyfikatorów do poszczególnych urządzeń jest niezbyt konsekwentne, np. $31 to stacja dysków numer 1, ale $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.&lt;br /&gt;
&lt;br /&gt;
===Wykaz komend===&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 (stacja dysków)&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;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 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;br&amp;gt;&lt;br /&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;/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 (stacja dysków i magnetofon)&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 (stacja dysków)&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]]. 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;/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]]. 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;/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;???&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;(brak)&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;???&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;/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, 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;
&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 (stacja dysków)&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&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;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ść. Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dykietkę zgodnie z zapisaną konfiguracją (o ile jest w stanie ją zrealizować). 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;/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 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. Moe 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 [[Formaty handlerów systemowych|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 rowspan = 2&amp;gt;POLL&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$31 (stacja dysków)&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Stacje kompatybilne z US Doubler w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącego 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;td&amp;gt;$50 (RS-232)&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;&lt;br /&gt;
Komenda ta 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 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 nie reaguje), 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 POLL TYPE 4. 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;Kod&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nazwa&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Urządzenie&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Ilość danych&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Opis&amp;lt;/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;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 źrodł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 (stacja dysków)&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&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 wiekunku ś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]]!&#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;&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 (stacja dysków)&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;&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;&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;(brak)&amp;lt;/td&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 (stacja dysków)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;(brak)&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&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&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;Interfejs [[850|Atari 850]] w odpowiedzi na tę komendę zwraca następującą sekwencję liczb: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78. Pierwsze cztery pary stanowią zapewne jakieś parametry czterech portów RS-232 modułu [[850]], ostatnia natomiast odnosi się do portu Centronics.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&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;Bajt statusu kontrolera WD 1772, 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;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Opis&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;&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;STARSZY bajt liczby sektorów na ścieżce.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&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;
&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 nastarszy bajt liczby sektorów partycji twardego dysku (patrz 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;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;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pozostałe bity są zarezerwowane i powinny być wyzerowane.&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;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;
&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;
&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;
&lt;br /&gt;
* bit 0 = 1, sektory na ścieżce numerowane są od 0, a nie od 1.&lt;br /&gt;
* bit 1 = 1, sektory logiczne 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-ściezkowy pracuje w trybie 40-ścieżkowym.&lt;br /&gt;
&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;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 3&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;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;11&amp;lt;/td&amp;gt;&lt;br /&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;
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 sumą kontrolną; czas pomiędzy ustawieniem linii COMMAND a wysłaniem 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 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 numere), 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). Odpowiedź urządzenia musi nastąpić w czasie od 0 do 16 msec. od skasowania linii COMMAND przez komputer;&lt;br /&gt;
&lt;br /&gt;
6) jeśli komenda jest wykonalna i jest to odczyt 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) i na tym transmisja się kończy; w przeciwnym wypadku przesyłany jest kod $43 (&amp;quot;C&amp;quot;, jak Complete), a następnie blok danych zakończony sumą kontrolną i na tym transmisja się kończy; po przesłaniu potwierdzenia (&amp;quot;C&amp;quot;) blok danych po musi nadejść nie wcześniej niż w ciągu 1000 usec. i nie później niż w ciągu 1800 usec.;&lt;br /&gt;
&lt;br /&gt;
7) jeśli to jest zapis danych, komputer przesyła blok danych plus sumę kontrolną do urządzenia. Po jego przyjęciu i stwierdzeniu poprawności urządzenie odpowiada kodem $41 (&amp;quot;A&amp;quot;) i przystępuje do np. zapisania danych na nośnik. Po zapisie urządzenie informuje komputer 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 danych po potwierdzeniu (&amp;quot;A&amp;quot;) musi nastąpić nie wcześniej niż w ciągu 1000 usec. i nie później niż w ciągu 1800 usec. Przesłanie potwierdzenia końcowego (&amp;quot;C&amp;quot; lub &amp;quot;E&amp;quot;) musi nastąpić w czasie od 850 usec. do 16 msec. po przesłaniu bloku danych.&lt;br /&gt;
&lt;br /&gt;
Ogólnie potwierdzenie końcowe (&amp;quot;C&amp;quot; lub &amp;quot;E&amp;quot;) musi nadejść z urządzenia nie wcześniej niż po 250 usec. i nie później niż po 255 sekundach - czyli po 4 minutach i 15 sekundach - od nadesłania potwierdzenia komendy (&amp;quot;A&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Ogólnie schemat wymiany danych przy odczycie jest następujący:&lt;br /&gt;
&lt;br /&gt;
* komputer --&amp;gt; komenda 4 B + 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;
* komputer &amp;lt;-- blok danych + CRC &amp;lt;-- urządzenie&lt;br /&gt;
* koniec.&lt;br /&gt;
&lt;br /&gt;
Natomiast zapis wygląda tak:&lt;br /&gt;
&lt;br /&gt;
* komputer --&amp;gt; komenda 4 B + CRC --&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 + 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;
* koniec&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 (CRC).&lt;br /&gt;
&lt;br /&gt;
====Magnetofon====&lt;br /&gt;
&lt;br /&gt;
Opisany schemat dotyczy 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, sumę kontrolną oraz dwa dodatkowe bajty służące do pomiaru równomierności przesuwu taśmy.&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, systemów &amp;quot;turbo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
====US Doubler / Happy Warp====&lt;br /&gt;
&lt;br /&gt;
Protokół transmisji US Doublera (i zgodnego z nim [[Happy Warp]]), znany też jako UltraSpeed bądź po prostu &amp;quot;Ultra&amp;quot;, jest identyczny jak w standardzie, z tą różnicą, że układ [[POKEY]] programowany jest do pracy z prędkością 52 kbps. Praca w standardowym 19,2 kbps także jest możliwa. Stacja przełącza się automatycznie pomiędzy tymi dwoma trybami pracy, a do pomiaru żądanej przez komputer prędkości wykorzystuje pojawiający się na [[gniazdo SIO|złączu szeregowym Atari]] synchronizujący sygnał zegarowy (CLOCK OUT).&lt;br /&gt;
&lt;br /&gt;
Stacje z rozszerzeniem US Doubler implementują dodatkową komendę POLL (&#039;?&#039;). Wysłanie - w standardzie - tej komendy do stacji dysków powoduje, że zwraca ona 1 bajt stanowiący wartość, jaką należy wstawić do licznika układu [[POKEY]] celem uzyskania szybkiej transmisji. W standardowych stacjach US Doubler wartością tą jest $0A, ale stacje innych producentów dzięki temu mechanizmowi mogą implementować wyższe prędkości i wciąż pozostają zgodne z US Doublerem.&lt;br /&gt;
&lt;br /&gt;
====Atari XF-551 / CA-2001 ====&lt;br /&gt;
&lt;br /&gt;
Stacje [[XF551|Atari XF-551]] oraz [[CA2001|California Access 2001]] mogą pracować z prędkością 38400 bps. Dla zasygnalizowania stacji, że komputer żąda pracy w turbo, przy prędkości 38400 bps używany jest inny protokół transmisji będący - oczywiście - zmodyfikowaną wersją standardowego (patrz wyżej).&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. Jednakże drugi bajt tego bloku, zawierający wartość bajtu DCMND bloku DCB, jest zwiększony o 128 (ORA #$80). Po wysłaniu komendy komputer, identycznie jak w standardzie, czeka - cały czas mając układ [[POKEY]] zaprogramowany na 19200 bps - na potwierdzenie jej przyjęcia. Negatywna odpowiedź urządzenia na taką komendę oznacza, że nie zna ono tego protokołu transmisji i nie może pracować w turbo zgodnym z [[XF551|XF-551]].&lt;br /&gt;
&lt;br /&gt;
Odpowiedź pozytywna (&#039;A&#039;) jest sygnałem do przeprogramowania układu [[POKEY]] na większą prędkość. Komputer wstawia do licznika AUDF3/4 wartość $10; analogicznej operacji ze swojej strony dokonuje stacja dysków. 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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 38400 bps&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 38400 bps&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;
Budzącym zakłopotanie niedopatrzeniem jest w tym wszystkim niemożność odpytania stacji na okoliczność wartości, jaką ma mieć licznik [[POKEY]]-a w czasie przyspieszonej transmisji. Dodatkowym kłopotem posiadaczy [[CA2001|CA-2001]] jest to, że stację trzeba specjalnie zaprogramować (programem o nazwie [[Synchromesh]] dostarczonym przez producenta na dyskietce), żeby w ogóle działała w turbo. [[XF551|XF-551]] jest tej ostatniej wady na szczęście pozbawiona.&lt;br /&gt;
&lt;br /&gt;
====Indus GT / LDW 2000 Super====&lt;br /&gt;
&lt;br /&gt;
Protokół przyspieszonej transmisji używany przez stacje [[Indus GT]] oraz [[LDW Super 2000]] jest identyczny z tym opisanym powyżej dla [[XF551|Atari XF-551]] oraz [[CA2001|California Access 2001]]. Jedyną różnicą jest szybkość transmisji: dla LDW wynosi ona 68,2 kbps (wartość licznika [[POKEY]]-a - $06). Dla uzyskania tej prędkości konieczne jest uprzednie zaprogramowanie stacji programem [[Synchromesh]] dostarczonym przez producenta na dyskietce. Stacja pozostaje zaprogramowana aż do wyłączenia zasilania.&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 68,2 kbps&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 68,2 kbps&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;
====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 omawianej tu czwórki; 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;
===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;
====Blok DCB====&lt;br /&gt;
&lt;br /&gt;
Block DCB w tej wersji systemu jest rozszerzony do 16 bajtów i wygląda następująco:&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;Adres&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Etykieta&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wielkość&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Znaczenie&amp;lt;/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). 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.&amp;lt;/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;Czas oczekiwania - w sekundach - na pozytywną odpowiedź 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;$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.&amp;lt;/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;tr&amp;gt;&amp;lt;td&amp;gt;$030C&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DAUXA&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Trzeci bajt pomocniczy. Młodszy bajt starszego słowa 32-bitowego 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;$030D&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DAUXB&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Czwarty bajt pomocniczy. Starszy bajt starszego słowa 32-bitowego 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;$030E&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DBFX1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Najstarszy bajt adresu bufora.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$030F&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DBFX2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt zarezerwowany.&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;
====Sposób użycia====&lt;br /&gt;
&lt;br /&gt;
Dla utrzymania zgodności z dotychczasowym oprogramowaniem, a już zwłaszcza z dotychczasowymi sterownikami urządzeń podłączanych do szyny równoległej, wpisanie pod $000304/5/E 24-bitowego adresu nie da pożądanego wyniku; jeśliby bowiem urządzenie brało pod uwagę tylko 16 najmłodszych bitów adresu ignorując najstarszy bajt wpisany pod $00030E, wtedy - przy odczycie - dane zostałyby umieszczone nie tam, gdzie trzeba. Musi więc istnieć mechanizm, który zapobiega tego typu nieporozumieniom.&lt;br /&gt;
&lt;br /&gt;
W tym celu SIO definiuje trzy nowe urządzenia wirtualne, o kodach jak następuje:&lt;br /&gt;
&lt;br /&gt;
* $B1 (= $31 + $80) - stacja dysków&lt;br /&gt;
* $C0 (= $40 + $80) - drukarka&lt;br /&gt;
* $D0 (= $50 + $80) - RS-232C &lt;br /&gt;
&lt;br /&gt;
Wywołanie urządzenia z takim kodem w DDEVIC powiadamia sterownik SIO, że adres bufora w DCB jest 24-bitowy i że najstarszy bajt adresu jest pod $00030E (w przeciwnym wypadku SIO zakłada, że najstarszy bajt adresu to 0); oraz że numer sektora jest 32-bitowy i jest umieszczony w DAUX1/DAUX2/DAUXA/DAUXB (&#039;&#039;&#039;UWAGA: w przypadku szeregowych stacji dysków, [[SIO2IDE]], [[SIO2PC]] itp. dwa najstarsze bajty tego numeru są ignorowane&#039;&#039;&#039;, ale powinny być wyzerowane dla kompatybilności). Poza tym działanie urządzeń wirtualnych jest identyczne, jak tradycyjnych (odpowiednio $31, $40 i $50), a kod urządzenia jest przed wysłaniem na port szeregowy przekładany na kod rzeczywisty.&lt;br /&gt;
&lt;br /&gt;
Przyjmując komendę do wykonania SIO w żaden sposób nie sprawdza, czy dodatkowa pamięć w ogóle istnieje - zakłada się, że program sam stwierdzi jej istnienie (choćby za pomocą funkcji alokacji pamięci) przed próbą odczytu do niej danych.&lt;br /&gt;
&lt;br /&gt;
==Zobacz też==&lt;br /&gt;
* [http://www.atariarchives.org/dere/ De Re Atari]&lt;br /&gt;
&lt;br /&gt;
==Bibliografia==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Atari Home Computer System: Serial Input Output Interface, User&#039;s Handbook&#039;&#039;&lt;br /&gt;
* Harry B. Stewart, &#039;&#039;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>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=SIO&amp;diff=10826</id>
		<title>SIO</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=SIO&amp;diff=10826"/>
		<updated>2006-03-15T08:29:10Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: /* Komendy PERCOM - bold */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SIO - 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 nastepnie 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, $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.&amp;lt;/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;Czas oczekiwania - w sekundach - na pozytywną odpowiedź 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;$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.&amp;lt;/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;
Interfejs SIO znajdujący się w ROM-ie rozpoznaje pięć predefiniowanych urządzeń:&lt;br /&gt;
&lt;br /&gt;
* $31: dyskową pamięć masową (stację dysków, twardy dysk)&lt;br /&gt;
* $40: drukarkę&lt;br /&gt;
* $4F: bus master (moduł [[1090]])&lt;br /&gt;
* $50: port szeregowy RS-232C&lt;br /&gt;
* $60: magnetofon kasetowy&lt;br /&gt;
&lt;br /&gt;
Właściwy identyfikator urządzenia 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. Przypisanie identyfikatorów do poszczególnych urządzeń jest niezbyt konsekwentne, np. $31 to stacja dysków numer 1, ale $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.&lt;br /&gt;
&lt;br /&gt;
===Wykaz komend===&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 (stacja dysków)&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;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 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;br&amp;gt;&lt;br /&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;/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 (stacja dysków i magnetofon)&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 (stacja dysków)&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]]. 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;/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]]. 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;/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;???&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;(brak)&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;???&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;/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, 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;
&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 (stacja dysków)&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&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;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ść. Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dykietkę zgodnie z zapisaną konfiguracją (o ile jest w stanie ją zrealizować). 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;/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 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;Kod&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nazwa&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Urządzenie&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Ilość danych&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Opis&amp;lt;/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. Moe 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 [[Formaty handlerów systemowych|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 rowspan = 2&amp;gt;POLL&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$31 (stacja dysków)&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Stacje kompatybilne z US Doubler w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącego 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;td&amp;gt;$50 (RS-232)&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;&lt;br /&gt;
Komenda ta 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 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 nie reaguje), 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 POLL TYPE 4. 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;Kod&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nazwa&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Urządzenie&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Ilość danych&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Opis&amp;lt;/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;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 źrodł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 (stacja dysków)&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&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 wiekunku ś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]]!&#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;&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 (stacja dysków)&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;&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;&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;(brak)&amp;lt;/td&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 (stacja dysków)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;(brak)&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&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&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;Interfejs [[850|Atari 850]] w odpowiedzi na tę komendę zwraca następującą sekwencję liczb: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78. Pierwsze cztery pary stanowią zapewne jakieś parametry czterech portów RS-232 modułu [[850]], ostatnia natomiast odnosi się do portu Centronics.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&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;Bajt statusu kontrolera WD 1772, 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;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Opis&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;&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;STARSZY bajt liczby sektorów na ścieżce.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&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;
&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 nastarszy bajt liczby sektorów partycji twardego dysku (patrz 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;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;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pozostałe bity są zarezerwowane i powinny być wyzerowane.&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;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;
&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;
&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;
&lt;br /&gt;
* bit 0 = 1, sektory na ścieżce numerowane są od 0, a nie od 1.&lt;br /&gt;
* bit 1 = 1, sektory logiczne 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-ściezkowy pracuje w trybie 40-ścieżkowym.&lt;br /&gt;
&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;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 3&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;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;11&amp;lt;/td&amp;gt;&lt;br /&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;
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 sumą kontrolną; czas pomiędzy ustawieniem linii COMMAND a wysłaniem 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 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 numere), 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). Odpowiedź urządzenia musi nastąpić w czasie od 0 do 16 msec. od skasowania linii COMMAND przez komputer;&lt;br /&gt;
&lt;br /&gt;
6) jeśli komenda jest wykonalna i jest to odczyt 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) i na tym transmisja się kończy; w przeciwnym wypadku przesyłany jest kod $43 (&amp;quot;C&amp;quot;, jak Complete), a następnie blok danych zakończony sumą kontrolną i na tym transmisja się kończy; po przesłaniu potwierdzenia (&amp;quot;C&amp;quot;) blok danych po musi nadejść nie wcześniej niż w ciągu 1000 usec. i nie później niż w ciągu 1800 usec.;&lt;br /&gt;
&lt;br /&gt;
7) jeśli to jest zapis danych, komputer przesyła blok danych plus sumę kontrolną do urządzenia. Po jego przyjęciu i stwierdzeniu poprawności urządzenie odpowiada kodem $41 (&amp;quot;A&amp;quot;) i przystępuje do np. zapisania danych na nośnik. Po zapisie urządzenie informuje komputer 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 danych po potwierdzeniu (&amp;quot;A&amp;quot;) musi nastąpić nie wcześniej niż w ciągu 1000 usec. i nie później niż w ciągu 1800 usec. Przesłanie potwierdzenia końcowego (&amp;quot;C&amp;quot; lub &amp;quot;E&amp;quot;) musi nastąpić w czasie od 850 usec. do 16 msec. po przesłaniu bloku danych.&lt;br /&gt;
&lt;br /&gt;
Ogólnie potwierdzenie końcowe (&amp;quot;C&amp;quot; lub &amp;quot;E&amp;quot;) musi nadejść z urządzenia nie wcześniej niż po 250 usec. i nie później niż po 255 sekundach - czyli po 4 minutach i 15 sekundach - od nadesłania potwierdzenia komendy (&amp;quot;A&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Ogólnie schemat wymiany danych przy odczycie jest następujący:&lt;br /&gt;
&lt;br /&gt;
* komputer --&amp;gt; komenda 4 B + 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;
* komputer &amp;lt;-- blok danych + CRC &amp;lt;-- urządzenie&lt;br /&gt;
* koniec.&lt;br /&gt;
&lt;br /&gt;
Natomiast zapis wygląda tak:&lt;br /&gt;
&lt;br /&gt;
* komputer --&amp;gt; komenda 4 B + CRC --&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 + 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;
* koniec&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 (CRC).&lt;br /&gt;
&lt;br /&gt;
====Magnetofon====&lt;br /&gt;
&lt;br /&gt;
Opisany schemat dotyczy 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, sumę kontrolną oraz dwa dodatkowe bajty służące do pomiaru równomierności przesuwu taśmy.&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, systemów &amp;quot;turbo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
====US Doubler / Happy Warp====&lt;br /&gt;
&lt;br /&gt;
Protokół transmisji US Doublera (i zgodnego z nim [[Happy Warp]]), znany też jako UltraSpeed bądź po prostu &amp;quot;Ultra&amp;quot;, jest identyczny jak w standardzie, z tą różnicą, że układ [[POKEY]] programowany jest do pracy z prędkością 52 kbps. Praca w standardowym 19,2 kbps także jest możliwa. Stacja przełącza się automatycznie pomiędzy tymi dwoma trybami pracy, a do pomiaru żądanej przez komputer prędkości wykorzystuje pojawiający się na [[gniazdo SIO|złączu szeregowym Atari]] synchronizujący sygnał zegarowy (CLOCK OUT).&lt;br /&gt;
&lt;br /&gt;
Stacje z rozszerzeniem US Doubler implementują dodatkową komendę POLL (&#039;?&#039;). Wysłanie - w standardzie - tej komendy do stacji dysków powoduje, że zwraca ona 1 bajt stanowiący wartość, jaką należy wstawić do licznika układu [[POKEY]] celem uzyskania szybkiej transmisji. W standardowych stacjach US Doubler wartością tą jest $0A, ale stacje innych producentów dzięki temu mechanizmowi mogą implementować wyższe prędkości i wciąż pozostają zgodne z US Doublerem.&lt;br /&gt;
&lt;br /&gt;
====Atari XF-551 / CA-2001 ====&lt;br /&gt;
&lt;br /&gt;
Stacje [[XF551|Atari XF-551]] oraz [[CA2001|California Access 2001]] mogą pracować z prędkością 38400 bps. Dla zasygnalizowania stacji, że komputer żąda pracy w turbo, przy prędkości 38400 bps używany jest inny protokół transmisji będący - oczywiście - zmodyfikowaną wersją standardowego (patrz wyżej).&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. Jednakże drugi bajt tego bloku, zawierający wartość bajtu DCMND bloku DCB, jest zwiększony o 128 (ORA #$80). Po wysłaniu komendy komputer, identycznie jak w standardzie, czeka - cały czas mając układ [[POKEY]] zaprogramowany na 19200 bps - na potwierdzenie jej przyjęcia. Negatywna odpowiedź urządzenia na taką komendę oznacza, że nie zna ono tego protokołu transmisji i nie może pracować w turbo zgodnym z [[XF551|XF-551]].&lt;br /&gt;
&lt;br /&gt;
Odpowiedź pozytywna (&#039;A&#039;) jest sygnałem do przeprogramowania układu [[POKEY]] na większą prędkość. Komputer wstawia do licznika AUDF3/4 wartość $10; analogicznej operacji ze swojej strony dokonuje stacja dysków. 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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 38400 bps&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 38400 bps&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;
Budzącym zakłopotanie niedopatrzeniem jest w tym wszystkim niemożność odpytania stacji na okoliczność wartości, jaką ma mieć licznik [[POKEY]]-a w czasie przyspieszonej transmisji. Dodatkowym kłopotem posiadaczy [[CA2001|CA-2001]] jest to, że stację trzeba specjalnie zaprogramować (programem o nazwie [[Synchromesh]] dostarczonym przez producenta na dyskietce), żeby w ogóle działała w turbo. [[XF551|XF-551]] jest tej ostatniej wady na szczęście pozbawiona.&lt;br /&gt;
&lt;br /&gt;
====Indus GT / LDW 2000 Super====&lt;br /&gt;
&lt;br /&gt;
Protokół przyspieszonej transmisji używany przez stacje [[Indus GT]] oraz [[LDW Super 2000]] jest identyczny z tym opisanym powyżej dla [[XF551|Atari XF-551]] oraz [[CA2001|California Access 2001]]. Jedyną różnicą jest szybkość transmisji: dla LDW wynosi ona 68,2 kbps (wartość licznika [[POKEY]]-a - $06). Dla uzyskania tej prędkości konieczne jest uprzednie zaprogramowanie stacji programem [[Synchromesh]] dostarczonym przez producenta na dyskietce. Stacja pozostaje zaprogramowana aż do wyłączenia zasilania.&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 68,2 kbps&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 68,2 kbps&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;
====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 omawianej tu czwórki; 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;
===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;
====Blok DCB====&lt;br /&gt;
&lt;br /&gt;
Block DCB w tej wersji systemu jest rozszerzony do 16 bajtów i wygląda następująco:&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;Adres&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Etykieta&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wielkość&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Znaczenie&amp;lt;/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). 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.&amp;lt;/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;Czas oczekiwania - w sekundach - na pozytywną odpowiedź 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;$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.&amp;lt;/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;tr&amp;gt;&amp;lt;td&amp;gt;$030C&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DAUXA&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Trzeci bajt pomocniczy. Młodszy bajt starszego słowa 32-bitowego 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;$030D&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DAUXB&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Czwarty bajt pomocniczy. Starszy bajt starszego słowa 32-bitowego 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;$030E&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DBFX1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Najstarszy bajt adresu bufora.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$030F&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DBFX2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt zarezerwowany.&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;
====Sposób użycia====&lt;br /&gt;
&lt;br /&gt;
Dla utrzymania zgodności z dotychczasowym oprogramowaniem, a już zwłaszcza z dotychczasowymi sterownikami urządzeń podłączanych do szyny równoległej, wpisanie pod $000304/5/E 24-bitowego adresu nie da pożądanego wyniku; jeśliby bowiem urządzenie brało pod uwagę tylko 16 najmłodszych bitów adresu ignorując najstarszy bajt wpisany pod $00030E, wtedy - przy odczycie - dane zostałyby umieszczone nie tam, gdzie trzeba. Musi więc istnieć mechanizm, który zapobiega tego typu nieporozumieniom.&lt;br /&gt;
&lt;br /&gt;
W tym celu SIO definiuje trzy nowe urządzenia wirtualne, o kodach jak następuje:&lt;br /&gt;
&lt;br /&gt;
* $B1 (= $31 + $80) - stacja dysków&lt;br /&gt;
* $C0 (= $40 + $80) - drukarka&lt;br /&gt;
* $D0 (= $50 + $80) - RS-232C &lt;br /&gt;
&lt;br /&gt;
Wywołanie urządzenia z takim kodem w DDEVIC powiadamia sterownik SIO, że adres bufora w DCB jest 24-bitowy i że najstarszy bajt adresu jest pod $00030E (w przeciwnym wypadku SIO zakłada, że najstarszy bajt adresu to 0); oraz że numer sektora jest 32-bitowy i jest umieszczony w DAUX1/DAUX2/DAUXA/DAUXB (&#039;&#039;&#039;UWAGA: w przypadku szeregowych stacji dysków, [[SIO2IDE]], [[SIO2PC]] itp. dwa najstarsze bajty tego numeru są ignorowane&#039;&#039;&#039;, ale powinny być wyzerowane dla kompatybilności). Poza tym działanie urządzeń wirtualnych jest identyczne, jak tradycyjnych (odpowiednio $31, $40 i $50), a kod urządzenia jest przed wysłaniem na port szeregowy przekładany na kod rzeczywisty.&lt;br /&gt;
&lt;br /&gt;
Przyjmując komendę do wykonania SIO w żaden sposób nie sprawdza, czy dodatkowa pamięć w ogóle istnieje - zakłada się, że program sam stwierdzi jej istnienie (choćby za pomocą funkcji alokacji pamięci) przed próbą odczytu do niej danych.&lt;br /&gt;
&lt;br /&gt;
==Zobacz też==&lt;br /&gt;
* [http://www.atariarchives.org/dere/ De Re Atari]&lt;br /&gt;
&lt;br /&gt;
==Bibliografia==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Atari Home Computer System: Serial Input Output Interface, User&#039;s Handbook&#039;&#039;&lt;br /&gt;
* Harry B. Stewart, &#039;&#039;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>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=SIO&amp;diff=10825</id>
		<title>SIO</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=SIO&amp;diff=10825"/>
		<updated>2006-03-15T08:27:34Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: /* Komendy dodatkowe - bold */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SIO - 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 nastepnie 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, $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.&amp;lt;/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;Czas oczekiwania - w sekundach - na pozytywną odpowiedź 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;$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.&amp;lt;/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;
Interfejs SIO znajdujący się w ROM-ie rozpoznaje pięć predefiniowanych urządzeń:&lt;br /&gt;
&lt;br /&gt;
* $31: dyskową pamięć masową (stację dysków, twardy dysk)&lt;br /&gt;
* $40: drukarkę&lt;br /&gt;
* $4F: bus master (moduł [[1090]])&lt;br /&gt;
* $50: port szeregowy RS-232C&lt;br /&gt;
* $60: magnetofon kasetowy&lt;br /&gt;
&lt;br /&gt;
Właściwy identyfikator urządzenia 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. Przypisanie identyfikatorów do poszczególnych urządzeń jest niezbyt konsekwentne, np. $31 to stacja dysków numer 1, ale $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.&lt;br /&gt;
&lt;br /&gt;
===Wykaz komend===&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 (stacja dysków)&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;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 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;br&amp;gt;&lt;br /&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;/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 (stacja dysków i magnetofon)&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 (stacja dysków)&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]]. 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;/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]]. 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;/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;???&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;(brak)&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;???&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;/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, 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;Kod&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nazwa&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Urządzenie&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Ilość danych&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Opis&amp;lt;/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 (stacja dysków)&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&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;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ść. Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dykietkę zgodnie z zapisaną konfiguracją (o ile jest w stanie ją zrealizować). 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;/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 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;Kod&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nazwa&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Urządzenie&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Ilość danych&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Opis&amp;lt;/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. Moe 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 [[Formaty handlerów systemowych|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 rowspan = 2&amp;gt;POLL&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$31 (stacja dysków)&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Stacje kompatybilne z US Doubler w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącego 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;td&amp;gt;$50 (RS-232)&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;&lt;br /&gt;
Komenda ta 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 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 nie reaguje), 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 POLL TYPE 4. 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;Kod&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nazwa&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Urządzenie&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Ilość danych&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Opis&amp;lt;/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;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 źrodł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 (stacja dysków)&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&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 wiekunku ś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]]!&#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;&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 (stacja dysków)&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;&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;&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;(brak)&amp;lt;/td&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 (stacja dysków)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;(brak)&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&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&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;Interfejs [[850|Atari 850]] w odpowiedzi na tę komendę zwraca następującą sekwencję liczb: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78. Pierwsze cztery pary stanowią zapewne jakieś parametry czterech portów RS-232 modułu [[850]], ostatnia natomiast odnosi się do portu Centronics.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&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;Bajt statusu kontrolera WD 1772, 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;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Opis&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;&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;STARSZY bajt liczby sektorów na ścieżce.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&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;
&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 nastarszy bajt liczby sektorów partycji twardego dysku (patrz 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;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;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pozostałe bity są zarezerwowane i powinny być wyzerowane.&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;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;
&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;
&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;
&lt;br /&gt;
* bit 0 = 1, sektory na ścieżce numerowane są od 0, a nie od 1.&lt;br /&gt;
* bit 1 = 1, sektory logiczne 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-ściezkowy pracuje w trybie 40-ścieżkowym.&lt;br /&gt;
&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;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 3&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;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;11&amp;lt;/td&amp;gt;&lt;br /&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;
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 sumą kontrolną; czas pomiędzy ustawieniem linii COMMAND a wysłaniem 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 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 numere), 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). Odpowiedź urządzenia musi nastąpić w czasie od 0 do 16 msec. od skasowania linii COMMAND przez komputer;&lt;br /&gt;
&lt;br /&gt;
6) jeśli komenda jest wykonalna i jest to odczyt 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) i na tym transmisja się kończy; w przeciwnym wypadku przesyłany jest kod $43 (&amp;quot;C&amp;quot;, jak Complete), a następnie blok danych zakończony sumą kontrolną i na tym transmisja się kończy; po przesłaniu potwierdzenia (&amp;quot;C&amp;quot;) blok danych po musi nadejść nie wcześniej niż w ciągu 1000 usec. i nie później niż w ciągu 1800 usec.;&lt;br /&gt;
&lt;br /&gt;
7) jeśli to jest zapis danych, komputer przesyła blok danych plus sumę kontrolną do urządzenia. Po jego przyjęciu i stwierdzeniu poprawności urządzenie odpowiada kodem $41 (&amp;quot;A&amp;quot;) i przystępuje do np. zapisania danych na nośnik. Po zapisie urządzenie informuje komputer 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 danych po potwierdzeniu (&amp;quot;A&amp;quot;) musi nastąpić nie wcześniej niż w ciągu 1000 usec. i nie później niż w ciągu 1800 usec. Przesłanie potwierdzenia końcowego (&amp;quot;C&amp;quot; lub &amp;quot;E&amp;quot;) musi nastąpić w czasie od 850 usec. do 16 msec. po przesłaniu bloku danych.&lt;br /&gt;
&lt;br /&gt;
Ogólnie potwierdzenie końcowe (&amp;quot;C&amp;quot; lub &amp;quot;E&amp;quot;) musi nadejść z urządzenia nie wcześniej niż po 250 usec. i nie później niż po 255 sekundach - czyli po 4 minutach i 15 sekundach - od nadesłania potwierdzenia komendy (&amp;quot;A&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Ogólnie schemat wymiany danych przy odczycie jest następujący:&lt;br /&gt;
&lt;br /&gt;
* komputer --&amp;gt; komenda 4 B + 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;
* komputer &amp;lt;-- blok danych + CRC &amp;lt;-- urządzenie&lt;br /&gt;
* koniec.&lt;br /&gt;
&lt;br /&gt;
Natomiast zapis wygląda tak:&lt;br /&gt;
&lt;br /&gt;
* komputer --&amp;gt; komenda 4 B + CRC --&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 + 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;
* koniec&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 (CRC).&lt;br /&gt;
&lt;br /&gt;
====Magnetofon====&lt;br /&gt;
&lt;br /&gt;
Opisany schemat dotyczy 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, sumę kontrolną oraz dwa dodatkowe bajty służące do pomiaru równomierności przesuwu taśmy.&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, systemów &amp;quot;turbo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
====US Doubler / Happy Warp====&lt;br /&gt;
&lt;br /&gt;
Protokół transmisji US Doublera (i zgodnego z nim [[Happy Warp]]), znany też jako UltraSpeed bądź po prostu &amp;quot;Ultra&amp;quot;, jest identyczny jak w standardzie, z tą różnicą, że układ [[POKEY]] programowany jest do pracy z prędkością 52 kbps. Praca w standardowym 19,2 kbps także jest możliwa. Stacja przełącza się automatycznie pomiędzy tymi dwoma trybami pracy, a do pomiaru żądanej przez komputer prędkości wykorzystuje pojawiający się na [[gniazdo SIO|złączu szeregowym Atari]] synchronizujący sygnał zegarowy (CLOCK OUT).&lt;br /&gt;
&lt;br /&gt;
Stacje z rozszerzeniem US Doubler implementują dodatkową komendę POLL (&#039;?&#039;). Wysłanie - w standardzie - tej komendy do stacji dysków powoduje, że zwraca ona 1 bajt stanowiący wartość, jaką należy wstawić do licznika układu [[POKEY]] celem uzyskania szybkiej transmisji. W standardowych stacjach US Doubler wartością tą jest $0A, ale stacje innych producentów dzięki temu mechanizmowi mogą implementować wyższe prędkości i wciąż pozostają zgodne z US Doublerem.&lt;br /&gt;
&lt;br /&gt;
====Atari XF-551 / CA-2001 ====&lt;br /&gt;
&lt;br /&gt;
Stacje [[XF551|Atari XF-551]] oraz [[CA2001|California Access 2001]] mogą pracować z prędkością 38400 bps. Dla zasygnalizowania stacji, że komputer żąda pracy w turbo, przy prędkości 38400 bps używany jest inny protokół transmisji będący - oczywiście - zmodyfikowaną wersją standardowego (patrz wyżej).&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. Jednakże drugi bajt tego bloku, zawierający wartość bajtu DCMND bloku DCB, jest zwiększony o 128 (ORA #$80). Po wysłaniu komendy komputer, identycznie jak w standardzie, czeka - cały czas mając układ [[POKEY]] zaprogramowany na 19200 bps - na potwierdzenie jej przyjęcia. Negatywna odpowiedź urządzenia na taką komendę oznacza, że nie zna ono tego protokołu transmisji i nie może pracować w turbo zgodnym z [[XF551|XF-551]].&lt;br /&gt;
&lt;br /&gt;
Odpowiedź pozytywna (&#039;A&#039;) jest sygnałem do przeprogramowania układu [[POKEY]] na większą prędkość. Komputer wstawia do licznika AUDF3/4 wartość $10; analogicznej operacji ze swojej strony dokonuje stacja dysków. 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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 38400 bps&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 38400 bps&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;
Budzącym zakłopotanie niedopatrzeniem jest w tym wszystkim niemożność odpytania stacji na okoliczność wartości, jaką ma mieć licznik [[POKEY]]-a w czasie przyspieszonej transmisji. Dodatkowym kłopotem posiadaczy [[CA2001|CA-2001]] jest to, że stację trzeba specjalnie zaprogramować (programem o nazwie [[Synchromesh]] dostarczonym przez producenta na dyskietce), żeby w ogóle działała w turbo. [[XF551|XF-551]] jest tej ostatniej wady na szczęście pozbawiona.&lt;br /&gt;
&lt;br /&gt;
====Indus GT / LDW 2000 Super====&lt;br /&gt;
&lt;br /&gt;
Protokół przyspieszonej transmisji używany przez stacje [[Indus GT]] oraz [[LDW Super 2000]] jest identyczny z tym opisanym powyżej dla [[XF551|Atari XF-551]] oraz [[CA2001|California Access 2001]]. Jedyną różnicą jest szybkość transmisji: dla LDW wynosi ona 68,2 kbps (wartość licznika [[POKEY]]-a - $06). Dla uzyskania tej prędkości konieczne jest uprzednie zaprogramowanie stacji programem [[Synchromesh]] dostarczonym przez producenta na dyskietce. Stacja pozostaje zaprogramowana aż do wyłączenia zasilania.&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 68,2 kbps&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 68,2 kbps&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;
====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 omawianej tu czwórki; 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;
===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;
====Blok DCB====&lt;br /&gt;
&lt;br /&gt;
Block DCB w tej wersji systemu jest rozszerzony do 16 bajtów i wygląda następująco:&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;Adres&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Etykieta&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wielkość&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Znaczenie&amp;lt;/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). 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.&amp;lt;/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;Czas oczekiwania - w sekundach - na pozytywną odpowiedź 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;$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.&amp;lt;/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;tr&amp;gt;&amp;lt;td&amp;gt;$030C&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DAUXA&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Trzeci bajt pomocniczy. Młodszy bajt starszego słowa 32-bitowego 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;$030D&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DAUXB&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Czwarty bajt pomocniczy. Starszy bajt starszego słowa 32-bitowego 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;$030E&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DBFX1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Najstarszy bajt adresu bufora.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$030F&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DBFX2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt zarezerwowany.&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;
====Sposób użycia====&lt;br /&gt;
&lt;br /&gt;
Dla utrzymania zgodności z dotychczasowym oprogramowaniem, a już zwłaszcza z dotychczasowymi sterownikami urządzeń podłączanych do szyny równoległej, wpisanie pod $000304/5/E 24-bitowego adresu nie da pożądanego wyniku; jeśliby bowiem urządzenie brało pod uwagę tylko 16 najmłodszych bitów adresu ignorując najstarszy bajt wpisany pod $00030E, wtedy - przy odczycie - dane zostałyby umieszczone nie tam, gdzie trzeba. Musi więc istnieć mechanizm, który zapobiega tego typu nieporozumieniom.&lt;br /&gt;
&lt;br /&gt;
W tym celu SIO definiuje trzy nowe urządzenia wirtualne, o kodach jak następuje:&lt;br /&gt;
&lt;br /&gt;
* $B1 (= $31 + $80) - stacja dysków&lt;br /&gt;
* $C0 (= $40 + $80) - drukarka&lt;br /&gt;
* $D0 (= $50 + $80) - RS-232C &lt;br /&gt;
&lt;br /&gt;
Wywołanie urządzenia z takim kodem w DDEVIC powiadamia sterownik SIO, że adres bufora w DCB jest 24-bitowy i że najstarszy bajt adresu jest pod $00030E (w przeciwnym wypadku SIO zakłada, że najstarszy bajt adresu to 0); oraz że numer sektora jest 32-bitowy i jest umieszczony w DAUX1/DAUX2/DAUXA/DAUXB (&#039;&#039;&#039;UWAGA: w przypadku szeregowych stacji dysków, [[SIO2IDE]], [[SIO2PC]] itp. dwa najstarsze bajty tego numeru są ignorowane&#039;&#039;&#039;, ale powinny być wyzerowane dla kompatybilności). Poza tym działanie urządzeń wirtualnych jest identyczne, jak tradycyjnych (odpowiednio $31, $40 i $50), a kod urządzenia jest przed wysłaniem na port szeregowy przekładany na kod rzeczywisty.&lt;br /&gt;
&lt;br /&gt;
Przyjmując komendę do wykonania SIO w żaden sposób nie sprawdza, czy dodatkowa pamięć w ogóle istnieje - zakłada się, że program sam stwierdzi jej istnienie (choćby za pomocą funkcji alokacji pamięci) przed próbą odczytu do niej danych.&lt;br /&gt;
&lt;br /&gt;
==Zobacz też==&lt;br /&gt;
* [http://www.atariarchives.org/dere/ De Re Atari]&lt;br /&gt;
&lt;br /&gt;
==Bibliografia==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Atari Home Computer System: Serial Input Output Interface, User&#039;s Handbook&#039;&#039;&lt;br /&gt;
* Harry B. Stewart, &#039;&#039;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>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=SIO&amp;diff=10824</id>
		<title>SIO</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=SIO&amp;diff=10824"/>
		<updated>2006-03-15T08:24:34Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: /* Podstawowy zestaw komend - bold */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SIO - 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 nastepnie 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, $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.&amp;lt;/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;Czas oczekiwania - w sekundach - na pozytywną odpowiedź 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;$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.&amp;lt;/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;
Interfejs SIO znajdujący się w ROM-ie rozpoznaje pięć predefiniowanych urządzeń:&lt;br /&gt;
&lt;br /&gt;
* $31: dyskową pamięć masową (stację dysków, twardy dysk)&lt;br /&gt;
* $40: drukarkę&lt;br /&gt;
* $4F: bus master (moduł [[1090]])&lt;br /&gt;
* $50: port szeregowy RS-232C&lt;br /&gt;
* $60: magnetofon kasetowy&lt;br /&gt;
&lt;br /&gt;
Właściwy identyfikator urządzenia 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. Przypisanie identyfikatorów do poszczególnych urządzeń jest niezbyt konsekwentne, np. $31 to stacja dysków numer 1, ale $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.&lt;br /&gt;
&lt;br /&gt;
===Wykaz komend===&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 (stacja dysków)&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;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 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;br&amp;gt;&lt;br /&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;/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 (stacja dysków i magnetofon)&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;Kod&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nazwa&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Urządzenie&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Ilość danych&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Opis&amp;lt;/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 (stacja dysków)&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]]. 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;/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]]. 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;/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;???&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;(brak)&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;???&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;/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, 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;Kod&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nazwa&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Urządzenie&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Ilość danych&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Opis&amp;lt;/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 (stacja dysków)&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&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;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ść. Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dykietkę zgodnie z zapisaną konfiguracją (o ile jest w stanie ją zrealizować). 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;/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 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;Kod&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nazwa&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Urządzenie&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Ilość danych&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Opis&amp;lt;/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. Moe 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 [[Formaty handlerów systemowych|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 rowspan = 2&amp;gt;POLL&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$31 (stacja dysków)&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Stacje kompatybilne z US Doubler w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącego 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;td&amp;gt;$50 (RS-232)&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;&lt;br /&gt;
Komenda ta 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 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 nie reaguje), 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 POLL TYPE 4. 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;Kod&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nazwa&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Urządzenie&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Ilość danych&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Opis&amp;lt;/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;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 źrodł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 (stacja dysków)&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&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 wiekunku ś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]]!&#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;&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 (stacja dysków)&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;&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;&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;(brak)&amp;lt;/td&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 (stacja dysków)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;(brak)&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&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&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;Interfejs [[850|Atari 850]] w odpowiedzi na tę komendę zwraca następującą sekwencję liczb: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78. Pierwsze cztery pary stanowią zapewne jakieś parametry czterech portów RS-232 modułu [[850]], ostatnia natomiast odnosi się do portu Centronics.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&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;Bajt statusu kontrolera WD 1772, 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;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Opis&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;&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;STARSZY bajt liczby sektorów na ścieżce.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&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;
&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 nastarszy bajt liczby sektorów partycji twardego dysku (patrz 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;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;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pozostałe bity są zarezerwowane i powinny być wyzerowane.&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;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;
&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;
&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;
&lt;br /&gt;
* bit 0 = 1, sektory na ścieżce numerowane są od 0, a nie od 1.&lt;br /&gt;
* bit 1 = 1, sektory logiczne 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-ściezkowy pracuje w trybie 40-ścieżkowym.&lt;br /&gt;
&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;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 3&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;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;11&amp;lt;/td&amp;gt;&lt;br /&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;
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 sumą kontrolną; czas pomiędzy ustawieniem linii COMMAND a wysłaniem 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 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 numere), 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). Odpowiedź urządzenia musi nastąpić w czasie od 0 do 16 msec. od skasowania linii COMMAND przez komputer;&lt;br /&gt;
&lt;br /&gt;
6) jeśli komenda jest wykonalna i jest to odczyt 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) i na tym transmisja się kończy; w przeciwnym wypadku przesyłany jest kod $43 (&amp;quot;C&amp;quot;, jak Complete), a następnie blok danych zakończony sumą kontrolną i na tym transmisja się kończy; po przesłaniu potwierdzenia (&amp;quot;C&amp;quot;) blok danych po musi nadejść nie wcześniej niż w ciągu 1000 usec. i nie później niż w ciągu 1800 usec.;&lt;br /&gt;
&lt;br /&gt;
7) jeśli to jest zapis danych, komputer przesyła blok danych plus sumę kontrolną do urządzenia. Po jego przyjęciu i stwierdzeniu poprawności urządzenie odpowiada kodem $41 (&amp;quot;A&amp;quot;) i przystępuje do np. zapisania danych na nośnik. Po zapisie urządzenie informuje komputer 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 danych po potwierdzeniu (&amp;quot;A&amp;quot;) musi nastąpić nie wcześniej niż w ciągu 1000 usec. i nie później niż w ciągu 1800 usec. Przesłanie potwierdzenia końcowego (&amp;quot;C&amp;quot; lub &amp;quot;E&amp;quot;) musi nastąpić w czasie od 850 usec. do 16 msec. po przesłaniu bloku danych.&lt;br /&gt;
&lt;br /&gt;
Ogólnie potwierdzenie końcowe (&amp;quot;C&amp;quot; lub &amp;quot;E&amp;quot;) musi nadejść z urządzenia nie wcześniej niż po 250 usec. i nie później niż po 255 sekundach - czyli po 4 minutach i 15 sekundach - od nadesłania potwierdzenia komendy (&amp;quot;A&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Ogólnie schemat wymiany danych przy odczycie jest następujący:&lt;br /&gt;
&lt;br /&gt;
* komputer --&amp;gt; komenda 4 B + 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;
* komputer &amp;lt;-- blok danych + CRC &amp;lt;-- urządzenie&lt;br /&gt;
* koniec.&lt;br /&gt;
&lt;br /&gt;
Natomiast zapis wygląda tak:&lt;br /&gt;
&lt;br /&gt;
* komputer --&amp;gt; komenda 4 B + CRC --&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 + 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;
* koniec&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 (CRC).&lt;br /&gt;
&lt;br /&gt;
====Magnetofon====&lt;br /&gt;
&lt;br /&gt;
Opisany schemat dotyczy 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, sumę kontrolną oraz dwa dodatkowe bajty służące do pomiaru równomierności przesuwu taśmy.&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, systemów &amp;quot;turbo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
====US Doubler / Happy Warp====&lt;br /&gt;
&lt;br /&gt;
Protokół transmisji US Doublera (i zgodnego z nim [[Happy Warp]]), znany też jako UltraSpeed bądź po prostu &amp;quot;Ultra&amp;quot;, jest identyczny jak w standardzie, z tą różnicą, że układ [[POKEY]] programowany jest do pracy z prędkością 52 kbps. Praca w standardowym 19,2 kbps także jest możliwa. Stacja przełącza się automatycznie pomiędzy tymi dwoma trybami pracy, a do pomiaru żądanej przez komputer prędkości wykorzystuje pojawiający się na [[gniazdo SIO|złączu szeregowym Atari]] synchronizujący sygnał zegarowy (CLOCK OUT).&lt;br /&gt;
&lt;br /&gt;
Stacje z rozszerzeniem US Doubler implementują dodatkową komendę POLL (&#039;?&#039;). Wysłanie - w standardzie - tej komendy do stacji dysków powoduje, że zwraca ona 1 bajt stanowiący wartość, jaką należy wstawić do licznika układu [[POKEY]] celem uzyskania szybkiej transmisji. W standardowych stacjach US Doubler wartością tą jest $0A, ale stacje innych producentów dzięki temu mechanizmowi mogą implementować wyższe prędkości i wciąż pozostają zgodne z US Doublerem.&lt;br /&gt;
&lt;br /&gt;
====Atari XF-551 / CA-2001 ====&lt;br /&gt;
&lt;br /&gt;
Stacje [[XF551|Atari XF-551]] oraz [[CA2001|California Access 2001]] mogą pracować z prędkością 38400 bps. Dla zasygnalizowania stacji, że komputer żąda pracy w turbo, przy prędkości 38400 bps używany jest inny protokół transmisji będący - oczywiście - zmodyfikowaną wersją standardowego (patrz wyżej).&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. Jednakże drugi bajt tego bloku, zawierający wartość bajtu DCMND bloku DCB, jest zwiększony o 128 (ORA #$80). Po wysłaniu komendy komputer, identycznie jak w standardzie, czeka - cały czas mając układ [[POKEY]] zaprogramowany na 19200 bps - na potwierdzenie jej przyjęcia. Negatywna odpowiedź urządzenia na taką komendę oznacza, że nie zna ono tego protokołu transmisji i nie może pracować w turbo zgodnym z [[XF551|XF-551]].&lt;br /&gt;
&lt;br /&gt;
Odpowiedź pozytywna (&#039;A&#039;) jest sygnałem do przeprogramowania układu [[POKEY]] na większą prędkość. Komputer wstawia do licznika AUDF3/4 wartość $10; analogicznej operacji ze swojej strony dokonuje stacja dysków. 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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 38400 bps&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 38400 bps&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;
Budzącym zakłopotanie niedopatrzeniem jest w tym wszystkim niemożność odpytania stacji na okoliczność wartości, jaką ma mieć licznik [[POKEY]]-a w czasie przyspieszonej transmisji. Dodatkowym kłopotem posiadaczy [[CA2001|CA-2001]] jest to, że stację trzeba specjalnie zaprogramować (programem o nazwie [[Synchromesh]] dostarczonym przez producenta na dyskietce), żeby w ogóle działała w turbo. [[XF551|XF-551]] jest tej ostatniej wady na szczęście pozbawiona.&lt;br /&gt;
&lt;br /&gt;
====Indus GT / LDW 2000 Super====&lt;br /&gt;
&lt;br /&gt;
Protokół przyspieszonej transmisji używany przez stacje [[Indus GT]] oraz [[LDW Super 2000]] jest identyczny z tym opisanym powyżej dla [[XF551|Atari XF-551]] oraz [[CA2001|California Access 2001]]. Jedyną różnicą jest szybkość transmisji: dla LDW wynosi ona 68,2 kbps (wartość licznika [[POKEY]]-a - $06). Dla uzyskania tej prędkości konieczne jest uprzednie zaprogramowanie stacji programem [[Synchromesh]] dostarczonym przez producenta na dyskietce. Stacja pozostaje zaprogramowana aż do wyłączenia zasilania.&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 68,2 kbps&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 68,2 kbps&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;
====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 omawianej tu czwórki; 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;
===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;
====Blok DCB====&lt;br /&gt;
&lt;br /&gt;
Block DCB w tej wersji systemu jest rozszerzony do 16 bajtów i wygląda następująco:&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;Adres&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Etykieta&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wielkość&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Znaczenie&amp;lt;/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). 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.&amp;lt;/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;Czas oczekiwania - w sekundach - na pozytywną odpowiedź 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;$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.&amp;lt;/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;tr&amp;gt;&amp;lt;td&amp;gt;$030C&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DAUXA&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Trzeci bajt pomocniczy. Młodszy bajt starszego słowa 32-bitowego 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;$030D&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DAUXB&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Czwarty bajt pomocniczy. Starszy bajt starszego słowa 32-bitowego 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;$030E&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DBFX1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Najstarszy bajt adresu bufora.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$030F&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DBFX2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt zarezerwowany.&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;
====Sposób użycia====&lt;br /&gt;
&lt;br /&gt;
Dla utrzymania zgodności z dotychczasowym oprogramowaniem, a już zwłaszcza z dotychczasowymi sterownikami urządzeń podłączanych do szyny równoległej, wpisanie pod $000304/5/E 24-bitowego adresu nie da pożądanego wyniku; jeśliby bowiem urządzenie brało pod uwagę tylko 16 najmłodszych bitów adresu ignorując najstarszy bajt wpisany pod $00030E, wtedy - przy odczycie - dane zostałyby umieszczone nie tam, gdzie trzeba. Musi więc istnieć mechanizm, który zapobiega tego typu nieporozumieniom.&lt;br /&gt;
&lt;br /&gt;
W tym celu SIO definiuje trzy nowe urządzenia wirtualne, o kodach jak następuje:&lt;br /&gt;
&lt;br /&gt;
* $B1 (= $31 + $80) - stacja dysków&lt;br /&gt;
* $C0 (= $40 + $80) - drukarka&lt;br /&gt;
* $D0 (= $50 + $80) - RS-232C &lt;br /&gt;
&lt;br /&gt;
Wywołanie urządzenia z takim kodem w DDEVIC powiadamia sterownik SIO, że adres bufora w DCB jest 24-bitowy i że najstarszy bajt adresu jest pod $00030E (w przeciwnym wypadku SIO zakłada, że najstarszy bajt adresu to 0); oraz że numer sektora jest 32-bitowy i jest umieszczony w DAUX1/DAUX2/DAUXA/DAUXB (&#039;&#039;&#039;UWAGA: w przypadku szeregowych stacji dysków, [[SIO2IDE]], [[SIO2PC]] itp. dwa najstarsze bajty tego numeru są ignorowane&#039;&#039;&#039;, ale powinny być wyzerowane dla kompatybilności). Poza tym działanie urządzeń wirtualnych jest identyczne, jak tradycyjnych (odpowiednio $31, $40 i $50), a kod urządzenia jest przed wysłaniem na port szeregowy przekładany na kod rzeczywisty.&lt;br /&gt;
&lt;br /&gt;
Przyjmując komendę do wykonania SIO w żaden sposób nie sprawdza, czy dodatkowa pamięć w ogóle istnieje - zakłada się, że program sam stwierdzi jej istnienie (choćby za pomocą funkcji alokacji pamięci) przed próbą odczytu do niej danych.&lt;br /&gt;
&lt;br /&gt;
==Zobacz też==&lt;br /&gt;
* [http://www.atariarchives.org/dere/ De Re Atari]&lt;br /&gt;
&lt;br /&gt;
==Bibliografia==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Atari Home Computer System: Serial Input Output Interface, User&#039;s Handbook&#039;&#039;&lt;br /&gt;
* Harry B. Stewart, &#039;&#039;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>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=SIO&amp;diff=10823</id>
		<title>SIO</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=SIO&amp;diff=10823"/>
		<updated>2006-03-15T08:22:46Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: /* Struktura DCB - bold */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SIO - 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 nastepnie 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, $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.&amp;lt;/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;Czas oczekiwania - w sekundach - na pozytywną odpowiedź 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;$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.&amp;lt;/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;
Interfejs SIO znajdujący się w ROM-ie rozpoznaje pięć predefiniowanych urządzeń:&lt;br /&gt;
&lt;br /&gt;
* $31: dyskową pamięć masową (stację dysków, twardy dysk)&lt;br /&gt;
* $40: drukarkę&lt;br /&gt;
* $4F: bus master (moduł [[1090]])&lt;br /&gt;
* $50: port szeregowy RS-232C&lt;br /&gt;
* $60: magnetofon kasetowy&lt;br /&gt;
&lt;br /&gt;
Właściwy identyfikator urządzenia 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. Przypisanie identyfikatorów do poszczególnych urządzeń jest niezbyt konsekwentne, np. $31 to stacja dysków numer 1, ale $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.&lt;br /&gt;
&lt;br /&gt;
===Wykaz komend===&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;Kod&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nazwa&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Urządzenie&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Ilość danych&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Opis&amp;lt;/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 (stacja dysków)&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;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 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;br&amp;gt;&lt;br /&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;/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 (stacja dysków i magnetofon)&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;Kod&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nazwa&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Urządzenie&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Ilość danych&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Opis&amp;lt;/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 (stacja dysków)&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]]. 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;/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]]. 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;/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;???&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;$50 (RS-232)&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;(brak)&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;???&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;/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, 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;Kod&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nazwa&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Urządzenie&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Ilość danych&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Opis&amp;lt;/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 (stacja dysków)&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&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;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ść. Po pomyślnym wykonaniu tej operacji komenda FORMAT DISK ($21) sformatuje dykietkę zgodnie z zapisaną konfiguracją (o ile jest w stanie ją zrealizować). 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;/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 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;Kod&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nazwa&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Urządzenie&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Ilość danych&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Opis&amp;lt;/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. Moe 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 [[Formaty handlerów systemowych|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 rowspan = 2&amp;gt;POLL&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;$31 (stacja dysków)&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 2&amp;gt;R&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1 bajt&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Stacje kompatybilne z US Doubler w odpowiedzi na tę komendę przesyłają wartość rejestru POKEY-a służącego 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;td&amp;gt;$50 (RS-232)&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;&lt;br /&gt;
Komenda ta 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 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 nie reaguje), 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 POLL TYPE 4. 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;Kod&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Nazwa&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Urządzenie&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;R/W&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Ilość danych&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Opis&amp;lt;/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;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 źrodł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 (stacja dysków)&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&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 wiekunku ś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]]!&#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;&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 (stacja dysków)&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;&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;&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;(brak)&amp;lt;/td&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 (stacja dysków)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;(brak)&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&amp;gt;$58 (X)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;???&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;Interfejs [[850|Atari 850]] w odpowiedzi na tę komendę zwraca następującą sekwencję liczb: $A0, $A0, $0B, $A0, $A0, $A0, $0B, $A0, $78. Pierwsze cztery pary stanowią zapewne jakieś parametry czterech portów RS-232 modułu [[850]], ostatnia natomiast odnosi się do portu Centronics.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&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;Bajt statusu kontrolera WD 1772, 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;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Opis&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;&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;STARSZY bajt liczby sektorów na ścieżce.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&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;
&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 nastarszy bajt liczby sektorów partycji twardego dysku (patrz 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;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;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pozostałe bity są zarezerwowane i powinny być wyzerowane.&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;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;
&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;
&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;
&lt;br /&gt;
* bit 0 = 1, sektory na ścieżce numerowane są od 0, a nie od 1.&lt;br /&gt;
* bit 1 = 1, sektory logiczne 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-ściezkowy pracuje w trybie 40-ścieżkowym.&lt;br /&gt;
&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;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&amp;lt;td rowspan = 3&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;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;11&amp;lt;/td&amp;gt;&lt;br /&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;
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 sumą kontrolną; czas pomiędzy ustawieniem linii COMMAND a wysłaniem 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 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 numere), 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). Odpowiedź urządzenia musi nastąpić w czasie od 0 do 16 msec. od skasowania linii COMMAND przez komputer;&lt;br /&gt;
&lt;br /&gt;
6) jeśli komenda jest wykonalna i jest to odczyt 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) i na tym transmisja się kończy; w przeciwnym wypadku przesyłany jest kod $43 (&amp;quot;C&amp;quot;, jak Complete), a następnie blok danych zakończony sumą kontrolną i na tym transmisja się kończy; po przesłaniu potwierdzenia (&amp;quot;C&amp;quot;) blok danych po musi nadejść nie wcześniej niż w ciągu 1000 usec. i nie później niż w ciągu 1800 usec.;&lt;br /&gt;
&lt;br /&gt;
7) jeśli to jest zapis danych, komputer przesyła blok danych plus sumę kontrolną do urządzenia. Po jego przyjęciu i stwierdzeniu poprawności urządzenie odpowiada kodem $41 (&amp;quot;A&amp;quot;) i przystępuje do np. zapisania danych na nośnik. Po zapisie urządzenie informuje komputer 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 danych po potwierdzeniu (&amp;quot;A&amp;quot;) musi nastąpić nie wcześniej niż w ciągu 1000 usec. i nie później niż w ciągu 1800 usec. Przesłanie potwierdzenia końcowego (&amp;quot;C&amp;quot; lub &amp;quot;E&amp;quot;) musi nastąpić w czasie od 850 usec. do 16 msec. po przesłaniu bloku danych.&lt;br /&gt;
&lt;br /&gt;
Ogólnie potwierdzenie końcowe (&amp;quot;C&amp;quot; lub &amp;quot;E&amp;quot;) musi nadejść z urządzenia nie wcześniej niż po 250 usec. i nie później niż po 255 sekundach - czyli po 4 minutach i 15 sekundach - od nadesłania potwierdzenia komendy (&amp;quot;A&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Ogólnie schemat wymiany danych przy odczycie jest następujący:&lt;br /&gt;
&lt;br /&gt;
* komputer --&amp;gt; komenda 4 B + 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;
* komputer &amp;lt;-- blok danych + CRC &amp;lt;-- urządzenie&lt;br /&gt;
* koniec.&lt;br /&gt;
&lt;br /&gt;
Natomiast zapis wygląda tak:&lt;br /&gt;
&lt;br /&gt;
* komputer --&amp;gt; komenda 4 B + CRC --&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 + 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;
* koniec&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 (CRC).&lt;br /&gt;
&lt;br /&gt;
====Magnetofon====&lt;br /&gt;
&lt;br /&gt;
Opisany schemat dotyczy 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, sumę kontrolną oraz dwa dodatkowe bajty służące do pomiaru równomierności przesuwu taśmy.&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, systemów &amp;quot;turbo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
====US Doubler / Happy Warp====&lt;br /&gt;
&lt;br /&gt;
Protokół transmisji US Doublera (i zgodnego z nim [[Happy Warp]]), znany też jako UltraSpeed bądź po prostu &amp;quot;Ultra&amp;quot;, jest identyczny jak w standardzie, z tą różnicą, że układ [[POKEY]] programowany jest do pracy z prędkością 52 kbps. Praca w standardowym 19,2 kbps także jest możliwa. Stacja przełącza się automatycznie pomiędzy tymi dwoma trybami pracy, a do pomiaru żądanej przez komputer prędkości wykorzystuje pojawiający się na [[gniazdo SIO|złączu szeregowym Atari]] synchronizujący sygnał zegarowy (CLOCK OUT).&lt;br /&gt;
&lt;br /&gt;
Stacje z rozszerzeniem US Doubler implementują dodatkową komendę POLL (&#039;?&#039;). Wysłanie - w standardzie - tej komendy do stacji dysków powoduje, że zwraca ona 1 bajt stanowiący wartość, jaką należy wstawić do licznika układu [[POKEY]] celem uzyskania szybkiej transmisji. W standardowych stacjach US Doubler wartością tą jest $0A, ale stacje innych producentów dzięki temu mechanizmowi mogą implementować wyższe prędkości i wciąż pozostają zgodne z US Doublerem.&lt;br /&gt;
&lt;br /&gt;
====Atari XF-551 / CA-2001 ====&lt;br /&gt;
&lt;br /&gt;
Stacje [[XF551|Atari XF-551]] oraz [[CA2001|California Access 2001]] mogą pracować z prędkością 38400 bps. Dla zasygnalizowania stacji, że komputer żąda pracy w turbo, przy prędkości 38400 bps używany jest inny protokół transmisji będący - oczywiście - zmodyfikowaną wersją standardowego (patrz wyżej).&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. Jednakże drugi bajt tego bloku, zawierający wartość bajtu DCMND bloku DCB, jest zwiększony o 128 (ORA #$80). Po wysłaniu komendy komputer, identycznie jak w standardzie, czeka - cały czas mając układ [[POKEY]] zaprogramowany na 19200 bps - na potwierdzenie jej przyjęcia. Negatywna odpowiedź urządzenia na taką komendę oznacza, że nie zna ono tego protokołu transmisji i nie może pracować w turbo zgodnym z [[XF551|XF-551]].&lt;br /&gt;
&lt;br /&gt;
Odpowiedź pozytywna (&#039;A&#039;) jest sygnałem do przeprogramowania układu [[POKEY]] na większą prędkość. Komputer wstawia do licznika AUDF3/4 wartość $10; analogicznej operacji ze swojej strony dokonuje stacja dysków. 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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 38400 bps&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 38400 bps&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;
Budzącym zakłopotanie niedopatrzeniem jest w tym wszystkim niemożność odpytania stacji na okoliczność wartości, jaką ma mieć licznik [[POKEY]]-a w czasie przyspieszonej transmisji. Dodatkowym kłopotem posiadaczy [[CA2001|CA-2001]] jest to, że stację trzeba specjalnie zaprogramować (programem o nazwie [[Synchromesh]] dostarczonym przez producenta na dyskietce), żeby w ogóle działała w turbo. [[XF551|XF-551]] jest tej ostatniej wady na szczęście pozbawiona.&lt;br /&gt;
&lt;br /&gt;
====Indus GT / LDW 2000 Super====&lt;br /&gt;
&lt;br /&gt;
Protokół przyspieszonej transmisji używany przez stacje [[Indus GT]] oraz [[LDW Super 2000]] jest identyczny z tym opisanym powyżej dla [[XF551|Atari XF-551]] oraz [[CA2001|California Access 2001]]. Jedyną różnicą jest szybkość transmisji: dla LDW wynosi ona 68,2 kbps (wartość licznika [[POKEY]]-a - $06). Dla uzyskania tej prędkości konieczne jest uprzednie zaprogramowanie stacji programem [[Synchromesh]] dostarczonym przez producenta na dyskietce. Stacja pozostaje zaprogramowana aż do wyłączenia zasilania.&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 68,2 kbps&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;
* komputer &amp;lt;-- potwierdzenie &#039;A&#039; &amp;lt;-- urządzenie&lt;br /&gt;
* przełączenie na 68,2 kbps&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;
====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 omawianej tu czwórki; 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;
===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;
====Blok DCB====&lt;br /&gt;
&lt;br /&gt;
Block DCB w tej wersji systemu jest rozszerzony do 16 bajtów i wygląda następująco:&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;Adres&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Etykieta&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wielkość&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Znaczenie&amp;lt;/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). 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.&amp;lt;/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;Czas oczekiwania - w sekundach - na pozytywną odpowiedź 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;$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.&amp;lt;/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;tr&amp;gt;&amp;lt;td&amp;gt;$030C&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DAUXA&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Trzeci bajt pomocniczy. Młodszy bajt starszego słowa 32-bitowego 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;$030D&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DAUXB&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Czwarty bajt pomocniczy. Starszy bajt starszego słowa 32-bitowego 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;$030E&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DBFX1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Najstarszy bajt adresu bufora.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$030F&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;DBFX2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bajt zarezerwowany.&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;
====Sposób użycia====&lt;br /&gt;
&lt;br /&gt;
Dla utrzymania zgodności z dotychczasowym oprogramowaniem, a już zwłaszcza z dotychczasowymi sterownikami urządzeń podłączanych do szyny równoległej, wpisanie pod $000304/5/E 24-bitowego adresu nie da pożądanego wyniku; jeśliby bowiem urządzenie brało pod uwagę tylko 16 najmłodszych bitów adresu ignorując najstarszy bajt wpisany pod $00030E, wtedy - przy odczycie - dane zostałyby umieszczone nie tam, gdzie trzeba. Musi więc istnieć mechanizm, który zapobiega tego typu nieporozumieniom.&lt;br /&gt;
&lt;br /&gt;
W tym celu SIO definiuje trzy nowe urządzenia wirtualne, o kodach jak następuje:&lt;br /&gt;
&lt;br /&gt;
* $B1 (= $31 + $80) - stacja dysków&lt;br /&gt;
* $C0 (= $40 + $80) - drukarka&lt;br /&gt;
* $D0 (= $50 + $80) - RS-232C &lt;br /&gt;
&lt;br /&gt;
Wywołanie urządzenia z takim kodem w DDEVIC powiadamia sterownik SIO, że adres bufora w DCB jest 24-bitowy i że najstarszy bajt adresu jest pod $00030E (w przeciwnym wypadku SIO zakłada, że najstarszy bajt adresu to 0); oraz że numer sektora jest 32-bitowy i jest umieszczony w DAUX1/DAUX2/DAUXA/DAUXB (&#039;&#039;&#039;UWAGA: w przypadku szeregowych stacji dysków, [[SIO2IDE]], [[SIO2PC]] itp. dwa najstarsze bajty tego numeru są ignorowane&#039;&#039;&#039;, ale powinny być wyzerowane dla kompatybilności). Poza tym działanie urządzeń wirtualnych jest identyczne, jak tradycyjnych (odpowiednio $31, $40 i $50), a kod urządzenia jest przed wysłaniem na port szeregowy przekładany na kod rzeczywisty.&lt;br /&gt;
&lt;br /&gt;
Przyjmując komendę do wykonania SIO w żaden sposób nie sprawdza, czy dodatkowa pamięć w ogóle istnieje - zakłada się, że program sam stwierdzi jej istnienie (choćby za pomocą funkcji alokacji pamięci) przed próbą odczytu do niej danych.&lt;br /&gt;
&lt;br /&gt;
==Zobacz też==&lt;br /&gt;
* [http://www.atariarchives.org/dere/ De Re Atari]&lt;br /&gt;
&lt;br /&gt;
==Bibliografia==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Atari Home Computer System: Serial Input Output Interface, User&#039;s Handbook&#039;&#039;&lt;br /&gt;
* Harry B. Stewart, &#039;&#039;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>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Dyskusja:FREDDIE&amp;diff=14916</id>
		<title>Dyskusja:FREDDIE</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Dyskusja:FREDDIE&amp;diff=14916"/>
		<updated>2006-03-13T12:43:02Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: /* 1450XLD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;quot;Pozwala na niezależne korzystanie z pamięci rozszerzonej przez układy 6502 i ANTIC&amp;quot; - jest to nieprawdą, bowiem Freddie po pierwsze nie rozpoznaje czy ma do czynienia z rozszerzoną czy tez podstawową pamięcią, a po drugie nawet nie wie czy adres pojawiający się na szynie adresowej pochodzi z Antica czy CPU. On tak naprawdę multipleksuje adresy do potrzeb pamięci dynamicznych oraz dokonuje podziału częstotliwości zegara taktującego Atari.--[[Wikipedysta:Macgyver|Macgyver]] 19:41, 9 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:To po co Freddie ma podłączone sygnały HALT i jakieś adresowe z PIA? Nie znam się na tym, ale to co znalazłem wskazuje, że nie masz racji. Ale najlepiej jak się wypowie jakiś elektronik. Tutaj fragment tekstu jednej ze stron która o tym mówi:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;The only plus side of the new machines is that they now included the FREDDIE chip and a memory multiplexer as standard, they had originally appeared on some late model 800XL&#039;s. The FREDDIE replaced a number of chips that controlled timing and memory refresh, &#039;&#039;&#039;and the other unnamed chip&#039;&#039;&#039; allowed you to access more than 64k by switching blocks of memory in and out. Using it you could also give the ANTIC one bank of 64k to work in while the 6502 got the other, allowing you to cache huge playfields in memory and free up room for larger programs.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
--[[Wikipedysta:Piotrv|Piotrv]] 23:06, 9 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::Piotrze błądzisz. Macgyver ma racje, a tekst który wkleiles to potwierdza nawet ;) Zdanie pochodzi z tekstu porownujacego zapewne serie XL z XE, i mowi ze: &#039;freddie zastapil chipy dotychczas kontrolujace odswiezanie i taktowanie, &#039;&#039;&#039;A INNY, NIENAZWANY UKLAD&#039;&#039;&#039; (pozwolilem sobie wyboldowac tez w twojej &#039;wklejce&#039;) - pozwalal na bankowanie pamieci i osobne dostepy 6502 i Antica. Tak wiec wprowadzono dwa nowe uklady i o tym wlasnie jest to zdanie. Ponadto tutaj: http://hardware.atari8.info/freddie.php - masz dokladny opis scalaka. Notabene nigdzie nie widac ani HLT ani nic od PIA ..... --[[Wikipedysta:Mikey|Mikey]] 01:52, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
Piotrv: tak się składa że ja jestem elektronikiem. A moja wiedza nie opiera się na dywagacjach tylko na praktyce  - m.in. rozszerzyłem RAM w większej ilości Atarynek niż ty pewnie na oczy widziałeś (bez urazy). A sygnały HALT i linie PB2-5 z PIA to ma połączone tzw. małe MMU, układ który seryjnie siedzi w Atari 130XE. FREDDIE zastępuje grupę TTL-i, które w 800XL bez FREDDIE-go multipleksowały magistralę adresową, generowały sygnały CAS i RAS do obsługi pamięci dynamicznych, realizowały &amp;quot;delay line&amp;quot; opóźnienie linii (freddie robi operując na różnych zegarach, w 800XL było to zrealizowane na opóźnieniu wynikające z czasu przejścia przez bramki) oraz dzieli częstotliwości taktowania. --[[Wikipedysta:Macgyver|Macgyver]] 07:15, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:Jeśli czegoś jesteś pewien, to dlaczego tego po prostu nie przeredagujesz?? Po co ta dyskusja? --[[Wikipedysta:Piotrv|Piotrv]] 09:54, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::OOO - mocne slowa i prawdziwe - Mac: do roboty ;) [[Wikipedysta:Jellonek|Jellonek]] 14:22, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==1450XLD==&lt;br /&gt;
&lt;br /&gt;
W sumie może i jest jak mówicie, ale w [[1450XLD]] wg Kierownika jest jak napisałem, więc czy Freddie był tam inaczej podłączony?? Cytuje:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[[Freddy]] był chipem [[MMU]] (Memory Mangement Unit - Jednostka Zarządzania Pamięcią), który pozwalał na dostęp procesora oraz chip`a Antic na niezależny dostęp do dodatkowych obszarów pamięci na ich własny użytek.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Może ktoś to wyjaśnić? Może coś źle zrozumiałem? --[[Wikipedysta:Piotrv|Piotrv]] 15:08, 12 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
Tworca tamtego artykulu tak samo skonfudowal znaczenie Freddiego ;) &lt;br /&gt;
Artykul juz widze jest poprawiony od dosc dawna [[Wikipedysta:Mikey|Mikey]] 12:22, 13 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:Tak, też zauważyłem, że [[1450XLD]] jest już wyprostowane (KMK?), więc to zamyka temat. --[[Wikipedysta:Piotrv|Piotrv]] 13:43, 13 mar 2006 (CET)&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Dyskusja:FREDDIE&amp;diff=10765</id>
		<title>Dyskusja:FREDDIE</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Dyskusja:FREDDIE&amp;diff=10765"/>
		<updated>2006-03-12T14:08:54Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: 1450XLD&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;quot;Pozwala na niezależne korzystanie z pamięci rozszerzonej przez układy 6502 i ANTIC&amp;quot; - jest to nieprawdą, bowiem Freddie po pierwsze nie rozpoznaje czy ma do czynienia z rozszerzoną czy tez podstawową pamięcią, a po drugie nawet nie wie czy adres pojawiający się na szynie adresowej pochodzi z Antica czy CPU. On tak naprawdę multipleksuje adresy do potrzeb pamięci dynamicznych oraz dokonuje podziału częstotliwości zegara taktującego Atari.--[[Wikipedysta:Macgyver|Macgyver]] 19:41, 9 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:To po co Freddie ma podłączone sygnały HALT i jakieś adresowe z PIA? Nie znam się na tym, ale to co znalazłem wskazuje, że nie masz racji. Ale najlepiej jak się wypowie jakiś elektronik. Tutaj fragment tekstu jednej ze stron która o tym mówi:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;The only plus side of the new machines is that they now included the FREDDIE chip and a memory multiplexer as standard, they had originally appeared on some late model 800XL&#039;s. The FREDDIE replaced a number of chips that controlled timing and memory refresh, &#039;&#039;&#039;and the other unnamed chip&#039;&#039;&#039; allowed you to access more than 64k by switching blocks of memory in and out. Using it you could also give the ANTIC one bank of 64k to work in while the 6502 got the other, allowing you to cache huge playfields in memory and free up room for larger programs.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
--[[Wikipedysta:Piotrv|Piotrv]] 23:06, 9 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::Piotrze błądzisz. Macgyver ma racje, a tekst który wkleiles to potwierdza nawet ;) Zdanie pochodzi z tekstu porownujacego zapewne serie XL z XE, i mowi ze: &#039;freddie zastapil chipy dotychczas kontrolujace odswiezanie i taktowanie, &#039;&#039;&#039;A INNY, NIENAZWANY UKLAD&#039;&#039;&#039; (pozwolilem sobie wyboldowac tez w twojej &#039;wklejce&#039;) - pozwalal na bankowanie pamieci i osobne dostepy 6502 i Antica. Tak wiec wprowadzono dwa nowe uklady i o tym wlasnie jest to zdanie. Ponadto tutaj: http://hardware.atari8.info/freddie.php - masz dokladny opis scalaka. Notabene nigdzie nie widac ani HLT ani nic od PIA ..... --[[Wikipedysta:Mikey|Mikey]] 01:52, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
Piotrv: tak się składa że ja jestem elektronikiem. A moja wiedza nie opiera się na dywagacjach tylko na praktyce  - m.in. rozszerzyłem RAM w większej ilości Atarynek niż ty pewnie na oczy widziałeś (bez urazy). A sygnały HALT i linie PB2-5 z PIA to ma połączone tzw. małe MMU, układ który seryjnie siedzi w Atari 130XE. FREDDIE zastępuje grupę TTL-i, które w 800XL bez FREDDIE-go multipleksowały magistralę adresową, generowały sygnały CAS i RAS do obsługi pamięci dynamicznych, realizowały &amp;quot;delay line&amp;quot; opóźnienie linii (freddie robi operując na różnych zegarach, w 800XL było to zrealizowane na opóźnieniu wynikające z czasu przejścia przez bramki) oraz dzieli częstotliwości taktowania. --[[Wikipedysta:Macgyver|Macgyver]] 07:15, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:Jeśli czegoś jesteś pewien, to dlaczego tego po prostu nie przeredagujesz?? Po co ta dyskusja? --[[Wikipedysta:Piotrv|Piotrv]] 09:54, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::OOO - mocne slowa i prawdziwe - Mac: do roboty ;) [[Wikipedysta:Jellonek|Jellonek]] 14:22, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==1450XLD==&lt;br /&gt;
&lt;br /&gt;
W sumie może i jest jak mówicie, ale w [[1450XLD]] wg Kierownika jest jak napisałem, więc czy Freddie był tam inaczej podłączony?? Cytuje:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[[Freddy]] był chipem [[MMU]] (Memory Mangement Unit - Jednostka Zarządzania Pamięcią), który pozwalał na dostęp procesora oraz chip`a Antic na niezależny dostęp do dodatkowych obszarów pamięci na ich własny użytek.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Może ktoś to wyjaśnić? Może coś źle zrozumiałem? --[[Wikipedysta:Piotrv|Piotrv]] 15:08, 12 mar 2006 (CET)&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Dyskusja:DCM&amp;diff=10741</id>
		<title>Dyskusja:DCM</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Dyskusja:DCM&amp;diff=10741"/>
		<updated>2006-03-12T14:01:19Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: copy-paste&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Trzeba przetłumaczyć na normalny język. [[Wikipedysta:KMK|KMK]] 07:49, 12 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mam nadzieje, że pan Ernest R. Schreurs wyraził zgodę na publikację... --[[Wikipedysta:Piotrv|Piotrv]] 15:01, 12 mar 2006 (CET)&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Falcon030&amp;diff=10756</id>
		<title>Falcon030</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Falcon030&amp;diff=10756"/>
		<updated>2006-03-11T21:57:58Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{grafr|Falcon-flyer-small.gif}}&lt;br /&gt;
&lt;br /&gt;
Atari Falcon 030 był następcą Atari [[ST]], oficjalna premiera miała miejsce 23 sierpnia 1991 w Niemczech.&lt;br /&gt;
Falcon był rozwijany pod nazwą [[Sparrow]], a wczesna wersja rozwojowa/prototyp oznaczona była jako [[FX-1]].&lt;br /&gt;
&lt;br /&gt;
Duma atarowców spod znaku ST i niespełnione marzenie wielu, świetnie zapowiadający się komputer,&lt;br /&gt;
był równie wspaniałą maszyną jak i rozczarowaniem. Od początku zbierał nie zasłużoną krytykę. Pomimo wspaniałych możliwości komputer niedoceniony, chociaż w pewnych zastosowaniach niezastąpiony, szczególnie na styku profesjonalnych i amatorskich zastosowań audio, wykorzystywany również jako profesjonalny system do prezentacji video - [[Sonovista]].&lt;br /&gt;
Falcon 030 był właściwie tylko namiastką, ponieważ prawdziwym demonem miał być przygotowywany równocześnie [[Falcon040]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technikalia ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parametry:&#039;&#039;&#039;&lt;br /&gt;
* CPU: Motorola [http://pl.wikipedia.org/wiki/Motorola_68030 68030], 16 MHz, 256b cache&lt;br /&gt;
* DSP: Motorola [[56001]], 32 MHz,&lt;br /&gt;
* FPU: (opcjonalnie) Motorola [[68881]] lub [[68882]], 16 MHz,&lt;br /&gt;
* Szyna: 16Mhz/16bit&lt;br /&gt;
* Pamięć: 1, 4 lub 14 MB&lt;br /&gt;
&lt;br /&gt;
* System: &lt;br /&gt;
** [[TOS]] (wersje 4.01, 4.02, 4.03, 4.04)&lt;br /&gt;
** [[MultiTOS]]&lt;br /&gt;
&lt;br /&gt;
* Grafika: &#039;&#039;&#039;VIDEL&#039;&#039;&#039; (programowalny procesor graficzny)&lt;br /&gt;
** Tryby graficze:&lt;br /&gt;
** Standardowe: (paleta kolorów: 262144 kolory)&lt;br /&gt;
*** 320 lub 640 poziomo&lt;br /&gt;
*** 200 lub 400 pionowo na telewizorze lub monitorze RGB&lt;br /&gt;
*** 240 lub 480 pionowo na monitorze VGA&lt;br /&gt;
*** 2, 4, 16, 256 lub HiColor (65536 kolorów) (na monitorze VGA TrueColor tylko w 320 poziomo)&lt;br /&gt;
** Kompatybilne z [[ST]]: (paleta kolorów: 4096 kolory)&lt;br /&gt;
*** ST Low: 320x200, 16 kolorów&lt;br /&gt;
*** ST Med: 640x200, 4 kolory&lt;br /&gt;
*** ST High: 640x400, 2 kolory&lt;br /&gt;
** Kompatybilne z [[TT030|TT]]: (paleta kolorów: 4096 kolory)&lt;br /&gt;
*** TT Low: 320x480, 256 kolorów&lt;br /&gt;
*** TT Med: 640x480, 16 kolorów&lt;br /&gt;
*** TT High: 1280x960, 2 kolory&lt;br /&gt;
** Nie publikowane:&lt;br /&gt;
*** 832*600 Truecolor,&lt;br /&gt;
*** 1664*600 2, 4, 16 lub 256 kolorów,&lt;br /&gt;
** Procesor graficzny [[BLiTTER]]&lt;br /&gt;
&lt;br /&gt;
* Audio:&lt;br /&gt;
** &#039;&#039;&#039;SDMA&#039;&#039;&#039; (Sound DMA)&lt;br /&gt;
** Multiplekser&lt;br /&gt;
** 2 szesnastobitowe przetworniki cyfrowo/analogowe (stereo) (maksymalna częstotliwość: 49170Hz)&lt;br /&gt;
** 2 szesnastobitowe przetworniki analogowo/cyfrowe (stereo) (maksymalna częstotliwość: 49170Hz)&lt;br /&gt;
** Procesor sygnałowy DSP&lt;br /&gt;
*** 8-em 16bit-owych kanałów DMA z próbkowaniem do 50 kHz&lt;br /&gt;
** Generator [[YM-3439]] (3 kanały, 8 oktaw, mozliwość generowania szumów)&lt;br /&gt;
&lt;br /&gt;
* Interfejsy:&lt;br /&gt;
** IDE (eewnętrzny)&lt;br /&gt;
** SCSI II (zewnętrzny)&lt;br /&gt;
&lt;br /&gt;
* Stacja dysków: 3,5&amp;quot; FDD, 1,44 MB (DS).&lt;br /&gt;
&lt;br /&gt;
== System Operacyjny ==&lt;br /&gt;
&lt;br /&gt;
[[Grafika:Falcon-title.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Razem z Falconem dostarczany był wielozadaniowy [[MultiTOS]], rozwijany do dziś jako [[FreeMiNT]].&lt;br /&gt;
&lt;br /&gt;
Na Falconie działają także takie systemy jak [[NetBSD]] (od wersji 1.5.1), [[Linux]] (od wersji 2.0) oraz [[MagiC]].&lt;br /&gt;
&lt;br /&gt;
== Life after death ==&lt;br /&gt;
&lt;br /&gt;
Po odejściu Atari z rynku komputerów, firma [[C-Lab]] wykupiła licencję Falcona i sprzedawała pod własną marką jako [[C-Lab Falcon|Falcon MK I]], [[C-Lab Falcon|Falcon MK II]] oraz [[C-Lab Falcon|Falcon MK X]].&lt;br /&gt;
&lt;br /&gt;
Falcon jest komputerem dla którego wciąż powstają rozszerzenia sprzętowe, warto wymienić karty turbo takie jak chociażby [[Afterburner040]] czy [[CT60]].&lt;br /&gt;
&lt;br /&gt;
Trwają prace nad nowoczesnym następcą Falcona, wyposażpnym w procesor [[ColdFire]] i silne [[DSP]].&lt;br /&gt;
&lt;br /&gt;
== Ciekawe strony  ==&lt;br /&gt;
&lt;br /&gt;
* http://www.czuba-tech.com/ - producent kart turbo do Falcona&lt;br /&gt;
* http://lafabrie.club.fr/Atari/Index.htm - porównanie Falconów z różnymi rozszerzeniami&lt;br /&gt;
* http://perso.wanadoo.fr/didierm/index-e.htm - sterowniki dla kart rozszerzeń&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Atari ST]]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Falcon030&amp;diff=10701</id>
		<title>Falcon030</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Falcon030&amp;diff=10701"/>
		<updated>2006-03-11T21:56:53Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: drobnica&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{grafr|Falcon-flyer-small.gif}}&lt;br /&gt;
&lt;br /&gt;
Atari Falcon 030 był następcą Atari [[ST]], oficjalna premiera miała miejsce 23 sierpnia 1991 w Niemczech.&lt;br /&gt;
Falcon był rozwijany pod nazwą [[Sparrow]], a wczesna wersja rozwojowa/prototyp oznaczona była jako [[FX-1]].&lt;br /&gt;
&lt;br /&gt;
Duma atarowców spod znaku ST i niespełnione marzenie wielu, świetnie zapowiadający się komputer,&lt;br /&gt;
był równie wspaniałą maszyną jak i rozczarowaniem. Od początku zbierał nie zasłużoną krytykę. Pomimo wspaniałych możliwości komputer niedoceniony, chociaż w pewnych zastosowaniach niezastąpiony, szczególnie na styku profesjonalnych i amatorskich zastosowań AUDIO, wykorzystywany również jako profesjonalny system do prezentacji video - [[Sonovista]].&lt;br /&gt;
Falcon 030 był właściwie tylko namiastką, ponieważ prawdziwym demonem miał być przygotowywany równocześnie [[Falcon040]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technikalia ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parametry:&#039;&#039;&#039;&lt;br /&gt;
* CPU: Motorola [http://pl.wikipedia.org/wiki/Motorola_68030 68030], 16 MHz, 256b cache&lt;br /&gt;
* DSP: Motorola [[56001]], 32 MHz,&lt;br /&gt;
* FPU: (opcjonalnie) Motorola [[68881]] lub [[68882]], 16 MHz,&lt;br /&gt;
* Szyna: 16Mhz/16bit&lt;br /&gt;
* Pamięć: 1, 4 lub 14 MB&lt;br /&gt;
&lt;br /&gt;
* System: &lt;br /&gt;
** [[TOS]] (wersje 4.01, 4.02, 4.03, 4.04)&lt;br /&gt;
** [[MultiTOS]]&lt;br /&gt;
&lt;br /&gt;
* Grafika: &#039;&#039;&#039;VIDEL&#039;&#039;&#039; (programowalny procesor graficzny)&lt;br /&gt;
** Tryby graficze:&lt;br /&gt;
** Standardowe: (paleta kolorów: 262144 kolory)&lt;br /&gt;
*** 320 lub 640 poziomo&lt;br /&gt;
*** 200 lub 400 pionowo na telewizorze lub monitorze RGB&lt;br /&gt;
*** 240 lub 480 pionowo na monitorze VGA&lt;br /&gt;
*** 2, 4, 16, 256 lub HiColor (65536 kolorów) (na monitorze VGA TrueColor tylko w 320 poziomo)&lt;br /&gt;
** Kompatybilne z [[ST]]: (paleta kolorów: 4096 kolory)&lt;br /&gt;
*** ST Low: 320x200, 16 kolorów&lt;br /&gt;
*** ST Med: 640x200, 4 kolory&lt;br /&gt;
*** ST High: 640x400, 2 kolory&lt;br /&gt;
** Kompatybilne z [[TT030|TT]]: (paleta kolorów: 4096 kolory)&lt;br /&gt;
*** TT Low: 320x480, 256 kolorów&lt;br /&gt;
*** TT Med: 640x480, 16 kolorów&lt;br /&gt;
*** TT High: 1280x960, 2 kolory&lt;br /&gt;
** Nie publikowane:&lt;br /&gt;
*** 832*600 Truecolor,&lt;br /&gt;
*** 1664*600 2, 4, 16 lub 256 kolorów,&lt;br /&gt;
** Procesor graficzny [[BLiTTER]]&lt;br /&gt;
&lt;br /&gt;
* Audio:&lt;br /&gt;
** &#039;&#039;&#039;SDMA&#039;&#039;&#039; (Sound DMA)&lt;br /&gt;
** Multiplekser&lt;br /&gt;
** 2 szesnastobitowe przetworniki cyfrowo/analogowe (stereo) (maksymalna częstotliwość: 49170Hz)&lt;br /&gt;
** 2 szesnastobitowe przetworniki analogowo/cyfrowe (stereo) (maksymalna częstotliwość: 49170Hz)&lt;br /&gt;
** Procesor sygnałowy DSP&lt;br /&gt;
*** 8-em 16bit-owych kanałów DMA z próbkowaniem do 50 kHz&lt;br /&gt;
** Generator [[YM-3439]] (3 kanały, 8 oktaw, mozliwość generowania szumów)&lt;br /&gt;
&lt;br /&gt;
* Interfejsy:&lt;br /&gt;
** IDE (eewnętrzny)&lt;br /&gt;
** SCSI II (zewnętrzny)&lt;br /&gt;
&lt;br /&gt;
* Stacja dysków: 3,5&amp;quot; FDD, 1,44 MB (DS).&lt;br /&gt;
&lt;br /&gt;
== System Operacyjny ==&lt;br /&gt;
&lt;br /&gt;
[[Grafika:Falcon-title.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Razem z Falconem dostarczany był wielozadaniowy [[MultiTOS]], rozwijany do dziś jako [[FreeMiNT]].&lt;br /&gt;
&lt;br /&gt;
Na Falconie działają także takie systemy jak [[NetBSD]] (od wersji 1.5.1), [[Linux]] (od wersji 2.0) oraz [[MagiC]].&lt;br /&gt;
&lt;br /&gt;
== Life after death ==&lt;br /&gt;
&lt;br /&gt;
Po odejściu Atari z rynku komputerów, firma [[C-Lab]] wykupiła licencję Falcona i sprzedawała pod własną marką jako [[C-Lab Falcon|Falcon MK I]], [[C-Lab Falcon|Falcon MK II]] oraz [[C-Lab Falcon|Falcon MK X]].&lt;br /&gt;
&lt;br /&gt;
Falcon jest komputerem dla którego wciąż powstają rozszerzenia sprzętowe, warto wymienić karty turbo takie jak chociażby [[Afterburner040]] czy [[CT60]].&lt;br /&gt;
&lt;br /&gt;
Trwają prace nad nowoczesnym następcą Falcona, wyposażpnym w procesor [[ColdFire]] i silne [[DSP]].&lt;br /&gt;
&lt;br /&gt;
== Ciekawe strony  ==&lt;br /&gt;
&lt;br /&gt;
* http://www.czuba-tech.com/ - producent kart turbo do Falcona&lt;br /&gt;
* http://lafabrie.club.fr/Atari/Index.htm - porównanie Falconów z różnymi rozszerzeniami&lt;br /&gt;
* http://perso.wanadoo.fr/didierm/index-e.htm - sterowniki dla kart rozszerzeń&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Atari ST]]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Dyskusja:Strona_g%C5%82%C3%B3wna&amp;diff=10902</id>
		<title>Dyskusja:Strona główna</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Dyskusja:Strona_g%C5%82%C3%B3wna&amp;diff=10902"/>
		<updated>2006-03-11T21:02:03Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: /* Nowy wygląd strony głównej - re: LUKSUS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Literatura&#039;&#039;&#039;&#039;&#039; - czy nie jest przesadą umieszczanie takich tytułów jak &amp;quot;Chip&amp;quot; czy &amp;quot;PC World Computer&amp;quot;? Wszak to jest Atariki, a nie wiki...? Wypowiedzcie się na ten temat.--[[Wikipedysta:Sikor|Sikor]] 23:22, 27 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
Nie jest! A jesli nawet to prosze wykasuj Secret Service bo to duzo predzej nie pisalo o atari, a jesli juz cokolwiek bylo to nawet dot. nie STka a gier!, poza tym wg. zasady &amp;quot;ATARIKI nie WIKI&amp;quot; to proponuje wypier. takie haselka jak [[AMIGA]]. Ja proponuje Sikor wprzywrocic wykasoane hasla bo tam w odroznieniu od nie istotnych informacji dla Atariki umieszczane byly artykuly rzeczywiscie dot. Atari! --[[Wikipedysta:Vulgar|Vulgar]] 11:11, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::podaj bliższe przykłady, niejednostkowe. Pytanie moje było przytoczone dość dawno, nikt na nie nie odpowiedział, więc - zgodnie z zasadą - brak odpowiedzi jest aprobatą - wykasowałem. Zresztą - i tak były puste. Co do Secret Service - owszem, pismo dotyczy gier, ale przez bardzo długi okres czasu były tam także opisywane gry na ST i na małe Atari, więc jest jak najbardziej na miejscu. Co do Amigi - zgadzam się z Tobą, jak już - powinien być link zewnętrzny i już. --[[Wikipedysta:Sikor|Sikor]] 11:29, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::jestem za zachowaniem hasła [[Amiga]], jest to ostatni etap ewolucji [[XL]], więc dodanie paru zdań na ten temat jest na miejscu. Tak samo można by wywalić [[Atari MainFrame]] i wszystkie czasopisma traktujące o C=, gdybyśmy mieli być tacy dokładni.--[[Wikipedysta:Piotrv|Piotrv]] 12:23, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:co do atari mainframe - w pełni podzielam ten pogląd. Co do Amigi - hmm, czy do końca miała być następcą serii XE...? W sumie może zostać--[[Wikipedysta:Sikor|Sikor]] 13:01, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:Sikor, chodzi o serie [[XL]] - a nie [[XE]]. Zob. [[Amiga]]. --[[Wikipedysta:Piotrv|Piotrv]] 14:06, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
== propozycja rozszerzenia funkcjonalnosci... ==&lt;br /&gt;
&lt;br /&gt;
moze dodanie http://meta.wikimedia.org/wiki/FCKeditor nieco zwiekszylo zapal&lt;br /&gt;
edytujacych - co za tym idzie - ilosc dostepnych stron&lt;br /&gt;
--[[Wikipedysta:Jellonek|Jellonek]] 09:22, 13 lip 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Nowy wygląd strony głównej ==&lt;br /&gt;
&lt;br /&gt;
Rodacy!!! Wreszcie skończyłem nowy wygląd strony głównej. Proszę o uwagi. Poza tym mam propozycje aby wypunktowania pionowe zmienić na zwykłą listę poziomą &amp;quot;wyprzecinkowaną&amp;quot; ponieważ np. Literatura robi się już nieprzywoicie &amp;quot;wysoka&amp;quot;. Myślę, że wpłynie to pozytywnie na szybkość odnajdowywania informacji - nikomu się nie chce przewijać strony żeby zobaczyć co będzie dalej - tak będzie wszystko od razu widoczne. --[[Wikipedysta:Daniel Koźmiński|dely]] 14:51, 10 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
: Ladnie, troche inaczej niz w &amp;quot;oryginale&amp;quot;, chyba wole ta wersje od poprzedniej, jednak jeszcze cos tu brakuje... Kierowniku moze w kazdej z kategori, zwyczajnie zrobic jeszcze po dwie kolumny? --[[Wikipedysta:Vulgar|Vulgar]] 15:11, 10 mar 2006 (CET)&lt;br /&gt;
:: a pomyślałeś o tych, co mają mniejsze rozdzielczości?--[[Wikipedysta:Daniel Koźmiński|dely]] 18:52, 10 mar 2006 (CET)&lt;br /&gt;
::: To tylko propzycja, ale w zasadzie podobnie mozna powiedziec o tych co maja &amp;quot;za duze&amp;quot; rozdzielczosci ;) az sie prosi zeby cos tam wrzucic. Ale widze ew. rozwiazanie - sztywne tabelki! jezeli jet to mozliwe w wiki. albo m/w tak: http://atariki.krap.pl/index.php/Moja_glowna. Poza tym to proponuje cos zrobic z kategoriami bo np. kategoria PROGRAMOWANIE troche sie rzadzi innymmi zasadami--[[Wikipedysta:Vulgar|Vulgar]] 19:01, 10 mar 2006 (CET)&lt;br /&gt;
:::: No to Hameryki nie odkryłeś, proponowałem to powyżej. A tabelki stałeś szerokości w tym lejałcie nie przejdą. Nie zgadzam się.--[[Wikipedysta:Daniel Koźmiński|dely]] 19:53, 10 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::::: Ba! Mowa. Kolumb nawet jej nie odkrył :) Co mi tam. Ale jakos i tak wole sztywne tabelki bo po zminimalizowaniu okna robi sie SPLASK...&lt;br /&gt;
--[[Wikipedysta:Vulgar|Vulgar]] 20:01, 10 mar 2006 (CET)&lt;br /&gt;
::Proponuje sie przyzwyczaic do mysli ze WIEKSZA CZESC POLSKICH INTERNAUTOW kozysta z rozdzielczosci 1024x768, a 1280x1024 (choc szybko sie przebija) nadal pozostaje (pewnie jeszcze z pol roku, moze rok) LUKSUSEM. --[[Wikipedysta:Jellonek|Jellonek]] 12:12, 11 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::Niezależnie od tego strona główna chyba bardzo dobrze się wymiaruje - ja przynajmniej nic nie zauważyłem. Natomiast osobiście uważam, że literatura i [[OS]]y mogłyby być wymienione tylko jako link do kategorii. Lista byłaby krótsza i bardziej zwięzła. --[[Wikipedysta:Piotrv|Piotrv]] 22:02, 11 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:Ładnie, miło i estetycznie. Mi się podoba.--[[Wikipedysta:Sikor|Sikor]] 15:18, 10 mar 2006 (CET)&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Freemon&amp;diff=14917</id>
		<title>Freemon</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Freemon&amp;diff=14917"/>
		<updated>2006-03-10T09:35:29Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: ... obecnie stosowany do kontroli przepływu paliwa rakietowego na stacji Mir-2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Freemon]] - nazwa pochodzi od Freezer Monitor. Ostatnia opublikowana wersja: 2.4. &lt;br /&gt;
Program jest przeznaczony do obsługi rozszerzenia [[Cobra Hacker]] i został stworzony przez [[MacGyver|MacGyvera]].&lt;br /&gt;
&lt;br /&gt;
[[Grafika:Freemon.JPG]]&lt;br /&gt;
&lt;br /&gt;
Program ma możliwość obróbki zfreezowanej pamięci - oraz cięcia i zgrywania do pomięci wybranych kawałków pamięci, deasemblację danych, wyszukiwanie ciągów, edycję pamięci kodami [[Atascii]]/hexadecymalnie. Dodatkowo program ma możliwość przesłuchiwania wybranych obszarów pamięci jako sample 7,8kHz/15,6kHz, przeglądanie jako grafika w trybach: 8/9/15 a także daje możliwość wycinania i odgrywania modułów muzycznych w formacie takich programów jak [[Music Protracker]], [[Chaos Music Composer]], [[Sound Tracker]], [[Future Composer]].&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;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=800XLDJ&amp;diff=10577</id>
		<title>800XLDJ</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=800XLDJ&amp;diff=10577"/>
		<updated>2006-03-09T20:11:19Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: lepciej&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Programowy emulator stacji dysków 1050/XF551 do Atari [[XL]]/[[XE]] dla [[Falcon030|Falcona]], korzystający z kabelka [[SIO2ST]]. Teoretycznie powinien bezproblemowo działać także z Atari [[ST]] oraz [[TT030]], jednak nie każda wersja z tym ostatnim działa prawidłowo. Program jest rozpowszechniany jako [http://pl.wikipedia.org/wiki/Freeware Freeware].&lt;br /&gt;
&lt;br /&gt;
http://atariki.krap.pl/images/c/c4/800djxl.gif&lt;br /&gt;
&lt;br /&gt;
==Zobacz także==&lt;br /&gt;
[http://www.s-direktnet.de/homepages/k_nadj/dj800.html HeAvEn - 800XL-DJ - opis i oprogramowanie do pobrania]&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
[[Kategoria:Programy na ST/TT/Falcon]]&lt;br /&gt;
[[Kategoria:Atari ST]]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Medusa&amp;diff=15109</id>
		<title>Medusa</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Medusa&amp;diff=15109"/>
		<updated>2006-03-09T19:59:15Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: polskie, ort, drobnica&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://atariki.krap.pl/images/b/b7/Medusalom.gif&lt;br /&gt;
&lt;br /&gt;
Medusa Computer Systems wypuścił na rynek co najmniej dwa modele komputerów oparte na procesorach MC680X0, były to [[Hades]] i T-40.&lt;br /&gt;
&lt;br /&gt;
T-40 to pierwszy zgodny z [[TOS]] komputer ze stajni Medusa Computer Systems. Wyposażony był w procesor MC68040. Ilość pamięci [[RAM]] można rozbudować do 128MB (na płycie) i 4GB (zewnętrznie). Maszyna pracowała pod kontrolą nieznacznie zmodyfikowanego TOS 3.06.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
W USA sprzedawane pod nazwą Direct.&lt;br /&gt;
&lt;br /&gt;
==Zobacz też==&lt;br /&gt;
&lt;br /&gt;
[http://www.kingx.com/kingx/medusa/thes-t40.html T-40]&lt;br /&gt;
&lt;br /&gt;
[http://www.old-computers.com/museum/computer.asp?st=1&amp;amp;c=731 T-40 w Old Computers]&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
[[kategoria: Firmy]]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Hades&amp;diff=10583</id>
		<title>Hades</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Hades&amp;diff=10583"/>
		<updated>2006-03-09T19:54:36Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: ... i jeszcze jedna&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hades to komputer zgodny z [[TOS]], a produkowany przez &#039;&#039;&#039;Medusa Computer Systems&#039;&#039;&#039;. Można na nim uruchomić systemy: [[MiNT]], [[MagiC]], [[Geneva]], [http://pl.wikipedia.org/wiki/NetBSD NetBSD], [http://pl.wikipedia.org/wiki/Linux Linux]. &lt;br /&gt;
W zależności od konfiguracji komputer był wyposażony w procesor [[MC68040]] lub [[MC68060]], 32 MB [[RAM]] z możliwością rozbudowy do 1GB, 4 sloty PCI oraz kartę graficzną [[ATI]] Rage Pro z 8MB RAM. Maszyna była sprzedawana z klawiaturą PC i myszą zgodną z Atari. Ze względu na przestarzały standard producent nie wyposażył Hades&#039;a w możliwość obsługi drukarek zgodnych ze standardem Atari.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://atariki.krap.pl/images/2/23/Hades.jpg&lt;br /&gt;
&lt;br /&gt;
==Zobacz także==&lt;br /&gt;
&lt;br /&gt;
* [http://www.kingx.com/kingx/medusa/thes-hades.html Hades] - strona producenta&lt;br /&gt;
* [http://assemsoft.atari.org/clonedir/ AssemSoft] sterowniki, lista użytkowników, przydatne informacje&lt;br /&gt;
&lt;br /&gt;
* [http://atari-users.net/mailman/listinfo/ac Lista mailingowa] na której dyskutuje się o klonach Atari&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
[[Kategoria: Atari ST]]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Hades&amp;diff=10574</id>
		<title>Hades</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Hades&amp;diff=10574"/>
		<updated>2006-03-09T19:53:31Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: i jeszcze jedna&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hades to komputer zgodny z [[TOS]], a produkowany przez &#039;&#039;&#039;Medusa Computer Systems&#039;&#039;&#039;. Można na nim uruchomić systemy: [[MiNT]], [[MagiC]], [[Geneva]], [http://pl.wikipedia.org/wiki/NetBSD NetBSD], [http://pl.wikipedia.org/wiki/Linux Linux]. &lt;br /&gt;
W zależności od konfiguracji komputer był wyposażony w procesor [[MC68040]] lub [[MC68060]], 32 MB [[RAM]] z możliwością rozbudowy do 1GB, 4 sloty PCI oraz kartę graficzną [[ATI]] Rage Pro z 8MB RAM. Maszyna była sprzedawana z klawiaturą PC i myszą zgodną z Atari. Ze wzeględu na przestarzały standard producent nie wyposażył Hades&#039;a w możliwość obsługi drukarek zgodnych ze standardem Atari.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://atariki.krap.pl/images/2/23/Hades.jpg&lt;br /&gt;
&lt;br /&gt;
==Zobacz także==&lt;br /&gt;
&lt;br /&gt;
* [http://www.kingx.com/kingx/medusa/thes-hades.html Hades] - strona producenta&lt;br /&gt;
* [http://assemsoft.atari.org/clonedir/ AssemSoft] sterowniki, lista użytkowników, przydatne informacje&lt;br /&gt;
&lt;br /&gt;
* [http://atari-users.net/mailman/listinfo/ac Lista mailingowa] na której dyskutuje się o klonach Atari&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
[[Kategoria: Atari ST]]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Hades&amp;diff=10573</id>
		<title>Hades</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Hades&amp;diff=10573"/>
		<updated>2006-03-09T19:52:42Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: lekkie rozwinięcie, polskie, literówka&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hades to komputer zgodny z [[TOS]], a produkowany przez &#039;&#039;&#039;Medusa Computer Systems&#039;&#039;&#039;. Można na nim uruchomić systemy: [[MiNT]], [[MagiC]], [[Geneva]], [http://pl.wikipedia.org/wiki/NetBSD NetBSD], [http://pl.wikipedia.org/wiki/Linux Linux]. &lt;br /&gt;
W zależności od konfiguracji komputer był wyposażony w procesor [[MC68040]] lub [[MC68060]], 32 MB [[RAM]] z możliwością rozbudowy do 1GB, 4 sloty PCI oraz kartę graficzną [[ATI]] Rage Pro z 8MB RAM. Maszyna była sprzedwawana z klawiaturą PC i myszą zgodną z Atari. Ze wzeględu na przestarzały standard producent nie wyposażył Hades&#039;a w możliwość obsługi drukarek zgodnych ze standardem Atari.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://atariki.krap.pl/images/2/23/Hades.jpg&lt;br /&gt;
&lt;br /&gt;
==Zobacz także==&lt;br /&gt;
&lt;br /&gt;
* [http://www.kingx.com/kingx/medusa/thes-hades.html Hades] - strona producenta&lt;br /&gt;
* [http://assemsoft.atari.org/clonedir/ AssemSoft] sterowniki, lista użytkowników, przydatne informacje&lt;br /&gt;
&lt;br /&gt;
* [http://atari-users.net/mailman/listinfo/ac Lista mailingowa] na której dyskutuje się o klonach Atari&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
[[Kategoria: Atari ST]]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Dyskusja:Strona_g%C5%82%C3%B3wna&amp;diff=10627</id>
		<title>Dyskusja:Strona główna</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Dyskusja:Strona_g%C5%82%C3%B3wna&amp;diff=10627"/>
		<updated>2006-03-09T13:06:48Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: /* Inne L&amp;lt;&amp;gt;E */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ja proponuję starać się utrzymać tą stronę z jak najmniejszą liczbą informacji.&lt;br /&gt;
Takie rzeczy jak CIO czy SIO powinny być pogrupowane np wewnątrz działu programowanie.&lt;br /&gt;
--[[Wikipedysta:Eru|Eru]] 19:36, 7 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Popieram. --[[Wikipedysta:Dely|Dely]] 19:51, 7 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Proponuję też wywalić systemy operacyjne z głównej strony, QMEG i XL OS przenieść do rozszerzeń w Sprzęt. --[[Wikipedysta:Dely|Dely]] 19:56, 7 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
No pytanie, czy OS to sprzęt (bo ROM) czy soft (bo program ;-)). Co do strony głównej, to może faktycznie pochopnie wpisałem tam te rzeczy. No i w ogóle pytanie, czy liilsta takich kategorii da się w ogóle utrzymac w na tyle małym rozmiarze, żeby nie szpecić strony głównej. Nie wiem, główkujcie panowie, ja się dostosuję ;-) [[Wikipedysta:KMK|KMK]] 20:02, 7 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
DOSy jeszcze dolozylem do Programow, rowniez wydluzajac pierwsza strone. :)) Czesc linkow w stacjach updatnalem (tam, gdzie odwolywaly sie do ogolnych dosow), a czesci jeszcze nie (bo nie zrobilem rozbicia na wersje w dosach, a sa tez informacje, z jaka wersja stacja byla sprzedawana). --[[Wikipedysta:Krap|Krap]] 00:54, 8 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Panowie&lt;br /&gt;
&lt;br /&gt;
Proponuje następujący podział na głównej stronie:&lt;br /&gt;
&lt;br /&gt;
* 8 bit&lt;br /&gt;
* 16 bit&lt;br /&gt;
* Konsole&lt;br /&gt;
* Inne (Historia?)&lt;br /&gt;
&lt;br /&gt;
Bo inaczej wogóle sie pogubimy. Naprawdę chcecie żebym w dziale Dema dopisywał dema STkowskie? Może to jednak podzielmy.--[[Wikipedysta:AdamK|AdamK]] 08:37, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Zgadzam się.&lt;br /&gt;
&lt;br /&gt;
Dodatkowo, byłbym za zdecydowanym uporządkowaniem nazewnictwa.&lt;br /&gt;
Hasła powinny być jak najmniej kontekstowe - hasło &#039;800&#039; nie powinno w ogóle mieć miejsca. Poprawne hasło powinno brzymieć &#039;Atari 800&#039;.&lt;br /&gt;
&lt;br /&gt;
Kolejna propozycja: dodanie kategorii stron:&lt;br /&gt;
* meta-kategorii:&lt;br /&gt;
** stub - lub po polsku &#039;Zalążek artykułu&#039; - trzeba tylko zobaczyć jak się robi to automagicznie&lt;br /&gt;
** request - prośby o wypełnienie&lt;br /&gt;
* kategorii-tematycznych:&lt;br /&gt;
** Demo XL&lt;br /&gt;
** Gra XL&lt;br /&gt;
** itp.&lt;br /&gt;
&lt;br /&gt;
Wtedy strona &amp;quot;Dema&amp;quot; będzie po prostu linkiem do &amp;quot;Kategoria:Dema XL&amp;quot; kategorią. &lt;br /&gt;
A w artykułach umieszczamy marker {{Dema XL}} i jest to robione za nas automagicznie.&lt;br /&gt;
&lt;br /&gt;
Ogólnie, przyjrzeć się trzeba innym wikipediom i wyciągnąć wnioski.&lt;br /&gt;
&lt;br /&gt;
--[[Wikipedysta:Eru|Eru]] 11:49, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
== Projekt ==&lt;br /&gt;
&lt;br /&gt;
Proponowany projekt głównej strony:&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Atariki]] - atari.area Wikipedia.&lt;br /&gt;
&lt;br /&gt;
Jest {{CURRENTDAY}}.{{CURRENTMONTH}}.{{CURRENTYEAR}}, godzina {{CURRENTTIME}}.&lt;br /&gt;
Aktualnie w Atariki jest {{NUMBEROFARTICLES}} stron.&lt;br /&gt;
&lt;br /&gt;
== 8 Bit ==&lt;br /&gt;
* [[8_Sprzęt|Sprzęt]]&lt;br /&gt;
* [[8_Oprogramowanie|Oprogramowanie]]&lt;br /&gt;
* [[8_Porady|Porady]]&lt;br /&gt;
* [[8_Inne|Ludzie, wydarzenia i zjawiska]]&lt;br /&gt;
&lt;br /&gt;
== 16/32 Bit ==&lt;br /&gt;
* [[16_Sprzęt|Sprzęt]]&lt;br /&gt;
* [[16_Oprogramowanie|Oprogramowanie]]&lt;br /&gt;
* [[16_Porady|Porady]]&lt;br /&gt;
* [[16_Inne|Ludzie, wydarzenia i zjawiska]]&lt;br /&gt;
&lt;br /&gt;
== Konsole ==&lt;br /&gt;
* [[Kon_Sprzęt|Sprzęt]]&lt;br /&gt;
* [[Kon_Oprogramowanie|Oprogramowanie]]&lt;br /&gt;
* [[Kon_Porady|Porady]]&lt;br /&gt;
* [[Kon_Inne|Ludzie, wydarzenia i zjawiska]]&lt;br /&gt;
&lt;br /&gt;
== Inne ==&lt;br /&gt;
* [[Historia]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
--[[Wikipedysta:AdamK|AdamK]] 12:55, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
A co zrobimy z programowaniem?--[[Wikipedysta:Dely|Dely]] 12:57, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Można albo dorzucic na gównej stronie, albo w Oprogramowaniu--[[Wikipedysta:AdamK|AdamK]] 12:59, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Bardzo ładna podział strony głównej. Myślę, że programowanie powinno być wna stronie głównej.&lt;br /&gt;
--[[Wikipedysta:Tatqoo|Tatqoo]] 13:08, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Uaktualniłem projekt. Co wy na to?--[[Wikipedysta:AdamK|AdamK]] 13:14, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Może Programowanie jest częścią czegoś szerszego? &lt;br /&gt;
Np &amp;quot;Porady&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Porady&lt;br /&gt;
** Programowanie&lt;br /&gt;
** Tworzenie muzyki&lt;br /&gt;
** Tworzenie grafiki&lt;br /&gt;
** Edycja tekstów&lt;br /&gt;
--[[Wikipedysta:Eru|Eru]] 13:22, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Eru dobrze mowi, zamiast programowanie dac porady. --[[Wikipedysta:Dely|Dely]] 13:27, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Proponuję zastanowienie się nad używaniem Kategorii i Szablonów.&lt;br /&gt;
Przykładowo zajrzyjcie do [[Taquart]] i [[Numen]] - kategorie [[:Kategoria:Grupy XL/XE]] [[:Kategoria:Dema XL/XE]]&lt;br /&gt;
--[[Wikipedysta:Eru|Eru]] 13:41, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Poprawiłem projekt. Jak sie dodaje kategorie?--[[Wikipedysta:AdamK|AdamK]] 13:55, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
A gdzie są te szablony?--[[Wikipedysta:Dely|Dely]] 13:55, 9 gru 2004 (CET)&lt;br /&gt;
----&lt;br /&gt;
Kategorie i szablony się dodaje tak jak strony - wpisując tylko nazwę Kategoria:nazwa lub Szablon:nazwa.&lt;br /&gt;
&lt;br /&gt;
Szablonów używa się tak, że tam gdzie sie chce dodać dany szablon, wpisuje się {{nazwa_szablonu}} po prostu, patrz [[Numen]] i [[Szablon:Taquart-Produkcje]].&lt;br /&gt;
&lt;br /&gt;
Kategorii używa się tak, że w tekście wpisuje się &amp;lt;nowiki&amp;gt;[[Kategoria:nazwa]]&amp;lt;/nowiki&amp;gt;, patrz znowu [[Numen]]&lt;br /&gt;
--[[Wikipedysta:Eru|Eru]] 14:16, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Jak dodać grafikę, bo się cosik doczytać nie mogę...&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Literatura&#039;&#039;&#039;&#039;&#039; - czy nie jest przesadą umieszczanie takich tytułów jak &amp;quot;Chip&amp;quot; czy &amp;quot;PC World Computer&amp;quot;? Wszak to jest Atariki, a nie wiki...? Wypowiedzcie się na ten temat.--[[Wikipedysta:Sikor|Sikor]] 23:22, 27 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
Nie jest! A jesli nawet to prosze wykasuj Secret Service bo to duzo predzej nie pisalo o atari, a jesli juz cokolwiek bylo to nawet dot. nie STka a gier!, poza tym wg. zasady &amp;quot;ATARIKI nie WIKI&amp;quot; to proponuje wypier. takie haselka jak [[AMIGA]]. Ja proponuje Sikor wprzywrocic wykasoane hasla bo tam w odroznieniu od nie istotnych informacji dla Atariki umieszczane byly artykuly rzeczywiscie dot. Atari! --[[Wikipedysta:Vulgar|Vulgar]] 11:11, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::podaj bliższe przykłady, niejednostkowe. Pytanie moje było przytoczone dość dawno, nikt na nie nie odpowiedział, więc - zgodnie z zasadą - brak odpowiedzi jest aprobatą - wykasowałem. Zresztą - i tak były puste. Co do Secret Service - owszem, pismo dotyczy gier, ale przez bardzo długi okres czasu były tam także opisywane gry na ST i na małe Atari, więc jest jak najbardziej na miejscu. Co do Amigi - zgadzam się z Tobą, jak już - powinien być link zewnętrzny i już. --[[Wikipedysta:Sikor|Sikor]] 11:29, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::jestem za zachowaniem hasła [[Amiga]], jest to ostatni etap ewolucji [[XL]], więc dodanie paru zdań na ten temat jest na miejscu. Tak samo można by wywalić [[Atari MainFrame]] i wszystkie czasopisma traktujące o C=, gdybyśmy mieli być tacy dokładni.--[[Wikipedysta:Piotrv|Piotrv]] 12:23, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:co do atari mainframe - w pełni podzielam ten pogląd. Co do Amigi - hmm, czy do końca miała być następcą serii XE...? W sumie może zostać--[[Wikipedysta:Sikor|Sikor]] 13:01, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:Sikor, chodzi o serie [[XL]] - a nie [[XE]]. Zob. [[Amiga]]. --[[Wikipedysta:Piotrv|Piotrv]] 14:06, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
== propozycja rozszerzenia funkcjonalnosci... ==&lt;br /&gt;
&lt;br /&gt;
moze dodanie http://meta.wikimedia.org/wiki/FCKeditor nieco zwiekszylo zapal&lt;br /&gt;
edytujacych - co za tym idzie - ilosc dostepnych stron&lt;br /&gt;
--[[Wikipedysta:Jellonek|Jellonek]] 09:22, 13 lip 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Lista firm zrobiła się długa - proponuję wrzucić je na osobną stronę, tak jak grupy scenowe.&lt;br /&gt;
--[[Wikipedysta:0xF|0xF]] 10:37, 15 wrz 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
:No tak, raczej masz rację. Jestem za przeniesieniem. [[Wikipedysta:KMK|KMK]] 19:35, 15 wrz 2005 (CEST)&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Dyskusja:Strona_g%C5%82%C3%B3wna&amp;diff=10544</id>
		<title>Dyskusja:Strona główna</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Dyskusja:Strona_g%C5%82%C3%B3wna&amp;diff=10544"/>
		<updated>2006-03-09T11:24:22Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: /* Inne */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ja proponuję starać się utrzymać tą stronę z jak najmniejszą liczbą informacji.&lt;br /&gt;
Takie rzeczy jak CIO czy SIO powinny być pogrupowane np wewnątrz działu programowanie.&lt;br /&gt;
--[[Wikipedysta:Eru|Eru]] 19:36, 7 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Popieram. --[[Wikipedysta:Dely|Dely]] 19:51, 7 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Proponuję też wywalić systemy operacyjne z głównej strony, QMEG i XL OS przenieść do rozszerzeń w Sprzęt. --[[Wikipedysta:Dely|Dely]] 19:56, 7 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
No pytanie, czy OS to sprzęt (bo ROM) czy soft (bo program ;-)). Co do strony głównej, to może faktycznie pochopnie wpisałem tam te rzeczy. No i w ogóle pytanie, czy liilsta takich kategorii da się w ogóle utrzymac w na tyle małym rozmiarze, żeby nie szpecić strony głównej. Nie wiem, główkujcie panowie, ja się dostosuję ;-) [[Wikipedysta:KMK|KMK]] 20:02, 7 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
DOSy jeszcze dolozylem do Programow, rowniez wydluzajac pierwsza strone. :)) Czesc linkow w stacjach updatnalem (tam, gdzie odwolywaly sie do ogolnych dosow), a czesci jeszcze nie (bo nie zrobilem rozbicia na wersje w dosach, a sa tez informacje, z jaka wersja stacja byla sprzedawana). --[[Wikipedysta:Krap|Krap]] 00:54, 8 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Panowie&lt;br /&gt;
&lt;br /&gt;
Proponuje następujący podział na głównej stronie:&lt;br /&gt;
&lt;br /&gt;
* 8 bit&lt;br /&gt;
* 16 bit&lt;br /&gt;
* Konsole&lt;br /&gt;
* Inne (Historia?)&lt;br /&gt;
&lt;br /&gt;
Bo inaczej wogóle sie pogubimy. Naprawdę chcecie żebym w dziale Dema dopisywał dema STkowskie? Może to jednak podzielmy.--[[Wikipedysta:AdamK|AdamK]] 08:37, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Zgadzam się.&lt;br /&gt;
&lt;br /&gt;
Dodatkowo, byłbym za zdecydowanym uporządkowaniem nazewnictwa.&lt;br /&gt;
Hasła powinny być jak najmniej kontekstowe - hasło &#039;800&#039; nie powinno w ogóle mieć miejsca. Poprawne hasło powinno brzymieć &#039;Atari 800&#039;.&lt;br /&gt;
&lt;br /&gt;
Kolejna propozycja: dodanie kategorii stron:&lt;br /&gt;
* meta-kategorii:&lt;br /&gt;
** stub - lub po polsku &#039;Zalążek artykułu&#039; - trzeba tylko zobaczyć jak się robi to automagicznie&lt;br /&gt;
** request - prośby o wypełnienie&lt;br /&gt;
* kategorii-tematycznych:&lt;br /&gt;
** Demo XL&lt;br /&gt;
** Gra XL&lt;br /&gt;
** itp.&lt;br /&gt;
&lt;br /&gt;
Wtedy strona &amp;quot;Dema&amp;quot; będzie po prostu linkiem do &amp;quot;Kategoria:Dema XL&amp;quot; kategorią. &lt;br /&gt;
A w artykułach umieszczamy marker {{Dema XL}} i jest to robione za nas automagicznie.&lt;br /&gt;
&lt;br /&gt;
Ogólnie, przyjrzeć się trzeba innym wikipediom i wyciągnąć wnioski.&lt;br /&gt;
&lt;br /&gt;
--[[Wikipedysta:Eru|Eru]] 11:49, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
== Projekt ==&lt;br /&gt;
&lt;br /&gt;
Proponowany projekt głównej strony:&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Atariki]] - atari.area Wikipedia.&lt;br /&gt;
&lt;br /&gt;
Jest {{CURRENTDAY}}.{{CURRENTMONTH}}.{{CURRENTYEAR}}, godzina {{CURRENTTIME}}.&lt;br /&gt;
Aktualnie w Atariki jest {{NUMBEROFARTICLES}} stron.&lt;br /&gt;
&lt;br /&gt;
== 8 Bit ==&lt;br /&gt;
* [[8_Sprzęt|Sprzęt]]&lt;br /&gt;
* [[8_Oprogramowanie|Oprogramowanie]]&lt;br /&gt;
* [[8_Porady|Porady]]&lt;br /&gt;
* [[8_Inne|Ludzie, wydarzenia i zjawiska]]&lt;br /&gt;
&lt;br /&gt;
== 16/32 Bit ==&lt;br /&gt;
* [[16_Sprzęt|Sprzęt]]&lt;br /&gt;
* [[16_Oprogramowanie|Oprogramowanie]]&lt;br /&gt;
* [[16_Porady|Porady]]&lt;br /&gt;
* [[16_Inne|Ludzie, wydarzenia i zjawiska]]&lt;br /&gt;
&lt;br /&gt;
== Konsole ==&lt;br /&gt;
* [[Kon_Sprzęt|Sprzęt]]&lt;br /&gt;
* [[Kon_Oprogramowanie|Oprogramowanie]]&lt;br /&gt;
* [[Kon_Porady|Porady]]&lt;br /&gt;
* [[Kon_Inne|Ludzie, wydarzenia i zjawiska]]&lt;br /&gt;
&lt;br /&gt;
== Inne ==&lt;br /&gt;
* [[Historia]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
--[[Wikipedysta:AdamK|AdamK]] 12:55, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
A co zrobimy z programowaniem?--[[Wikipedysta:Dely|Dely]] 12:57, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Można albo dorzucic na gównej stronie, albo w Oprogramowaniu--[[Wikipedysta:AdamK|AdamK]] 12:59, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Bardzo ładna podział strony głównej. Myślę, że programowanie powinno być wna stronie głównej.&lt;br /&gt;
--[[Wikipedysta:Tatqoo|Tatqoo]] 13:08, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Uaktualniłem projekt. Co wy na to?--[[Wikipedysta:AdamK|AdamK]] 13:14, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Może Programowanie jest częścią czegoś szerszego? &lt;br /&gt;
Np &amp;quot;Porady&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Porady&lt;br /&gt;
** Programowanie&lt;br /&gt;
** Tworzenie muzyki&lt;br /&gt;
** Tworzenie grafiki&lt;br /&gt;
** Edycja tekstów&lt;br /&gt;
--[[Wikipedysta:Eru|Eru]] 13:22, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Eru dobrze mowi, zamiast programowanie dac porady. --[[Wikipedysta:Dely|Dely]] 13:27, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Proponuję zastanowienie się nad używaniem Kategorii i Szablonów.&lt;br /&gt;
Przykładowo zajrzyjcie do [[Taquart]] i [[Numen]] - kategorie [[:Kategoria:Grupy XL/XE]] [[:Kategoria:Dema XL/XE]]&lt;br /&gt;
--[[Wikipedysta:Eru|Eru]] 13:41, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Poprawiłem projekt. Jak sie dodaje kategorie?--[[Wikipedysta:AdamK|AdamK]] 13:55, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
A gdzie są te szablony?--[[Wikipedysta:Dely|Dely]] 13:55, 9 gru 2004 (CET)&lt;br /&gt;
----&lt;br /&gt;
Kategorie i szablony się dodaje tak jak strony - wpisując tylko nazwę Kategoria:nazwa lub Szablon:nazwa.&lt;br /&gt;
&lt;br /&gt;
Szablonów używa się tak, że tam gdzie sie chce dodać dany szablon, wpisuje się {{nazwa_szablonu}} po prostu, patrz [[Numen]] i [[Szablon:Taquart-Produkcje]].&lt;br /&gt;
&lt;br /&gt;
Kategorii używa się tak, że w tekście wpisuje się &amp;lt;nowiki&amp;gt;[[Kategoria:nazwa]]&amp;lt;/nowiki&amp;gt;, patrz znowu [[Numen]]&lt;br /&gt;
--[[Wikipedysta:Eru|Eru]] 14:16, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Jak dodać grafikę, bo się cosik doczytać nie mogę...&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Literatura&#039;&#039;&#039;&#039;&#039; - czy nie jest przesadą umieszczanie takich tytułów jak &amp;quot;Chip&amp;quot; czy &amp;quot;PC World Computer&amp;quot;? Wszak to jest Atariki, a nie wiki...? Wypowiedzcie się na ten temat.--[[Wikipedysta:Sikor|Sikor]] 23:22, 27 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
Nie jest! A jesli nawet to prosze wykasuj Secret Service bo to duzo predzej nie pisalo o atari, a jesli juz cokolwiek bylo to nawet dot. nie STka a gier!, poza tym wg. zasady &amp;quot;ATARIKI nie WIKI&amp;quot; to proponuje wypier. takie haselka jak [[AMIGA]]. Ja proponuje Sikor wprzywrocic wykasoane hasla bo tam w odroznieniu od nie istotnych informacji dla Atariki umieszczane byly artykuly rzeczywiscie dot. Atari! --[[Wikipedysta:Vulgar|Vulgar]] 11:11, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::podaj bliższe przykłady, niejednostkowe. Pytanie moje było przytoczone dość dawno, nikt na nie nie odpowiedział, więc - zgodnie z zasadą - brak odpowiedzi jest aprobatą - wykasowałem. Zresztą - i tak były puste. Co do Secret Service - owszem, pismo dotyczy gier, ale przez bardzo długi okres czasu były tam także opisywane gry na ST i na małe Atari, więc jest jak najbardziej na miejscu. Co do Amigi - zgadzam się z Tobą, jak już - powinien być link zewnętrzny i już. --[[Wikipedysta:Sikor|Sikor]] 11:29, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::jestem za zachowaniem hasła [[Amiga]], jest to ostatni etap ewolucji [[XL]], więc dodanie paru zdań na ten temat jest na miejscu. Tak samo można by wywalić [[Atari MainFrame]] i wszystkie czasopisma traktujące o C=, gdybyśmy mieli być tacy dokładni.--[[Wikipedysta:Piotrv|Piotrv]] 12:23, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
== propozycja rozszerzenia funkcjonalnosci... ==&lt;br /&gt;
&lt;br /&gt;
moze dodanie http://meta.wikimedia.org/wiki/FCKeditor nieco zwiekszylo zapal&lt;br /&gt;
edytujacych - co za tym idzie - ilosc dostepnych stron&lt;br /&gt;
--[[Wikipedysta:Jellonek|Jellonek]] 09:22, 13 lip 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Lista firm zrobiła się długa - proponuję wrzucić je na osobną stronę, tak jak grupy scenowe.&lt;br /&gt;
--[[Wikipedysta:0xF|0xF]] 10:37, 15 wrz 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
:No tak, raczej masz rację. Jestem za przeniesieniem. [[Wikipedysta:KMK|KMK]] 19:35, 15 wrz 2005 (CEST)&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Dyskusja:Strona_g%C5%82%C3%B3wna&amp;diff=10543</id>
		<title>Dyskusja:Strona główna</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Dyskusja:Strona_g%C5%82%C3%B3wna&amp;diff=10543"/>
		<updated>2006-03-09T11:23:47Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: /* Inne - czystość (Atariki) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ja proponuję starać się utrzymać tą stronę z jak najmniejszą liczbą informacji.&lt;br /&gt;
Takie rzeczy jak CIO czy SIO powinny być pogrupowane np wewnątrz działu programowanie.&lt;br /&gt;
--[[Wikipedysta:Eru|Eru]] 19:36, 7 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Popieram. --[[Wikipedysta:Dely|Dely]] 19:51, 7 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Proponuję też wywalić systemy operacyjne z głównej strony, QMEG i XL OS przenieść do rozszerzeń w Sprzęt. --[[Wikipedysta:Dely|Dely]] 19:56, 7 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
No pytanie, czy OS to sprzęt (bo ROM) czy soft (bo program ;-)). Co do strony głównej, to może faktycznie pochopnie wpisałem tam te rzeczy. No i w ogóle pytanie, czy liilsta takich kategorii da się w ogóle utrzymac w na tyle małym rozmiarze, żeby nie szpecić strony głównej. Nie wiem, główkujcie panowie, ja się dostosuję ;-) [[Wikipedysta:KMK|KMK]] 20:02, 7 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
DOSy jeszcze dolozylem do Programow, rowniez wydluzajac pierwsza strone. :)) Czesc linkow w stacjach updatnalem (tam, gdzie odwolywaly sie do ogolnych dosow), a czesci jeszcze nie (bo nie zrobilem rozbicia na wersje w dosach, a sa tez informacje, z jaka wersja stacja byla sprzedawana). --[[Wikipedysta:Krap|Krap]] 00:54, 8 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Panowie&lt;br /&gt;
&lt;br /&gt;
Proponuje następujący podział na głównej stronie:&lt;br /&gt;
&lt;br /&gt;
* 8 bit&lt;br /&gt;
* 16 bit&lt;br /&gt;
* Konsole&lt;br /&gt;
* Inne (Historia?)&lt;br /&gt;
&lt;br /&gt;
Bo inaczej wogóle sie pogubimy. Naprawdę chcecie żebym w dziale Dema dopisywał dema STkowskie? Może to jednak podzielmy.--[[Wikipedysta:AdamK|AdamK]] 08:37, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Zgadzam się.&lt;br /&gt;
&lt;br /&gt;
Dodatkowo, byłbym za zdecydowanym uporządkowaniem nazewnictwa.&lt;br /&gt;
Hasła powinny być jak najmniej kontekstowe - hasło &#039;800&#039; nie powinno w ogóle mieć miejsca. Poprawne hasło powinno brzymieć &#039;Atari 800&#039;.&lt;br /&gt;
&lt;br /&gt;
Kolejna propozycja: dodanie kategorii stron:&lt;br /&gt;
* meta-kategorii:&lt;br /&gt;
** stub - lub po polsku &#039;Zalążek artykułu&#039; - trzeba tylko zobaczyć jak się robi to automagicznie&lt;br /&gt;
** request - prośby o wypełnienie&lt;br /&gt;
* kategorii-tematycznych:&lt;br /&gt;
** Demo XL&lt;br /&gt;
** Gra XL&lt;br /&gt;
** itp.&lt;br /&gt;
&lt;br /&gt;
Wtedy strona &amp;quot;Dema&amp;quot; będzie po prostu linkiem do &amp;quot;Kategoria:Dema XL&amp;quot; kategorią. &lt;br /&gt;
A w artykułach umieszczamy marker {{Dema XL}} i jest to robione za nas automagicznie.&lt;br /&gt;
&lt;br /&gt;
Ogólnie, przyjrzeć się trzeba innym wikipediom i wyciągnąć wnioski.&lt;br /&gt;
&lt;br /&gt;
--[[Wikipedysta:Eru|Eru]] 11:49, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
== Projekt ==&lt;br /&gt;
&lt;br /&gt;
Proponowany projekt głównej strony:&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Atariki]] - atari.area Wikipedia.&lt;br /&gt;
&lt;br /&gt;
Jest {{CURRENTDAY}}.{{CURRENTMONTH}}.{{CURRENTYEAR}}, godzina {{CURRENTTIME}}.&lt;br /&gt;
Aktualnie w Atariki jest {{NUMBEROFARTICLES}} stron.&lt;br /&gt;
&lt;br /&gt;
== 8 Bit ==&lt;br /&gt;
* [[8_Sprzęt|Sprzęt]]&lt;br /&gt;
* [[8_Oprogramowanie|Oprogramowanie]]&lt;br /&gt;
* [[8_Porady|Porady]]&lt;br /&gt;
* [[8_Inne|Ludzie, wydarzenia i zjawiska]]&lt;br /&gt;
&lt;br /&gt;
== 16/32 Bit ==&lt;br /&gt;
* [[16_Sprzęt|Sprzęt]]&lt;br /&gt;
* [[16_Oprogramowanie|Oprogramowanie]]&lt;br /&gt;
* [[16_Porady|Porady]]&lt;br /&gt;
* [[16_Inne|Ludzie, wydarzenia i zjawiska]]&lt;br /&gt;
&lt;br /&gt;
== Konsole ==&lt;br /&gt;
* [[Kon_Sprzęt|Sprzęt]]&lt;br /&gt;
* [[Kon_Oprogramowanie|Oprogramowanie]]&lt;br /&gt;
* [[Kon_Porady|Porady]]&lt;br /&gt;
* [[Kon_Inne|Ludzie, wydarzenia i zjawiska]]&lt;br /&gt;
&lt;br /&gt;
== Inne ==&lt;br /&gt;
* [[Historia]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
--[[Wikipedysta:AdamK|AdamK]] 12:55, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
A co zrobimy z programowaniem?--[[Wikipedysta:Dely|Dely]] 12:57, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Można albo dorzucic na gównej stronie, albo w Oprogramowaniu--[[Wikipedysta:AdamK|AdamK]] 12:59, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Bardzo ładna podział strony głównej. Myślę, że programowanie powinno być wna stronie głównej.&lt;br /&gt;
--[[Wikipedysta:Tatqoo|Tatqoo]] 13:08, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Uaktualniłem projekt. Co wy na to?--[[Wikipedysta:AdamK|AdamK]] 13:14, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Może Programowanie jest częścią czegoś szerszego? &lt;br /&gt;
Np &amp;quot;Porady&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Porady&lt;br /&gt;
** Programowanie&lt;br /&gt;
** Tworzenie muzyki&lt;br /&gt;
** Tworzenie grafiki&lt;br /&gt;
** Edycja tekstów&lt;br /&gt;
--[[Wikipedysta:Eru|Eru]] 13:22, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Eru dobrze mowi, zamiast programowanie dac porady. --[[Wikipedysta:Dely|Dely]] 13:27, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Proponuję zastanowienie się nad używaniem Kategorii i Szablonów.&lt;br /&gt;
Przykładowo zajrzyjcie do [[Taquart]] i [[Numen]] - kategorie [[:Kategoria:Grupy XL/XE]] [[:Kategoria:Dema XL/XE]]&lt;br /&gt;
--[[Wikipedysta:Eru|Eru]] 13:41, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Poprawiłem projekt. Jak sie dodaje kategorie?--[[Wikipedysta:AdamK|AdamK]] 13:55, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
A gdzie są te szablony?--[[Wikipedysta:Dely|Dely]] 13:55, 9 gru 2004 (CET)&lt;br /&gt;
----&lt;br /&gt;
Kategorie i szablony się dodaje tak jak strony - wpisując tylko nazwę Kategoria:nazwa lub Szablon:nazwa.&lt;br /&gt;
&lt;br /&gt;
Szablonów używa się tak, że tam gdzie sie chce dodać dany szablon, wpisuje się {{nazwa_szablonu}} po prostu, patrz [[Numen]] i [[Szablon:Taquart-Produkcje]].&lt;br /&gt;
&lt;br /&gt;
Kategorii używa się tak, że w tekście wpisuje się &amp;lt;nowiki&amp;gt;[[Kategoria:nazwa]]&amp;lt;/nowiki&amp;gt;, patrz znowu [[Numen]]&lt;br /&gt;
--[[Wikipedysta:Eru|Eru]] 14:16, 9 gru 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
Jak dodać grafikę, bo się cosik doczytać nie mogę...&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Literatura&#039;&#039;&#039;&#039;&#039; - czy nie jest przesadą umieszczanie takich tytułów jak &amp;quot;Chip&amp;quot; czy &amp;quot;PC World Computer&amp;quot;? Wszak to jest Atariki, a nie wiki...? Wypowiedzcie się na ten temat.--[[Wikipedysta:Sikor|Sikor]] 23:22, 27 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
Nie jest! A jesli nawet to prosze wykasuj Secret Service bo to duzo predzej nie pisalo o atari, a jesli juz cokolwiek bylo to nawet dot. nie STka a gier!, poza tym wg. zasady &amp;quot;ATARIKI nie WIKI&amp;quot; to proponuje wypier. takie haselka jak [[AMIGA]]. Ja proponuje Sikor wprzywrocic wykasoane hasla bo tam w odroznieniu od nie istotnych informacji dla Atariki umieszczane byly artykuly rzeczywiscie dot. Atari! --[[Wikipedysta:Vulgar|Vulgar]] 11:11, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::podaj bliższe przykłady, niejednostkowe. Pytanie moje było przytoczone dość dawno, nikt na nie nie odpowiedział, więc - zgodnie z zasadą - brak odpowiedzi jest aprobatą - wykasowałem. Zresztą - i tak były puste. Co do Secret Service - owszem, pismo dotyczy gier, ale przez bardzo długi okres czasu były tam także opisywane gry na ST i na małe Atari, więc jest jak najbardziej na miejscu. Co do Amigi - zgadzam się z Tobą, jak już - powinien być link zewnętrzny i już. --[[Wikipedysta:Sikor|Sikor]] 11:29, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::jestem za zachowaniem hasła [[Amiga]], jest to ostatni etap ewolucji [[XL]], więc dodanie paru zdań na ten temat jest na miejscu. Tak samo można by wywalić [[Atari MainFrame]] i wszystkie czasopisma traktujące o C=, gdybyśmy mieli być tacy dokładni.&lt;br /&gt;
--[[Wikipedysta:Piotrv|Piotrv]] 12:23, 9 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
== propozycja rozszerzenia funkcjonalnosci... ==&lt;br /&gt;
&lt;br /&gt;
moze dodanie http://meta.wikimedia.org/wiki/FCKeditor nieco zwiekszylo zapal&lt;br /&gt;
edytujacych - co za tym idzie - ilosc dostepnych stron&lt;br /&gt;
--[[Wikipedysta:Jellonek|Jellonek]] 09:22, 13 lip 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Lista firm zrobiła się długa - proponuję wrzucić je na osobną stronę, tak jak grupy scenowe.&lt;br /&gt;
--[[Wikipedysta:0xF|0xF]] 10:37, 15 wrz 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
:No tak, raczej masz rację. Jestem za przeniesieniem. [[Wikipedysta:KMK|KMK]] 19:35, 15 wrz 2005 (CEST)&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Dyskusja:FX-1&amp;diff=10475</id>
		<title>Dyskusja:FX-1</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Dyskusja:FX-1&amp;diff=10475"/>
		<updated>2006-03-08T08:10:49Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;czy FX-1 i Sparrow to nie to samo znane jako Fx-1 Sparrow ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nie, raczej nie, fx1 to juz  praweie falcon, dzialajaca gotiwa plyta itd, a sparrow to karta&lt;br /&gt;
ale jednak nie jest to takie jednoznaczne... hmmm, tak czy siak jakos sie by to przydalo rozdzielic bo najpierw to byla karta ktora sie pakowalo w STE (stad tez pierwszy tos to byl 2.07 czyli zmodyfikowany TOS STE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
co bylo nie tak z linkiem dane (pl) z www.komputer.cupr.... ???&lt;br /&gt;
teraz porownalem te dane z danymi z old_computers.com sa takie same!&lt;br /&gt;
zgodze sie ze istnieje duze prawdopodobienstwo ze pozyczyli te dane nie koniecznie za zgoda old-comp. ale bzdury to chyba nie sa..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ale oni tam bzdury wypisuja i nie sa wcale chetni do ich poprawiania takze sa zlym zrodlem, proponuje ich nie cytowac...&lt;br /&gt;
&lt;br /&gt;
Podpisujcie się jeden z drugim do jasnej krwi! Du_gy: masz 24 godziny na doprowadznie artykułu [[FX-1]] oraz [[Medusa]] do akceptowalnego stanu: w artykule ma w num być tekst, a nie same linki, artykuł ma być umieszczony w odpowiedniej kategorii. Hasła nie spełniające tego będą kasowane. [[Wikipedysta:KMK|KMK]] 00:04, 8 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
ok..skoro www.komputer.cupr.. sa nie solidni to nalezy przestac ich cytowac&lt;br /&gt;
co do [[FX-1]] oraz [[Medusa]] to popracuje nad tym, ale uwazam ze lepiej jak sa same linki niz jak nie ma nic! :-)--[[Wikipedysta:Du gy|du_gy]] 08:21, 8 mar 2006 (CET)&lt;br /&gt;
: Ja się z tym nie zgadzam, można sobie stworzyć brudnopis i tam przygotowywać artykuł miast wpisywania dwóch linków na krzyż i adzia dalej. Takie wpisy będą kasowane i koniec.--[[Wikipedysta:Daniel Koźmiński|dely]] 08:34, 8 mar 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:du_gy - nie trzeba mieć wieloletniego doświadczenia w wiki, żeby móc wyczuć subtelną, ale zauważalną różnicę między kolekcją linków a encyklopedią. Nigdy nie wkurzały cię strony, na których nic nie ma oprócz linków do następnych stron? --[[Wikipedysta:Piotrv|Piotrv]] 09:10, 8 mar 2006 (CET)&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Obs%C5%82uga_Atariki&amp;diff=10514</id>
		<title>Obsługa Atariki</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Obs%C5%82uga_Atariki&amp;diff=10514"/>
		<updated>2006-03-06T12:43:08Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: minimum? raczej maksimum :)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Linki do pomocy ==&lt;br /&gt;
Na początek warto zajrzeć:&lt;br /&gt;
&lt;br /&gt;
* http://pl.wikipedia.org/wiki/Wikipedia:Formatowanie_tekstu_na_Wikipedii&lt;br /&gt;
* http://pl.wikipedia.org/wiki/Wikipedia:Tworzenie_linków_na_Wikipedii&lt;br /&gt;
* http://pl.wikipedia.org/wiki/Wikipedia:Poradnik_autora_Wikipedii&lt;br /&gt;
&lt;br /&gt;
i po angielsku:&lt;br /&gt;
&lt;br /&gt;
* http://meta.wikimedia.org/wiki/Help:Contents&lt;br /&gt;
* http://en.wikipedia.org/wiki/Wikipedia:How_to_use_tables&lt;br /&gt;
* http://meta.wikimedia.org/wiki/Help:Navigational_image&lt;br /&gt;
* http://meta.wikimedia.org/wiki/Help:Template&lt;br /&gt;
&lt;br /&gt;
Jak ktoś ma inne przydatne linki, niech wrzuca tutaj.&lt;br /&gt;
&lt;br /&gt;
== Edycja==&lt;br /&gt;
Kilka ważnych zasad:&lt;br /&gt;
* &#039;&#039;&#039;staramy się linkować do powiązanych haseł przez użycie np. &#039;&#039;&#039; &amp;lt;nowiki&amp;gt;[[PowiązaneHasło]]&amp;lt;/nowiki&amp;gt;. Na danej stronie do powiązanego hasła powinniśmy linkować tylko raz.&lt;br /&gt;
* przed zapisaniem edycji powinno się &#039;&#039;&#039;zawsze&#039;&#039;&#039; użyć funkcji &#039;&#039;&#039;Podgląd&#039;&#039;&#039;. No ale nie zawsze się pamięta.&lt;br /&gt;
* W przypadku aliasów tego samego pojęcia (np. [[0xF]]), powinno się w stronie aliasu wpisać jedynie jedną linijkę postaci:&lt;br /&gt;
:: &amp;lt;nowiki&amp;gt;#REDIRECT [[StronaGłównaPojęcia]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
: Na stronie z głównym pojęciem wszystkie aliasy powinny być w miarę możliwości wymienione.&lt;br /&gt;
* Strony puste są &#039;&#039;&#039;absolutnie zabronione&#039;&#039;&#039; ! Lepszy brak strony niż pusta strona, bo przynajmniej widać, że strony brak i trzeba ją dodać.&lt;br /&gt;
* Niemile widziane są strony, na których jest tylko obrazek lub link zewnętrzny. Hasło powinno zawierać minimum jedno, poprawnie złożone zdanie wprowadzające w dany temat (w języku polskim).&lt;br /&gt;
* Każde nowe hasło powinno od razu dostać odpowiednią kategorię. Sposób kategoryzacji można podejrzeć w innych hasłach (wszystkie są skategoryzowane). Lista kategorii jest [http://atariki.krap.pl/index.php/Specjalna:Categories tutaj]. &lt;br /&gt;
* Wpisy typu [[Mońki]] powinny zawierać tylko informacje związane ze sceną Atari. Dodatkowe informacje powinny być podawane jako link do innych Wiki (np wikipedia.pl) lub po prostu stron WWW.&lt;br /&gt;
* W głównych kategoriach wszelkie wpisy &#039;&#039;&#039;należy&#039;&#039;&#039; rozdzielać przecinkami.&lt;br /&gt;
&lt;br /&gt;
== Obrazki i inne pliki ==&lt;br /&gt;
&lt;br /&gt;
Obrazki, schematy, oraz inne pliki, które chcielibyśmy podlinkować do danej strony należy wysłać emailem (bądź wystawić gdziekolwiek i poinformować emailem, lub inną lepszą metodą) [[Wikipedysta:Dely|Delyego]] bądź [[Wikipedysta:Krap|Krapa]], którzy po upewnieniu się, że dany element jest bezpieczny umieszczą go w odpowiednim miejscu i podadzą URL jakiego należy użyć w linku.&lt;br /&gt;
&lt;br /&gt;
== Szablony ==&lt;br /&gt;
&lt;br /&gt;
MediaWiki umożliwia użycie szablonów, czyli predefiniowanych fragmentów stron wstawianych w wielu miejscach. &lt;br /&gt;
Przykład można zobaczyć np. na stronie [[Numen]], gdzie został użyty szablon [[Szablon:Taquart-Produkcje]].&lt;br /&gt;
Nowy szablon tworzy się tak jak nową stronę, czyli np:&lt;br /&gt;
&lt;br /&gt;
::  http://atariki.krap.pl/index.php/Szablon:NazwaSzablon&lt;br /&gt;
&lt;br /&gt;
Szablon wstawia się do strony po prostu wpisując &amp;lt;nowiki&amp;gt;{{NazwaSzablonu}}&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Więcej informacji z przykładami na stronie [[Pomocne Szablony]]. Zanim zaczniesz edytować jakiekolwiek artykuły należy zaponać się z istniejącymi szablonami i w miarę potrzeb je stosować.&lt;br /&gt;
&lt;br /&gt;
== Stuby ==&lt;br /&gt;
&lt;br /&gt;
Specjalnym szablonem jest &#039;&#039;&#039;Stub&#039;&#039;&#039;. Jest to strona, która nie jest pełną stroną, ale &#039;zaczątkiem&#039;.&lt;br /&gt;
Aby oznaczyć stronę jako stub, należy wpisać &#039;&#039;&#039;na końcu strony&#039;&#039;&#039; frazę &amp;lt;nowiki&amp;gt;{{stub}}&amp;lt;/nowiki&amp;gt;. &lt;br /&gt;
Wtedy pod definicją pojawi się następujący komunikat:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ten artykuł to tylko [http://pl.wikipedia.org/wiki/Wikipedia:Zalążek_artykułu zalążek]. Możesz pomóc rozwojowi [http://atariki.krap.pl Atariki] poprzez rozszerzenie go o więcej informacji.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Uwaga!&#039;&#039;&#039; Dodawanie stubów powinno być minimalizowane, i każdy stub powinien zawierać jakąś sensowną informację, prośbę o rozszerzenie itp. Widząc, że strona istnieje, często edytorzy nawet nie zajrzą czy ma sens.&lt;br /&gt;
&lt;br /&gt;
== Kategorie ==&lt;br /&gt;
&lt;br /&gt;
MediaWiki wspiera klasyfikację stron do różnych kategorii.&lt;br /&gt;
Aby dodać stronę do kategorii wystarczy wpisać w tekście strony &amp;lt;nowiki&amp;gt;[[Kategoria:NazwaKategorii]]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
Kategorie można edytować jak zwykłe strony, pod tekstem, który podamy wyświetlą się wszystkie strony zakwalifikowane do tej kategorii.&lt;br /&gt;
Przykład można zobaczyć np. na stronie [[Numen]], która została sklasyfikowana w kategorii [[:Kategoria:Dema XL/XE]].&lt;br /&gt;
Link do kategorii robi się wpisując &amp;lt;nowiki&amp;gt;[[:Kategoria:NazwaKategorii]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Powinniśmy się zastanowić nad dodaniem meta-kategorii, np:&lt;br /&gt;
* &#039;&#039;&#039;Requests&#039;&#039;&#039; - strony, które chcemy, żeby ktoś wypełnił (jest takie coś na stronach specjalnych, zlicza linki prowadzące donikąd --[[Wikipedysta:AdamK|AdamK]] 08:24, 10 gru 2004 (CET))&lt;br /&gt;
* itp.&lt;br /&gt;
I nad uporządkowaniem kontentu w kategorie ogólnie.&lt;br /&gt;
&lt;br /&gt;
== Luźne uwagi ==&lt;br /&gt;
&lt;br /&gt;
* W przypadku dyskusji, koniecznie proszę dodawać podpis przy użyciu &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;--~~~~&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039; (--[[Wikipedysta:Eru|Eru]] 21:14, 7 gru 2004 (CET)). &#039;&#039;A może Wiki potrafi samo automagicznie dodawać?&#039;&#039;&lt;br /&gt;
* W przypadku wpisywania króciutkich stron, proszę na końcu umieszczać linijkę &amp;lt;nowiki&amp;gt;{{stub}}&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Zobacz także==&lt;br /&gt;
* [[Zasady dodawania]]&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Menu Główne]]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=DOS_4.0&amp;diff=12059</id>
		<title>DOS 4.0</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=DOS_4.0&amp;diff=12059"/>
		<updated>2006-03-05T16:04:17Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: literowka&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{grafr|dos4-menu.png}}&lt;br /&gt;
&#039;&#039;&#039;Atari DOS 4.0&#039;&#039;&#039;, zwany inaczej &#039;&#039;&#039;QDOS&#039;&#039;&#039;, to prototypowy [[DOS]] przeznaczony dla komputera [[1450XLD]]. Autorem jest Michael Barrall. Po zarzuceniu prac nad [[1450XLD]] Atari zwróciło autorowi prawa do programu, który został wkrótce opublikowany jako public domain przez czasopismo [[ANTIC (czasopismo)|ANTIC]]. Stąd DOS 4.0 ma też zwyczajową nazwę &#039;&#039;&#039;ANTIC DOS&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Technikalia ==&lt;br /&gt;
DOS 4.0 ma własny, niezgodny z AtariDOS II [[Formaty systemów plików|format dyskietek]]. Obsługuje gęstości [[SD]], [[ED]], [[DD]] i [[DSDD]], do pojemności 360k włącznie - patrz [[format AtariDOS 4]]. DOS zajmuje stosunkowo niewiele pamięci - część rezydentna ma maximum 5,25k (MEMLO max. $1C00).&lt;br /&gt;
&lt;br /&gt;
== Obsługa ==&lt;br /&gt;
Ciekawostką jest, że DOS 4.0 ma standardowo dwie powłoki: jedna, nazwana szumnie &amp;quot;command processor&amp;quot;, pokazuje się zaraz po starcie DOS-u. Jest to rodzaj uproszczonego menu; druga zaś to menu podobne to tego, jakie ma [[DOS 2.5]].&lt;br /&gt;
&lt;br /&gt;
Na dyskietce dostępna jest też instrukcja do DOS-u, tzw. on-line help. Możliwe było dość wygodne korzystanie z tego, [[1450XLD]] bowiem był standardowo wyposażony w dwie stacje dysków - przeto jedną mogła stale zajmować dyskietka z DOS-em.&lt;br /&gt;
&lt;br /&gt;
[[Grafika:dos4-cp.png]]&lt;br /&gt;
[[Grafika:dos4-help.png]]&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
* [http://drac030.krap.pl/DOS40_Atari.rar Atari DOS 4.0]&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Oprogramowanie Atari 8-bit]]&lt;br /&gt;
[[Kategoria:Programy użytkowe]]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Dyskusja_szablonu:OS&amp;diff=15009</id>
		<title>Dyskusja szablonu:OS</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Dyskusja_szablonu:OS&amp;diff=15009"/>
		<updated>2006-03-04T22:24:32Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Proponuje rozdzielić na dwa szablony &amp;quot;OS 8-bit&amp;quot; i &amp;quot;OS 16/32-bit&amp;quot;, bo FreeMiNT ma się tak do XL OS tak jak pięść do nosa... --[[Wikipedysta:Piotrv|Piotrv]] 23:24, 4 mar 2006 (CET)&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Protar&amp;diff=13951</id>
		<title>Protar</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Protar&amp;diff=13951"/>
		<updated>2006-03-04T16:57:37Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: +firmy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Protar GmbH&#039;&#039;&#039; - jedna z firm produkujących znakomite monitory wysokiej rozdzielczości do Atari [[TT030|TT]], będących odpowiednikiem [[TTM194]]. Ciekawostką jest fakt, że do swoich monitorów monochromatycznych firma dołączała programowy emulator [[BLiTTER]]&#039;a dla Atari [[TT030]] (widziany w SysInfo!!!), który w jakiś 90% emulował brakujący układ.&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Menu Główne]]&lt;br /&gt;
[[Kategoria:Firmy]]&lt;br /&gt;
[[Kategoria:Atari ST]]&lt;br /&gt;
{{stub}}&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Firebird&amp;diff=15092</id>
		<title>Firebird</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Firebird&amp;diff=15092"/>
		<updated>2006-03-04T16:54:26Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: lepszy rydz niz nic (+kategoria)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pełna nazwa: &#039;&#039;Firebird Software Ltd&#039;&#039;. Marka pod którą były sprzedawane gry firmy British Telecom, a dokładniej odpowiedzialny za nie był dział tej firmy - Telecomsoft. Wcześniej Firebird nazywany był &amp;quot;Firefly Software&amp;quot;. Nazwa &amp;quot;Firebird&amp;quot; określała też zakres cenowy gier - można było spotkać gry określane jako Firebird Silver oraz Firebird Gold. Gry wydawane pod tą nazwą były przeznaczone dla Atari 8-bit, ST, C64 i ZX Spectrum. Marka &#039;&#039;pradopodobnie&#039;&#039; ostatecznie zniknęła z rynku po przejęciu jej właściciela przez Microprose w 1989 roku.&lt;br /&gt;
&lt;br /&gt;
==Zobacz także==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Telecomsoft Telecomsoft]&lt;br /&gt;
* [http://www.mjwilson.demon.co.uk/crash/16/firebird.htm CRASH 16 - Firebird - wywiad]&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Firmy]]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Firebird&amp;diff=10315</id>
		<title>Firebird</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Firebird&amp;diff=10315"/>
		<updated>2006-03-04T13:35:32Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pełna nazwa: &#039;&#039;Firebird Software Ltd&#039;&#039;. Marka pod którą były sprzedawane gry firmy British Telecom, a dokładniej odpowiedzialny za nie był dział tej firmy - Telecomsoft. Wcześniej Firebird nazywany był &amp;quot;Firefly Software&amp;quot;. Nazwa &amp;quot;Firebird&amp;quot; określała też zakres cenowy gier - można było spotkać gry określane jako Firebird Silver oraz Firebird Gold. Gry wydawane pod tą nazwą były przeznaczone dla Atari 8-bit, ST, C64 i ZX Spectrum. Marka &#039;&#039;pradopodobnie&#039;&#039; ostatecznie zniknęła z rynku po przejęciu jej właściciela przez Microprose w 1989 roku.&lt;br /&gt;
&lt;br /&gt;
==Zobacz także==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Telecomsoft Telecomsoft]&lt;br /&gt;
* [http://www.mjwilson.demon.co.uk/crash/16/firebird.htm CRASH 16 - Firebird - wywiad]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Firebird&amp;diff=10314</id>
		<title>Firebird</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Firebird&amp;diff=10314"/>
		<updated>2006-03-04T13:31:37Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pełna nazwa: &#039;&#039;Firebird Software Ltd&#039;&#039;. Marka pod którą były sprzedawane gry firmy British Telecom, a dokładniej odpowiedzialny za nie był dział tej firmy - Telecomsoft. Wcześniej Firebird nazywany był &amp;quot;Firefly Software&amp;quot;. Nazwa &amp;quot;Firebird&amp;quot; określała też zakres cenowy gier - można było spotkać gry określane jako Firebird Silver oraz Firebird Gold. Gry wydawane pod tą nazwą były przeznaczone dla Atari 8-bit, ST, C64 i ZX Spectrum. Marka &#039;&#039;pradopodobnie&#039;&#039; ostatecznie zniknęła z rynku po przejęciu jej właściciela przez Microprose w 1989 roku.&lt;br /&gt;
&lt;br /&gt;
==Zobacz także==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Telecomsoft Telecomsoft]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Firmy_powi%C4%85zane_z_Atari&amp;diff=14189</id>
		<title>Firmy powiązane z Atari</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Firmy_powi%C4%85zane_z_Atari&amp;diff=14189"/>
		<updated>2006-03-04T13:18:15Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: +firebird&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[ActiVision]]&lt;br /&gt;
* [[Atarimax]]&lt;br /&gt;
* [[AtarSystem]]&lt;br /&gt;
* [[California Access]]&lt;br /&gt;
* [[Centek]]&lt;br /&gt;
* [[C-Lab]]&lt;br /&gt;
* [[Digital Research]]&lt;br /&gt;
* [[DMC]]&lt;br /&gt;
* [[Firebird]]&lt;br /&gt;
* [[FTe]]&lt;br /&gt;
* [[GeSoft]]&lt;br /&gt;
* [[ICD|ICD, Inc.]]&lt;br /&gt;
* [[Infogrames]]&lt;br /&gt;
* [[JTT]]&lt;br /&gt;
* [[Karin]]&lt;br /&gt;
* [[L.K. Avalon]]&lt;br /&gt;
* [[LDW|Logical Design Works]] (LDW)&lt;br /&gt;
* [[Mirage]]&lt;br /&gt;
* [[OSS]]&lt;br /&gt;
* [[Protar|Protar GmbH]]&lt;br /&gt;
* [[P.Z. Karen]]&lt;br /&gt;
* [[Sikor Soft]]&lt;br /&gt;
* [[SOETO]]&lt;br /&gt;
* [[Steinberg]]&lt;br /&gt;
* [[Supra Corp.]]&lt;br /&gt;
* [[TOMS]]&lt;br /&gt;
* [[Turbo]]&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Menu Główne]]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=TOS&amp;diff=10419</id>
		<title>TOS</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=TOS&amp;diff=10419"/>
		<updated>2006-03-04T13:01:27Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: lepsze polozenie spisu OSów&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OS}}&lt;br /&gt;
&lt;br /&gt;
==Wstęp==&lt;br /&gt;
&#039;&#039;&#039;The Operating System&#039;&#039;&#039; (nazywany równieź mylnie &#039;&#039;&#039;Tramiel Operating System&#039;&#039;&#039;) system operacyjny komputerów Atari [[ST]], [[Mega ST]], [[STE]], [[Mega STE]], [[TT030]], [[Falcon]] a także klonów: [[Direct Computer|Direct]], [[Medusa]], [[Hades]], [[Milan]].&lt;br /&gt;
&lt;br /&gt;
==Elementy składowe==&lt;br /&gt;
System składa się z nastepujących części:&lt;br /&gt;
* [[BIOS]] - odpowiedzialny za operacje blokowe i sprzętowo zależne,&lt;br /&gt;
* [[XBIOS]] - (Extended Basic Input/Output System) rozszeżona część BIOS, odpowiedzialna za obsługę sprzętu.&lt;br /&gt;
* [[LineA]] - odpowiedzialny za podstawowe operacje graficzne, razem z BIOS oraz XBIOS stanowią najniższą warstwę logiczną systemu [[TOS]]&lt;br /&gt;
* [[GEMDOS]] - odpowiedzialny za operacje na plikach i pamięci,&lt;br /&gt;
* [[GEM]] - środowisko graficzne [[GUI]] dzielące się na następujące części,&lt;br /&gt;
** [[VDI]] - odpowiedzialny za bezpośredni dostęp do urządzenia oraz rysowanie podstawowych obiektów graficznych i znaków&lt;br /&gt;
** [[AES]] - odpowiedzialny ze okienka i GUI.&lt;br /&gt;
** [[Desktop]] - graficzny program zarządający ([[SHELL]])&lt;br /&gt;
&lt;br /&gt;
System, oprócz wersji 1.0 i wcześniejszych znajdował się w ROMie. W późniejszym okresie powstały rozszerzenia dodające nowe funkcje:&lt;br /&gt;
&lt;br /&gt;
* [[GDOS]] - odpowiedzialny za obsługe drukarek, a także czcionek wektorowych,&lt;br /&gt;
* [[MetaDOS]] - odpowiedzialny za obsługę CD-ROM-u.&lt;br /&gt;
&lt;br /&gt;
==Następcy==&lt;br /&gt;
Ostatecznie TOS został zastąpiony przez [[MultiTOS]], który po opublikowaniu części kodu źródłowego jest rozwijany jako [[FreeMiNT]].&lt;br /&gt;
&lt;br /&gt;
Istnieje również zamiennik dla [[TOS]]u i [[MiNT]]a - [[MagiC]] - wielozadaniowy system, zastępuje cały [[TOS]]&lt;br /&gt;
&lt;br /&gt;
==Zastępniki podsystemów==&lt;br /&gt;
Firmy trzecie rozwijały oprogramowanie zastępujące poszczególne części [[TOS]]u, były to:&lt;br /&gt;
&lt;br /&gt;
* [[Warp 9]] - zastępuje VDI,&lt;br /&gt;
* [[NVDI]] - zastępuje VDI oraz GDOS,&lt;br /&gt;
* [[Geneva]] - zastępuje AES,&lt;br /&gt;
* [[N.AES]] - zastępuje AES,&lt;br /&gt;
* [[MultiGEM]] - zastepuje AES oraz Desktop - rozszerza wielozadaniowość z akcesorii na aplikacje GEM&#039;owe&lt;br /&gt;
&lt;br /&gt;
Oprócz tego powstało darmowe oprogramowanie zastępujące fragmenty - w porywach do prawie całości - [[TOS]]u:&lt;br /&gt;
&lt;br /&gt;
* [[FreeMiNT]] (nadal rozwijany) - zastępuje [[GEMDOS]] oraz sporą część [[BIOS]]u&lt;br /&gt;
* [[EmuTOS]] (nadal rozwijany) - darmowy zamiennik TOS (warstwa operacyjna dla FreeMiNT)&lt;br /&gt;
* [[XaAES]] (nadal rozwijany wraz z FreeMiNTem) - zastępuje AES,&lt;br /&gt;
* [[MyAES]] (nadal rozwijany) - zastępuje AES,&lt;br /&gt;
* [[FVDI]] (nadal rozwijany) - darmowa alternatywa dla NVDI,&lt;br /&gt;
* [[KAOS]] - zastępuje Desktop&lt;br /&gt;
* [[Direct]] - zastępuje Desktop&lt;br /&gt;
* [[Ease]] - zastępuje Desktop&lt;br /&gt;
* [[TeraDesk]] (nadal rozwijany) - zastępuje Desktop&lt;br /&gt;
* [[NeoDesk]] - zastępuje Desktop&lt;br /&gt;
* [[No!Desk]] - zastępuje Desktop&lt;br /&gt;
* [[Gemini]] - zastępuje Desktop&lt;br /&gt;
* [[oVDI]] (nadal rozwijany) - zastępuje VDI&lt;br /&gt;
* [[OSIS]] (nie rozwijany) - zastępuje cały [[TOS]], składa się z: &lt;br /&gt;
** [[oTOSis]],&lt;br /&gt;
** [[oVDIsis]],&lt;br /&gt;
** [[oAESis]],&lt;br /&gt;
** [[oFBis]],&lt;br /&gt;
* [[BetaDOS]] - zastępuje MetaDOS, oraz dodaje pewne funkcje do TOSu.&lt;br /&gt;
&lt;br /&gt;
==Zobacz także==&lt;br /&gt;
Opis różnych wersji [[TOS]]:&lt;br /&gt;
http://members.aol.com/liamproven/reference/tos_hist.htm&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
[[Kategoria:Atari ST]]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=TOS&amp;diff=10312</id>
		<title>TOS</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=TOS&amp;diff=10312"/>
		<updated>2006-03-04T12:58:15Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: +sekcje&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Wstęp==&lt;br /&gt;
{{OS}}&#039;&#039;&#039;The Operating System&#039;&#039;&#039; (nazywany równieź mylnie &#039;&#039;&#039;Tramiel Operating System&#039;&#039;&#039;) system operacyjny komputerów Atari [[ST]], [[Mega ST]], [[STE]], [[Mega STE]], [[TT030]], [[Falcon]] a także klonów: [[Direct Computer|Direct]], [[Medusa]], [[Hades]], [[Milan]].&lt;br /&gt;
&lt;br /&gt;
==Elementy składowe==&lt;br /&gt;
System składa się z nastepujących części:&lt;br /&gt;
* [[BIOS]] - odpowiedzialny za operacje blokowe i sprzętowo zależne,&lt;br /&gt;
* [[XBIOS]] - (Extended Basic Input/Output System) rozszeżona część BIOS, odpowiedzialna za obsługę sprzętu.&lt;br /&gt;
* [[LineA]] - odpowiedzialny za podstawowe operacje graficzne, razem z BIOS oraz XBIOS stanowią najniższą warstwę logiczną systemu [[TOS]]&lt;br /&gt;
* [[GEMDOS]] - odpowiedzialny za operacje na plikach i pamięci,&lt;br /&gt;
* [[GEM]] - środowisko graficzne [[GUI]] dzielące się na następujące części,&lt;br /&gt;
** [[VDI]] - odpowiedzialny za bezpośredni dostęp do urządzenia oraz rysowanie podstawowych obiektów graficznych i znaków&lt;br /&gt;
** [[AES]] - odpowiedzialny ze okienka i GUI.&lt;br /&gt;
** [[Desktop]] - graficzny program zarządający ([[SHELL]])&lt;br /&gt;
&lt;br /&gt;
System, oprócz wersji 1.0 i wcześniejszych znajdował się w ROMie. W późniejszym okresie powstały rozszerzenia dodające nowe funkcje:&lt;br /&gt;
&lt;br /&gt;
* [[GDOS]] - odpowiedzialny za obsługe drukarek, a także czcionek wektorowych,&lt;br /&gt;
* [[MetaDOS]] - odpowiedzialny za obsługę CD-ROM-u.&lt;br /&gt;
&lt;br /&gt;
==Następcy==&lt;br /&gt;
Ostatecznie TOS został zastąpiony przez [[MultiTOS]], który po opublikowaniu części kodu źródłowego jest rozwijany jako [[FreeMiNT]].&lt;br /&gt;
&lt;br /&gt;
Istnieje również zamiennik dla [[TOS]]u i [[MiNT]]a - [[MagiC]] - wielozadaniowy system, zastępuje cały [[TOS]]&lt;br /&gt;
&lt;br /&gt;
==Zastępniki podsystemów==&lt;br /&gt;
Firmy trzecie rozwijały oprogramowanie zastępujące poszczególne części [[TOS]]u, były to:&lt;br /&gt;
&lt;br /&gt;
* [[Warp 9]] - zastępuje VDI,&lt;br /&gt;
* [[NVDI]] - zastępuje VDI oraz GDOS,&lt;br /&gt;
* [[Geneva]] - zastępuje AES,&lt;br /&gt;
* [[N.AES]] - zastępuje AES,&lt;br /&gt;
* [[MultiGEM]] - zastepuje AES oraz Desktop - rozszerza wielozadaniowość z akcesorii na aplikacje GEM&#039;owe&lt;br /&gt;
&lt;br /&gt;
Oprócz tego powstało darmowe oprogramowanie zastępujące fragmenty - w porywach do prawie całości - [[TOS]]u:&lt;br /&gt;
&lt;br /&gt;
* [[FreeMiNT]] (nadal rozwijany) - zastępuje [[GEMDOS]] oraz sporą część [[BIOS]]u&lt;br /&gt;
* [[EmuTOS]] (nadal rozwijany) - darmowy zamiennik TOS (warstwa operacyjna dla FreeMiNT)&lt;br /&gt;
* [[XaAES]] (nadal rozwijany wraz z FreeMiNTem) - zastępuje AES,&lt;br /&gt;
* [[MyAES]] (nadal rozwijany) - zastępuje AES,&lt;br /&gt;
* [[FVDI]] (nadal rozwijany) - darmowa alternatywa dla NVDI,&lt;br /&gt;
* [[KAOS]] - zastępuje Desktop&lt;br /&gt;
* [[Direct]] - zastępuje Desktop&lt;br /&gt;
* [[Ease]] - zastępuje Desktop&lt;br /&gt;
* [[TeraDesk]] (nadal rozwijany) - zastępuje Desktop&lt;br /&gt;
* [[NeoDesk]] - zastępuje Desktop&lt;br /&gt;
* [[No!Desk]] - zastępuje Desktop&lt;br /&gt;
* [[Gemini]] - zastępuje Desktop&lt;br /&gt;
* [[oVDI]] (nadal rozwijany) - zastępuje VDI&lt;br /&gt;
* [[OSIS]] (nie rozwijany) - zastępuje cały [[TOS]], składa się z: &lt;br /&gt;
** [[oTOSis]],&lt;br /&gt;
** [[oVDIsis]],&lt;br /&gt;
** [[oAESis]],&lt;br /&gt;
** [[oFBis]],&lt;br /&gt;
* [[BetaDOS]] - zastępuje MetaDOS, oraz dodaje pewne funkcje do TOSu.&lt;br /&gt;
&lt;br /&gt;
==Zobacz także==&lt;br /&gt;
Opis różnych wersji [[TOS]]:&lt;br /&gt;
http://members.aol.com/liamproven/reference/tos_hist.htm&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
[[Kategoria:Atari ST]]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Optymalizacja&amp;diff=14600</id>
		<title>Optymalizacja</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Optymalizacja&amp;diff=14600"/>
		<updated>2006-03-01T15:58:04Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: wydajniejsze może być dłuższe&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dawny zwyczaj polegający na usuwaniu z programu niepotrzebnych części. Celem jest uzyskanie krótszego i/lub wydajniejszego programu, w szczególności ulepszenie jakiegoś efektu do dema (który ma się &amp;quot;zmieścić w ramce&amp;quot; - w slangu koderów).&lt;br /&gt;
&lt;br /&gt;
Optymalizacja może dotyczyć również nośników danych - np. układanie w określonym porządku danych na dyskietce (co może skutkować szybszym dostępem do plików i ogólnie szybszym odczytem) realizuje program &amp;quot;Szperacz dyskowy&amp;quot; z [[L.K. Avalon]].&lt;br /&gt;
&lt;br /&gt;
Optymalizacja może być wykonywana automatycznie podczas kompilacji programu, jeśli stosuje się kompilatory języków wysokiego poziomu, np. [[CC65]]. Kompilator może zmniejszyć liczbę instrukcji programu wynikowego lub przyspieszyć jego wykonywanie, jeśli sobie oczywiście tego zażyczymy. W kompilatorach C zwykle stosuje się w tym celu parametr &amp;quot;-O2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
W środowisku komputerów 8-bit optymalizacja jest zwykle niezbędnym etapem tworzenia oprogramowania w przypadku tworzenia dużych lub skomplikowanych obliczeniowo programów. Wynika to z ograniczonych zasobów tej klasy komputerów ([[RAM]], wydajność procesora). W środowisku PC optymalizacja często jest pomijana ze względu na wspomnianą automatyczną optymalizację a także na fakt, że coraz częściej oprogramowanie działa w środowisku rozproszonym i np. optymalizacja pod względem wykorzystania [[CPU]] ma niewielki wpływ na całkowity czas wykonywania programu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Glosariusz]]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Optymalizacja&amp;diff=10083</id>
		<title>Optymalizacja</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Optymalizacja&amp;diff=10083"/>
		<updated>2006-03-01T15:05:55Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: coś ala w dyskusji&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dawny zwyczaj polegający na usuwaniu z programu niepotrzebnych części, bądź poprawianiem ich jakości. Celem jest uzyskanie krótszego/wydajniejszego programu, czy ulepszenie jakiegoś efektu do dema (który ma się &amp;quot;zmieścić w ramce&amp;quot; - w slangu koderów).&lt;br /&gt;
&lt;br /&gt;
Optymalizacja może dotyczyć również nośników danych - np. układanie w określonym porządku danych na dyskietce (co może skutkować szybszym dostępem do plików i ogólnie szybszym odczytem) realizuje program &amp;quot;Szperacz dyskowy&amp;quot; z [[L.K. Avalon]].&lt;br /&gt;
&lt;br /&gt;
Optymalizacja może być wykonywana automatycznie podczas kompilacji programu, jeśli stosuje się kompilatory języków wysokiego poziomu, np. [[CC65]]. Kompilator może zmniejszyć liczbę instrukcji programu wynikowego lub przyspieszyć jego wykonywanie, jeśli sobie oczywiście tego zażyczymy. W kompilatorach C zwykle stosuje się w tym celu parametr &amp;quot;-O2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
W środowisku komputerów 8-bit optymalizacja jest zwykle niezbędnym etapem tworzenia oprogramowania w przypadku tworzenia dużych lub skomplikowanych obliczeniowo programów. Wynika to z ograniczonych zasobów tej klasy komputerów ([[RAM]], wydajność procesora). W środowisku PC optymalizacja często jest pomijana ze względu na wspomnianą automatyczną optymalizację a także na fakt, że coraz częściej oprogramowanie działa w środowisku rozproszonym i np. optymalizacja pod względem wykorzystania [[CPU]] ma niewielki wpływ na całkowity czas wykonywania programu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Glosariusz]]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Boot&amp;diff=15045</id>
		<title>Boot</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Boot&amp;diff=15045"/>
		<updated>2006-03-01T01:08:25Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: lepsze zakończenie&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Jest to nieprzetłumaczalny wprost termin z języka angielskiego, oznaczający (w wolnym tłumaczeniu) &amp;quot;rozruch&amp;quot; lub &amp;quot;start&amp;quot;. I tak, np. &#039;&#039;dysk bootujący&#039;&#039; oznacza dysk, z którego uruchamia się system komputerowy. Innym przykładem może być występujący czasem na Atari błąd, objawiający się napisem &amp;quot;BOOT ERROR&amp;quot; - oznacza on, że system [[OS]] nie jest w stanie wczytać oprogramowania, które mogłoby być uruchomione podczas rozruchu komputera (np. w wyniku awarii stacji dysków lub uszkodzenia nośnika).&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Glosariusz]]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Optymalizacja&amp;diff=10082</id>
		<title>Optymalizacja</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Optymalizacja&amp;diff=10082"/>
		<updated>2006-03-01T00:58:32Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: -O2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dawny zwyczaj polegający na usuwaniu z programu niepotrzebnych części, bądź poprawianiem ich jakości. Celem jest uzyskanie krótszego/wydajniejszego programu, czy ulepszenie jakiegoś efektu do dema (który ma się &amp;quot;zmieścić w ramce&amp;quot; - w slangu koderów).&lt;br /&gt;
&lt;br /&gt;
Optymalizacja może dotyczyć również nośników danych - np. układanie w określonym porządku danych na dyskietce (co może skutkować szybszym dostępem do plików i ogólnie szybszym odczytem) realizuje program &amp;quot;Szperacz dyskowy&amp;quot; z [[L.K. Avalon]].&lt;br /&gt;
&lt;br /&gt;
Optymalizacja może być wykonywana automatycznie podczas kompilacji programu, jeśli stosuje się kompilatory języków wysokiego poziomu, np. [[CC65]]. Kompilator może zmniejszyć liczbę instrukcji programu wynikowego lub przyspieszyć jego wykonywanie, jeśli sobie oczywiście tego zażyczymy. W kompilatorach C zwykle stosuje się w tym celu parametr &amp;quot;-O2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Glosariusz]]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=TAR&amp;diff=14514</id>
		<title>TAR</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=TAR&amp;diff=14514"/>
		<updated>2006-02-15T19:41:57Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: /* Uwagi - zgranie ze zdaniem wstepnym */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{grafr|tar.png}}&lt;br /&gt;
[[TAR]] - archiwer na małe Atari zgodny z programem &#039;&#039;&#039;tar&#039;&#039;&#039; (skrót od &amp;quot;tape archiver&amp;quot;) znanym z Unixa. Autorem wersji dla Atari jest [[KMK]]. Program działa jedynie pod [[SpartaDOS]] i [[SpartaDOS X]] ze względu na wykorzystanie oferowanych przez ten DOS funkcji bezpośredniego dostępu do katalogów. Polecenia przyjmuje za pośrednictwem linii komend. Program napisany jest w asemblerze [[MAE]].&lt;br /&gt;
&lt;br /&gt;
===Tworzenie archiwum===&lt;br /&gt;
&lt;br /&gt;
* tar -c foo [lista plików]&lt;br /&gt;
* tar -cv foo [lista plików]&lt;br /&gt;
&lt;br /&gt;
W przykładzie program tworzy archiwum o nazwie &amp;quot;foo.tar&amp;quot; umieszczone w katalogu bieżącym, i kopiuje do niego pliki, których nazwy znajdują się w &amp;quot;liście plików&amp;quot; (kolejne nazwy plików oddzielone spacjami). Lista plików może zawierać jokery, w przypadku, kiedy nie jest podana, przyjmuje się, że stanowi ją tekst &amp;quot;*.*&amp;quot;. Jeśli w liście plików podany jest katalog, program załącza go do archiwum w całości, razem z wszystkimi podkatalogami i znajdującym się w nich plikami, o ile odpowiadają podanej masce (np. &#039;&#039;tar -c foo katalog&amp;gt;*.src&#039;&#039; załączy tylko pliki wybrane przez maskę &amp;quot;*.src&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
Podanie opcji &#039;v&#039; w parametrach powoduje wyświetlenie informacji, który plik jest w danej chwili archiwizowany.&lt;br /&gt;
&lt;br /&gt;
===Rozpakowywanie archiwum===&lt;br /&gt;
&lt;br /&gt;
* tar -x foo [maska]&lt;br /&gt;
* tar -xv foo [maska]&lt;br /&gt;
&lt;br /&gt;
Rozpakowane zostanie archiwum &amp;quot;foo.tar&amp;quot; znajdujące się w katalogu bieżącym. W przypadku podania maski plików, rozpakowane zostaną tylko pliki z nią zgodne (v.1.0 rozpakowywał też przy okazji wszystkie katalogi, zostało to poprawione w wersji 1.1). Podanie opcji &#039;v&#039; w parametrach powoduje wyświetlenie informacji, który plik jest w danej chwili wypakowywany (wyświetlana jest cała ścieżka razem ze specyfikacją dysku docelowego). Dodatkowe opcje:&lt;br /&gt;
&lt;br /&gt;
* -k - nie nadpisuj plików już istniejących na dysku&lt;br /&gt;
* -m - nie przywracaj odpakowanym plikom pierwotnego czasu i daty&lt;br /&gt;
&lt;br /&gt;
===Listowanie zawartości archiwum===&lt;br /&gt;
&lt;br /&gt;
* tar -t foo [maska]&lt;br /&gt;
* tar -tv foo [maska]&lt;br /&gt;
&lt;br /&gt;
Zawartość archiwum &amp;quot;foo.tar&amp;quot; znajdującego się w katalogu bieżącym zostanie wylistowana na ekranie. &amp;quot;-t&amp;quot; podaje same nazwy plików razem ze ścieżkami, dodanie opcji &amp;quot;v&amp;quot; powoduje wyświetlenie dodatkowych informacji (czas i data modyfikacji, typ pliku, wielkość).&lt;br /&gt;
&lt;br /&gt;
===Uwagi===&lt;br /&gt;
&lt;br /&gt;
Przy tworzeniu archiwów na Atari trzeba uważać na następujące rzeczy:&lt;br /&gt;
&lt;br /&gt;
# Nie należy załączać do archiwum dwóch (lub więcej) plików o tej samej samej ścieżce dostępu. Może się to łatwo zdarzyć przy tworzeniu jednego archiwum zawierającego pliki znajdujące się na różnych dyskach (specyfikacja stacji dysków, jako nieprzenośna pomiędzy systemami operacyjnymi, nie jest zapisywana w archiwum).&lt;br /&gt;
# Nie należy tworzyć archiwów, w których w jednym katalogu będzie istniał wpis dla pliku i dla podkatalogu o tej samej nazwie; SpartaDOS na to pozwala, więc takie archiwum rozpakuje się prawidłowo na Atari, ale pod Unixem oraz pod Windows będą problemy.&lt;br /&gt;
# Trzeba uważać, żeby długość linii komend z listą plików do spakowania nie przekroczyła 64 znaków - do tego wlicza się też, niewidoczna na ekranie, ale zajmująca miejsce w buforze, ścieżka dostępu do programu tar.exe.&lt;br /&gt;
# Nie wolno dawać jokerów (znaków &#039;*&#039; i &#039;?&#039;) w nazwach katalogów podawanych programowi do archiwizacji. Jokery mogą występować tylko w maskach plików.&lt;br /&gt;
&lt;br /&gt;
==Pobierz==&lt;br /&gt;
Program jest do ściągnięcia ze strony autora: [http://drac030.krap.pl/tar.arc drac030.krap.pl]. Dyskusja tutaj: [http://atariarea.krap.pl/forum/viewtopic.php?id=3564].&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Oprogramowanie Atari 8-bit]]&lt;br /&gt;
[[Kategoria:Polskie programy]]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Falcon030&amp;diff=9792</id>
		<title>Falcon030</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Falcon030&amp;diff=9792"/>
		<updated>2006-02-15T19:20:16Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: /* ciekawe strony */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{grafr|Falcon-flyer-small.gif}}&lt;br /&gt;
&lt;br /&gt;
Atari Falcon 030 był następca Atari [[ST]], oficjalna premiera miała miejsce 23. sierpnia 1991 w Niemczech.&lt;br /&gt;
Falcon był rozwijany pod nazwą [[Sparrow]], a wczesna wersja rozwojowa/prototyp oznaczona jako [[FX/1]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parametry:&#039;&#039;&#039;&lt;br /&gt;
* CPU: Motorola [[68030]], 16 MHz, 256b cache&lt;br /&gt;
* DSP: Motorola [[56001]], 32 MHz,&lt;br /&gt;
* FPU: (opcjonalnie) Motorola [[68881]] lub [[68882]], 16 MHz,&lt;br /&gt;
* Szyna: 16Mhz/16bit&lt;br /&gt;
* Pamięć: 1, 4 lub 14 MB&lt;br /&gt;
&lt;br /&gt;
* System: &lt;br /&gt;
** [[TOS]] (wersje 4.01, 4.02, 4.03, 4.04)&lt;br /&gt;
** [[MultiTOS]]&lt;br /&gt;
&lt;br /&gt;
* Grafika: &#039;&#039;&#039;VIDEL&#039;&#039;&#039; (programowalny procesor graficzny)&lt;br /&gt;
** Tryby graficze:&lt;br /&gt;
** Standardowe: (paleta kolorów: 262144 kolory)&lt;br /&gt;
*** 320 lub 640 poziomo&lt;br /&gt;
*** 200 lub 400 pionowo na telewizorze lub monitorze RGB&lt;br /&gt;
*** 240 lub 480 pionowo na monitorze VGA&lt;br /&gt;
*** 2, 4, 16, 256 lub HiColor (65536 kolorów) (na monitorze VGA TrueColor tylko w 320 poziomo)&lt;br /&gt;
** Kompatybilne z [[ST]]: (paleta kolorów: 4096 kolory)&lt;br /&gt;
*** ST Low: 320x200, 16 kolorów&lt;br /&gt;
*** ST Med: 640x200, 4 kolory&lt;br /&gt;
*** ST High: 640x400, 2 kolory&lt;br /&gt;
** Kompatybilne z [[TT030|TT]]: (paleta kolorów: 4096 kolory)&lt;br /&gt;
*** TT Low: 320x480, 256 kolorów&lt;br /&gt;
*** TT Med: 640x480, 16 kolorów&lt;br /&gt;
*** TT High: 1280x960, 2 kolory&lt;br /&gt;
** Nie publikowane:&lt;br /&gt;
*** 832*600 Truecolor,&lt;br /&gt;
*** 1664*600 2, 4, 16 lub 256 kolorów,&lt;br /&gt;
** Procesor graficzny [[BLiTTER]]&lt;br /&gt;
&lt;br /&gt;
* Audio:&lt;br /&gt;
** &#039;&#039;&#039;SDMA&#039;&#039;&#039; (Sound DMA)&lt;br /&gt;
** Multiplekser&lt;br /&gt;
** 2 szesnastobitowe przetworniki cyfrowo/analogowe (stereo) (maksymalna częstotliwość: 49170Hz)&lt;br /&gt;
** 2 szesnastobitowe przetworniki analogowo/cyfrowe (stereo) (maksymalna częstotliwość: 49170Hz)&lt;br /&gt;
** Procesor sygnałowy DSP&lt;br /&gt;
*** 8-em 16bit-owych kanałów DMA z próbkowaniem do 50 kHz&lt;br /&gt;
** Generator [[YM-3449]] (3 kanały, 8 oktaw, mozliwość generowania szumów)&lt;br /&gt;
&lt;br /&gt;
* Interfejsy:&lt;br /&gt;
** IDE (eewnętrzny)&lt;br /&gt;
** SCSI II (zewnętrzny)&lt;br /&gt;
&lt;br /&gt;
* Stacja dysków: 3,5&amp;quot; FDD, 1,44 MB (DS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Grafika:Falcon-title.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Razem z Falconem dostarczany był wielozadaniowy [[MultiTOS]], rozwijany do dziś jako [[FreeMiNT]].&lt;br /&gt;
&lt;br /&gt;
Na Falconie działają także takie systemy jak [[NetBSD]] (od wersji 1.5.1) oraz [[Linux]] (od wersji 2.0) oraz [[MagiC]].&lt;br /&gt;
&lt;br /&gt;
Kontynuowany jako [[C-LAB Falcon MK I]], [[C-LAB Falcon MK II]] oraz [[C-LAB Falcon MK X]].&lt;br /&gt;
&lt;br /&gt;
== Ciekawe strony  ==&lt;br /&gt;
&lt;br /&gt;
* http://lafabrie.club.fr/Atari/Index.htm - &lt;br /&gt;
* http://perso.wanadoo.fr/didierm/index-e.htm - &lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Atari ST]]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Falcon030&amp;diff=9600</id>
		<title>Falcon030</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Falcon030&amp;diff=9600"/>
		<updated>2006-02-15T19:19:36Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{grafr|Falcon-flyer-small.gif}}&lt;br /&gt;
&lt;br /&gt;
Atari Falcon 030 był następca Atari [[ST]], oficjalna premiera miała miejsce 23. sierpnia 1991 w Niemczech.&lt;br /&gt;
Falcon był rozwijany pod nazwą [[Sparrow]], a wczesna wersja rozwojowa/prototyp oznaczona jako [[FX/1]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parametry:&#039;&#039;&#039;&lt;br /&gt;
* CPU: Motorola [[68030]], 16 MHz, 256b cache&lt;br /&gt;
* DSP: Motorola [[56001]], 32 MHz,&lt;br /&gt;
* FPU: (opcjonalnie) Motorola [[68881]] lub [[68882]], 16 MHz,&lt;br /&gt;
* Szyna: 16Mhz/16bit&lt;br /&gt;
* Pamięć: 1, 4 lub 14 MB&lt;br /&gt;
&lt;br /&gt;
* System: &lt;br /&gt;
** [[TOS]] (wersje 4.01, 4.02, 4.03, 4.04)&lt;br /&gt;
** [[MultiTOS]]&lt;br /&gt;
&lt;br /&gt;
* Grafika: &#039;&#039;&#039;VIDEL&#039;&#039;&#039; (programowalny procesor graficzny)&lt;br /&gt;
** Tryby graficze:&lt;br /&gt;
** Standardowe: (paleta kolorów: 262144 kolory)&lt;br /&gt;
*** 320 lub 640 poziomo&lt;br /&gt;
*** 200 lub 400 pionowo na telewizorze lub monitorze RGB&lt;br /&gt;
*** 240 lub 480 pionowo na monitorze VGA&lt;br /&gt;
*** 2, 4, 16, 256 lub HiColor (65536 kolorów) (na monitorze VGA TrueColor tylko w 320 poziomo)&lt;br /&gt;
** Kompatybilne z [[ST]]: (paleta kolorów: 4096 kolory)&lt;br /&gt;
*** ST Low: 320x200, 16 kolorów&lt;br /&gt;
*** ST Med: 640x200, 4 kolory&lt;br /&gt;
*** ST High: 640x400, 2 kolory&lt;br /&gt;
** Kompatybilne z [[TT030|TT]]: (paleta kolorów: 4096 kolory)&lt;br /&gt;
*** TT Low: 320x480, 256 kolorów&lt;br /&gt;
*** TT Med: 640x480, 16 kolorów&lt;br /&gt;
*** TT High: 1280x960, 2 kolory&lt;br /&gt;
** Nie publikowane:&lt;br /&gt;
*** 832*600 Truecolor,&lt;br /&gt;
*** 1664*600 2, 4, 16 lub 256 kolorów,&lt;br /&gt;
** Procesor graficzny [[BLiTTER]]&lt;br /&gt;
&lt;br /&gt;
* Audio:&lt;br /&gt;
** &#039;&#039;&#039;SDMA&#039;&#039;&#039; (Sound DMA)&lt;br /&gt;
** Multiplekser&lt;br /&gt;
** 2 szesnastobitowe przetworniki cyfrowo/analogowe (stereo) (maksymalna częstotliwość: 49170Hz)&lt;br /&gt;
** 2 szesnastobitowe przetworniki analogowo/cyfrowe (stereo) (maksymalna częstotliwość: 49170Hz)&lt;br /&gt;
** Procesor sygnałowy DSP&lt;br /&gt;
*** 8-em 16bit-owych kanałów DMA z próbkowaniem do 50 kHz&lt;br /&gt;
** Generator [[YM-3449]] (3 kanały, 8 oktaw, mozliwość generowania szumów)&lt;br /&gt;
&lt;br /&gt;
* Interfejsy:&lt;br /&gt;
** IDE (eewnętrzny)&lt;br /&gt;
** SCSI II (zewnętrzny)&lt;br /&gt;
&lt;br /&gt;
* Stacja dysków: 3,5&amp;quot; FDD, 1,44 MB (DS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Grafika:Falcon-title.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Razem z Falconem dostarczany był wielozadaniowy [[MultiTOS]], rozwijany do dziś jako [[FreeMiNT]].&lt;br /&gt;
&lt;br /&gt;
Na Falconie działają także takie systemy jak [[NetBSD]] (od wersji 1.5.1) oraz [[Linux]] (od wersji 2.0) oraz [[MagiC]].&lt;br /&gt;
&lt;br /&gt;
Kontynuowany jako [[C-LAB Falcon MK I]], [[C-LAB Falcon MK II]] oraz [[C-LAB Falcon MK X]].&lt;br /&gt;
&lt;br /&gt;
== ciekawe strony  ==&lt;br /&gt;
&lt;br /&gt;
* http://lafabrie.club.fr/Atari/Index.htm - &lt;br /&gt;
* http://perso.wanadoo.fr/didierm/index-e.htm - &lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Atari ST]]&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Dyskusja:XE&amp;diff=9157</id>
		<title>Dyskusja:XE</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Dyskusja:XE&amp;diff=9157"/>
		<updated>2006-02-10T13:54:25Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: /* GSPBI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;co to do kurwy nedzy jest querty? (qwerty - rozumiem, ale tego wynalazku - US QUERTY - feeeee)&lt;br /&gt;
&lt;br /&gt;
wypadalo by rowniez wspomniec o peryferiach ktore sie pojawily razem z seria XE, jak modem XM301, SX212,&lt;br /&gt;
czy chocby XFka, magnety...&lt;br /&gt;
&lt;br /&gt;
to samo sie tyczy linii XL - mozna by wspomniec o 1010, 1050&lt;br /&gt;
&lt;br /&gt;
btw. nie bylo ukladu klawiatury qwertz? (niemiecki) w serii st na 100% bylo, ale w xe?&lt;br /&gt;
&lt;br /&gt;
btw2. znowu zapomnialem sie podpisac...--[[Wikipedysta:Jellonek|Jellonek]] 15:31, 6 gru 2005 (CET)&lt;br /&gt;
:serio, nie widziałem germańskiej :) ale jak masz źródło, że była, to dodaj. Co do innych p...eryferiów, to droga wolna --[[Wikipedysta:Piotrv|Piotrv]] 15:35, 6 gru 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
==GSPBI==&lt;br /&gt;
KMK, czy jesteś na 100% pewny, że [[GSPBI]] można użyć w kompach które nie mają gniazda [[Gniazdo ECI|ECI]]? --[[Wikipedysta:Piotrv|Piotrv]] 01:38, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:Czytałeś hasło [[GSPBI]] i rozumiesz jego treść? [[Wikipedysta:KMK|KMK]] 01:52, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::Czyli że ten projekt to nie przejściówka pokazana na zdjęciu, tylko złącze montowane wewnątrz komputera, wyprowadzające gniazdo GSPBI, wykorzystywane np. do dodania gniazda ECI, tak mam to rozumieć? --[[Wikipedysta:Piotrv|Piotrv]] 10:09, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:::Na zdjeciu masz przyklad owego wyprowadzenia w postaci przejsciowki dla komputerow wyposażonych w ECI (nowsze 65XE, 130XE), ale ogolnie ów nowo zaproponowany standard tyczy sie WYPROWADZENIA sygnalow dostepnych w PBI w komputerach nie posiadajacych tego zlacza... [[Wikipedysta:Jellonek|Jellonek]] 10:47, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::::Jaśniej proszę albo wielkimi literami, bo z tego co własnie napisałeś wynika, że podłącza się to do ECI... --[[Wikipedysta:Piotrv|Piotrv]] 10:54, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:::::Nie wiem jak tu poszarzyc/rozjasnic litery, ale moze jak wspomne ze chodzi tu o SYGNALY DOSTEPNE POPRZEZ ECI (a wiec niekoniecznie, fizycznie ECI, bo te sygnaly mozna z odp. nozek ukladow wybebrac) - to moze w koncu dotrze ;) [[Wikipedysta:Jellonek|Jellonek]] 14:14, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:::Zdjęcie jest ciemnawe, ale moim zdaniem to jest przejściówka z &#039;&#039;&#039;gniazdem&#039;&#039;&#039; CART/ECI z jednej strony, a wtykiem GSPBI z drugiej, i służy do podpięcia do GSPBI czegoś, co normalnie pasuje do CART/ECI (np. stacji Karin). Samo GSPBI natomiast zastępuje CART/ECI w komputerach, gdzie nie ma ani PBI ani ECI, na przykład - i przede wszystkim - w [[XEGS]], gdzie nie ma ECI. [[Wikipedysta:KMK|KMK]] 14:26, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::::Nie wiem, może taki lotny nie jestem, a może to przemęczenie, ale chociaż pół zdania z tego co tu napisał KMK byłoby miłym dodatkiem we wstępie do [[GSPBI]].--[[Wikipedysta:Piotrv|Piotrv]] 14:40, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:::::Przecież właśnie to jest tam napisane. [[Wikipedysta:KMK|KMK]] 14:49, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:Ale jak dla mnie zbyt skrótowo. Przecież ktoś, kto wie o co chodzi nawet tego czytać nie musi... A uzupełniać tego nie chcę, bo lepiej to zrobi ktoś kto wie o co chodzi. --[[Wikipedysta:Piotrv|Piotrv]] 14:52, 10 lut 2006 (CET)&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Dyskusja:XE&amp;diff=9156</id>
		<title>Dyskusja:XE</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Dyskusja:XE&amp;diff=9156"/>
		<updated>2006-02-10T13:52:52Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: /* GSPBI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;co to do kurwy nedzy jest querty? (qwerty - rozumiem, ale tego wynalazku - US QUERTY - feeeee)&lt;br /&gt;
&lt;br /&gt;
wypadalo by rowniez wspomniec o peryferiach ktore sie pojawily razem z seria XE, jak modem XM301, SX212,&lt;br /&gt;
czy chocby XFka, magnety...&lt;br /&gt;
&lt;br /&gt;
to samo sie tyczy linii XL - mozna by wspomniec o 1010, 1050&lt;br /&gt;
&lt;br /&gt;
btw. nie bylo ukladu klawiatury qwertz? (niemiecki) w serii st na 100% bylo, ale w xe?&lt;br /&gt;
&lt;br /&gt;
btw2. znowu zapomnialem sie podpisac...--[[Wikipedysta:Jellonek|Jellonek]] 15:31, 6 gru 2005 (CET)&lt;br /&gt;
:serio, nie widziałem germańskiej :) ale jak masz źródło, że była, to dodaj. Co do innych p...eryferiów, to droga wolna --[[Wikipedysta:Piotrv|Piotrv]] 15:35, 6 gru 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
==GSPBI==&lt;br /&gt;
KMK, czy jesteś na 100% pewny, że [[GSPBI]] można użyć w kompach które nie mają gniazda [[Gniazdo ECI|ECI]]? --[[Wikipedysta:Piotrv|Piotrv]] 01:38, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:Czytałeś hasło [[GSPBI]] i rozumiesz jego treść? [[Wikipedysta:KMK|KMK]] 01:52, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::Czyli że ten projekt to nie przejściówka pokazana na zdjęciu, tylko złącze montowane wewnątrz komputera, wyprowadzające gniazdo GSPBI, wykorzystywane np. do dodania gniazda ECI, tak mam to rozumieć? --[[Wikipedysta:Piotrv|Piotrv]] 10:09, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:::Na zdjeciu masz przyklad owego wyprowadzenia w postaci przejsciowki dla komputerow wyposażonych w ECI (nowsze 65XE, 130XE), ale ogolnie ów nowo zaproponowany standard tyczy sie WYPROWADZENIA sygnalow dostepnych w PBI w komputerach nie posiadajacych tego zlacza... [[Wikipedysta:Jellonek|Jellonek]] 10:47, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::::Jaśniej proszę albo wielkimi literami, bo z tego co własnie napisałeś wynika, że podłącza się to do ECI... --[[Wikipedysta:Piotrv|Piotrv]] 10:54, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:::::Nie wiem jak tu poszarzyc/rozjasnic litery, ale moze jak wspomne ze chodzi tu o SYGNALY DOSTEPNE POPRZEZ ECI (a wiec niekoniecznie, fizycznie ECI, bo te sygnaly mozna z odp. nozek ukladow wybebrac) - to moze w koncu dotrze ;) [[Wikipedysta:Jellonek|Jellonek]] 14:14, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:::Zdjęcie jest ciemnawe, ale moim zdaniem to jest przejściówka z &#039;&#039;&#039;gniazdem&#039;&#039;&#039; CART/ECI z jednej strony, a wtykiem GSPBI z drugiej, i służy do podpięcia do GSPBI czegoś, co normalnie pasuje do CART/ECI (np. stacji Karin). Samo GSPBI natomiast zastępuje CART/ECI w komputerach, gdzie nie ma ani PBI ani ECI, na przykład - i przede wszystkim - w [[XEGS]], gdzie nie ma ECI. [[Wikipedysta:KMK|KMK]] 14:26, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::::Nie wiem, może taki lotny nie jestem, a może to przemęczenie, ale chociaż pół zdania z tego co tu napisał KMK byłoby miłym dodatkiem we wstępie do [[GSPBI]].--[[Wikipedysta:Piotrv|Piotrv]] 14:40, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:::::Przecież właśnie to jest tam napisane. [[Wikipedysta:KMK|KMK]] 14:49, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:Ale jak dla mnie zbyt skrótowo. Przecież ktoś, kto wie o co chodzi nawet tego czytać nie musi... --[[Wikipedysta:Piotrv|Piotrv]] 14:52, 10 lut 2006 (CET)&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Dyskusja:Matrix&amp;diff=9160</id>
		<title>Dyskusja:Matrix</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Dyskusja:Matrix&amp;diff=9160"/>
		<updated>2006-02-10T13:44:26Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;W związku z brakiem kategorii tutaj proponuje dodać nową - &amp;quot;Atari 16-bit&amp;quot; - i jej użyć. aaa - już jest. No ale może ta moja by była lepsza? --[[Wikipedysta:Piotrv|Piotrv]] 18:07, 9 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::Nie zgrywaj się wszak Atari ST jest równoznaczne z Atari 16-bit. A tak apropo, jak już - to powinno być 16/32-bit, bo karty chodzą zarówno w serii ST, jak i TT, a może i pod Falconem z rozszerzeniem VME?--[[Wikipedysta:Sikor|Sikor]] 18:37, 9 lut 2006 (CET)sikor&lt;br /&gt;
&lt;br /&gt;
Zgadzam się z Sikorem - jeżeli ma być kategoria to proponuję raczej Kategorię Atari 16/32 bit, a nie Atari 16-bit, choćby dlatego, że na temat gołego Falcona są mieszane opinie czy jest to maszyna 16 czy 32-bit ;) A tak pozwoliłoby to skupienie się na właściwym temacie, a nie do niczego nie prowadzących dyskusji jak to z Falconem jest z formalnego punktu widzenia --[[Wikipedysta:Macgyver|Macgyver]] 19:33, 9 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::&amp;quot;Atari ST&amp;quot; nie wystarczy? Przecież wiadomo, o co chodzi. [[Wikipedysta:KMK|KMK]] 02:19, 10 lut 2006 (CET)&lt;br /&gt;
:::Jak dla mnie starczy, tylko zwróciłem uwagę, że jeśli już ktoś zmusi się do zmiany, to trzeba to przemyśleć dokładniej, a nie zawężać, tymbardziej, że w taki sposób wpadamy w paranoję (np. GFA Basic 3,5: kategoria Atari 16/32Bit, a GFA Basic 3,55T powinna być już kategoria Atari 32Bit, a nawet Atari 32Bit/TTonly, gdyż ta wersja z tego co mi wiadomo - źle działała na Falconie). Także sugestia moja jest taka: zostawiamy Atari ST, ewentualnie rozszerzamy na Atari ST/TT/Falcon, gdyż chyba nie ma sensu się bardziej rozdrabniać. Poza tym - chyba jak zauważył Draco030, chyba każdy wie, że TT/Falcon i ich klony to są sukcesory serii ST.--[[Wikipedysta:Sikor|Sikor]] 10:02, 10 lut 2006 (CET)sikor&lt;br /&gt;
&lt;br /&gt;
:No rozbawila mnie kategoria &amp;quot;Atari 16-bit&amp;quot; - jak wyjdzie &amp;quot;Project F7&amp;quot; to tak rozszerzone XL/XE tez trafi do tej kategorii? To moze kategorie &amp;quot;male Atari&amp;quot;, &amp;quot;duze Atari&amp;quot; - kazdy bedzie wiedzial o so chozi, choc to baaardzo niepowaznie brzmi... btw. Popieram ostatnia propozycja: &amp;quot;Atari ST&amp;quot;, &amp;quot;Atari ST/TT/Falcon&amp;quot; [[Wikipedysta:Jellonek|Jellonek]] 14:20, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::Kategoria &amp;quot;Atari ST/TT/Falcon&amp;quot; byłaby już całkiem całkiem, tyle że jej nie ma... Jest tylko puste &amp;quot;Programy na ST/TT/Falcon&amp;quot;. --[[Wikipedysta:Piotrv|Piotrv]] 14:43, 10 lut 2006 (CET)&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Dyskusja:Matrix&amp;diff=9152</id>
		<title>Dyskusja:Matrix</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Dyskusja:Matrix&amp;diff=9152"/>
		<updated>2006-02-10T13:43:45Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;W związku z brakiem kategorii tutaj proponuje dodać nową - &amp;quot;Atari 16-bit&amp;quot; - i jej użyć. aaa - już jest. No ale może ta moja by była lepsza? --[[Wikipedysta:Piotrv|Piotrv]] 18:07, 9 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::Nie zgrywaj się wszak Atari ST jest równoznaczne z Atari 16-bit. A tak apropo, jak już - to powinno być 16/32-bit, bo karty chodzą zarówno w serii ST, jak i TT, a może i pod Falconem z rozszerzeniem VME?--[[Wikipedysta:Sikor|Sikor]] 18:37, 9 lut 2006 (CET)sikor&lt;br /&gt;
&lt;br /&gt;
Zgadzam się z Sikorem - jeżeli ma być kategoria to proponuję raczej Kategorię Atari 16/32 bit, a nie Atari 16-bit, choćby dlatego, że na temat gołego Falcona są mieszane opinie czy jest to maszyna 16 czy 32-bit ;) A tak pozwoliłoby to skupienie się na właściwym temacie, a nie do niczego nie prowadzących dyskusji jak to z Falconem jest z formalnego punktu widzenia --[[Wikipedysta:Macgyver|Macgyver]] 19:33, 9 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::&amp;quot;Atari ST&amp;quot; nie wystarczy? Przecież wiadomo, o co chodzi. [[Wikipedysta:KMK|KMK]] 02:19, 10 lut 2006 (CET)&lt;br /&gt;
:::Jak dla mnie starczy, tylko zwróciłem uwagę, że jeśli już ktoś zmusi się do zmiany, to trzeba to przemyśleć dokładniej, a nie zawężać, tymbardziej, że w taki sposób wpadamy w paranoję (np. GFA Basic 3,5: kategoria Atari 16/32Bit, a GFA Basic 3,55T powinna być już kategoria Atari 32Bit, a nawet Atari 32Bit/TTonly, gdyż ta wersja z tego co mi wiadomo - źle działała na Falconie). Także sugestia moja jest taka: zostawiamy Atari ST, ewentualnie rozszerzamy na Atari ST/TT/Falcon, gdyż chyba nie ma sensu się bardziej rozdrabniać. Poza tym - chyba jak zauważył Draco030, chyba każdy wie, że TT/Falcon i ich klony to są sukcesory serii ST.--[[Wikipedysta:Sikor|Sikor]] 10:02, 10 lut 2006 (CET)sikor&lt;br /&gt;
&lt;br /&gt;
:No rozbawila mnie kategoria &amp;quot;Atari 16-bit&amp;quot; - jak wyjdzie &amp;quot;Project F7&amp;quot; to tak rozszerzone XL/XE tez trafi do tej kategorii? To moze kategorie &amp;quot;male Atari&amp;quot;, &amp;quot;duze Atari&amp;quot; - kazdy bedzie wiedzial o so chozi, choc to baaardzo niepowaznie brzmi... btw. Popieram ostatnia propozycja: &amp;quot;Atari ST&amp;quot;, &amp;quot;Atari ST/TT/Falcon&amp;quot; [[Wikipedysta:Jellonek|Jellonek]] 14:20, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:Kategoria &amp;quot;Atari ST/TT/Falcon&amp;quot; byłaby już całkiem całkiem, tyle że jej nie ma... Jest tylko puste &amp;quot;Programy na ST/TT/Falcon&amp;quot;. --[[Wikipedysta:Piotrv|Piotrv]] 14:43, 10 lut 2006 (CET)&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Dyskusja:XE&amp;diff=9154</id>
		<title>Dyskusja:XE</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Dyskusja:XE&amp;diff=9154"/>
		<updated>2006-02-10T13:40:03Z</updated>

		<summary type="html">&lt;p&gt;Piotrv: /* GSPBI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;co to do kurwy nedzy jest querty? (qwerty - rozumiem, ale tego wynalazku - US QUERTY - feeeee)&lt;br /&gt;
&lt;br /&gt;
wypadalo by rowniez wspomniec o peryferiach ktore sie pojawily razem z seria XE, jak modem XM301, SX212,&lt;br /&gt;
czy chocby XFka, magnety...&lt;br /&gt;
&lt;br /&gt;
to samo sie tyczy linii XL - mozna by wspomniec o 1010, 1050&lt;br /&gt;
&lt;br /&gt;
btw. nie bylo ukladu klawiatury qwertz? (niemiecki) w serii st na 100% bylo, ale w xe?&lt;br /&gt;
&lt;br /&gt;
btw2. znowu zapomnialem sie podpisac...--[[Wikipedysta:Jellonek|Jellonek]] 15:31, 6 gru 2005 (CET)&lt;br /&gt;
:serio, nie widziałem germańskiej :) ale jak masz źródło, że była, to dodaj. Co do innych p...eryferiów, to droga wolna --[[Wikipedysta:Piotrv|Piotrv]] 15:35, 6 gru 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
==GSPBI==&lt;br /&gt;
KMK, czy jesteś na 100% pewny, że [[GSPBI]] można użyć w kompach które nie mają gniazda [[Gniazdo ECI|ECI]]? --[[Wikipedysta:Piotrv|Piotrv]] 01:38, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:Czytałeś hasło [[GSPBI]] i rozumiesz jego treść? [[Wikipedysta:KMK|KMK]] 01:52, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::Czyli że ten projekt to nie przejściówka pokazana na zdjęciu, tylko złącze montowane wewnątrz komputera, wyprowadzające gniazdo GSPBI, wykorzystywane np. do dodania gniazda ECI, tak mam to rozumieć? --[[Wikipedysta:Piotrv|Piotrv]] 10:09, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:::Na zdjeciu masz przyklad owego wyprowadzenia w postaci przejsciowki dla komputerow wyposażonych w ECI (nowsze 65XE, 130XE), ale ogolnie ów nowo zaproponowany standard tyczy sie WYPROWADZENIA sygnalow dostepnych w PBI w komputerach nie posiadajacych tego zlacza... [[Wikipedysta:Jellonek|Jellonek]] 10:47, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::::Jaśniej proszę albo wielkimi literami, bo z tego co własnie napisałeś wynika, że podłącza się to do ECI... --[[Wikipedysta:Piotrv|Piotrv]] 10:54, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:::::Nie wiem jak tu poszarzyc/rozjasnic litery, ale moze jak wspomne ze chodzi tu o SYGNALY DOSTEPNE POPRZEZ ECI (a wiec niekoniecznie, fizycznie ECI, bo te sygnaly mozna z odp. nozek ukladow wybebrac) - to moze w koncu dotrze ;) [[Wikipedysta:Jellonek|Jellonek]] 14:14, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
:::Zdjęcie jest ciemnawe, ale moim zdaniem to jest przejściówka z &#039;&#039;&#039;gniazdem&#039;&#039;&#039; CART/ECI z jednej strony, a wtykiem GSPBI z drugiej, i służy do podpięcia do GSPBI czegoś, co normalnie pasuje do CART/ECI (np. stacji Karin). Samo GSPBI natomiast zastępuje CART/ECI w komputerach, gdzie nie ma ani PBI ani ECI, na przykład - i przede wszystkim - w [[XEGS]], gdzie nie ma ECI. [[Wikipedysta:KMK|KMK]] 14:26, 10 lut 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
::::Nie wiem, może taki lotny nie jestem, a może to przemęczenie, ale chociaż pół zdania z tego co tu napisał KMK byłoby miłym dodatkiem we wstępie do [[GSPBI]].--[[Wikipedysta:Piotrv|Piotrv]] 14:40, 10 lut 2006 (CET)&lt;/div&gt;</summary>
		<author><name>Piotrv</name></author>
	</entry>
</feed>