CEL ĆWICZENIA.
Celem ćwiczenia jest zapoznanie się z budową i zasadą działania portów równoległych oraz zasadami programowania tych portów.
PODSTAWY TEORETYCZNE.
Budowa i zasada działania łącza równoległego
Złącze równoległe jest jednym z najstarszych elementów architektury PC, który (nie 1icząc pewnych kosmetycznych zabiegów) utrzymuje się w niezmienionej formie przez cały szereg lat. Wiele innych elementów architektury przeszło w tym samym okresie czasu wiele burzliwych etapów rozwoju zakończonych powstaniem kolejnych generacji elementów lub wręcz zatwierdzeniem całkowicie nowych standardów.
Modele prostych złącz równoległych były w użyciu na wiele wcześniej zanim pojawiły się mikrokomputery. Złącza takie służyły głównie do przekazywania danych pomiarowych. W momencie opracowywania przez firmę IBM pierwotnych zarysów PC zaistniała potrzeba implementacji prostego złącza równoległego obsługującego drukarkę. W tym celu sięgnięto po uproszczony wariant standardu Centronics posługującego się w pełnej wersji 29 liniami połączeniowymi i poziomami logicznymi TTL. W oryginale obydwa końce przewodu połączeniowego wyposażone były w specjalny 36-końcówkowy wtyk, którego duże rozmiary nie znalazły uznania wśród twórców architektury PC. Zmieniono więc format gniazda po stronie komputera na bardziej kompaktowy typ SUB-D (DB-25) dysponujący 25 końcówkami. Aby zachować wszystkie oryginalne linie sygnałowe protokołu Centronics zredukowana została do ośmiu liczba przewodów masy (w oryginale 12). Posłużenie się gniazdem DB-25 pozwoliło na umieszczenie na tej samej blaszce maskującej znormalizowaną szczelinę obudowy (Slot) dodatkowego gniazda DB-9 stanowiącego wyprowadzenie złącza szeregowego PC. Magistrala danych jest 8-bitowa i składa się z linii DO - D7.
Ponieważ jedynym zadaniem łącza równoległego, wynikającym z przyjętej architektury systemu, była obsługa drukarki nie ma się co dziwić, iż specyfikacja obejmowała wyłącznie transfer jednokierunkowy (od komputera do drukarki). Oprócz 8-bitowej magistrali danych złącze równoległe wyposażone jest w cztery linie Sterujące (—STR,—ALF, —INI, —DSL). Drukarka mogła co prawda zgłaszać pewne sytuacje nienormalne (jak np. brak papieru) ale o transmisji danych w odwrotnym kierunku nie było mowy. Sprytni programiści szybko jednak odkryli możliwość takiej transmisji (tryb półbajtowy). Oryginalna specyfikacja portu równoległego definiuje 5 linii statusowych (~ERR, SEL, PAP, ~ACK, BSY), z których część służy realizacji protokołu Centronics, a część pozwala na sygna1izację pewnych stanów wyjątkowych. W omawianym trybie cztery spośród tych linii wykorzystuje się do transmisji w kierunku odwrotnym. Dwa następujące po sobie półbajtowe cykle pozwalają na organizację wymiany danych w tempie około 100 kB/s. Zachęciło to szereg firm do wypuszczenia na rynek kart sieciowych i kontrolerów SCSI opierających swe działanie na tak przerobionym złączu równoległym.
W złącze równoległe wyposażano przez długi czas wszystkie, przeznaczone do współpracy z PC drukarki. Nie jest to oczywiście jedyna możliwość bowiem drukarka może również współpracować ze złączem szeregowym. Na rynku obecne są modele wyposażone bądź to w oba rodzaje wspomnianych złącz, bądź posiadające moż1iwość wymiany modułu obsługującego łącze (interfejsu). Port szeregowy, jakkolwiek wolniejszy od równoległego, pozwala na pokonanie dużo większych dystansów dzielących komputer od drukarki, co w niektórych zastosowaniach ma kluczowe znaczenie. Specyfikacja łącza szeregowego dopuszcza transmisję danych na odległość do 200 m natomiast łącze równoległe jedynie do około 5 m.
Współczesne drukarki wykraczają poza rolę biernego odbiorcy poleceń i danych, dysponują bowiem zdolnością dwustronnej komunikacji z obsługującym je komputerem. Możliwości takie wymagają jednak korzystania z portów równoległych, które zostały rozbudowane o dodatkowe funkcje, nie ujęte w standardzie oryginalnego IBM-PC.
Współczesny komputer PC może wyprowadzać na zewnątrz kilka złącz równoległych. Maksymalna liczba takich łącz, a tym samym akceptowanych przez BIOS i DOS drukarek, wynosi cztery. System operacyjny identyfikuje je poprzez oznaczenia LPT1, LPT2, LPT3 i LPT4. Każde z tych łącz musi być zatwierdzone przez BIOS w trakcie ładowania systemu. Informacja o liczbie łącz równoległych w systemie przechowywana jest w obszarze danych BIOS-u, w bitach 7. i 6. bajtu o adresie 0040:0011h. Niektóre starsze odmiany BIOS-u ignorują łącza LPT3 i LPT4.
Poruszając się na poziomie systemu operacyjnego DOS możemy odwoływać się do drukarek przez symbole LPT1 - LPT4. Synonimem LPT1 jest PRN - domyślna drukarka systemu. Symbole te stanowią oznaczenia urządzeń i nie jest powiedziane, że z danym łączem LPTn musi współpracować drukarka. Jedynie programy obsługujące przerwania sprzętowe pochodzące od tych łącz (zwykle IRQ5 I IRQ7) ukierunkowane są na specyfikę obsługi drukarki z łączem równoległym.
Specyfikacja portu równoległego PC ujęta została w standardzie IEEE-1284 wydanym po raz pierwszy w roku 1994. Standard ten definiuje 5 trybów pracy:
tryb kompatybilny (Compatibility Mode). Podstawowy tryb nazywany też trybem Centronics od swego pierwowzoru. Transmisja jednokierunkowa, prędkość maksymalna może osiągać 200 kB/s, chociaż praktycznie rzadko kiedy przewyższa wartość 150kB/s.
tryb półbajtowy (Nibble Mode). Pozwala nie tylko na wysyłanie ale i na odbiór danych poprzez 4 linie wejściowe. Oferuje kanał zwrotny o szerokości maksymalnej około 1 00 kB/s.
tryb bajtowy PS/2 (Byte Mode). Tryb ten korzysta ze zmodyfikowanego (nie na1eżącego do standardu) dwukierunkowego portu danych. Modyfikacja taka musi być zaimplementowana przez producenta sprzętu i nie pomogą. tu żadne sztuczki programowe. Utworzony w ten sposób kanał zwrotny oferuje pasmo maksymalne do 200 kB/s. Szerokość kanału podstawowego nie ulega zmianie (ok. 200 kB/s). Aktywacja kanału zwrotnego odbywa się za pośrednictwem bitu 5 rejestru sterującego.
tryb EPP (Enhanced Parallel Port). Kanał dwukierunkowy o szerokości maksymalnej 2,3 MB/s. Mimo tego w praktyce transfer rzadko przewyższa wartość 1MB/s. Tryb nie jest na ogół stosowany do obsługi drukarek a raczej dla potrzeb skanerów, interfejsów pamięci masowej i kart sieciowych.
tryb ECP (Extended Capabilities Port). Tryb udostępnia kanał dwukierunkowy o parametrach podobnych do EPP. W systemie tym korzysta się z dodatkowych buforów oraz kanału DMA. Wykorzystywany jest głównie do obsługi profesjonalnych drukarek i urządzeń kompleksowych takich jak Fax-Skaner-Drukarka.
Pierwsze trzy tryby opierają się w swej przeważającej części na pierwotnej maszynie określanej jako SPP (Standard Parallel Port). Dwa pozostałe wymagają kompletnej modyfikacji sprzętu. Całkowicie odmienne są protokoły uzgadniające (Handshake) a i uzyskiwane prędkości transmisji leżą w całkiem innym zakresie. Wszystkie kolejne standardy są zgodne w dół. Należy jednak pamiętać, iż tryby bajtowy i półbajtowy nie były implementowane na wszystkich kartach i kontrolerach.
Realizacja portu równoległego w ramach architektury PC
Ewolucja złącza równoległego dotyczyła w sporym stopniu jego fizycznej lokalizacji w ramach architektury PC. Przez długi czas wchodziło ono w skład karty grafiki monochromatycznej jako element układu scalonego LSI zawierającego cały sterownik. Adres bazowy złącza wynosił w takim wypadku 0x3BCh.
W momencie upowszechnienia grafiki kolorowej port równoległy dokonał pierwszej przeprowadzki na samodzielną kartę rozszerzającą. Karty takie były zawsze 8-bitowe, nawet w standardzie EISA. Dekodowały one linie adresowe A0—A9 oraz sygnały ~IOR i ~IOW magistrali zewnętrznej, rozpoznając w ten sposób odwołania procesora do swych rejestrów. Drugim z możliwych wariantów było wykonanie portu równoległego jako elementu składowego uniwersalnych kart 1/0 (Multi I/O) zawierających również inne komponenty, takie jak kontrolery dysków oraz porty szeregowe.
Konfiguracja numeru portu LPT1 - 4 (odpowiada określeniu adresu bazowego) odbywała się do niedawna za pomocą mikroprzełączników i zwór konfiguracyjnych. W ten sam sposób przebiegał przydział linii przerwań (standardowo IRQ7, alternatywnie IRQ5).
W miarę wzrostu stopnia integracji układów scalonych płyty głównej (Chip-Set) nastąpiło wchłonięcie portu równoległego przy zachowaniu całkowitej zgodności programowej z oryginałem. Nie jest już również konieczne poszukiwanie zwór konfiguracyjnych, bowiem stosowne opcje zawarte są w programie CMOS-SETUP.
Jeden z elementów pierwotnie zdefiniowanego złącza równoległego przetrwał wszystkie te zmiany w nienaruszonej formie. Kompletny zestaw sygnałów wyjściowych i wejściowych portu skupiony jest nadal w 25-końcówkowym gnieździe typu DB-25 ujętym w normie IEEE-1284-A. Sposób rozmieszczenia linii złącza przedstawia rysunek poniżej.
Rozmieszczenie sygnałów w 25 - końcówkowym gnieździe łącza równoległego
Połączenie pomiędzy komputerem a drukarką realizowane jest przewodem, który od strony komputera wyposażony jest we wtyk DB-25, a od strony drukarki w 36-końcówkowe złącze typu Centronics (w/g specyfikacji IEEE-1284-B). Od pewnego czasu na rynku egzystuje również nowa, kompaktowa forma wtyku ujęta w normie IEEE-1284-C. Wszystkie trzy typy wtyków oraz opis ważniejszych sygnałów przedstawione zostały poniżej.
Trzy typy wtyczek okablowania portu równoległego
D0-D7 - magistrala danych, w systemie standardowym wyłącznie jednokierunkowa,
~STR (Strobe) - niski poziom logiczny tej linii nakazuje drukarce odebranie bajtu z linii danych D0-D7. Minimalna szerokość impulsu wynosi 0,5us.
~ACK (Acknowledge) - niskim poziomem logicznym na tej linii drukarka potwierdza odebranie bajtu i gotowości do przyjęcia następnego.
BSY (Busy) - wysoki poziom logiczny tego sygnału może oznaczać jeden z następujących stanów: off-line, drukarka odbiera znak, trwa inicjalizacja drukarki.
PAP (Paper Out) - wysoki poziom logiczny na tej linii sygnalizuje wyczerpanie się papieru.
SEL (Select) - wysoki poziom logiczny oznacza, że drukarka jest w stanie on-line.
~ALF (Auto Line Feed) - niski poziom logiczny na tej linii poleca drukarce automatyczne dołączanie znaków wysuwu wiersza po odebraniu znaku powrotu karetki.
~ERR (Error) - przyczyną niskiego poziomu na tej linii może być: brak papieru, przejście drukarki w stan off-line.
~INI (Initialization) - niski poziom logiczny na tej linii uruchamia w pewnych typach drukarek procedurę inicjalizującą.
~DSL (Device Select) - niski poziom logiczny powoduje wybranie drukarki.
Dostęp do łącza równoległego poprzez funkcje BIOS
Funkcja 00h
Działanie:
Funkcja ta wysyła jeden znak do dowolnego z zainstalowanych w systemie łącz równoległych.
Parametry wejściowe:
AH 00h;
AL. kod ASCII znaku;
DX numer łącza:
0 = LPT1,
1 = LPT2,
2 = LPT3,
4 = LPT4.
Wartości zwracane:
AH bajt statusowy.
Przykład:
mov ah,00h ; numer funkcji
mov al,`D ; znak “D”
mov dx,03h ; port LPT4
int 17h ; wyprowadź znak `D” na drukarkę LPT4
Funkcja 01h
Działanie:
Funkcja 01h przeprowadza tzw. sprzętową inicjalizację drukarki i łącza (ang. hardware reset). Linia ~INI jest aktywowana poprzez wystawienie na niej zera logicznego. Podobny efekt uzyskać można wysyłając tzw. sekwencję inicja1izującą (ang. software reset), na ogół <ESC>'@', przy czym korzystamy wówczas ze wszystkich 8 linii danych i linii sterujących. Należy jednak pamiętać, że nie każda drukarka reaguje na sygnał ~INI.
Parametry wejściowe:
AH 01h;
DX numer łącza:
0 = LPT1,
1 = LPT2,
2 = LPT3,
4 = LPT4.
Wartości zwracane:
AH bajt statusowy.
Przykład:
mov ah,01h ; numer funkcji
mov dx,00h ; LPT1
int 17h ;inicjalizuj drukarkę dołączoną do portu LPT1
Funkcja 02h
Działanie:
Funkcja ta zwraca w rejestrze AH bajt statusowy, odwzorowujący stan łącza i drukarki. Nie są wykonywane żadne inne operacje.
Parametry wejściowe:
AH 02h;
DX numer łącza:
0 = LPTI,
1 = LPT2,
2 = LPT3,
4 = LPT4.
Wartości zwracane:
AH bajt statusowy.
Przykład:
mov ah,02h ; numer funkcji
mov dx,01h ; LPT2
mt 17h ; bajt statusowy znajdzie się w AH
Wymieniany w opisie funkcji 00h, 01h i 02h bajt statusowy zawiera następujące dane:
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
bit 7 Stan linii BSY:
0 - drukarka wolna,
1 - drukarka zajęta.
bit 6 Stan linii ~ACK:
0 - łącze oczekuje na sygnał potwierdzenia,
1 - nadszedł sygnał potwierdzenia.
bit 5 Stan linii PAP:
1 - w drukarce brak papieru.
Bit 4 Stan linii SEL:
0 - drukarka w stanie off-line,
1 - drukarka w stanie on-line.
bit 3 Stan linii ERR:
1 - drukarka zajęta, off-line lub inny błąd, na przykład drukarka wyłączona
bity 2 - 1 Zarezerwowane (zwykle równe 1).
bit 0 Przekroczenie limitu czasu (ang. time-out) w oczekiwaniu na reakcję drukarki.
Maksymalne czasy oczekiwania systemu na reakcję drukarki definiowane są przez BIOS i przechowywane w jego obszarze danych.
PRZEBIEG ĆWICZENIA.
Budowa kabla do transmisji równoległej
Transmisję równoległą w najprostszy sposób można zrealizować wykorzystując pięć najmłodszych linii dla portu danych oraz pięć linii (dla bitów) portu stanu drukarki. Takie warunki dyktowane są mianowicie przez ograniczenie jakim jest to, że port równoległy posiada w swoich standardowych trybach pracy jedynie pięć linii wejściowych przez co równocześnie możemy wprowadzić pięć bitów, korzystając z tych możliwości najlepiej jest przesyłać bajty podzielone na pół, a piąty bit traktować jak bit strobu (taktujący) transmisji. Taki sposób transmisji jest często nazywany transmisja w trybie Nibble (połówkami). Zmiany na tej linii mówią, że na porcie znajduje się dana do odczytania. Jednocześnie wykorzystanie piątej linii na transmisję byłoby dosyć kłopotliwe ponieważ jest ona na wejściu negowana tak więc podając jedynkę otrzymujemy zero i na odwrót. Ta właściwość wcale nie przeszkadza w wykorzystaniu tej linii jako linii taktującej. Rejestry danych portu równoległego są to rejestry zatrzaskowe tj. Po wpisaniu (zatrzaśnięciu) wartości jest ona stale na porcie do momentu wpisania (zatrzaśnięcia) nowej danej.
Transmisja równoległa jest realizowana za pośrednictwem odpowiednio przerobionego kabla równoległego. Każdy, kto posiada lutownicę i trochę wprawy może sobie taki kabel zrobić przerabiając zwyczajny kabel jaki możemy kupić w sklepie. Należy w nim połączyć ze sobą następujące piny:
Schemat kabla do transmisji równoległej
Z powyższego rysunku wynika, że po stronie nadawczej jak i odbiorczej każdy z komputerów ma do dyspozycji 5 linii.
Adres |
Rozmiar |
Znaczenie |
Adres bazowy |
0040:0008h |
słowo |
Adres bazowy złącza LPT1 |
LPT1 378h (3BCh) |
0040 000Ah |
słowo |
Adres bazowy złącza LPT1 |
LPT2 278h (378h) |
0040:000Ch |
słowo |
Adres bazowy złącza LPT1 |
LPT3 3BCh (278h) |
0040:000Eh |
słowo |
Adres bazowy złącza LPT1 |
LPT4 2BCh (2bch) |
Według oryginalnego projektu, linie kontrolne służą do sprzęgania i kontroli sygnałów pomiędzy PC i drukarką. Linie stanu są używane do sygnałów sterujących takich jak wskaźniki stanów dla takich rzeczy jak papier w drukarce, zajętość oraz błędy połączenia lub drukarki. Linie danych dostarczają dane z PC do drukarki tylko w kierunku PC=>drukarka, w portach umożliwiających transmisję dwukierunkową ustawienie odpowiedniego bitu powoduje, że rejestry danych mogą przyjmować dane z zewnątrz.
Port równoległy posiada stałe miejsca w przestrzeni adresowej komputera. Posiada on standardowo 3 rejestry adresowane od jego adresu bazowego. Nowsze rozwiązania portu równoległego, wspierające rozszerzone tryby standardu 1284, używają od 8 do 16 rejestrów adresowanych względem adresów bazowych i są one relokowalne ze względów na standard Plug and Play spełniany przez port równoległy.
Połączenie dwóch komputerów kablem równoległym
Kabel do transmisji równoległej |
|||
25-pinowe złącze typu D męskie |
|||
|
|
||
komputer 1 |
komputer 2 |
||
bit danych 0 |
2 |
15 |
błąd |
bit danych 1 |
3 |
13 |
wybór |
bit danych 2 |
4 |
12 |
brak papieru |
bit danych 3 |
5 |
10 |
potwierdzenie |
bit danych 4 |
6 |
11 |
zajęty |
potwierdzenie |
10 |
5 |
bit danych 3 |
zajęty |
11 |
6 |
bit danych 4 |
brak papieru |
12 |
4 |
bit danych 2 |
wybór |
13 |
3 |
bit danych 1 |
błąd |
15 |
2 |
bit danych 0 |
reset |
16 |
16 |
reset |
wybór |
17 |
17 |
wybór |
masa |
25 |
25 |
masa |
Schemat połączenia równoległego dwóch komputerów
Korzystając z tych samych mechanizmów programowych co w przypadku połączenia szeregowego, do transferu danych można użyć kabla równoległego. Należy zdefiniować port jako dwukierunkowy, gdyż często standardowo komunikacja odbywa się przez port w jedną stronę. Szybkość transferu przez złącze równoległe wynosi około 70 Kb/s. Połączenie kablem wykorzystujące port ECP/EPP pozwala uzyskać transfer danych rzędu 500 Kb/s.
Transmisja równoległa za pośrednictwem programu Norton Commander
Norton Commander umożliwia dostęp do zasobów dyskowych drugiego komputera. Można skopiować przenieść lub usunąć dowolny plik/katalog. Widoczne są wszystkie dyski komputera pracującego w trybie biernym.
Na obu komputerach wybieramy opcję połącz.
Informujemy komputer, do którego portu podłączony jest kabel. Wybieramy tryb pracy (na jednym komputerze aktywny, na drugim bierny).
Pojawia się okienko informujące o oczekiwaniu na połączenie..., a po nim kolejno na komputerze "aktywny":
na komputerze "bierny":
Jeśli po oczekiwaniu na połączenie pojawi się poniższy komunikat, wtedy trzeba sprawdzić kable, zresetować komputer, wypróbować inne porty (do wyboru mamy zazwyczaj 2), przetestować wszystkie warianty, sprawdzić przy pomocy np. starej myszki działanie portów, sprawdzić poprawność połączeń śledzia z kartą I/O (albo płytą główną), zobaczyć, co na temat LPT ma do powiedzenia jakiś program diagnostyczny np. MSD itd.. Co prawda NC jakoś działa pod Windows, ale zalecane jest uruchamianie go pod DOS-em - w czasie startu systemu: F8 i "wiersz poleceń" (w przypadku takich programów jak NC, Windows ma swoje kaprysy i nie zawsze pozwala manipulować portami LPT).
Układ uniwersalnego, równoległego portu wejścia/wyjścia 8255
Układ 8255 jest programowalnym równoległym portem wejścia/wyjścia. Jego polski odpowiednik to MCY7855, zgodny w zakresie topologii wyprowadzeń, parametrów elektrycznych jak i czasowych. Na poniższym rysunku przedstawiono ten układ wraz z nazwami sygnałów.
Topologia wyprowadzeń układu 8255 (MCY 7855)
Pełne wykorzystanie systemu mikroprocesorowego realizuje się w wyniku połączenia z otoczeniem (urządzeniami obsługi systemu, innymi systemami mikroprocesorowymi). Układy, które pośredniczą między magistralą systemu mikroprocesorowego, a jego otoczeniem nazywają się układami wej./wyj. lub układami sprzęgającymi (interfejs).
Podstawową funkcją tych układów jest przekazywanie informacji na zewnątrz systemu oraz pobieranie informacji i przesyłanie ich do mikrokomputera. Układy te zawierają:
układy wej./wyj. równoległe, z których i do których informacja może być przekazywana z urządzeń zewnętrznych po ośmiu lub więcej szynach równoległych,
układy wej./wyj. szeregowe, przekazują lub pobierają informacje po jednej lub kilku liniach,
układy programowanych zegarów - liczników czasu rzeczywistego, odmierzających czas, generujących różnorodne przebiegi lub zliczających impulsy generowane przez urządzenia zewnętrzne,
układy specjalizowane, przeznaczone do obsługi określonego typu urządzenia np. klawiatury, monitora (wyświetlacza).
Układ 8255 jest uniwersalnym portem wej./wyj. Zerowanie tego układu powoduje ustawienie wszystkich trzech 8-bitowych portów wej./wyj. (PA, PB, PC) jako portów wejściowych. W zależności od potrzeb możemy programowo ustawić port jako wyjściowy lub wejściowy. Dokonać tego możemy programowo wpisując odpowiednie ośmiobitowe słowo sterujące do specjalnego rejestru wewnątrz układu 8255. Jeden z nich zajmuje się komunikacją wyświetlacza i klawiatury z systemem. Umożliwia też połączenie systemu z wejściem magnetofonowym. Przez złącze to możemy przesyłać i pobierać dane z magnetofonu za pomocą odpowiednich bloków (zapisu i odczytu).
Schemat blokowy układu MCY 7855 (8255)
Drugi układ 8255 zajmuje się obsługą złącza wyjściowego. Do złącza tego za pomocą interfejsu możemy podłączyć różne aplikacje. Układ 8255 może pracować w trzech różnych trybach:
tryb 0, w którym dostępne są dwa ośmiobitowe (PA, PB) porty wej./wyj. oraz dwa czterobitowe (PC 30, PC 74) porty wej./wyj (rys.1),
tryb 1, gdzie dostępne są tylko dwa ośmiobitowe porty wej./wyj (rys.2),
tryb 2, w którym może pracować wyłącznie port PA. Za pomocą tego portu przesyłane są informacje dwukierunkowo, między mikroprocesorem a urządzeniem zewnętrznym (rys.3).
Rys.1. Sposób pracy układu 8255 w trybie 0
Rys.2. Sposób pracy układu 8255 w trybie 1
Rys.3. Sposób pracy układu 8255 w trybie 2
Przykładowe programy
Program wysyła znak za pośrednictwem łącza równoległego.
program lacze_rown;
uses dos,crt;
procedure wyslij(znak:byte);
var
regs:registers;
begin
regs.ah:.=$00;
regs.al:=znak;
regs.dx:=$00;
intr($17,regs);
end;
procedure inicjalizacja;
var
regs:registers;
begin
regs.ah:=$01;
regs.dx:=$00;
intr($17,regs);
end;
begin
inicjalizacja;
wyslij(ord('B'));
readln;
end.
13