GIER/HJÆLPGAIII

Fra DDHFwiki
Spring til navigation Spring til søgning

Forhistorie

Vi har mest prøvet operativsystemet HELP-3 og GIER ALGOL 4 oversætteren, både på simulatoren og på den rigtige GIER.

Før de kom frem, ca. i 1967, brugte man operativsystemet HJÆLP (beskrevet i Lærebog i kodning for GIER, bind 2) og GIER ALGOL III oversætteren.

Vi har binære strimler med HJÆLP og GIER ALGOL III oversætteren, som også kan køre på simulatoren.

På et tidspunkt dukkede et interessant dokument op: Doppelte Präzision Arithmetik in GIER ALGOL. Det indeholder kildeteksten til rutiner til regning med flydende komma i dobbelt præcision (et tal gemmes i to celler). Der er også et sæt testprogrammer med tilhørende kørselsudskrifter.

Disse rutiner skal indlæses samtidig med at GIER ALGOL III kildeteksten bliver indlæst. GIER ALGOL III kildeteksten indeholder allerede kode der er forberedt for disse rutiner.

Når vi er i gang med gamle kildetekster kunne det også være rart med kildeteksten til HJÆLP, det muliggør at bygge et system op på en GIER med tre tromler.

Jeg har fået indtastet begge kildetekster.

HJÆLP

Man skal bruge følgende strimler:

  1. Kanal 0 til HJÆLP
  2. Binær udgave af HJÆLP
  3. Kildetekst til HJÆLP

Man starter med en tom maskine.

I simulatoren vælges File, New, vælg tre tromler. Det er ikke nødvendigt med bufferen, den kan ikke udnyttes af HJÆLP eller GIER ALGOL III.

Strimlen med kildeteksten til HJÆLP er til en GIER med tre tromler. Har man kun én tromle skal der flyttes nogle kommentarmærker i starten. Eller man kan nøjes med at bruge den binære strimmel med HJÆLP.

Skrivning på kanal 0 og kanal 1-31 skal være tilladt.

Indsæt følgende tre ordre i celle 1-3:

[1]  LY 0, TL -6
[2]  CA 0, HV  1
[3]  GM 5 M t-1

Bemærk: Disse tre ordre er forskellige fra de tre ordre der bruges til at indlæse kanal 0 i help-3. De står nævnt i øvelse 15.3 på side 201 i Lærebog i kodning for GIER, bind 2. Afsnittet med øvelser mangler i den engelske udgave.

R, M og by nulstilles, kanal 0 strimlen lægges i læseren, og GIER startes i celle 1.

Efter indlæsningen er GIER stoppet, og der trykkes på HP knappen. GIER skriver FEJL med rødt.

Læg den binære strimmel med HJÆLP i læseren og tryk mellemrum. Efter indlæsning skriver GIER "hp-knap 16".

Læg strimlen med kildeteksten til HJÆLP i læseren og skriv "_l".

Indlæsningen stopper efter et stykke tid, fortsæt ved at skrive "_l".

Dette gentages indtil GIER skriver "Hul (" og venter på input.

Tast "0" (nul) og mellemrum, GIER laver en ny kanal 0 strimmel. Gem den som nykanal0.flx

Tast "h" og mellemrum, GIER laver en ny binær strimmel med HJÆLP. Gem den som nyhjælp.flx

Så starter man forfra med en tom GIER, lægger de tre instruktioner i celle 1-3, indlæser den nye kanal 0 og det nye HJÆLP system.

Efter indlæsning kan man lave en kontrol ved at skrive:

_hkontrol
_e

Dette giver en udskrift at hjælpepgrammerne og deres placering. Der er sumfejl på algol, den er jo ikke indlæst endnu.

Gem konfigurationen i simulatoren.

GIER ALGOL III

Man skal bruge følgende hulstrimler:

  1. RS.flx
  2. PROC.flx
  3. gaIIIdp.flx
  4. GPA.flx
  5. PASS8.flx
  6. PASS7.flx
  7. PASS6.flx
  8. PASS5.flx
  9. PASS4.flx
  10. PASS3.flx
  11. PASS2.flx
  12. PASS1.flx
  13. TLA.flx

Strimlerne konverteres til ASCII én for én:

flx2a <RS.flx >RS.asc
flx2a <PROC.flx >PROC.asc
etc.

Alle filerne sættes sammen til én fil (i den rette rækkefølge:)

cat RS.asc PROC.asc \
     gaIIIdp.asc \
     GPA.asc \
     PASS8.asc PASS7.asc PASS6.asc \
     PASS5.asc PASS4.asc PASS3.asc \
     PASS2.asc PASS1.asc TLA.asc >ga3.asc

I starten står der nogle definitioner som kan ændres (default værdier i parentes):

  1. c70: First track during loading of compiler (39)
  2. c60: After loading the compiler will be moved to have its first track in c60 (39)
  3. e86: Reserve e86 tracks after top of translator (0)
  4. e20: Last track used by translator (319)
  5. e68: double precision library loaded (0)
  6. e96: Reserve track for HP-entry (0)
  7. e97: Last track accessible to todrum and fromdrum (319)

Hvis vi vil lave en version af GIER ALGOL III med procedurer til dobbeltpræcisionsaritmetik til en tre-tromle GIER skriver man følgende:

cat <ga3.asc | \
       sed -e '0,/^_s/s//_d c70=39,c60=39,e96=0,e86=0,e20=959,e68=1,e97=959/' | \
       sed 's/#072//g' | \
       sed 's/^_s//g' | a2flx >ga3.flx

Det andet kald af sed fjerner form feed (tegn 72) og det tredie kald fjerner _s som ville betyde at indlæsningen stopper.

Det er muligt at lave en konfiguration helt uden HJÆLP programmerne. Et tryk på HP knappen vil bevirke et direkte hop til oversætteren.

Strimlen indlæses med _l. Det tager lang tid...

Efter indlæsningen startes oversætteren, og den skriver "algol".

Har man stoppet maskinen med HP knappen startes oversætteren vha:

_halgol
_e

Test af dobbeltpræcisionsaritmetik

Dokumentationen til GIER ALGOL III dobbelpræcisionsaritmetik indeholder et sæt testprogrammer og udskrift fra kørsel af disse. Programmerne findes hér i strimmelarkivet: t10.flx

Programmet indlæses ved at taste mellemrum til algol prompten. Efter oversættelse skriver GIER run, og kørslen startes ved at taste mellemrum. Udskrift kommer på perforatoren.

Den første kørsel af testprogrammerne afslørede problemer med double ln funktionen. Resultaterne stemte ikke helt med udskrifterne i dokumentationen. Thorkil Naur fandt frem til hvad problemet var (GIER/GAIII DPA double ln() fejlsøgning).