UniTermin makrot

by Lea Viljanen
                     
                              5.1.1988
                     
                     
                     
                     
                     
        UniTerm on omasta mielestäni kiistatta paras Atari ST-ko-
                     
  neille tehty  terminaaliohjelma tällä hetkellä.  Mielipidettäni 
                     
  ei suinkaan muuta se, että  UniTerm on kaikkien vapaasti saata-
                     
  villa oleva julkisohjelma.  Itse asiassa päinvastoin.  Tämä oh-
                     
  jelma  todistaa sen, että  julkisohjelmissakin  voi  olla aivan 
                     
  kaupallisen tason tuotteita.
                     
                     
                     
        Juuri julkaistussa UniTermin  versiossa 2.0a on tavan mu-
                     
  kaan paranneltu vanhojen  versioiden puutteita ja virheitä sekä 
                     
  tehty uusia piirteitä vanhojen  lisäksi. Näkyvin uusi muutos on 
                     
  Hayes-yhteensopivien modeemien automaattisoitto-optio. Tätä it-
                     
  se olin kaivannut jo pidemmänkin aikaa ja heti ohjelman saatua-
                     
  ni ryhdyin kokeilemaan. 
                     
                     
                     
          Tämä autodialin kokeilu johdattikin minut heti makrojen 
                     
  maailmaan,  sillä  jokaisen numeron  kohdalle oli  mahdollisuus 
                     
  määritellä makro eli käskysarja, joka suoritetaan kun numerossa
                     
  vastataan.  Eli voisin vaikka määritellä  sellaisen käskysarjan
                     
  makrotiedostoksi,  joka puolestani  menee sisään  elektroniseen
                     
  postilaatikkoon, lukee kaikki uudet viestit sieltä puskuriin ja
                     
  tallettaa sen, sekä lopuksi käy  vielä tiedostoalueella imuroi-
                     
  massa  minulle tietyn tiedoston, jonka jälkeen poistuu boxista.
                     
  Ja koko tämän  toiminnan aikana voin tehdä aivan  jotain muuta,
                     
  eikä minun tarvitsisi olla koneen ääressä muuta kuin käynnistä-
                     
  mässä automaattisoitto.
                     
                     
                     
          UniTermissä tuo kaikki  on periaatteessa täysin mahdol-
                     
  lista,  sillä makrotiedostojen tekoon  on kehitetty  täysin oma 
                     
  komentokielensä.  Eli käytännössä UniTermiä  voi ohjelmoida. Ja
                     
  kuten kaikissa 'varsinaisissa'  ohjelmointikielissäkin, UniTer-
                     
  min makrokielessä on omat erikoiset käskynsä, jotka on lueteltu
                     
  seuraavassa:
                     
                     
                     
                                                                          
                     
       %ECHO('viesti')        Kaiuta 'viesti' (string) termi-
                     
                              naalille.
                     
       %ECHO(asciival)        Kaiuta ASCII-merkki 'asciival'       
                     
                              (integer)                                                                                                    
                     
       %DROPDTR()             Pudota DTR                                                                                                               
                     
       %ASSERTDTR()           Nosta DTR                               
                     
       %WAIT(aika)            Odota 'aika' (integer) millisekun-
                     
                              tia.
                     
       %GET('merkkejä',aika)  Odota merkkijonoa 'merkkejä' (string),                
                     
                              'aika' (integer) sekuntia. Jos tu-
                     
                              lee, suorita muu osa rivistä. Merk-
                     
                              kijonon odotuksen saa katkaistua 
                     
                              painamalla Control-C.                  
                     
       %RUN('nimi','komennot')Suorita ohjelma 'nimi' (string) ko-              
                     
                              mentorivillä 'komennot' (string). Jos            
                     
                              se on TTP-ohjelma, sinulta kysytään             
                     
                              parametrejä.                                                            
                     
       %CONCAT('str1','str2') Yhdistä 'str1' (string) ja 'str2'            
                     
                              (string) ja sijoita tulos muuttu-                 
                     
                              jaan $TEMP.                                                                                                                   
                     
       %ONKEY()               Jos jotakin näppäintä on painettu,           
                     
                              suorita loppuosa rivistä.                                                                                
                     
       %INPUT('prompti')      Ota näppäimistöltä syöterivi muut-
                     
                              tujaan $TEMP, 'prompti' (string) 
                     
                              on kehote. Loppuosa rivistä suori-
                     
                              tetaan jos valitaan 'OK'. 
                     
       %FILESELECTOR('polku','nimi','prompti')               
                     
                              Näytä tiedostovalitsin hakemistosta
                     
                              'polku' (string), tiedostonimi 'nimi'
                     
                              (string) ja kehote 'prompt' (string).            
                     
                              Polun ja nimen uudet arvot ovat
                     
                              muuttujissa $PATH ja $FILENAME. Ri-
                     
                              vin loppuosa suoritetaan, jos on
                     
                              valittu 'OK'.
                     
       %JUMP(rivi)            Hyppää riville numero 'rivi'.            
                     
       %SEND(asciival)        Lähetä ASCII-merkki 'asciival'                   
                     
                              (integer) ulos modeemin kautta.                                                                                          
                     
       %SEND('string')        Lähetä ulos 'string' (string)                                                                                         
                     
       %BREAK(pit,pudotadtr)  Lähetä Break:ia 'pit' (integer) msek,              
                     
                              pudota DTR jos 'dropdtr' (boolean)
                     
                              on tosi.
                     
       %PATH('polku')         Muuta levypolku 'polku':ksi (string)                                            
                     
       %MACRO('nimi')         Suorita 'nimi' niminen makro                
                     
                              (string) levyltä, oletuspolku on               
                     
                              senhetkinen hakemisto. Mikäli mak-
                     
                              ron suoritus päättyy normaalisti
                     
                              (<> %ABORT) loppuosa rivistä suori-
                     
                              tetaan.                                                
                     
       %LOADSETUP('nimi')     Lataa 'nimi' niminen asetuskokoelma
                     
                              (string).                                                                                      
                     
       %KERMIT('moodi',8bitmoodi,'tdosto')                                          
                     
                              Aloita Kermit tiedostonsiirto seu-                
                     
                              raavilla parametreilla:                             
                     
                                                                                
                     
                              moodi (string): 'SEND' : lähetä             
                     
                                              'REC'  : vastaanota           
                     
                                              'GET'  : vastaanota          
                     
                                                       serveriltä              
                     
                              8bitmoodi (boolean):                               
                     
                                              FALSE : 7 bitin
                     
                                                      ASCII teksti          
                     
                                              TRUE  : 8 bitin
                     
                                                      binääri              
                     
                                                                                
                     
                              tdosto (string): tiedoston nimi,         
                     
                                               hyväksyy ?,*-mer-
                     
                                               kit.
                     
                                                                                                      
                     
       %XMODEM('moodi','tdosto')
                     
                              mode (string): 'SEND' : lähetä                
                     
                                             'REC'  : vast.ota              
                     
                                                                                
                     
                              tdosto (string): Lähetettävä tai 
                     
                                               vast.otettava tie-
                     
                                               dosto.                            
                     
                     
                     
       %YMODEM('moodi','tdosto')
                     
                              moodi (string): 'SEND' : lähetä
                     
                                              'REC'  : vast.ota          
                     
                                                                                
                     
                              tdosto (string): tiedostomäärittelyt
                     
                     
                     
       %REASSIGN(altkey,komento)
                     
                              Sijoittaa komennon numero
                     
                              'komento' ALT-näppäimen kautta
                     
                              tulevalle näppäimelle 'altkey'. 
                     
       %POPUP(nro,komento,'nimi')
                     
                              Määrittelee uudelleen oikean hii-
                     
                              rinäppäimen alta tulevan valikon
                     
                              osan:
                     
                              nro : osan numero 1..20
                     
                              komento : katso UniTermin help.
                     
                              'nimi' : nimi joka näytetään
                     
       %UNICOMMAND(komento)   Suorittaa Unitermin sisäisen ko-
                     
                              mennon 'komento' (integer).
                     
       %DIAL(num)             Valitsee numeron 'num' luettelosta.
                     
       %LOADTEL('nimi')       Lataa puhelinluettelon 'nimi'.
                     
       %ABORT('msg')          Poistuu makrotiedostosta ja si-
                     
                              joittaa muuttujaan $TEMP viestin
                     
                              'msg' (string). 
                     
                     
                     
                     
                     
        Näitä komentoja voi lyhentää vaikka yhden kirjaimen mit-
                     
  taisiksi,  kunhan vain katsoo ettei  sekaantumisen vaaraa ole. 
                     
  Esimerkiksi %L('esim') voi olla sekä %LOADTEL että %LOADSETUP,
                     
  eli tuossa on pakko käyttää koko nimeä.
                     
                     
                     
        Makrot ovat  rakenteeltaan kahta tyyppiä. Joko ne on si-
                     
  joitettu funktionäppäimen taakse, tai sitten erilliseen makro-
                     
  tiedostoon. 
                     
                     
                     
        Esimerkkinä funktionäppäimestä voit vaikka sijoittaa F1-
                     
  näppäimen alle  makrokomennon  %RUN('huu.prg'), joka näppäintä
                     
  painettuasi suorittaa ohjelman 'huu.prg', mikäli muistia riit-
                     
  tää.
                     
                     
                     
        Aivan samalla tavoin voidaan suorittaa erillinen tiedos-
                     
  tossa oleva makro. Kirjoitetaan  vain funktionäppäimeen %MACRO
                     
  ('nimi')  ja sitä painamalla UniTerm alkaa  suorittaa nimettyä
                     
  makroa.  Toinen esimerkki samasta asiasta on  automaattisoiton 
                     
  tiedostot, jotka suoritetaan levyltä heti kun määrättyyn nume-
                     
  roon ollaan saatu yhteys. Näin kone voi kirjoittautua johonkin
                     
  elektroniseen  postilaatikkoon  puolestasi sisään  jos haluat. 
                     
                     
                     
        Nämä makrotiedostot ovat  aivan tavallisia ASCII-muotoi-
                     
  sia tekstitiedostoja, joissa on makrokäskyjä ladottu peräkkäin
                     
  riveille siten  että rivin pituus on enintään  80 merkkiä. Ko-
                     
  mentojen  väliin  jäävät sanat  (kommentit jne)  eivät vaikuta
                     
  suoritukseen.
                     
                     
                     
                     
                     
  Esimerkkejä:
                     
  ------------
                     
                     
                     
  1) Makro, joka loggautuu sisään VAXIin.
                     
                     
                     
       %WAIT(20)    
                     
       %E(10)%E(13)%E('Päästiin VAXIin!')%E(10)%E(13)
                     
       %S(10)%S(13)%W(30)
                     
       %S(13)%W(20)%S(13)
                     
       %GET('V A X I',7)%W(30)%S('tunnus')%S(13)%S('passi')%S(13)%J(7)
                     
       %JUMP(4)
                     
    
                     
     Tässä on esimerkki, joka loggautuu puolestasi sisään A-leh-
                     
  tien VAXIin, kunhan vain korvaat sanan _tunnus_ omalla käyttä-
                     
  jätunnuksellasi ja _passi_n omalla salasanallasi. Ensin ilmoi-
                     
  tetaan %ECHO -käskyllä käyttäjälle  että yhteys  on saatu, sen
                     
  jälkeen  lähetetään linjalle  sopivin väliajoin  pari RETURNia
                     
  (ASCII-koodi 13) ja odotetaan VAXIn heräämistä. Mikäli VAXI ei
                     
  parista ensimmäisestä herää, hypätään takaisin alkuun lähettä-
                     
  mään lisää RETURNeja.  Jos herää, lähetetään käyttäjätunnus ja 
                     
  salasana. HUOMIO!  Tämä saattaa jäädä ikuiseen silmukkaan, mi-
                     
  käli VAXI ei herää. Tällöin auttaa vain reset-nappulan painal-
                     
  lus.
                     
 
                     
  2) Sisäänloggautuminen Atari-purkkeihin.
                     
                     
                     
     %E(10)%E(13)%E('Tie selvä Atari-purkkiin!')%E(10)%E(13)
                     
     %GET('Press <RETURN>',10)%S(10)%S(13)%JUMP(4)
                     
     %E(7)%ABORT()
                     
     %GET('Realname',15)%S('oma nimi')%S(10)%S(13)
                     
     %GET('Password',5)%S('salasana')%S(10)%S(13)
                     
                     
                     
     Tällä makrotiedostolla pääsee sisään sellaisiin Atari-purk-
                     
  keihin, jotka käyttävät Michtronin purkkiohjelmaa.  Tosin olen
                     
  ihmetyksekseni havainnut, että boxeissa joissa numeron loppuun
                     
  pitää valittaessa  automaattisesti  lisätä ',' mikään makro ei
                     
  toimi. Esimerkissä on myös  otettava huomioon eri modeemityyp-
                     
  pien hitaus alkulogoa tulostettaessa.  1200 bitillä sekunnissa
                     
  (V.22)  liikuttaessa tuo 'Realname':n odotus  eli 15 sekuntia, 
                     
  riittää yhden alkulogoruudullisen tulostamiseen.  V.21 on tätä
                     
  neljä (4) kertaa hitaampi.  
                     
                     
                     
                     
                     
        Suunniteltaessa ja tehtäessä automaattisesti boxiin log-
                     
  gautuvaa makronpätkää,  on otettava huomioon eri boxiohjelmien
                     
  ja käyttöjärjestelmien vaatimukset. Esimerkiksi useat ohjelmat
                     
  vaativat yhden returnin painalluksen  modeemin nopeudentunnis-
                     
  tusta varten.  Joissain  käyttöjärjestelmissä  (VAXien VMS) on 
                     
  olemassa puskuri, jonne voi etukäteen työntää esimerkiksi tun-
                     
  nuksensa ja  salasanansa ennen kuin kone  on niitä edes kysel-
                     
  lyt.  Toiset taas ovat tarkkoja siitä,  että käyttäjätunnus ja
                     
  salasana annetaan vasta sitten kun niitä erikseen pyydetään.
                     
       
                     
        Vaikka makrojen suoritus  saattaa vaikuttaa idioottivar-
                     
  malta, niin sitä se ei suinkaan ole.  Yksinkertainenkin linja-
                     
  virhe  boxikoneen  ja  oman  koneen välisessä  tiedonsiirrossa 
                     
  saattaa sotkea koko makron suorituksen täysin. Siksi tämän ar-
                     
  tikkelin alussa  mainittu esimerkki  makrojen käytöstä on vain
                     
  periaatteessa  mahdollinen.  Hyvin harvoin  puhelinlinjat ovat 
                     
  niin häiriöttömiä,  että niin pitkiä makroja  voidaan onnistu-
                     
  neesti suorittaa.  Samoin pitkän käskysarjan suorittamisen voi
                     
  saada sekaisin jokin  odottamaton tapahtuma eli vaikkapa boxin
                     
  sysopin chat-pyyntö.
                     
                     
                     
        Kuten kaikkien ohjelmointikielten opiskelussa, niin pa-
                     
  ras tapa  UniTerminkin ohjelmoinnin  opettelussa  on kokeilu. 
                     
  Eli nyt jokainen modeemin omistava klikkaa UNITERM.PRG ikonia
                     
  ja alkaa kokeilla mitä hauskaa makroilla voikaan tehdä.
                     
   
                     
                         HAPPY HACKING!
                     
                     
                     
                     
                     
  P.S   Tästä mainiosta terminaaliohjelmasta  meidän on kiittä-
                     
  minen Simon Poolea,  joka on varmasti  ahkeroinut sen parissa 
                     
  moniaita tunteja. Siksi olisikin aiheellista, mikäli ihastut-
                     
  te ohjelmaan ja käytätte sitä, lähettää pieni muutaman markan
                     
  rahalahjoitus  hänelle,  jotta saisimme  jatkossakin uusia ja 
                     
  parempia versioita tästä loisto-ohjelmasta. Tekijän osoitteen
                     
  löytää ohjelman Desk-valikosta.

Takaisin

(C) Marko, Suomen Atari-sivut / ArkiSTo 2003