Haittaohjelmien kauneus SATELLIITTIPAIKANNUS SUOMEN SUOSITUIN ATARI KOTIPELI KIMBLE REAL 3D 3D-veteraani Suomesta. F I 1 1 , 9 € 2 2 5 .1 LIITTEENÄ PELILEHTI QBASIC Paluu juurille MAINFRAME KOTIKONEELLA VIRUS = TAIDETTA. Sinclair ZX Spectrum Gimmick! Xbox ja Dreamcast kuntoon TIETOKONEKULTTUURIN ERIKOISLEHTI 13. VUOSIKERTA 2025.1 S K R O L L I
Siitä käynnistyy kiireinen jakso, jossa keskustelun määrä toimituksen Slackissa räjähtää normaalista taustakohinasta päivittäisiksi viestiketjuiksi. Mielipiteitä kun on yhtä monia kuin lukijoitakin: joidenkin mielestä esimerkiksi juttua vanhoista tietokoneista on toisinaan liikaa, toisten mielestä varsin sopivasti ellei suorastaan liian vähän. Eikä tämä luonnollisesti olisi onnistunut ilman teitä, rakkaat lukijat, joten lämmin kiitos tuestanne – ja tästä lähtee jälleen uusi neljän numeron vuosikerta kaikilla mausteilla! 4041 0955 PEFC/02-31-201 PEFC-sertifioitu Tähän tuotteeseen käytetty puu on kestävästi hoidetuista metsistä www.pefc.fi 2025.1 2. SKROLLI – Tietokonekulttuurin erikoislehti PÄÄKIRJOITUS Täydellinen Skrolli Tilaukset Yhteydenotot Lukijakanavat Mediamyynti Kotisivut Päätoimittaja Toimituspäällikkö, taitto Digipäällikkö Kuvatoimittaja Talous Julkaisija Painopaikka tilaaskrolli.fi toimitus@skrolli.fi skrolli.fi/lukijakanavat myynti@skrolli.fi skrolli.fi Mikko Heinonen Manu Pärssinen Toni Kuokkanen Mitol Meerna Anssi Kolehmainen Skrolli ry Grano Oy, Vaasa ISSN 2323-8992 (painettu) ISSN 2323-900X (verkkojulkaisu) Toimittajat Tämän numeron avustajat Kansikuva Sisällysluettelon kuva Jarno N. Parasta Skrollia on sellainen, jossa on panosta mahdollisimman monesta eri suunnasta: toimitukselta, lehden ympärille rakentuneen yhteisön ytimestä ja myös sen ulkopuolelta. Eräs lehden perusajatuksia on alusta alkaen ollut nostaa kuuluviin erilaisia ääniä ja tarinoita, riippumatta siitä, mikä on niiden kaupallinen potentiaali. Reilu kuukausi ennen painopäivää pidämme aineistotsekkauksen, jossa tarkistamme mitä on saapunut, mitä vielä puuttuu ja mitä on mahdollista saada aikaan näistä aineksista. Ajoittain lueskelen huvikseni vanhoja numeroita, ja kun saan lopetettua seulasta läpi päässeille kirjoitusvirheille irvistelyn, huomaan että vuosien varrella Skrollissa on julkaistu kaikenlaista kiinnostavaa, joka kestää lukemisen näin vuosien jälkeenkin. Kauppinen, Tea Kauppinen, Ronja Koistinen, Valhe Kouneli, Miia Oinonen, Mikko Rasa, Tommi Uschanov, Susanna Viljanmaa Jari Arkoma, Ville Erkkilä, Guus Hoeberechts, Juha Hollanti, Mikko Hyppönen, Jari Jalonen, Lotta-Liisa Joelsson, Ville Kankainen, Antti Laaksonen, Marko Latvanen, Jarkko Lehti, Anne-Mari Musturi, JJ Nääs, Mikael Peltomaa, Markku Reunanen, Kimmo Rinta-Pollari, Matilda Smeds, Timo Soilamaa, Mikko Torvinen, Ismo Utriainen, Tytti Viljanen, Solja Vuoriranta Sakari Leppä Ruudulla oleva kuva: Grant Neisner Sakari Leppä Mikko Heinonen päätoimittaja A loin ohimennen pohtia, että millainen omasta mielestäni olisi täydellinen Skrollin numero. Tässä tärkeässä osassa on ollut ajatus siitä, että toimitus on tarvittaessa valmis näkemään paljonkin vaivaa jutun viimeistelyyn, kunhan kirjoittajalla riittää aiheeseen intohimoa ja substanssiosaamista. Parasta Skrollia on myös se, miten esimerkiksi tämän numeron toimitustyö on sujunut. Osa lukijoista on pitkien juttujen ystäviä, osa haluaa lukea tiiviimmin monesta eri asiasta – ja tämä koulukuntajako koskee tietysti toimitustakin. Alanko, Jari Jaanto, Tapani Joelsson, Heikki Jungman, Jukka O. Tämä meemikuvasta ja sitä seuranneesta someja IRC-kuohunnasta alkanut pikku lehtiprojektimme on nyt teini-ikäinen. Näiden talkoohommien epävarmuus tarkoittaa kuitenkin sitä, että aina kaikki suunnitellut asiat eivät toteudu, ja sitten lehdestä tulee vähän erilainen kuin alunperin piti. Varmistellaan asioita, tönitään juttuja prosessissa eteenpäin, kysellään kuvituksen tilannetta… ja vähän kerrassaan lopputulos alkaa muotoutua. Homma meni siis aivan kuten oli alunperin tarkoituskin. Se, mitä itse pidän täydellisenä Skrollin numerona, ei oikeastaan liity edes niinkään sisältöön vaan lehden tekoprosessiin. Tällä kertaa olimme hyvin onnekkaita, sillä miltei valmista tavaraa tipahteli postilaatikkoon kiitettävästi jo viime vuoden puolelta alkaen, ja saimme kasaan omasta mielestäni hyvin kiinnostavan paketin erilaisia aiheita. Tällaista yhteistä projektia on ilo tehdä tässä hyvässä porukassa. Keskimäärin kuitenkin on ilahduttavaa, miten yhteisö ottaa jokaisen numeron vastaan, ja tavoitteena on luonnollisesti tarjota kaikille vähän kaikenlaista. Toisinaan tämän huomaa selvemmin kuin toisinaan. Mitä useampi toimituksen vapaaehtoisista ehtii tähän mielipiteiden vaihtoon osallistua, sitä parempi on lopputulos ja sitä useampi voi kokea lehden omakseen. Monia näiden kansien väliin päätyneitä juttuja olisi tuskin nähty missään, ellei Skrolli olisi ottanut asiakseen jalostaa niitä painettavaan muotoon
87 Lukijakanavien säännöt Jotta kaikilla olisi kivaa. 20 Jouluista DOS-koodausta Jokajouluiset ohjelmointipähkinät QBasicilla. 34 Kitaraviritin siirtyy selaimeen Rust muuntuu WebAssemblyksi. 76 Sarjakuva Turrikaanien yössä käy köpelösti. 84 Oikaisuja ja palautetta Poimintoja postilaatikosta ja lukijakanavilta. 31 Skrolli Disobeyssä Pikaraportti tietoturvatapahtumasta. 26 Huippuratteja Tampereelta Simucube päätyi melkein vahingossa alansa parhaimmistoon. 72 Rakkaudesta lajiin Pöytäpelaaminen lumoaa arkiseen luovuuteen. 83 Skrolli-kalenteri Kun et halua muuttua kuutioksi, tarkasta missä tapahtuu. 40 Konemainontaa kolmessa maassa Tutkimusartikkeli luotaa mikrojen markkinointia. 89 – 123 Retro Rewind Videopelilehti Skrollin liitteenä. 30 Kolumni: Mikro avaruusmatkalla Kolumnissa kovin kasibittinen kiertoradalla. 68 Torpedoja ja tykkitulta Pelipalstalla Jukka merisotii. 80 Demoskeneä tuorein silmin Skenesetä puhisee. 7 Kiehtova MVS-seikkailu Kokeillaan ajaa keskuskonetta kotimikrolla. 2025.1 Keskuskoneen pyörittäminen kotitietokoneella voi olla seikkailu. 29 Kolumni: Minä ja Individual Computers Mikon terveiset Saksaan. 78 Demoskene-dokkari Dokumenttielokuva demoista ja niiden tekijöistä. 70 Ei näin! Kertomus pelialan arjesta. Lisää siitä sivulla 7.. 56 Mobiilipelaamisen ensiaalto Kun elektroniikkapelit saapuivat Suomeen. 28 Amiga VGA-monitoriin Neljäs painos suositusta näyttösovittimesta. 18 Tarkkaa satelliittipaikannusta Senttimetrien tarkkuutta kotikonstein. 2 Pääkirjoitus 4 Haittaohjelmataiteen museo Viruksista visuaalista nautintoa. 16 Kolumni: Jotain kovin tuttua... 32 Kun NTP on liian karkea Kirjoittaja rakensi supertarkan PTPv2-aikapalvelimen. 37 Napsterista Netflixiin Piraattimuistelut modeemiajasta striimauspalveluihin. 64 Peliarvostelu: Tyrant's Realm Suomalaista roguelikeä – suomeksi! 66 Parempi internet JOKstoria pohtii kadonneita klassikkosaitteja. 58 Suomalaiset pelit: Kimble Kaikille tuttu peli kävi läpi monia vaiheita. 44 Suomen suosituin Atari Atari-aikakirjat, osa 3: Atari ST 52 Renderöintiä REAL 3D:lla Suomalaista säteenseurantaa jo Amiga-aikakaudelta asti. 81 Kolumni: Nimi, jota ei kehtaa sanoa Veteraaniryhmän pitäisi vaihtaa nimensä. Onko mainframejen aika tullut takaisin. 61 Kauhukuvia internetistä Anteeksi, Skypessäni on aave. 82 Kallion tietokonemuseo I love 8-bit näyttely telakoitui Helsinkiin. 80 Skene-dokkari arviossa Ukkoutumisuhka vältetty
WithSecuren uudessa, Helsingin Jätkäsaaressa sijaitsevassa pääkonttorissa esitellään tavallisuudesta poikkeavaa digitaidetta. Suomi on yhdistysten lisäksi myös erilaisten museoiden luvattu maa. Voiko virus olla taidetta. Teksti: Mikko Heinonen Kuvat: Ville Erkkilä, Mikko Hyppönen, Museum of Malware Art KULTTUURI 2025.1 4
Näyttelyn vuorovaikutteisin teos on Iikko Kuuselan luoma W/ Threatscape, joka aktivoi kävijän kalastamaan kämmenellään haittaohjelmia netin kohinasta. Tässä kuvaamieni teosten lisäksi esillä on muutakin, ja kaikki ovat ehdottomasti näkemisen (tai kuulemisen) arvoisia jo pelkän aihepiirin erikoisuuden ansiosta, taiteellisista arvoista sitten puhumattakaan. J oskus sitä joutuu hieraisemaan silmiään vielä toisenkin kerran, ennen kuin uskoo lukemansa. Minut on siis kutsuttu… haittaohjelmataiteen museon avajaisiin. Aihe on ajankohtainen, kuvat sopivan uhkaavia ja esillepano näyttävä – mutta kuten niin usein näissä tapauksissa, itselleni jäi hieman epäselväksi mikä osuus oli taiteilijan, mikä taas rutiinin työtä. En tarkoituksella vilkaissut museon sinällään ansiokkaita verkkosivuja ennen käyntiäni, sillä halusin yllättyä siitä, millainen esillepano näille teoksille oikein on kehitetty. Tubettaja danooct1:n eli Daniel Whiten kanssa yhteistyössä toteutettu virusarkisto kattaa vuodet 1987–2024, ja videot on tallennettu ihastuttavan puristisesti aidolla laitteistolla – välillä jopa suoraan kuvaputkelta. Lupailipa kuraattori avajaisissa myös, että näkyville saadaan pian levyke, jolla Brain.A tuotiin aikoinaan Suomeen. Kaltaiseni retrohörhö olisi saanut illan kulumaan jo pelkästään näiden lukuisien videoiden fiilistelyn parissa, mutta ne ovat vain osa museon tarjontaa. Talon ala-aula on omistettu selvästikin Hyppösen aivoituksista alkunsa saaneelle museolle. Museo on avoinna perjantaisin klo 12–16, muina aikoina vähintään neljän hengen ryhmille tilauksesta. Videoseinälle ilmestyvän QR-koodin lukemalla saa öttiäisensä muistona vaikka puhelimeen – ohessa oma saaliini. Sanomattakin oli selvää, että varasin heti junaliput Helsinkiin tällaista ihmetystä katsomaan, etenkin kun museon kuraattorina ja avajaisillan isäntänä toimi Skrolliakin monessa käänteessä avittanut ja avustanut Mikko Hyppönen. Cyberwar-nimisessä teoksessa ”kybergootti ja muusikko” Greg Linares on generoinut AI-kuvia omalla rutiinillaan käyttäen pohjana Industroyer-haittaohjelmaa, jolla Venäjä hyökkäsi Ukrainan sähköverkkoja vastaan. CLICK FOR LOVE, 2024 HUGO LANKINEN, KASPER HILDÉN / TAIKOA 5. Ja koska eletään nykyajassa, ei tekoälykuviltakaan luonnollisesti vältytä. Jos tämä käy turhan kuormittavaksi, on myös mahdollista istua tuoliin ja laittaa iPodista soimaan Master Boot Record -yhtyeen albumi VIRUS.DOS. Sisään saapuessani olikin miellyttävää nähdä kasapäin metallirunkoon aseteltuja näyttöjä, joilla vilisi vanhan koulun MS-DOSja Windowsohjelmista tehtyjä tallennuksia. Ulos asti näkyy Hugo Lankisen ja Kas per Hildénin kierrätetyistä ja pinkillä spray-maalilla värjätyistä hiiristä tehty Click for Love, joka ottaa inspiraatiotaan sähköpostit vuosituhannen vaihteessa tukkineesta ILOVEYOU-haittaohjelmasta. Raitiolinja 7 kulkee käytännössä suoraan pääoven eteen rautatieasemalta, eikä matkaa Ruoholahden metroasemaltakaan juuri tule. Tosiaankin, F-Securen jakautumisessa vuonna 2022 erilliseksi yhtiöksi irtautunut WithSecure, joka keskittyy tietoturvapalveluiden tarjoamiseen yritysasiakkaille, on muuttanut uusiin hienoihin tiloihin Jätkäsaareen, ihan siihen pelijätti Supercellin naapuriin. Itse hiuksenhienosti CIH-tartunnan aikoinaan välttäneenä katselinkin mieluiten ihan vain videolta, mitä laitteistoille tapahtuu viruksen iskiessä. WC-tiloissa puolestaan voi kuunnella Ville MJ Hyvösen teosta Uncanny Whispers, joka kuiskuttelee miellyttävästi kävijän korvaan AI-äänen lukemaa tietojenkalastelua höystettynä muun muassa modeemien kättelyllä, C64:n latausäänillä ja pakettiradiolähetyksillä. Pääsymaksua ei peritä
Lisätiedot ja vierailuvaraukset: museumofmalware.art ARANEOMORPH, 2024 JOEY HOLDER 2025.1 6
SOFTA S opivalla käyttöjärjestelmällä varustettu keskustietokone kykenee jakamaan suoritusaikaa usean käyttäjän yhtäaikaiseen käyttöön tekemällä paljon asioita niihin erikoistuneissa järjestelmissä. Teksti: Jari Arkoma Kuvat: Susanna Viljanmaa, Jari Arkoma seja” nähdä käytössä yhä vieläkin, etenkin jos huomaa kiinnittää huomiota kassapäätteisiin tietyissä yrityksissä asioidessaan. Onneksi on olemassa Turnkey-paketointeja, joiden avulla näihinkin kysymyksiin löytyy helposti vastauksia. Miten MVS 3.8 sitten toimii. Päätetyyppi 3270 taas siirtää tietoja lohko kerrallaan, ei tyypillisesti yksittäisiä merkkejä. IBM:llä oli myös tarjolla monen montaa eri konetyyppiä, jotka olivat usein kuitenkin selkeästi sukua toisilleen. Päätteetkin toimivat eri tavalla kuin vaikkapa Unix-maailmassa. Tämä tapahtuu vähän samaan tyyliin kuin C64:n levyasemassa tai Amigassa, jonka erikoispiirit jakavat suorittimen taakkaa. Mistä käyttöjärjestelmä koostuu, miten siellä liikutaan tai käännetään omia ohjelmia ja miten voi käynnistää komentojonon saati kokonaisen oman ajon. Vaikka IBM AS/400 -sarjan myynti onkin jo päättynyt, samoin kuin koko iSeriesin, voi ”aaMainframe kotikoneella Mainframet eli keskustietokoneet tai keskuskoneet olivat aikoinaan ATK:n ytimessä. Esimerkiksi S/370-puolella malleja oli lähtien pienistä kokoonpanoista järeisiin – välimalleja unohtamatta, tarpeista ja budjetista riippuen. Ne olivat käytännössä jotain, mihin ihmiset olivat päätteillä tai terminaaliemulaattorilla yhteydessä modeemien tai muiden kiinteiden yhteyksien avulla ja joilla tehtiin tietojenkäsittelyä automaattisesti – tavallaan; vaikka myös automaattisesti tapahtui asioita, paljon tehtiin käsin. Tuossa yhteydessä tapahtuu IPL (Initial Program Load), joka vastaa omalla tavallaan sen koneen käynnistystapahtumia, missä emulaattorikin käynnistetään. Ne olivat fyysisestikin tilaa vieviä laitteita, jotka koostuivat usein yhdestä tai useammasta suuresta kehikosta. Nauhureissa, levyjärjestelmissä, pääteohjaimissa jne. Ensimmäiseksi käynnistämme skriptin, joka käynnistää emulaattorissa yhden keskustietokonemallin kokoonpanon levyineen, nauhoineen, tulostimineen ja käyttöjärjestelmineen päivineen. Keskitymme tässä kuitenkin valmiiksi paketoituun Hercules + S/370 + MVS 3.8 -maailmaan eli IBM:ään ja sen historiapuolen jatkumoon. Toki muutkin valmistajat tekivät keskustietokoneita. IBM:n p-sarja on elossa yhä vieläkin, lähinnä AIX-alustana, jatkaen sekin omaa pSeries-haaraansa. IBM:n keskustietokoneet ovat nykyään z-sarjaa (zSeries). Esimerkiksi VT100-pääte kaiuttaa jokaisen kirjoitetun kirjaimen näytölle, käyden kääntymässä palvelimen CPU:lla asti. Aiempaa automaattisemmin kuitenkin. Muut niihin liittyvät järjestelmät olivat tyypillisesti hieman pienempiä tai ainakin matalampia palasia ympäri konesalia. Päätteitä ohjasi tavallisesti sitä varten oleva pääteohjain, joka puolestaan keskusteli sen varsinaisen keskustietokoneen alijärjestelmän (VTAM, Virtual Telecommunications Access Method) kanssa. Keskustietokoneen pikkuserkkuja ja niiden jälkiä saattaa nähdä yhä vieläkin joissain paikoissa. Tyypillisesti eräajot kaupan alalla laskivat ostoreskontran, varastosaldot, ostoennusteet, tilausten käsittelyt ja niin edelleen. Koska käytössä ei ole BIOSia (UEFIsta ei nyt edes puhuta) tavallisimpia rutiineja 7. on paikallista älyä sen verran, että ne suorittavat varsin itsenäisesti asioita keskussuorittimen (tai -suoritinten) tehdessä lähinnä raskaimmat laskennat ja varsinaiset ajot. Näiden lisäksi tapahtumia ja tehtäviä voi suorittaa reaaliaikaisemminkin transaktiopalvelinten avulla, joista tyypillisiä ovat CICS (Customer Information Control System) tai DTS (Distributed Transaction Service). Nimen z tulee sanoista zero downtime
Samaa kuin useimmiten muillakin käyttöjärjestelmillä on tapana tehdä, eli suorittaa ohjelmia. Tämä MVS 3.8j -versio on 1980-luvun alusta, mutta toiminnot muistuttavat toisiaan myös muissa versioissa sekä muissa IBM:n näiden arkkitehtuurien käyttöjärjestelmissä, ainakin jonkin verran. Yleensä keskustietokoneen (tai -koneiden) kaverina on HMC (Hardware Maintenance Console) tai nykyisin sen virtuaalinen vastine, eli erillinen tietokone jolla valitaan raudan kokoonpanoja sekä sitä, miltä laitteelta käyttöjärjestelmä (tai muu ohjelma) ladataan. Muistiavaruuden jälkeen on pisteitä, jotka näyttävät muuta tietoa. GPR General purpose register, yleiskäyttöiset rekisterit CR Carry register, siirtorekisteri (aritmeettisiin operaatioihin) AR Access registers, yhdessä yleiskäyttöisten rekisterien kanssa virtuaalimuistin käyttöön FPR Floating point registers, liukulukurekisterit Muistiosoitteen jälkeen näytetään suoritettavien käskyjen määrä miljoonina laskutoimituksina sekunnissa (MIPS) sekä IO-toimintojen määrä sekunnissa (IO/s). Rautakonsolista voi näyttää rekisterien ja muistiosoitteiden arvoja. Mukana tulee useita pelejäkin, kuten DUCHESS, minkä lisäksi internetistä löytyy tietenkin lisää. MVS:n käynnistyessä käynnistyy ensin pieni assemblerilla kirjoitettu Nucleus-ydin osineen, joka hoitaa vähän vastaavia asioita kuin vaikkapa Linuxinkin ydin: muistinhallinnan, IO:n ja niin edelleen. Linux-vertailua jatkaen loput käynnistetään ikään kuin rc.local-tyyliin, initin ollessa käytännössä skriptejä ja parametreja, jolla eri osia ohjataan. Tämän maailman tiedostoista käytetään nimeä tietojoukko (data set), ja hakemistomaisia toimintoja vastaa katalogi. Rekistereitä on 16 kappaletta ja halutut rekisterit voi valita näkyviin painamalla sen alkukirjainta. Konsolissa näkyy PSW (program status word) sekä muistiavaruuden koko. Kun käyttöjärjestelmä on saatu käyntiin, siihen käynnistyvät vielä omat alijärjestelmänsä. Hercules-emulaattorissa ESC-näppäimellä voi vaihtaa rautakonsolin ja käyttöjärjestelmän konsolin välillä. Teemme myös oman katalogin ja lähetämme terminaaliemulaattorin avulla sinne tietojoukon eli tiedoston, joka voidaan käynnistää komentojonotiedostona TSO:sta. Koska koneilla tehtiin siihen aikaan hyvin paljon työjonoja (batch), käynnistyvät sitä hoitavat alijärjestelmät. S/390-arkkitehtuurissa muistiavaruus on 31 bittiä, joten sen muistia voidaan käsitellä kahden gigatavun avaruutena. Siihen käy vaikka vanhempikin tietokone, josta löytyy Linux, MacOS tai Windows. (Kiitokset nimimerkille doopledi Skrollin Discordin #tekniikka-kanavalla, missä kummastelin big-endianin suomennosta.) Hercules osaa emuloida useampaa eri laitetyyppiä prosessoreineen. Pisteiden tarkemmat merkitykset voi katsoa myös Herculeksen (Hyperion) lähdekoodista, dyngui.c-tiedoston UpdateCPUStatus() -funktiosta. Lisäksi tarvitaan emulaattori, ja tässä tapauksessa sellainen on Hercules. Sillä voi osoittaa maksimissaan 16 Mt muistia. Nykyiset suorittimet ajavat emulaattoria sen verran rivakasti, että usein se käytännössä odottelee tekemistä. Lopuksi ajetaan koko pino sammuksiin. Samasta paikasta voi määritellä CPU-määrät, arkkitehtuurin, laitteita, aikavyöhykkeen (TZOFFSET +/ttmm -muodossa) ja muuta. Rautaa emuloiden Koska harvalla on kotona keskuskoneelle tilaa (tai halua maksaa sellaisen sähkölaskua), tarvitaan jokin tietokone emulaattorille. Tämän paketoinnin mukana tulee mukana myös interaktiivisempaan käyttöön tarkoitettu alijärjestelmä TSO (Time Sharing Option), joka on hieman shellimäinen olio sekä valikkopohjainen ISPF, joka helpottaa interaktiivista käyttöä ja joka saattaa tulla tutummaksi myöhemmin. Päätteiden käsittelyyn tarvitaan omansa, ja VTAM vilahtaakin käynnistyessään konsolilla. Kahden pisteen jälkeen 24:stä yleensä näkyvä W kertoo, että CPU odottaa tekemistä. Z-sarjassa muistiavaruus on 64 bittiä. Lähetetään toki myös tämä työ jonoon, josta sen tulisi päätyä heti ajoon jonon ollessa tyhjä ja katsotaan, miltä työn ulostulo näyttää. Vaikka Herculekselle voi siis helposti kertoa toisenkin CPU:n, ei lähdetä tässä yhteydessä sitä tekemään nykyisten suorittimien laskentatehojen ollessa tähän vähintään riittäviä. Kun vielä miettii millaisia nopeuksia nykyiset kiintolevyt tarjoavat, vanhat nauhurit ja DASD (Direct Access Storage Device) -levyt ovat varsin kevyttä kuormaa nykykoneelle kaiken kaikkiaan. Hercules osaa emuloida S/370-, S/390sekä Z-arkkitehtuuria. Ohjelmien kirjo ei ehkä ole ihan sitä, mihin nykyisissä käyttöjärjestelmissä sovelluskauppoineen ja runsaine ohjelmistotaltioineen on totuttu, mutta kyllä tähänkin löytyy ohjelmia. Näiden tavujärjestys 1 on laskeva, eli eniten merkitsevät tavut ovat pienimmässä muistiosoitteessa. S/370-arkkitehtuurissa muistiavaruus on 24 bittiä. Oletuksena on S/370 ja sen 24-bittinen muistiavaruus yhdellä prosessorilla. Tämä Tk5 (conf/tk5.cnf) käyttää yhtä 3033-mallin CISC-suoritinta. Jokainen ohjelma saa oman virtuaalisen 24 bittisen muistiavaruuden. Näiden jälkeen ovat 1 fi.wikipedia.org/wiki/Tavuj%C3%A4rjestys 2025.1 8. Tämän lisäksi käynnistetään FTP-palvelinohjelma ja lähetetään verkkojatkoilta löytyvä SKROLLI.txt -niminen JCL (Job Control Language) FTP:n avulla toiseen sopivaan katalogiin. Samalla opitaan lisää tästä maailmasta, jossa moni asia merkistöjä myöten on omanlaistaan, mutta josta kuitenkin löytyy tuttuakin. hoitamassa, tulee koneelle jotenkin muuten kertoa kokoonpanonsa ja se, mistä IPL tehdään. Mitä tällä voi sitten tehdä. Tämäkin kaninkolo voi yllättää syvyydellään
• käynnistää ensimmäisen vaiheen (IPL eli initial program load) valitulta laitteelta • lataa käyttöjärjestelmän • käynnistää taustalle helpottavia prosesseja kuten tulostinten käsittelyt, pääteohjaimen, työ(jonojen) käsittelyjärjestelmän, usean käyttäjän kirjautumisen mahdollistavan alijärjestelmän jne. Page Upja Page Down -näppäinten tulisi toimia myös. Suurin osa ytimestä on sen ajan tyypilliseen tapaan kirjoitettu assemblerilla, mutta mukana on mm. Alimpana ovat CPU(t) ja CPU:n perässä tähtiä kuorman mukaan, mikäli kuormaa on niin paljon että tähtiä kertyy näytettäväksi. Jatketaan vielä komentoriviltä: cd unattended ./set_console_mode Windowsissa riittää, että unattended-hakemistossa suorittaa skriptin set_console_mode.bat ). Jos se on ok, ei tarvitse tehdä mitään. 9. Fyysisessä maailmassa tähän käytetään HMC:tä (Hardware Management Console) tai nykyisin sen virtuaalista versiota, jolla valitaan haluttu laiteprofiili. MVS-käyttöjärjestelmää tehtiin pitkään ja siihen haluttiin paljon ominaisuuksia. Asennus Lataa MKV-TK5 uusimman päivityspaketin kera sivulta www.prince-webdesign.nl/tk5. Skripti kirjoittaa sanan CONSOLE mode-nimiseen tiedostoon samaan unattended-hakemistoon. Näiden kaikkien oikealla puolella on lista laitteista, joita tähän kokoonpanoon kuuluu. MVS:n käynnistäminen Komentoriviltä hakemistossa mvs-tk5: ./mvs (Windowsissa käynnistä mvs.bat ) Joissakin rpm-pohjaisissa jakeluissa (Fedora 41) Hercules ei käynnisty, koska se ei löydä sopivaa versiota bz2-kirjastosta. Kun mvs:n käynnistää, skripti suorittaa mvs_ipl bash-skriptin (Windowsissa .bat-skriptin) jossa tarkistetaan mm. Tämä ei ole pakollinen toimenpide, mutta jos tätä ei tehdä, tulee ns. Ne oli pääosin tarkoitettu työjonojen suorittamiseen (batch job). IBM vaikuttaa halunneen virtual storage -painotuksellaan alleviivata virtuaalista muistia, sivutusta sekä sitä, että muistia voi fyysisesti olla muuallakin kuin RAMissa. PL/1-kielellä kirjoitettuja osia. Hercules consolevai daemon-tilassa. Kuten vaikkapa sivutettuna kiintolevyllä. Pura paketti mvk-tk5.zip haluamaasi paikkaan. Helpoiten sen laittaa saman tien kaikelle päälle. Selainkonsoli käynnistyy joka tapauksessa porttiin 8038 (http://localhost:8038/). tämä asia. 1960-luvulla MVS:ää edelsi OS/360 käyttöjärjestelmävariantteineen. Useampi ihminen on ollut tekemässä Turnkey-paketointeja, joissa on mukana sekä Hercules-emulaattori että levykuvia, automaatiota, skriptejä, ohjelmia ja muuta mukavaa. 1970-luvulla MVS mahdollisti etenkin aikalaisekseen suurten tietomäärien käsittelyn ja se tuki useampaa käyttäjää. Eräajomaisuus kuitenkin näkyy siinä vahvasti, vaikka mukana onkin TSO ja sitä helpottava valikkopohjainen ISPF-käyttöliittymä mahdollistamassa myös interaktiivisemman käytön. Kerrotaan turnkey-skriptille, että Hercules käynnistetään konsolitilassa. Listalla on useita erityyppisiä levyjä (DASD), tulostimia (PRT), reikäkorttilukija (RDR) ja reikäkorttikirjoitin (PCH) sekä nauha-asema (TAPE). MVS:n nimessä esiintyvä virtual storage esiintyy monessa muussakin IBM:n keskustietokoneympäristössä tavalla tai toisella, esimerkkinä VSE (Virtual Storage Extended). käynnistetään (ja tehdään IPL) tai sammutetaan keskustietokone. Painamalla ESC uudestaan ollaan konsolinäkymässä ja jossa Herculekselle itselleen voi syöttää komentoja (kuten help, version, maxrates jne.). Sille tulikin vuosien mittaan todella paljon päivityksiä ja korjauksia. sudo ln -s /usr/lib64/libbz2.so.1.0.6 /usr/lib64/ libbz2.so.1.0 Skripti mvs tekee automaattisesti koko käynnistysketjun: • lukee järjestelmän kokoonpanon (ei ole BIOSia). Kokoonpanossa kerrotaan mitä laitteita on (nauhurit, tulostimet, levyt tyyppeineen, prosessorit jne). Paketoituna on uutta ja vanhaa, kuten eri kääntäjiä, TCP/IP sekä monenmoista apuohjelmaa. sisäinen operointikonsoli vain www-palvelun taakse. Kirjoitushetkellä uusin tällainen Turnkey on versiota viisi, päivitystasoa neljä. Komentoriville tulisi kirjoittaa seuraavat asiat hakemistosta, jonne purit paketin: cd mvs-tk5 chmod -R +x * Windowsilla riittää, että paketin purkaa haluamaansa paikkaan. Jos mvs-skripti herjaa libbz2.so.1.0-kirjastosta, voit koittaa lisätä symbolisen linkin olemassa olevan libbz2-kirjaston 1.0 nimelle. Tehdään vielä yksi asia ennen kuin käynnistetään käyttöjärjestelmä Herculeksen päälle. Tässä jutussa ei kuitenkaan käytetä Herculeksen konsolia selaimella vaan komentoriviltä. Linuxilla tulee laittaa suoritusoikeus useampaan tiedostoon. Jos Hercules-terminaalin ruutu on kovin kapea (tai 80x25), sitä venyttämällä hiukan näkyy alhaalla käskylaskurin lisäksi I/O-määrätieto myös tässä näkymässä. perinteisen fyysisen konsolin näppäimet, joilla mm. Vaikka tekijöiden määrää kasvatettiin, valmista ei meinannut tulla. MVS ja valmispaketti TK5 MVS (Multiple Virtual Storage) ja sen versio 3.8j on erinäisten lähteiden perusteella viimeinen vapaasti käytettävä versio
html#MVSIPL. Konsolilta / d t näyttää siis päiväyksen, joka on ehkä hieman erikoisessa muodossa. Ja trivia: Miten tässäkin järjestelmässä vaihdetaan kellonaika. Tällöin riittää, että purkaa zip-paketin ja käynnistää wx3270.exe :n. Esimerkkejä omista assemblerilla tehdyistä ohjelmista löytyy harrastajien sivuilta, kuten tommysprinkle.com/txxos/wp-content/uploads/2011/12/@ print.txt Pääte-emulaattori 3270 Ennen CRT-päätteitä käytössä oli mm. d a,l /19.31.07 IEE102I 19.31.07 23.348 ACTIVITY 480 / 00009 JOBS 00006 INITIATORS / CMD1 CMD1 CMD1 V=V / BSPPILOT BSPPILOT C3PO V=V S / JES2 JES2 IEFPROC V=V / NET NET IEFPROC V=V / TP TP TCAM V=V / MF1 MF1 IEFPROC V=V S / TSO TSO STEP1 V=V S / SNASOL SNASOL SOLICIT V=V / JRP JRP JRP V=V S / 00001 TIME SHARING USERS / 00001 ACTIVE 00040 MAX VTAM TSO USERS Hyödyllinen listaus eri komennoista löytyy osoitteesta www.jaymoseley.com/hercules/downloads/pdf/Volker%20 Bandke%20Command%20Summaries.pdf. Nimensä mukaisesti (virtual storage) MVS näyttää sovelluksille muistialueen virtuaalisesti, kuten suurin osa nykyisistäkin käyttöjärjestelmistä. Windowsille löytyy myös natiivi asennusohjelma tai wx3270:n zip-paketti, mikäli ohjelmaa ei halua varsinaisesti asentaa. Käynnistä x3270 ja ota yhteys paikallisen koneen porttiin 3270 (localhost:3270) Ruudulla tulisi näkyä kookas TK5-teksti. Myös käyttöjärjestelmän operointikonsolille voidaan syöttää komentoja. CMD1 ja BSPPILOT ovat automatisoituja ylläpitotoimia varten (et halua olla nakuttamassa kaikkea operoinnissa tarvittavia asioita käsin). Tämä oli hidasta ja äänekästä, mutta se mahdollisti myös reaaliaikaisen vuorovaikutuksen tietokoneen kanssa. IBM:n keskuskonekäyttöjärjestelmien etuja on muutenkin se, että ohjelmat kääntyvät pääosin ihan hyvin, olipa ne sitten kirjoitettu S/370-, S/390tai zSeries-arkkitehtuurin aikoihin. Käyttöjärjestelmän suuntaan kirjoitettavat komennot erotellaan etukenolla, ja esimerkiksi / d t lähettää komennot MVS:lle. @-alkuiset ovat niitä, osa on Herculeksen omia muuttujia. JES2 job entry system, prosessoi annettuja töitä. Teletype (joka Suomessa tunnettiin nimillä kaukokirjoitin ja telex) on sähkömekaaninen laite, joka tulostaa konsolin tapahtumat paperille. Windows Subsystem for Linuxin versiolla kaksi (WSL2) voi myös asentaa x3270-ohjelman Linuxiin, se kun tukee X-ikkunointia käyttäviä ohjelmia. Herculeksen konsolille voi kirjoittaa komentoja myös emulaattorille itselleen. Lopulta päädytään logon esittävään ruutuun, jolle voi syöttää konsolikomentoja. Komento help on ihan mukava kokeilla, ja yksittäisille Herculeksen komennoille löytyy tarkempi apu juuri tällä keinolla. Ei ole sattumaa, että perinteisissä pankeissa ja vakuutusyhtiöissä saattaa törmätä yhä vieläkin koodipohjaan, joka on kirjoitettu 50–60 vuotta sitten. Storage tarkoittaa tässä yhteydessä sitä, että muisti voi olla keskusmuistia (RAM) tai jotakin hitaampaa tyyppiä, mutta sovelluksille voidaan näyttää aina ns. Linuxissa pääte-emulaattoriksi sopii esimerkiksi x3270. Samasta paikasta löytyy myös Mac-versio: x3270.miraheze.org/wiki/ Downloads. MVS käyttää modulaarista Nucleus-ydintä, joka hoitaa muistinhallinnan, skeduloinnin, IO:n, keskeytysten hallinnan ja muut matalan tason asiat. Sitä vilkaisemalla näkyykin 3270:n ohjaamiseen liittyviä merkkejä. Asennus Debian-pohjaisessa jakelussa tapahtuu komennolla sudo apt install x3270 tai Fedorassa sudo dnf install x3270-x11 . Vastaus on tekemällä IPL. D on lyhenne sanasta display ja t on time. Emulaattoria voi käyttää tietenkin myös omien ohjelmien suoraan ajoon, ilman mitään käyttöjärjestelmää, kuten emulaattoreita yleensäkin. täysi muistiavaruus jossa temmeltää. /d a,l (display active jobs and users) näyttää MVS:ssä käynnissä olevia alijärjestelmiä sekä kirjautuneet käyttäjät. Jos kuitenkin haluaa tehdä IPL:n eli koneen käynnistysoperaatiot oikein perinteisesti käsipelillä, siihenkin löytyy ohjeet sivulta bsp-gmbh.pocnet.net/turnkey/cookbook/opmvs. teletype-, reikänauhatai reikäkorttipäätteitä. Päivämäärä näytetään muodossa vuosi ja kuluneet päivät. CMD1 on käyttöjärjestelmäkomentoja varten eriä ajettaessa. Submit-komennolla lähetetty JCL päätyy tänne TSO timesharing option (tällä on alun perin ajettu vain eräajoja, ”shell” on lisätty myöhemmin VTAM alijärjestelmä muiden järjestelmien, kuten 3720-päätteiden kanssa jutteluun JRP Remote Job Entry Kirjautumisessa näkyvä logo on herclogo.txt tiedostossa. 2025.1 10. Toisin kuin VT100 tai vaikkapa ANSI, on tämä päätekin hieman oma maailmansa. Onko pakko käynnistää MVS (tai muu käyttöjärjestelmä). Merkistönä on EBCDIC ja sillä koodisivu (code page), vähän kuin DOSissa ASCII ja sen koodisivut
Niillä voidaan hakea, päivittää ja järjestää tietoja tehokkaasti ikään kuin suurina tietojoukkoina. Tietojoukot, katalogit, kirjastot ja VSAMit IBM:n termistössä tiedosto on täällä data set, 2 tiedoston nimi on dataset name. Enter • toiminta voi vaihdella eri ohjelmissa, jos ei toimi kuten return • esimerkiksi haun suoritus, valikon valinta Return • siirrytään seuraavaan kenttään • suoritetaan kirjoitettu komento Terminaaliemulaattorit tukevat myös hiirtä, vaikka sitä ei aikoinaan kuvaputkipäätteissä ollutkaan. Isot ja pienet kirjaimet eivät ole tässä merkitseviä. Ne ovat nimeltään PFn, jossa PF on Program Function, mutta käytetään tässä yhteydessä vain funktionäppäinten nimiä ja lyhennettä F. F1 usein aputeksti (help) F2 päivitä (refresh) F3 lopeta / takaisin (end) F4 palaa (return) F5 vaihtelee F6 vaihtelee F7 sivu taaksepäin (move one screen backwards), vähän kuin page up F8 sivu eteenpäin (move one screen forward), vähän kuin page down F9 vaihtelee, usein eri paneelien väliseen hyppimiseen, vähän kuin screen tai tmux, mutta ei ihan F10 vaihtelee, usein siirtää listaa vasemmalle F11 vaihtelee, usein siirtää listaa oikealle F12 vaihtelee, usein hyppää loppuun (myös shift-F10) X3270-ohjelman virtuaalinäppäimistöstä löytyy tähän terminaalimaailmaan kuuluvia näppäimiä, joista tärkeimmät ovat PA1 (attention) ja reset. VSAM (virtual storage access method) on ajalta ennen varsinaisia relaatiotietokantoja. Hiirellä voi siis valita jonkun kentän, mutta hiirellä osuu helposti kohtaan johon ei ole tarkoitus kirjoittaa. 2 en.wikipedia.org/wiki/MVS#MVS_filesystem 11. Tunnuksen salasana on oletuksena cul8tr. Katalogi on kuin hakemisto hierarkioineen, mikä mahdollistaa niiden järjestelemisen loogisiin kokonaisuuksiin. Nuolinäppäinten toiminta on tavanomaista, vaikka niilläkin pääsee helposti kohtaan, johon kirjoittaminen ei onnistu ja saadaan lähinnä input inhibited eli x3270-terminaalin alariville punainen ruksi.Suosittelen liikkumaan näppäimistön avulla. Olkoon data set suomeksi tietojoukko. Tietojoukot ovat hierarkia (vähän kuin hakemistot) pisteellä eroteltuna, ja jokainen hierarkian osa voi olla enintään kahdeksan merkkiä pitkä. Ikään kuin Linuxissa voisi olla kotihakemiston alla bin-hakemisto, joka on tämän käyttäjän polussa. Niissä voi myös olla suhteellisia viittauksia (näytä kuudes tietue) sekä numerosarjoja indeksitiedoille. Esimerkiksi jäljempänä editoria käytettäessä tehdään tietojoukko (tiedosto) HERC01. Kirjautua voi myös suoraan muodossa ”logon käyttäjätunnus”, eli esimerkiksi logon herc01. Katalogeilla on oma katalogien katalogi, jossa on tieto kaikista katalogeista. Sitten TSO toivottaa tervetulleeksi, painamalla enter näkee fortune-tekstin ja toisella enterin painalluksella ollaan ISPF:n valikossa. Katalogeja on järjestelty kokonaisuuksiin, joissa ovat esimerkiksi käyttöjärjestelmän osat, konfigurointitiedot, ohjelmat, eräajotiedostot ja niin edelleen. VT100) toimitaan merkkikohtaisesti. CMDPROC.ESIM1. Clear-nappi tyhjää terminaalin ruudun. Kirjoita logon ja enter, jonka jälkeen kirjaudu kirjoittamalla käyttäjätunnukseksi herc01. Noin suunnilleen. Jokaisella käyttäjällä on tyypillisesti omat kataloginsa, joissa voidaan pitää vaikkapa käyttäjän omia eräajoja. Tietojoukko on kuitenkin hieman monimutkaisempi olio kuin voisi luulla, ja niitä on useita eri tyyppejä ja niillä omat erityispiirteensä ja rajoituksensa. Se tekee terminaalille resetin, samaan tapaan kuin Linuxissa komentoriville kirjoitettava reset tekee. Etenkin tabulaattori osaa hypätä kenttien välillä ja shift-tab siirtää kursorin edelliseen kenttään. Kun kirjoitat jotakin ja painat sitten enteriä, tapahtuu keskuskoneellakin viimein jotain. Samalla hatarahkolla analogialla /bin voisi vastata SYS1.PROCLIB:iä ja vielä tätä jatkaen /usr/local/bin voisi rinnastua SYS2.PROCLIB-katalogiin. Tässä maailmassa Enter ja Return toimivat omilla tavoillaan. Tavallisesti tässä näkyisi kohta johon voi suoraan kirjautua, mutta paketoinnissa vaikuttaa olevan pieni virhe, jonka vuoksi tarvitaan ensin enter. Käytettäessä 3270-emulaattoria tekstiä ei siis kaiuteta (keskus)koneelta merkki kerrallaan vaan se tapahtuu paikallisesti, terminaalissa. Kirjastoja käytetään tavallisesti käyttöjärjestelmän, kääntäjän tai vaikkapa käyttäjän omien kirjastojen säilytykseen, esimerkiksi SYS1.LINKLIB (väittäisin hakemiston /lib vastineeksi) ja Fortranin SYS1.FORTLIB (olisi /lib/fortran ). Valokynällä voitiin valita jokin tietty kohta, mutta onkohan sitä koskaan oikeasti käytetty missään. Tietojoukon nimessä voi olla maksimissaan 44 merkkiä, pisteiden kera. Tämä johtuu siitä, että 3270:ssä käsitellään blokkeja, kun taas Unix-päätteissä (esim. Resetiä tarvitaan, jos terminaali menee aivan puuroksi esimerkiksi sopivaa binääriä tutkiessa. Tyypilliset funktionäppäinten toiminnot listattuna. Saman tekee TSO:n komento cls
Numerolla rajataan hakemistotietueiden määrää ja se riittää tässä tapauksessa hyvin. cmdproc, b data-set-name rivin alkuun). M (tsoappls) -sivulta löytyy muutakin, kuten 5 (QUEUE) josta voi katsoa työjonoja laittamalla l halutun työn alkuun. Valikoissa voi liikkua joko kirjoittamalla kulloisellakin ISPF:n ruudulla näkyvän option, kuten ensimmäisessä valikossa näkyvän 3 (UTILITIES) kirjoittamalla kohdan Option ===> jälkeiseen kenttään 3 ja painamalla enter. ISPF ja TSO ISPF (Interactive System Productivity Facility) on valikkopohjainen paikka, johon oletuksena päätyy kirjautumisen jälkeen. Valikoissa voi liikkua myös kirjoittamalla valikon polun kerralla. • Mennään ISPF:n alkuvalikosta kohtaan 3.4 (UTILITIES DSLIST) • Annetaan ylös komennoksi a, joka on lyhenne alloc-komennosta • Annetaan nimeksi jcl • Record format -kohtaan fb (fixed block) • logical record length 80 • physical block size 1200 • Allocation space unit -kohtaan c (cylinders) • Primary space quantity -kohtaan vaikka 10 (eli montako sylinteriä varataan) • Secondary space quantity -kohtaan voidaan laittaa vaikkapa 1 (montako sylinteriä varataan kasvua varten) • Number of directory blocks ei voi olla nolla katalogeille, joten laitetaan siihen tässä vaikkapa 1. F3 vie tästäkin edelliseen ruutuun. Jos valitsit e, ei kannata tässä vaiheessa muokata mitään, koska automaattinen tallennus on päällä. TSO:sta pääsi ISPF:n valikkoon kirjoittamalla ispf (ja enter). Mikäli tietojoukkoja tai tietojoukossa rivejä on useampi ruudullinen, voi F7/F8-ruudullisten lisäksi laittaa ylös Command-kenttään komentoja kuten top (näytä ylimmät) tai bottom (näytä alimmat). Ja muokkaustilastakin pääsee F3-näppäimellä pois. Jos vahingossa poistuu ISPF:stä, ollaan punaista puhuvan TSO:n varassa. Lisäksi sopassa ovat DASDtyyppikohtaiset ominaisuudet, jotka määrittävät montako uraa sektorilla on, uran tavumäärän ja siten myös sylinterin tavujen määrän. Tämä on kätevää vaikkapa siinä vaiheessa, kun on editori auki ja haluaa katsoa jotakin muuta. Kirjoitetaan komennoksi a (allocate) ja enterillä seuraavaan ruutuun. Jos kirjoitat start haluamaasi optiontai commandkenttään, saat uuden ikkunan ja ikkunoiden välillä voi vaihdella F9-näppäimellä. Tarkoitus on tehdä juurikin paikka tietojoukoille. Mikäli mitään ei näy, painamalla enter jotain tulisi näkyä. TSO:n clist-kielisiä eräajoja löytyy etenkin katalogista SYS2.CMDPROC. Jos haluat, voit tutkia mitä siellä on (alkunäytöltä DSLIST eli 3.4, etuliitteeksi sys2. Jos sen käynnistää ja valitsee g, näkyy töiden, alijärjestelmien ja käyttäjien aiheuttamaa kuormaa. Mikäli directory block -kohta oli nolla, näkyy tässä kohtaa PS (physical sequential). Poistumalla ISPF:stä joko painamalla F3 tarpeeksi monta kertaa tai valitsemalla päävalikosta x niinkuin exit päästään TSO:n komentokehotteelle, joka sanoo suurin punaisin kirjaimin olevansa valmis. Tietojoukon voi tehdä monella tavalla, mutta päävalikosta tuttu 3.4 vie sekin DSLIST-näkymään. Editori Tässäkin maailmassa tarvitaan jokin tapa muokata ja tuottaa tekstiä. Nimeksi laitetaan skrolli.lehti.Record format olkoon fb (fixed block), looginen tietueen pituus 80 ja fyysiseksi blokkikooksi 1200. Mikäli jokin tietojoukko on avattuna browse-tilaan, voi edellisten lisäksi käyttää myös muita komentoja kuten edit (avaa tietojoukon muokkaustilaan) tai submit (lähettää tietojoukon työjonoon). Niiden sisältöä voidaan listata laittamalla b (browse) HERC01.ISP.PROF:n eteen ja painamalla enter. tietojoukolle, mutta tehdään tässä samalla tyhjä sellainen ja muokataan sitä. Pitkät perinteet tarkoittavat myös aikoja ennen CRTpäätteitä, ja siitä syystä myös editorit ovat melko pelkistetyn oloisia mutta tehokkaita omilla tavoillaan. Ensimmäisellä kerralla se saattaa aiheuttaa hieman haukotusta, mutta sillä voi tehdä paljonkin asioita, ja vieläpä melko nopeasti, kun se on ensin tullut tutuksi. Nämä ovat vielä tässä vaiheessa tyhjiä, paitsi HERC01.ISP.PROF sisältää kaksi tietojoukkoa. Kirjoitetaan Data set name prefix -kenttään etuliitteeksi herc01 ja painetaan enter, mikä näyttää tietojoukkolistauksen HERC01:sta (alkavat herc01:lla). Päävalikosta M (tsoappls) sivulta löytyy 3 (IM), joka on hieman Linuxin top -komentoa vastaava. Jos halutaan takaisin ISPF:n valikkoon, kirjoitetaan TSO:hon ispf (ja enter). Edelleen suosittelen tabulaattorin käyttöä kenttien välillä ja nuolinäppäinten käyttöä listojen valikoinnissa. Tietojoukon sisältöä voi katsoa samaan tapaan laittamalla sen eteen b tai muokata sitä e (edit) -komennolla. Pelin sisällä help * listaa komennot, komennolla stop pelistä pääsee pois. Jos nyt heräsi kysymyksiä vaikkapa siitä, miksi fyysisen lohkon kooksi laitetaan juuri 1200, se on vain sopivan pieni tässä esimerkissä. Toki samat asiat voi tehdä mille tahansa tied... Time näyttää päiväyksen, help komentolistausta ja logoff kirjautuu ulos. Jos tähän laittaa nollan, siitä tulee tietojoukko (tiedosto). F3-napilla pääsee aina taaksepäin. Kokeillaan tehdä tietojoukko HERC01.SKROLLI.LEHTI, laitetaan sinne tekstiä ja voidaan helpommin kokeilla sen muokkausta. Lyhyesti: tämän BLKSIZE:n kanssa kannattaa puljata, jos haluaa kokeilla optimoida DASD:llä tilankäyttöä ja nauhan tapauksessa siirtonopeutta. Sitä voi myös käyttää ikään kuin useammalla virtuaalisella ikkunalla, vähän kuin Linuxista tutun tmuxin tai screenin tapaan. Tehdään tässä vaiheessa oma katalogi (hakemisto), jonne voidaan myöhemmin siirtää FTP:n avulla SKROLLI-niminen JCL. Voit käynnistää sen TSO:sta kirjoittamalla duchess (enter). Esimerkiksi 3 (UTILITIES) -valikon takaa löytyvä 4 (DSLIST) voidaan ensimmäisessä näkymässä kirjoittaa muodossa 3.4 (ja enter), joka siis vie kolmosvalikon sivulta neljänteen kohtaan. Se on vähän kuin shellin päälle olisi rakennettu valikko, josta tehdä asioita. Yksi tällainen istunto loppuu joko endkomennolla tai poistumalla ispf:n valikosta TSO:n puolelle asti. Yksi esimerkki sieltä on DUCHESS. Samalla tavalla voi seikkailla muissakin katalogeissa. Siihen voi syöttää suoraan TSO:n ymmärtämiä komentoja, kuten time , help , logoff jne. DASD:ssa käytetään melko suuria lohkokokoja (block size), riippuen jonkin verran käytetystä formaatista (FB eli määritellyn pituiset tietueet / VB eli vaihtuvan pituiset tietueet) sekä tietueen pituudesta. Tietojoukkoja selatessa sarake ORG (organization) näyttää näille PO (partition organized). Kirjoita siis alkuvalikkoon jo mainittu 3.4 ja DSLIST aukeaa. 2025.1 12. Käydään DSLIST-apuohjelman valikossa selaamassa tietojoukkoja
IF , ELSE , GOTO ja vastaavat löytyvät sen työkalupakista. • tietojen määritelmästä (DD), joilla kerrotaan tietojoukkoja kuten lähtötieto ja tulostieto. Lisää demoja löytyy katalogista SYS2.CMDPROC. 3 Tässä esimerkissä on SKROLLI-niminen JCL. Unix-maailman dd-komento onkin saanut vaikutteita juuri tästä. autosave vaihtaa automaattisen tallennuksen tilaa bottom hyppää loppuun caps vaihtaa tilaa isojen ja pienten kirjainten tuen väliltä cols näyttää sarakkeet end poistuu editorista find etsii annetun merkkijonon ja maalaa sen näkyväksi help näyttää ohjeen save tallentaa start käynnistää uuden ispf-session (F9-näppäin vaihtelee näiden välillä) submit lähettää työn jonoon top hyppää alkuun Skripti Tehdään TSO:lle lyhyt CLIST-skripti (batch), joka kirjoittaa terminaalille päiväyksen sekä tekstin HEI SKROLLI. Se kutsuu ympäristössä olevaa GCC-C-kääntäjää, tarjoaa sille työssä kerrotun hyvin simppelin lähdekoodin, kääntää sen sekä suorittaa käännetyn ohjelman. Tietojoukon valinta tehdään menemällä sen kohdalle ja valitsemalla se kulloistakin komentoa vastaavalla kirjaimella: B näyttää sen (browse) C katalogoi sen D poistaa tietojoukon (mutta R:llä sen voi vielä palauttaa) E avaa editoriin I näyttää sen tiedot (riippuu näkymästä) L lataa sen (riippuu näkymästä) N nimeää uusiksi (riippuu näkymästä) R nimeää uusiksi (riippuu näkymästä) S näyttää sen tiedot (riippuu näkymästä) T näkymästä riippuen merkitsee nimen U poistaa katalogista Valitaan HERC01.SKROLLI.LEHTI editoriin laittamalla sen S sarakkeeseen e (ja enter). Tässä on nyt sitä ATK:ta. Tekemämme HERC01. Etenkin eräajot hyötyvät siitä, että voidaan tarkkaan määritellä eri ohjelmat ja vaiheet ilman, että niihin tarvitsee välillä puuttua. Luomisen jälkeen voidaan katsoa sitä laittamalla tietojoukon nimien etuliitteeksi HERC01 ja enter, niin nähdään HERC01.-alkuiset tietojoukot. Tässä harjoituksessa ei tarvitse täyttää muita kohtia, tietojoukolle varataan uran verran tilaa. Tyypillisesti JCL koostuu useasta vaiheesta, kuten: • työn tiedoista (JOB), eli nimestä ja käyttäjätunnuksesta. Tämän lisäksi /*MESSAGE-komennon viesti tulostuu sinne. 3 en.wikipedia.org/wiki/Dd_%28Unix%29 13. Ohjelman tulostamat merkit eivät tule konsolille vaan erilliseen tiedostoon. • suorituslausekkeista (EXEC), kuten mitä ohjelmia käytetään, niiden järjestyksestä sekä mahdollisista argumenteista. Esimerkin 1 tiedoston SKROLLI1 sisältö: PROC SKROLLI(ESIM1) /**************************************************/ /* SKROLLI ESIMERKKI 1 */ /**************************************************/ TIME WRITE HEI SKROLLI END Toisen esimerkin SKROLLI2 sisältö: PROC SKROLLI(ESIM2) /**************************************************/ /* SKROLLI ESIMERKKI 2 */ /**************************************************/ WRITE &STR(HEI, KIRJOITA NIMESI?) READ &NAME WRITE &STR(HEI &NAME, KIVA KUN KOKEILET!) END Sillä voi toki tehdä monimutkaisempiakin skriptejä. Operointikonsolilla (Herculeksessa) näkyy vain, että työ on päätynyt ajoon koska ajojono on tyhjä, työn numero sekä tieto siitä että työ on loppunut. Tässä voi käyttää editoria, tuoda tiedostot verkkojatkoilta tai sitten tehdä tiedostot muulla käyttöjärjestelmällä ja siirtää MVS:ään. Ajolle voidaan määritellä myös resurssit, joiden puitteessa ajon tulee suoriutua. JCL:n avulla kerrotaan usein lähtötieto sekä se, mihin tulos tallennetaan. Ne kannattaa siirtää HERC01.CMDPROC katalogiin esimerkiksi terminaaliemulaattorin avulla, josta on esimerkki hieman myöhemmin. JCL Job Control Language on tapa ohjata ohjelmien ajoja keskuskonejärjestelmissä. SKROLLI.LEHTI tulisi löytyä listalta. Esimerkiksi 3270-terminaaliin liittyviä demoja ovat C3270DM1-8, joita voi helposti myös kokeilla sekä vilkaista niiden sisältöä. Mikäli sen valitsee b-valinnalla, komennoksi voi kirjoittaa edit, mikä avaa tietojoukon editoriin. Editorin rivikomennot: (Yleensä rivikomennolle voi antaa perään numeron, jolloin komento vaikuttaa niin moneen riviin.) A liittää (jälkeen merkityn rivin) B l iittää (ennen merkityn rivin) C kopioi merkityn rivin / alueen D poistaa rivin / alueen I lisää uuden rivin M siirtää merkityn rivin/alueen A tai B kohtaan, joka tulee olla määritelty R toistaa rivin/alueen itsensä perään (R:n perään numero, joka määrää kuinka monta kertaa) )10 sisentää 10 merkkiä oikealle (10 poistaa alusta 10 merkkiä Editorin varsinaisia komentoja ovat mm
DATA kertoo, että tieto on heti tämän komennon jälkeen ja erotinmerkiksi laitettu DLM=@@ kertoo, missä tieto loppuu. Katsotaan terminaaliemulaattorin kautta tehtävää siirtoa sekä FTP (File Transfer Protocol) -tapoja. Ne on helppo tunnistaa myös reikäkorteista ja niiden avulla voi tehdä helposti tarkistuksia. Jos tässä kohtaa on tähti, rivi jatkuu seuraavalla kortilla (rivillä). • MSGCLASS=H määrittelee viestiluokan, johon mahdolliset viestit ja virheviestit lähetetään. JCL:ssä sarakkeet 78-80 ovat varattuja ja nykyiset z/OS:t jättävät ne huomiotta. Jos jatketaan vielä ontuvia Unixanalogioita, tämä on vähän kuin #! skriptin alussa. Merkkien // käyttäminen alussa oli tapa erottaa työt varsinaisesta tiedosta etenkin alkuaikojen eräajojen kohdalla. • MSGLEVEL=(1,1) ensimmäinen 1 kertoo, että kaikki lähtötiedot sekä proseduurit listataan ulostuloon. • REGION=8M määrittää, että työ voi käyttää enintään 8 Mt muistia. Voit ajaa ajon toiseen kertaan muokkaamalla työhön MSGLEVEL=(0,0). MVS:n suuntaan valitaan Send to host, MVS:n suunnasta valitaan Receive from host. Siirroissa koneellasi olevat tiedostot tulevat Local file name -kenttään sisältäen koko polun ja Host file name kerrotaan muodossa ’katalogi(tietojoukko)’ eli ikään kuin hakemisto, jossa tiedosto on suluissa. Tietojoukko-nimityksen on helpohko kuvitella tulevan kokonaisuuden muodostavasta reikäkorttipinosta, joka siis yhdessä muodosti sen tietojoukon, tiedoston. Sarake 78 merkitsee, jatkuuko rivi vai ei. SKROLLI.txt (huom. • //SKROLLI EXEC GCCCG,COPTS=’-v -O3’ käynnistää vaiheen skrolli ja tässä tapauksessa C-kääntäjän optioineen. • //GO.SYSIN DD * -kohdassa valitaan tietojoukon nimi lisäparametreja varten. 2025.1 14. • //COMP.SYSIN DD DATA,DLM=@@ määrittelee syötteeksi COMP.SYSIN, jossa on C-kielinen lähdekoodi. • //GO.OUTPUT -rivillä kerrotaan tietojoukko ohjelman tulosteille, SYSOUT=* käyttää järjestelmätulostusta ja DCB (Data Control Block) määrittää tietojoukon ominaisuudet kuten formaatin, tietuepituuden ja lohkon koon. • /*MESSAGE tulostaa operointikonsolille viestin Miksi JCL alkaa merkeillä // ja on perinteisesti leveydeltään 80 merkkiä. • NOTIFY=HERC01 kertoo käyttäjän, jolle lähetetään tieto työn päättymisestä. Terminaaliemulaattorilla Terminaaliemulaattorilla tiedostoja voi siirtää sekä MVS:n suuntaan tai sieltä omalle koneelle. Siirto löytyy x3270:n File valikosta kohdasta File Transfer. TSO:n tulee olla näkyvissä (punainen READY) siirtoja varten. Jälkimmäisessä tapauksessa SYSOUT on huomattavasti pienempi. Vähän samaan tyyliin, kuin vaikkapa bash skriptissä <<EOD ja EOD välillä voidaan kertoa tietoa. Ja mitä tapahtuukaan sarakkeesta 78. • CLASS=A kertoo työn luokan, jolla on tyypillisesti vaikutusta esimerkiksi prioriteettiin. Molemmissa tapauksissa Host is TSO tulee olla valittuna. Siirto tehdään ASCII-muodossa ja merkistökonversio tapahtuu tässä yhteydessä EBCDICin ja ASCIIn välillä. Reikäkorteissa tyypillisesti oli yhdellä kortilla yksi rivi tietoa. Jos se on tyhjä tai siinä on välilyönti, rivi ei jatku. tiedoston merkistöksi ääkkösten takia ISO-8859-15) sisältö: 1 //SKROLLI JOB (GCC), 2 // ’SKROLLI’, 3 // CLASS=A, 4 // MSGCLASS=H, 5 // REGION=8M,TIME=1440, 6 // MSGLEVEL=(1,1), 7 // NOTIFY=HERC01 8 //SKROLLI EXEC GCCCG,COPTS=’-v -O3’ 9 //COMP.SYSIN DD DATA,DLM=@@ 10 /** 11 *** otsikkotiedostot 12 **/ 13 #include <stdio.h> 14 #include <stdlib.h> 15 /** 16 *** määrittelyt 17 **/ 18 int main(int argc, char **argv) { 19 20 FILE* output = NULL; 21 22 printf(”Hei lukija!\n”); 23 24 output = fopen(”DD:OUTPUT”,”w”); 25 26 fprintf(output,” Tässä on toinen tapa tulostaa tekstiä.\n”); 27 fclose(output); 28 29 exit(0); 30 } 31 @@ 32 //GO.SYSIN DD * 33 2000 34 // 35 //GO.OUTPUT DD SYSOUT=*,DCB=(RECFM=FBA,LRECL=16 1,BLKSIZE=32200) 36 /* Seuraava tulostuu operointikonsolille, Herculekseen */ 37 /*MESSAGE Ajon SKROLLI suoritus loppuu. Tietojoukon (datasetin) siirtäminen MVS:ään Tiedostoja voi siirtää MVS:ään ja sieltä ulos useammallakin tavalla. Jälkimmäinen kertoo, että varaussekä ohjelmien lopetusviestit sisällytetään ulostuloon. Tiedostossa, jonne ohjelman ulostulo päätyy, on huomattavasti tarkemmat tiedot siitä, mitä työssä tapahtui, etenkin kun MSGLEVEL=(1,1). • TIME=1440 kertoo, että ajon pituutta ei käytännössä rajoiteta (1440 minuuttia on 24 tuntia). 38 // Ylläoleva JCL läpikäytynä: • //SKROLLI JOB(GCC) määrittelee työn Skrolli
Portin tulee toki olla suurempi kuin 1024. Vahva suositus! 15. Jos päädyt DATA SET NOT IN CATALOG -virheeseen, jonka jälkeen tulee REENTER+ , x3270:ssä ALT-1 (jossa ykkönen ei voi olla numeronäppäimistöltä vaan kirjainten yläpuolelta) lähettää PA1 (Program Attention1) -näppäintä vastaavan attention tiedon, joka päättää komennon. Vielä enter niin päädyt sinne, mistä ohjelman ajojonoon lähetitkin. Esimerkiksi PRIM-alkuiset esittelevät alkulukujen laskentaa usealla kielellä, joista mainittakoot assembler, C, Cobol sekä PL/1. Ohjelman tulosteen näkee outlist-kohdasta (ISPF, 3.8) valitsemalla jobin eteen s (eli select). Tämä löytyy myös polusta, joten sinne siirrettyjä tiedostoja voidaan käyttää melko helposti. Myös SYS2.CMDPROC on polussa ja siellä olevia tietojoukkoja voi käynnistää samaan tapaan. Sen voi käynnistää haluamaansa porttiin, jonka jälkeen asiakasohjelmalla voi kirjautua esim. localhost-osoitteeseen. Tähän voi vastata konsolilta laitteen nimellä tai CANCEL . Toinen tavallinen tapa päätyä perätilaan on koittaa TSO:lta suoraan submit komentoa. Jos mikään ei toimi tai olet valmis poistamaan koko roskan, Herculeksen komento exit lopettaa leikin. Kirjoita cd herc01.jcl , jolloin siirrytään käyttäjän jcl-katalogiin, joka tehtiin aiemmin ISPF-otsikon alla. Komennolla ls voit listata ftpd-palvelun näkemiä katalogeja. Kirjoita siihen shutdown (ja enter). ohjelmalle sen ajossa olevalle numerolle. Toivottavasti tämä pintaraapaisu auttoi käynnistämään hieman vanhemman käyttöjärjestelmän nykykoneellasi, pääsit kirjautumaan sisään ja sait ajettua ohjelmia. Kirjoita put SKROLLI.txt skrolli , jolloin lähetetään SKROLLI.txt-tiedosto skrolli-nimellä katalogiin, johon cd:llä mentiin, mikäli sinne voidaan kirjoittaa tietojoukkoja. Toki esimerkin voi naputtaa editorillakin, mutta jos tätä ei halua tehdä, seuraavassa esimerkissä siirretään sellainen MVS:ään FTP:n avulla. ftp localhost 2121 Kirjaudu herc01-tunnuksella ja salasanalla (cul8tr). Se voi jättää MVS:n tilaan josta se ei enää käynnisty, joten sitä ei kannata muutoin käyttää. Sama onnistuu myös Herculeksen konsolin kautta: /s shutdown Tämä käynnistää alasajotyön konsolilta. Ennen kuin laitetaan JCL työjonoon, kokeillaan siirtää sellainen MVS:n syövereihin. Tulosteen voi poistaa laittamalla outlist-kohdassa ensimmäiseen kenttään p (purge). Shutdown löytyy Herculeksen scripts-hakemistosta muiden vastaavien joukosta, jos haluaa vilkaista mitä se tekee. TSO puhuu sitä punaista tekstiä. Vastataan CANCEL : /R 0,CANCELR on lyhytvalinta REPLY komentoon. Tiedoston SKROLLI.txt merkistönä on ISO-8859-15. Nykyisissä MVSversioissa on toki iconv ja muut konvertointitavat myös UTFmerkistöille, mutta vuonna 1980 UTF:ää ei ollut vielä olemassa. Esimerkiksi UTF-8-merkistö ei konvertoidu oikein. Siirto menee oletuksena kirjautuneen käyttäjän katalogiin, esimerkiksi tässä HERC01.CMDPROC-katalogiin. Suoraan tietojoukon loppuun pääsee kirjoittamalla käskyksi bot (tai kokonaan bottom) tai selaamalla näkymää ruutu kerrallaan F8-näppäimellä. Koneella, jolla Hercules on käynnistetty, tulisi komentoriviltä päästä seuraavalla tavalla kirjautumaan sinne. Konsoliin voi esimerkiksi tulla seuraava viesti: /15.34.06 TSU 6 *00 IEF238D HERC01 REPLY DEVICE NAME OR ’CANCEL’. Konsoliviesteihin vastaaminen Jos yrität vaikka vahingossa listata kaikki katalogit tai konsoliin tulee muuten viesti, jossa pyydetään REPLYämään jotakin, voi konsolista vastata ko. Terminaaliemulaattorin kautta: Paina F3 kunnes olet ISPF:n päävalikossa, josta valinta x (tai F3) sulkee sen. Kirjoita ascii , jolloin varmistetaan että tiedonsiirtotapana on ASCII (joka tekee merkistökonversion samalla). Tutkimusten päätteeksi MVS:n alasajo tehdään tässä ympäristössä komennolla shutdown, joka ajaa kaiken hallitusti ja automaattisesti alas. Voit käyttää esimerkiksi kappaleessa Skripti mainittuja tiedostoja siirtoihin CMDPROChakemistoon ja sen jälkeen TSO:sta käynnistää sellaisen. Uudestaan enter näyttää taas työn numeron, nimen ja paluukoodin, jonka tulisi tässä esimerkissä olla 0000. Skrollin nettijatkoilla (skrolli.fi/numerot/) on kuitenkin jutussa esiintyneiden linkkien lisäksi muitakin linkkivinkkejä helpottamaan mahdollista jatkotutustumista tähän ATK-maailmaan. Kannattaa ehkä ensin mennä komentorivillä siihen hakemistoon, jossa siirrettävä tiedosto on, muuten joutuu seikkailemaan lcd -komennolla (tai antamaan put -komennolle tiedoston polkuineen). Jos siirretyn tiedoston nimeksi laittoi skrolli1, voi sen siis käynnistää suoraan TSO:sta kirjoittamalla skrolli1 (enter perään). Muuta MSGCLASS A:sta H:ksi ennen submitia niin voit outlistilla katsoa ohjelman tulostetta. Kirjoittamalla Command-kohtaan sub (tai submit) laitetaan työ jonoon. Seuraavaksi käynnistetään se. FTP:n kautta kaikki katalogit eivät näy, mutta esim. Mikäli tämä riitti tästä aiheesta, voi koko mvs-tk5-hakemiston vain poistaa ja siivota mahdollisen x3270-asennuksen. Fyysiseen versioon aiheesta voi tutustua esimerkiksi Suomen Tietokonemuseossa (suomentietokonemuseo.fi), jossa on mielenkiintoista esineistöä ja tietämystä historian koukeroista. Kirjastossa SYS2.JCLLIB on muita JCL-esimerkkejä. Sille voi kertoa myös parametrejä, jos sen haluaa käynnistää esimerkiksi toiseen porttiin: /s ftpd,PARM=’SRVPORT=2221’ käynnistäisi sen porttiin tcp/2221Konsolilla/d a,lnäyttää nyt myös FTPD-taustajärjestelmän. Voit käynnistää ftp daemonin Herculeksen konsolilta komennolla /s ftpd Konsolilla näkyy myös ftp palvelun portti (2121) käynnistämisen jälkeen.FTPD:n oletusasetukset ovat tietojoukossa SYS1.PARMLIB(FTPDPM00). FTP-palvelun voi pysäyttää joko komennolla /p ftpd (p kuten purge) tai /stop ftpd . oman tunnuksen alle voi siirtää tiedostoja. Kun painat enter, HASP näyttää työn ja sen numeron ulostuloa varten. FTP FTP-palvelun alijärjestelmä ei ole oletuksena käynnissä. Työn saa ajettua menemällä ISPF:llä valikon 3.4 (DSLIST) työkalulla HERC01.JCL-katalogiin, laittamalla katalogin eteen b ja valitsemalla SKROLLIn e tai b valinnalla. PA1-näppäin löytyy myös sieltä x3270:n virtuaaliselta näppäimistöltä. JCL-työn lisääminen työjonoon eli ajoon Edellisessä kohdassa siirrettiin JCL MVS:n syövereihin
Nykyään taas on paljon ammatti-ATK:ta, johon on vaikea päästä käsiksi ilman erikoislaitteita. Kubernetes-klusteri ja YAML (tai Helm chartit) ovat vähän kuin nykyajan suurtietokone ja JCL eli Job Control Language. Minusta Kubernetes ja YAML peilaavat menneisyyttä hauskasti juuri siksi, että Kubernetesissa ei voi mielekkäästi ajaa ohjelmia oikein millään muulla tavalla, ja siihen liittyy valmiita abstraktioita kuten Job, Deployment, Controller, Service tai ResourceQuota, joita YAMLilla kutsutaan ohjelmien käyttöön tai raameiksi. Jään kiinnostuneena seuraamaan, palaako koskaan enää sellainen aika, että henkilökohtaisen tietokoneen ja palvelimen välillä on vain ”kokoero”, mutta muuten ne ovat samasta puusta veistetyt. Seuraava ajatus ei ole omani, mutta viljelen sitä silti mielelläni. Jälkimmäisiä ympäristöjä kuvaa se, että kamojen saaminen ajoon oikeina versioina, oikeilla asetuksilla ja toimivilla integraatioilla vaatii usein pitkällisiä virittelyjä. DevOps-työläiset tuntevat kourallisen erilaisia YAMLtemplatevälineitä, joilla nämä hommat hoituvat. Ympärille tarvitaan loputtomat määrät identiteetinja pääsynhallintaa, kuormantasausta, monitorointia, päivitysten hallintaa, A/B-testausta, lokien varastointia, erinäisten riippuvuuksien käynnistämistä, palomuureja, salausvarmenteita, välityspalvelimia, tietokantoja… Suurta osaa näistä hoidetaan esimerkiksi Kubernetes-konttialustan määrittelemillä abstraktioilla, integraatioilla ja rajapinnoilla. Juttu muistutti ajatuksesta, joka pulpahtelee mieleeni tämän tästä: vanhaa keksitään jatkuvasti uudestaan vähän eri vaatteissa. Pilviarkkitehtuurissa ei riitä se, että vain käynnistää palvelimella yhden tietokoneohjelman, joka vastaa pyyntöihin ja tuottaa palvelua. Tietystihän kaikenlaisia skriptikieliä monen eri ohjelman yhteen niputtamiseen ja ajojen helpottamiseen on ollut muitakin. Niitä käytetään YAML-kielisillä kuvausteksteillä, jotka muistuttavat minusta aika paljon IBM-keskuskoneiden JCL:ää – eivät ehkä syntaktiselta luonteeltaan, mutta käyttötarkoitukseltaan ja hengeltään kyllä. Tämän ajatuksen jatkeena seuraa aina pohdinta siitä, mahtoiko suurin piirtein 1995– 2015 oikeastaan olla sellainen poikkeuksellinen ammattimaisen tietojenkäsittelyn jakso, että kaikki oli aika samanlaista. Abstraktioiden paluu Kaukana menneisyydessä keskuskoneet olivat tekstimuotoisten etäpäätteiden takana ja ne erosivat huomattavasti henkilökohtaisista mikrotietokoneista. Niissä ajettiin eri käyttöjärjestelmiä, rauta oli erilaista ja niissä ajettiin koodia eri lailla. Yritysmaailmassa suuria kielimalleja ja muita tekoälysovelluksia koulutetaan valtavilla palvelinfarmeilla datakeskuksissa, jotka pursuilevat Nvidian kiihdytinkortteja. Tietojenkäsittelyssä mikään on harvoin kovin uutta Ennen oli Mainframe ja JCL, nytten on Kubernetes ja YAML. Ronja Koistinen J ari Arkoma käsittelee edellisillä aukeamilla pitkästi ja rakkaudella keskustietokoneen eli mainframen emuloimista kotitietokoneella sekä kertoilee laajemminkin IBM-suurkoneiden historiasta. Molemmissa tuotantoympäristö on jossakin kaukana, aika paljon koodaajan omasta työasemasta poikkeava ja sitä käytetään esoteerisellä ”oheiskoodikielellä”, jolla määritellään, miten varsinaisia ohjelmia kuuluu ajaa. Viimeiset kahdeksan vuotta olen käyttänyt töissä paljon niin sanottuja kontteja (container) Linux-palvelinympäristöissä, joko yksinkertaisesti Dockerilla tai monimutkaisemmin erilaisilla Kubernetes-tyyppisillä alustoilla. Suoritinten käskykannatkin olivat samat. KOLUMNI 2025.1 16. Työasemat olivat geneeristä PC-rautaa ja palvelimet olivat olennaisesti ihan samaa PC-kamaa, sillä erotuksella että niissä oli enemmän tehoa, ECC-keskusmuistia ja vikasietoiset RAID-levypakat – ja niitä oli paljon räkissä pinossa. Virittelyyn käytetään YAML-tekstitiedostoja, joihin läästitään ennalta määrättyihin lokosiin kulloiseenkin tilanteeseen oikeita arvoja sellaisilla työkaluilla kuin Ansible, Kustomize tai Helm. Rahaa ja sähköä palaa. ”Tietokone”, jolle koodi kirjoitetaan, ei ole nykyäänkään usein yksittäinen palvelin, vaan jonkinlainen kontti tai vielä abstraktimpi rajapinta, ja sen tuotannossa ajamisesta ei aina huolehdi koodaaja itse, vaan erillinen Dev Ops-tiimi
RAUTA ON KOVEMPAA KUIN SOFTA. MOBILISTI KOEAJAA KAIKKEA COMMODORESTA* SInclairiin AJONEUVOKULTTUURIN ERIKOISLEHTI VUODESTA 1979 * O pe l Co m m od or e ko ea je tt iin le hd es sä 1/ 20 22 .. www.mobilisti.fi www.mobilisti.fi Kahdeksan numeroa vuodessa ja täysi 45 vuoden digiarkisto, vain 8,25 euroa kuussa (99€, laskutusjakso 12/6KK)
Valon nopeus on rajallinen, joten taivaalla TEE SE ITSE 2025.1 18. Teksti: Jarkko Lehti Kuva: Kimmo Rinta-Pollari GNSS-paikannus RTK-korjauksella A luksi lienee paikallaan pieni kertaus paikannuksen periaatteista ja kehityksestä. RAKENTELU Puhekielessä puhutaan usein GPS-paikannuksesta, mutta vuosien varrella taivaalle on ammuttu monia muitakin satelliitti-ryppäitä hoitamaan paikannustarpeita. Nimitys onkin jäänyt vanhanaikaiseksi, se kun viittaa vain Yhdysvaltain käyttämään järjestelmään. Mutta miten tarkkaa tietoa GNSS:stä saa ulos kotikonstein. Pohjimmiltaan satelliittipaikannus perustuu kolmiomittaukseen, jossa käyttäjän paikka maapallon pinnalla lasketaan taivaalla kulkevien satelliittien tiedetyistä paikoista sekä niiden signaalin vastaanottamisen viiveestä lähetyshetkeen verrattuna. On korrektimpaa kutsua satelliittipaikannusta GNSS-järjestelmäksi
Oman ratkaisuni rakensin vapaan ohjelmiston ympärille käyttämällä GPSDohjelmistoa ja Ublox ZED-F9P -piirisarjalla varustettua, USB:lla liitettävää GNSS-vastaanotinta. Vai heittävätkö kenties Googlen käyttämän pohjakartan ja satelliittikuvien koordinaatit. Jos käytämme vastaanotinta rakennuksessa sisällä, mitä suurimmalla todennäköisyydellä signaali saavuttaa vastaanottimen kimpoilemalla ikkunan kautta sisään, jos ollenkaan. Molemmat metodit osoittautuivat toimiviksi ja loppujen lopuksi aika yksinkertaisiksi pystyttää. Tämäkin ongelma ratkesi kahdella tapaa: ensimmäinen oli kytkeä USB-TTLsarjaportilla Windows-kone Raspberry Pi’n GPIO-sarjaporttiin ja ohjata NMEA-paikannusdata sinne. 19. järjestelmän käyttöön ei tarvita matematiikkaa eikä fysiikan tutkintoja ... Tämän jälkeen luotiin Windowsiin com0com-ohjelmistolla TCP-protokollaa käyttävä sarjaporttipalikka ja ohjattiin se virtuaaliseen sarjaporttiin. Tässä oli lyhyt pintaraapaisu siihen, mitä nykyään on mahdollista itse rakennella. +-3 metrin luokkaan aiemmasta n. Ensinnäkin voit rakentaa oman tukiaseman, joka lähettää korjaussignaalin jotain reittiä pitkin liikkuvalle asemalle, jonka tarkka paikka halutaan tietää. kulkevien satelliittien paikka on laskettavissa näistä aikaviiveistä ja niiden keskinäisestä suhteesta. Esimerkiksi kaupunkien urbaaneissa kanjoneissa teknologia joutuu koetukselle, sillä vajavaisen taivasnäkymän lisäksi osa signaaleista tulee antenniin kimpoamalla rakennuksista, jotka haittaavat tarkkojen ajoitusten laskentaa ja paikka alkaa heittää. Nykyaikaiset GNSS-piirisarjat sisältävät kaksitaajuusvastaanoton, mikä tarkoittaa sitä, että yhdestä satelliitista voidaan vastaanottaa samaa signaalia kahdella eri taajuudella. +-10 metrin tarkkuudesta. RTK-signaalin käyttöön on käytännössä kaksi mahdollisuutta. Äkkiä keksien kuvittelisin esimerkiksi robottiruohonleikkurien pysyvän paremmin omalla tontilla korjatulla signaalilla. Tämä nimenomainen laite tuli valittua siksi, että se on hyvin tuettu GPSD-ohjelmistossa. Mobiiliasemassa käytin rautana Raspberry Pi 2 -pienoistietokonetta, jonne asensin uusimman kehitysversion GPSD:n lähdekoodista kääntämällä sen itse. Maanmittauslaitokselta sai anottua kolmeksi kuukaudeksi käyttöön RTK-testitunnukset, joilla pääsi käyttämään varmasti laadukasta RTK-signaalia. Tarkkailin laatua syöttämällä laitteelta saamani koordinaatit käsin Maanmittauslaitoksen karttapalveluun. Ideaalimaailmassa olemme siis onnistuneet laskemaan käyttäjän paikan, mutta käytännössä asiat ovat jälleen kerran monimutkaisempia. Mihin ihmeeseen tavallinen kuluttaja sitten voi tarvita senttimetriluokan tarkkuuteen pystyvää paikannusta. Sitä käytetään muun muassa viralliseen maanmittaukseen Suomessa. Onneksi järjestelmän käyttöön ei tarvita matematiikkaa eikä fysiikan tutkintoja, vaan pienellä komponenttien osasten ymmärryksellä teknologiaa pääsee itsekin käyttämään suhteellisen edullisesti. Ongelmaksi jäi, miten saada korjattu GNSS-signaali Windows-tietokoneelle, jossa avoinna ollut karttasovellus odotti NMEA-signaalia sarjaportista. Kokeilujeni mukaan näiden itse pystytettyjen tukiasemien tarkkuus kuitenkin heitti noin metrin verrattuna referenssinä käyttämääni Maanmittauslaitoksen signaaliin. RTK korjaa paikan RTK on lyhenne sanoista Real-Time Kinematic. Jotta asia ei olisi niin yksinkertainen, laskuissa on otettava huomioon suhteellisuusteorian aiheuttamat anomaliat johtuen painovoiman voimakkuudesta täällä maassa ja korkeammalla satelliittien radoilla. Ei sovi kuitenkaan unohtaa antennin laatua: mitä parempi antenni vastaanottajalla on, sitä paremmin saamme erittäin heikkoja signaaleja vastaanotettua luotettavasti. Minua kiinnosti, miten tarkka paikannus on ylipäätään mahdollista käyttämällä vain suhteellisen edullista laitteistoa sekä julkisesti saatavilla olevaa tietoa. Toinen kokeilemani menetelmä oli verkottaa Windows ja Raspberry Pi yhteen ja tehdä Raspille TCP-serveri, joka lähettää NMEA-dataa. RTK-korjatussa signaalissa tarvitsemme oman vastaanottimemme lisäksi paikallaan pysyvän referenssiaseman, joka sijaitsee maantieteellisesti riittävän lähellä omaa vastaanotintamme ja jonka avulla saamme korjattua oman vastaanottimemme signaalin tarkemmin. Tällöin poikkeamaa saadaan korjattua ja tarkkuudessa päästäänkin jo n. Droonin lennätyksessäkin tarkemmat koordinaatit tulevat varmasti tarpeeseen, ainakin jos on tarve palata samoihin koordinaatteihin tarkasti joskus myöhemmin. Samalla huomasin, että Google Maps heittää myös 1–2 metriä; en tiedä johtuuko se siitä, ettei koordinaatteja lasketa joka desimaalilla, vai onko tarkkuutta heikennetty jostain muusta syystä. Koska olen aika huono matematiikassa ja fysiikkaakin vain seuraan innostuneesti, en lähde tässä analysoimaan järjestelmän toimintaa tarkemmin, koska todennäköisesti päätyisin olemaan vain absoluuttisen väärässä. Tämän poikkeaman korjaamiseksi on kehitetty niin sanottu DGNSS-järjestelmä, jossa vastaanotettujen signaalien viivettä vertaillaan kiinteän maa-aseman mittaamiin. Toinen vaihtoehto on käyttää julkisesti saatavilla olevaa korjaussignaalia. Antennilla on oltava hyvä, esteetön näkyvyys taivaalle. Maanmittauslaitoksen lisäksi on olemassa RTK2GO-palvelu, josta on mahdollista saada muiden käyttäjien jakamaa RTK-dataa ilmaiseksi. Kaupallisia sovelluksia ja laitteita RTK-korjatulle paikkatiedolle on olemassa, mutta niiden hinnat ovat suoraan sanottuna kammottavia – useamman tuhannen euron järjestelmää ei tule hankkineeksi vain, koska aihe sattuu kiinnostamaan. Sillä ei ole väliä, välitetäänkö korjaus radion tai internetin välityksellä, kunhan liikkuva asema ja tukiasema juttelevat keskenään. Ionosfäärissä avaruussää ei ole vakio: muun muassa auringon aktiivisuuden aiheuttamat häiriöt vaikuttavat satelliiteista vastaanotettavien radiosignaalien reittiin niin, ettei aika ole ennustettu vaan siihen tulee pieniä poikkeamia. Käytännössä suurempi heitto tulee satelliittien kulkemasta nopeudesta kuin itse painovoimasta, tai näin ainakin itse olen ymmärtänyt asian. ... Ionosfäärin häiriöt vaikuttavat eri tavalla eri taajuuksilla, joten näiden kahden signaalin vaihe-eroista voidaan päätellä ja korjata ionosfäärin aiheuttamia häiriöitä ilman erillistä korjaussignaalia. Liikkuva asema lähettää oman sijaintinsa tukiasemalle, joka lähettää takaisin omat havaintonsa radiokeleistä GNSS-piirisarjan ymmärtämässä muodossa käyttäen tähän liittyviä standardeja. GNSS:n lisäksi olikin tarpeen opetella vielä yksi lyhenne: RTK
Tähän tilaan pitäisi saada mahtumaan kaikki ohjelman tarvitsemat taulukot. En ollut kuitenkaan käyttänyt QBasicia aktiivisesti pitkään aikaan. Muistia ei ole tuhlattavaksi, koska ohjelman käytettävissä on yhteensä vain noin 160 kilotavua muistia. Olin etukäteen huolissani, riittäisivätkö QBasicin nopeus ja saatavilla oleva muisti tehtäviin. Myös itse opettelin lapsena ohjelmointia sen avulla. Kielen ainoa tietorakenne on kiinteän kokoinen taulukko. Käytin haasteen aikana QBasicia DOSBox-emulaattorin avulla, mikä osoittautui toimivaksi ratkaisuksi. Advent of Code on vuosittain joulukuussa netissä järjestettävä ohjelmointihaaste joulukalenterin muodossa. Nimestään (”quick basic”) huolimatta QBasic ei ole kovin nopea kieli. Taulukossa pystyy lukemaan ja asettamaan tietyssä kohdassa olevan alkion, mutta muuten kaikki pitää tehdä itse. Se on erikseen myydyn QuickBASIC 4.5:n rajoitettu versio, josta puuttuu joitakin ominaisuuksia, ehkä tärkeimpänä mahdollisuus kääntää ohjelma EXE-tiedostoksi. Kielestä kiinnostuneiden kannattaa vilkaista myös Skrollin edellinen QBasic-aiheinen juttu numerosta 2018.1 (skrolli.fi/numerot). Tämä on suuri ero verrattuna moderneihin kieliin, joissa voi vain kutsua sort-funktiota tai vastaavaa. Teksti: Antti Laaksonen Kuvat: Mitol Meerna, Antti Laaksonen Q Basic on 1990-luvun alussa julkaistu ohjelmointikieli, joka toimitettiin Microsoftin DOS-käyttöjärjestelmän mukana versiosta 5 eteenpäin. Jokaisessa kalenterin luukussa on ohjelmointitehtävä, jossa ohjelman tulee lukea testiaineisto syötetiedostosta ja vastata yhdellä luvulla tai tekstirivillä. Viime vuonna Advent of Code täytti kymmenen vuotta, minkä kunniaksi päätin osallistua haasteeseen QBasic-kielellä. Aikoinaan QBasic oli monelle aloittelijalle ensimmäinen ohjelmointikieli. Nykyään on saatavilla myös QBasicin kanssa yhteensopiva QB64-kääntäjä (qb64.com). Tämän takia toivoin, että tehtävissä ei tulisi suorittaa laskennallisesti raskaita algoritmeja eikä käsitellä suuria aineistoja. Ensimmäinen tehtävä Haaste lähti käyntiin päivän 1 tehtävällä, jossa syötetiedostossa annettiin kaksi listaa kokonaislukuja. Esimerkiksi jos on tarvetta järjestää taulukon sisältö, tähän täytyy toteuttaa itse algoritmi. Minulla ei myöskään ollut ennakkokäsitystä siitä, miten kieli soveltuisi Advent of Coden tehtävien ratkaisemiseen. Tehtävän alkuADVENT OF CODE QBASICILLA : KOODI Löytöretki vanhan ajan ohjelmointiin 2025.1 20. Verrattuna nykyajan ohjelmointikieliin QBasicissa on melko vähän ominaisuuksia valmiina