DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦6ff3b45f5⟧ TextFile

    Length: 5376 (0x1500)
    Types: TextFile
    Names: »uti12«

Derivation

└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
    └─⟦b2ec5d50f⟧ 
        └─⟦f8e4b63af⟧ »trcfput« 
            └─⟦this⟧ 

TextFile

\f


;rc 19.02.73                      repeat, on-line

;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.  a7, b1  w.
f1:  jl. w3  h29.-4          ; start: stack curr in;
     al. w2  a1.             ;
     jl. w3  h27.            ;   connect(cur.in,terminal);
     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);
     sn  w0  0               ;   if not found
     jl.     b1.             ;   then goto error;
     rs. w0  h17.-2          ;   addr(prim.in):=addr(terminal);
     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  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
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.
▶EOF◀