GIER

**GIER** (**G**eodætisk **I**nstituts **E**lektroniske **R**egnemaskine) 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.

Maskinen som ble levert til IFA i Halden er fremdeles i behold på  (nå)IFE i eller på Industrimuseet i Halden 

## 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 valthen -val else val
      end;
      
      for i:=1 step 1 until N do
        sum:=sum + Data[i];
      avg:=sum/N×100;
      write(|, avg)
    end
  end

På GIERs skrivemaskinterminal transporterte tegnet | (pipe) ikke vogna videre, slik at  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
* 
* datamuseum.no 
* Dansk Datahistorisk Forening om GIER
* GIER i en presentasjon av NTNU