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

⟦d078fab8f⟧ TextFile

    Length: 5376 (0x1500)
    Types: TextFile
    Names: »lmitxt085«

Derivation

└─⟦2c55ea56f⟧ Bits:30001844 SW-save af projekt 1000, Alarm-system
    └─⟦093e2ad1c⟧ 
        └─⟦this⟧ »lmitxt085« 

TextFile

;;
;; begin lmitxt085: index and case instructions
;;
;;
                              ;
index0: ;;read the range descriptor and test
   ,,cjs readlucq             ;
   w1:=q--,,cjs readlucq      ; qw1:=dope address
index1:                       ;
   bus:=80,w2:=q,,            ; w3:=bit0; w21:=dope address
   w3:=swp,,cjs readlucq      ;
   w0:=q xor w3,,             ; w0:=index xor bit0
   w6:=w2,,                   ;w6:=range base
   w5:=w1,,cjs readnext       ;w5:=range disp
   w1:=bd xor w3,h w s,cjs readnextt;w1:=lb xor bit0
   w2:=bd xor w3,h w s,cjs terror;w2:=ub xor bit0
   w2-w0,s,                   ;
   w0:=w0-w1,s,crtn acy       ; w0:=index-lb
   ,s,crtn                    ;
index2: ;;
   q:=indexe,,                ;
   ,,cjs not acy xept         ;
   ,,cjs readnext             ;
   w3:=bd,h w s,cjp terror    ;w3:=the third word of the d op vector
index3: ;;w3=position
   ,,cjs readluc              ;
   w3:=bd+w3,h w s,cjs readluct;
   w4:=bd,h w s,cjp terror    ;
                              ;
index4: ;;calculate packed array
   q:=0ff,,                   ;
   w3,w3:=w3 and q,,          ;w3:=size
   w2:=swp and q,,            ;w2:=no pr word
   q:=w0,,cjs unsdiv          ;w0:=wordno
   w0:=q,,cjs readluc         ;w1:=pos in the word
   w2:=bd--,h w s,cjs readluct;
   w4:=bd,h w s,              ;
   w0:=w0+w0,h ,              ;
   w2:=w2+w0,h ,cjs pty perror;
   w6:=w4,,cjp b1 nillerr     ;w56:=addr of indexed word
   w5:=w2,,cjs readonext      ;
   w2:=,,                     ;
   ir:=60,w0:=q,,             ; w0:= q:= indexed word
   w4:=10,s,                  ;counter:=10(hex)
;; now w2q:=w2q shift w0*w3
;;     w4:=10-w1*w3
index5: ;;
   bus:=w1:=w1--,s,           ;
   rc:=w3--,,crtn b0          ;
index6: ;;
   w4:=w4--,,                 ;w4:=no of shifts made
   w2:<<w2,,rpct index6       ;
   ,,cjp index5               ;
                              ;
.p                            ;
                              ;
.instruction intrs            ;
   ,,cjs index0               ;
   slu:=slu+2,,               ; don't unstack the index
   ,,cjp acy fetch            ;
   q:=packe,,                 ;
   ,,cjp xept                 ;
                              ;
.instruction index            ;
   ,,cjs index0               ;
   w1:=0,,cjs index2          ;read length
   w3-3c,s,                   ; if elemsize < 60 then
   rc:=w3--,,                 ; begin (* mult by addition faster *)
   ,,cjp acy index10          ;  offset:= 0;
   w1:=w1+w0,,rpct k          ;  for rc:= elemsize-1 downto -1 do
   w3:=w1,,cjp index20        ;    offset:= offset + (index-lb);
index10:                      ; end
   w2:=w0,,cjs unsmult        ; else offset:= elemsize * (index-lb);
index20:                      ;
   ,,cjs index3               ;w34:=resulting address
   ,,cjp wr34fetch            ;
                              ;
.instruction inprs            ;
   ,,cjs index0               ;w0:=index-ln
   ,,cjs index2               ;w3:=no, size
   w1:=0,,cjs index4          ;
;; now the data is left justified in q
   rc:=w3--,,                 ;rc:=length-1
   w3:=0,,                    ;
   w3:<<w3,,rpct k            ;
   ,,cjp wrfetch              ;
                              ;
.instruction inpss            ;
   ,,cjs readluc              ;
   w7:=bd,h w s,cjs terror    ;w7:=value to be stored
   ,,cjs index0               ;w0:=index-lb
   ,,cjs index2               ;w3:=no, size
   w1:=0,,cjs index4          ;
;; now the data is left justified in q
;; w2=the data in front of the element
;; w4=16 - the number of shifts already performed
;; w65=the address of the word + 1
;; w7=the value to be stored
;; w3=the size
   w0:=0,,                    ;
   rc:=w3--,,push             ;
   w0:=w0++w0,,               ;w0:=mask
   w2:<<w2,,                  ;w2:=front data
   w2:=w2 and 7fe,,rfct       ;
   rc:=w4--w3,s,              ;
   w7:=w7 and w0,,            ;
   w3:=w7,,                   ;the value to be packed
   w3:=w3+w2,,cjp b0 inpss1   ;
   w3:<<w3,,rpct k            ;
inpss1:                       ;
   w1:=w5-2,,                 ;
   w2:=w6,,cjs writenext      ;
   ,,cjp fetch                ;
                              ;
.p                            ;
                              ;
.instruction jmcht            ;
   ,,cjs readcown36           ;
   q:=w6,,                    ; qw1:=dope address
   w1:=w3,,cjs index1         ;
   w0:=w0++w0,,cjp not acy jmcht1;
   w0:=w0++w0,,               ;
   w5:=w5++w0,,               ;
                              ;
jmcht1: ;;
   ,,cjs readnext             ;
   w4:=bd,h w s,cjs readnextt ;
   w3:=bd,h w s,cjs terror    ;
   q:=w4,,cjp jmp1            ;
                              ;
;;
;; end lmitxt085
;;
.p                            ;
▶EOF◀