|
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: 5376 (0x1500) Types: TextFile 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◀