|
|
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: 11520 (0x2d00)
Types: TextFile
Names: »uti35«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
└─⟦b2ec5d50f⟧
└─⟦f8e4b63af⟧ »trcfput«
└─⟦this⟧
; ta 1977.08. label, page ...1...
s. a5,b0,c27,d0,e12,f4,g2
w.
d.
p.<:fpnames:>
l.
k=h55
d0=56 ; buffer length for label
al w1 x3+2 ; save prog name addr
rs. w1 c6. ;
se w3 x2 ; if left hand side then
jl. e1. ; alarm(<:call:>);
al w3 x3+10 ;
rs. w3 c7. ; save param pointer;
al. w1 h19. ; w1:=addr(cur prog zone);
jl. w3 h79. ; terminate zone;
al. w3 c15. ; first shared(cur prog zone):=
rs. w3 h80.+2 ; addr of buffer start;
al w3 x3-1 ; base buf(cur prog zone):=
rs w3 x1+h0 ; first of buf-1;
al w3 x3+d0 ; last buf(cur prog zone):=
rs w3 x1+h0+2 ; base buf+label length;
rl. w3 c7. ;
bl w2 x3 ; if endparam then
sh w2 3 ; then alarm(<:param missing:>);
jl. e11. ;
bl w2 x3+1 ;
se w2 10 ; if integer then
jl. e3. ; alarm(<:param:>);
rl w1 x3+4 ; if more then 3 char param
se w1 0 ; then
jl. a1. ; goto maybe nrze;
rl w3 x3+2 ;
rl. w2 c24. ; if <:mto:> then
sn. w3 (c20.) ; goto found;
jl. a5. ;
rl. w2 c26. ; if <:nrz:> then
sn. w3 (c22.) ; goto found;
jl. a5. ;
rl. w2 c25. ; if <:mte:> then
sn. w3 (c21.) ; goto found
jl. a5. ; else
jl. a4. ; goto lookup modekind;
a1: se. w1 (c23.) ; maybe nrze:
jl. a4. ; if -,<:e:> then goto lookup;
rl w3 x3+2 ;
rl. w2 c27. ; if <:nrze:> then
sn. w3 (c22.) ; goto found;
jl. a5. ;
\f
; ta 1977.08.17 label, page ...2...
a4: rl. w3 c7. ; lookup modekind:
al. w1 h54. ; w1:=lookup area;
al w3 x3+2 ; w3:=name area;
jd 1<11+42 ; lookup(param1);
se w0 0 ; if not found then
jl. e5. ; alarm(<:unknown:>);
bz w2 x1+1 ;
se w2 18 ; if kind<>18 then
jl. e4. ; alarm(<:modekind:>);
bl w2 x1 ;
sh w2 -2041 ; if mode>6 or
sz w2 1 ; odd then
jl. e4. ; alarm(<:modekind:>);
rl w2 x1 ;
a5: rs. w2 c10. ; found: move modekind to filedescr.
rl. w3 c7. ;
al w3 x3+10 ; step param pointer;
rs. w3 c7. ;
bl w2 x3 ;
sh w2 3 ; if endparam then
jl. e11. ; alarm(<:param missing:>);
se w2 4 ; if point then
jl. e2. ; alarm(<:param:>);
bl w2 x3+1 ;
se w2 10 ; if integer then
jl. e3. ; alarm(<:param:>);
al. w1 h54. ; w1:=lookup area;
al w3 x3+2 ; w3:=name addr.
jd 1<11+42 ; lookup(param2);
se w0 0 ;
jl. a0. ; if found then
bz w2 x1+1 ; begin
se w2 18 ; if kind<>18 then
jl. e4. ; alarm(<:modekind:>);
bl w2 x1 ;
sh w2 -2041 ; if mode>6 or
sz w2 1 ; odd then
jl. e4. ; alarm(<:modekind:>);
al w3 x1+2 ; end;
a0: dl w1 x3+2 ;
ds. w1 c12. ; move tapename
dl w1 x3+6 ; to filedescriptor;
ds. w1 c14. ;
rl. w1 c11. ;
ls w1 -8 ;
ls w1 8 ;
se. w1 (c0.) ; if -,<:mt:> then
jl. e6. ; alarm(<:illegal tape:>);
al w0 0 ;
rl. w1 c13. ;
ls w1 8 ;
ld w1 8 ; if too short or too long
sn w1 0 ;
sn w0 0 ; then
jl. e6. ; alarm(<:illegal tape:>);
\f
; ta 1977.08.17 label, page ...3...
dl. w1 c12. ;
ld w1 16 ;
rl. w2 c13. ;
ls w2 -8 ;
wa w1 4 ;
ds. w1 c3. ; tapename:=mtname-<:mt:>
sz. w2 (c8.) ; if 2 last not digits then
jl. e6. ; alarm(<:illegal tape:>);
rl. w2 c12. ;
ls w2 8 ;
ls w2 -8 ;
sz. w2 (c8.) ; if 2 preceeding not digits then
jl. e6. ; alarm(<:illegal tape:>);
rl. w3 c7. ;
al w3 x3+10 ;
rs. w3 c7. ; step param pointer
bl w2 x3 ;
sh w2 3 ; if more parameters then
jl. a3. ; begin
se w2 4 ; if point then
jl. e2. ; alarm(<:param:>);
bl w2 x3+1 ;
se w2 10 ; if integer then
jl. e7. ; alarm(<:illegal access kind:>);
rl w0 x3+2 ;
rs. w0 c4. ; save param3
ls w0 -16 ;
sn w0 112 ; p
jl. a2. ;
sn w0 114 ; r
jl. a2. ;
se w0 119 ; w
jl. e7. ; if not p,w,r then
; alarm(<:illegal access kind:>);
a2: rl. w3 c7. ;
al w3 x3+10 ;
rs. w3 c7. ;
bl w2 x3 ; if endparam then
sh w2 3 ; alarm(<:project number missing:>);
jl. e8. ;
se w2 4 ; if point then
jl. e2. ; alarm(<:param:>);
bl w2 x3+1 ;
sn w2 10 ; if text then
jl. e9. ; alarm(<:illegal project number:>);
rl w2 x3+2 ;
sl. w2 (c9.) ; if proj.number>999999 then
jl. e9. ; alarm(<:illegal proj.number:>);
rs. w2 c5. ; save project number;
bl w2 x3+4 ;
sl w2 4 ; if more parameters then
jl. e10. ; alarm(<:too many parameters:>);
\f
; ta 1977.08.17 label, page ...4...
a3: al. w1 h19. ; cur prog zone
al. w2 c10. ; addr filedescriptor
jl. w3 h28. ; connect output;
se w0 0 ; if not connected then
jl. e12. ; alarm(<:connect:>);
rl w3 x1+h0+2 ;
rs. w3 h80.+4 ; last shared;
al. w0 c1. ;
jl. w3 h31. ; outtext(cur,<:VOL1:>);
al. w0 c2. ;
jl. w3 h31. ; outtext(cur,tapename,access);
al w0 -26 ;
al w2 32 ;
jl. w3 b0. ; outchar(sp,26);
rl. w0 c5. ; outinteger(<dddddd>,projectnumber);
jl. w3 h32. ;
48<12+6 ;
al w0 -37 ; outchar(sp,37);
al w2 32 ;
jl. w3 b0. ;
al w0 -3 ; outchar(94,4);
al w2 94 ;
jl. w3 b0. ;
al w2 94 ;
jl. w3 h34. ; close up;
jl. w3 h79. ; terminate zone
al w2 0 ; ok
jl. h7. ; goto fp;
; procedure outchar(char,repeat);
b0:
b. j2
w.
ds. w3 j2. ; save return
j0: sn w0 0 ; if repeat=0 then
jl. (j2.) ; return;
ba. w0 1 ; repeat:=repeat+1
rl. w2 j1. ; load char;
jl. w3 h26. ; outchar
jl. j0. ;
j1: 0 ; saved char;
j2: 0 ; saved return;
e.
e0: <:<10>***:> ;
e1: jl. w1 f1. , <:call<10><0>:>
e2: jl. w1 f2. , <: param<10>:>
e3: jl. w1 f3. , <: param<10>:>
e4: jl. w1 f3. , <: modekind error<10>:>
e5: jl. w1 f3. , <: unknown<10><0>:>
e6: jl. w1 f3. , <: illegal tapename<10><0>:>
e7: jl. w1 f3. , <: illegal access kind<10><0>:>
e8: jl. w1 f1. , <:project number missing<10><0>:>
e9: jl. w1 f3. , <: illegal project number<10><0>:>
e10: jl. w1 f1. , <:too many parameters<10><0>:>
e11: jl. w1 f1. , <:parameter missing<10><0>:>
e12: jl. w1 f1. , <:connect tape unsuccessful<10><0>:>
\f
; ta 1977.08.17 label, page ...5...
f0:
; procedure outalarmhead
b. j0
w.
rs. w3 j0. ; save return
al. w0 e0. ;
jl. w3 h31.-2 ; outtext(cur,<:***:>);
rl. w0 c6. ; outtext(programname);
jl. w3 h31. ;
al w2 44 ;
jl. w3 h26. ; outchar(comma);
al w2 32 ; outsp;
jl. w3 h26. ;
jl. (j0.) ; return
j0: 0 ; saved return
e.
f1:
b. j3
w.
rs. w1 j2. ; save text addr
jl. w3 f0. ; outalarmhead
rl. w0 j2. ;
jl. w3 h31. ; outtext(alarm);
jl. f4. ; goto alarmexit;
f2:
rs. w1 j2. ; save alarm text;
jl. w3 f0. ; outalarmhead;
rl. w2 c7. ; parampointer;
al w0 x2-8 ;
jl. w3 h31. ; outtext(preceeding param);
al w2 46 ;
jl. w3 h26. ; outpoint;
jl. j0. ;
f3:
rs. w1 j2. ; save alarm text
jl. w3 f0. ; outalarmhead;
j0: rl. w2 c7. ; parampointer;
bz w3 x2+1 ;
se w3 10 ;
jl. j1. ; if param=text then
al w0 x2+2 ; outtext(param)
jl. w3 h31. ; else
jl. j3. ;
j1: rl w0 x2+2 ; outinteger(param);
jl. w3 h32. ;
1 ;
j3: rl. w0 j2. ;
jl. w3 h31. ; outtext(alarm);
f4: al w2 1 ; not ok
am -1000 ;
jl. h7.+1000 ;
j2: 0 ;
e.
\f
; ta 1977.08.17 label, page ...6...
c0: <:mt:> ;
c1: <:VOL1:> ;
c2: 0 ; tapename
c3: 0 ; tapename
c4: 32<16 ; access
c5: 0 ; project number
c6: 0 ; program name addr
c7: 0 ; param pointer
c8: 64<8+64 ; mask
c9: 1000000 ; >projectnumber
; filedescriptor
c10: 0 ; modekind
c11: 0 ; docname
c12: 0 ; -
c13: 0 ; -
c14: 0 ; -
0,0,0,0,0 ; tail
c20: <:mto:> ;
c21: <:mte:> ;
c22: <:nrz:> ;
c23: <:e:> ;
c24: 1<23+0<12+18 ; mto
c25: 1<23+2<12+18 ; mte
c26: 1<23+4<12+18 ; nrz
c27: 1<23+6<12+18 ; nrze
c15: ; buffer start;
g2=k-h55 ; code length
g0:g1: (:g2+511:)>9 ; segments
0, r.4 ; docname
s2 ; date
0, 0 ; file, block
2<12+0 ; contents, entry
g2 ; loadlength
d.
p.<:insertproc:>
e.
\f
▶EOF◀