|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 6144 (0x1800) Types: TextFile Names: »testabswtx «
└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code └─⟦75ff9bef3⟧ └─⟦this⟧ »testabswtx «
(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◀