|
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: 21160 (0x52a8) Description: Bits:30000733 GIER ALGOL III PASS 4 Types: 8-hole paper tape Notes: Gier Text
[27. jan. 65] [Pass 4, page 1]b k = e15 + e70, i = 205e13, a30, b16, c40, d30 _d e17 = i _[Input byte values and functions of them]d d = 109 [bounds int], d1 = 168 [of interest] _d d4 = 12 [max literal], d6 = 479 [511 - min expres byte] _d d11 = 41 [min type proc], _[Output byte values]d d22 = 242 [output base for processing in pass 6] _d d3 = 2d22 [ go to bypass label], d7 = 185 [expression] _d d8 = d22 [end local], d9 = 1d22 [bypass label] _d d12 = 24 [procvalue], d13 = 19d22[while label] _d d14 = 15d22 [prepare assign], d15 = 28 [end pass] _d d16 = 96 [beg local], d17 = 187 [beg express] _b1: qq d15 ; out byte, initially end pass b2: qq ; counter b9: qq ; last identifier b10:qq 1.7-1.23-1.28-1.34 ; trouble word b11:qq ; beg end word b14:qq ; working locationc30:pm (e1) X 1 ; integer procedure take byte; _______ _________hs e2 LA ; begin _____hr s1 NZ ; again: byte:= take byte:= input; if byte = ,CR, then __ ____hs e3 ; begin output(,CRout,); _____qq (e4) t -1 ; CRcounter:= CRcounter - 1; go_to again end __ __ ___; end takebyte; ___c26:hv c30 , ps a3 ; procedure c26; begin c27; goto byteread end; _________ _____ ____ ___c27:pm d16 DX ITB ; procedure c27; begin b14:= R; inblock:= false; _________ _____ _____gm b14 , hv e3 ; output(beg local)c28:hv s1 LZB ; end; ___pmn d9 DX IZB ; procedure c28; if set bypass label then _________ __ ____hv e3 ; begin set bypass label:= false; output(bypasslabe _____ _____l) end; ___c29:hv s1 LZA ; procedure c29; if -, operand taken then output(be _________ __ ____g ex); pm d17 XD ; hv e3 ; [Pass 4, page 2]c32:hs c30 ; procedure enterlist(counting); _________hr s1 NT ; begin _____pp p1 , ud c ; nextidentifier: R:= takebyte; if R > 512 then __ ____hs c31 ; begin p:= p + 1; if p > maxp then stackoverflow; _____ __ ____gr pd2 MA ; storewithmarks(byte⨯2∧30 + CRcounter⨯2∧20, | |it (e4) , pt pd2 ; ,withcounter,, stack[p]);qq (s1) t 1 ; counting:= counting + 1; go_to nextidentifier __ __hv c32 ; end ___; end enterlist; ___c31:it p-512 , pt b16 ; procedure stackoverflow; _________gp 2e4 ; if p > ,absmaxp, then alarm(|<stack|, ,stop,) __ ____ < >bs p-512 t d21 ; else maxp:= maxp + ,deltamaxp,; ____hs e5 ; hr s1 , qqn e38 ;c36: ; start pass 4: inswitch:= warning:= false; _____arn(e1) t 1 IQC ; last identifier:= input; p:= 0; ga b9 , pp 0 ; take byte; input byte:= end block; hs c30 ; pa (e1) t 100 ;a1: arn b1 , hs e3 ; outandbyteread: output(outbyte); go_to byteread; __ __a2h:hv a4 , pm b1 ; out: byte:= outbyte; hs e3 X ; next: output(byte); a3: pm (e1) XV 1 ; next 1: byte:= input;a4: pm (e1) XV ; byteread: if byte > ,ofinterest, then go_to next; __ ____ __ __hs e2 LA ; R:= table[byte_4]; marks R:= marksof(table[byte_4 : :]); ga a5 ; actionnumber:= part2(R); outbyte:= part1(R);a5: bs [byte] t d1 NT ; if marks R | ,nostacking, then __ = ____ps a3-1 , hv e3 ; begin p:= p + 1; if p > maxp then stackoverflow; _____ __ ____ck -2 , ga a6 ; storewithmarks(if marks R = ,stop, then R⨯2∧20 el __ ____ | __se __a6: pmn[byte_2]Xt b IRC ; (byte⨯2∧30 + (if marks R = ,withcounter, then : | __ ____ga b1 , gt a7 ; counter⨯2∧20 else 0)), marks R, stack[p]) | ____hh a7 NC ; end; ___pp p1 ; go_to action[actionnumber]; __ __c:b16:bs p-512 t - ___ ; 512hs c31 ; tk 20 V LC ; pm (e1) X ; gr pd2 MRC ; qq V LRB ; it (b2) , pt pd2 ; a7h: , hh[action]; [Pass 4, page 3]c1: qq (e4) V -1 ; CR: CRcounter:= CRcounter - 1; go_to out; __ __c2: qq (b2) t 1 ; boundop1: counter:= counter + 1; go_to out; __ __c3h:hh a2 , pa b2 ; bounds: counter:= 0;hv r3 NZB ; if -, set bypass label then __ ____arn d3 D IZB ; begin set bypass label:= true; _____ ____hs e3 ; output(goto bypass label);it (a5) , qq (b1) ; end; outbyte:= outbyte + byte; go_to out; ___ __ __c4: hh a2 , it (a5) ; literal: outbyte:= byte;pa b1 ; for i:= 1 step 1 until if CDC then 5 else 4 ___ ____ _____ __ ____ ____a29:pa a8 t e69+4 ; do output(input); go_to out and byte read; __ __ __pm (e1) X 1 ; hs e2 LA ; a8: bt t -1 ; ps a29 , hv e3 ;c5: hv a1 , hs c30 ; trouble: a9:= take byte _ 4; :ck -2 , ga a9 ; if a9 < 2 then __ ____pa b15 , it 2 ; begin for i:= 1 step 1 until if CDC then 5 else 4 _____ ___ ____ _____ __ ____ ____bs (a9) , hv a9 ; do input; go_to trouble __ __ __a30:pmn(e1) t 1 ; end; ___hs e2 LA ; if a9 > 39 then go_to trouble; __ ____ __ __b15:bt _ t 350 ; if bits (a9, a9, troubleword) = 1 then 0 __ ____d i=i-e69 ; go_to byteread; _ __ __bt _ t 260 ; go_to trouble; 0 __ __d i=i+e69-1 ; _hh c5 ; hv a30 ; a9: bs t 39 NT ; hh c5 ; arn b10 , ck (a9) ; hv a4 LO ;c6: hh c5 , hs c29 ; parameter: if -, operandtaken then output(,begex,); __ ____a10:qqn(b2) t 1 IZA ; takeparameter: operandtaken:= false; _____pp p1 , hs c30 ; counter:= counter + 1; [Pass 4, page 4]gr pd2 M ; storewithmarks(take byte⨯2∧30, 0, stack[p]); |bs (pd2) t d4 ; if bits(0, 9, stack[p]) > maxliteral then __ ____hv a11 IZA ; begin operand taken:= false; goto expression end; _____ _____ ____ ___hh a12 LT ; if bits(0, 9, stack[p]) < 512 then __ ____a13:pm (e1) X 1 ; begin for i:= 1 step 1 until if CDC then 5 else 4 _____ ___ ____ _____ __ ____ ____hs e2 LA ; do begin storewith marks(input⨯2∧30, __ _____ |gr pd18 MB ; 1, stack[p+4]); p:= p - 1;; comment s = c30 since hr-jump returning to 2a10 _______pp p-1 , ps s-1 ; end; ___bs sd5 , hv a13 ; p:= p + (if CDC then 10 else 8); __ ____ ____a12h:pp pe69+e69+8,hs c30 ; if takebyte > this begins expr then __ ____ga a14 , it d6 ; expression: begin if in switch then c28; _____ __ ____a14:bt , hvn a15 ; output(outbyte); a11:hs c28 LQB ; a16: R:= stack[p]; arn b1 , hs e3 ; in switch:= mark b(stack[p]);a16:pmn pd2 X IQB ; if operand taken then output(R); __ ____hs e3 LZA ; if -, in switch then stack[p]:= expr; __ ____pa pd2 V d7 NQB ; p:= p - 1; goto a16; ____pp p-1 , hv a16 ; end; ___a15:ud c ; if p > maxp then stackoverflow; __ ____hs c31 ; operand taken:= false; _____hv a4 IZA ; goto byteread; ____c33:pm d13 DV ; forelem: if warning then __ ____; begin warning:= false; output(,whilelabel,) end; _____ _____ ___; go_to out; __ __c34:pm d14 D ; assign: if warning then __ ____hs e3 X LQA ; begin warning:= false; output(,prepare assign,) e _____ _____ _nd; __c37:pm r V IQA ; go_to out; __ __c35:pm a23 IQA ; setwarning: warning:= true; go_to out; ____ __ __c7: hh a2 , hs c29 ; declareswitch: c29; arn b2 , ac b4 ; numberoflocals:= numberoflocals + counter;; inswitch:=false; _____hs c32 IQB ; enterlist(numberoflocals); go_to byteread; __ __qq (b4) , hv a4 ; c8: it (b2) t 1 ; declarearray: numberofvariables:= ; numberofvariables+counter; qq (b5) , hs c32 ; a17:= 0; counter:= counter + 1; enterlist(a17); a17:arn 0 D ; output(a17); output(numberofvariables); pm b5 , ac b5 ; numberofvariables:= numberofvariables + a17;pa a17 , hs e3 ; go_to outandbyteread; __ __hs e3 X ; c9: hv a1 , pp p-1 ; declareproc: p:= p - 1;hv a24 NTB ; if -, inblock then go_to proc unstack; __ ____ __ __a20:hs c28 NZB ; unstack decl: if -, bypasslabel then c28; __ ____pm d8 DX ; output(end local); go_to procunstack; __ __c10:hh a19 , hs c32 ; declaresimple: enterlist(numberofvariables);b5: qq [number of variables]; goto byteread; ____c11:hv a4 , hs c32 ; declarelabel: enterlist(numberoflocals);b4: qq[number of locals] ; go_to outandbyteread; __ __c12:hv a1 , hs c32 ; declareown: enterlist(numberofowns); go_to byteread; __ __b3: qq [number of owns] ; hv a4 ; [Pass 4, page 5]c13:hv a20 LTB ; begin: if inblock then go_to unstack decl; __ ____ __ __arn b11 , ac b11 ; beg end word:= 2⨯beg end word; go_to set in block __ __;c14:hv a21 , hs c29 ; begin call: c29; operand taken:= false; _____hs c30 IZA ; identifier:= takebyte; ga b12 ; output(outbyte); a19:arn b1 , hs e3 ; procunstack: addrofprocdecl:= p; a24:gp a22 , arn pd2 ; unstack: R:= stack[p]; marks R:= marksof(stack[p]); pp p-1 , ga b1 ; p:=p-1; outbyte:= part 1(R); numberbyte:= part 2( R);hv a23 LC ; if marks R:= ,stop, then go_to action[numberbyte] __ ____ __ __;qq V NA ; if marks R = ,withcounter, then output(numberbyte __ ____); tk 10 , hs e3 ; output(outbyte);arn b1 , hs e3 ; go_to unstack; __ __c15:hh a24 , arn b11 ; endclean: begendword:= begendword_2; :ck -1 , gr b11 ; a21:pm b11 ITB ; set in block: inblock:= bit(0, 0, beg end word) = 1;; go_to next 1; __ __c16:hv a3 , hs c28 ; endproc: c28; hs c30 ; output(take byte); hs e3 ; c17:qq (b13) t 1 IZB ; endblock: blocknumber:= blocknumber + 1;it (3e4) , bs (b13) ; setbypasslabel:= true; ____qq (3e4) t 1 ; if blocknumber > maxblocknumber then __ ____arn b5 , ck 10 ; maxblocknumber:= maxblocknumber + 1; ar b4 , ck 10 ; setpart 3(stack[p]) to: (numberofvariables); ac pd2 , pa b4 ; setpart 4(stack[p]) to: numberoflocals);arn b11 , ck -1 ; inblock:= true; number of locals:= 0; ____ar 512 D ITB ; begendword:= begendword_2 + 2∧39; : |gr b11 , pa b5 ; numberofvariables:= 0; go_to out; __ __c18:hh a2 , arn b2 ; endcall: setpart 4(stack[p]) to: (counter); ck 10 , ac pd2 ; output(,bypasslabel,); counter:= 0;pm d9 DV ; go_to takeparameter; __ __c19:pmf r V IQB ; endswitch: inswitch:= true; ____hs e3 X ; counter:= 0; go_to takeparameter; __ __pa b2 , hv a10 ;c20:hh c9 LTB ; specify: if inblock then go to declare proc; __ ____ __ __pa b2 , hs c32 ; counter:= 0;qq , hv a4 ; enterlist(blind); go_to byteread; __ __a23:gt r , hh[stackaction]; [Pass 4, page 6]c21:hv a20 LTB ; formal: if inblock then go_to unstackdecl; __ ____ __ __a28:pa b2 , hs c30 ; counter:= 0; hv a1 NT ; moreformals: R:= takebyte;qq (b2) t 1 ; if R < 512 then go_to outandbyteread; __ ____ __ __pm (e4) DX ; counter:= counter + 1; hs e3 ; output(CRcounter); output(R);hs e3 X ; go_to moreformals; __ __c22:hh a28 , tk 30 ; outofcall: output(identifier); output(counter);b12:pm DX ; counter:= part 4(R); go_to out; __ __hs e3 ; arn b2 , gm b2 ; hs e3 ;c23:hh a2 , hs c27 ; outofblock: c27; setbypasslabel:= true; ____a25:qq V IZB ; blockoutput: qq (b4) t 1 ; output(-numberoflocals); a27:srn b4 , hs e3 ; output(-numberoflocals - numberofvariables);srn b4 , sr b5 ; if blocknumber < 0 then __ ____pm b14 , hs e3 ; begin _____bs (b13) , hs a26 ; endpass 4: output(-maxblocknumber-numberofowns + 102 1); srn(b3) D 2 ; output(numberofowns + 2); sr (3e4) D 1 ; output(lastidentifier);pm b3 , hs e3 ; go_to endpass; __ __hs e3 X ; end; ___arn b9 , hs e3 ; numberoflocals:= part 4(b14); hv e92 ; numberofvariables:= part 3(b14); a26:cl -10 , ga b4 ; blocknumber:= blocknumber - 1;cl -10 , ga b5 ; begendword:= begendword⨯2 - begendword_2∧38⨯2∧40; : | |b13:qq -1[blockno]t -1 ; inblock:= begendword _ 2∧39; > |arn b11 , ac b11 ; if setbypasslabel then go_to out; __ ____ __ __pm b11 ITB ; number of locals:= number of locals + 1;hh a2 NZB ; go_to out and byte read; __ __qq (b4) t 1 ; c24:hv a1 , pp p1 ; outofproc: p:= p + 1;a22:pm 0[addr of proc decl] V d20 NTB; if inblock then begin counter:= 0; c26 en __ ____ _____ __d; _pa b2 , hh c26 ; storewithmarks(stack[adressofprocdecl], gm pd2 MA ; ,withcounter,, stack[p]); gr b14 , hs c32 ; b14:= R; enterlist(blind);qq 0 , it (pd19) ; if part 1[table[p-1]) _ ,mintypeprocedure, then __ > ____bs d11 , hv a27 ; begin output(CRcounter); output(part 1(table[p]); _____pm (e4) DX ; output(,procedure,); hs e3 ; numberoflocals:= numberoflocals + 1pm (pd2) DX ; end; ___hs e3 ;pm d12 DX ; go_to blockoutput; __ __ps a25 , hv e3 ; [Pass 4, page 7, Control table. Input bytes smaller than the limit OF INTEREST initiate an action con- trolled by the following table, which is entered with the argument inputbyte _ 4. The actions starts with a stacking process depending on the :marks of the control word: Marks Put in stack Control word bits 0 NothingA , input byte ⨯ 2∧ 30 + counter ⨯ 2∧20 , | |B f input byte ⨯ 2∧30 f |C f, output ⨯ 2∧30 + action ⨯ 2∧20 f, | |where output and action are taken from bits 20 to 39 of the control word. After the stacking the algorithm jumps to the action given in bits 10-19 with the parameter given in bits 0-9 assigned to outbyte] [Pass 4, page 8] [output, action, stackoutput, action] [0] b:qq c1.19 ; CARRET: CRout, CR [4+] qq 4.9+c4.19 ; literal <type>: -, literal [8] qq 8.9+c4.19 ; (not used) [12] qq 12.9+c4.19 ; (not used) [16] qq 22d22.9+c6.19 ; switchparam: enddesex, parameter [20] qq 21d22.9+c6.19 ; callparam: endex, parameter [24] qq 186.9+c14.19 ; begcall: endcall, begcall [28] qq 186.9+c14.19 ; begfunc: endfunc, begcall [32] qq 187.9+c7.19, ; declswitch: begex, declare switch [36+] qq 100.9+c8.19, ; declarray <type>: bounds, declare array [40+] qq c9.19, ; declproc <type>: -, declare proc [44+] qqf c10.19 ; declsimple <type>: -, declare simple [48] qqf 3d22.9+c11.19 ; decllabel: labelcolon, declare label [52+] qqf c12.19 ; declown <type>: -, declare own [56] qqf c20.19 ; specswitch: -, specify [60+] qqf c20.19 ; specarray <type>: -, specify [64+] qqf c20.19 ; specproc <type>: -, specify [68+] qqf c20.19 ; specsimple <type>: -, specify [72] qqf c20.19 ; speclabel: -, specify [76] qqf c20.19 ; specstring: -, specify [80] qqf c20.19 ; value: -, specify [84] qq 84.9+c21.19 ; formal: formal, formal [88] qqf 22d22.9+c19.19 ; switchlist: enddesex, endswitch [92] qqf 21d22.9+c18.19+92.29+c22.39, ; endcall: endex, endcall, begcall, out o f call [96] qq c15.19 ; endclean: -, endclean [100] qqf 104.9+c17.19+16.29+c23.39, ; endblock: endblock, endblock, begblock, outofblock [104] qqf 108.9+c16.19+20.29+c24.39, ; endproc: endproc, endproc, begproc, out ofproc [108] qq 5d22.9-d.9+c3.19 ; bounds: endbounds, bounds [112] qq 4d22.9+c2.19 ; boundcolon: boundcolon, boundcolon [116] qq c13.19 ; begin, -, begin [120] qq a3.19 ; ;: -, next 1 [124] qq 18d22.9+a2.19 ; do: do, out [128] qq 8d22.9+a2.19 ; thenst: thenst, out [132] qq 9d22.9+a2.19 ; elsest: elsest, out [136] qq c5.19 ; trouble: -, trouble [140] qq 10d22.9+c33.19 ; := for: := for, forelem [144] qq 16d22.9+c37.19 ; simplefor: simplefor, simplefor [148] qq 11d22.9+c33.19 ; stepelem: stepelem, forelem [152] qq 14d22.9+c33.19 ; whilelem: whileelem, forelem [156] qq 13d22.9+c35.19 ; while: while, set warning [160] qq 17d22.9+c35.19 ; endassign: endassign, set warning [164] qq 20d22.9+c34.19 ; := : := . assign [168] qq 12d22.9+c34.19 ; first:= : first:= . assign d2:d d5=e69-c30+4 ; used at a12-1 _d d18=4d2+e69, d19=d2-1, d20=1d2, d21=40e25-d2-523 ; _d e18=c36, i=39i, e16=k-e70 ; _e _d i=2e21, e22=e16-e15-1 ; _qq e15.9-e24.9+e18.19+e22.36+e22.34+205e13.39f, ;d e15=e16 ; _s _