Beşiktaş Forum  ( 1903 - 2013 ) Taraftarın Sesi


Geri git   Beşiktaş Forum ( 1903 - 2013 ) Taraftarın Sesi > Eğitim Öğretim > Dersler - Ödevler - Tezler - Konular > Elektronik & Bilgisayar

Cevapla
 
LinkBack Seçenekler Stil
Alt 06-09-2008, 13:00   #1
ยŦยк
 
Constantin - ait Kullanıcı Resmi (Avatar)
 
Paralel Portlar

BİLGİSAYAR TABANLI VERİ TOPLAMA
| PARALEL PORTLAR
Paralel Portun Kullanım Amacı ve Üstünlükleri

Bir bilgisayar tek başına bilgi toplama ve değerlendirmek için kullanılabilir. Örneğin herhangi bir cihazın veya cihazın bulunduğu ortamın sıcaklığı zamanın fonksiyonu olarak kaydedilmek istenebilir. Ancak algılayıcılardan elde edilen bilgi bir arayüz kartı ile işlendikten sonra bilgisayara iletilmesi gerekmektedir. Peki işlemci dışardan gelen bu ham bilgileri kimin aracılığı ile alacaktır? Seçeneklerden birisi paralel porttur, diğer alternatiflere de ilerleyen konularda değinilecektir.
Paralel portun kullanımı bize ne gibi üstünlükler sunar?
Günümüzde bilgisayarla bilgi iletişimi anakarta takılan PCI, AGP (ekran kartları için) ve SCSI kartları ile gerçekleştirilmektedir. Daha eski model kişisel bilgisayarlarda ISA olarak bilinen kartlar da kullanılmakta idi. Ancak bu tip kartlarla çalışmak beraberinde bir çok dezavantaj da getirmektedir. Bu dezavantajları sırasıyla açıklayalım:

Bilgisayar anakartına ait yuvalara (slot) takılan kartların laboratuar ortamında sökülüp takılmaları oldukça büyük sorunlara neden olabilir. Hatta bazı durumlarda tüm bilgisayar sisteminin zarar görmesi olasıdır.
Tüm bilgisayar anakartları eşit sayıda yuvaya sahip değildir ve üstelik dizüstü bilgisayarlarda bu tip kartların oturacağı bir yuva (PCMCIA hariç) söz konusu değildir.En çok öne çıkan üstünlükleri ise:
<LI class=madde-imi-simge>Çoğu uygulamada basit ve ekonomik çözümler yeterli gelmekte ve bu yüzden tercih edilmektedirler.
Paralel port giriş ve çıkışları TTL (5v-0v) seviyesinde olduğu için fazladan gerilim dönüştürme entegrelerine ihtiyaç duymadan çoğu elektronik sistemle haberleşebilir.
Paralel port üstte açıklanan bazı dezavantajlardan dolayı aranan en iyi alternatiflerden birisidir. Paralel port tüm PC sistemlerde standarttır ve mevcuttur. Her ne kadar çeşitli seri arabirimlerin (USB, Firewire) yaygılaşmasıyla önemini biraz kaybetse de sahip olduğu basitlik ve ekonomiklik bu portun uzun süreler PC standardında mevcut olacağını göstermektedir.
http://www.wekatronik.com/resimler2/pport1.jpg


- Bir PC ve paralel portun PC üzerindeki konumu -

Yukarıda bir PC kasasının arka plandan görüntüsü ve paralel portun kasa arkasındaki konumu gösterilmektedir. Şekilden görüldüğü gibi paralel port 25 adet dişi pine sahiptir ve DB-25F olarak adlandırılır. Bu porta takılacak cihazın yine 25 pine sahip olması ancak erkek pinlere sahip olması gerekir. Her bir pinin hangi işleve sahip olduğu ilerleyen kısımlarda belirtilecektir.
Paralel port, endüstride farklı isimlerle anılır: paralel port, paralel yazıcı adaptörü, Centronics adaptörü, Centronics port. Aslında paralel port kavramı bilgileri paralel olarak ileten bir iletişim mekanizmasını tanımlar. Ancak paralel port deyimi kişisel bilgisayarlara yazıcıların bağlantısını sağlayan arabirim olarak anlaşılmaktadır. Örneğin PC içerisindeki IDE konnektörü ve kablosu da paralel bir porttur.
Paralel portun tasarım amacının bilinmesi onun yapısını daha kolay anlamamıza yardım edecektir. Aslında paralel port bilgisayardan gönderilen verilerin bir yazıcıya aktarılması için tasarlanan bir arayüzdür. Bilgisayar ile yazıcı arasındaki veri iletimini sağlayacak bir arayüz tasarlanırken aşağıdaki en önemli üç unsur göz önünde bulundurulmuştur.

<LI class=madde-imi-simge>Bir baytlık bir bilgi (8-bit data) bilgisayardan yazıcıya paralel olarak gönderilmelidir.

<LI class=madde-imi-simge>Bilgisayar, 8-bit bilginin gönderilmek üzere beklediğini yazıcıya bildirmek zorundadır ve bu sinyal STROBE olarak bilinir. STROBE uyarı, ikaz anlamında kullanılabilir.
Bilgisayar, yazıcıdan veriyi aldığına dair bir teyit mesajı da laması gereklidir ve bu sinyal ACKNOWLEDGE (ACK) olarak adlandırılır. Bu terim Türkçe'ye kabul ve veya geri bildirim olarak çevrilebilir.Data, Strobe ve ACK sinyalleri (Şekil 6.2) her ne kadar ham veri iletimi için yeterli de olsa farklı istisnai durumlar düşünüldüğünde daha fazla sinyallere ihtiyaç olduğu açıktır.

http://www.wekatronik.com/resimler2/pport2.jpg

Örneğin yazıcılar mekaniksel bir cihazdır ve bilgisayardan almış oldukları verileri belirlenen format içerisinde kağıda basarlar. Bilgisayar gelişiminin ilk yıllarında yazıcılar, bilgisayara son derece yavaş seri portlarla bağlanırlardı. Oldukça yavaş çalışan o dönemdeki yazıcılar için bu, çok da bir problem teşkil etmiyordu. Ancak yazıcıların hızlanması sonucu gelen verilerin yazıcı içerisinde bulunan geçici bir bellekte tutulması ihtiyacı ortaya çıktı. Bu gereksinim için tampon bellek (buffer memory) olarak adlandırılan birimler kullanılmaya başlandı. Bu durumda yazıcıya ait tampon belleğin dolduğunda, yazıcının bu durumu bilgisayara bildirmesi gerekmektedir. Bu sinyal yazıcının meşgul (BUSY) olduğunu bildirir ve bilgisayarın veri göndermesini engeller.
Tüm sistemlerin çok bilinen bir ortak yanları mevcuttur: Hatasız sistem yoktur. Tüm sistemler çalışma süresince er veya geç bir hata ile arızalı duruma düşerler ve bu tüm sistemler için kaçınılmaz bir durumdur. Aynı şekilde yazıcı bir hata ile karşılaştığında, mesela bir kağıt sıkışması söz konusu ise veya toner bitmesi oluştuysa bunun durumun bilgisayar bildirilmesi gerekmektedir. Bu tip durumları bildiren sinyal de ERROR (hata) olarak adlandırılır. Ayrıca yazıcının tamponundaki bilgiler bir hata sonucu ortaya çıkan arızadan dolayı silinip tekrar gönderilmesi istenebilir. Bu durumda tampon belleğin boşaltılması gerekeceğinden bu durum için de bir sinyal üretilmelidir. Bu sinyal de RESET sinyalidir ve bu sinyali alan yazıcı tampon belleğindeki bilgileri siler.

Gerçek yazıcı portunda (paralel port) 17 adet sinyal mevcuttur ve bunlar:
1. DATA port : Çıkış portu, 8-bit veri sinyali
2. STATUS port : Giriş portu, 5 adet durum sinyali
3. CONTROL port : Çıkış portu, 4 adet kontrol sinyali
Burada şu soru akla gelebilir toplam 25 adet pine sahip paralel portun diğer (25-17= 8) pinleri ne işe yarar? Kalan bu 8 pin, elektromanyetik etkilerin azaltılması ve toprak potansiyeline farklı yollardan erişilmesi için kullanılmaktadırlar. Şimdi bu portları sırasıyla inceleyelim.
Sinyal ismi Görevi Kaynak DATA Yazıcıya gönderilecek 8-bit veri Bilgisayar Strobe Yeni verinin hazır olduğunu bildirme Bilgisayar ACK Verilerin alındığına dair geri bildirim Yazıcı Busy Yazıcının meşgul olduğunu bildirme Yazıcı Error Yazıcıda bir hata oluştuğunu bildirme Yazıcı Reset Yazıcıyı ilk haline kurma Bilgisayar
- Bir paralel portun teorik sinyalleri -




http://www.wekatronik.com/resimler2/pport3.jpg

DATA PORT

Data port veya Data Kayıtçısı (D0..D7) 8 bitlik bir kayıtçıdır. Bilgisayardan dışarıya gönderilen veya dışarıdan alınan verilerin tutulduğu kayıtçıdır. Data port iki yönlü bir porttur, yani hem veri gönderme için hem de alma için kullanılabilir. Data portunun çıkışları D tipi üç-durumlu flip-floplardan oluşmaktadır. Data port paralel portun taban adresini temsil eder ve genellikle bu adres PC'lerde 378(hex) olarak atanır. Aşağıda Data portun her bir bit sıralanışı verilmiştir. D7 en yüksek değerlikli (MSB) ve D0 en düşük değerlikli (LSB) bitlerdir.
D7D6D5D4D3D2D1D0
- Data port bitleri -

STATUS PORT
Status kayıtçısı, bilgisayarın yazıcı durumunu okumak için kullandığı sadece okunabilir bir porttur. Adres olarak Data portundan bir sonra gelir, yani 379(hex) adresinden erişilebilir. S0, S1 ve S2 bitleri kullanılmadığı için konnektör çıkışında toplam beş bit ile temsil edilir.
S7S6S5S4S3
BUSY
Yazıcı meşkul sinyali Düşük-Aktif, Sıfır olduğunda meşkuldür.

ACK
Yazıcının Strobe sinyaline karşı ürettiği bir sinyaldir.
PE
Bu sinyal kağıdın bittiğini bildirir, normalde sıfırken, kağıt bittiğinde bir olur.
SELECT
Yazıcının yazdırmaya hazır olduğunu bildirir, yazıcı bakıma alındığında sıfır olur.

ERROR
Yazıda genel bir hata olduğunu bildirir. Hata oluştuğunda bu sinyal sıfır seviyesine düşer.
- Status port bitleri -
Bunun yanında S0 EPP modunda (çalışma modlarına ileriki sayfalarda değinilecektir) zaman aşımı (timeout) biti olarak kullanılabilir. Ancak bu bit DB-25 konnektöründe fiziksel olarak mevcut değildir. Bu yüzden sadece yazılım yoluyla kontrol edilebilir. Bu port 5 bitlik genel amaçlı giriş portu olarak kullanılabilir.

CONTROL PORT
Kontrol portu veya kayıtçısı konnektör çıkışında C0 dan C3 kadar toplam dört bite sahiptir. Konnektör çıkışında yer almayan IRQ EN isimli bir bit sayesinde harici kesme işlemleri Status portundaki ACK sinyali ile etkinleştirilebilir. Bu portun adresi, DATA portunun adresine 2 eklenmek suretiyle bulunur.
C3C2C1C0SelectIN

Yüksek olduğunda yazıcıya Veri girişlerini açmasını söyler, normalde konnektör de sıfırdır
Initialise

Sıfıra düştüğünde yazıcıyı ilk halinde kurar ve tampon belleği siler, normalde bildirir.AutoLF

Otomatik satır besleme. Her bir ENTER karakterinden sonra satır atlamayı sağlar.Strobe

Sinyalin Pozitif kenarında DO-D7 kayıtçısı okunur.
- Control port bitleri -

DB-25 Pin noSinyal adıKaynakKayıtçıKonnektör de terslenmiş mi?1StrobePC1ControlE2D0PCDataH3D1PCDataH4D2PCData H5D3PCDataH6D4PCDataH7D5PCDataH8D6PCDataH9D7PCData H10ACKYazıcıStatusH11BusyYazıcıStatusE12PaperEnd, PEYazıcıStatusH13SelectYazıcıStatusH14AutoLFPC1Con trolE15ErrorYazıcıStatusH16InitialiasePC1StatusH17 SelectInPC1ControlE18Gnd 19Gnd 20Gnd 21Gnd 22Gnd 23Gnd 24Gnd 25Gnd
- Paralel portun sinyalleri ve pin özellikleri
Yukarıdaki tabloda PC1 lere ait pinler, SPP (Standart Paralel Port) çalışma modunda giriş olarak kullanılmaları mümkündür. Yalnız, giriş olarak kullanılmadan önce lojik-1 yapılmalıdırlar.
Paralel port çalışma modları

Paralel port, ilk tasarım amacının aksine sadece yazıcılar için kullanılmamaktadır. Hatta günümüzde çoğu yazıcı USB veya kablosuz iletişim imkanlarını kullanarak bilgisayarlara bağlanmaktadır. Arayüz sistemleri gittikçe basit ve kablo yükü az veya hiç olmayan uygulamalara yönelmektedir. Peki paralel port artık ömrünü tamamlamış bir iletişim arayüzü müdür? Bu soruya tabii ki hayır diyebiliriz. Paralel portun önemli bir zayıf noktası teorik olarak 250Kb/s olan hızıdır. Ancak bu hız geliştirilen bazı çalışma modları ile artırılmıştır. Böylece harici CD-ROM, Harddisk vb. cihazlar doğrudan paralel porta bağlanarak kullanılmaktadır.
Ancak şunu da belirtmek zorundayız ki, çok sayıda kablo içeren ve kullanımı ve taşınması zor olan paralel portun kablosu nedeni ile seri ve kablosuz iletişimin paralel portun önemini azaltacağı ve hatta onun yerini alacağı teknolojik eğilimler açısından oldukça mantıklıdır. Ancak bunu seneler alacağı da şüphesizdir. Ayrıca çevremizde her zaman eski bir sistem ve bu sisteme bağlı tasarlanmış veri depolama sistemleri mevcut olacaktır. CD-ROM teknolojisinin Teyp kasetlerini tamamen ortadan kaldıramaması buna en iyi örnektir.
1991 yılında NPA (Network Printing Alliance, Ağ Yazdırma Birliği) paralel port için daha verimli bir protokol (iletişim kuralları) geliştirmeye başladılar. Daha etkin çift yönlü ve daha hızlı bir yapı için yeni protokolü ortya koydular ancak bu protokol eski sistemlerle de uyumlu olmak zorunda idi. Amaç, 1Mb/s den daha hızlı bir iletişimi gerçekleştirmekti ve bu amaç doğrultusunda EPP (Enhanced Paralel Port, Gelişik Paralel Port) ve ECP (Extended Capability Port, Geniş Yetenekli Port) adında iki farklı protokol geliştirildi. Günümüz bilgisayarlarında artık SPP den ziyade bu iki protokol kullanılmaktadır. Bilgisayarınızın aygıt yöneticileri kısmındaki bağlantı noktalarından paralel portunuza ait bilgileri alabilirsiniz. Şimdi bu prokolleri detayları ile inceleyelim.
IEEE 1284-1994 Standartı

IEEE 1284 standardı, bir bilgisayar ve harici cihaz arasında orijinal paralel porttan 20-50 kat daha hızlı bilgi transferine imkan sağlar. Tasarlanan bu protokol geriye-uyumlu (backward-compatible) olarak geliştirilmiştir ve orijinal paralel port için yazılmış olan programlar da bu protokolden istifade edebilirler. IEEE 1284 bilgisayarı referans alarak, hem ileri hem de geri yönde veya her iki yönde (yarım-dubleks) 5 adet çalışma modu tanımlar. EPP ve ECP çalışma modları IEEE 1284'ten türetilmişlerdir. Modern kişisel bilgisayarlar EPP ve ECP tip paralel porta sahiptir ve iletişim hızları 1-1.75Mb/s hızlara erişebilmektedir.
İleri yön
Uyumluluk Modu: Standart, Orjinal Mode
Geri yön
Nibble Mod: Status hatları kullanılarak 4-bit
Bayt Mod: Data hatları kullanılara 8-bit
Her iki yön
EPP Mod
ECP Mod

- IEEE 1284 veri iletim modları -

EPP MOD
EPP modu ilk olarak Intel, Xircom ve Zenith Data System firmaları tarafından yüksek performanslı, geriye dönük uyumlu bir paralel port protokolü olarak geliştirilmiştir. EPP satandardı, IEEE 1284 standardından dah önce geliştirildiği için aralarında küçük nüanslar mevcuttur. EPP modu 4 adet veri iletim tipi tanımlar:

<LI class=madde-imi-simge> Veri yazma periyodu (Data write cycle)
<LI class=madde-imi-simge> Veri okuma periyodu (Data read cycle)
<LI class=madde-imi-simge> Adres yazma periyodu (Address write cycle)
Adres okuma periyodu (Address read cycle)
EPP port en az 5 adet kayıtçıdan oluşur :

<LI class=madde-imi-simge> SPP DATA
<LI class=madde-imi-simge> SPP STATUS
<LI class=madde-imi-simge> SPP CONTROL
<LI class=madde-imi-simge> EPP ADDRESS
EPP DATA
Dikkat edilirse geriye dönük uyumluluk için ilk üç kayıtçı standart paralel portta bulunan kayıtçıları içerir. EPP en az 5 kayıtçı içerirden kastettiğimiz EPP DATA kayıtçılarının sayısı dörde kadar çıkabilir. Bu dört kayıtçı 32-bitlik bir veri iletişimine olanak tanır. Kişisel bilgisayarlardaki paralel portlar, ilk kurulumda genellikle standart moda ayarlandığından dolayı EPP adres ve veri kayıtçılarını kullanabilmek için EPP denetim entegresi EPP moda ayarlanmalıdır.
ECP MOD
Geniş Yetenekli Port (ECP) modu ilk olarak HP ve Microsoft firmaları tarafından teklif edilmiştir. Teklifin amacı, kişisel bilgisayarlar ile çok fonksiyonlu fax/yazıcı/tarayıcı tümleşik cihazların arasında yüksek performanslı iletişim sağlamaktı. ECP protokolü EPP protokolüne oldukça benzerdir ancak paralel porta aynı anda bir çok cihazın bağlanmasına izin vermesi özelliği ile EPP den farklıdır. Örneğin ECP gerçek-zamanlı bir veri sıkıştırma yapılırken, porta bağlı diğer cihazlara veri gönderebilir veya cihazlardan veri alabilir. ECP protokolünde, EPP'deki gibi adres ve verilerden oluşan bir iletim ortamına ek olarak komutlar kullanılmaktadır. Elbette bu daha karmaşık bir donanım ve yazılım gerektirmektedir. Komutlar DATA portundan gönderilmektedir ve DATA portundan gönderilen bilginin veri veya komut olduğunu bildiren bir sinyal mevcuttur: HostAck. Bu yüzden ECP portundan iletilen veya porta alınan iki tür bilgiden söz edilebilir:

<LI class=madde-imi-simge> Veri (data) iletimi
Komut (command) iletimi
Şimdi ECP çalışma modundaki FDC37C666 numaralı entegrenin ECR kayıtçısı ile elde edilen fonksiyonları inceleyelim.

Mod Bitleri:


Bit7, Bit 6, Bit 5

Fonksiyon000 SPP (Standart paralel port ) mod001 PS/2 paralel port mod010 Paralel port data FIFO (First in first out, işl giren ilk çıkar) mod011 ECP mod100 EPP mod101 BOŞ110 Test modu111 Konfigrasyon modu
-ECR kayıtçısı mod ayarlama bitleri-
/* portbul.c */
/*Bu program paralel porttaki DATA, CONTROL ve STATUS portlarını bulur*/
#include <stdio.h>
#include <dos.h>
#include <conio.h>
#include <process.h>
main(){
int dport, cport, sport, secim, mesafe;
clrscr(); /*clear screen*/
do{
printf("\n\tParalel Port Adaptörünü Tespit Programı.\n");
printf("LPT1,LPT2 veya LPT3 portları için 1,2 veya 3 Girin.Çıkış için 0\n\n");
secim=getch();
while ((secim != '1')&&(secim!='2')&&(secim!='3')&&(secim!='0')){
printf("Geçersiz Giriş: 1, 2 veya 3 Giriniz\n");
secim=getch();
}
if(secim=='1')
mesafe = 0x08;
if(secim=='2')
mesafe = 0x0a;
if(secim=='3')
mesafe = 0x0c;
if(secim=='0')
break; //secim 0 olursa do-while döngüsü kırılır
dport=peek(0x40, mesafe);
if (dport ==0){
printf("Bu bilgisayarda LPT%d mevcut değil\n", secim-'0');
break;
}
printf("\nLPT%d bulundu!\n", secim -'0');
printf("DATA port adresi %x\n", dport);
printf("STATUS port adresi %x\n", dport+1);
printf("CONTROL port adresi %x\n", dport+2);
}while(1);
printf("\nÇıkışı Seçtiniz, Güle Güle......");
return 1;
}


#include <dos.h>
#include <conio.h>
#include <stdio.h>
#include<process.h>
unsigned char secim;
void dataport(void){
static unsigned char a;
while(!kbhit())/*bir tuşa basıncaya kadar bekle*/{
outportb(0x378, a);
printf("\nDATA port = %X",a);
a++;
}
getch();
}
void controlport(void){
static unsigned char c;
while(!kbhit()){
outportb(0x37a, c);
printf("\nCONTROL port = %X",c);
c++;
}
getch();
}
void dataOut_controlIn(void){
static unsigned char dout, cin;
outportb(0x37a, 0x04);
while(!kbhit()){
outportb(0x378, dout);
cin=inportb(0x37a) & 0x0f;
printf("\nDATA port = %X, CONTROL port ham = %X",dout&0x0f,cin);
printf("CONTROL port düzeltildi = %X", 0x0b ^ cin);
dout++;
}
getch();
}
void dataOut_statusIn(void){
static unsigned char dout, sin;
while(!kbhit()){
outportb(0x378, dout);
sin=inportb(0x379) & 0xf8;
printf("\nDATA port = %X, STATUS port = %X",(dout & 0xf8)>>3, sin>>3);
printf("STATUS port düzeltildi = %X",0x80 & (sin>>3));
dout=dout+8;
}
getch();
}
unsigned char secimAl(void){
puts( "\nDATA Port ile test\t\t\tD\n" );
puts( "DATA port , CONTROL port giriş\t\tC\n" );
puts( "DATA port çıkış, STATUS port giriş\tS\n" );
puts( "CONTROL port çıkış\t\t\tO\n" );
puts( "Çıkış \t\t\t\t\tX\n" );
printf( "Seçiminizi Giriniz: " );
secim=getch();
secim |= 0x20;
return secim;
}
main(){
for(;{
secimAl();
switch (secim) {
case 'd': printf("\nCase D\n");dataport(); break;
case 'c': printf("\nCase C\n");dataOut_controlIn();break;
case 's': printf("\nCase S\n");dataOut_statusIn();break;
case 'o': printf("\nCase O\n");controlport();break;
case 'x': printf("\nGüle Güle..!\n");exit(0);
default: printf("\nHatalı Giriş\n");break;
Constantin Ofline   Alıntı ile Cevapla
Cevapla

Bu konuyu arkadaşlarınızla paylaşın


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 

Yetkileriniz
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık




Türkiye`de Saat: 12:52 .

Powered by vBulletin® Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.3.2

Sitemiz CSS Standartlarına uygundur. Sitemiz XHTML Standartlarına uygundur

Oracle DBA | Kadife | Oracle Danışmanlık



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580