|
|
DataMuseum.dkPresents historical artifacts from the history of: RC3500 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC3500 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 5376 (0x1500)
Types: TextFileVerbose
Names: »lmitxt085«
└─⟦2c55ea56f⟧ Bits:30001844 SW-save af projekt 1000, Alarm-system
└─⟦093e2ad1c⟧
└─⟦this⟧ »lmitxt085«
;;
;; 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»