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

⟦0aae64b5c⟧ TextFile

    Length: 4608 (0x1200)
    Types: TextFile
    Names: »tdiags«

Derivation

└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
    └─⟦b2ec5d50f⟧ 
        └─⟦09b4e9619⟧ »thcømat« 
            └─⟦this⟧ 

TextFile

(clear diag
diag=set 1
if 15.no
(diag=slangx entry.no
diag)
if 15.yes
(diag=slangx entry.no list.yes
diag)
permanent diag.5)

b. h99                   ;
p.    <:fpnamesx:>       ;

b. g1, e2                ;
k=0                      ;

s. g2, j42, b20          ;
h.                       ;
g0=0                     ;
e2:                      ;
g1:   g2   , g2          ;

j1:   g0+ 1, 0           ; **real
j3:   g0+ 3, 0           ; reserve
j4:   g0+ 4, 0           ; take expression
j6:   g0+ 6, 0           ; end register expression
j13:  g0+13, 0           ; last used
j18:  g0+18, 0           ; zone alarm
j29:  g0+29, 0           ; param alarm
j30:  g0+30, 0           ; saved stack ref, saved w3

g2=-g1.-2                ;
w.                       ;
e0:   g0                 ;
      0                  ;
      0, 0               ;
p.    <:version:>        ;

; integer procedure take positive parameter;
;   4 bytes must have been reserved in stack before entry.
;           call          return
;   w0:                   ?
;   w1:     formal1addr   parameter
;   w2:     stackref      stackref
;   w3:     link          ?
;   the parameter is also stored in formal1.

b. a5, w.                ; begin
b0:   rs  w1  x2-2       ;   save formal1addr;
      al. w0     a1.     ;
      ws  w3     0       ;   catculate return;
      rs  w3  x2-4       ;   save link;
      dl  w1  x1+2       ;   take formals;
      sz  w0     16      ;   if expression then
      jl.        a0.     ;   begin
      jl. w3 (   j4.)    ;      take expression;
      ds. w3 (   j30.)   ;      save stack reference
                         ;   end;
a0:   dl  w1  x1         ;   take value;
      rl  w3 (x2-2)      ;   w3:= formal1;
      sz  w3     1       ;   if real
      cf  w1     0       ;      then round;
      sh  w1     0       ;   if not positive
      jl. w3 (   j29.)   ;      then param alarm;
      rs  w1 (x2-2)      ;   save param in formal1;
      am     (x2-4)      ;
a1:   jl.        0       ;   return
e.                       ; end;

; procedure take real array and check index;
;   4 bytes must have been reserved in stack before entry.
;           call          return
;   w0:     formal1addr   ?
;   w1:     index         index
;   w2:     stackref      stackref
;   w3:     link          ?
;   the address of the first element is stored in formal1.

b. a5, w.                ; begin
b1:   rx  w1     0       ;
      ds  w0  x2-2       ;   save index; save link;
      rl  w3  x1+2       ;
      ba  w3  x1         ;   w3:= absolute dope address;
      al  w0     4       ;
      wa  w0  x3         ;   w0:= lower index;
      wa  w0 (x1+2)      ;   w0:= address of first element;
      rs  w0  x1         ;   formal1:= w0;
      rl  w0  x3-2       ;   w0:= (upper index
      ws  w0  x3         ;        -lower index+4)
      as  w0    -2       ;        //4;
      rl  w1  x2-2       ;   w1:= index;
      sl  w0  x1         ;   if subscriptrange+1 >= index
      jl     (x2-4)      ;      then return
      jl. w3 (   j18.)   ;   else index alarm
e.                       ; end;

; real procedure multiply accumulating;
;    performs the calculation
;    s:= s+m1*m2;
;
;           call          return
;   w0:     s-addr        
;   w1:     m1-addr       result
;   w2:     m2-addr       m2-addr
;   w3:     link          link

b. d0, w.                ; begin
d0:   0                  ;

b2:   rs. w0     d0.     ;
      dl  w1  x1         ;
      fm  w1  x2         ;
      fa. w1 (   d0.)    ;
      ds. w1 (   d0.)    ;
      jl      x3         ;
e.                       ; end;
b. a30,f10,g10,w.        ; begin
g0:   0                  ;  integer i;
g1:   0                  ;  integer j;
g2:   0                  ;  integer k;
g3:   0                  ;  integer l;
g4:   0                  ;  integer m;
f.
f0:   0                  ;  real f;
f1:   0                  ;  real g;
f2:   0                  ;  real h;
f3:   0                  ;  real hh;
f4:   0                  ;  real b;
f5:   0                  ;  real c;
f6:   0                  ;  real p;
f7:   0                  ;  real r;
f8:   0                  ;  real s;
w.
e.
....
      rl  w0     >n<      ;
      rs. w0     g0.     ;  for i:= n step -1 until 2 do
      sh  w0     1        ;
      jl.        zz       ;
▶EOF◀