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

⟦8f8095849⟧ TextFile

    Length: 20736 (0x5100)
    Types: TextFile
    Names: »uti30«

Derivation

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

TextFile

; ta 78.03.07                              correct, page ...1...

s. a12,b19,c25,d6,e7,f8,g2 w.
d.
p.<:fpnames:>
l.
k=h55
b0:  0               ;   cur command
b1:  0               ;   program name
     ds. w3  b1.     ; entry:
     jl. w3  h29.-4  ;   stack current input
     rl. w3  b0.     ;
     se. w3 (b1.)    ;   if left hand side then
     jl.     a1.     ;   alarm(call)
     al  w3  x3+10   ;
     rs. w3  b0.     ; 
     jl. w3  f1.     ;   get sep
     se. w0 (c11.)   ;   if sep<>spacetext then
     jl.     a2.     ;   alarm(param)
     jl. w3  f2.     ;   get param
     jl. w3  f1.     ;   get sep
     se. w0 (c12.)   ;   if sep<>point integer then
     jl.     a2.     ;   alarm(param)
     jl. w3  f2.     ;   get param
     rs. w0  b2.     ;   save segm
     rl. w1  h20.+h0 ;
     al  w1  x1+1    ;
     rs. w1  b10.    ;   save bufferbase+1
     rl. w3  b1.     ;
     al  w2  x3+12   ;
d6:  rs. w2  b15.    ; connect: save name addr;
     jl. w3  h27.-2  ;   connect bsfile to cur in
     se  w0  0       ;   if not connected
     jl.     f6.     ;   then goto test compressedlib;
     bl. w0 h20.+h1+1;
     se  w0  4       ;   if kind<>4 then
     jl.     a3.     ;   alarm(not connected)
     al. w1  h54.    ;
     al. w3 h20.+h1+2;
     jd      1<11+42 ;   lookup bsfile
     rl. w0  h54.    ;
      rs. w0  b19.    ;   save total segm;
     ws. w0  b2.     ;   if segm>=size-block then
     ws. w0 h20.+h1+16;
     sh  w0  0       ;   alarm(segm)
     jl.     a4.     ;
     al. w0 h20.+h1+16;
     rs. w0  b16.    ;   save adr of segcount
     rl. w0  h20.+h0 ;
     ba. w0  1       ;
     rs. w0  b17.    ;   save buffer adr.
     al. w1  b13.    ;
     rl. w3  b15.    ;
     jd      1<11+42 ;   lookup
     rl. w0  b2.     ;
     am      16      ;
     bl. w1  b13.    ;   w1:=contents-32;
     al  w1  x1-32   ;
     sl  w1  0       ;   if compressed codeprocedure
     wa  w0  2       ;   then segcount:=w1+segm;
     rs. w1  b14.    ;
     am      17      ;
     bz. w1  b13.    ;
     rs. w1  b15.    ;   save start ext list;
     wa. w0 h20.+h1+16;
     rs. w0 h20.+h1+16;  segcount:=segcount+segm
     jl. w3  h22.-2  ;   inblock current in
d0:  jl. w3  f1.     ; nextparam:
     sl. w0 (c13.)   ;   get sep
     se  w0  (0)     ;   if sep=end then
     jl.     d4.     ;   goto exit
     se. w0 (c11.)   ;   if sep<>space text
     jl.     a2.     ;   then alarm(param)
     al  w0  0       ;
     rs. w0  b4.     ;   firstbit:=0;
     al  w0  23      ;
     rs. w0  b5.     ;   lastbit:=23;
     jl. w3  f2.     ;   get param
     se. w0 (c14.)   ;   if param<>real<:add:> 
     sn. w0 (c19.)   ;   and param<>real<:adr:>
     se  w0  (0)     ;   then
     jl.     d1.     ;   goto bitparam
\f

; ta 20.11.73                              correct, page ...2...
 
 
 
     jl. w3  f1.     ;   get sep
     se. w0 (c12.)   ;   if sep<>pointinteger then
     jl.     a2.     ;   alarm(param)
     jl. w3  f2.     ;   get param
     ls  w0  -1      ;   if odd value then
     ls  w0  1       ;   addr:=addr-1
     rs. w0  b3.     ;   save addr
     sl  w0  512     ;   if addr>511 then
     jl.     a5.     ;   alarm(addr)
     wa. w0  b10.    ;   cur word addr:=
     rs. w0  b11.    ;   bufferstart+addr
     jl.     d0.     ;   goto nextparam
d1:  rl. w1  b11.    ; bitparam
     sn  w1  0       ;   if no address
     jl.     a2.     ;   then alarm(param)
     se. w0 (c15.)   ;   if param<>real<:bit:>
     jl.     d3.     ;   then goto ifparam
     jl. w3  f1.     ;   get sep
     se. w0 (c12.)   ;   if sep<>pointinteger then
     jl.     a2.     ;   alarm(param)
     jl. w3  f2.     ;   get param
     rs. w0  b4.     ;   save firstbit
     jl. w3  f1.     ;   get sep
     se. w0 (c12.)   ;   if sep<>pointinteger then
     jl.     a2.     ;   alarm(param)
     jl. w3  f2.     ;   get param
     rs. w0  b5.     ;   save lastbit
     sl  w0  24      ;
     jl.     a9.     ;   if lastbit>23 then alarm(bit)
     ws. w0  b4.     ;
     sh  w0 -1       ;   if lastbit>firstbit then
     jl.     a9.     ;   alarm(bit)
     jl. w3  f1.     ;   get sep
     se. w0 (c11.)   ;   if sep<>spacetext
     jl.     a2.     ;   then alarm(param)
     jl. w3  f2.     ;   get param
d3:  se. w0 (c16.)   ; ifparam: if param<>
     jl.     a2.     ;   real<:if:> then alarm(param)
     al  w0  -23     ; 
     wa. w0  b5.     ;   w0:=-23+lastbit
     ws. w0  b4.     ;   -firstbit
     al  w1  -1      ;   w1:=all ones
     ls  w1 (0)      ;   w1:=maxnumber
     rs. w1  b8.     ;
     jl. w3  f4.     ;   get value 
     rs. w0  b6.     ;   save oldvalue
     se  w2  0       ;   if oldvalue too big
     jl.     a7.     ;   then alarm(oldvalue)
     jl. w3  f1.     ;   get sep
     se. w0 (c11.)   ;   if sep<>spacetext then
     jl.     a2.     ;   alarm(param)
     jl. w3  f2.     ;   get param
     se. w0 (c17.)   ;   if param<>real<:the:> then
     jl.     a2.     ;   alarm(param)
     jl. w3  f4.     ;   get value
     rs. w0  b7.     ;   save newvalue
     se  w2  0       ;   if newvalue too big
     jl.     a6.     ;   then alarm(newvalue)
     al  w1  -23     ;
     wa. w1  b5.     ;   sh:=-23+lastbit
     rl. w0 (b11.)   ;   w0:=word
     ls  w0  x1      ;   shift sh
     la. w0  b8.     ;   and max
     rs. w0  b8.     ;
\f

; ta 76.07.19                              correct, page ...3...
 
 
 
     se. w0 (b6.)    ;   if oldvalue<>value in word
     jl.     a8.     ;   alarm(oldvalue)
     ac  w1  x1      ;   sh:=23-lastbit
     rl. w3 (b11.)   ;   w3:=word
     rl. w0  b6.     ;
     ls  w0  x1      ;   w0:=oldvalue shift sh
     ws  w3  0       ;   w3:=word-oldvalue shift sh
     rl. w0  b7.     ;
     ls  w0  x1      ;   w0:=newvalue shift sh
     wa  w3  0       ;   w3:=w3+newvalue shift sh
     rs. w3 (b11.)   ;   store new word
     jl.     d0.     ;   goto next param
d4:  rl. w1  b12.    ; exit:
     se  w1  0       ;   if wrongvalues then
     jl.     e4.     ;   then goto errorexit
     al. w1  h20.    ;
     al  w0  -1      ;
     wa. w0 h20.+h1+16; segcount:=segcount-1
     rs. w0 h20.+h1+16
     jl. w3  h23.    ;   outblock
     jl. w3  f7.     ;   changedate;
     jl. w3  h30.-4  ;   unstack current in
     al  w2  0       ;   ok
d5:  jl.     h7.     ;   goto programexit
f4:                  ; procedure get value;
     rs. w3  b9.     ; begin
     al  w1  1       ;   minus:=false
     jl. w3  f1.     ;   get sep
     sn. w0 (c13.)   ;   if sep=space integer then
     jl.     f5.     ;   goto not minus
     se. w0 (c11.)   ;   if sep<>space text
     jl.     a2.     ;   alarm(param)
     jl. w3  f2.     ;   get param
     se. w0 (c18.)   ;   if param<>real<:neg:>
     jl.     a2.     ;   then alarm(param)
     al  w1 -1       ;   minus:=true
     jl. w3  f1.     ;   get sep
     se. w0 (c12.)   ;   if sep<>pointinteger
     jl.     a2.     ;   then alarm(parm)
f5:  jl. w3  f2.     ;   get param
     al  w2  0       ;   error:=false
     rs. w0  b18.    ;   save value
     ws. w0  b8.     ;   if value-max<0
     sl  w0  1       ;   then
     al  w2  1       ;   error:=true;
     rl. w0  b8.     ;
     sn  w0  -1      ;   if all bits 
     al  w2  0       ;   then no error
     rl. w0  b18.    ;
     wm  w0  2       ;   value:=value*sign
     se  w2  1       ;
     la. w0  b8.     ;   and max
     jl.    (b9.)    ; end get value;
f1:  rl. w2  b0.     ; procedure get sep;
     rs. w2  f3.     ; begin
     rl  w0  x2      ;   addr last sep:=cur command
     al  w2  x2+2    ;   w0:=separator
     rs. w2  b0.     ;   cur command:=next command
     jl      x3      ; end get sep;
f3:  0               ;  addr. last sep
\f

; ta 76.07.19                              correct, page ...4...
 
 
 
f2:  rl. w2  b0.     ; procedure get param
     rl  w0  x2      ; begin
     al  w2  x2-2    ;   w0:=param
     ba  w2  x2+1    ;   cur command:=next command
     rs. w2  b0.     ;
     jl      x3      ; end get param;
a0:  0               ; error number
a12: am  1           ;   error(code inconsistent);
a11: am  1           ;   error(entry inconsistent);
a10: am  1           ;   error(not found);
a9:  am  1           ;   error(bits)
a8:  am  1           ;   error(oldvalue different)
a7:  am  1           ;   error(oldvalue)
a6:  am  1           ;   error(newvalue)
a5:  am  1           ;   error(addr)
a4:  am  1           ;   error(segm)
a3:  am  1           ;   error(not connected)
a2:  am  1           ;   error(param)
a1:  al  w0  1       ;   error(call)
     rs. w0  a0.     ;   save error number
     al. w0  c0.     ;
     jl. w3  h31.-2  ;   outtext(***)
     rl. w1  b1.     ;   
     al  w0  x1+2    ;
     jl. w3  h31.-2  ;   outtext(programname)
     rl. w0  a0.     ;
     sh  w0  9       ;   if error>9 or
     sn  w0  3       ;   error=3 then
     jl.     e1.     ;   goto errortype1;
     sl  w0  5       ;   if error>4 then
     jl.     e3.     ;   goto errortype3
     sn  w0  4       ;   if error=4 then
     jl.     e2.     ;   goto errortype2
     se  w0  2       ;
     am      c20     ;   if error=1 then text:=call
     al. w0  c2.     ;   else text:=param
     jl. w3  h31.-2  ;   outtext(text)
     rl. w0  a0.     ;   if error=1 then
     se  w0  2       ;   then goto exit
     jl.     e4.     ;
     rl. w3  b0.     ;   if error caused by param
     al  w3  x3-2    ;   then goto paramerror
     se. w3 (f3.)    ;
     jl.     e5.     ;
     al  w2  32      ;
     bl  w3  x3      ;
     sn  w3  8       ;   w2:=separator
     al  w2  46      ;
     jl. w3  h26.-2  ;   outtext(separator)
e5:  rl. w3  f3.     ; paramerror:
     bl  w1  x3+1    ;
     sn  w1  4       ;   if param=integer then
     jl.     e6.     ;   goto integer param
     al  w0  x3+2    ;   text:=param
     se  w1  10      ;   if sep=end then
     al. w0  c9.     ;   text:=missing
     jl. w3  h31.-2  ;   outtext(text)
     jl.     e4.     ;   goto errorexit
e6:  rl  w0  x3+2    ; integerparam:
     jl. w3  h32.-2  ;   outinteger(param)
     1               ;
     jl.     e4.     ;   goto errorexit
\f

; ta 76.07.19                              correct, page ...5...
 
 
 
e1:  al  w2  32      ; errortype1:
     jl. w3  h26.-2  ;   outchar(32)
     rl. w1  b1.     ;
     al  w0  x1+12   ;
     jl. w3  h31.-2  ;   outtext(filename)
     al. w0  c3.     ;
     rl. w1  a0.     ;
     sn  w1  10      ;   if error=10 then
     al. w0  c23.    ;   not found;
     sn  w1  11      ;   if error=11 then
     al. w0  c24.    ;   entry defect;
     sn  w1  12      ;   if error=12 then
     al. w0  c25.    ;   code defect;
     jl. w3  h31.-2  ;   outtext(not connected)
     rl. w0  a0.     ;
     sl  w0  11      ;   if error>10 then
     jl. w3  h30.-4  ;   unstack cur in;
     jl.     e4.     ;   goto errorexit
e2:  al. w0  c4.     ; errortype2:
     jl. w3  h31.-2  ;   outtext(segm)
     rl. w0  b2.     ;
     jl. w3  h32.-2  ;   outinteger(segmno)
     1               ;
     jl.     e4.     ;   goto errorexit
e3:  al. w0  c5.     ; errortype3:
     jl. w3  h31.-2  ;   outtext(addr)
     rl. w0  b3.     ;
     jl. w3  h32.-2  ;   outinteger(addr)
     1               ;
     rl. w0  a0.     ;
     sn  w0  5       ;   if error no=5 
     jl.     e4.     ;   then goto errorexit
     al. w0  c8.     ;
     jl. w3  h31.-2  ;   outtext(bits)
     rl. w0  b4.     ;   outinteger(firstbit)
     jl. w3  h32.-2  ;
     1               ;
     al  w2  46      ;
     jl. w3  h26.-2  ;   outchar(46)
     rl. w0  b5.     ;
     jl. w3  h32.-2  ;   outinteger(lastbit)
     1               ;
     rl. w0  a0.     ;   w0:=error number
     sn  w0  9       ;   if error number=9 then
     jl.     e4.     ;   goto errorexit
     sn  w0  6       ;   if error number=6
     am      c21     ;   then text:=newvalue
     al. w0  c7.     ;   else text:=oldvalue
     jl. w3  h31.-2  ;   outtext(text)
     rl. w1  a0.     ;   number:=if error number=6 then
     rl. w0  b7.     ;   newvalue
     se  w1  6       ;   else
     rl. w0  b6.     ;   oldvalue
     jl. w3  h32.-2  ;   outinteger(number)
     1<23+1          ;
     rl. w0  a0.     ;   if error<>8 then
     se  w0  8       ;   goto errorexit
     jl.     e4.     ;   else
     al. w0  c10.    ;
     jl. w3  h31.-2  ;   outtext(, found)
     rl. w0  b8.     ;
     jl. w3  h32.-2  ;   outinteger(found oldvalue)
     1<23+1          ;
     rl. w1  b12.    ;   wrongvalues:=
     al  w1  x1+1    ;   wrongvalues+1;
     rs. w1  b12.    ;   
     jl.     d0.     ;   goto nextparam
e4:  jl. w3  h30.-4  ; errorexit:
     al  w2  10      ;   unstack cur input
     jl. w3  h26.-2  ;   outchar(10)
     al  w2  1       ;   ok:=false
     jl.     d5.     ;   goto programexit
\f

; ta 78.03.07                              correct, page ...6...
 
 
 
c0:  <:<10>***:>
c1:  <: call:>
c2:  <: param :>
c3:  <: not connected:>
c4:  <: segm.<0>:>
c5:  <: addr.<0>:>
c6:  <: newvalue=:>
c7:  <: oldvalue=:>
c8:  <: bits.<0>:>
c9:  <:missing:>
c10: <:, found=:>
c23: <: unknown<0>:>
c24: <: entry inconsistent<0>:>
c25: <: code inconsistent<0>:>
h.
c11:  4, 10          ; space text
c12:  8 , 4          ; point integer
c13:  4 , 4          ; space integer
w.
c14:  <:add:>
c15:  <:bit:>
c16:  <:if:>
c17:  <:the:>
c18:  <:neg:>
c19:  <:adr:>
c20=c1-c2
c21=c6-c7
c22: 12
b2:  0               ;   segm
b3:  0               ;   addr
b4:  0               ;   firstbit
b5:  0               ;   lastbit
b6:  0               ;   oldvalue
b7:  0               ;   newvalue
b8:  0               ;   work loc., e.g. found oldvalue
b9:  0               ;   workloc
b10: 0               ;   buffer addr.
b11: 0               ;   current word addr
b12: 0               ;   wrongvalues
b13: 0 , r.10
b14: 0               ; saved proc segm
b15: 0               ; start ext list
b16: 0
b17: 0
b18: 0
b19: 0               ;   total segments
\f


; ta 78.03.07                                    correct, page ...7...


f6:  al. w1  b13.    ; test compressedlib:
     rl. w3  b1.     ;
     al  w3  x3+12   ;
     jd      1<11+42 ;   lookup;
     se  w0  0       ;   if not found then
     jl.     a10.    ;   alarm(unknown);
     al  w2  x1+2    ;   w2:=docname;
     jl.     d6.     ;   goto connect;

f7:                  ; changedate:
b. a3 w.
     rs. w3  b6.     ;   save return;
     rl. w0  b14.    ;
     se  w0  -28     ;
     sl  w0  0       ;   if not procedure then
     jl.     a0.     ;   begin
     al. w1  b13.    ;
     rl. w3  b1.     ;
     al  w3  x3+12   ;     w3:=name addr;
     jd      1<11+42 ;     lookup;
     dl  w1  110     ;
     ld  w1  5       ;
     rs. w0  b13.+10 ;     shortclock;
     al. w1  b13.    ;
     jd      1<11+44 ;     changeentry;
     jl.     (b6.)   ;   end;
a0:  rl. w2  b15.    ;   if startext>502
     sl  w2  502     ;   then
     jl.     a11.    ;   alarm(entry inconsistent);
     al  w1  0       ;
     sn  w0  -28     ;   if not compressed then
     rs. w1  b14.    ;   segcount:=0;
     jl. w3  f8.     ;   get decimal time;
     rs. w0  b4.     ;   save date;
     rs. w1  b5.     ;   save clock;
     rl. w0  b14.    ;
     rs. w0 (b16.)   ;   relsegm:=0;
     jl. w3  h22.-2  ;   inblock;
     rl. w0  b15.    ;
     se  w0  0       ;   if startext=0
     jl.     a1.     ;   and
     rl. w0  b13.    ;   bs
     sl  w0  0       ;   then
     jl.     a1.     ;   begin
     al. w1  b13.    ;     lookup docname;
     al. w3  b13.+2  ;     startext:=byte17
     jd      1<11+42 ;
     bz. w0  b13.+17 ;   end;
     rs. w0  b15.    ;
     sl  w0  502     ;   if startext>500 then
     jl.     a11.    ;   alarm(entry inconsistent);
a1:  rl. w2  b15.    ;
     am.    (b17.)   ;   basebuf;
     bz  w1  x2+1    ;   addr:=z(startadr) extract 12
     wm. w1  c22.    ;   *12
     rs. w1  b3.     ;   +
     am.    (b17.)   ;
     bz  w1  x2      ;   z(startadr) shift (-12)
     ls  w1  1       ;   *2
     am.     (b17.)  ;
     ba  w1  x2+3    ;   + own bytes
     wa. w1  b3.     ;
     al  w1  x1+6    ;   +6
     wa. w1  b15.    ;   +startext;
     am.    (b17.)   ;
     al  w1  x1+0    ;
     rs. w1  b3.     ;   b3:=clock addr;
\f


; ta 78.03.07                       correct, page ...8...
a2:  rl. w0  b4.     ; next segm:
     am.    (b17.)   ;
     sh  w1  502     ;   if clockaddr<502
     rs  w0  x1-2    ;   then save date;
     rl. w0  b5.     ;
     am.    (b17.)   ;
     sh  w1  500     ;   if clockaddr<500
     rs  w0  x1      ;   then save clock;
     al  w0  0       ;
     am.    (b17.)   ;   if addr=502
     sn  w1  502     ;   then
     rs. w0  b15.    ;   startext:=0;
     am      -1000
     al. w1 h20.+1000;
     rl. w0  b14.    ;
     rs. w0  (b16.)  ;
     jl. w3  h23.    ;   outblock(0);
     rl. w1  b3.     ;
     am.    (b17.)   ;
     sh  w1  500     ;   if clockaddr<500
     jl.    (b6.)    ;   then return;
     rl. w1  b19.    ;
     al  w1  x1-1    ;   seg:=seg-1;
     rs. w1  b19.    ;


     am.    (b17.)   ;
     bz  w2  503     ;   if continueaddr>500 or
     sl  w1  0       ;   if seg<0 
     sl  w2  500     ;   then alarm(code inconsistent);
     jl.     a12.    ;

     al  w1  x2-502  ;   addr:=continueaddr-502
     wa. w1  b3.     ;   + addr;
     rs. w1  b3.     ;
     am     -1000
     jl. w3  h22.-2+1000;   inblock(1);
     rl. w1  b15.    ;   if startext=500 then
     se  w1  500     ;   begin
     jl.     a3.     ;
     rl. w1  b3.     ;     clockaddr:=
     am.     (b17.)  ;     clockaddr
     ba  w1  x2+1    ;     +own bytes
     ws  w1  4       ;     -continueadr;
     rs. w1  b3.     ;
     al  w0  2       ;     startext:=2;
     rs. w0  b15.    ;   end;
a3:  rl. w1  b3.     ;   if clockaddr>500
     am.     (b17.)  ;
     sl  w1  502     ;   then
     jl.     a2.     ;   goto next segm;
     rl. w0  b5.     ;
     rs. w0  (b3.)   ;   save clock;
     rl. w1  b3.     ;
     rl. w0  b4.     ;   if date not on
     rl. w2  b15.    ;   first segm
     se  w2  0       ;   then
     rs  w0  x1-2    ;   save date;

     rl. w0  b14.    ;
     ba. w0  1       ;
     rs. w0  (b16.)  ;
     am      -1000   ;
     al. w1  h20.+1000;
     am      -1000
     jl. w3  h23.+1000;   outblock(1);
     jl.     (b6.)   ;   return;
e.
\f


; ta 76.07.19                                correct, page ...9...



f8:

; get decimal time

;          entry      exit
;  w0        -        isodate
;  w1        -        clock
;  w2        -        unchanged
;  w3      return     destroyed

b. c11 w.
     ds. w3  c11.      ;   save w2, w3
     jd      1<11+36   ;   w0w1:=get clock
     nd  w1  3         ;   float
     fd. w1  c8.       ;   div by 10000
     bl  w3  3         ;
     ad  w1  x3-47     ;   normalize
     wd. w1  c6.       ;   day:=sec//86400;
     al  w3  0         ;   w0w3:=secs:=secs mod 86400;
     wd. w0  c0.       ;   w0w3:=minutes:=secs//60;
     ld  w3  24        ;   w2:=seconds:=secs mod 60;
     wd. w0  c0.       ;   w0:=hour:=minutes//60;
     rs. w3  c9.       ;   c9:=minutes:=minutes mod 60;
     wm. w0  c2.       ;
     wa. w0  c9.       ;
     wm. w0  c2.       ;
     wa  w0  4         ;   c9:=clock:=(hour*100+minutes)
     rs. w0  c9.       ;       *100+seconds;
     ld  w1  26        ;   year:=(day*4
     wa. w0  c7.       ;   +99111)
     al  w3  0         ;   //1461;
     wd. w0  c4.       ;
     as  w3  -2        ;   day:=day*4+99111 mod 1461//4;
     wm. w3  c1.       ;   month:=day*5
     al  w3  x3+461    ;   +461
     wd. w3  c3.       ;   //153;
     al  w1  x2+5      ;   day:=(day*5+461) mod 153 + 5;
     sl  w3  13        ;   if month>13 then
     al  w3  x3+88     ;   month:=month-twelvemonth+oneyear;
     wm. w3  c2.       ;   month:=month*100;
     rx  w2  0         ;   
     wd. w1  c1.       ;   day:=day//5;
     wa  w3  2         ;   date:=day+month;
     wm. w2  c5.       ;   year:=year*10000;
     wa  w3  4         ;   date:=date+year;
     al  w0  x3        ;   w0:=date;
     dl. w2  c10.      ;   w1:=clock; restore w2;
     jl. w3  (c11.)    ;   return
c0:  60                ;
c1:  5                 ;
c2:  100               ;
c3:  153               ;   days in the 5 month march-july
c4:  1461              ;   days in 4 years
c5:  10000             ;
c6:  86400             ;   seconds in 24 hours
c7:  99111             ;   to adjust for 1.1.68 being date 0
     10000<9           ;
c8:  4096+14-47        ;   10000*2**(-47) as float. number
c9:  0                 ;   work for clock
c10: 0                 ;   saved w2
c11: 0                 ;   saved w3
e.
m.rc 1978.03.07 correct
\f



g2=k-h55
g0:g1: (:g2+511:)>9   ; segm
        0, r.4        ; doc
        s2            ; date
        0,0           ; fil, block
        2<12+4        ; contents.entry
        g2            ; loadlength
d.
p.<:insertproc:>
e.
m. rc 20.11.73, correct
e.
\f


▶EOF◀