|
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: 19281 (0x4b51) Description: Bits:30000740 GIER ALGOL III TLA Types: 8-hole paper tape Notes: Gier Text
[26.2.65] [Translator Loading Administration. Page 1]d e84=e16 ; First free track after translator proper _d e19=e84+e86 ; Reserve e86 tracks between translator and output _d e87=e84-c61 ; Number of tracks used for translator _[Universal Translatorparameters. Rest of track 3e14]d i=e4 ; _e4: qq e__ ; CR counter, from start: first track of pass 1 _15[1] qq _ , pp c61 ; used tracks , first track of RS 0[2] qq _ , pp e0 ; inf 1 , - - - std. procs. 0; HP entry: f mark _ true, -, f mark _ false; = ____ = _____[3] qq _ , pp e24 ; inf 2 , - - - passes 0[4] qq e__ , pp e__ ; last track , - - - std. tables _20 _81[5] qq e___e__, ps e71 ; available tracks , number of std. identifiers _20-_19[6] qq e__ , pp e20 ; input track , last track for output _19[7] qq e__-1 , qq __ ; output track , string no _19 -1[8] it _______, vy 1.5+1.9; normal by , typewr by 1.4+1.5[9] qq _ , vy ___ ; pass no , error by 1 1.5[10]qq e19-1 , bs 0 ; first track-1 , pass inf: _ 0 _ false < = _____; 0 _ true 4 ____[The following sections, up to but not including initialize translator, are only used immediately after a SLIP-loading and are not output on the compressed translator tape] [Program for placing and moving translator]d i=e89 ; first free after identifierlist _e27:vk 1e14+e70 , sk e13-39 ; forward pass vk 2e14+e70 , sk 1e13 ; backward passbs e96 ; if HP entry then __ ____acn 2e4 MC ; set f mark on 2e4; vk 3e14+e70 , sk 165e13 ; printing and new line vk 4e14+e70 , sk 124e13 ; endpass vk c64+e70+1 , sk c67 ; running system 6d i=i-e69 ; _vk c66+e70 , sk c67-40 ; running system 7 vk c64+e70+3 , sk c67-80 ; running system 8d i=i-e69 ; _vk e70 , hh r7 ; move translator e70 tracks, e70>0 bs 1e70 , hv r9 ; e70=0 ps r5 , pp e84+e70-1; e70<0 vk p , lk e25 ; vk p-e70 , sk e25 ; pp p-1 , hv s-1 ; bs p-c70+1 , hv r-3 ; hv r3 , pp c70-2 ; e70>0 bsp-e84-e70+3, hv r2 ; pp p2 , hs r-6 ;can e96 , hv r5 ; if HP entry then __ ____vk 24c61 , lk e25 ; begin set on track 25 (std.procs. _____vk 24c61 , it e84-31c61-1; entry to algol from HP): pa e25 , it e14 ; number of tracks to be summed,pa 1e25 , sk e25 ; init. transl. track end ___d i=i-e69-e69-e69-e69-e69 ; _vk ; wait for drum [TLA. Page 2] [Generation of standard identifier tables]b a15, b18, c2, d8 ; _[This code builds up the tables as described in pass 2 from the list stored in core from 205e13. This list holds for each identifier two or more words loaded during loa- ding of the standard procedures. The format of the words (running index i list) is: ilist: Pass 6 word for std identifier. All 42 bits.+1: Name of identifier in slip t representation, as _--- many words as necessary. It is assumed that none of the tables will take up more than 2 tracks. The tables are formed totally in core before they are transferred to drum] [Definitions of table area and initial values for indices]d d1=165e13;idecl for decl[80] ; decl[0:79]; _d d2= 1e13; base for buf long ; buf long[0:79]; _d d3= 40e25; i buf short for buf short[80] ; buf short[0:79]; _d d4=d3-137; base for letter; ; letter[0:56] _d d5=e91+14; e91= address of chain start list[0] from pass 2 _; d5 = initial i long;d d6=d3 ; i short, initial value; _d d7=204e13; i list for list[-1]; list[0:e89-1]; _d d8=14d2 ; i buf long for buf long[14]; _[Other initial values: ident count=e71, short tracks=e29, long tracks=e88, first table track =e81] [TLA. Page 3] c: pp 57 , pp p-1 ; initialize letter table:grn pd4 M ; for p:= 56 step -1 until 1 do ___ ____ _____ __it pd4 , pt pd4 ; pack(letter[p], 0, 9, 0, bs p-1 , hh c ; 10, 19, p+baseletter, 20, 39, 0);ps d5 , hv a10 ; s:= initial i long; go_to count ident; __ __b18:qq 0 t e0 ; first track of std procs with unit in pos 19d i = i - e69 ; skip for CDC _c1: ;b1: pmn d_ X 1 IQC ; start ident: i list:= ilist + 1 ; idecl:= idecl + 1 _7; sr b18 NA ;d i=i-e69 ; CDC: skip previous _b2: gr d_ t -1 MQC ; pack(decl[idecl], 0, 41, list[ilist] - b18); _1pa b5 , gm b6 ; case:= work:= 0; a1: pmn(b1) X 1 ; next char word: cl 36 ; i list:= i list + 1; R:= 0; ar 32 D LA ; M:= bits(0, 35, list[i list]); ar 16 D LB ; pack(R, 0, 5, bits(36, 41, list[i list]);pa b3 , hv a2 ; count:= 6; go_to first char; __ __c2: gr b6 , it -80 ; get char: work:= R;b3: bt __ , hv a1 ; space: count:= count - 1; -1; if count < 0 then go_to next char word; __ ____ __ __pmn b7 , cl -6 ; M:= bits(0, 33, charword); R:= 0; ; pack(R, 0, 5, bits(34, 39, charword)); a2: ck -4 , ga b4 ; first char: Raddr:= p:= bits(0, 5. R);b4: pp __ , gm b7 ; charword:= M; if Raddr = 0 then go_to space; -1 __ ____ __ __hh c2 LZ ; if Raddr = <end text> then __ ____ca 10 , hvn a15 ; begin R:= 0; return end; _____ ___ca 58[LC], hh a3 ; if Raddr = <LC> then go_to LC; __ ____ __ __ca 60[UC], hv a3 ; if Raddr = <UC> then go_to UC; __ ____ __ __ca 16[0] , pp 0 ; if Raddr = <0> then p:= 0; __ ____ca 43[ø] , pp 27 ; if Raddr = <ø> then p:= 27; __ ____ca 48[æ] , pp 26 ; if Raddr = <æ> then p:= 26; __ ____bs p-48 , pp p-105 ; if p > 48 then p:= p - 105; __ ____bs p-32 , pp p-80 ; if p > 32 then p:= p - 80; __ ____bs p-17 , pp p-56 ; if p > 17 then p:= p - 56; __ ____b5: pp p__ , pp p57 ; p:= p + case + 57; -1pm p DX ; R:= 0; Raddr:= p; M:= worka15:pm b6 , hr s1 ; finis:= LA:= true; exit; ____a3: it 60 , pa b5 ; UC: case:= 28; go_to space; __ __hh c2 ; LC: case:= 0; go_to space; __ __; comment variables and constants: _______b6: qq ; work. no .mark used for finis:= true; ____b7: qq ; char wordb8: qq 67.39, ; 67. ,mark used for finis:= false; _____b9: qq e88.19-1.19+e29.29+d6.39-e71.39-513.39 ; std ident. inf.wor d [long track -1.19+ short tracks.29+first free ishort-512.39]; [TLA. Page 4] a6: hsn c1 IZC ; next identifier: arn pd4 , ck 10 ; ZC:= 3; short:= t; call(start ident); ga b11 , arn(b11) ; i short := i short - 1; i buf short:= i buf shor t -b10:ar d_ D -1 IPA ; pack(store[part 2(letter[p]), _6b11:gr __ MPA ; 0, 9, i short, 41, 41, 0); R:= 0; -1b12:it d_ t -1 ; pack(letter[p], 10, 19, i buf short); _3ptn pd4 ; ; next char: call(Heet ahar);a7: hs c2 ; if Raddr = 0 then __ ____hv a9 X LZ ; begin R:= RM; go_to end ident end; _____ __ __ ___ck 10 , ml b8 ; RM:= RM⨯67 + Raddr; finis:= f;hv a7 X LZ ; if RM < 2∧39 then word not full: __ | ____; begin R:= RM; go_to next char end; _____ __ __ ___b13:gm d_ V 1 NZA ; if -, short then storelong: _8 __ ____; begin i buf long:= i buf long + 1; _____a8: cl 19 XV IZA ; buf long[i buf long]:= remain(RM, 2∧39); |; R:= RM_2∧39; s:= s + 1; go_to next char : | __ __ps s1 , hv a7 ; end; ___; store first long: a8: ZC:= ZC - 2; short:= f; ck -19 ; pack(buf short[i buf short], 0, 9, 0, 10, 19, s,gr (b12) X MZC ; 20, 39, remain(RM_2∧39), 40, 41, ZC); : |it s , pt (b12) ; R:= RM_2∧20; if -,finis then go_to next char; : | __ ____ __ __hv a7 LA ; a9: nc 0 XV LZA ; end ident:; if short then try store short; __ ____ar 512 DV ; begin RM:= R; if Raddr | 0 then _____ __ = ____; begin R:= 0; go_to store first long end; _____ __ __ ___hvn a8 ; pack(bufshort[i buf short], 0, 39, RM; ; 40, 41, ZC)gr (b13) V 1 NZA ; end ___; else store last of long: ____gm (b12) V MZC ; begin i buf long:= i buf long + 1; s:= s + 1 _____;; buf long[i buf long]:= R ++2∧39 |ps s1 ; end; ___a10: b14:bt e71 t -1 ; count ident: ident count:= ident count - 1;hv a6 ; if ident count _ 0 then go_to next identifier; __ > ____ __ __[TLA. Page 5] a11:pm b9 , gm d2 ; pack letter table in long buf: gs d2 , pp 0 ; pack(long buf[0], 0, 9, s, ; 10, 19, long tracks - 1, a12:psn -1 , pp p1 ; 20, 29, short tracks, ar (pd4) D ; 30, 39, i short - 512); ck 10 , ps s10 ; p:= 0;bs s480 , hh a12 ; for i:= 1 step 1 until 14 do ___ ____ _____ __b15:gr d_ t 1 M ; for s:= 9 step 10 until 39 do _2 ___ ____ _____ __bs p456 , hv a12 ; begin p:= p + 1; pack(long buf[i], _____gr (b15) MA ; s-9, s, bits(0, 9, lettertable[p]) end; ___a13: ; tables to drum:b16:vk e____ t 1 ; track:= track no of first table track - 1; _81-1b17:sk d____ t 40 ; i:= -40; _2-40bt e88-1 t -1 ; for j:= 1 step 1 until long tracks do ___ ____ _____ __hv a13 ; begin track:= track + 1; i:= i + 40; _____it (b17) t 39 ; to drum(track, long buf[i]) end; ___bs (b13) , hs e5 ; if i + 39 < i long buf then __ ____hv r1 , qq (e30) ; alarm(|<program too big|, 4 + 0); < >; i:= 0;a14:vk (b16) t 1 ; for j:= 1 step 1 until short tracks do ___ ____ _____ __sk d_ t -40 ; begin track:= track + 1; i:= i - 40; _3 _____is (b16) , vk se29 ; to drum(track, short buf(top short - i));sk d_ t -40 ; to drum(track + short tracks, _1bt e____ t -1 ; decl[top decl - 40]) _29-1hv a14 ; end ___e ; end initialize tables. _b k=36, i=0 ; h algol to hjælp _ _d i=11 ; _h algol/e95.29+c66 ; _e ; _[TLA page 6] [Initialize translator. Track e14]b k=e14+e70, a5, b7 ; _a: grn 1023 , vk 3e14 ; initialize core: out of hjælp; lk 165e13 , pm rb7 ; to core(print track, place for print track); a1: ; store[1]:= jump to initialize translator;b1: grn ___e__t -1 M ; 165_13bs (rb1) t 1e13 ; clear marks on input output buffers; gm 1 , hv ra1 ;a2: grne_____ t 82 MA ; set marks on bufferlimits; _13-41a3: grn e__ t 82 MC ; _13vk 1e14 , ud ra2 ; to core(forward, in out place); lk e13-39 , ud ra3 ; ps (e4) , pp e22 ; pass 1 to core: track:= first pass 1 track -1;a4: vk s__ t 1 ; core:= pass place - 40; -1lk ___e__ t 40 ; for p:= pass 1 tracks step -1 until 1 do 165_13 ___ ____ _____ __pp p-1 , bs p ; begin track:= track+1; core:= core+40; _____pa e4 , hv ra4 ; to core(track, core); CR counter:= 0 end; ___; ready: to core (mess track, place for mess); vk 5e14 , lk 124e13 ; tk:= first text track;vk 6e14 , grn 133e13; set no new line; message(if NKC then |< __ ____ <pt rb3 t e62 NKA ; algolpt rb3 t e59 NKB ; | else if NKA then |< > ____ __ ____ <pt rb3 t e58 NKC ; algol KB.b2: qq __ , hs 126e13 ; | else if NKB then |< -1 > ____ __ ____ <b3: hv r1 ,qqe63+10.29; algol KA.; | else |< > ____ <; algol KC.; |, 8+2); >; operational choice: LZ:= false; _____[initial values: i=a=p=w=t=o=l=n=false] _____a5: arn rb2 , ud 8e4 ; by:= typewr by; char:= read a char;ly rb2 , ca 57[i] ; if char=<i> then pass inf:= LZ:= true; __ ____ ____ptn 10e4 t 1 ;ca 49[a] , hv e93 ; if char=<a> then go to init transl; __ ____ __ __ca 39[p] , pan rb4 ; if char=<p> then p:= LZ:= true; __ ____ ____ca 22[w] , ptn rb4 ; if char=<w> then w:= LZ:= true; __ ____ ____ca 19[t] , pan rb5 ; if char=<t> then t:= LZ:= true; __ ____ ____ca 38[o] , ptn rb5 ; if char=<o> then o:= LZ:= true; __ ____ ____ca 35[l] , pan rb6 ; if char=<l> then l:= LZ:= true; __ ____ ____ca 37[n] , ptn 9e4 ; if char=<n> then n:= LZ:= true; __ ____ ____hv ra5 LZ ; if LZ then go to operational choice; __ ____ __ __; set the choices: normal by:= normal by -b4: nt 1.4 t 1.5 ; (if-,p then bit4 else 0)-(if-,w then bit5 else0); __ ____ ____ __ ____ ____arn(8e4) D ; error by:= if n then normal by else __ ____ ____ck -10 , ab 9e4 ; combined(normal by, typewr by); gt 9e4 , pp1.0+1.2+1.4+1.5; set initial indicator for pass 1;b5: pp p____ , pp p____ ; line print:= l; ignore POFF:= o; +1.9 +1.3b6: pi p____ , vy (8e4) ; type input := t; by:= normal by; -1.2hv e18 ; go to start pass 1; __ __b7: hv e93 ; jump to init transl;e ; end initialize translator; _[TLA. Page 7] [Formation of checksums]b a5, b2, d3 ; _d d1=e25, d2=d1-40 ; Define buffer 1 and buffer 2 _d d3=e80-c67+d1+160 ; - address of drumplace when track c61 in d1 _hv a ; go to summations __ __b: qq 688.9+e95.19+812.29; h algol word; _a1: lk (b1) , pp 40 ; procedure sum; comment from track given by _________ _______vk (s) t 1 ; vk instruction in cell[s]. number of tracks -1 it (b1) , pt b2 ; given as address in cell[s+1].b1: nt d_ , lk d1+d2 ; Track 38 is skipped during summation: _1is (s) , it s473 ; bs -511 , hv a3 ;b2: pp p-1 , ar p__ ; -1bs p , hv r-1 ; a3: bt (s1) t -1 ; hh a1 ; hh s1 ; exit; a: vk c66 , hsn a1 ; sum (track c66);qq _ ; 0vk c66 , lk d1 ; modify sum with h algol word and set in cell 39 _vk c66 , ar b ; on track c66; sc 39d1 , sk d1 ; vk 0 , hsn a1 ; sum (track 0);qq _ ; 0vk c__ , hs a1 ; add sum (first 31 tracks of compiler); _61qq __ , vk c61 ; 30lk d1 , vk c61 ; set sum in drumplace sc d3 IOA ;pa d3-e80+c46t512LOA ; if overflow then set bit 0 in last used and __ ____pa d3-e80+c19t512LOA ; start of program to correct for overflow; sk d1 ; vk c61 , hsn a1 ; sum (up to first track after std procs ); qq e98-c61-1, vke98-1; lk d1 , vk e98-1 ; set sum in last cell of last track sc 39 d1 , sk d1 ; of std procs; vk e81 , hsn a1 ; sum(from first std table track to last pass track); qq e84-e81-1, vk 7e14 ;d a5=e69+e69, a5=a5+a5+e69; a5:= 5⨯e69 _d i=i-a5-a5-a5 ; skip previous 15⨯e69 instructions _vk c61 , hsn a1 ; CDC summation qq e87-1 , vk 7e14 ;d i=i+e69+e69-2 ; _lk d1 , vk 7e14 ; set sum in last word of last text track; sc 39d1 , sk d1 ;a4: hv e93 ; end sums: go to initialize translator; __ __b k=c61+e70, i=0 ; Information about _d i=a5+a5+a5+a5+a5 ; _qq e97.9+e20.19+e84.29-1.29+e98.39-1.39 ; translator storing qq c89.9+c29.19+c19.29+c55.39 ; to track c61 qq e14.9 ;e _e _b k=5e0+e70+e96, i=0 ; word to to drum _d i=23 _pm e98 DX ;e ; Stop for possible reading of Kompud of passes _s ; or Kompud of pass 2 through 8 _e e27 ; END TRANSLATOR, goto e27 _ ____s ; _