PilotATARI mierzył już temperaturę, sterował oświetleniem, odbierał obrazy z radia, sprawdzał prawa fizyki. Nie miał jednak okazji pracować jako... wielofunkcyjny pilot do sprzętu RTV. Możliwe jest to dzięki prostemu interfejsowi podłączanemu do gniazda joysticka. Jeśli myślisz, że zapowiada się wielka konstrukcja z układami scalonymi, to jesteś w błędzie. Całą "czarną" robotę wykona bowiem niezmordowany ATARI. Aby wykonać rzeczony interfejs należy zdobyć wtyczkę z kablem od joysticka, ale takiego z autofire, ponieważ potrzebne będzie zasilanie. Samą wtyczkę można również kupić w sklepie z częściami elektronicznymi. Gdy już mamy odpowiedni kabel, to teraz znaleźć należy interesujące nas przewody. W tym celu odszukaj przewód "masę" - jest on przeważnie koloru czarnego. Dalej pomocny będzie programik w BASICu 1 ? STICK(0):G.1 Oddziel jeszcze przewód +5V (prawdopodobnie czerwony) i zwieraj pojedynczo wszystkie pozostałe przewody do masy, obserwując wyświetlane na ekranie liczby. Potrzebne będą kabelki, którym odpowiadają liczby 13 i 14, (oznaczmy je "13" i "14"). Potrzebne są jeszcze następujące części: tranzystory BC211 i BC313, dowolna dioda LED, podczerwona dioda nadawcza CQYP23 lub podobna oraz podczerwona dioda odbiorcza BPYP44 lub podobna. Czas teraz na wykonanie połączeń według schematu: Opis schematu: T1 BC211 T2 BC313 D1 dioda świecąca LED D2 dioda podczerwona nadawcza D3 dioda podczerwona odbiorcza +5V joystlckowy przewód z +5V M joystickowy przewód "masa" 13, 14 patrz opis wyżej Anoda diody ma postać "szpileczki" i jej wyprowadzenie jest przeważnie dłuższe od wyprowadzenia katody. Na schemacie anody są niżej niż katody. Należy uważać, aby nie pomylić diód, mogą one być bardzo do siebie podobne, ale spełniają różne funkcje. Dioda świecąca służy do kontroli "wysterowania" pilota. Poprawność montażu układu można sprawdzić kierując diodę odbiorczą do światła, LED powinien wówczas świecić. Urządzenie można zmontować na płytce lub też bez niej, ale wskazane jest umieścić je w jakiejś obudowie, wyprowadzając "główki" wszystkich diod na zewnątrz. Interfejs podłącza się do pierwszego portu joysticka. Czas teraz na program obsługujący tego nietypowego pilota. Należy zgrać go w formacie DOS-a przy pomocy Zgrywusa+. Po uruchomieniu pojawia się menu. Aby wprowadzać sygnały z oryginalnego pilota należy wybrać kombinację Control Tab. Wówczas program prosi o wciśnięcie klawisza, pod którym kryć się ma określona funkcja. Należy odnaleźć w pilocie "źródłowym" miejsce, w którym znajduje się dioda nadawcza i przystawić ją bezpośrednio do diody odbiorczej Twojego interfejsu. Wciśnij wybrany przycisk w swoim pilocie, a następnie, trzymając go, klawisz w komputerze. Po chwili sygnał zostanie zapamiętany w pamięci komputera. Czynność tę możesz powtarzać do czasu, gdy pojawi się informacja END OF MEMORY. Należy uważać, aby podczas transmisji na diodę nie padał silny strumień światła. Pilota należy przystawić tak, aby podczas wprowadzania sygnałów dioda LED migała jak najmocniej. W celu wysyłania wprowadzonych wcześniej sygnałów należy diodę nadawczą interfejsu skierować w kierunku używanego sprzętu RTV (tak, jak normalny pilot) i nacisnąć wybrany klawisz w ATARI. Wprowadzona funkcja powinna się wykonać, jeśli tak się nie stało, to najprawdopodobniej komputer wraz z interfejsem jest zbyt daleko od urządzenia RTV albo sygnał został źle wprowadzony, wówczas trzeba powtórzyć wprowadzanie. Oto opis komunikatów, jakie można ujrzeć na ekranie podczas używania programu: Drobne uwagi: Funkcje można wprowadzać pod poszczególne klawisze lub ich połączenie z SHIFT-em. Program korzysta z pamięci pod ROM-em, więc nie należy używać z nim innych programów wykorzystujących tą pamięć. Teraz kilka informacji o budowie i działaniu programu. Tę część opisu dedykuję przede wszystkim osobom, które zechcą wykorzystać opisany interfejs we własnych programach. Omówiony zostanie sposób odbioru i wysyłania danych. Mniej zaawansowani mogą przerwać czytanie w tym miejscu. Nadajnik zdalnego sterowania wysyła kod wybranej funkcji cyklicznie, w postaci kombinacji zer i jedynek, przy czym odbywa się to z częstotliwością, jak na nasz komputer, dość dużą. Mimo to nic nie stoi na przeszkodzie, aby taki sygnał odebrać i zapamiętać. A robi się to tak: na wstępie należy wyłączyć przerwania: lda #0 sta $d400 sta $d40e seii ustawić port O na wprowadzanie danych: lda #$38 sta $d302 lda #0 sta $d300 lda #$3c sta $d302teraz należy poczekać na najbliższy sygnał z pilota (aby nie marnować pamięci): w1 lda $d300 cmp #$ff beq w1wreszcie można przyjmować dane (10KB jest ilością wystarczającą, aby zapamiętać całą "serię" z pilota, można wykorzystać tu pamięć pod ROM-em po uprzednim jego wyłączeniu): lda #254 sta $d301 lda #$00 sta $fe lda #$d8 sta $ff ldy #0 b2 lda $d300 sta ($fe),y inc $fe bne b1 inc $ff b1 lda $ff bne b2 odebrane dane można teraz zagęścić (odebrano tylko dwa rodzaje bajtów - odpowiadające zerom i jedynkom, wskazana jest więc zamiana całych bajtów na bity). Ten fragment procedury pozostawiam Twojej, Czytelniku, inwencji twórczej. Jeśli dobrze pójdzie, to skompresowany sygnał będzie zajmował nie więcej niż 1 KB. Nie można zagęszczać sygnału podczas odbierania, gdyż brakłoby na to czasu. Na koniec należy włączyć ROM i przerwania: lda #255 sta $d301 lda 559 sta $d400 lda #255 sta $d40e cli rts Wysyłanie sygnałów odbywa się w odwrotnej kolejności. Tak więc, jeśli używana będzie pamięć pod ROM-em, trzeba odłączyć ROM, a co się z tym wiąże - wcześniej wyłączyć przerwania (patrz wyżej), zmienia się także kierunek transmisji przez PIA: lda #$38 sta $d302 lda #255 sta $d300 lda #$3c sta $d302Następnie, przenosząc dane ze zwykłej pamięci pod ROM, należy przy okazji je rozpakować. To Ty wiesz jak. Dodam tylko, że najlepiej, aby odebranemu bajtowi $ff odpowiadał wysłany $ff odebranemu $fd - wysłany $fa Nadszedł czas na emisję sygnału: rpt lda #$00 sta $fe lda #$d8 sta $ff ldy #0 c2 lda ($fe),y sta $d300 inc $fe bne c1 inc $ff c1 lda $ff bne c2 Tu można sprawdzić, czy przerwać emisję. Jeśli steruje się tym z klawiatury, to nie można odczytywać rejestru KBCODES ($02fc), ponieważ wyłączone są przerwania. Użyć trzeba np. rejestru SKSTAT ($d20f). lda $d20f and #%00000100 beq rpt Koniec wysyłania wiąże się z włączeniem przerwań i ROM-u oraz z normalnym ustawieniem kierunku transmisji przez PIA. To wszystko. Chyba nic trudnego. Uwaga: Powyżej przedstawione są tylko fragmenty programu w asemblerze. Mają one za zadanie wyjaśnić zasadę obróbki sygnałów z pilota. 1000 REM *--------------------------* 1002 REM : Pilot : 1004 REM : autor: Konrad Machowski : 1006 REM : (c) 1993 Tajemnice ATARI : 1008 REM *--------------------------* 1010 DATA ffff0030b133a2008a9dba33e8 1020 DATA d0faa9078552a91c8553a2eba0 1030 DATA 322042c6a26aa033208432a900 1040 DATA 8db8338db633206d32c9acf015 1050 DATA c99cd00ba9028552a92785536c 1060 DATA 0a008db7334c2831a25ea03320 1070 DATA 8432206d320a8db43320ca32a9 1080 DATA 388d02d3a9008d00d3a93c8d02 1090 DATA d3a9d885ffa90085fead00d3c9 1100 DATA fff0f9a000ad00d391fee6fed0 1110 DATA 02e6ffa5ffd0f1aeb433bdbb33 1120 DATA d0034caa304cfe31202a324cf6 1130 DATA 30202a324cc930eeb833adb833 1140 DATA c9fef0f04cc930adb13385fdad 1150 DATA b03385fcaeb433a5fc9dba33a5 1160 DATA fd9dbb33a9d885ffa90085fea0 1170 DATA 00a207a9008db533b1fec9fff0 1180 DATA 07382eb5334ce330182eb533e6 1190 DATA fed002e6ffca10e6adb533f0ac 1200 DATA adb833d09badb53391fc20ba32 1210 DATA a5fdc9bcf01ba5ffd0c3adb633 1220 DATA c90af00aa5fc8db033a5fd8db1 1230 DATA 3320d9324c18304cde314cf131 1240 DATA 4c3e320a8db433aeb433bdba33 1250 DATA 8db233bdbb338db333f0e5ad02 1260 DATA d329fb8d02d3a9ff8d00d3ad02 1270 DATA d309048d02d320ca32a000adb2 1280 DATA 3385fcadb33385fda90085fea9 1290 DATA d885ffa20768a000b1fcf0b348 1300 DATA 682a489017a9fa91fee6fed002 1310 DATA e6ffa5fff010ca10ea20ba324c 1320 DATA 6931a9ff91fe4c7c31a90085fe 1330 DATA a9d885ffa000b1fe8d00d3e6fe 1340 DATA d002e6ffa5ffd0f1a032a2ffca 1350 DATA ad0fd22904d008d0f688d0f14c 1360 DATA 963120d932ad06d329fb8d02d3 1370 DATA a9008d00d3ad02d309048d02d3 1380 DATA 4c183020d932a275a033208432 1390 DATA 2056f520c1324c1830a284a033 1400 DATA 20843220c1324c1830aeb433bd 1410 DATA ba3385fcbdbb3385fda90a8db6 1420 DATA 3320d932a28fa033208432206d 1430 DATA 32c92bd00620ca324cc1304c18 1440 DATA 30a900a891fc20ba32adb83391 1450 DATA fc20ba328cb833604820ba32a0 1460 DATA 00b1fc20ba32a89848a000a207 1470 DATA a9ff91fee6fed002e6ffa5fff0 1480 DATA 0bca10ef68a888d0e44c693168 1490 DATA 4c9631a9ff8dfc02adfc02c9ff 1500 DATA f0f9a2ff8efc02482083f96860 1510 DATA 8ead328cae32a55818690f8db4 1520 DATA 328da532a5591869028db5328d 1530 DATA a632a221a9009da432ca10faa2 1540 DATA 00bdac32c99bf0069db332e810 1550 DATA f360e6fcd002e6fd60a5146914 1560 DATA c514d0fc60a9008d00d48d0ed4 1570 DATA 78a9fe8d01d360a9ff8d01d3ad 1580 DATA 2f028d00d4a9ff8d0ed458607d 1590 DATA 1d1d1d2050696c6f7420436f6d 1600 DATA 616e64657220762e322e30202d 1610 DATA 2d2d2d2d2d2d2d2d2d2d2d2d2d 1620 DATA 2d2d2d2d2d2d2d2dc3d4d2cc2b 1630 DATA d4c1c2202d20696e7075742064 1640 DATA 6174612020a0cbc5d9a0202020 1650 DATA 2d206f75747075742064617461 1660 DATA c3d4d2cc2bc5d3c3202d207175 1670 DATA 697420746f20444f539b296e70 1680 DATA 757400646174610c0030726573 1690 DATA 73006b65790e9b256e64006f66 1700 DATA 006d656d6f72790e9b2b657900 1710 DATA 656d7074790e9b2b6579006275 1720 DATA 73790c00656e746572006e6577 1730 DATA 0064617461001f0008390f2e09 1740 DATA 9bba34e002e1020030 Konrad Machowski
|