Seppo Mustonen: Sukrojen ohjelmointi Survossa

Liite: Sukrokielen koodisanat

Näppäinkoodeja

{R} ENTER (samalla myös rivinsiirto listauksessa)
{home} HOME
{pgdn} PgDn (seuraava sivu)
{pgup} PgUp (edellinen sivu)
{erase} ERASE (ctrl-END)
{ins} INSERT
{del} DELETE {del3} same kuin {del}{del}{del}
{ins line} Lisää rivi (alt-F9)
{del line} Poista rivi (alt-F10)
{act} ESC (aktivoi Survon komento)
{r} Nuoli oikealle {r3} sama kuin {r}{r}{r}
{l} Nuoli vasemmalle {l3} sama kuin {l}{l}{l}
{u} Nuoli ylös {u3} sama kuin {u}{u}{u}
{d} Nuoli alas {d3} sama kuin {d}{d}{d}
{(} {)} Merkit { ja }
{sp} Välilyönti
{tab} TAB
{line end} END
{help} HELP (F1)
{pre} PREFIX (F2)
{touch} TOUCH (F3)
{disk} DISK (F4)
{form} FORM (F5) {form3} sama kuin {form}{form}{form}
{merge} MERGE (F6)
{ref} REF (F7)
{exit} EXIT (F8)
{words} WORDS (alt-F2)
{copy} COPY (alt-F3)
{block} BLOCK (alt-F4)
{search} SEARCH (alt-F5)
{file act} Survo datatiedoston aktivointi (alt-F6)
{code} CODE (alt-F7)

Kontrollikoodeja ja -käskyjä

{end} päättää ohjelman.
{init} alustaa toimituskentän normaalitilaan. Kentän sisältö eikä kohdistimen paikka ei muutu.
{break off} estää nappien . + ja - vaikutuksen sukron ollessa toiminnassa. Käytössä näppäimistösukroissa.
{break on} palauttaa nappien . + ja - vaikutuksen.
{message} <merkkijono>@ näyttää sanoman <merkkijono> kuvaruudun alimmalla rivillä. Ennen sukron normaalilopetusta sanoma on poistettava käskyllä {message}@ .
{message Wi} näyttää paikan Wi sisältämän sanoman.
{message shadow <merkki>} valitsee {message}-käskyllä annettavan sanoman näyttömuodon. Oletus on {message shadow 1} eli sanomat näytetään punaisina.
{wait <aika>} aiheuttaa odotuksen <aika> ( yksikkö 0.1 sekuntia).
{tempo <nopeus>} asettaa sukron nopeuden. Oletusnopeus on {tempo 2}. {tempo 1} on nopein mahdollinen. {tempo -1} lisää nopeutta ja {tempo +1} vähentää sitä yhdellä yksiköllä. Tavallisesti vain näitä suhteellisia muotoja tulisi käyttää.
{keys i} (i=0,1,2) osoittaa, näytetäänkö sukrossa esiintyvät näppäinten painallukset ruudun oikeassa alakulmassa:
{keys 0} (oletus) ei näyttöä,
{keys 1} näppäinten nimet näytetään,
{keys 2} käyttäjän tulee itse painaa näytettyä näppäintä ennenkuin sukro jatkaa.

Hyödyllisiä näppäinyhdistelmiä sukroissa

{line start}, {pre}B vie kohdistimen nykyisen rivin alkuun.
{next word}, {pre}W siirtää kohdistimen seuraavan sanan alkuun.
{find <merkki>}, {pre}C<merkki> etsii merkin seuraavan esiintymiskohdan rivillä.
{pre}{pre} siirtää kohdistimen rivin näkyvän osan loppuun.
{pre}{R} asettaa nykyisen sarakkeen vasemmaksi reunaksi.
{pre}S näyttää ja poistaa varjorivin.
{pre}P poimii kohdistimen osoittaman merkin CODE-napilla kirjoitettavaksi.
{pre}I poistaa lisäystilan kirjoitettaessa.
{pre}D poistaa viitepaikan, joka on asetettu REF-napilla.

Sukromuistiin kohdistuvia käskyjä

{stack char} tallettaa kohdistimen osoittaman merkin sukromuistin loppuun.
{save char Wi} tallettaa kohdistimen osoittaman merkin paikkaan Wi.
{stack word} tallettaa kohdistimen osoittaman sanan sukromuistin loppuun.
{save word Wi} tallettaa kohdistimen osoittaman sanan paikkaan Wi.
{stack cursor} tallettaa kohdistimen sijainnin, rivi- ja sarakenumerot sukromuistin loppuun.
{save cursor Wi,Wj} tallettaa kohdistimen rivinumeron paikkaan Wi ja sarakenumeron paikkaan Wj.
{stack corner} tallettaa kentän ensimmäisen näkyvän rivin ja sarakkeen numerot sukromuistin loppuun.
{save corner Wi,Wj} tallettaa ensimmäisen näkyvän rivin numeron paikkaan Wi ja sarakkeen numeron paikkaan Wj.
{stack dim} tallettaa toimituskentän rivien ja sarakkeiden lukumäärät sukromuistin loppuun.
{save dim Wi,Wj} tallettaa toimituskentän rivin määrän paikkaan Wi ja sarakkeiden määrän paikkaan Wj.
{stack line} tallettaa nykyisen rivin kohdistimesta oikealle sukromuistin loppuun.
{save line Wi} tallettaa nykyisen rivin kohdistimesta oikealle paikkaan Wi.
{stack datapath} tallettaa Survo datapolun (näkyy kentän otsikkorivin oikeassa laidassa) sukromuistin loppuun.
{save datapath Wi} tallettaa Survon datapolun paikkaan Wi.
{stack default datapath} tallettaa Survon oletusdatapolun (määritelty tiedoston SURVO.APU rivillä edisk) sukromuistin loppuun.
{stack tempdisk} tallettaa Survon tilapäisille tiedostoille käyttämän polun (määritelty tiedostossa SURVO.APU rivillä tempdisk) sukromuistin loppuun.
{save tempdisk Wi} tallettaa tilapäistiedostojen polkutunnuksen paikkaan Wi.
{stack systemdisk} tallettaa Survon systeemilevyn tunnuksen (esim. C:) sukropinon loppuun
{save systemdisk Wi} tallettaa Survon systeemilevyn tunnuksen paikkaan Wi.
{save system <parametri>} tallettaa tiedostossa SURVO.APU sanalla <parametri> määritellyn systeemiparametrin sukromuistin loppuun.
{save system <parametri> Wi} tallettaa tiedostossa SURVO.APU sanalla <parametri> määritellyn systeemiparametrin paikkaan Wi.
{del stack} tyhjentää koko sukromuistin.
{del stack Wi} tyhjentää sukromuistin paikasta Wi eteenpäin.
{get key} lisää käyttäjän painaman näppäimen merkin sukro- muistin loppuun. Jos on painettu erikoisnäppäintä, sen vaikutus toteutuu ja muistiin pannaan SK .
{get key Wi} tallettaa käyttäjän painaman näppäimen paikkaan Wi.
{save stack} tallettaa koko sukromuistin tilapäisesti.
{load stack} liittää käskyllä {save stack} talletetun sukromuistin sisällön jatkoksi nykyiselle muistille.
{save stack <tiedosto>} tallettaa sukromuistin sisällön levylle (rivillä tempdisk systeemitiedostossa SURVO.APU osoitettuun hakemistoon).
{load stack <tiedosto>} lukee käskyllä {save stack <tiedosto>} talletetun sukromuistin nykyisen paikalle. <tiedosto> voidaan antaa suoraan nimellä {save stack TEMP1} tai sukromuistin välityksellä {save stack W1} .
{save field <tiedosto>} tallettaa nykyisen toimituskentän .EDT -tiedostoon tempdisk-hakemistossa. Tämä on näkymätön tapa toimituskenttien tilapäiseen tallettamiseen. Kenttä luetaan takaisin esim. käskyillä {save tempdisk W1}{line start}{erase}{erase} LOAD {print W1}<tiedosto>{act} .
{print Wi} tulostaa muistipaikan Wi sisällön toimituskenttään.
{write Wi} kirjoittaa muistipaikan Wi sisällön toimituskenttään.
{find Wi} etsii nykyiseltä riviltä muistipaikan Wi sisältämän sanan ensimmäisen merkin.
{pre}l<näppäin> liittää the näppäimen nimen sukromuistin loppuun. Esim. {pre}l{home} liittää sanan 'HOME'.
{jump Wi,Wj,Wk} vie kohdistimen riville Wj sarakkeeseen Wk siten, että rivi Wi näkyy ensimmäisenä. Jokaisen parametrin paikalla voi olla kokonaisluku.
{jump Wi,Wj,Wh,Wk} toimii vastaavasti, mutta lisäksi Wh näkyy ensimmäisenä sarakkeena.

Viitepaikat ja ehdolliset käskyt

+ Osa2: <sukrokoodi jatkuu> (merkki + kontrollisarakkeessa) merkitsee ohjelmalistauksessa' viitepaikan Osa2. Myös kaksoispiste ja sen perässä oleva väli kuuluvat viitemerkintään.
{goto Osa2} saattaa ohjelman jatkumaan kohdasta Osa2.
{load Jatko} jatkaa nykyistä sukroa ohjelmalla Jatko. Sukromuisti ja muut systeemiasetukset säilyvät.
- if <ehto> then goto <viite> (merkki - kontrollisarakkeessa) jatkaa ohjelmaa paikasta <viite>, jos <ehto> on voimassa. Muuten ohjelma jatkuu suoraan.
- if <ehto> then load <sukro> jatkaa ehdon toteutuessa toisella sukrolla.
- switch Wi
- case <arvo1>: <goto viite | load sukro | continue>
- case <arvo2>: <goto viite | load sukro | continue>
- jne.
- default: <goto viite | load sukro | continue>
haarauttaa sukron muistipaikan Wi arvojen mukaan eri vaihtoehtoihin.

Käyttäjän vuorovaikutus

- prompt <Kysymys ?> {}
- default <oletusvastaus>
- answer <muistipaikka, johon vastaus talletetaan (ei pakollinen)>
- length <vastauksen enimmäispituus merkkeinä>
- wait <odotusaika 0.1 sek.>
esittää käyttäjälle kysymyksen, jonka vastaus tallentuu answer-rivillä annettuun muistipaikkaan. Jos answer-rivi puuttuu, vastaus sijoittuu sukromuistin loppuun. Oletusvastaus annetaan joko kirjaimellisesti tai muistipaikan välityksellä. Painamalla nappia ESC kysely keskeytyy ja vastaukseksi asetetaan teksti (break) .
- on key
- key <nappi1>: <goto viite | load sukro | continue>
- key <nappi2>: <goto viite | load sukro | continue>
- jne.
- wait <odotusaika 0.1 sek.>
odottaa, kunnes käyttäjä painaa jotain nappia ja haarauttaa sukron valitun napin mukaisesti. Jos valinta ei ole key-rivien luettelossa, valitaan ensimmäinen vaihtoehto. Myös seuraavat erikoisnäppäimet sallitaan: ENTER, RIGHT, LEFT, UP, DOWN, HOME, HELP, ESC.
{interaction on} annettuna ennen johonkin vuorovaikutteiseen toimintaan (esim. FILE SHOW) siirtymistä vapauttaa ko. toiminnan sukron holhouksesta. Käyttäjälle jää mahdollisuus toimia omin neuvoin. Vasta kun toiminta lopetetaan, sukro jatkaa normaaliin tapaan.
{interaction off} palauttaa sukrojen toiminnat automaattisiksi niin, että vuorovaikutteisetkin Survon toiminnat (kuten FILE SHOW) ohjataan sukrolla. Sukrot toimivat normaalisti tässä tilassa.

Aritmetiikka

{Wi=Wj} Paikan Wj sisältö kopioidaan paikkaan Wi.
{Wi=Wj+Wk} Yhteenlasku
{Wi=Wj-Wk} Vähennyslaku
{Wi=-Wj} Etumerkinvaihto
{Wi=Wj*Wk} Kertolasku
{Wi=Wj/Wk} Jakolasku
{Wi=Wj%Wk} Jakojäännös kokonaislukujen osamäärässä
{Wi=Wj&Wk} Merkkijonojen asettaminen peräkkäin
  Muistipaikkojen asemasta operandeina voi olla myös vakioita.

Sukrojen kytkeminen toisiinsa

{load <sukro>} jatkaa nykyisen sukron toimintaa toisella. Sukromuisti ja muut systeemiparametrit säilyvät.
{call <sukro>} kutsuu toista sukroa aliohjelmana. Sukromuisti ja muut systeemiparametrit säilyvät.

Virhetilanteet

{error handler <sukro>} vaihtaa nykyisen virheenkäsittelysukron toiseksi.
Sukrojen ohjelmointi Survossa - Seppo Mustonen 1991
  1. Johdanto
  2. Esimerkki
  3. Sukrokielen koodisanoja
  4. Sukromuisti
  5. Hapuilukoodit, tulostus ja kohdistimen liikuttelu
  6. Sukrojen aloittaminen ja kytkeminen toisiinsa
  7. Ehdolliset toiminnat
  8. Käyttäjän vuorovaikutus
  9. Aritmetiikka ja muistin välitön hallinta
  10. Sukrotiedostot
  11. Sukrojen lajit
  12. Sukrojen laatiminen käytännössä
  13. Virhetilanteet
  14. Näytesovelluksia
Liite: Sukrokielen koodisanat