|
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: 53895 (0xd287) Description: Bits:30000739 GIER ALGOL III RS Types: 8-hole paper tape Notes: Gier Text, Has10
[2.9.65] [THE GIER ALGOL COMPILER GIER VERSION] [Definition of storage of compiler]b c100, e100 ; Begin of outermost block _d c70=39 ; First track during loading of compiler _d c60=39 ; After loading the compiler will be moved to have _; its first tracn in c60d e86=0 ; Reserve e86 tracks after top of translator _d e20=319 ; Last track used by translator _d e96=0 ; Reserve track for HP-entry _d e97=319 ; Last track accessible to todrum and fromdrum _d e68=0 ; if UV double then 1 else 0 _ __ ____ ____s ; Allow manual redefinition of c70,c60, _; e86, e96, e97, and e20d e70=c70-c60 ; Resulting displacement of translator _d e85=0 ; Reserve e85 tracks after standard procedures _d e99=e96+e96 ; _d e99=e99+e99 ; _d e99=e99+e99 ; _d e99=e99+e99+e99+e99+e99 ; e99:= 40⨯e96 _d e69=0 ; if CDC then 1 else 0 _ __ ____ ____d e13=i+39 ; First core cell +39 _d e25=983 ; Last core cell -40 _d e4=e13+194 ; Place for universal translator parameters _d i=0, e90=k ; First track of core picture _d e89=205e13 ; Standard procedure list[0] _s _[2.9.65 Running system 1, track c61=c64-4 In addition to the code below the following words have been initialized by pass 8 and this track:0: qq _1 , hv c17 ; last track of program, overflow alarm (spill) -3: vk 6c61 , lk 1c ; call CHOICE OF 4: vk (1c62) , hv 17 ; OUTPUT UNIT c: qq 1c62.29-1.9, hs s2 ; priority word for track place 1 41c: qqf c62.29 , hsf s2 ; - - - - - 2 ]b k=c60+e70, i=822, a30, b20 ; begin running system block _d c61=c60 ; first track of running system _d c=6 ; first track place at run time _arn _ , ga r1 ;DISPLAY. Initialized from track 5c61. 0d i=i-e68 ; Adjust for UV double _arn _ , ga r1 ; 0arn _ , ga r1 ; 0arn _ , ga r1 ; The following code is part of the initi- 0arn _ , ga r1 ; alization for run. It is called from 5c61. 0c94:lk 42c , vk (0) ; Last program track to core; pa c t -1 ; Adjust priority word c pm 42c , gm a22 ; initialize start of program; pm 43c , gm a23 ; initialize drumplace; arn 44c , ga a21 ; initialize last used; pm r1 , hv s2 ; prepare initialize display; return;arn _ , ga r1 ; 0qq _ , hv a17 ; 0e79: c1:qq _ , pp _ ; display block 0; working word output and 0 0; write; [working storage, constants] c33:c35:qq -2.9 + 512.19-1.39 ; a half, close enough c34:qq 1.39 ; eps c37:qq [fullword] ; UVqq ; if e68=1 then __ ____d i=i+e68-1 ; insert UV 2 _c40:qq 0 t 256 ; 1.0 c41:qq -1 t 512 ; -1.0 c43:qq 511 t 510 ; nonsense e82:c46: ;a21:qq _ ; last used, initialized above 0a22:c19:zq , zq ; start of progr., above: hs c3,track no. rel.c47:qq _ ; appetite, working address, bits 10-39 = 0 0c48:qq _ ; input case 0c49:qq _ ; last character including case 0c56:qq 41.10 ; constant for counting top of program etc. c57:qq 801.19+2.39 ; constant for generating priority word c58:qq -1.19-50.25+60.35 ; constant for generating sr-wordc63:qq _ t _ ; input checksum 0 0c68:qq [fullword] ; working location for standard procedures e80:c69: ; a23: qq [fullword] ; drum place (floating representation), above c71:qq -1.9+1.11 ; a half, exactly (entier)c82:ps _ t 11 ; working word for output and write 0c91:c89:qq s_ , vy 32 ; char is set (false,true_s35), 1 _____ ____=; medium output and inputc92:c90:qq ___ , vy 17 ; min (drum place); medium write and type 511c17:ps 7 , hh a18 ; go to overflow alarm (entry from 0) [tracktable]ca _ , hh 779c ; track - - is in trackplace ___ c 0 779ca _ , hh 738c ; 0ca _ , hh 697c ; 0ca _ , hh 656c ; 0[2.9.65] [Running system 2, track 1c61=c64-3] [track table continued]ca _ , hh 615c ; 0ca _ , hh 574c ; 0ca _ , hh 533c ; 0ca _ , hh 492c ; 0ca _ , hh 451c ; 0ca _ , hh 410c ; 0ca _ , hh 369c ; 0ca _ , hh 328c ; 0ca _ , hh 287c ; 0ca _ , hh 246c ; 0ca _ , hh 205c ; 0ca _ , hh 164c ; 0ca _ , hh 123c ; 0ca _ , hh 82c ; 0c62: a4: ca _ , hh 41c ; 0ca _ , hh c ; 0[call track from drum, track table lookup will go on here when track is not in] ga b1 MA ; set current track;ensure mark B inR. a9: hsn a1 , ps s-41 ; get address of last priority wordb2: arn _ , sr s ; trackstart. get address of lowest 0gs r-1 NT ; priority and store it in trackstart b 2 hh r-3 LB ;b1: vk _ , ps (b2) ; current track. Read track to 0lk s1 , arn s ; trackplace ck 10 , gt r1 ; set current track init (b1) , pa _ ; track table 0arn c46 , ck -1 ; Test if new track place can sr b4 , sr c56 ; be reserved. hv a2 LT ; no. arn c57 , hs a1 ; Get address of new trackplacec93: b4: qqf __c.10 ; top of program.10 84_ar (b5) D -1 ; and set new priority word. ck 20 , pa (b5) ; Format of priority word: gr s41 , arn a3 ; priority, 2, corresponding ga s41 MC ; addr in tractable, hs s. arn c56 , ac b4 ; top af program:=top of program+41a2: vk (b1) , hv a20 ; wait for drum; goto set s to tracksta ____rt a5: ga 41c , ps r ; clean up: a1: hh (b5) , ps s-41 ; get address of last priority word: ann s , tk -8 ; s:=addr of last priority wordga s , ca 0 ; ZB:=false; _____[6. nov. 1963] [Running system 3, track 2c61=c64-2]qq (b5) V 1 NZB ; repeat: priority[s]:=priority[s]_256 :pan a3 V 1 IZB ; if priority[s]=0∧-,ZB then __ ____arn c56 , sc b4 ; release trackplace else ZB:=true; ____ ____hh a1 LB ; s:=s-41; if B then goto repeat; __ ____ ____c27: zq LKA ; CHOICE OF OUTPUT UNIT, hv3LKA or hv3NKAa20:c28: ps (b2) , hv a3 ; Prior:=1; goto exit track adm. ____[entries to track administration]c2: qq p_ IRC ; transfer track P: p_ used by output and w 0 0rite gm b6 MRC ; save M and marksa17: c3: pm s XV IRC ; goto track P: M:=R; R:=parameter[s] ____c42: pm b4 , ud a19 ; call track R: indicate not transer set ex . c4: c21: gt b7 , ck -10 ; goto track R: set reladdr, Raddr:=trackno .b5: hs a_ , ; track table look up; may return s _42c53: b6: qq _ t _ ; working storage for save M 0 0ga b1 , gs b2 ; set current track, set trackstarta3: arn _ D 1 IZB ; exit trackadm:count priority; OB := 0 0ga s XV NO ; set priorityga s , hv a5 ; priority overflow, goto clear up ____b7: pm b6 , ps s_ ; restore M; s:=s+rel addr 0hh s1 LRC ; exit to track hv s1 LRA ; exit to trackb15: hv _ t 1 ; exit from take track 0c65: gm b6 , gs b15 ; call track P: save M; set exit pmf r X IRC ; indicate not transferarn s , hv c21 ; parameter; goto goto track R; ____[Initialize block or call] c5: it (c46) , pa b12 ; Init.block or call: descraddr:=last used pmn s X IRC ; get parameter ck -10 , ga c47 ; set appetite ar c46 , ga c46 ; lastused:=lastused+appetitehv a7 LRB ; if initialize block then __ ____tk 10 , gt b9 ; block: begin set display address _____ar c58 , pm c46 ; (blockno); generate sr word with gr (b12) X -2 MA ; old sr; descraddr:=sr:=descraddr- 2 gp (b12) , pp (b12) ; store sr wordb9h: gr p1 , gp _ ; store lastused; set display 0a7: ck -1 , sr b4 ; end; if last used-top of program ___ ___0 >hv a6 NT ; then goto param transfer; ____ ____hs a8 IRC ; release track placespm s2 DX ; if current track place is not __ck -1 , sr b4 ; released then ____hv a6 LT ; goto param transfer ____[6. nov. 1963] [Running system 4, track 3c61=c64-1]a19: pa b15 t b12 IRC ; else call current track to ____nt s , nt (b2) ; new trackplace and return pt b7 , hv a9 ; to param transf [index call, parameter transformation] c26: gm b13 ; index call: array ident. in M, index func in sr (b13) t -2 ; R:=R-constant termsr (b13) V 1 NT ; if R_0 then R:=R-length __ > ____ps 6 , hh a18 ; else index alarm ____ck -10 V LT ; if R<0 then shift to Raddr __ ____ps 6 , hh a18 ; else index alarm ____ga b13 ; UA:=Raddrc36:b13: qq _ ; UA:=UA+baseaddr; return 0c20h: hv s1 , ck 10 ; local switch: posiitions to R addr ga r2 , tk -30 ; positions+1 to R39; NB:roundin g ar (b12) D IRA ; Raddr:=descraddr+c80: ar _ DV ; positions; skip next 0a11: ar p D ; add sr:c81: b12: gr _ V -1 MRC ; store descr: count descraddrandstore; skipne 0xt a6: gs r1 ; paramtransf: set paramaddrc84: pmn _ X 1 IRC ; R:=next parameter 0hv b12 NA ; constant hv a11 NT ; programpoint gr r1 , pm r-1 ; the rest: prepare execute parameterc54: qq _ , qq _ ; execute parameter 0 0pm s DV LRC ; if simple then M:=abs addr (simple var); __ ____hh a14 X LZ ; if proccall then goto enter proc __ ____ ____hv b12 X IRC ; goto store descr ____[reserve array] c50: arn (s) ITA ; reserve array: TA:=length<0 arn c46 , ck 10 ; R39:=lastused-length sr (s) ITB ; TB:=R < 0ck -10 V NTC ; if -,(TA∨TB) then R39 to Raddr __ ____ps 4 , hh a18 ; else array alarm ____ga c46 , ga p1 ; lastused:=stack[sr+1]:=lastuseda16h: hv a7 , ar c56 ; goto test last used; release 1: ____pm c56 X ; R:=R+41; top of program:= sc b4 X ; top of program-41;hr s1 NT ; if R>0 then return s1 __ ____a8: it (b5) t 1 ; releasetrackplaces: if decrease trackplaces __>2bs 1a4 , hh a16 ; then go_to release 1 else alas alarm ____ __ __ ____c55h:a18h:ps 13 , vk 2k-e70 ; alarm: call first track with alarm lk a15 , vk 2k-e70 ; number in s [6. nov. 1963] [Running system 5, track 4c61=c64]d c64=k-e70 [free trackplace starts in c67, 40 instructions from here _are stored on track c64]a15:c38: c67: hv a12 LZ ; value switch des: if index in R39 _ 0 then __ < ____hv a12 LT ; goto outside range ____gm c37 , it (c37) ; UV:=switch identifier:=M pa r3 , pa c37 ; set base for switch sr c37 ITA ; R 39:=R39-positions-1ck 20 , gt r1 ; TA:=R<0; if TA then __ ____c85: pm _ V _ LTA ; M:=stack [base+index-positions-1] 0 0a12: pmnf r X ; else outside range:M:=0; marks:=B; ____c22: pa b13 t c37 IRC ; take formal:UA:=address(UV);gm b13 V NRC ; if simple variable then UA:=M __ ____gm c37 X MRC ; else UV:=M ____hv s1 NRA ; if -, programpoint then return __ ____c9:a13: pm (b1) DX IZB ; set return: lastused:=lastused-1 pm c46 , ck 10 ; stack [last used]:=pack gr (c46) X -1 MA ; (sr, s-trackstart, 0, trackno) nt s , nt (b2) ; pt (c46) , gp (c46) ; ck -1 , sr b4 ; R:=lastused+1-top of programhs a8 LT ; if R<0 then release trackplaces __ ____hv c3 LZB ; if standard proc then goto goto t __ ____ ____racka14h: ps c37 , arn s ; else s:=addr(UV); update: R:=param ____pp (s) , hh p ; sr:=sr part (param); switch to proper display c10: grf (c46) V -1 MB ; call st proc 1 fl value:c11: gr (c46) t -1 MB ; call st proc 1 nonfl: R:=0 goto set return ____c7h: hvn a13 , pm p-1 ; exit func: UV:=func value pa b13 t c37 ; UA:=address(UV) c6h: gm c37 , gs c46 ; exit proc: last used:=sps p2 , hh a14 ; s:=sr+2; goto update ____c18: hv s1 LZ ;goto computed: if labelinR=0 then return; s:=U __ ____A c16h: ps (b13) , pp (s) ; goto non local: sr:=srpart (label) it (p1) , pa c46 ; lastused:=stack [sr+1] arn s , hh p ; update and transfer c13: grf c37 V ; exit RF expr: UV:=RF; skipnext c14: gr c37 ; exit R expr: UV:=R c12: pa b13 t c37 ; exit UV expr: UA:=addr (UV); c15: ps (c46) , it 1 ; exit addrexpr:s:=last used; t:=1; skip next c51: qq (c46) t 2 ; exit st proc 1V:t:=2, lastused:=t+lastusedc83h: hh a14 , pp _ ; goto update; 0 ____c8: pp p2 , gp c46 ; exit block : lastused:=sr+2 pp (p-2) , hv s1 ; sr:=stack [sr]; return[vk first track, hv _ ; this last instruction is set by the program 0start track, the last instruction on the last track of the running system being the preceding instruction]d c60=7c60 _e _[20.Dec.63] [Running system 6, track 5c61] [Error printing and program start.]b i=c67, a20, b10 _a16: gs a18 , hs a17 ; type text indicated by s vk 7c61 , ps 10 ; lyn 40 , ca 41 ; input from typewritergs a18 , hv a19 ; if symbol = r then go to a19 __ ____ __ __lk 40 , vk ; transfer track 7c61 hv 40 ; go to error analysis or compiler ready b7: qqf c62.29 , hsfs2 ; initial value for 41c b9: vk , hv c25 ; initial value for 40c67 a17: vk 6c61 , lk 1c ; running system 7 to first track place vy 17 , syn 64 ; text printing routine entrya18: arn r__ t 1 LZ ; address of text in address part 10ca 10 , hv s1 ; if character = 10 then exit __ ____ga r1 , tk 10 ;sy _ , ck -4 ; 0hv a18 ; [texts:] [4] qq 49.9+41.15+41.21+49.27+24.33+10.39 ; array (c50) [5] qq 58.9+35.15+37.21+10.27 ; ln [6] qq 57.9+37.15+52.21+53.27+23.33+10.39 ; index (c26, twice) [7] qq 18.9+39.15+57.21+35.27+35.33+10.39 ; spill (c17) [8] qq 58.9+18.15+40.21+41.27+19.33+10.39 ; sqrt [9] qq 58.9+53.15+23.21+39.27+10.33 ; exp [10] qq 58.9+41.15+20.21+37.27 +10.39 ; run [11] qq 58.9+53.15+37.21+52.27 +10.39 ; end (pass 8, 1st order in output) [12] qq 58.9+52.15+41.21+20.27+36.33 ; drum (to drum) [13] qq 58.9+49.15+35.21+49.27+18.33+10.39 ; alas (a8) [14] qq 58.9+55.15+38.21+37.27+53.33+10.39 ; gone (above) [15] qq 39.9+49.15+41.21+49.27+36.33+10.39 ; param (standard procs more param) c23:a19: vk c61-1 t 1 ; transfer lk c67-200 t 40 ; tracks 1-4 bt 3 t -1 ; of running system pm b7 , hv a19 ; gm 41c MC ; initialize 41c vk (0) , hs c94 ; call initialize run on c61 gm c1-1 t -1 MA ; initialize display nc (r-1) , hv r-1 ; pm c19 , hs a17 ; type: run pan c24 t c19 ; set exit from CHOICE AF OUTPUT UNIT cl -10 , ar b9 ; gr r2 MA ; initialize 40c67 vk c64 , lk c67 ; transfer last track of running system[40c67:vk first track, hv _ ] 0e _[6.9.65] [Running system 7, track c66] [Core store 0-6, CHOICE OF OUTPUT UNIT, entry from SLIP] [This track is placed from 0-39 by pass 8 or by reading a binout tape and later in the first track place 1c-40c by 5c61 and on jump to 3 from c27]b i=c67-40,a20 _[0] a: qq _ , hv c17 ; last track set by Pass 8,3a69, jump on ov 0erflow [1] vk e14 , lk c67 ; call INITIALIZE [2] vk c61 , hv c67 ; TRANSLATOR [3] vk 6c61 , lk 1c ; call CHOICE [4] vk (1c62) , hv a5 ; OF OUTPUT UNIT [5] lk 1c , hv 40c67 ; return to running systemd i=c+a _a3: qq 1c62.29-1.9 , hs s2 ; initial priority and reference a1: hv 3 NKA ; for track place a2: qq 1.34 ; [a5:c25:]a4:vy 17 , arn ra1 ; ar ra2 NKA ; gr c27 , lyn ra1 ; set conditional jumpar ra10 , ca 48 [e] ; if symbol = e then go to slut; __ ____ __ __ps 11 , hh c55 ;ca 17 [w] , hv ra9 ; if symbol = w then write output __ ____nc 34 [p] , ar ra8 ; else if symbol = p then punch output ____ __ ____nc 49 [b] , ck 20 ; else if symbol = b then all output ____ __ ____a9: pt 40c67 t c28 ; else normal output; ____gt c89 , ud c89 ; ck -10 , gt c90 ;[c24:] a7: hv _ ; first time hv c19 5a10:qq -5.9+16.19+33.29+32.39; a8: qq 4.9+32.19-16.29 ; a21:psn e87 , vk s c61-1 ; entry from SLIP for checksum a14:lk (ra11) , pp 40 ; ps s-1 , vk s c61-1 ; exchange buffers it (ra11) , pt ra13 ; Communication with SLIP for entrya11:nt a__ , lk a17 ; by h algol: _16 _a12:pp p-1 , it -512 ; 6c61 , e95 = track , relative fora13:bs sc61-550, ar p__ ; entry from SLIP; -1bs p , hv ra12 ; a18 and a20 error exit and parameter. bs s , hh ra14 ; ck 0 ; a16 buffer area begin hv 1 LZ ; a16+80 buffer area end ps a20 , hv a18 ; track 38 is omitted during summationqq ; if sum ok then goto 1 __ ____ ____c29:pa 0 t e20 ; else go_to error; ____ __ __vk 5c61 , lk c67 ; entry from binout reading:vk 5c61 , hv c23 ; go to start run on track 5c61; __ __a19:qq ; sumbalance for this trackd a16= c67-160 ; buffer 1 (first address of running syst) _d a17= a16+a16+40 ; buffer 2 _d a18=626 ; error exit to SLIP _d a20=714 ; parameter for SLIP _d a5 = a4-a+1a3-a ; entry when placed in 1c _d c25 = a5 ; - - - - - _d c24 = a7-a+1a3-a ; - - - - - _d e95 = a21 - a ; entry from SLIP _d c66 = 6c61 ; this track _d c29 = c29 - a ; relative entry from binout reading _e _d i=10 ; for loading purposes only _s _[6.9.65, Running system 8, track 7 c 61] [This track is called by 5 c 61 and placed in core store 42c-81c. It calls the program for analysis and output of the stack (part 1, 2 and 3)]b i = c67-80, b30, a5; _it(c62+7), pt c34 ; save current track-number qq 2 , hsr b 2 ; transfer to part 1 b1: qq 3 , hsr b 2 ; transfer to part 2 b3: qq 3 , hsr b 2 ; transfer to part 3 b4: vk 5c61 , lk c67 ; call track with error printingb0: ps 11 , pm rb13 ; go to printing of |<end| < >gm c92 , vk 0 ; after output of stack Restore min drumplace in c92 qq e84 , hv c67 ; b2: pa r 2 tc67-160 ; subroutine for transfer vk 7c61 t 1 ; of program for analysis lk t 40 ; and printing of stack bt (s) t -1 ; hv r-3 , ; vk 0 , hvc67-120; exit from subroutine b5: ptr a 0 , mln ra1 ; subroutine belonging b6: bt IZBt-1 ; to part 3: printing hhr b 5 , ; of M regarded as ck -10 , gar a 2 ; decimal fraction hvr a 4 LZ ; with sign in b8 a3: ptr a 0 t 16 ; An optional number hvr a 0 NRA ; of digits in the arnrb 8 , ca 0 ; beginning are sy 0 , hhr 1 ; discarded an sy 32 , ; optional number hvr a 0 IRA ; are printed a4: can(rb7) , hvr a 3 ; a0: par a 2 LOBt 0 ; Output of sign a2: sy , ; only if RA is set to 1 before entrance b7: bt t-1 ; hhr b 5 , ; zq s 1 ; exit when KA not changed hv 9c ; exit when KA changed b8: qq 0 ; e1 in RS 9-11 b12: ;a1: m ; _10 ;b9: qq e81 , ; (last track number of standard procedures)⨯2∧(-10) |b10: qq e20 ; (total number of tracks)⨯2∧(-10) RS9:6a13,RS10:a4-6 |b11: qq e 0 ; (first track number of standard procedures)⨯2∧(-10),R |S10 b13: qq ; min(drumplace)b14: qq ; 40⨯total number of tracks⨯2∧(-10),RS12:2a0,RS9:8a13 |b15: qq , qq ;d a5=c67-c-122 ; _d a5=c67-120 ; _d b0=b0-a5, b1=b1-a5, b2=b2-a5 ; _d b3=b3-a5, b4=b4-a5, b5=b5-a5 ; _d b6=b6-a5, b7=b7-a5, b8=b8-a5 ; _d b9=b9-a5, b10=b10-a5, b11=b11-a5 ; _d b12=b12-a5, b13=b13-a5, b14=b14-a5 ; _d b15=b15-a5 ; _[6.9.65, Running system 9, track 8 c 61] [The program for analysis of return information consists of this track and tracks 9 - 10 c 61 referred to as part 1 in the comments on track 7c 61]b k = 8c61+e70, i= c67 - 120, a19, d9, e5 _d d0=c47,d1=26c,d8=27c, d7= 28c, e5=i+120, e1= b8, e2= 30c _pm c92 , gm b13 ; save min(drumplace) ga e4 , vk 5c61 ; save input symbol pm a17 IRC1 ; move subroutines and constants gm 2c MRC1 ; used by part 3 and 1 arn r-2 , nc a18 ; grn d7 , hv r-3 ; arn e4 , hs 10c ; go to examine input symbol hv a13 LZ ; R=0 if input symbol =p,w or b arn(2b0) D ; ck -1 , sr c92 ; lk c67 , vk 0 ; call track with error printing hv 1 LT ; go to pass 1 ps 14 , hv c67 ; if compiler is gone go to alarma13: ps (c1) , arn c46 ; if no stack go directly to printing of |<end| < >ca s2 , hv b4 ; arn( b9) D-1 ; calculate constants ck -1 , gr b9 ; arn(b10) D1 ; ck -1 , gr b10 ; ck -2 , ar b10 ; ck -1 , gr b14 ; arn b11 , ck -1 ; gr b11 , srn c34 ; bs (c43) , hv a19 ; pa b3 t 3 ; if stack already analyzed go directly to print pa b2+1 t 14c61 ; grn d8 , hv b3 ;a19: tk 9 , ar b9 ; if current track_ last track number of standard __ <hv a11 LT ; procedures then begin expecting call return:=true; ____ _____ ____pp (c46) , ppn (p) ; sr:=part1(stack[last used]) end else ___ ____a11: ps (c46) IZA ; expecting call return:=false _____a1: ps s-1 , arn p1 ; last used:= last used - 1 ck -1 , gr d8 ; new sr: last used for local block:= stack[sr + 1] a2: ps s1 , gs d0 ; next word: last used:= last used + 1 arn d0 , ck -1 ;gr c37 , sr d8 ; if last used_last used for local block __ >hh a3 NT ; then go_to block found ____ __ __grn e2 , arn s ;hv a2 NA ; if -, mark a[last used] then go_to next word __ ____ __ __ga e1 , ck 10 ; stack reference:= part1(stack[last used]) [Running system 10, track 9 c 61] ga e2 , ck 10 ; track relative:=part2(stack[last used])nc 0 , hv a2 ; if part3|0 then go_to next word __ = ____ __ __ck 10 , ga e 4 ; track number:= part 4(stack[last used]) arn e 1 , ck -1 ; gr d 1 , arn c37 ;sr d 1 , ; if last used _ stack reference then __ > ____hv a 2 NT ; go_to next word __ __arn e 2 , gp d0 ;hv a 2 LT ; if track relative > 511 then go_to next word __ ____ __ __sr 40 D ;hv a 2 NT ; if track relative _ 40 then go_to next word __ > ____ __ __arn e 4 , ck -1 ; sr b10 , ;hv a 2 NT ; if track number_totalthen go_to next word __ > ____ __ __ar b10 , sr b11 ; if track number < first standard then __ ____hv a 2 LT ; go_to next word __ __hh a 4 NOA ; if -,expecting call return then go_to parameter call __ ____ __ __acn s MB ; marks[last used]:=01a4h: hv a 5 , arn d1 ; go_to P; parameter call: __ __qq 1 , gr 31c ;can (e2) , hv a2 ; if track relative = 0 then go_to next word __ ____ __ __arn e4 , sr r-2 ;ck -1 , sr b9 ; if track number_ last track number of standard proced __ <urehv a15 LT ; then go_to S ____ __ __e4: vk , lk e 5 ; transfer from drum(track number) to (buffer address) vk , is (e 2) ; arns+e5-1, gr d 1 ; program word:=store[buffer address + track relative -arn d9 , is (e2) ; if (track relative >37 ∨ track relative = 37 ∧ __ca s-66 , sr 38e5 ; stack[buffer address + 38] = convert instructions) it (e2) , bs 38 ; ∧ store[buffer address + 39] = transfer instructionhh a6 NZ ; then begin ____ _____arn 39e5 , gt r4 ; track relative := part2( store[buffer address + 39]); ck -10 , ga a7 ; track number := part4( store[buffer address + 39]) mb d3 , sr d4 ; transfer from drum(track number) to (buffer address)hh a6 NZ ; end; ___pa e2 t ; a7: vk , lk e5 ; a6: vk , is (e2) ; arns+e5 , gr e5 ; program word 1 := store[buffer address + track relati ve arn d1 , mb d3 ; [Running system 11, track 10 c 61] sr d6 ;hv a2 NZ ; if program word | take formal then go_to next word __ = ____ __ __arn e5 , ck -10 ; mb d3 , sr d5 ;hv a8 NZ ; if program word 1 = value call then __ ____a15: acn s MC ; begin S: marks[last used]:= 11; _____a10: hvn a 9 IZA ; R: expecting call return:= true; go_to Q end ____ __ __ ___a8: a14: acn s M ; marks[last used]:=00;a5: arn r IZA ; P: expecting call return:= false; _____a9: arn d 7 , ck -20 ; Q: stack[last used]:= stack[last used] +; return chain⨯2∧(-29); |ar s , grs ; ck 10 , ca c1-1 ; hv b1 ; exit when outermost block is found pp (e 1) , gs d 7 ; sr:= stack reference; return chain:= last useda3h: hh a 1 , ps p ; go_to new sr; block found: last used:= sr __ __acn s MA ; marks[last used]:= 10; arn s , ga e 1 ; stack reference:= part 1(stack[last used])a17: hv a10 ; go_to R; __ __gr b8 , ann b8 ; subroutine for printing of integer in R nkf 39 , mkf c49 ; unit in position 39, is used by part 3 tkf 10 ; after being moved o core store 3c-8c ar b12 X ; hs b5 ; hr s1 ; ly 17c ; program used by part3 wwhen KA is changed ga 17c , arn ra16 ; (core store 9c-18c) ar 2c LKA ; gr b7+2, arn 17c ; store actual value of KA in jump instruction ca 22 , vyn 17 ; input symbol = w ca 39 , vyn 33 ; input symbol = p ca 50 , vyn 49 ; input symbol = bca 53 , hv b4 ; if input symbol = e go_to print |<end| __ __ __ < >qq , hr s1 ; a16: hr s1 NKA ;a18: m ; _0.0005 ; round-off constant, stored later in 19c d3: , udn(p-1) ; mask for left instruction d4: , hs c2 ; d5: , ps (c46) ; d6: , hs c22 ; d9: tkf -29 , nkf 39 ;e _[7.9.65, Running system 12, track 11 c 61] [This track and tracks 12-14 c 61 contain the analysis of local quanti- ties referred to as part 2 in the comments to track 7 c 61]b k = 11c61+e70, i = c67-120, a27, d6, e4 _d d1= 31c, d2= 32c, d3= 33c, a10= 28c, a11=30c, d5=26c, e2= 29c _d e1= 27c, d6= d5 _grn 34c t -1 ; arn r-1 , nc 26c ; clear working locations for part 3 hv r-2 ; pm e 4 IRC 1 ; move subroutines gm a25 MRC1 ; and constants arn r-1 , ncc67-121; used by part3 hv r-3 , ; ps (c 1) , hv a 0 ; stack reference:= stack[DISPLAY[0]]a1: ca s , hv a 0 ; procedure : if stack reference = last used then go_to __ ____ __ __block arn s-1 , ;hv a 0 LA ; if marks[stack reference-1] | b __ =hv a 0 NB ; then go_to block ____ __ __pp s-1 , hh a 0 ; j:= stack reference - 1; go_to common __ __a0: pp s , arn s+1 ; block: j:= stack reference; common: gr d 1 , gr d 2 ; first variable:= first point:= last usedarn b14 IZA ; among variables:= false _____gr d 3 , gp a10 ; earlist known program point:= 40⨯total number of trac ka2: arn r IZB ; no switch: in switch mode:= false _____a3: snn r ITA ; next word: expecting array identifier:= false _____a4: pp (a10) , arn d 1 ; following array: if j = first __ca p , hv a 5 ; variable then go_to next block ____ __ __pp p-1 , gp a10 ; j:= j - 1 a6: arn p IRC ; same word; marks[j] to RC gr p M ; marks[j]:= 00 ga e 1 , tk 10 ; e1:= part 1(stack[j]) ga e 2 , tk 10 ; e2:= part 2(stack[j])hv a24 LOA ; if among variables then go_to variables __ ____ __ __nc 0 , hv a 7 ; if part 3 = 0 then go_to no more points __ ____ __ __tk 9 , gr e 4 ; e4:= part 4(stack[j])/2 sr b10 , ;hv a 7 NT ; if part 4 _ total then go_to no more points __ > ____ __ __arn e 2 , ;hv a 7 LT ; if part 2 > 511 then go_to no more points __ ____ __ __sr 40 D ;hv a 7 NT ; if part 2 _ 40 then go_to no more points __ > ____ __ __gs a11 , arn e 1 ; ck -1 , gr a13 ; arn a11 , ck -1 ; sr a13 ITB ; sign of (stack reference - part 1) to TBhv a 8 NRA ; if marks _ 1 then go_to switch or variable __ < ____ __ __[Running system 13, track 12 c 61]hh a 9 LZ ; if part 1 = stack reference then go_to program point __ ____ __ __hv a12 LT ; if stack reference < part 1 then go_to switch element __ ____ __ __a9h: hv a 7 , arn e 2 ; go_to no more points; program point: __ __ck -4 , ar e 4 ; ck -2 , ar e 4 ; point:= part4⨯40 + part 2 ck -1 , sr d 3 ;hv r2 LZ ; if point>earliest known program point then __ ____hv a7 NT ; go_to no more points __ __ac d 3 , hv a 3 ; earliest known program point:= point go_to next word __ __a8: ncn(e 2) , hv a 7 ; switch or variable: if part 2 | 0 then go_to __ = ____ __ __; no more points srn p , tk 30 ;ar e 1 , ca p ; if j = part 1 - part 4 then __ ____hv a14 , ; go_to switch identifier __ __arn p , tk 30 ;hv a 7 NZ ; if part 4 | 0 then go_to no more points __ = ____ __ __hv a 7 LRB ; if RB = 1 then go_to no more points __ ____ __ __a12: hv a 3 LOB ; switch element: if in switch mode then go_to next wor __ ____ __ __dgpn d 5 IZB ; in switch mode:= true ____hv a 3 , ; element address:=j,go_to next word __ __a7: pp (d 5) LOB ; no more points: if in switch mode then __ ____pp p 1 , gp d 2 ; j:= element address; first point:= j + 1;hvn a6-1 IZA ; among variables:= true; go_to same word; ____ __ __a14: hv a 7 NRC ; switch identifier: if marks = 0 then go_to no more po __ ____ __ __intshv a 7 LTB ; if stack reference < part 1 then go_to no more points __ ____ __ __hv a15 NOB ; if -,in switch mode then go_to a __ ____ __ __arn d 5 , ck -1 ;sr a13 , ; if part 1 _ element address then go_to no more points __ < ____ __ __hv a 7 NT ; a15: acn p MA ; a: marks[j]:= 10hv a 2 , ; go_to no switch __ __a24: hv a 3 LRB ; variables: if marks | 0 then __ = ____hv a 3 LRA ; go_to next word __ __arn p , tk 21 ; if part 3 | 0 ∨ part 4 | 0 then __ = = ____hv a 3 NZ ; go_to next word __ __arn e 2 , ck -1 ; gr a16 , arn a10 ;ck -1 , sr a16 ; if j < part 2 then __ ____hv a 3 LT ; go_to next word __ __pp (e 1) , arn p-1 ; if -,expecting array identifier then __ ____hh a19 NTA ; begin length:= stack[part 1 - 1] _____[Running system 14, track 13 c 61]hv a 3 LT ; if length < 0 then go_to next word; __ ____ __ __gr e 4 , arn a10 ; if part 1 | j + 3 then go_to next word; __ = ____ __ __ar 3 D ; end else ___ ____a19: hv a20 , arn d 6 ; if part 1 | length address + 1 __ =ar 1 D ; then go_to next word; ____ __ __a20: nc (e 1) , hv a 3 ;srn 90 D ; if part 2 - length < 90 then __ ____ar e2 , ck -30 ; go_to next word __ __sr e4 ; hv a3 LT ;arn e 2 ; if -,expecting array identifier __ga d 1 LTA ; then first variable:= part 2 ____acn(a10) MC ; marks[j]:= 11hv a 4 NTA ; if expecting array identifier then go_to following ar __ ____ __ __ray acn p-2 MA ; marks[part 1 - 2]:= 10arn p-1 ITA ; expecting array identifier:= true ____nkf 39 , ; grf p-1 MA ; marks[part 1 - 1]:= 10 pp p-1 , gp d 6 ; coefficients address:= length address:= part 1 - 1 a17: pp p 1 , arn d 2 ; new coefficients: coefficient address:= coefficient a ddressca p , hv a 4 ; if coefficient address = first point then __ ____; go_to following array; __ __arnfp , ;hv a 4 LA ; if marks[coefficient address]|00 then go_to following __ = ____ __ __arrayhv a 4 LT ; if stack[coefficient address]<0 then go_to following __ ____ __ __arrayhv a 4 LZ ; if stack[coefficient address] = 0 __; then go to following array ____ __ __arnf p , srf (d6) ; if stack[length address]_ stack[coefficient address] __ <hv a 4 NT ; then go to following array ____ __ __arnfp , tkf -29 ; if entier(stack[coefficient address]) __nkf 39 , srf p ; | stack[coefficient address] then = ____hv a 4 NZ ; go_to following array __ __arnf(d6) , dkf p ; new length:= grf a13 , tkf -29 ; stack[length address]/ nkf 39 , srf a13 ; stack[coefficient address];hv a 4 NZ ; if entier(new length) | new length then go_to followi __ = ____ __ __ng arrayarnf(d6) , srf a13 ; if new length = stack[ length address ] __hv a 4 LZ ; then go_to following array ____ __ __arnfa13 , grf(d 6) ; stack[length address]:= new length a26: acn p MA ; accept: marks[coefficient address]:= 10hv a 17 , ; go_to new coefficient __ __a5: pp (d5) , pp p1 ; next block: [8.9.65, Running system 15, track 14 c 61] a18: ; first on trackqq VLOA ; if -,among variables∧ in switch mode then __ ____gp d2 LOB ; first point := element address + 1; arn d2 , ck -10 ;ar d1 , ck -10 ; last used⨯2∧(-9) + first variable⨯2∧(-19)+ | |ac s 1 , ; first point⨯2∧(-29) |a21: arn s IRC ; followchain: previous marks:= marks[stack reference] ck 20 , ga a11 ; stack reference:= part3(stack[stack reference])ca 0 , hv b 3 ; if stack reference = 0 then go_to printing __ ____ __ __ps (a11) , arn s ;hv a21 NA ; if marks[stack reference] | 10 __ =hv a21 LB ; then go_to follow chain ____ __ __hv a 0 LRA ; if previous marks | 01 __ =hv a 0 NRB ; then go_to block ____ __ __arn s+1 , hv a 1 ; goto procedure ____a16: ; a13: qq 0 ; e4: qq 0 ;d b24=i-a18 ; first free on this track _d b25= 23 ; number of words in subroutine below _d a25= c67-b25-121 ; first loading address - 1 _d a22 = i-1 ; RS 12, rel. 12 _e ; end block RS 12 - 15 _b k=14c61+e70, i=c67-b24-b25-120 ; begin subroutine block _d i=i+b24 ; _b16: gs r 1 , syn 64 ; subroutine arn LZ t 1 ; for output ga r 2 , ps (r-1) ; of text used ca 10 , hv s 1 ; by part 3 sy 0 , tk 10 ; ck -4 , hv r-4 ; constants used in part 3 b18: -4/409/614/410 ; 0.1, RS19, 3 places-30/274/898/1001 ; 10∧(-9) |b19: 28/256/0/0 ; 2∧(28), RS19: a65 |b20: -1/511/1023/1023 ; 1 - 2∧(-28), RS19: 1a44 |b21: arn 0 , ga r 1 ; RS16: 1a74 b22: pa b6 t5 ; routine used by part 3, RS16: a14, RS17: 2a33 pa b7 t3 ; for printing of program tk 10 , ga 27c ; point tk 20 , ck -30 ; sy 64 , pm 27c ; hs 3c IRA ; b23: arn 27c , ck -30 ; changed by RS16, rel.0 pa b6 t5 ; pa b7 t3 ; hs 3c ; hr s1 ;m ; _b17: 0.1 ; RS19: 2a50 qq ; not usede ; end block RS 15 second part _[6.9.65, Running system 16, track 15 c 61] [This track and tracks 16-18 c 61 form the program for output of the stack referred to as part 3 in the comments to track 7 c 61]b k = 15c61 + e70, i = c67 - 120, a75 _pm a60 , gm b23 ; word restored in case of repeated printingsy 58 , hs b16 ; tryktekst(|<stack|) < >qq 18.9+19.15+49.21+51.27+34.33+10.39; a74: pp (c1) , sy 64 ; arn p3 , sr b21 ; print own variables hv a73 LZ ; ga 27c , sr 27c ; hv a71 LZ ; arn a74 , ; ca p3 , hv a71 ; , ca p4 ; ncn(c1-1), hv a71 ; a73: arn p2 , hs a15 ; pp p 1 , hh a74 ;a71: pp (c1) , hv a2 ; sr:= part1(DISPLAY[0]); go_to test; __ __a1: arn p1 , gr 30c ; follow chain: previous last used:= stack[sr+1]; a72: arn p , ck 20 ; a: sr:= part 3(stack[sr]) ga 28c , pp (28c); ncn p , hv a2 ; hs b16 ;qq 18.9+19.15+49.21+51.27+34.33; if sr=0then begin tryktekst(|<stack_end|); __ ____ _____ < , >qq 53.15+37.21+52.27+10.33 ; go_to finished end __ __ ___hv b4 ; a2: arn p1 , pm p ; test: hv a 5 NA ;hh a 6 LB ; if marks[sr] = 10 then begin __ ____ _____tk 10 , gr 30c ; first var:= part2(stack[sr+1]) tk 10 , gr 29c ; first point:= part3(stack[sr+1])a6: hh a 9 , hs b16 ; go to block end __ __ ___qq 21.9+49.15+35.21+20.27+53.33; if marks[sr] = 11 then __ ____qq 51.15+49.21+35.27+35.33+10.39; begin trykvr; tryktekst(|<value_call|) _____ < , >a14: arn p , hs b22 ; program point: printpoint(stack[sr])gp 30c , hv a72 ; previous last used:= sr; go to a end __ __ ___a5: hh a13 LB ; if marks[sr]=00 __hs b16 ; then begin trykvr ____ _____qq 37.9+49.15+36.21+53.27+51.39; tryktekst(|<name_call|); < , >qq 49.9+35.15+35.21+10.27;a13: hv a14 , hs b16 ; go to programpoint end __ __ ___qq 39.9+41.15+38.21+51.27+59.33; if marks[sr] = 01 then begin trykvr __ ____ _____qq 51.15+49.21+35.27+35.33+10.39; tryktekst(|<proc._call|) < , >[6.9.65, Running system 17, track 16 c 61]gan r3 ; for i:= sr+1 step 1 ___ ____arn 30c , it 1 ; until previous last used -1 do _____ __ca (r 1) , hh r 3 ;arn p , sy 64 ; print(stack[i]) end ___hs a15 ;hv r-4 , hs b16 ; trykvr; tryktekst(|<retur|) < >qq 41.9+53.15+19.21+20.27+41.33+37.39; qq 10 ;a9: hv a14 , hs b16 ; go_to programpoint; block: __ __qq 50.9+35.15+38.21+51.27+34.33+10.39; trykvr; tryktekst(|<block|) < >a20: gp 28c , arn 29c ; j:= sr; b:= if j= __ca p , hv a18 ; first point then go_to ____ __ __arn p-1 , gp 33c ; variables; z:= jhv a19 NB ; if marks[j-1] | 01 then go_to proceed; trykvr __ = ____ __ __sy 64 , hs a15 ; print(stack[j-1])pp p-1 , hh a20 ; j:= j - 1; go_to b; proceed: trukvr __ __a19: hs b16 ;qq 39.9+38.15+57.21+37.27+19.33+18.39; tryktekst(|<points|) < >qq 10 ; a23: pp (29c) , arn p ; j:= first pointhv a21 LA ; c: if marks[j] = 10 then go_to switch __ ____ __ __pp p 1 , hs b22 ; j:= j+1; printpoint(stack[j-1]) a24: arn 33c , nc p ;hh a23 , ; if j |z then go_to c __ = ____ __ __a18: arn(30c) IPA ; variables: arn a18 , pp (30c) ; array mode:= arna18+1 NPA ; marks[first var] = 00hh a25 IPA ; j:= first var; go_to P; __ __a21: pp (p) , hv a24 ; switch: j:= part 1(stack[j])a28: hh a26 NPA ; start: if -, array mode __arn p , ; then go_to noarr ____ __ __hv a27 LA ; if marks[j] | 00 then go_to novar __ = ____ __ __hs b16 IPA ; array mode := false _____qq 21.9+49.15+41.21+57.27+49.33+50.39; trykvrqq 35.9+53.15+18.21+10.27 ; tryktekst(|<variables|); < >a37: sy 64 , arn p ; printvar: trykvr hs a15 , ; print(stack[j]) a29: pp (30c) , pp p 1 ; next: j:= g; j:= j + 1a25: gp 30c , arn 29c ; P: g:= j; if j| first point __ =nc p , hv a28 ; then go_to start ____ __ __[7.9.65, Running system 18, track 17c61]pp (28c) , hv a1 ; go to follow chain __ __a27: hh a29 NB ; novar: if marks[j] = 10 then go_to next __ ____ __ __hv a30 ; go to new declaration __ __a38: srnf32c , tkf -29 ; printarr: tk 30 , ga a33 ; k:= part 2(stack[j]) arn p , ck 10 ; a35: ga a22 , sy 64 ; line: trykvr a36: pa a11 , can (a33); t:= 0hh a29 , ; d: if f = 0 then __ ____ps (a33) , ; go_to next __ __a22: arn s , hs a15 ; print(stack[k-f]) a33: qq 0 t 1 ; f:= f+1 a11: arn D t 1 ; t:= t+1ca 5 , hh a35 ; if t=5 then go_to line __ ____ __ __sy 0 , sy 0 ; else tryktekst(|<____|); ____ < ,,,,>sy 0 , sy 0 ; go_to d __ __a26: hh a36 , arn p ; noarr:hv a37 NA ; if marks[j] = 00 then go_to printvar __ ____ __ __a30: hs b16 IPA ; new decl: array mode:=true ____qq 49.9+41.15+41.21+49.27+24.33+10.39; trykvr; tryktekst(|<array|) < >pp p 1 , arn p ; seek: j:= j + 1hv r-1 LB ; if marks[j] = 11 then go_to seek __ ____ __ __arn p 1 , gr 32c ; f:=stack[j+1] pp p 1 , sy 64 ; j:= j + 1; trykvr a39: arn p , hs a15 ; dim: print(stack[j])arn 29c , ca p 1 ; if j+1= first point then __ ____pp (30c) , hv a38 ; h:begin j:= g; go to printarr end _____ __ __ ___pp p 1 , arnfp ; j:= j + 1hv r-2 NA ; if marks[j] | 10 __ =hv r-3 LB ; then go_to h ____ __ __sy 0 , sy 60 ; tryktekst(|<_⨯|) < , >sy 2 , sy 58 ; mkf 32c , grf 32c ; f:= f⨯stack[j]hv a39 ; go to dim __ __a15: gr b8 , gs a61 ; procedure print(x) _________arnf b8 , grf 31c ; real x ____arn b8 , sr 31c ; x in R-reg at hv a65 LZ ; start, if x not pa r1 t9 ; floating number only bt t-1 ; 9 spaces and sign=+- are [8.9.65, Running system 19, track 18 c 61] sy 0 , hv r-1 ; printed arn b8 ; sy 60 NT ; sy 32 , sy 58 ; a66: sy 0 , hv b7+2 ; exita65: snnf31c , arf b19 ; if abs(x)>2∧(28) __ |hv a52 LT ; then go to floating ____ __ __annf 31c , tkf -29 ; if entier(x)=x __nkf 39 , snf 31c ; then go to integer ____ __ __hh a45 LZ ; a52: arnf31c , ca 0 ; floating: sy 0 , hh r 1 ; output signsy 32 , sy 59 ; (_ or-) and point ,a44: ps 0 , gs b15 ; s:= 0, cycle:snnf31c , arf b20 ; if abs(x)<1then __ ____hv a48 NT ; go to mult __ __snnf31c , mkf b18 ; x:=0.1⨯x a51: ps s1 , grf 31c ; s:=s+1hh a44 , ; go to cycle __ __a48: annf31c , srf b18 ; mult: if __hv a50 NT ; abs(x)>0.1then ____annf31c , dkf b18 ; go to printing __ __ps s-1 , hh a51 ; x:=10⨯x; s:= s-1; go to cycle __ __a50: annf31c , tkf 10 ; printing: ar 19c IOB ; arn b17 LOB ; qq (b15) LOB 1 ; pa b 7 X IRA 2 ; print pa b 6 , hs b 5 ; mantissa sy 60 , sy 27 ; print10 sy 58 , arn b15 ; pa b 6 IRAt 6 ; pa b 7 t 2 ; print exponent tk -30 , hs 3c ; with sign a45: hv r4 , arnf 31c ; print number tkf -29 , pm b15 ; as integer pa b 7 IRAt 8 ; with sign pa b 6 , hs 3c ; a61: ps , hv a66 ; a60: arn 27c , ck -30 ;e ; end bloack RS 16 - 19 _e ; end bloack RS 8 - 19 _d c60=19c61 ; _s _