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

⟦f9ae5bd69⟧ TextFile

    Length: 5376 (0x1500)
    Types: TextFile
    Names: »uti24«

Derivation

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

TextFile


          ; 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◀