/chapter<P{{tek{ytt|>

/section<K{ytt|j{rjestelmien tukemat p{{tetyypit> 

K{ytetyn p{{tteen tyypin ja ominaisuuksien kertominen
k{ytt|j{rjestelm{lle on t{rke{{, koska useat ohjelmat
toimivat vain tietyntyyppisill{ p{{tteill{ (esimerkiksi vaativat
"{lykk{{n" n{ytt|p{{tteen ja paperille kirjoittava p{{te ei kelpaa).

P{{tteiden ohjauskomennoista on olemassa ANSIn ja ISOn yhteinen standardi.
Digitalin valmistama VT100-p{{te on oleellisesti t{m{n p{{testandardin 
mukainen, jossa kuitenkin on Digitalin omia laajennuksia. Useimmat
tietokoneet tuntevat ANSI-standardin mukaiset p{{tteet, ja varsin monet
tunnistavat my|s VT100-p{{tteen laajennukset.


/subsection<VAX//VMS:n tukemat p{{tteet>

VAXin VMS-k{ytt|j{rjestelm{ tukee etup{{ss{ Digitalin valmistamia ja n{iden
kanssa yhteensopivia p{{tteit{, kuten VT100, ja uusia VT200 ja VT300
-sarjojen p{{tteit{.  J{rjestelm{lle voidaan kuitenkin periaatteessa
"opettaa" melkein mink{ tahansa p{{tteen tarvitsemat ohjauskoodit.

VAX//VMS-k{ytt|j{rjestelm{lle on mahdollista kertoa
yksityiskohtaisesti p{{tteen ominaisuudet komennolla </tt set
terminal>, josta saa tarkemman kuvauksen komennolla </tt help
set terminal>.

Mik{li p{{te on Digitalin valmistama tai sen p{{tteen toimintaa
emuloiva, voidaan p{{tteen m{{rittely tehd{ komennolla </tt <set
terminal//inquire>>.  T{m{ komento voi my|s olla alustustiedostossa
</tt login.com> (kunhan ko.~komentotiedosto on tehty oikein). Mik{li
k{yt{t joskus sellaisia p{{tteit{, joilta ei voi kysy{ niiden
tyyppi{, ei edell{ annettua komentoa aina kannata sijoittaa
alustustiedostoon </tt login.com>, koska p{{te (tai mikron
tietoliikenneohjelma) saattaa menn{ sekaisin.


/subsection<Unixin tukemat p{{tteet>

My|s unix-k{ytt|j{rjestelm{t tukevat ainakin jonkinlaiseksi de facto
-standardiksi muodostunutta VT100-p{{tett{ tai ANSIn p{{testandardin 
mukaista p{{tett{.

Unix-j{rjestelm{lle voidaan kuitenkin helposti "opettaa" melkein mink{ tahansa
p{{tteen tarvitsemat ohjauskoodit kuvaamalla ne tiedostoon </tt
termcap> (terminal capabilities). T{h{n tiedostoon on valmiiksi
m{{ritelty usean kymmenen erilaisen p{{tteen ohjaukseen tarvittavat
tiedot. Tutkimalla t{t{ tiedostoa saa my|s
selville kunkin unix-j{rjestelm{n tuntemat p{{tetyypit.

Unix-j{rjestelm{lle kerrotaan kulloinkin k{yt|ss{ olevan p{{tteen
tyyppi ymp{rist|muuttujalla </tt term>. Ymp{rist|muuttujan </tt term>
oletusarvo esimerkiksi supertietokoneessa on </tt network>, jolloin
useat ohjelmat eiv{t osaa k{ytt{{ p{{tteen nuolin{pp{imi{ ja n{ytt|{
oikein.  Esimerkiksi, jos p{{te on VT100-sarjan kanssa yhteensopiva
(tai jopa VT200 tai VT300 -sarjaa), kannattaa asettaa p{{tteen
tyypiksi </tt vt100> jollakin seuraavista komennoista

</copymode
      set term = vt100       </rm C-shell muuttuja>
      setenv TERM = vt100    </rm C-shell, ymp{rist|muuttuja>
      TERM = vt100           </rm Bourne-shell, ymp{rist|muuttuja>
>

T{m{n voi tehd{ alustustiedostossa </tt .profile> tai </tt .login>,
tai p{{tteen tyypin voi kysy{ alustustiedostosta, ja asettaa sen
sitten vastauksen mukaisesti. 

P{{tteen ominaisuudet asetetaan yksitt{in
komennolla </tt stty>.  Tarkemman kuvauksen komennosta saat
komennolla </tt man stty>.


/section<Skandinaaviset merkit>

/subsection<Skandinaavisten merkkien ongelmat>

Skandinaaviset merkit |{} ja \[] ovat usein tietokoneessa
erikoismerkkej{.  Useimmiten niit{ ei voi k{ytt{{ tiedostojen
nimiss{, ohjelmointikielten tunnuksissa eik{ k{ytt{j{tunnuksissa tai
tunnussanoissa.  Lis{ksi niiden tulostamisessa sek{ p{{tteen n{ytt||n
ett{ paperille on usein ongelmia.

Esimerkiksi ISOn uuden 8-bitin ASCII-standardin mukaisesti toimivissa
ja my|s VT200-sarjan
p{{tteiden multinational-moodissa saattaa {:n, |:n ja }:n sijaan  
tulostua v, d ja n. T{st{ ongelmasta p{{see asettamalla VT200-p{{te 7-bitin
moodiin ja finnish keyboard- sek{ national-asetukset voimaan.

Edelleen useimmat vanhemmat p{{tteet, mukaanlukien
ANSI-standardin mukainen p{{te ja VT100-p{{te (ja VT200//300 p{{tteiden
national-moodi), erityisesti kaikki unix-j{rjestelm{t ja niiden
TCP//IP-liikenn|inti, perustuvat l{hes yksinomaan 7-bitin
ASCII-merkkikoodiin, jolloin skandinaaviset merkit ja aalto- ja
hakasulut ovat kesken{{n vaihtoehtoisia: pienet kirjaimet { ja } 
vastaavat aaltosulkuja
</tt/char123> ja </tt/char125>, isot kirjaimet [ ja ] vastaavat hakasulkuja
</tt/char91> ja </tt/char93>, ja kirjaimet | ja \ vastaavat pystyviivaa 
</tt/char124> ja kenoviivaa </tt/char92>.


/subsection<Eri merkkikoodit>

Skandinaavisiin merkkeihin liittyv{ perusongelma ovat erilaiset
merkkikoodit. Perusidea kirjainten, numeroiden, v{limerkkien ja
muiden (erikois)merkkien tallentamisessa, k{sittelyss{ ja
siirt{misess{ tietokoneissa on asettaa kutakin merkki{ vastaamaan
periaatteessa mielivaltaisesti valittu (pieni) kokonaisluku eli
koodata merkki. Jotta merkkien tulkinta eri j{rjestelmiss{ s|ilyisi
kuitenkin samana, tulee k{ytetyst{ koodista yhteisesti sopia, eli
koodi tulee standardoida. Useimmiten k{ytetyn koodin kokonaisluvut talletetaan
kukin yhteen tavuun eli k{ytet{{n 8-bittisi{ bin{{rilukuja.

T{ll{ hetkell{ k{yt|ss{ on p{{asiassa kaksi eri perusmerkkikoodia:
8-bittinen EBCDIC (Extended Binary Coded Decimal Interchange Code),
jota k{ytt{v{t mm. IBM:n suuret tietokoneet, ja 7- tai 8-bittinen ASCII
(American Standard Code for Information Interchange), joka on
kansainv{linen standardi, ja jota k{ytt{v{t l{hes kaikki muut
tietokoneet.  Oikeastaan ASCII-standardin sijasta pit{isi puhua
ISCII-standardista (International /dots). (Lis{ksi kehitteill{ on
uusi 32-bittinen standardi, jonka on tarkoitus kattaa kaikkien
maailman kielten kirjoitusmuodot).

Emme k{sittele t{ss{ lainkaan EBCDIC-koodia ja sen aiheuttamia ongelmia.

ASCII-koodista on kaksi eri p{{versiota: vanha 7-bitin varsinainen
ASCII (kansainv{linen standardi ISO 646) kansallisine versioineen, ja
uudempi 8-bitin laajennettu ASCII (kansainv{linen standardi ISO 8859
ja siihen liittyv{ aiempi versio ISO 6937), josta valitettavasti on
my|s eri versioita (t{rkein niist{ on suomeakin koskeva ISO 8859-1).
Lis{ksi ASCII-standardiin kuuluu erilaisia tiedonsiirto- ja
laiteohjailuun tarvittavia kontrollimerkkej{ ja escape- ja
kontrollijonoja koskevia standardeja (ISO 2022, 6429, 4873). Er{s
ongelma on jo n{iden "standardien" ja niiden eri versioiden
lukuisuus.


/subsection<7-bitin ASCII>

Vanhassa 7-bitin ASCII-merkist|ss{ on koodattu kaikkiaan $128 = 2^7$
eri merkki{, koodit 0 -- 127. N{ist{ koodit 0 -- 31 ja 127 vastaavat
ns.  kontrollimerkkej{, joita on siis 33 kappaletta ja joita
tarvitaan l{hinn{ oheislaitteiden --- kuten kirjoittimien ---
ohjaamisessa ja tietoliikenteess{. Sen lis{ksi koodi 32 vastaa
v{lily|nti{ (blankkoa), ja se itseasiassa lasketaan
kontrollimerkiksi. V{lily|nti{ merkit{{n selvyyden vuoksi joskus
</tt /char32>.

Loput 94 merkki{ ovat ns.  kirjoittuvat merkit:
pienet ja isot latinalaiset aakkoset, numerot, v{limerkit, sulut, er{{t
matemaattiset merkit ja erikoismerkit:

</copymode
      abcdefghijklmnopqrstuvwxyz
      ABCDEFGHIJKLMNOPQRSTUVWXYZ
      0123456789
      .:,;!?"/char39/char96
      (/char123/char91/char60/char62/char93/char125)
      -+=*///char92/char124
      @/%/&/$/#/char94/char95/char126
>

Kutakin merkki{ vastaavat koodiluvut on oleellisesti arvottu, ts. ne ovat
periaatteessa sopimuksenvaraisia, mutta kyll{kin ASCII-standardin 
kiinnitt{mi{.

Ongelmana suomen (ja monen muun) kielen kannalta t{ss{ on se, ett{
diakriittisi{ merkkej{ ja aksentteja k{ytt{v{t kirjaimet eiv{t
mahtuneet t{h{n latinalaiseen merkkijoukkoon. Ratkaisuksi (tosin
paljon ongelmia aiheuttaneeksi) keksittiin syrj{ytt{{ osa
"harvinaisia" merkkej{ kansallisten kirjainten kohdalta.  Lis{ksi
m{{riteltiin ns. kansainv{linen referenssiversio (IRV) --- joka on
oleellisesti sama kuin amerikkalainen 7-bitin kansallinen versio eli
todellinen ASCII.

Suomalainen (ja ruotsalainen) versio 7-bitin ASCII-standardista
(FINSCII? SVENSCII? SCANDSCII?) syrj{ytt{{ aalto- ja hakasulut,
kenoviivan ja pystyviivan mm. pascal- ja C-ohjelmoijien harmiksi:

</copymode

finscii  koodi  ascii

{         123     /char123    
|         124     /char124  
}         125     /char125   
[          91     /char91   
\          92     /char92    
]          93     /char93

/'e          96     /char96    
/"u         126     /char126    
/'E          64     /char64    
/"U          94     /char94   

>

T{m{ selitt{nee, miksi vanhemmissa (= 7-bitin) p{{tteiss{ ja
kirjoittimissa skandinaaviset kirjaimet korvautuivat aalto- ja
hakasuluilla. P{{tteen ruudulla ei t{ll|in voi yht{aikaa n{hd{
skandinaavisia merkkej{ ja aalto- ja hakasulkuja, koska niill{ oli
itseasiassa samat koodiarvot, eik{ niit{ siten voi erottaa toisistaan.
Useimmat p{{tteet ja kirjoittimet voi kyll{ muuttaa kahteen
erilaiseen "moodiin", joista toisessa p{{te n{ytt{{ tai kirjoittaa
skandinaaviset merkit ja toisessa kaikenkarvaiset sulut, mutta koska
koodiluvut ovat p{{llekk{isi{, ei is{nt{kone voi helposti kertoa,
kumpaa merkkivaihtoehtoa koodiluvut kulloinkin tarkoittavat.

Lis{ksi ruotsalaisessa standardissa dollarimerkin (</tt/$>) sijalla
on usein ns. yleinen valuuttamerkki eli lozenge, joka n{ytt{{
"auringolta" tai "miinalta".

Useimmiten 7-bitin merkitkin talletetaan ja l{het{{n 8-bitin
tavuissa, joilloin tulee viel{ "mielenkiintoinen" lis{ongelma: mit{
tehd{{n ylim{{r{iselle, ylimm{lle kahdeksannelle bitille? Usein se
pakotetaan nollaksi, mutta erityisesti tietoliikenteess{ se usein
edustaa pariteettia, eli on ykk|nen tai nolla sen mukaan, onko
7-bitin tavun osassa muutoin parillinen tai pariton m{{r{ ykk|si{.
P{{tteelle voi joskus tulostua outoja merkkej{, jos
p{{te ei ole tietoliikennelinjan kanssa samaa mielt{ k{ytetyst{
pariteetista.


/subsection<8-bitin multinational ASCII>

Uudemmaksi ratkaisuksi standardoitiin 8-bitin ASCII, jossa (versiossa
ISO 8859-1) ei en{{ ole kansallisia versioita, mutta sen sijaan
kaikkiaan $256 = 2^8$ eri merkki{. N{ist{ 128 alinta (= pienimm{n
koodin omaavat) merkki{ ovat samat kuin aiemman 7-bitin ASCIIn
kansainv{lisen referenssiversion merkit.  Loput merkit ovat
koodiarvoiltaan 128 -- 255, eli poikkeavat 7-bitin ASCII-merkeist{
siten, ett{ merkkej{ 8-bittiseen tavuun talletettaessa  ylin eli
kahdeksas bitti on 1, kun vanhoilla ASCII-merkeill{ (tarpeeton) ylin
bitti on pakotettu tavallisesti nollaksi.

Laajennetussa 8-bitin ASCII-koodistossa vanhoja kontrollikoodeja 0 --
31 vastaavat "8-bittiset" koodit 128 -- 159 ovat uusia
kontrollikoodeja (muutoin tulisi ongelmia tietoliikennelinjoissa,
jotka "sy|v{t" ylimm{n bitin).  V{lily|nti{ vastaava laajennettu
koodi 160 ($<> = 32 + 128$) ja kontrollimerkki{ 127 (DEL) vastaava
koodi 255 ovat joko m{{rittelem{tt{ (= tyhji{) tai er{it{
kontrollimerkkeihin rinnastettavia merkkej{ (pehme{ eli poistuva
tavuviiva ja yhteenliitt{v{ v{lily|nti, non-breakable space). Loput
94 uutta merkki{ ovat kirjoittuvia, ja sis{lt{v{t useimmat
eurooppalaisten kielien tarvitsemat diakriittiset merkit ja
aksentilliset merkit (/'a, /"a, /aa, /^a, /~a,/O, /dots). Lis{ksi
mukana on koko joukko erikoismerkkej{, mm. symbolit luvuille 1//2,
1//4 ja 3//4, copyright sign jne.

Digitalin VT200 ja VT300 -sarjan p{{tteiden ns. multinational
merkist| on oleellisesti 8-bitin kansanv{lisen standardin mukainen. Se on
kuitenkin otettu k{ytt||n ilmeisesti jo ennen standardin hyv{ksymist{, 
joten siihen j{i joitain tyhji{ paikkoja, ja parin merkin paikat ovat 
v{{r{t. Onneksi t{m{ ei juurikaan kosketa suomen kielt{, sill{
skandinaaviset kirjaimet on sijoitettu standardin mukaisesti.

Skandinaaviset merkit uudessa 8-bitin standardissa:

</copymode

skandi  koodi   7-bitin vastine

{         228         d    
|         246         v  
}         229         e   
[         196         D   
\         214         V    
]         197         E    

/'e         233         i    
/"u         252         /char124    
/'E         201         I   
/"U         220         /char92   

>

T{m{ taulukko selitt{nee sen, miksi 8-bitin suomalainen teksti
tarkasteltuna p{{tteelt{, joka ymm{rt{{ vain 7-bitin merkkej{ ja
siksi riisuu ylimm{n bitin nollaksi, n{ytt{{ kovin d- ja
v-voittoiselta.


/subsection<Mikrojen 8-bitin ASCII>

Jotta t{m{ merkkisoppa olisi t{ydellinen, piti sek{ IBM:n ett{ Applen menn{
m{{rittelem{{n PC- ja Macintosh-mikrojaan varten oma 8-bitin laajennus
standardille 7-bitin ASCII-koodille. Ja tietenkin kumpikin ihan ikioman. 

IBMn ja Applen merkist|jen alempi puolisko on sama kuin 7- ja 8-bitin
ASCII, mutta niiden ylemm{t puoliskot ovat t{ysin erilaiset.
Kumpikaan eroaa 8-bitin ASCIIsta.

% N{m{
% koodit ovat siis alemmalta puoliskoltaan kesken{{n tasan samat ja samat kuin
% 7-bitin ASCII ja 8-Bitin ASCII, mutta ylemm{lt{ puoliskolta erovat sek{ 8-bitin
% multinational ASCII, PC-ASCII ja Mac-ASCII kaikki toisistaan. 

Sek{ PC- ett{ MAcintosh-maailmassa asiaa mutkistaa viel{ erilaiset fontti- ja
kooditaulut (font tables, code pages), joissa skandinaaviset ja muut diakriittiset ja
aksentilliset merkit on sijoitettu hieman eri paikkoihin merkist|n ylemp{{n
puoliskoon. 

Mikrojen skandinaaviset merkit:

</copymode

skandi  PC-ASCII  Mac-ASCII

{      132  
|      148  
}      134
[      142
\      153
]      143

/'e      130
/"u      129
/'E      144
/"U      154

>


/subsection<ASCII kontrolli -eli ohjausmerkit>

Useat (7-bitin) ASCII kontrollikoodit ovat k{yt|ss{ tietoliikenteess{ tai
kirjoitinohjauksissa, miss{ niill{ on enemm{n tai v{hemm{n vakiintunut ja
standardi merkitys. Alla on lueteltu t{rkeimm{t kontrollimerkit, ja niiden 
normaalit merkitykset. 

Kontrollimerkkej{ merkit{{n usein niit{ vastaavilla isoilla
kirjaimilla (ja joillain erikoismerkeill{, joita ovat </tt/char91>,
</tt/char92>, </tt/char93>, </tt/char94>, </tt/char95> ja
</tt/char64>) joitten eteen sijoitetaan joko "hattu", esimerkiksi ASCII 
kontrollimerkki </sl carrige return> tai lyhyesti </sl return> on 
</tt /char94 M>, tai englannin kielen sanasta </sl control> aikaansaatu
lyhenne, tyypillisesti </tt cntrl>, </tt cntl>, </tt ctrl> tai </tt ctl>.
T{ss{ esityksess{ kontrollimerkit kirjoitetaan muodossa /boxed<Cntl-M>.

N{m{ vastinkirjaimet saadaan seuraavasti: kontrollimerkki{ esitet{{n
sill{ (isolla) kirjaimella tai erikoismerkill{, jonka koodi saadaan
kyseisen kontrollimerkin koodista lis{{m{ll{ siihen 64 ($ <> = 2^6$).
Lis{ksi l{hes kaikki ASCII-p{{tteet on suunniteltu siten, ett{
is{nt{koneelle voi l{hett{{ kontrollimerkin /boxed<Cntl-X> painamalla
alas erityinen kontrollin{pp{in ja painamalla samanaikaisesti
X-n{pp{int{ (oikeastaan x-n{pp{int{). Joillakin t{rkeimmill{
kontrollimerkeill{ on p{{tteiss{ omat n{pp{imet: /boxed<Return>,
/boxed<Tab>, /boxed<Escape> ja /boxed<Delete>.

Huomaa, ett{ er{ille niist{ loppup{{n kontrollimerkeist{, joita ei vastaa 
kirjain vaan erikoismerkki, t{m{ erikoismerkki on sellainen, ett{
sit{ vastaa 7-bitin kansallisessa ASCII-merkist|ss{ skandinaavinen kirjain!
Esimerkiksi joskus

</copymode
      /boxed<Cntl-/char91> = /boxed<Cntl-[>
      /boxed<Cntl-/char92> = /boxed<Cntl-\>
      /boxed<Cntl-/char93> = /boxed<Cntl-]>
      /boxed<Cntl-/char94> = /boxed<Cntl-/"U>
>
Kontrollimerkeill{ on my|s kaksi- tai kolmikirjaiminen virallinen
lyhenne, joka on johdettu merkin standardissa m{{ritellyst{ nimest{.
Esimerkiksi </sl carriage return> lyhennet{{n </sl CR> tai </sl cr>.

Huomaa, ett{ p{{tety|skentelyss{ yhdell{ kontrollimerkill{ voi olla
kaksi aivan erilaista merkityst{ siit{ riippuen, vastaanottaako vai 
l{hett{{k| p{{te kyseisen merkin!

T{rkeimm{t ASCII-ohjausmerkit p{{tety|skentelyss{ (tai kirjoittimen
ohjaamisessa) 
%(komentotilassa) Digitalin tukemilla VT52-, VT100- ja VT200-sarjan
%ja n{iden kanssa yhteensopivilla p{{tteill{ 
ovat seuraavat:

/def/oneboxed#1</item</vtop to 0mm</hbox to 23truemm</boxed<#1>/hfill>>>>

/def/twoboxed#1#2</item</vtop to 0mm</hbox to 23truemm</boxed<#1>/hfill>
                                     /hbox to 23truemm</boxed<#2>/hfill>>>>

/def/threeboxed#1#2#3</item</vtop to 0mm</hbox to 23truemm</boxed<#1>/hfill>
                                         /hbox to 23truemm</boxed<#2>/hfill>
                                         /hbox to 23truemm</boxed<#3>/hfill>>>>

</leftskip=50pt %%parindent=50pt

/threeboxed<RETURN><CR><Ctrl-M>
ASCII-kontrollimerkki </sl carriage return>, CR, jonka koodi on 13.
Normaalisti kun p{{te tai kirjoitin vastaanottaa t{m{n
kontrollimerkin, se aiheuttaa kohdistimen palauttamisen rivin alkuun.
Se aiheuttaa jossain p{{tteiss{ ja kirjoittimissa my|s rivinsiirron eli
merkin </sl linefeed> normaalitoiminnan (ja mahdollisen ruudun
vierityksen (scroll)). T{m{ on useimmiten p{{tteen tai kirjoittimen
toiminnan asetettavissa oleva piirre. K{ytt{j{ l{hett{{ t{m{n merkin
is{nt{koneen k{ytt|j{rjestelm{lle merkiksi siit{, ett{ kirjoituspuskuriin
kirjoitettu komentorivin on valmis, ja is{nt{kone voi alkaa suorittaa
sit{.

/threeboxed<LINEFEED><LF><Ctrl-J>
ASCII-kontrollimerkki </sl linefeed>, LF, jonka koodi on 10.
Normaalisti kun p{{te tai kirjoitin vastaanottaa t{m{n
kontrollimerkin, se aiheuttaa rivinsiirron (ja mahdollisen ruudun
vierityksen (scroll)), jolloin kohdistin j{{ tavallisesti
vaakasuunnassa samaan kohtaan.  Se aiheuttaa jossain p{{tteiss{ ja
kirjoittimissa my|s kohdistimen palauttamisen rivin alkuun (eli </sl
carriage return> -merkin normaalitoiminnan). T{m{ on useimmiten
p{{tteen tai kirjoittimen toiminnan asetettavissa oleva piirre.
Unix-j{rjestelmiss{ tekstitiedoston rivin lopussa on erottimena ns.
</sl newline>-merkki; t{m{ on normaalisti sama kuin </sl linefeed>
(mutta joissain unix-toteutuksissa se on </sl carrige return>).
MS-DOS ja PC-DOS -k{ytt|j{rjestelmiss{ saman asian ajaa merkkipari
</sl carriage return> ja </sl linefeed>.
VAX//VMS-k{ytt|j{rjestelm{ss{ k{ytt{j{ l{hett{{ </sl
linefeed>-kontrollimerkin is{nt{koneelle osoittaakseen, ett{ haluaa
poistaa komentorivilt{ yhden sanan (kohdistimesta vasemmalle).


/threeboxed<FORMFEED><FF><Ctrl-L>
ASCII-kontrollimerkki </sl formfeed>, FF, jonka koodi on 12.  Kun
kirjoitin vastaanottaa t{m{n kontrollimerkin, se aiheuttaa
arkinvaihdon. P{{tteiden toiminta vaihtelee, useimmiten joko tapahtuu
vain muutama rivinsiirto tai sitten n{ytt| puhdistetaan.  Jos
k{ytt{j{ l{hett{{ t{m{n merkin is{nt{koneelle, esimerkiksi
editori-ohjelmalle, t{m{ sijoittaa useimmiten tekstin sekaan yhden
</sl formfeed>-merkin (joka tulostettaessa sitten aiheuttaa edell{
kerrotun arkin vaihdon).


/threeboxed<TAB><HT><Ctrl-I> 
ASCII-kontrollimerkki </sl horizontal tabulation>, HT, jonka koodi on
9.  Kun p{{te tai kirjoitin vastaanottaa t{m{n kontrollimerkin, se
siirt{{ kohdistimen seuraavan vaakasuuntaisen tabulaattorin kohdalle.
Jos p{{tteess{ ei ole kiinteit{ (tai ohjelmoitavia) tabulaattoreita,
is{nt{kone asettaa tabulaattorit usein joka kahdeksannen merkin
kohdalle.  Jos k{ytt{j{ l{hett{{ tabulaattorimerkin is{nt{koneelle,
esimerkiksi editori-ohjelmalle, t{m{ sijoittaa useimmiten tekstin
sekaan yhden tabulaattori-merkin (joka tulostettaessa sitten
aiheuttaa edell{ kerrotun kohdistimen liikkeen). Tabulaattorimerkkien
k{ytt|{ kannattaa v{ltt{{, vaikka yksi tabulaattorimerkki
korvaakin useita v{lily|ntej{ (hy|ty on marginaalinen), koska kaikki
is{nt{koneet, p{{tteet ja kirjoittimet eiv{t osaa k{sitell{ niit{
oikein. Tabulaattori-n{pp{int{ kannattaakin k{ytt{{ yleens{ vain, jos
editori korvaa tabulaattorimerkit suoraan tekstiin tarvittavalla
m{{r{ll{ v{lily|ntej{.


/threeboxed<VT><Ctrl-K> 
ASCII-kontrollimerkki </sl vertical tabulation>, VT, jonka koodi on
11. Kun p{{te tai kirjoitin vastaanottaa t{m{n kontrollimerkin, tapahtuu
yleens{ muutaman rivin siirto, toiminta hieman vaihtelee. Usein 
sama kuin </sl linefeed>.


/twoboxed<CTRL-Q><CTRL-S>
ASCII-kontrollimerkit </sl device control> 1 ja 3, DC1 ja DC3, joiden
koodit ovat 17 ja 19. N{it{ merkkej{ k{ytet{{n yleisesti is{nt{koneen
ja p{{tteen tai jonkin oheislaitteen, kuten kirjoittimen v{lisen
tietoliikenteen vuonvalvontaan. Ne tunnetaan my|s nimill{ XON ja
XOFF.  Merkill{ /boxed<Ctrl-Q> eli XON jatketaan aiemmin merkill{
/boxed<Ctrl-S> eli XOFF pys{ytetty{ tulostusta.  VT100- ja
VT220-p{{tteill{ </boxed <CTRL-S>>- ja </boxed <CTRL-Q>>-n{pp{inten
toiminnot saadaan aikaan vuorotellen yhdell{ n{pp{imell{ </boxed
<HOLD SCREEN>> eli </boxed <PID[ N[YTT\>> tai /boxed<No Scroll>.
Jos p{{tteess{ tai emulointiohjelmassa on vastaanotettujen merkkien
varastoimiseen suuri puskuri (ja jos p{{te tai ohjelma on huonosti 
ohjelmoitu), saattaa kuitenkin kest{{ tovin ennenkuin /boxed<Ctrl-S>-
eli XOFF-merkki vaikuttaa (is{nt{koneeseen), eik{ n{ytt| pys{hdyk{{n
v{litt|m{sti. Hyv{ p{{te reagoi t{h{n n{pp{imeen v{litt|m{sti itse, 
odottamatta is{nt{koneen reaktioita.


/threeboxed<ESCAPE><Ctrl-/char93><Ctrl-[>
ASCII-kontrollimerkki </sl escape>, ESC, jonka koodi on 27. (Huomaa,
ett{ 7-bitin kansallisessa ASCII-versiossa merkit [ ja </tt/char93>
ovat "p{{llekk{in".) Kontrollimerkki </sl escape> on varattu
ASCII-merkist|ss{ laajentamaan kontrollimerkkien joukkoa. Se aloittaa
ns. escape-jonon, eli tietyn (standardissa ISO 2022) sovitun s{{nn|n
mukaisen kontrollijonon.  N{it{ escape-jonoja on m{{ritelty
kymmenitt{in, mm. kohdistimen k{sittelyyn, merkkien v{ri{ ja
attribuutteja kuten vilkkumista varten, jne. Eri laitteet reagoivat
niihin eri tavoin.  Jos k{ytt{j{ n{pp{ilee /boxed<ESC>-merkin, sen
merkitys vaihtelee eri k{ytt|j{rjestelm{st{ ja ohjelmasta toiseen.
Usein sill{ on sama vaikutus kuin </boxed <RETURN>>-n{pp{imell{, se
kumoaa tai keskeytt{{ k{ynniss{ olevan komennon tai sitten varsinkin
valikkopohjaisissa ohjelmissa se vie takaisin edelliseen valikkoon.
(VT200-sarjan p{{tteill{ saadaan antamalla </boxed <CTRL-3>>
l{hetetty{ merkki </boxed <ESC>>.) T{t{ merkki{ ei pid{ sotkea
joidenkin ohjelmien ja laitteiden (kermit, unix, /TeX,
p{{tepalvelija, TCP//IP, muut tietoliikenneohjelmat) m{{rittelem{{n
omaan "escape"-merkkiin.


/threeboxed<DELETE><DEL><RUBOUT>
ASCII-kontrollimerkki </sl delete>, DEL, jonka koodi on 127. T{m{n merkin
vaikutus vaihtelee hieman, mutta useimmiten se poistaa joko yhden merkin
tai koko rivin komentorivilt{ tai editoitavasta tekstist{.

/threeboxed<BACKSPACE><BS><CTRL-H>
ASCII-kontrollimerkki </sl backspace>, BS, jonka koodi on 8.  Kun
p{{te tai kirjoitin vastaanottaa t{m{n kontrollimerkin, se siirt{{
kohdistimen yhden askeleen taaksep{in (vasemmalle) poistamatta t{ss{
paikassa olevaa merkki{.  L{hetett{ess{ t{m{ merkki is{nt{koneelle,
sen merkitys vaihtelee is{nt{koneesta ja ohjelmasta riippuen.  Joskus
se siirt{{ kohdistimen vasemmalle yhden askeleen ja poistaa samalla
loppupaikassa olevan merkin (VAX//VMS:ss{ </sl delete>-merkin
toiminta) ja joskus (VAX//VMS) se vie kursorin komentorivin alkuun.
(Itseasiassa, kun VAX//VMS-j{rjestelm{lle l{hetet{{n /boxed<DEL>-merkki,
takaisin kaiutetaan kolme merkki{: /boxed<BS>, v{lily|nti,
/boxed<BS>, jolloin kohdistin ensin siirtyy vasemmalle, v{lily|nti
tuhoaa t{ss{ paikassa olevan merkin ja kohdistin siirtyy oikealle, ja
viimeinen /boxed<BS>-merkki siirt{{ kohdistimen taas vasemmalle
v{lily|nnin p{{lle!)


/twoboxed<BELL><Ctrl-G>
ASCII-kontrollimerkki </sl bell>, BEL, jonka koodi on 7, ja joka
saapuessaan p{{tteelle aiheuttaa p{{tteen "kellon" soiton (eli p{{te
"piippaa").

/oneboxed<CTRL-C>
ASCII-kontrollimerkki </sl end-of-text>, ETX, jonka koodi on 3.
Sek{ VAX//VMS- ett{ unix-k{ytt|j{rjestelmiss{ aiheuttaa ohjelman
tai sen osatoiminnon lopetuksen (mik{li kyseinen ohjelma ei ole
keskeytt{mist{ est{nyt).


/oneboxed<CTRL-D>
ASCII-kontrollimerkki </sl end-of-transmission>, EOT, jonka koodi on
4.  T{m{ merkki on unix-j{rjestelm{n </sl end-of-file>- eli EOF
-merkki.  Se lopettaa sy|t|n (sy|tt|tiedoston) ja se aiheuttaa
p{{tteelt{ l{hetettyn{ (rivin alussa komentotulkin kehoitteen
j{lkeen) my|s </tt logout>-komennon (komentotulkin eli shellin
sy|tt|tiedostona oleva komentotiedosto eli "p{{te" loppuu!). Muualla
kuin rivin alussa annettuna se vain keskeytt{{ komennon sy|t|n.

>

</bf Huomaa, ett{ erilaiset sovellutusohjelmistot voivat m{{ritell{
mainittuja ohjausmerkkej{ uudelleen, joten niiden toiminta
ei aina v{ltt{m{tt{ vastaa annettuja kuvauksia.>


/section<Ohjelmistojen "Escape"-merkit>

Useat tietoliikenneohjelmistot ja -laitteet m{{rittelev{t omat
"escape"-merkit, joilla on tarkoitus p{{st{ komentamaan uudelleen
tietoliikenneohjelmistoa.  Luonteensa vuoksi
tietoliikenneohjelmistojen tulee v{litt{{ kaikki merkit
"huomaamattomasti eli l{pin{kyv{sti l{vitseen", toisin sanoen hyv{
tietoliikenneohjelmisto ei "n{y" k{ytt{j{lleen ollenkaan. Ei ainakaan
sill{ tavoin, ett{ se k{sittelisi joitain merkkej{ tai tai
merkkikombinaatioita omalla erikoisella tavallaan, vaan sen tulee
uskollisesti l{hett{{ kaikki vastaanottamansa merkit edelleen ja n{in
kytke{ esimerkiksi p{{te ja is{nt{kone toisiinsa.

Ongelmaksi tulee sellainen tilanne, jossa l{hetett{v{
komento tai merkki ei olekaan tarkoitettu vastaanottajalle, vaan itse
tietoliikenneohjelmalle. Jollain tavalla t{ytyy saada her{tetty{
t{m{n tietoliikenneohjelman huomio, ja saada kyseinen komento sen
suoritettavaksi. T{t{ varten useimmat m{{rittelev{t yhden merkin
omaksi escape-merkikseen, jonka vastaanottaessaan ne her{{v{t ja
reagoivat k{ytt{j{n komentoihin. Nimi escape tulee siit{, ett{ ohjelma
"pakenee" tai poistuu normaalitilastaan ja j{{ kuuntelemaan komentoja.

Muitakin tapoja on k{yt|ss{: esimerkiksi useat p{{tteelt{ ohjattavat
ja ohjelmoitavat modeemit reagoivat kolmeen per{tt{iseen
plus-merkkiin (+), jotka tulevat riitt{v{n hitaasti ja tasatahtisesti
(t{llainen merkkikombinaatio ajoituksineen on riit{v{n harvinainen ja
voidaan aina haluttaessa v{ltt{{, joten se kelpaa "escape-merkiksi").
Ja er{{t p{{tepalvelijat reagoivat /boxed<BREAK>-merkkiin, joka ei
itse asiassa olekaan oikea merkki, vaan poikkeuksellinen, muissa
oloissa mahdoton signaalij{nnitteen pitk{aikainen vakioarvo, ja joka
siten kelpaa "escape-merkiksi".

T{llainen ohjelman oma escape-merkki tulee olla riitt{v{n
harvinainen, jotta sen k{yt|st{ t{h{n tarkoitukseen ei koidu harmia.
Ideaalitilanteessa escape-merkki ei koskaan kuulu normaaliliikenteen
valikoimaan (vrt edell{ /boxed<BREAK>).  Lis{ksi tulisi olla
mahdollista l{hett{{ se tarvittaessa my|s vastaannottajalle.  T{h{n
k{ytet{{n yleens{ sellaista sopimusta, ett{ kyseinen
tietoliikenneohjelma p{{st{{ kahdesta per{kk{isest{ escape-merkist{{n
toisen l{vitseen. T{ll|in kuitenkin keskustelevien osapuolten tulee olla
tietoisia siit{, mink{lainen v{litt{v{ ohjelma on, joten se ei olekaan niin
"l{pin{kyv{" kuin pit{isi.

Lis{ksi eri tietoliikenneohjelmistojen komponentit saattavat k{ytt{{
samaa escape-merkki{, jolloin tulee ongelmia komentaa kompaakin
erikseen. Siksi escape-merkin tulisi olla tarvittaessa k{ytt{j{n
muutettavissa.  

Esimerkki: K{ytet{{n </tt kermit> p{{te-emulointiohjelmaa, jolla ollaan
ohjelmoitavan moninopeusmodeemin v{lityksell{ yhteydess{ TLP:n
TCP//IP-p{{tepalvelijaan. T{st{ ollaan edelleen yhteydess{ </tt
finsun>-palvelukoneeseen, josta TCP//IP-palvelulla </tt telnet>
ollaan yhteydess{ OPMVAX-palvelukoneeseen, ja sielt{ Station-ohjelmiston
komennolla </tt cint> yhteydess{ supertietokoneeseen. T{ll|in
yhteydess{ on seuraavat komponentit ja niiden escape-merkit:

</copymode

ohjelma//laite   escape   

kermit            ^X     muutettavissa      mikro       --- sarjaportti
modeemi           +++    ei muutettavissa   sarjaportti --- puhelin
p{{tepalvelija   Break   muutettavissa      puhelin     --- finsun
telnet            ^A     muutettavissa      finsun      --- opmvax
cint              ^Z     ei muutettavissa   opmvax      --- cray
>

ja lis{ksi liikenteess{ kulkee aitoja ASCII-escape-merkkej{
erilaisten p{{tteen kontrollijonojen alussa. Siis my|s normaali
ASCII-escape muuttaa p{{teen toimintatilaa normaalista ruudulle
kirjoittamisesta, ja p{{te sen sijaan vastaanottaa ja toteuttaa
escape-merkin per{ss{ tulevan komennon.

My|s useissa teksti{ k{sitteleviss{ ohjelmissa --- kuten
k{ytt|j{rjestelm{n komentotulkeissa, ohjelmointikielen k{{nt{jiss{ ja
tekstink{sittelyj{rjestelmiss{ --- on sama ongelma: toisaalta annettu
tekstinp{tk{ voi olla k{sitelt{v{{ dataa ja toisaalta se voi olla
komento kyseiselle ohjelmalle. Usein n{iss{ ohjelmissa on m{{ritelty
oma escape-merkki, jolla erotetaan komennot datasta (tai
p{invastoin).  Esimerkiksi unix-komentotulkeissa eli shelleiss{
suurin osa tekstist{ on komentoa, mutta joskus halutaan suojata osa
teksti{, ettei tulkki k{sittelisi sit{, panemalla se
lainausmerkkeihin tai sijoittamalla sen alkuun (jos se on vain yksi merkki)
unixin escape-merkki eli kenoviiva (</tt/char92>). Vastaavasti
\TeX-tekstink{sittelyj{rjestelm{lle suurin osa tekstist{ on
k{sitelt{v{{ dataa, mutta komennot alkavat \TeX<>in escape-merkill{, joka
my|s on kenoviiva (</tt/char93>) englanninkieliselle versiolle ja 
vinoviiva (</tt//>) suomenkieliselle.


/section<N{pp{inm{{rittelyt unixissa>

Kirjoitetun merkin poistamiseen, komennon keskeytt{miseen yms.
erikoistoimintoihin tarkoitetut erikoismerkit ovat Unixin
alkuper{isess{ muodossa nostalgisia j{{nteit{ paperip{{te- ja
teletype-aikakaudelta.  Onneksi jopa k{ytt{j{ itse voi niit{ muuttaa.
Toisaalta my|s oletusarvoja on eri systeemeiss{ muuteltu eri tavoin,
ja toiminta saattaa riippua jopa k{ytetyst{ tietoliikenneohjelmasta.
Sotkusta selvinnee l{hinn{ kokeilemalla.

Huomaa, ett{ erilaiset sovellutusohjelmistot
usein m{{rittelev{t ohjausmerkkej{ uudelleen, joten niiden toiminta
ei aina v{ltt{m{tt{ vastaa t{ss{ annettuja kuvauksia.

Tietysti voit itsekin muutella ohjausmerkkien merkityksi{.
Voimassa olevat n{pp{inm{{rittelyt n{kee ja niit{ voi muuttaa komennolla 
</tt stty>.
 
Alla n{pp{imell{ </boxed <CTRL-x>> tarkoitetaan n{pp{inten </boxed
<CONTROL>> tai </boxed <OHJAUS>> ja </boxed <x>> yht{aikaista
painamista siten, ett{ </boxed <CONTROL>> painetaan ensin alas ja
sitten n{pp{in </boxed <x>>.

Seuraavat kontrollimerkit toimivat supertietokoneella (ja muissakin
unix-j{rjestelmiss{), ellei k{ytt{j{ ole niit{ muuttanut:
 
</leftskip=50pt %%parindent=50pt
 
/oneboxed <RETURN>
Kirjoitettu komentorivi l{hetet{{n suoritettavaksi.

/oneboxed<Ctrl-C>
Keskeytt{{ komennon tai ohjelman suorituksen, ellei kyseinen ohjelma ole
keskeytt{mist{ est{nyt.
 
/oneboxed<Ctrl-D>
Oleellisesti end-of-file-merkki. Jos 
  komento lukee teksti{ p{{tteelt{, voidaan tekstin sy|tt{minen
  lopettaa /boxed<Ctrl-D>:ll{. Suoraan shellille annettuna t{m{ merkki
  lopettaa sen suorituksen (exit). Jos kysymyksess{ sattuu
  olemaan uloimman tason komentotulkki, p{{ttyy koko istunto (logout)
  ja yhteys katkeaa.
  
>

Useimmiten (ainakin jos p{{tteen tyyppi on </tt vt100>), my|s seuraavat
n{pp{imet toimivat:

</leftskip=50pt %%parindent=50pt
 
/oneboxed<TAB> 
Siirt{{ kohdistimen seuraavan vaakasuuntaisen
tabulaattorin kohdalle (usein joka kahdeksannen merkin
kohdalla).

/oneboxed<CTRL-S> 
Tulostuksen pys{ytys.

/oneboxed<CTRL-Q> Tulostuksen jatko.

/oneboxed<DELETE> 
Poistaa yhden merkin (vasemmalle).

>

Jos p{{tetyyppi on </tt vt100> (eli p{{te VT100-, VT220- tai VT300-sarjaa tai
yhteensopiva), toimivat my|s kohdistimen ohjausnuolin{pp{imet
mm. n{ytt|editorissa </tt vi>. Mik{li nuolin{pp{imet eiv{t toimi,
niit{ "simuloidaan" kontrollimerkein /boxed<Cntrl-H>,
/boxed<Cntrl-J>, /boxed<Cntrl-K> ja /boxed<Cntrl-L>, jotka sijaitsevat
sopivasti per{kk{in n{pp{imist|ss{:

</copymode
      n{pp{in      suunta    kontrollimerkki 

      /boxed<Cntr-H>     oikealle         BS 
      /boxed<Cntr-J>     alas             LF
      /boxed<Cntr-K>     yl|s             VT 
      /boxed<Cntr-H>     vasemmalle       FF
> 


Luettelemme viel{ t{rkeimm{t VAX//VMS-edustakoneiden kanssa 
(komentotilassa) ty|skennelt{ess{
tarvittavat n{pp{imet (useilla p{{tteill{, mutta osa toimii vain
VT100//200//300-sarjan p{{tteill{):

</parindent=50pt

/oneboxed<CTRL-O>
Tulostuksen v{liaikainen esto. Ohjelma jatkaa suoritustaan mutta sen
tulostuksia ei tule en{{ p{{tteelle. Toisen kerran </boxed
<CTRL-O>>:ta painettaessa tulostus ohjautuu takaisin p{{tteelle,
ellei ohjelman suoritus ennen t{t{ ole jo loppunut. </boxed
<CTRL-O>>:n painaminen aiheuttaa p{{tteelle tulostuksen </tt output
off> tai </tt output on>.

/oneboxed<CTRL-Z> 
EOF (End of File),
sy|t|n tai ohjelman p{{t|s (n{kyy p{{tteell{ tekstin{ </tt exit>).
Useissa VAX//VMS:n varusohjelmissa lopettaa ohjelman toiminnan.

/oneboxed<CTRL-Y> 
Ohjelman lopetus (n{kyy p{{tteell{ tekstin{ </tt interrupt>).

/oneboxed<CTRL-C> 
Ohjelman tai sen osatoiminnon lopetus (n{kyy p{{tteell{ tekstin{ </tt cancel>).

/oneboxed<CTRL-U> 
Sy|tett{v{n{ olevan rivin alun poisto.

/oneboxed<CTRL-X> 
Sy|tett{v{n{ olevan rivin alun poisto (tyhjent{{ my|s kirjoituspuskurin).

/oneboxed<CTRL-J> 
Sanan poisto vasemmalle.

/oneboxed<CTRL-A> 
Komentotasolla lis{ys- ja korvaustilan vaihto.

/oneboxed<CTRL-H> 
Kohdistin komennon alkuun.

/oneboxed<CTRL-E> 
Kohdistin komennon loppuun.

/oneboxed<CTRL-T> 
Istunnon tilannekatsaus: CPU-aika yms.

/oneboxed<CTRL-R>
Korjaillun rivin uudelleentulostus (paperip{{tteill{).

/oneboxed<CTRL-W> 
Uudistaa ruudun.

/oneboxed<CTRL-B> 
Edellisen komennon takaisinsaaminen (yl{nuolin{pp{in </boxed <$/uparrow$>>).

/oneboxed<CTRL-D> 
Liikkuminen
komentorivin alkua kohti (nuoli vasemmalle </hbox <-n{pp{in>>
</boxed <$/leftarrow$>>).

/oneboxed<CTRL-F> 
Liikkuminen
komentorivin loppua kohti (nuoli oikealle </hbox <-n{pp{in>>
</boxed <$/rightarrow$>>).

/oneboxed<$/downarrow$> 
Siirtyy komentohistorialistan seuraavaan komentoon (alanuolin{pp{in).

>

/endinput

 
