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

⟦9dfa792d3⟧ TextFile

    Length: 24576 (0x6000)
    Types: TextFile
    Names: »retlook3tx  «

Derivation

└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code
    └─⟦75ff9bef3⟧ 
        └─⟦this⟧ »retlook3tx  « 

TextFile

mode list.yes
lookup4tx=edit lookup3tx
; nye modekind abbrev.
; filters as search parameters
; nyt program delete
; base interval parameter til search og delete
; connect output : segm < 2 + key
;
l./cat adm 2/, r/adm 2/adm 2 ...0.../
l./lookup, search/, r/scope/delete, scope/
l./lookup search/, r/scope/delete scope/

l./...06/, r/rc 1976.05.25   / fgs 1988.08.04/
l./b9:/, 
l./ds  w1  x3+2/, d, i/
     am.     a50.          ;
     ds  w1      +2        ;   and save it in work name;
/, p1
l./ds  w1  x3+6/, d, i/
     am.     a50.          ;
     ds  w1      +6        ;   and save it in work name;
/, p1
l./jl.     b50./, i/
     al. w0  a50.          ;   w0 := addr (work name);
/, p1
l./al  w0  1<1+1/, r/1<1+1/1<2+0/

l./...08/, r/rc 76.05.25   / fgs 1988.08.02/
l./b15:/, l1, i/
     sh  w1 -2             ;   if scope illegal, in max then
     al  w1 -2             ;     scope := illegal, in std;
/, p-2

l./...10/, i#
\f


; fgs 1988.08.02             fp utility, system 3, cat adm 2 ...9a...

;procedure remove entry.
;
;removes the entry addressed by w2 
;and returns to link + 2 if removed, to link if not removed
;at return the link b16 is different from zero.
;
;w0                        destroyed
;w1                        unchanged
;w2    addr of entry       unchanged
;w3    link                destroyed
;
b. j20 w.

j0:  0                     ; saved w0

b66: ds. w3  b16.          ; entry: save link, entry;
     al  w3  x2+6          ;   w3 := entry.name;
     jd      1<11+48       ;   remove entry;
     sn  w0  0             ;   if removed then
     jl.     j6.           ;     goto link + 2;
     rs. w0  j0.           ;   save w0;
     jl. w3  b26.          ;   outtext(<:***<prog> <scope>:>,
     rl. w0  j0.           ;   restore w0;
     se  w0  2             ;   if catalog error, document not ready then
     jl.     j1.           ;   begin                        
     jl. w3  b43.          ;     outtext (<:bs device not ready<10>:>);
     jl.     j5.           ;   end else to link;
j1:  jl. w3  b33.          ;   outtext (<: :>);
     dl. w3  b16.          ;   restore entry;
     al  w0  x2+6          ;   name := entry.name;
     jl. w3  b30.          ;   outtext (name);
     rl. w0  j0.           ;   restore w0;
     se  w0  3             ;   if not found then
     jl.     j2.           ;   begin
     jl. w3  b37.          ;     outtext (<: unknown<10>:>);
     jl.     j5.           ;   end else
j2:  se  w0  4             ;   if entry protected then
     jl.     j3.           ;   begin
     jl. w3  b47.          ;     outtext (<: entry protected<10>:>);
     jl.     j5.           ;   end else
j3:  se  w0  5             ;   if used by another then
     jl.     j4.           ;   begin
     jl. w3  b46.          ;     outtext(<: entry in use<10>:>);
     jl.     j5.           ;   end else
j4:  jl. w3  b45.          ;   outtext (<: catalog error<10>:>);
j5:  jl.    (b16.)         ;   goto link;

j6:  am.    (b16.)         ; return to link + 2:
     jl     +2             ;

e.
#

l./...11/, r/rc 16.02.72   / fgs 1988.08.02/
l./-2/, r/-2/-4/, l1, i/
;   -2: illegal scope, interval contained in std, equals interval in scope
/, p1
l./b. j13/, r/j13/j14/

l./...12/, r/rc 11.02.72   / fgs 1988.08.02/
l./j4:/, i/

/
l./j13:/, l-1, d, i/
     al  w1  x1+1          ;   else
     sn. w0 (a12.)         ;   if int.low <> int in scope.low and
     se. w1 (a13.)         ;      int.up  <> int in scope.up then
     jl.     j11.          ;     goto inside max else
     jl.     j14.          ;     goto inside std, equals int in scope;

/, p1
l./j11:/, r/-2/-4/, i/
j14: am      2             ; inside std, equals int in scope
/, p1

l./...16/, r/82.11.24/88.07.10/
l./a102:/, l1, i/
a104:      0        ; addr of parameter after <scope>).<device>) in search
a105:      0        ; addr of catalog entry in filter algorithm  in search
/, p-2
l./a29:/, l1, i/
a30: 4<12+ 4        ; space,integer

a50: 0, r.8         ; work name used in output entry
/, p-1

l./...18/, i#
; dh 1987.05.06        fp system, system 3, cat adm 2  ...17a...




b. a20, b3, c1, d5 w.

;This algorithm enables search to filter the output of catalog entries
;found according to a given scope specification. The filter works on
;the entry name and the document name of an entry.
;
;Syntax (augments):
;------------------
;(             )1                    (        )*
;(<out file> = ) search <scope spec> (<filter>)
;(             )0                    (        )0
;
;                        (            )*
;<filter> ::= <substring>(.<substring>)
;                        (            )0
;
;                ( <generalized name> )
;<substring> ::= (      <name>        )
;                (<apostrophized name>)
;
;Function:
;---------
;   The main catalog is scanned, and a subset of it is listed with an
;output format as for lookup. If an outfile is specified, the list of
;catalog entries is printed on that file, otherwise current output is
;used.  Messages from search are always printed on current output.
;   If no filters are given, all entries from the main catalog accor-
;ding to the scope spec (see Scope specification) are listed, other-
;wise, the set of catalog entries is further delimited by means of
;filters (see Filter specification below).
;
;Filter specification:
;---------------------
;   A filter consists of one or more substrings concatenated by period.
;If a list of filters exists, an entry selected for listing will only
;be listed if either its name or its document name contain all the sub-
;strings of at least one of the filters. The order of the substrings 
;in a filter is irrellevant.
;   Thus, in a possible list of filters, you may consider space as "or"
;and period as "and", where the precedence of "and" and "or" is as in
;Algol.
\f


; dh 87.05.07        fp system, system 3, cat adm 2  ...17b...




;requirements:
;           w0       w1       w2       w3         a104       a105
;
;entry:    irr.     irr.     irr.    return   item after   catalog
;                                             scope spec    entry
;
;exit:    all registers and variables unchanged.
;
;         the procedure returns to return+0 in case of failure
;                           and to return+2 in case of success.
;


b27: ds. w3  b3.           ; save registers                               
     rs. w2  a105.         ; save addr entry;                             
     rl. w3  a104.         ;                                              
     el  w2  x3            ; if item after scope spec = end command       
     sh  w2  2             ;   then goto letitpass1;                      
     jl.     a11.          ;                                              
     ds. w1  b2.           ;                                              
                                                                          
     rl. w2  a105.         ; save addr entry;                             
     al  w2  x2+6          ; name in entry := entry name;                  
                                                                          
c1:  al  w3  x3+2          ; repeat <* entry- and document-name *>        
     ds. w3  d1.           ;  text part(item) := first item addr + 2;     
     al  w3  10            ;  x := 10;                                    
                           ;  string := name in entry;                    
                                                                          
a0:  rs. w3  d2.           ;                                              
     al  w1  x3            ;  repeat                                      
     jl. w3  c0.           ;   namelength := x;                           
     rl. w3  d2.           ;   l := takechar(x, string);                  
     al  w3  x3-1          ;   x := namelength - 1;                       
     sn  w1  0             ;  until l <> 0;                               
     jl.     a0.           ;                                              
                                                                          
a1:                        ;  repeat <* all possibillities of filter *>   
\f


; dh 87.05.05        fp system, system 3, cat adm 2  ...17c...




;a1:                       ;   repeat <* items in a filter *>                  
     rl. w0  d2.           ;    j := namelength; <* charcount in an entry *>   
                                                                               
a2:  rs. w0  d3.           ;    repeat <* stepping backward through the        
                           ;              name in the entry *>                 
     al  w3  0             ;                                                   
     jl.     a4.           ;     for i := 0,                                   
a3:  rl. w3  d4.           ;                <*i controls pos in an item *>     
     al  w3  x3+1          ;              i+1 while l = k do                   
     se. w1 (d5.)          ;      begin                                        
     jl.     a5.           ;                                                   
a4:  rs. w3  d4.           ;                                                   
     am.    (d3.)          ;       k := takechar                               
     al  w1  x3            ;               (j+i, name in entry);               
     rl. w2  d0.           ;                                                   
     jl. w3  c0.           ;                                                   
     rs. w1  d5.           ;                                                   
     rl. w1  d4.           ;       l := takechar                               
     rl. w2  d1.           ;               (i, item);                          
     jl. w3  c0.           ;                                                   
     sn  w1  0             ;       if l = 0                                    
     jl.     a6.           ;         then goto found;                          
     jl.     a3.           ;      end while loop;                              
                                                                               
a5:  rl. w0  d3.           ;                                                   
     es. w0  1             ;     j := j - 1;                                   
     sl  w0  0             ;    until j < 0 <* end backward stepping *>;       
     jl.     a2.           ;    comment when the loop is exhausted, l<>0;      
                                                                               
a6:                        ;found:                                             
     ba  w2  x2-1          ;    nopass := l <> 0; <* variable kept in w1 *>    
     rs. w2  d1.           ;    item := next item;                             
     el  w0  x2-2          ;    sep := item separator;                         
                                                                               
     se  w0  8             ;   until sep    (item) <> '.'                      
     jl.     a7.           ;                                                   
     el  w0  x2-1          ;      or length (item) = 4 <*integer*>             
     sh  w0  4             ; 
     jl.     a12.          ;      or nopass <* end items in a filter *>;       
     al  w0  8             ;
     sn  w1  0             ;   comment hereafter either all substrings in a    
     jl.     a1.           ;       filter have suceeded, or a filter failed;   
\f


; dh 87.05.07        fp system, system 3, cat adm 2  ...17d...




a7:  sn  w1  0             ;   if -,nopass <* i.e. a filter suceeded *>
     jl.     a10.          ;     then goto letitpass;                  
                                                                       
a8:  se  w0  8             ;   comment a filter failed, therfore: ;    
     jl.     a9.           ;   while sep = '.' do                      
a12: ba  w2  x2-1          ;    begin                                  
     el  w0  x2-2          ;     item := next item;  sep := item separator;
     jl.     a8.           ;    end;                                       
a9:  rs. w2  d1.           ;   comment we may now examine the next filter; 
                                                                           
     sl  w0  4             ;  until sep = end command;                     
     jl.     a1.           ;  comment all filters have failed on this name;
                                                                           
     rl. w2  a105.         ;  name in entry := document name;              
     al  w2  x2+16         ;  item := item after scope spec;               
     rl. w3  a104.         ;                                               
                                                                           
     se. w2 (d0.)          ; until document name tested once before;       
     jl.     c1.           ; comment the names have been tested with all fltrs;
                                                                           
     dl. w1  b2.           ;failure:                                       
     dl. w3  b3.           ; restore registers;                            
     jl      x3            ; return failure;                               
                                                                           
a10: dl. w1  b2.           ;letitpass:                                     
a11: dl. w3  b3.           ;letitpass1: restore registers;                 
     jl      x3+2          ; return success;                               
\f


; dh 87.05.05        fp system, system 3, cat adm 2  ...17e...




c0:                        ;subprocedure takechar(pos, string);               
                           ; call: w0: -; w1:  pos; w2: string; w3: return    
     al  w0  0             ; exit: w0: -; w1: char; w2:   unch; w3:   unch    
     wd. w1  b0.           ;  addr := pos // 3;                               
     am      x1            ;  subpos := pos mod 3;                            
     am      x1            ;                                                  
     rl  w1  x2            ;  substring := word(2*addr + string);             
     ls  w0  3             ;                                                  
     am     (0)            ;  char := substring shift(subpos*8 -16)           
     ls  w1  -16           ;                    extract 7;                    
     la. w1  b1.           ;                                                  
     jl      x3            ; return;                                          
                                                                              
                                                                              
                                                                              
b0:       3                ; constant 3 <* chars per word *>                  
b1:     8.177              ; constant: last 7 bits;                           
                                                                              
                                                                              
0, b2: 0, 0, b3: 0         ; room for registers;                              
                                                                              
                                                                              
d0:       0                ; addr of name in an entry;                        
d1:       0                ; addr of text part of an item;                    
d2:       0                ; namelength, i.e. length of name part in an entry 
d3:       0                ; var: j <* stepping through name in an entry *>   
d4:       0                ; var: i <* stepping through an item *>            
d5:       0                ; var: k <* char from an entry *>                  
                                                                              
e.                         ; end block                                        

#

l./...18/, l./a62:/, l1, i/

i0:  jl.     b0.           ; stepping stone:
i2:  jl.     b2.           ; -
i3:  jl.     b3.           ; -
i4:  jl.     b4.           ; -
/, p-4

l./...19/, r/84.06.18/88.05.06/
l./<:mtlh:>/, d./<:mthl:>/, i#
    <:mt62:>   ,  1<23+  0<12+18; mt, low  speed, 6250 bpi    , odd  parity
    <:mte:>,0  ,  1<23+  2<12+18;   , -    -    , high density, even -
    <:mt16:>   ,  1<23+  4<12+18;   , -    -    , 1600 bpi    , odd  -
    <:nrze:>   ,  1<23+  6<12+18;   , -    -    , low  density, even -
    <:mt32:>   ,  1<23+  8<12+18;   , -    -    , 3200 bpi    , odd  -
    <:mt08:>   ,  1<23+ 12<12+18;   , -    -    ,  800 bpi    , -    -
    <:mthh:>   ,  1<23+128<12+18;   , high -    , high density, odd  -
    <:mthl:>   ,  1<23+132<12+18;   , -    -    , low  -      , -    -
#, p1

l./...22/, r/rc 78.04.11   / fgs 1988.07.08/
l./c3:/, l./jl. w3  b15./, i/
     jl. w3  b27.          ;   test filters;
     jl.     c4.           ;   if failure then goto step entry;
/, p-2

l./b64:/, i#
\f


; fgs 1988.12.19             fp utility, system 3, cat adm 2 ...23...

;the program delete

b. c6 w.

g7:  jl. w1  b0.           ; start: initialize program;
     jl. w3  b8.           ;   if left side then connect;
     rs. w1  a16.          ;   save output zone address;
     jl. w3  b22.          ;   read scope parameter;
     sn  w3  8             ;   if scope = system then
     jl.     b14.          ;     goto scope error;
     sl  w3  10            ;   if scope=own
     jl.     c5.           ;   then goto change criteria;
c1:  jl. w3  b17.          ;   prepare cat. scan;
     jl. w3  b19.          ;   start cat. scan;
c2:  jl. w3  b23.          ; check entry: find entry scope;
c3:  se. w1 (a14.)         ;   if entry(scope) <> actual
     jl.     c4.           ;   then goto step entry;
     jl. w3  b24.          ;   test bs device spec.;
     jl. w3  b27.          ;   test filters;
     jl.     c4.           ;   if failure then goto step entry;
     jl. w3  b15.          ; ok: output entry;
     dl  w1  x2+4          ;   interval := entry.interval;
     al. w3  a15.          ;   w3 := addr <::>; <*own process*>
     jd      1<11+72       ;   set catbase;
     jl. w3  b66.          ;   remove entry;
     jl.     c0.           ;   if not removed then goto reset catbase;

c0:  jl. w3  i3.           ; reset catbase;

c4:  jl. w3  b21.          ; step entry: next entry;
     jl.     c2.           ;  more in buf: goto check entry;
     jl. w3  b20.          ;  buf empty: input cat. segments;
     jl.     c2.           ;  more in cat: goto check entry;
     rl. w0  b16.          ; end search:
     se  w0  0             ;   if some output
     jl.     b2.           ;   then goto end program;
     jl. w3  b26.          ; error text:
     jl. w3  b40.          ;   outtext(***<prog.name> <scope>
     jl.     b2.           ;    no entries found); goto end prog;

c5:  rl. w0  c6.           ; change criteria:
     rs. w0  c3.           ;   change crit. to:  if entry
     jl.     c1.           ;      not visible ;
c6:  sl  w1  8             ; new instruction

e.   ; end program delete

\f


; fgs 1988.07.08             fp utility, system 3, cat adm 2 ...24...


#
l1,
l./...22a/, r/22a/25/
l./...22b/, r/22b/26/
l./...22c/, r/22c/27/
l./...23/ , r/23/28/
l./a95=g4/, l1, i/

 jl.  b11.  ; stepping stone for b11:
b11 = k - 2 ;
 jl.  b14.  ; stepping stone for b14:
b14 = k - 2 ;
 jl.  b26.  ; stepping stone for b26:
b26 = k - 2 ;
/, p-3

l./...24/, r/rc 28.02.72   / fgs 1988.07.10/, r/24/29/
l./;a12-a13/, 
l-1, r/temp/basepair    temp/
l1, r/stand/base        stand/
l1, r/0/-2           0/
l./b. j12/, r/j12/j20/
l./b22:/, l2, r/b2./i2./
l2, i/
     al  w3  x2+10         ; 
     rs. w3  a104.         ;   save addr param after <scope>;
/, p-2
l./jl.     b14./, r/b14./j13./, r/scope error/maybe interval/
l./ls  w3  -2/, i/
\f


; fgs 1988.07.08             fp utility, system 3, cat adm 2 ...30...


/
l./j5:/, d, i/

j5:  rl. w0 (a104.)        ; look for bs device spec:
/, p1

l./...25/, r/rc 10.02.72   / fgs 1988.07.10/, r/25/31/
l./sl. w0 (a29.)/, i/
     al  w3  x2+10         ;
     rs. w3  a104.         ;   save addr param after <scope>.<device>;
/, p-2

l./...26/, r/rc 15.02.72   / fgs 1988.07.10/, r/26/32/
l./jl.     b2./, r/b2./i2./
l./e.  ;end procedure read scope parameter/, i/

j13: se. w0 (a30.)         ;   if del, kind <> space, integer then
     jl.     b14.          ;     goto scope error;
     rl  w1  x2+2          ;   int in scope.low := lower :=
     rs. w1  a12.          ;     param;
     jl. w3  b11.          ;   next param;
     jl.     i2.           ;   if end list then end program;
     se. w0 (a29.)         ;   if del, kind <> point, integer then
     jl.     b14.          ;     goto scope error;
     rl  w1  x2+2          ;   int in scope.up  := upper :=
     rs. w1  a13.          ;     param;
     al  w3  x2+4          ;   
     rs. w3  a104.         ;   save addr param after <interval>;
     rl. w0  a12.          ; 
     al  w1  x1+1          ; 
     sl  w0  x1            ;   if lower > upper then
     jl.     b14.          ;     goto scope error;
     sh. w0 (a6.)          ;   if lower > std.lower
     sh. w1 (a7.)          ;   or upper < std.upper then
     jl.     j14.          ;     goto check contained in std;
     jl.     b14.          ;   else
                           ;     goto scope error;
j14: al  w1  x1-2          ; check contained in std:
     sl. w0 (a6.)          ;   if lower < std.lower
     sl. w1 (a7.)          ;   or upper > std.upper then
     jl.     b14.          ;     goto scope error;
     al  w3 -2             ; 
     rs. w3  a14.          ;   save value;
     jl.     j5.           ;   goto look for bs dev. spec;

/
l./;call error:/, i/
\f


; fgs 1988.07.08             fp utility, system 3, cat adm 2 ...33...


/
l./jl.     b2./, r/b2./i2./
l./jl.     b2./, r/b2./i2./

l./ ...27/, r/rc 78.04.10   / fgs 1988.07.10/, r/27/34/
l./jl. w1  b0/, r/b0./i0./
l./jl.     b2./, r/b2./i2./
l./jl. w3  b4./, r/b4./i4./
l./c3:/, d./jl.     c0./, i/

c3:  jl. w3  b66.          ;   remove entry;
     jl.     c0.           ;   if not removed then goto set catbase;
     jl.     c1.           ;   if     removed then goto next clear ;

/, p-3

l./...28/, r/82.11.24/88.07.10/, r/28/35/
l./jl. w3  b3./, r/b3/i3/
l./jl. w3  b4./, r/b4./i4./

l./...29/, r/29/36/
l./sl  w3  8/, r/if/or/, i/
     sl  w3  0             ;   if scope < 0 
/, p1
l./c5:/, d, i/

c5:  am          -2000     ; next scope:
     jl. w3  b11.+2000     ;   next param;
/, p-3

l./...30/, r/30/37/
l./...31/, r/87.03.13/88.07.10/, r/31/38/
l./jl. w3  b3./, r/b3./i3./
l./jl. w3  b3./, r/b3./i3./
l./am      -2048/, d
r/b3./i3./, r/+2048/     /

l./...32/, r/rc 79.08.30   / fgs 1988.07.10/, r/32/39/
l./am      -2048/, d
r/b3./i3./, r/+2048/     /

l./cat adm 2 tails/, l./rc 19/, r/87.03.13/88.12.19/, r/m.rc/m. rc/
l./m. look/, r/m. look/m. look/, r/clear/clear,delete/
l./g0:/, l-1, d./<:insertproc/, i/

w.
g0:    (:g2+511:) > 9      ; no of segments
        0,r.4              ;
        s2                 ; month year
        0,r.2              ;
        2<12+g4-g3         ; entry lookup
        g2                 ;

        1<23+4             ; kind = bs
        0,r.4              ;
        s2                 ; month year
        0,r.2              ;
        2<12+g5-g3         ; entry search
        g2                 ;

        1<23+4             ; kind = bs
        0,r.4              ;
        s2                 ; month year
        0,r.2              ;
        2<12+g6-g3         ; entry clear
        g2                 ;

        1<23+4             ; kind = bs
        0,r.4              ;
        s2                 ; month year
        0,r.2              ;
        2<12+g7-g3         ; entry delete
        g2                 ;

g1:     1<23+4             ; kind = bs
        0,r.4              ;
        s2                 ; month year
        0,r.2              ;
        2<12+g10-g3        ; entry scope
        g2                 ;

d.
p.<:insertproc:>

/
f
end
▶EOF◀