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

⟦2c6970da3⟧ TextFile

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

Derivation

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

TextFile

(testabsw=slang
 testabsw)

b. g1, f6 w.   ; for insertproc

d.
p.<:fpnames:>
l.

s. a7, b99, g99          ; begin segment:
w.                      ;
k = h55                 ;
      b4    , 0         ; length of program , empty word;
      jl.     a0.       ; goto start;

;procedure outbits (value);
; w0   integer value  unchanged
; w1   -              -
; w2   -              -
; w3   link           -

b. a0, b9, c9           ;
w.

a1:   ds. w0  b0.       ; save registers;
      ds. w2  b2.       ;

      rl. w1  b0.       ; value := saved w0;
      al  w2  24        ; count := 24;

a0:   sl  w1  0         ; if value.msb = 1 then
      am     -1         ;   bit := 1 else
      al  w0  1         ;   bit := 0;
      rs. w1  c1.       ; save value;
      jl. w3  h32.-2    ; outinteger (out, bit);
      32<12+1           ; layout=  d;
      rl. w1  c1.       ; restore value;

      ls  w1  1         ; (value,  count) := (value, count) shift 1;
      al  w2  x2-1      ; count := count - 1;
      se  w2  0         ; if count <> 0 then
      jl.     a0.       ;   goto rep;

      dl. w0  b0.       ; restore registers;
      dl. w2  b2.       ;
  
      jl    x3          ; return;

      0                 ; saved w3;
b0:   0                 ; -     w0;
      0                 ; -     w1;
b2:   0                 ; -     w2;

c1:   0                 ; saved value;

e.                      ; end procedure outbits;


a0:   rs. w3  b1.       ; entry:

      ba  w2  x2+1      ; next item:
      bl  w0  x2+1      ;
      se  w0  4         ; if item <> integer then
      jl.     a2.       ;    goto alarm;

      al. w0  b5.       ;
      jl. w3  h31.-2    ; outtext (out, text);
      rl  w0  x2+2      ; integer:
      rs. w0  g8.       ;   save outsegment;
      jl. w3  h32.-2    ;   write integer(zone, item);
      1<23+ 32<12 +1    ;   comment: layout for writeinteger;

      ba  w2  x2+1      ; next item:
      bl  w0  x2+1      ;
      se  w0  4         ; if item <> integer then
      jl.     a2.       ;    goto alarm;

      al. w0  b6.       ;
      jl. w3  h31.-2    ; outtext (out, text);
      rl  w0  x2+2      ; integer:
      rs. w0  g27.      ;   save outbase;
      jl. w3  h32.-2    ;   write integer(zone, item);
      1<23+ 32<12 +1    ;   comment: layout for writeinteger;

      ba  w2  x2+1      ; next item:
      bl  w0  x2+1      ;
      se  w0  4         ; if item <> integer then
      jl.     a2.       ;    goto alarm;

      al. w0  b7.       ;
      jl. w3  h31.-2    ; outtext (out, text);
      rl  w0  x2+2      ; integer:
      rs. w0  g0.       ;   save rel segment;
      jl. w3  h32.-2    ;   write integer(zone, item);
      1<23+ 32<12 +1    ;   comment: layout for writeinteger;

      al. w0  b2.       ;
      jl. w3  h31.-2    ; outtext (out, text);

      rl. w0  g0.       ; rel segm :=
      lo. w0  b11.      ;   rel segm or 1<11
      ls  w0  12        ;   shift 12;
      rs. w0  g0.       ; save rel segm;
      jl. w3  a1.       ; outbits;

      al. w0  b2.       ;
      jl. w3  h31.-2    ; outtext (out, text);

      rl. w0  g0.       ; get rel segm;

      rl. w3  g8.       ; abs own segment:
      ws. w3  g27.      ;   curr segm :=
      zl  w0  0         ;     outsegment - outbase;
      wa  w0  6         ;   abs word :=
      la. w0  b13.      ;     ((curr segm + rel segm) extract 11 +
      wa. w0  g27.      ;       outbase);
      jl. w3  h32.-2    ;   write integer(zone, item);
      1<23+ 32<12 +1    ;   comment: layout for writeinteger;

      al. w0  b2.       ;
      jl. w3  h31.-2    ; outtext (out, text);

      rl. w0  g0.       ; get rel segm;

      el  w0  0         ; abs own segment:
      so  w0  1<10      ;   abs word := (if signbit pos then
      la. w0  b13.      ;     abs word extract 11 else abs word) +
      wa. w0  g8.       ;     outsegment  *
      jl. w3  h32.-2    ;   write integer(zone, item);
      1<23+ 32<12 +1    ;   comment: layout for writeinteger;

      al. w0  b8.       ;
      jl. w3  h31.-2    ; outtext (out, text);

      rl. w0  g0.       ; get rel segm;

      rl. w3  g8.       ; own point:
      ws. w3  g27.      ;   curr segm :=
      ea  w3  0         ;     outsegment - outbase;
      la. w3  b13.      ;     bits (0, 11, point) :=
      wa. w3  g27.      ;       (rel segm + curr segm) extract 11 + outbase;
      al  w0  x3        ;
      jl. w3  h32.-2    ;   write integer(zone, item);
      1<23+ 32<12 +1    ;   comment: layout for writeinteger;

      al. w0  b8.       ;
      jl. w3  h31.-2    ; outtext (out, text);

      rl. w0  g0.       ; get rel segm;
      bl  w3  0         ;

      so  w3  1<10      ; own point:
      la. w3  b13.      ;   bits (0, 11, point) :=
      wa. w3  g8.       ;     (if signbit pos then w3 extract 11 else w3) + 
      al  w0  x3        ;     outsegment;
      jl. w3  h32.-2    ;   write integer(zone, item);
      1<23+ 32<12 +1    ;   comment: layout for writeinteger;

      jl. w3  h34.-4    ; close up (out, nl);
      jl. w3  h95.-2    ; terminate output: close up;

b3 = k + 1 ; fp result  ; exit:
a5:   al  w2  0         ;   w2 := fp result;
      jl.     h7.       ;   goto fp end program;

a2:   al. w0  b0.       ;
      jl. w3  h31.-2    ; outtext (out, text);
      al  w2  1         ; warning.no, ok.no
      hs. w2  b3.       ;
      jl.     a5.       ; exit;

b0:   <:***testabsw param error<10><0>:>

b2:   <:<10>absword    = :>
b5:   <:<10>outsegment = :>
b6:   <:<10>outbase    = :>
b7:   <:<10>rel segm   = :>
b8:   <:<10>own point  = :>

b1:   0                 ; saved command pointer

b11:  1<11              ;
b13:  2047              ; 2.011111111111

g0:   0                 ; rel segm;
g8:   0                 ; outsegment;
g27:  0                 ; outbase;;

b4=k-h55                ;  length of message program
f1=b4

e.              ;  end segment: 

m.rc 90.08.23  test abs word
g0:g1: (:f1+511:)>9    ; segm
       0, r.4
       s2              ; date
       0,0             ; fil, block
       2<12+4          ; contents, entry
       f1              ; length
d.
p.<:insertproc:>
▶EOF◀