• 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

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 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

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

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

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