|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 6912 (0x1b00) Types: TextFile Names: »txonline«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ. └─⟦b2ec5d50f⟧ └─⟦393858ad9⟧ »tsysprog« └─⟦this⟧
( mode list.yes (xonline=slang xonline repeat) scope user xonline lookup online ) ;rc 19.02.73 repeat, on-line ;hcø 1978.09.01 Anders Lindgård ;the programs are translated by a slang call like: ; ; (online=slang <text> ; online repeat) ; b. g2,f4 w. ; start insertproc block s.w. ; start code block d. p.<:fpnames:> l. \f ; repeat, page 1 b. a10, b10 k=h55 w. a1: 4<12 + 4 ; space,integer a2: 1 ; left i.e. no of left par f2: ba w3 x3 + 1 ; item:= nextitem dl w1 x3 + 2 ; if next item se.w0 (a1.); not integer jl. b9. ; then error(factor) al w1 x1 - 1 ; repetitions:=repetitions-1 rs w1 x3 + 2 ; sh w1 0 ; if repetitions<1 then jl. b8. ; error or last call b1: ba w3 x3 + 1 ; rep: repeat bl w1 x3 + 0 ; item:=nextitem sl w1 1 ; until item=par or jl. b1. ; item=endlist sn w1 -4 ; if item=endlist jl. b7. ; then error(nothing) al w1 x1 + 1 ; wa.w1 a2. ; left:= left + (if right_par rs.w1 a2. ; then -1 else 1) sl w1 1 ; if left>0 then jl. b1. ; goto rep am x2 + 0 ; new current command:= al w1 x2 + 0 ; 2*current command - top address ws w1 6 ; sh.w1 a0. ; if new current command within this jl. b6. ; program then error(no room) al w3 x3 - 2 ; skip bottom delimiter b2: al w2 x2 - 4 ; repeat dl w1 x3 + 0 ; i:=i-4 ds w1 x2 + 2 ; newstac(i):=stac(j) al w3 x3 - 4 ; j:=j-4 sl.w3 (h8.); until j<stactop jl. b2. ; al w3 x3 + 2 ; if we have moved se.w3 (h8.); one word too much al w2 x2 + 2 ; then i:=i+2 rs.w2 h8. ; new stacktop := i b3: al w2 0 ; jl.w3 h7. ; ok and end a0: ; if the command stack should reach this point ; it will not harm this program as the rest of it ; is error procedures \f ; repeat, page 2 ; error procedures a6: <:***repeat no core<10><0>:> b6: al.w0 a6. ; jl. b10. ; a7: <:***repeat nothing to repeat<10><0>:> b7: al.w0 a7. ; jl. b10. ; a8: <:***repeat factor 0<10><0>:> b8: sn w1 0 ; jl. b3. ; if repetitions was 1 then ok and end al.w0 a8. ; jl. b10. ; a9: <:***repeat no factor<10><0>:> b9: al.w0 a9. ; b10:jl.w3 h31.-2 ; error ending: write errortext al w2 1 ; jl.w3 h7. ; ko and end f4=k-h55 e. ; end of repeat-block \f ;rc 26.03.73 on-line ...1... ;the program connects the current input zone to the process ;named 'terminal' in such a way that current input cannot ;be unstacked again - even not in case of fp syntax errors ;or the like i.e. primary input is also changed to the pro- ;cess 'terminal' b. a9, b1 w. f1: jl. w3 h29.-4 ; start: stack curr in; al. w2 a1. ; jl. w3 h27. ; connect(cur.in,terminal); ks-1 se w0 0 ; if not ok jl. b1. ; then goto error; jl. w3 h22. ; inblock(curr.in); rl w3 x1+h3 ; al w3 x3-2 ; record.base:= rs w3 x1+h3 ; record.base-2; al w3 0 ; partial.word:=0; rs w3 x1+h2+4 ; al. w3 a2. ; set addr for new prim.in: jd 1<11+4 ; proc descr(terminal); ks-2 sn w0 0 ; if not found jl. b1. ; then goto error; rs. w0 h17.-2 ; addr(prim.in):=addr(terminal); rs. w0 h15. ; addr(prim.out):=addr(terminal); al w2 10 ; char:=NL; jl. w3 h95.-2 ; closeuptext(cur.out); jl. w3 h79. ; terminate zone al. w2 a1. ; jl. w3 h28. ; connect(cur.out,terminal); ks-3 se w0 0 ; if -,ok then jl. b1. ; goto error al. w1 a9. ; w1:=address(tail); al. w3 a8. ; w3:=<:v:>; jd 1<11+42 ; lookup entry(<:v:>,tail); ks-4 se w0 0 ; if -,ok then jl. b1. ; goto error; al. w2 a2. ; dl w0 x2+2 ; move name ds w0 x1+4 ; dl w0 x2+6 ; ds w0 x1+8 ; al. w3 a8. ; jd 1<11+44 ; changeentry(<:v:>,tail); ks-5 se w0 0 ; if -,ok then jl. b1. ; goto error; al. w3 a7. ; jd 1<11+44 ; changeentry(<:c:>,tail); ks-6 se w0 0 ; if -,ok then jl. b1. ; goto error al. w3 h50. ; remove stacked zone: jd 1<11+48 ; ld w1 65 ; name chain:=0; ds. w1 h50.+2 ds. w1 h50.+6 ; al w0 1 ; set i-bit; lo. w0 h20.+h2 ; give.up.cur.in:= rs. w0 h20.+h2 ; give.up.cur.in or 1; al w2 0 ; slut: jl. h7. ; goto end program; \f ;rc 07.12.72 on-line ...2... b1: al. w0 a3. ; error: jl. w3 h31.-2 ; output error text; al w2 10 ; char:=NL; jl. w3 h33.-2 ; outend(cur.out,char); al. w0 a3. ; al w2 1 ; jl. h7. ; goto end program; a3: <:***online connect terminal<10><0>:> a1: 1<23+8 ; file descriptor for terminal: a2: <:terminal:>,0 ; name 0,r.5 ; rest of tail; a4: 1<23+8 ; file descriptor for output: 0 ; a5: 0 ; 0 ; a6: 0 ; 0,r.5 ; a7: <:c:>,0,0,0 a8: <:v:>,0,0,0 a9: 0,r.10 ; tail e. \f ;rc 26.03.73 repeat, online ; ; insert tails into catalog ; ; the program entries are given by f1 and f2, the ; load length by f3 and f4 ; f3=k-h55 m. rc 07.02.74 online repeat ;entry on-line: g0: (:f3+511:) > 9 ; no of segments 0,r.4 ; s2 ; date 0,0 ; file block 2<12+f1-h55 ; contents,entry f3 ; length ;entry repeat: g1: 1<23+4 ; modekind = bs 0,r.4 ; s2 ; date 0,0 ; file,block 2<12+f2-h55 ; contents,entry f4 ; length d. p.<:insertproc:> l. e. xonline online finis ▶EOF◀