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

⟦6b6055c1a⟧ TextFile

    Length: 9216 (0x2400)
    Types: TextFile
    Names: »clean3tx    «

Derivation

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

TextFile


\f


;rc 25.05.73                fp utility, system 3, clean ...1...
; the program is translated like
;       (clean=slang text entry.no
;        clean)
 
b. g1, f6 w.     ;for insertproc
d.
p.<:fpnames:>
l.

; the program removes all catalog entries with catalog base with-
; in the specified limits.   it is called as follows
;
;      clean <s> <lower limit> <s> <upper limit>
;

s. a100,b30,c10,d10 w.
k=h55
     a11,0                 ; program length,not used
     jl.     b1.           ; goto start;

c1:  <:***clean call<10><0>:>
c2:  <:***clean param<10><0>:>
c3:  <:***clean low>upp<10><0>:>
c4:  <:***clean limits off stand base<10><0>:>
c5:  <:***clean area procs missing<10><0>:>
c6:  <:***clean process too small<10><0>:>

d6:  am      c6-c5         ; error6;
d5:  am      c5-c4         ; error5;
d4:  am      c4-c3         ; error4;
d3:  am      c3-c2         ; error3;
d2:  am      c2-c1         ; error2;
d1:  al. w0  c1.           ; error1;
     jl. w3  h31.-2        ; outtext(error text);
     al  w2  1             ;
     jl.     h7.           ;   goto end program;

;procedure next entry
;
;forwards the entry address in w2 to the next entry in the
;buffer.  if end buffer is met the return is to link + 2
;else to link.
;
;w0                          unchanged
;w1                          unchanged
;w2        entry address     new entry address
;w3        link              unchanged

b21: al  w2  x2+34         ;   entry.adr:=entry.adr+entry.length;
     sh. w2 (a73.)         ;   if entry <= last.seg
     jl      x3            ;   then return;
     al  w2  x2+511        ; step segment: skip last word;
     rs. w2  a73.          ;   last on segment :=
     al  w2  x2-509        ;   entry address + 509 ;
     sl. w2 (a72.)         ;   if buf exhausted
     jl      x3+2          ;   then goto link+2
     jl      x3            ;   else goto link;
\f


;rc 25.05.73                fp utility, system 3,clean ...2...


;procedure input catalog segments
;
;inputs the next segments of the catalog to the buffer
;if any segments are left.  if some segments are read
;the return is to link - if no segments are read the
;return is to link+2.
;
b. j3 w.
b20: rl. w2  a71.          ;   if segments left
     sh  w2  0             ;   is <= 0
     jl      x3+2          ;   then goto link+2;
     rs. w3  j1.           ;   save link;
     al. w3  a74.          ; start transport:
j2:  al. w1  a75.          ;
     jd      1<11+16       ;   send message
     al. w1  a79.          ; check transport:
     jd      1<11+18       ;   wait answer;
     sn  w0  2             ;   if reserved
     jl.     j2.           ;   then repeat;
     bz  w3  x1            ;
     sn  w0  1             ;   if result <> norm.answ.
     se  w3  0             ;   or any status bit <> 0
     jl.     j3.           ;   then goto catalog error;
     rl. w2  a71.          ;
     rl  w3  x1+2          ;
     ls  w3  -9            ;   seg.trans := bytes // 512 ;
     rl. w0  a78.          ;   segment no :=
     wa  w0  6             ;   segment no
     sl. w0 (a70.)         ;    + seg.transf
     ws. w0  a70.          ;   modulo length of
     rs. w0  a78.          ;   catalog;
     ws  w2  6             ;   seg.left :=
     rs. w2  a71.          ;   seg.left - seg.trans ;
     sh  w2  -1            ;   if seg.left < 0
     wa  w3  4             ;   seg.trans:=seg.trans+seg.left ;
     ls  w3  9             ;   buf.length:=seg.trans*512 ;
     rl. w2  a76.          ;   entry.adr:=first.buf;
     al  w0  x2+509        ;   last.in.seg:=first.buf+509;
     wa  w3  4             ;   last.in.buf:=first.in.buf
     ds. w0  a73.          ;    + buf.length;
     jl.    (j1.)          ;   return;

j1:  0                     ; link


;catalog error:

j3:  al  w2  1             ;
     ls  w2 (0)            ;
     lo  w2  x1            ;   w2:=log.status;
     al. w1  a74.          ;   w1:=addr of <:catalog:> ;
     jl.     h7.           ;   goto end program;

e.
\f


;rc 25.05.73                fp utility, system 3, clean ...3...


;working locations:

a1:  4<12+4                ;   fp item space,integer
a2:  0                     ;   limit low
a3:  0                     ;   limit upp
a4:  0                     ;   catalog base at entry
a5:  0                     ;   --
a7:  0                     ;   name of entry
a8:  0,0                   ;   --
a9:  0                     ;   --
a10: 0                     ;   zero;

;the next are used in catalog scan:

a70:       0        ; catalog length
a71:       0        ; segments left
a72:       0        ; last in buffer
a73:       0        ; last on segment
a74: <:catalog:>,0,0
a75: 3<12           ; message : op = input
a76:       0        ; first
a77:       0        ; last
a78:       0        ; segment
a79:   0,r.8        ; answer       

\f


;fgs 1985.03.14             fp utility, system 3, clean ...4...


b1:  bl  w0  x3            ; start:
     sn  w0  6             ;   if left hand side in call
     jl.     d1.           ;   then goto error1;
     ba  w3  x3+1          ; lower limit: step poinyet;
     rl  w0  x3            ;
     se. w0 (a1.)          ;   if item <> sp,integer
     jl.     d2.           ;   then goto error2;
     rl  w0  x3+2          ;   save lower limit;
     rs. w0  a2.           ;
     ba  w3  x3+1          ; upperlimit: step pointer;
     rl  w0  x3            ;   if item <> sp,int
     se. w0 (a1.)          ;   then
     jl.     d2.           ;   goto error2;
     rl  w0  x3+2          ;   save upper limit;
     rs. w0  a3.           ; test limits:
     sl. w0 (a2.)          ;   if upper < lower
     jl.     b2.           ;   then goto
     jl.     d3.           ;   error3;
b2:  am.    (h16.)         ;   save current catalog base;
     dl  w1  70            ;
     ds. w1  a5.           ;
     am.    (h16.)         ;
     dl  w1  78            ;
     al  w1  x1+1          ;
     sh. w0 (a2.)          ;   if limit.low < stand.low
     sh. w1 (a3.)          ;   or limit.upp > stand.upp
     jl.     d4.           ;   then goto error4;
     al. w0  a0.           ; prepare catalog scan:
     al  w1  x2-2          ;   set first,last of free core;
     ds. w1  a77.          ;
     ws  w1  0             ;   if buffer < 512 bytes
     sh  w1  508           ;   then goto
     jl.     d6.           ;   error6;
     al. w3  a74.          ;   create area process on
     jd      1<11+52       ;   the catalog;
     se  w0  0             ;   if not created
     jl.     d5.           ;   then goto error5;
     jd      1<11+4        ;   process description(catalog);
     am     (0)            ;   save length of catalog;
     rl  w2  18            ;
     rs. w2  a70.          ;
     rs. w2  a71.          ;   segments left := length of
     al  w2  0             ;   catalog;
     rs. w2  a78.          ;   segment := 0;
\f


;rc 25.05.73                fp utility, system 3, clean ...5...


b3:  jl. w3  b20.          ; next segments: input segment;
     jl.     b4.           ;   more left: goto test entry;
     dl. w1  a5.           ; through:
     al. w3  a10.          ;   reestablish cat base;
     jd      1<11+72       ;
     al  w2  0             ;
     jl.     h7.           ;   return (ok);
b4:  rl  w1  x2            ; test entry: if unused place
     sn  w1  -1            ;   in catalog 
     jl.     b5.           ;   then goto step entry;
     dl  w1  x2+4          ;
     al  w1  x1-1          ;
     sl. w0 (a2.)          ;   if low.entry < low.limit
     sl. w1 (a3.)          ;   or up.entry > up.limit
     jl.     b5.           ;   then goto step entry;
     dl  w1  x2+8          ; remove entry:
     ds. w1  a8.           ;   move name to own core;
     dl  w1  x2+12         ;
     ds. w1  a9.           ;
     dl  w1  x2+4          ;
     al. w3  a10.          ;   set catalog base to
     jd      1<11+72       ;   base of entry;
     al. w3  a7.           ;
     jd      1<11+48       ;   remove entry;
b5:  jl. w3  b21.          ; step entry: next entry;
     jl.     b4.           ;   more entries: goto test entry;
     jl.     b3.           ;   buf empty: goto next segment;

a0=k        ; start buffer for catalog scan
a11=a0-h55  ; length of program

m.rc 1985.03.14 fp utility, system 3, clean
f1=a11    ; 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.
\f

▶EOF◀