|
|
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: 4608 (0x1200)
Types: TextFile
Names: »tdiags«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
└─⟦b2ec5d50f⟧
└─⟦09b4e9619⟧ »thcømat«
└─⟦this⟧
(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◀