RosettaCodeData/Task/Van-der-Corput-sequence/360-Assembly/van-der-corput-sequence.360

59 lines
2.2 KiB
Plaintext

* Van der Corput sequence 31/01/2017
VDCS CSECT
USING VDCS,R13 base register
B 72(R15) skip savearea
DC 17F'0' savearea
STM R14,R12,12(R13) prolog
ST R13,4(R15) " <-
ST R15,8(R13) " ->
LR R13,R15 " addressability
ZAP B,=P'2' b=2 (base)
ZAP M,=P'-1' m=-1
SR R6,R6 i=0
LOOPI CH R6,=H'10' do i=0 to 10
BH ELOOPI
AP M,=P'1' w=m+1
ZAP V,=P'0' v=0
ZAP S,=P'1' s=1
ZAP N,M n=m
WHILE CP N,=P'0' do while n<>0
BE EWHILE
MP S,B s=s*b
ZAP PL16,N n
DP PL16,B n/b
ZAP W,PL16+8(8) w=n mod b
MP W,=P'100000' *100000
ZAP PL16,W w
DP PL16,S w/s
ZAP W,PL16(8) w=w/s
AP V,W v=v+(n mod b)*100000/s
ZAP PL16,N n
DP PL16,B n/b
ZAP N,PL16(8) n=n/b
B WHILE
EWHILE XDECO R6,XDEC edit i
MVC PG+0(3),XDEC+9 output i
MVC PG+3(3),=C' 0.'
UNPK Z,V unpack v
OI Z+L'Z-1,X'F0' edit v
MVC PG+6(5),Z+11 output v (v/100000)
XPRNT PG,L'PG print buffer
LA R6,1(R6) i=i+1
B LOOPI
ELOOPI L R13,4(0,R13) epilog
LM R14,R12,12(R13) " restore
XR R15,R15 " rc=0
BR R14 exit
B DS PL8
M DS PL8
V DS PL8
S DS PL8
N DS PL8
W DS PL8 packed
Z DS ZL16 zoned
PL16 DS PL16 packed max
PG DC CL80' ' buffer
XDEC DS CL12 work area for xdeco
YREGS
END VDCS