|
DataMuseum.dkPresents historical artifacts from the history of: RegneCentralen GIER Computer |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RegneCentralen GIER Computer Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 22236 (0x56dc) Description: Bits:30000729 GIER ALGOL III GPA Types: 8-hole paper tape Notes: Gier Text, Has10
[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); -1e10:pa e6 t 100 ; if -, call from output then printcount:= 10; __ ____a3: bt __ t 1 ; digits:= digits + 1; -1a2: 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; 1a1: sy __ , pa r ; space out: outchar(point); point:= 0; 59sy 0 , hr s1 ; outchar(0); exit;a4: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;10 -3 ; comment _______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; -1a2: ; go_to test textaddr; __ __b5: pmn _ X 1 ; next word: textaddr:= textaddr + 1; 0is (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; 58ca 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 bylyn __ 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:= 0gp 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:=Rcan 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_13nc (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: -1lyn 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; -1b3: pi __ , tl -7 ; RC:= bits(8,9,b3); tl(-7); -1b4: 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 -1hs 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); -1pmn(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; -1hs 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 passd 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 _