GIER

GIER (Geodætisk Instituts Elektroniske Regnemaskine) er en datamaskin som ble produsert av det danske firmaet Regnecentralen. 
I 1958 hadde Geodætisk Institut fått i oppdrag å tilpasse sitt trianguleringsnett til UTM-koordinater. For å løse denne oppgaven ble det startet et samarbeidsprosjekt med Regnecentralen, der instituttet leverte komponentene og regnesentralen utviklingsarbeidet, derav også maskinens betegnelse. Den første GIER ble utlevert i oktober 1961, tilsammen ble det produsert 56 eksemplarer.


== Oppbygning ==

GIER var en såkalt andregenerasjons regnemaskin fordi den var basert på transistorer i stedet for rør. Arbeidsminnet var et magnetkjerneminne med 1024 maskinord på 42 bit. Den arbeidet med virtuell hukommelse, et trommelminne med 320 kanaler á 40 maskinord ble brukt som bakgrunnslager, hullbånd av papir var et vanlig eksternt lagringsmedium. Den ble ikke styrt fra skjerm og tastatur, men fra en elektrisk skrivemaskin. I motsetning til senere datamaskiner var den heller ikke interruptstyrt, så den kunne ikke utføre andre oppgaver mens den ventet på data fra hullbånd eller fra skrivemaskinen. På grunn av det lille arbeidsminnet og bakgrunnslageret, som tilsvarer 5376 byte henholdsvis 67200 byte, var maskinkoden optimert til å omfatte så mye funksjonalitet som mulig ved minst mulig forbruk av minneplass. Et maskinord kunne for eksempel inneholde to grunnleggende instruksjoner eller én utvidet instruksjon.


== Programvare ==
Maskinen ble programmert i GIER Algol eller assemblerspråket SLIP (Source Language Input Program). Den hadde ikke noe permanent minne (ROM), når den skulle startes måtte derfor de første instruksjonene (3 maskinord á 42 bit) tastes inn bit for bit manuelt. De inntastede instruksjonene leste inn binærkode direkte fra hullbånd, som la seg oppå instruksjonene slik at de ble modifisert til en såkalt boot-lader. Denne leste så inn resten av det primitive input-programmet, dette var grunnmodulen i operativsystemet Help 3, og muliggjorde videre kontroll over GIER via en skrivemaskinterminal.GIER Algol var en variant av Algol 60 som var tilpasset maskinens begrensninger og særegenheter. Tegnsettet var for eksempel utvidet med æ og ø, og den hadde reserverte rutiner for å betjene tilbehør som skrivemaskin eller hullbåndstanser. I den første versjonen hadde disse rutinene identifikatorer med dansk språk som grunnlag, slik som læstegn, skrvtekst eller tryk, i senere versjoner ble disse utskiftet med engelske identifikatorer av formen write.... Arbeidsminnet hadde svært liten kapasitet slik at antall variabler under gunstige betingelser maksimalt kunne være ca. 700, derfor fantes det egne rutiner for å mellomlagre data på trommelminnet.
Også assemblerkoden SLIP var avledet av dansk, med kommandoer som TL - tæl lang, LY - læs ydre enhed, HH - hop højre eller GR - gem register.


== I Norge ==
Den første GIER i Norge ble levert 1962 til Institutt for atomenergi i Halden, den første elektroniske regnemaskinen på NTH i Trondheim var også en GIER, den ble levert samme år. Senere ble det også levert en til NTHs Institutt for Reguleringsteknikk (idag Institutt for teknisk kybernetikk). Norges Vassdrags- og Elektrisitetsvesen hadde også en av de første eksemplarene i drift.


== Eksempler på programmering ==


=== GIER Algol ===
Dette programmet regner ut gjennomsnittet av absoluttverdiene til alle elementene i et array. Til sammenlikning se eksempelet i Algol 60.

 comment the main program (this is a comment);
  
 begin
   integer N;
   N:=read integer;
   
   begin
     real array Data[1:N];
     real sum, avg;
     integer i;
     sum:=0;
     
     for i:=1 step 1 until N do
     begin real val;
       val:=read real;
       Data[i]:=if val<0 then -val else val
     end;
     
     for i:=1 step 1 until N do
       sum:=sum + Data[i];
     avg:=sum/N×100;
     write(|<d ddd ddd.dd|>, avg)
   end
 end

På GIERs skrivemaskinterminal transporterte tegnet | (pipe) ikke vogna videre, slik at < og > ble skrevet oppå | i oppropet av write-prosedyren.


=== Assemblerkoden SLIP ===
Eksempelet viser de tre instruksjonene som tastes inn manuelt for å lese inn bootstrap-programmet. Tre rigistre blir brukt: R - regneregisteret, M - multiplikatorregisteret og S - sekvensregisteret.
Adresse instruksjon      betydning
[0]     tl -6,   ca 0    tæl lang -6, coicidens adressetal 0
[1]     ly r4,   hs r-1  læs ydre relativt 4, hop sekvensielt relativt -1
[2]     gm s3 t -1 M     gem M-register sekvensielt 3 tælt -1 nulstil mærkebits
[3]
[4]

Programmet går i sløyfe i instuksjonene [0] og [1] og leser tegn etter tegn inn i R-registeret fra et 7-kanals hullbånd. Et tegn består av bits/hull 0-6, det siste tegnet i en instruksjon er kjennetegnet ved at bit 7 er satt. Etter shift-operasjonen (6 posisjoner mot høyre inn i M-registeret) står dette fremdeles i R-registeret og testen ca 0 feiler og [1] blir ikke utført. Den innleste instruksjonen, som nå står i M-registeret, lagres i [3]. Denne adressen beregnes slik: 

hs r-1 har allerede ført til at hoppinstruksjonens adresse (=1) blir lagret i S-registeret,
adressetallet 3 blir modifisert med telletallet -1 og er nå 2,
innholdet av S-registeret (=1) adderes og resulterende adresse er 3.Instruksjonen som ble lagret i [3] var et hopp til [1], neste instruksjon ble lagret i [2] som dermed ble modifisert til å lagre de følgende instruksjonene et annet sted i arbeidsminnet.


== Referanser ==


== Eksterne lenker ==
(en) GIER – kategori av bilder, video eller lyd på Commons 
datamuseum.no
Dansk Datahistorisk Forening om GIER
GIER i en presentasjon av NTNU