  Ŀ
  Ŀ
                                                                          
            QuickBasic'de karlatm sorunlar nasl atm?            
                                                                          
                     Modemin Basic'de programlanmas                      
                                                                          
  ٳ
   PS 27  Ekim'95                                      Grol Demir         
  
                                                                              
       
               
        Yaklak bir yl kadar evvel bir modem aldm ve iki saat sonra Trke
 karakterlerin kullanlma problemi ile karlatm. Bu olay beni Trke'nin
 adam gibi kullanld bir BBS aramaya ynlendirdi ve ayn akam Doruk BBS'i      
 kefettim.

       Doruk BBS'e o gn hayran oldum ve bu gnde ayn duygular yayorum.
 Ne varki Doruk ticari bir kurulutu ve baka yerde Trke harfler kullanmaya 
 izin veren programlar kullanlmyordu. Mersin - stanbul aras telefon 
 grmeleri de bana pahalya patlyordu.       

       lkemizde, kendi dilimizde iletiim kurabileceimiz bir programn       
 olmay beni shaware bir program yapmaya zorlad, bildiim tek programlama
 dili Gw-Basic'di ve bu amala QuickBasic'e merhaba demek zorunda kaldm.       

       Modemi aldm gnden bu yana yaklak bir yldr sren bir proje
 pratikde olmasa da teoride baaryla sonuland. Bu yaz dizisi bu maceray
 anlatmaktadr.

> Modemler hakknda ksa bilgiler :

       Modemler iki bilgisayar arasnda telefon hatt yoluyla veri aktarm
 salarlar. Balca iki niteleri vardr. Bilgisayardan gelen verileri telefon
 hatt ile tanabilecek ses verileri haline getirme (modulation) ve tanan 
 bu sesi tekrar bilgisayar verisi haline getirme (demodulation). Modem ismini
 bu iki ilemin birlemesinden alr: MOdulation+DEModulation.  

       Modemler genellikle faks olarak da alabilir ekilde piyasaya
 srlrler. Dahili ve harici olarak satlrlar. Harici modemler bilgisayara
 dardan bir seri kablo ile balanr, dahili modemler ise bilgisayarn seri
 genileme yuvalarndan birine taklr.

       Genellikle 2400, 9600, 14400 ve 28800 bps hznda almak zere 
 pazarlanan modemlerin almas ve programlanmasna soyunan kiiler iin 
 daha ayrntl bilgilere geelim.
                           
                           Ŀ
Ĵ  Modem komut seti   
                           
        
        Her modemin kendine gre bir komut seti bulunmaktadr. Bu komutlardan 
 sonra modem sonucu "OK" veya "ERROR" eklinde bildirir. Hayes komut seti
 hemen her modemde geerli olduundan bazlarn aklayalm.        

        ATZ   Modemi resetler
        ATA   Telefon almakta iken bu komut gnderilirse, modem telefon
              hattn aar ve karya tantm iin sinyal gnderir
        
        ATD   Telefon hatt alr ve evir sesi beklenir
        ATDP  Kendinden sonra gelen numara evrilir.("ATDP 326 53 34") 
        ATDT  Kendinden sonra gelen numara tulanr.

        ATH0  Mevcut balanty sona erdirir.

        AT Sn?   n iareti ile sorulan yazma hakknda bilgi istenir.
        AT Sn=y  n iareti ile belirtilen yazmaa y deeri aktarlr.

        AT&V   Modem konfigirasyonu hakknda bilgi verir.
        
        Bunlar gibi "AT" ile balayan bir ok komut vardr. Bu komutlar
 vastasyla modemin telefon evirme hzn ayarlamaktan tutun da ikinci
 telefon evirmesine kadar ka saniye beklemesi gerektiine kadar bir ok
 eyi programlayabilirsiniz.

        Modem komut setinde "AT" ile balamayan komutlar da vardr. Bunlardan
 en nemli evrilmekte olan bir telefondan vaz geilmesi iin Enter=Chr$(13)
 ve komut satrndan vazgemek iin Escape=Chr$(27)="++++" saylabilir. 

        Yine modemden modeme farkl olan bir de uzatlm komut seti vardr.        
 Bu komutlar da "AT" n eki ile kullanlrlar ve dier komutlardan "&", "/" ve 
 "%" n eki alarak ayrlrlar.

        Modeminizde geerli komutlar modem el kitapcnda bulabilirsiniz.
 
>Dn kodlar :
        
        Modem her olayda bir kod gnderir. Bu kodlar ve anlamlar yledir:
       Ŀ
        OK                   Verilen komut baaryla uyguland 
        CONNECT              Balant kuruldu                  
        RING                 Telefon alyor                   
        NO CARRIER           Hat kesildi                       
        ERROR                Verilen komut uygulanamad        
        NO DIALTONE          evir sesi yok                    
        BUSY                 Kar taraf megul                
        NO ANSWER            Kar taraf cevap vermiyor        
        CONNECT deer        Balant hz                     
        CARRIER deer        Tayc hat kapasitesi           
        COMPRESSION:no       ktrma protokolu nosu         
        PROTOCOL: isim       Hata dzeltme protokolu ismi      
       
        

>Init String (Modem koullama katar)  :
        
        Modem balantya gemeden evvel modeme gnderilecek komut kmesine
 verilen addr. ki blmden oluur: Balk daima "AT" dir, bunu komut kmesi
 takip eder.(rn. "AT S7=60 &C1")

        En iyi koullama katar "ATZ" dir. Bu komut gnderilince modem
 resetlenir. Modemler donanmsal olarak bir baka modemle en uygun haberleme
 ortamna hazrdrlar. Bununla beraber eitli terminal programlarnda deiik
 koullama katarlar grebilirsiniz.

        Benim nerim "ATZ" bu olmaz ise "AT&F&C1&D2" eklinde ksa ve sade
 bir koullama katar kullanmanz yolundadr.


>Yazmalar   :

        Modem zerinde bir den fazla 8 bitlik yazmalar bulunur, bu yazmalar
 modem hakknda telefon alma says, ka kodu,backspace kodu, satr besleme
 kodu gibi bilgileri tutarlar.

        Bu yazmalardaki bilgileri deitirmek gerekmez ama bilgi asndan
 modem el kitapcnza bakmanzda yarar bulunmaktadr. rnein telefonun
 yava evrildiinden ikayetci iseniz 11 nolu yazmaca 55 gibi bir deeri
 atayn. Bunu "AT S11=55" eklinde bir komutla yapabilirsiniz.

                           Ŀ
ĴSeri balant portlar
                           
        Standart bir Pc'de modemin olabilecei sadece 4 seri k vardr.
 Byk bilgisayarlar ile birlikte 8'e kan seri k adresleri bellidir. Bu
 sabit adresler ve normal olarak kulland kesmeler:

                   Ŀ 
                     S.No   Adres     Irq   Kesme 
                                                  
                     Com1   03F8h      4      Ch  
                     Com2   02F8h      3      Bh  
                     Com3   03E8h      4      Ch  
                     Com4   02E8h      3      Bh  
                     Com5   4220h      3      Bh  
                     Com6   4228h      3      Bh  
                     Com7   5220h      3      Bh  
                     Com8   5228h      3      Bh  
                   

 eklinde bir tablo ile gsterilebilir.

        Belirtilen bu adreslerde birbirini takip eden 8 adet port vardr.
 Herhangi bir seri balanm aygt (fare, modem, vb.) bu 8 portun nerdeyse 
 tamamn kullanr. O halde rnein Com1'in portlarna bir gz atalm:

        Modemin &H3F8 adresinde olduunu varsaydk, o halde taban adresimiz
 &H3F8 olacaktr. Portlar &H3F8...&H3FF aralnda pepee yer alr.

 Port 03F8 (Taban+0) : ki modda alr.
Ŀ   
                   (1)   Birinci modda iken gnderilecek veri veya
                         gelen veriyi tutan bir byte'lk ambar 
                         grevi yapar. Gelen veriyi INP(&H3F8) ile
                         okur, gidecek veriyi OUT &H3F8, Ascii kodu
                         ile yollarz.
                         
                   (2)   kinci modda iken iletiim hzn ayarlar
                         veya bilgi verir. Buradan INP(&H3F8) ile
                         okuduumuz deeri 115200 e blersek aktif
                         hz buluruz. rnein 48 okuduysak aktif
                         hz: 115200/48=2400 demektir. Ayn ekilde
                         hz 38400 bauda ayarlamak iin de bu kez
                         115200/38400=3 olduundan OUT &H3F8,3
                         program satr kullanarak 3 deerini porta
                         gndermek gerekir.
                          
                         Bu port hat (line) hzn ayarladndan dier
                         programlama dillerinde LSB olarak isimlendirilir.
                          
                         Bu port kullanlarak modem 50 - 155200 baud
                         hz aralnda altrlabilir.
                   
                         Ŀ
                           Basic'de iletiim 9600 Baud ile snrl   
                   Ĵ  olduundan bu snrn geilme noktas     
                           tam burasdr. nem arzeden bir bilgidir  
                         
                            
                          Portun hangi modda alt Taban+3=&H3FB 
                          portu ile saptanr. Bu portun son biti set
                          durumunda ise ikinci mod deilse birinci mod
                          geerlidir.
                   
       
Port 03F9 (Taban+1) : ki modda alr.
Ŀ   
                   (1)   Birinci modda iken hangi haller iin IRQ
                         retilecei saptanr. 
                         
                         ilk bit      = data iin  (+1)
                         ikinci bit   =  interrupt iin (+2)
                         nc bit   = hat durumu iin (+4)
                         drdnc bit = modemde her trl deiim iin (+8)
                         son drt bit = kullanlmaz.
                   
                         Bu portun 1+2+8=11 olarak set edilmesi yeterlidir.
                         rnek kod: OUT &H3F9, 11
                         
                         Bu moda dier dillerde interrupt enaple register
                         IER ismi verilir.
                   
                         Ŀ
                           Basic'de iletiim iin sadece IRQ 3 ve 4  
                   Ĵ  kullanlmaktadr. Baka IRQ no kullanan   
                           modemler iin bu port bize gerekecektir.  
                         
                   
                   (2)   kinci modda iken iletiim hzn ayarlar
                         veya bilgi verir. Tpk taban+0 portunun (&H3F8)
                         ikinci modu gibi alr aradaki tek fark bu kez
                         modem durumu iin hz ayarlamaktr.
                   
                         Bu port hat (modem) hzn ayarladndan dier
                         programlama dillerinde MSB olarak isimlendirilir.
                   
                         Esas olarak Taban+0 adresindeki portun hz iin
                         ayarlanmas arttr bu portun ise hz iin ayar
                         tercihe baldr.
                   
                         Portun hangi modda alt Taban+3=&H3FB 
                         portu ile saptanr. Bu portun son biti set
                         durumunda ise ikinci mod deilse birinci mod
                         geerlidir.
                   


Port 03FA (Taban+2) : ki modda alr.
Ŀ   
                   (1)   IIR = interrupt bilgi registeri sadece okunur
                   
                   (2)   FCR = 16550 FIFO control registeri sadece yazlr
                   
                         Bu portun her iki modu da basic'de programclar 
                         tarafndan nem arzetmez.
                   

      
Port 03FB (Taban+3) : Tek modda alr.(LCR, Hat kontrol yazmac)
Ŀ   
                    lk iki bit ilenecek karakterlerin uzunluunu saptar.
                    Her ikisi de set edilmi ise her iletilen karakter 
                    8 bitden oluur. Trke karakterin ASCII kodlar 
                    0-127 arasnda olmadndan Trke iletiimi iin her
                    iki bitin de set edilmesi zorunludur.
                   
                         Ŀ
                           lkemizde Trke iletiim yaplamamasnn    
                   Ĵ  sorumlusu bu portun (taban+3) ilk iki bitini 
                           set etmeyenlerdir dersek bu yanl olmaz.    
                         
                   
                    n bit durma bitini, drdnc ve beinci bitler elik
                    bitini, altnc bit elik bitinin ak kapal oluunu,
                    yedinci bit ise ara verme olayn halleder.
                   
                    lk yedi bit'i hzl gememin nedeni bunlarn basic'de 
                    nemsiz olmalardr. Btn bu ayarlar basic dzeyinden
                    "OPEN" komutu ile zaten yaplabilir.
                   
                    Ancak 8.nci bit bizim iin nemlidir. Bu bit set edilir
                    ise taban+0 ve taban+1 adresindeki portlar hz
                    renmek ve yeniden ayarlamak iin ikinci moda geerler.
                   
                    O halde modemi 57600 Bps hz iin yle ayarlayabiliriz.
                   
                    Blme sonucu = 115200/57600 = 2
                    
                    Sakla = INP(&H3FB)    ' Eski deeri sakla
                    OUT &H3FB, 128        ' 8 nci bit'i set et
                    OUT &H3F8, 2          ' Hat hz 57600 Bps
                    OUT &H3F9, 2          ' Modem durum hz 57600 Bps
                    OUT &H3FB, Sakla      ' Eski deeri yerine koy
                   

Port 03FC (Taban+4) : Tek modda alr. (MCR, modem kontrol yazmac)
Ŀ   
                     Bu port basic'de programclar tarafndan nemli
                     deildir.
                   
        
        
Port 03FD (Taban+5) : Tek modda alr. (LSR, hat durum yazmac)
Ŀ   
                      Bu port basic'de programclar tarafndan nemli
                      deildir.
                   
                      Yinede ilk bitin data geldiini gstermesi, 6.nc
                      bitin de data gndermeye msaitlii belirtiinden
                      sz edelim.
                   
        
        
Port 03FE (Taban+6) : Tek modda alr, sadece okunur. (MSR modem durum yz.)
Ŀ   
                      Bu port basic'de programclar tarafndan nemli
                      deildir.
                   
        
Port 03FF (Taban+7) : Tek modda alr
Ŀ   
                      Bu port da basic'de programclar tarafndan nemli
                      deildir.
                   
        
        Evet seri balant noktalarndaki 8 adet port hakknda bilmemiz 
gerekenler bunlar. Bu ayki yazmzda modemde Trke karakter sorununun nasl        
halledilecei ve basic'deki 9600 baud hznn nasl alaca konularnda
fikir sahibi olduk.
        
        Gelecek ay 2 den 7 ye kadar deiik IRQ kullanan modemler iin 
lkemizde ok az bilinen IRQ programlama ve basic'deki Irq3 ve Irq4 ile       
snrlanan seri iletiim tkankln birlikte aacaz.
                
        Grmek dileiyle....

Adres:
     PC World/Trkiye
     PS-Grol Demir
     Eski Bykdere cad.
     Sanayi mah. Behet sokak
     No:25/B  Kat:5
     80650 4.Levent / STANBUL

Internet : gurold@doruk.com.tr


