DataMuseum.dk

Presents historical artifacts from the history of:

RegneCentralen GIER Computer

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RegneCentralen GIER Computer

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦731430d58⟧ Bits:30000729 GIER ALGOL III GPA, 8-hole paper tape

    Length: 22236 (0x56dc)
    Description: Bits:30000729 GIER ALGOL III GPA
    Types: 8-hole paper tape
    Notes: Gier Text, Has10

GIER Text (HTML)

[4. febr. 65]
    [General pass administration, page 1]
    [Track reservations for standard identifier tables.
     These tracks are filled by the Translator Loading Administration]
d e98=c60 ; 1st track following std.procs. _
d c60=c60+e85 ; reserve e85 tracks after std-procs. _
d e81=c60 ; first track of std. ident. tables. _
b k=c60+e70, i=0 ; Reserve tracks for supplementary table. _
d i=i+54e72, c60=k-e70 ; e72+15 words. _
d e88=c60-e81 ; number of supplementary tracks. _
e ; _
b k=c60+e70, i=0 ; Reserve tracks for primary _
d i=i+e71+39, c60=k-e70 ; standard identifier table, containing _
e ; e71 identifiers _
b k=c60+e70, i=0 ; Reserve tracks for pass 6 table. _
d i=i+e71+39, e83=c60 ; e29 = number of tracks for primary _
d c60=k-e70 ; identifier table = number of tracks _
d e29=c60-e83 ; for pass 6 table. _
e ; _
[GENERAL PASS ADMINISTRATION, page 2]
d e14=c60, c60=9e14, e15=c60, i=e13-39; _
b a20 ; _
[FORWARD PASS] [Use of output: Place byte in R pos. 0-9, pos 10-39 cleared, 40-41 any thing, call by hs e3. M is unchanged upon exit. If KB=1 then testprint Call for input: arn (e1)+1 or pm (e1) X 1 hs e2 LA hs e2 LA e1 holds the address of the last byte taken] [OUTPUT] ; e3: hv a10 t 2 NKB ; reset by pack fourth a10: hs e6 ; testprint if LKB hv (e3) t 2 ; return from testprint [OUTADDRESS] ; e12: gr 82e13 t 1 ; pack first hr s1 ; ck -10 , gt (e12) ; pack second hr s1 ; ck 20 , ac (e12) ; pack third hr s1 ; ck 10 , ac (e12) ; pack fourth pa e3 t a10 ; hr s1 NA ; return if track not filled [DRUMOUT] ; arn (7e4) D 1 ; ca (4e4) , nt (5e4) ; vk (7e4) , is (e12) ; sk s-40 , arn 1e4 ;
ca (5e4) , hs e5 ; alarm (|<program too big|) < >
arn (e12) , qq e30 ; qq (e12) t -82 LB ; a11: qq (1e4) t 1 ; used:=used+1 e11: hv e12 ; [DRUMIN] ; a12: arn (6e4) D 1 ; ca (4e4) , nt (5e4) ; vk (6e4) , is (e2) ; lk s-40 , arn (e2) ; qq (e2) t -82 LB ; qq (1e4) t -1 ; [INADDRESS] ; e2: arn 81e13 t 1 ; unpack next word ga e13-4 V NA ; hv a12 ; tk 10 , ga e13-3 ; tk 10 , ga e13-2 ; tk 10 , ga e13-1 ; [BYTEADDRESS] ; e1: arn e13-1 t -4 ; hr s1 ; [-4] qq ; BYTEBUFFER [1] [-3] qq ; [2] [-2] qq ; [3] [-1] qq ; [4] [e13:BASEIN] ; qqf , qq ; [5] [GENERAL PASS ADMINISTRATION, page 3] [BACKWARD PASS] [e3] hh e3 t 2 NKB ; hs e6 ; [+2] hv a11 , ck 10 ; [e12] gr 123e13 t -1 ; [+4] hr s1 , ck 20 ; ac (e12) ; [+6] hr s1 , ck -10 ; gt (e12) ; [+8] hr s1 , ac (e12) ; pa e3 t e3 ; hr s1 NA ; [8e12]arn (7e4) D -1 ; ca (10e4) , it (5e4) ; vk (7e4) , is (e12) ; sk s1 , arn 1e4 ; ca (5e4) , hs e5 ; arn (e12) , qq e30 ; qq (e12) t 82 LB ; qq (1e4) V 1 ; [a11] hh (e3) t 2 ; [e11] hv e12 ; [a12] arn (6e4) D -1 ; ca (10e4) , it (5e4) ; vk (6e4) , is (e2) ; lk s1 , arn (e2) ; qq (e2) t 82 LB ; qq (1e4) t -1 ; [e2] arn 42e13 t -1 ; ga e13-1 V NA ; hv a12 ; tk 10 , ga e13-2 ; tk 10 , ga e13-3 ; tk 10 , ga e13-4 ; [e1] arn e13-1 t -4 ; hr s1 ; [-4] qq ; [-3] qq ; [-2] qq ; [-1] qq ; [e13] qqf , qq ; [GP. Page 4. To track 3e14 by TLA] [This track is called in to 165e13 by initialize translator and it stays in core during all passes. It holds the general routines and translator parameters The translator parameters are first loaded in TLA to e 4 ff]
d i=165e13 ; _
e6: bt 100 t -55 ; testprint: print count:= print count + 1;
; if print count > 10 then __ ____
e7: hs e8 ; new line print: newline; e9: gm 41e13 , ga a2 ; print: save M:= M; save Raddr:= Raddr; ck 0 , tl -30 ; M:= Raddr; digits:= -2; pa a3 X -2 ; R39:= M⨯10-3; zero:= 0; mln a4 , pt a5 ; next: char:= entier(R39); R39:= R39 - char;
a8: ck -10 , ga a6 ; if char = 0 then __ ____
a5: pa a6 V _[or16]LZ ; begin char:= zero; 0 _____
pt a5 V 16 ; if digits = 0 then zero := 16 end __ ____ ___
ca (a3) , hv r-1 ; else zero:= 16; ____
a6: sy __ , ncn s-e3-1 ; outchar(char); -1
e10:pa e6 t 100 ; if -, call from output then printcount:= 10; __ ____
a3: bt __ t 1 ; digits:= digits + 1; -1
a2: pmn __ DXV ; if digits _ 1 then -1 __ < ____
mln a7 , hv a8 ; begin R39:= R39⨯10; go_to next end; _____ __ __ ___
pm 41e13 , hv a1 ; Raddr:= save Raddr;
; M:= save M; go_to space exit; __ __
e8: sy 64 , pa e6 ; newline: outchar(<CR>); printcount:= 0;
a: sy _ , pa r ; outchar(passno 1); pass no1:= 0; 1
a1: sy __ , pa r ; space out: outchar(point); point:= 0; 59
sy 0 , hr s1 ; outchar(0); exit;
a4: 10-3 ; comment _______
a7: qq 10.39 ; constants for print; [Meaning of message parameters: Parameter 1, choice of medium Parameter 2, color, line, stop 0 Normally as 8, if n then as 12 0 red, line, stop immediately 4 () w in input and output 1 s - - - after pass 6 8 n As 12 with w added 2 r black, no line, no stop 12 n() As typed by operator 3 p - , line , - -] e5: vk 5e14 , it 123e13 ; message: tk:= messtrack;
bs (e12) , it -41 ; if place for mess _ outaddr then __ < ____
a9: lk 124e13 , vk 6e14 ; place for mess:= place for mess - 41; ; to core(tk, place for mess); wait drum;
e94:hv (a9) , bs _ ; tk:= first text track; go_to core for message; 1 __ __
; comment ok is set false (0) by red message; _______
; endpass 6: e94h:
; if -, ok then go_to init transl; __ ____ __ __
e92:vk 4e14 , hh e93 ; endpass: tk:= endpasstrack; go_to comm; __ __
e93:vk e14 , lk e25 ; inittransl: tk:= init transl track; vk c61 , hv e25 ; comm: to core(tk, endpass place);
; wait drum; go_to core endpass; __ __
e4: [Translator parameters,; see TLA] ; [GP. Page 5]
b k=5e14+e70, a6, b7, d40 ; start text block; _
d b=i-1 ; used for clearing track at end; _
pa a9 t 124e13 ; message track: restore place for message; sy 58 , it 41e13 ; outchar(<LC>);
bs (e2) , it -41 ; if inaddress _ place for text then __ > ____
b1: lk 42e13 , arn s1 ; place for text:= place for text - 41; ; to core(tk, place for text); gt rb4 , tk 37 ; mess no:= part2(store[s+1]); pt rb2 V 9e4 NO ; by select:= bits(36, 37, store[s+1]);
ud 8e4 LT ; by:= if byselect = 0 then error by __ ____
tk 2 V LT ; else if by select = 1 then typewrby ____ __ ____
b2: tk 2 , ud _e_ ; else if by select = 2 then alarm by 8_4 ____ __ ____
; else normal by; ____
hs e8 ; new line; comment cleared during use by init tra _______
nsl. ps e93-1 LZ ; act:= bits(38, 39, store[s+1]); pt e94 NT ; finis:= act= 0; pa rb3 V 29 NT ; red := act < 2;
hv ra1 LO ; if act = 2 then go_to print text; __ ____ __ __
b3: sy __ , sy 35[l] ; outchar(if red then <red> else <black>); 62 __ ____ ____
sy 57[i] , sy 37[n] ; outtext(|<line|); < >
sy 53[e] , arn e4 ; print(CRcount); hs e9 ; a1: vk 7e14 , ud e10 ; printtext: tk:= text track 2; print count := 10;
b4: is (rb1) , it s__ ; text addr:= place for text + mess no; -1
a2: ; go_to test textaddr; __ __
b5: pmn _ X 1 ; next word: textaddr:= textaddr + 1; 0
is (rb5) , it s-40 ; test text addr: if textaddr - 40 _ place for text t __ > _
hen ___
bs (rb1) , hv ra3 ; begin to core(tk, place for text); _____
lk (rb1) , vk 0 ; wait drum; textaddr:= textaddr - 40;
pmn(rb5) X -40 ; end; ___
a3: cl 36 , pa rb7 ; R5:= bits(36, 41, store[textaddr]); ar 32 D LA ; M:= bits(0, 35, store[textaddr]); ar 16 D LB ; count:= 7; next char:
a4: ca 160 , hv ra5 ; if R5 = <end text> then go_to end; __ ____ __ __
b6: sy __ , ck -4 ; outchar(char); Raddr:= R5; 58
ca 63 , arn e8 ; if Raddr = 63 then Raddr:= <CR>; __ ____
ga rb6 , it -80 ; char:= Raddr; count:= count - 1;
b7: bt __ , hv ra2 ; if count = 0 then go_to next word; -1 __ ____ __ __
cln -6 , hv ra4 ; R5:= bits(34, 39, M); M:= bits(0,33, M);
; go_to next char; __ __
a5: sy 62 , vk (6e4) ; end: outchar(<black>); lk (rb1) , vk (6e4) ; to core(inputtrack, place for text); vy (8e4) ; by:= normal by;
a6: grn rb V 1 M ; clear this track for marks; __
hrs1 ; if finis then go_to init transl __ ____ __ __
hv ra6 ; else exit; ____
[GP. Page 6] [Text tracks, 6e14 and 7e14] [Comment: All texts must end in LC] [Used in pass]
d: tprogram too big; ; 1-8 _
d1: tcharacter; ; 1 _
d2: tcompound; ; 1 _
d3: tpause; ; 1 _
d4: t)<improper>.; ; 1 _
d5: tcomment; ; 1 _
d6: tstring; ; 1 _
d7: ttoo many identifiers; ; 2 _
d8: tstack; ; 3 _
d9: tend; ; 1 ____
d10:tsubscript; ; 6 _
d11:tproc. call or ident.; ; 6 _
d12:ttype; ; 6 _
d13:toff; ; 1 _
d14:ton; ; 1 _
d15:t+declar.; ; 5 _
d16:t+specif.; ; 5 _
d17:t-declar.; ; 5 _
d18:t-specific.; ; 5 _
d19:tvalue; ; 5 _
d20:t-formal; ; 5 _
d21:t-delimiter; ; 3 _
d22:toperand; ; 3 _
d23:tdelimiter; ; 3 _
d24:t-operand; ; 3 _
d25:tnumber; ; 3 _
d26:ttermination; ; 3 _
d27:tsum; ; 1 _
[GP. Page 7]
d28:t _
algol ; ;
d i=i-e69-e69 ; _
t _
cdc algol ; ;
d i=i+e69+e69-2 ; _
d29:t _
algol KA. ; ;
d i=i-e69-e69-e69 ; _
t _
cdc algol KA. ; ;
d i=i+e69+e69+e69-3 ; _
d30:tfrom reader; ; _
d31:twrong tape; ; _
d32:t _
algol KB. ; ;
d i=i-e69-e69-e69 ; _
t _
cdc algol KB. ; ;
d i=i+e69+e69+e69-3 ; _
d33:t _
algol KC. ; ;
d i=i-e69-e69-e69 ; _
t _
cdc algol KC. ; ;
d i=i+e69+e69+e69-3 ; _
[Define final names of texts. Relative to d]
d e30= d-d, e31= d1-d, e32= d2-d, e33= d3-d, e34= d4-d, e35= d5-d; _
d e36= d6-d, e37= d7-d, e38= d8-d, e39= d9-d, e40=d10-d, e41=d11-d; _
d e42=d12-d, e43=d13-d, e44=d14-d, e45=d15-d, e46=d16-d, e47=d17-d; _
d e48=d18-d, e49=d19-d, e50=d20-d, e51=d21-d, e52=d22-d, e53=d23-d; _
d e54=d24-d, e55=d25-d, e56=d26-d, e57=d27-d, e58=d28-d, e59=d29-d; _
d e60=d30-d, e61=d31-d, e62=d32-d, e63=d33-d ; _
e ; end of text block; _
[GP. Page 8] [Endpass track, loaded in core, to track 4e14 by TLA]
b i=124e13, b3, c6 ; endpass track: _
; begin _____
hsn e3 ; output(0); grn a10 , hsn e3 ; forbid testprint; output(0) c1: pp rc2 , hsn e3 ; rep zero: output(0);
gp e11 , hh rc1 ; if track not filled then go_to rep zero; __ ____ __ __
c2: arn 1e4 , ud 10e4 ; output pass inf:
pm 3e4 , hs e7 ; if pass inf then __ ____
c3: arn 2e4 , ud 10e4 ; begin newline print(used tracks); _____
nc 0 , hs e9 ; if inf 1 | 0 then print(inf 1); __ = ____
hhn rc3 X NZ ; if inf 2 | 0 then print(inf 2); __ = ____
; end; ___
pa 2e4 , ud 8e4 ; next pass: inf 1:= 0; by:= typewr by
lyn __ D LKA ; if pass stop then read a char; -1 __ ____
vy (8e4) , it 1 ; by:= normal by; pp (9e4) , gp a ; passno 1:= passno:= p:= passno + 1; ps (6e4) , it p ; R:= pass word[p];
arn rc_ , pp (7e4) ; if bit(40, R) = 0 then _5 __ ____
pa e4 V NA ; CRcount:= 0
gp 6e4 , gs 7e4 ; else exchange(input track, output track); ____
vk (6e4) , lk 1e13 ; to core(input track, inbuf 1); ga rb1 , gt rb3 ; rel pass track:= part 1(R); ck -10 , vk 1e14 ; exit addr:= part 2(R);
vk 2e14 LB ; to core(if bit(41, R) = 0 then forward track __ ____
lk e3 , ud e10 ; else backword track, inout place); ____
; printcount:= 10 vk 8e14 , ud 3e4 ; p:= pass start track; core:= pass place c6: pa a1 X 59 ; nexxttrack: point:= 59; M:=R
can p , lkr -36 ; if p = 0 then __ ____
b1: vk p__ , pp p1 ; begin to core(tape input, r-36); continue -1 _____
; in read a pass; end; ___
b2: lk ___e__X 40 ; core:= core + 40; R:=M; 165_13
nc (rb2) , hv rc6 ; to core(relpass track + p, core); p:= p + 1;
; if core | part 4(R) then go_to next track; __ = ____ __ __
c4: pmn(e1) X 1 ; find first non zero byte:
hs e2 LA ; for byte:= input while byte = 0 do; ___ _____ __
hv rc4 LZ ; qq (e1) t -1 ; inaddress:= inaddress - 1;
b3: pa 3e4 , hv __ ; inf 2:= 0; go_to store[exitaddr]; -1 __ __
d c5=i-2 ; comment define password[0] _ _______
; passwords: e21:qq e93.19+205e13.39 ; [2] format: qq qq e93.19+205e13.39 ; [3] first track relative to qq e93.19+205e13.39 ; [4] pass start track .9+ qq e93.19+205e13.39 ; [5] exit address .19+ qq e93.19+205e13.39 ; [6] top coreplace - 40 .39+
qq e93.19+205e13.39 ; [7] if change direct then 1 else 0 .40+ __ ____ ____
qq e93.19+205e13.39 ; [8] if backward then 1 else 0 .41; __ ____ ____
[Each pass loads its own pass word. The pass word values read in here will goto init translator]
e ; end endpass track _ ___
[GP. Page 9] [Comp. to core, read a pass. Track 8e14] [Call comp to core: start address for loading in core - 1 in p; hs coreplace for comp to core + e23; qq identification on tape (may be ()), <exit here with error. sum Raddr=1 ident R=0> normal exit: Program uses whole indicator, by must be set before entry]
b k=8e14+e70, a9, b9 ; start block; _
a: pp 204e13 , it 2 ; test for pass 2: p:= pass core place -1;
bs (9e4) , hv ra2 ; if passno > 2 then go to comp to core; __ ____ __ __
a1: ;
b1: qq __ , ud 8e4 ; pass 2 to core: after error: -1
lyn rb1 , vy (8e4) ; by:= typewr by; read a char; by:= normal by; a2: pa rb6 , gs rb9 ; comp to core: i:= 0; save s:= s; a3: pa rb2 , lyn rb1 ; from tape: sum:= 0;
nc 17 , hv ra3 ; if read a char | <<> then go_to from tape; __ = ____ __ __
lyn rb1 , ca 4 ; if read a char = 4 then __ ____
hs ra4 , hv ra6 ; begin one word; go to compute n end; _____ __ __ ___
hs ra4 , ps ra3 ; one word; one word; go to from tape; __ __
a4: lyn rb3 , pa rb4 ; procedure one word; comment to R, marks to RC; _________ _______
a5: ; begin r:= 0; b3:= char:= read a char; b4:=0; _____
b2: ac __ D ; rep: pack(R, 0,9,char); sum:= sum+char; -1
b3: pi __ , tl -7 ; RC:= bits(8,9,b3); tl(-7); -1
b4: bt __ t -100 ; b4:= b4-100; if b4 < -512 then bl(10) -1 __ ____
tl 10 , hh s ; else begin char:= read a char; go to rep end ____ _____ __ __ ___
ly rb1 , hv ra5 ; end one word; ___
a6: tk 20 , ga rb5 ; compute n: tk 3 , gt rb5 ; n:= bits(20,29,R)+bits(30,39,R)⨯40; tk 12 , ac rb5 ;
b5: qq __ t __ ; -1 -1
hs ra4 , ps (rb9) ; read and test identification: one word; s:= save s;
nc (s1) , hhn s1 ; if Raddr = ident then __ ____
; begin R:=0; error exit end; _____ ___
a7: hs ra4 , ps (rb9) ; read words: one word; s:= save s; i:= i+1;
b6: gr p__ t 1 MRC ; pack(store[p+i], o,39,R, 40,41,RC); -1
pmn(rb5) DX -1 ; n:= n-1; M:= 0;
b7: nc 1 , hv ra7 ; if n | 1 then go to read words; __ = ____ __ __
lyn rb1 , tk -7 ; read and check sum;
ly rb1 , tk -7 ; if sum = read achar + __
ly rb1 , tk 14 ; 128⨯last 3 bits(read a char)+
ca (rb2) , hr s2 ; 0⨯read a char then normal exit; ____
arn rb7 , hh s1 ; Raddr:= 1; error exit;
qq ; comment 2 unused words; _______
qq ; a8: pt rb8 V e57 NZ ; error:
pt rb8 t e61 ; message (if R=0 then |<wrong tape| __ ____ < >
hs e5 ; else |<sum|, 8+2); ____ < >
b8: hh ra1 , qqnr__ ; go to after error; -1 __ __
a9: ; read a pass: comment this track is read in by _______
b9: qq __ , hs e5 ; endpass and entered here; -1
hs ra ,qqe60+10.29; message(|<on paper|, 8+2); < >
qq (9e4) , hv ra8 ; comment ident , error exit: go to error _______ __ __
; normal exit: continue in end pass
d e23=a2-a ; define normal entry to comp to store _
e ; end comp to core block and track _
e ; end GP. _
d e24=e15 ; Define final track of passes _
s _