|
|
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: 5376 (0x1500)
Types: TextFile
Names: »uti24«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
└─⟦b2ec5d50f⟧
└─⟦f8e4b63af⟧ »trcfput«
└─⟦this⟧
; fp-program -- backfile --
; the program backs the document 1 file
; -ie: if the file number in the entry tail is 0 then
; ok.no is set
; if the file number is positive then
; it is decremented by 1
; and
; if it thereby becomes 0 then
; the warning bit is set
; the program is translated like
; (backfile=slang text entry.no
; backfile)
b. g1, f6 w. ; for insertproc
d.
p.<:fpnames:>
l.
k=h55 ; initialize the k-value
s.a10,b6,c30 ; a: local storage, ie variables and arrays
w. ; b: textstrings
; c: labels
a1: 0 ; contains local warning- and ok-bits
a4: 0 ; pointer to the next parameter
; program start
sn w2 x3 ; compare -current command- to -program name-
jl. c0. ; in order to see whether a left hand side exists
al. w2 b1. ; and causes the program to stop
jl. w3 c10. ; or the program may continue
jl. c20.
c0: ba w3 x3+1 ; change the pointer (w3)
rs. w3 a4. ; from -program name- to -first parameter-
; and store it in a4
c1: ; next_parameter:
rl. w2 a4. ; fetch the next parameter from the stack
rs. w2 c8. ; store it for eventually error-printout
rl w0 4
ba w0 x2+1 ; and
rs. w0 a4. ; store the address of the following parameter
bl w0 x2 ; -- test the separator
sn w0 4 ; if separator <> 4 then
jl. c3. ;
sh w0 4 ; if separator < 4 then
jl. c20. ; stop
; else
c2: al. w2 b2. ; no_name:
se w1 0 ; if first part of erroneous parameter then
jl. w3 c10. ; write: ***backfile <name> param
al w1 0 ; -- and remember
; else
jl. c1. ; go to next_parameter ;
c3: bl w0 x2+1 ; if item_length <> 10 then
se w0 10 ;
jl. c2. ; go to no_name;
bl. w0 (a4.) ; if the following separator > 4 then
sl w0 5 ;
jl. c2. ; go to no_name;
al. w1 a3. ; get the tail address
al w3 x2+2 ; increment -name pointer- by 2
jd 1<11+42; look up entry
sh w0 0 ; if error then
jl. c4.
al. w2 b3.
jl. w3 c10. ; write: ***backfile <name> unknown
jl. c1. ; go to next_parameter ;
c4: rl. w2 a0. ; get the file number
se w2 0 ; if file_number = 0 then
jl. c5. ;
al w0 1 ; set the ok.no bit
lo. w0 a1. ;
rs. w0 a1. ;
jl. c1. ; go to next_parameter ;
c5: ; decrement the file number
al w2 x2-1 ; and store the new number in the entry tail
rs. w2 a0.
se w2 0 ; if the new file number = 0 then
jl. c6. ;
al w0 2
lo. w0 a1. ; set the warning bit ;
rs. w0 a1. ;
c6: ; -- the file number is now updated
jd 1<11+44; change entry
sh w0 0 ; if no error then
jl. c1. ; go to next_parameter
al. w2 b4. ; else
jl. w3 c10. ; write: ***backfile <name> protected
jl. c1. ; go to next_parameter ;
; -- error routine
c8: 0 ; address of current parameter
c9: 0 ; return address
c10: rs. w3 c9. ; store return address
al. w0 b0.
jl. w3 h31.-2 ; write: ***backfile
rl. w1 c8. ; if the current parameter is a name then
al w0 x1+2
bl w1 x1+1
sn w1 10
jl. w3 h31.-2 ; write: <the erroneous parameter> ;
rl w0 4 ; get address of error message from w2
jl. w3 h31.-2 ; write: <error message>
al w0 1
lo. w0 a1. ; set the ok.no bit
rs. w0 a1.
jl. (c9.) ; return jump
c20: ; -- a separator < 4 is encountered in the
; -- parameterlist
rl. w2 a1. ; return to fp and set information
jl. h7. ; about program execution in w2
b0: <:***backfile <0>:>
b1: <:call<10><0>:>
b2: <: param<10><0>:>
b3: <: unknown<10><0>:>
b4: <: protected<10><0>:>
a3: 0, r.10 ; storage for the entry tail
a0=a3+12
m.rc 07.02.1974 backfile
f1=k-h55 ; length
f2=4 ; entry
g0:g1: (:f1+511:)>9 ; segm
0, r.4
s2 ; date
0,0 ; file, block
2<12+f2 ; contents, entry
f1 ; length
d.
p.<:insertproc:>
l.
e.
▶EOF◀