• Nie Znaleziono Wyników

Laboratorium telekomunikacji Zadanie 1

N/A
N/A
Protected

Academic year: 2021

Share "Laboratorium telekomunikacji Zadanie 1"

Copied!
3
0
0

Pełen tekst

(1)

150875

numer indeksu

Grzegorz Graczyk

imie i nazwisko

151021

numer indeksu

Paweł Tarasiuk

imie i nazwisko

Data 2010-03-03

Kierunek Informatyka Rok akademicki 2009/10

Semestr 4

Grupa dziekańska 2

Laboratorium telekomunikacji

Zadanie 1

(2)

Wykorzystane narzędzia

Urządzenie ADAM-4500 działa w oparciu system zgodny z 16-bitowym systemem DOS.

Naszym założeniem było napisanie programu w języku C, optymalnie - zgodnym ze standar- dem ANSI C. Niewiele dostępnych obecnie narzędzi pozwala na tworzenie właściwych dla tego systemu binariów. Przystosowane do tego narzędzia dawnych wersji Turbo C++ nie są już w sprzedaży. Projekt DJGPP udostępnia jedynie łatę na bardzo przestarzałą wersję gcc, którą trudno jest w ogóle zbudować, ze względu na trudność w zdobyciu zgodnych z nią wersji bi- bliotek i wykonania odpowiedniej cross-kompilacji. Jednakże kompilator WATCOM dostępny obecnie jako Open Watcom na warunkach open-source jest doskonale przystosowany do budo- wania 16-bitowych binariów systemu DOS za pomocą nowoczesnych systemów operacyjnych.

Ponadto, jest to kompilator nowoczesny, kompilujący kod napisany w sposób podobny jak dla nowych wersji kompilatora GNU bądź kompilatora Intela. Użyty został zatem zestaw narzędzi Open Watcom 1.8.

Kod źródłowy programu

#i n c l u d e < s t d l i b . h>

#i n c l u d e < s t d i o . h>

#i n c l u d e < s t r i n g . h>

#i n c l u d e <t i m e . h>

#i n c l u d e <c o n i o . h>

#i n c l u d e <d o s . h>

/∗ d e f i n i c j e k o l o r o w ∗/

#d e f i n e RED 0 x08

#d e f i n e YELLOW 0 x04

#d e f i n e GREEN 0 x02

#d e f i n e NONE 0 x00

/∗ s t a n d a r d C n i e z a w i e r a t y p u l o g i c z n e g o − d l a e s t e t y k i k o d u , o k r e s l a m y g o ∗/

#d e f i n e b o o l i n t

#d e f i n e t r u e −1

#d e f i n e f a l s e 0

/∗ s t a n d a r d o w e a d r e s y b a z o w e p o r t o w COM ∗/

#d e f i n e COM1 0 x3F8

#d e f i n e COM2 0 x2F8

/∗ w s p o l n y b u f o r do t y m c z a s o w y c h o p e r a c j i na c i a g a c h z n a k o w ∗/

char b u f [ 6 4 ] ;

/∗ k o n w e r s j a z a p i s u k o l o r o w d l a u r z a d z e n i a Adam po d r u g i e j s t r o n i e s a l i ∗/

i n t c o n v e r t c o l o r ( i n t c o l o r ) {

return ( ( c o l o r & RED) >> 3 ) + ( ( c o l o r & YELLOW) >> 1 ) + ( ( c o l o r & GREEN) << 1 ) ; }

/∗ s p r a w d z s t a n p o r t u s z e r e g o w e g o ∗/

b o o l c h e c k p o r t ( i n t p o r t ) { return i n p ( p o r t + 5 ) & 1 ; }

/∗ w y s l i j c i a g z n a k o w ∗/

void o u t p s ( i n t p o r t , char ∗ c ) { while ( ∗ c ) {

o u t p ( p o r t , ∗ c ++);

} }

/∗ z a i n i c j u j k o m u n i k a c j e i u s t a l j e j p a r a m e t r y ∗/

void i n i t ( i n t p o r t ) {

o u t p ( p o r t + 2 , 0 x c 9 ) ; /∗ w l a c z e n i e FIFO ∗/

o u t p ( p o r t + 3 , 0 x80 ) ; /∗ DLAB : 1 ∗/

o u t p ( p o r t , 0 x 0 c ) ;

o u t p ( p o r t + 1 , 0 x00 ) ; /∗ s z y b k o s c : 9 6 0 0 ∗/

o u t p ( p o r t + 3 , 0 x03 ) ; /∗ 8 b i t o w d a n y c h , 1 b i t s t o p u , p a r z y s t o s c : w y l a c z o n a ∗/

o u t p ( p o r t + 1 , 0 x00 ) ; /∗ w y l a c z e n i e p r z e r w a n ∗/

}

/∗ w y s l i j p o l e c e n i e u s t a w i e n i a s t a n u d i o d ∗/

void s e n d ( i n t p o r t , i n t c o l o r ) { s p r i n t f ( b u f , ” #0100%.2X\ r ” , c o l o r ) ; o u t p s ( p o r t , b u f ) ;

}

/∗ z a k o n c z k o m u n i k a c j e ∗/

void f i n i s h ( i n t p o r t ) { s e n d ( p o r t , NONE ) ; }

/∗ o d b i e r z i n f o r m a c j e z w r o t n a i p o d a j j e j p o p r a w n o s c ∗/

PSK: Grzegorz Graczyk i Paweł Tarasiuk 2 / 3

(3)

b o o l r e c v ( i n t p o r t , i n t s e c ) { i n t i ;

c l o c k t w a i t = c l o c k ( ) + CLK TCK∗ s e c , now ; f o r ( i = 0 ; w a i t > c l o c k ( ) ; i = ( i + 1 ) % 6 4 ) {

p r i n t f ( ”%l d %l d \n ” , w a i t , c l o c k ( ) ) ; s l e e p ( 1 ) ;

i f ( c h e c k p o r t ( p o r t ) ) { b u f [ i ] = i n p ( p o r t ) ; i f ( b u f [ i ] == 1 3 )

break ; }

}

i f ( w a i t > c l o c k ( ) ) {

s l e e p ( ( w a i t − c l o c k ( ) ) / (CLK TCK ) ) ; }

b u f [ i ] = 0 ;

i f ( s t r c m p ( b u f , ”>” ) == 0 ) { return t r u e ;

}

return f a l s e ; }

/∗ o p i s ” a n i m a c j i ” m i g a n i a d i o d a m i ∗/

const i n t num [ 3 ] = { 5 , 4 , 2 } ;

const i n t v a l u e s [ 3 ] [ 5 ] = { { RED+GREEN, YELLOW + GREEN, RED+YELLOW, RED+YELLOW+GREEN, NONE} , { RED, RED+YELLOW, GREEN, YELLOW} , { NONE, YELLOW } } ;

const i n t t i m e s [ 3 ] [ 5 ] = { { 2 , 2 , 2 , 2 , 2 } , { 5 , 2 , 5 , 2 } , { 2 , 2 } } ;

#d e f i n e MAX LOOP 4

i n t main ( i n t a r g c , char ∗ a r g v [ ] ) { i n t i = 0 ;

enum {DEMO = 0 , TRAFFIC = 1 , ERROR = 2} mode = DEMO;

i n t l o o p = −4;

b o o l d o l o o p = t r u e ; i n t p o r t = COM2;

b o o l c o n v e r t = f a l s e ;

i f ( a r g c > 1 && s t r c m p ( a r g v [ 1 ] , ” 1 ” ) == 0 ) { p o r t = COM1;

}

i f ( a r g c > 2 && s t r c m p ( a r g v [ 2 ] , ” 2 ” ) == 0 ) { c o n v e r t = t r u e ;

}

i n i t ( p o r t ) ;

while ( d o l o o p ) {

/∗ m o z l i w o s c z a k o n c z e n i a p r a c y p r o g r a m u p o p r z e z w c i s n i e c i e k l a w i s z a ESC ∗/

while ( k b h i t ( ) ) { i f ( g e t c h ( ) == 2 7 ) {

d o l o o p = f a l s e ; }

}

/∗ u s t a w o d p o w i e d n i k o l o r ∗/

s e n d ( p o r t , c o n v e r t ? c o n v e r t c o l o r ( v a l u e s [ mode ] [ i ] ) : v a l u e s [ mode ] [ i ] ) ;

/∗ o d c z y t a j o d p o w i e d z ∗/

i f ( ! r e c v ( p o r t , t i m e s [ mode ] [ i ] ) ) {

p u t s ( ” \” S e r v e r \” d i d n ’ t r e s p o n s e w i t h \”>\\n \ ” . E x i t i n g . . . ” ) ; f i n i s h ( p o r t ) ;

return EXIT FAILURE ; }

i = ( i + 1 ) % num [ mode ] ;

/∗ z m i a n a t r y b u p r a c y ∗/

i f ( i == 0 ) {

i f ( mode == DEMO) { mode = TRAFFIC ; }

i f ( mode == TRAFFIC) {

/∗ z a p r o g r a m o w a l i s m y b a r d z o r e a l i s t y c z n a s y g n a l i z a c j e s w i e t l n a , t a k a j a k a j e s t na p o l s k i c h d r o g a c h ; −) ∗/

i f ( r a n d ( ) % MAX LOOP < l o o p ) { mode = ERROR;

} } l o o p ++;

} }

f i n i s h ( p o r t ) ; return EXIT SUCCESS ; }

PSK: Grzegorz Graczyk i Paweł Tarasiuk 3 / 3

Cytaty

Powiązane dokumenty

The Scripture and patristic writings that are the foundation of the Christian tradition define a vast area in which there are very different models of man’s relationship

In addition, the technique is compared to VIC+ (reconstruction based on instantaneous particle tracking velocity and its time derivative) and tomographic PIV (analysis

Mo¿na optymistycznie przypuszczaæ, ¿e zabrak³o czasu dla dalszego rozwoju prac nad bardziej dog³êbnym poznaniem budowy geologicznej ziem pol- skich i jej bogactw oraz do

The inventory is organised by increasing catalogue numbers, starting from the manuscripts obtained from the Library of the Zamoyski Family Fee Tail, through other items with a fixed

Badania weryfikacyjno-ratownicze, przeprowadzone w dniach od 14 do 29 września, przez Błażeja Muzolfa (Muzeum Archeologiczne i Etnograficzne w Łodzi).. Finansowane

Współczesny kryzys małżeństwa rodziny i występujące w niej sytuacje kry- zysowe, których symptomy stają się coraz bardziej wyraźne, mają bezpośrednie przełożenie na

Również sama zasada koncentracji materiału procesowego nie jest jednolicie ujmo- wana w polskiej literaturze procesu cywilnego. Z jednej strony podkreśla się, że nakazuje

Jeżeli po stronie związkowej brak jest wspólnego, jednolitego stanowiska, praco- dawca może wprowadzić samodzielnie w życie zaproponowany przez siebie akt prawny, po