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

⟦2105c114d⟧ TextFile

    Length: 6144 (0x1800)
    Types: TextFile
    Names: »cltx        «

Derivation

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

TextFile


\f



; fgs 1985.03.07        fileprocessor        connect output, page ...7...
; segment 1


; procedure get claims (key, filedescriptor);
;
;                          call:             return:
;
; w0                       key               claim
; w1                       link              link
; w2                       -                 unchanged
; w3                       -                 unchanged
; 
; filedescriptor.docname   entry.docname or  docname of disc
;                          0 for drum,       with claims
;                          1 for disc
;
; The procedure finds the disc with the largest claims for the
; given key and returns the claims in w0 and the docname of the
; disc in filedescriptor.docname.
; If docname given in filedescriptor.docname is 0, the search 
; starts among the drums, if it is 1 it starts among the discs.
; If, however, the docname given is a document name for a disc
; included in the bs system, the procedure returns the claims
; for the given key for that disc.
;

a8:   ds. w3  h10.+4    ; get claims: (fp exception routine dump area used)
      rs. w1  h10.+0    ;   save (w2, w3); save return;
      zl  w2  64        ;
      sl  w2  9         ;   if monitor release > 8 then
      am      1         ;     key := key * 4       else
      ls  w0  1         ;     key := key * 2          ;
      hs. w0  b2.       ;

      rl  w0  92        ;   w0 := first drum;
      rl  w1  96        ;   last device :=
      al  w1  x1-2      ;     top discs - 2;
      rs. w0  b1.       ;   first device := first drum;

      rl. w2  h54.+2    ;   w2 := first word of docname;
      sh  w2  1         ;   if docname (1) <> (0, 1) then
      jl.     a12.      ;   begin <*docname specified*>

      al. w3  h54.+2    ; 
      jd      1<11 + 4  ;     w0 := proc descr addr (docname);
      sn  w0  0         ;     if process exists then
      jl.     a12.      ;     begin
      am     (0)        ;       w0 :=
      rl  w0  24        ;       chaintable addr (docname);
      
a25:  rl  w2  x1        ; loop: w2 := device.chaintable address;
      sn  w2 (0)        ;       if device.chaintable address <>
      jl.     a39.      ;          doc   .chaintable address then
                        ;       begin
      al  w1  x1-2      ;         device := device -2;
      jl.     a25.      ;         goto loop;
                        ;       end;

a39:  rs. w1  b1.       ;       first device := last device := device found;
                        ;     end process exists;
                        ;   end docname specified;
a12:  al  w0  0         ;
      rs. w0  h10.+8    ;   max slices := 0;

a9:   rl  w2  x1        ; next device:
      rl. w3  h16.      ;   w2 := device.chaintable address;
      wa  w3  x2-36     ;   w3 := device.key zero claims;
      rs. w3  h10.+12   ;   save  device.key zero claims;
      al  w0  2047      ;   min slices :=
      rs. w0  h10.+10   ;     +infinity;
      
b2 = k + 1              ;   key * (if mon rel < 9 then 2 else 4);
      al  w3  x3+0      ;   w3 := device.slice claims.key

\f




; fgs 1983.07.28        fileprocessor        connect output, page ...7a...
; segment 1



a10:  zl  w0  64        ; next key:
      sl  w0  9         ;   if monitor release <= 8 then
      jl.     a36.      ;   begin <*halfwords*>
      zl  w0  x3+1      ;     sliceclaim := halfword;
      sh. w0 (h10.+10)  ;     if slice claim <= min slices then
      rs. w0  h10.+10   ;       min slices := slice claim;
      al  w3  x3-2      ;     decrease sliceclaim key address by two;
      jl.     a37.      ;   end else
a36:  rl  w0  x3+2      ;   begin <*words*>
      sh. w0 (h10.+10)  ;     slize claim := word;
      rs. w0  h10.+10   ;     if slice claim <= min slices then
      al  w3  x3-4      ;       min slices := slice claim;
a37:  sl. w3 (h10.+12)  ;     decrease sliceclaim key address by four;
      jl.     a10.      ;   end;
                        ;   if claim key addr >= claim key 0 address then
                        ;     goto next key;

      rl. w0  h10.+10   ;   
      sl. w0 (h10.+8)   ;   if min slices >= max slices then
      jl.     a11.      ;
      jl.     a38.      ;   begin
a11:  rs. w0  h10.+8    ;     max slices     := min slices;
      rl  w0  x2-8      ;     slice length := slice length (device);
      rs. w0  h10.+6    ;   end;

a38:  al  w1  x1-2      ;   device := device - 2;
      sl. w1 (b1.)      ;   if device <> first device then
      jl.     a9.       ;     goto next device;

      rl. w0  h10.+8    ;   w0 := max slices;
      dl. w3  h10.+4    ;   restore (w2, w3);
      jl.    (h10.)     ;   return;

\f



; fgs 1983.07.28        fileprocessor        connect output, page ...7b...
; segment 1


; procedure convert to slices (w3, slicelength);
;
;          call :         return :
;
; w0     : -              unchanged
; w1     : -              destroyed
; w2     : link           destroyed
; w3     : value          (value - sign)//slicelength + sign
; h10.+6 : slicelength    slicelength
;

a4:   rs. w2  h10.+0    ; entry: save return;
      sh  w3  0         ;   i :=
      am     +2         ;   sign (value);
      al  w1 -1         ;
      sn  w3  0         ;
      al  w1  0         ;
      wa  w3  2         ;   extend sign (w3); 
      el  w2  6         ;   value := ((value + i)//
      el  w2  4         ;        slicelength - i) *
      wd. w3  h10.+6    ;        slicelength      ;
      ws  w3  2         ;
      jl.    (h10.)     ; return;

\f



; fgs 1982.12.03        file processor       connect output, page ...7c...
; segment 1
▶EOF◀