In order to initiate a float variable for the ISG and DSE words, here is a new word: it uses the integer stack for this. Questions/remarks are welcomed.
Code:
****************************************************************
* CLCV : control looping creation in variable
* use IIIII FFF CC FVAR CLCR where
* IIIII is the counter value integer
* FFF is the counter test value integer
* CC is the increment value integer
* FVAR is the float variable where IIII.FFFCC will be stored
* IIIII FFF CC
* 1 22 3 X CLCV will put 1.02203 into X
* D1+20 D1+15 D1+10 D1+5 D1 (?)
*
* tested 2024 Oct 16
* 777 888 11 Y CLCV FS. result Y: 77.888110000
****************************************************************
WORD 'CLCV'
GOSBVL =SAVEFP
*
P= 0 Set to 0 made it.
D1=D1+ 5 CC; go to the first address of the variable in the integ stack
A=DAT1 A copy data at address in D1 into A(A)
GOSBVL =HDFLT change A(A) to float A(W) 12 digits for further calc. exit with DEC mode
R0=A
C=0 W
P= 14
C=C+1 P
P= 0
LCHEX 995 0,00001 now in (C)
A=R0
SETDEC
GOSBVL =MP2-12 0,000CC into (A,B)
GOSBVL =uRESD1 into (C)
R1=C
*
D1=D1+ 5
A=DAT1 A copy data at address in D1 into A(A)
GOSBVL =HDFLT change A(A) to float A(W) 12 digits for further calc. exit with DEC mode
R0=A
C=0 W
P= 14
C=C+1 P
P= 0
LCHEX 3 1000 in (C)
A=R0
SETDEC
GOSBVL =DV2-12 0,FFF into (A,B)
GOSBVL =uRESD1 into (C)
A=R1
SETDEC
GOSBVL =AD2-12 0,FFFCC into (A,B)
GOSBVL =uRESD1 into (C)
R1=C
*
D1=D1+ 5 IIIII
A=DAT1 A copy data at address in D1 into A(A)
GOSBVL =HDFLT change A(A) to float A(W) 12 digits for further calc. exit with DEC mode
R0=A
C=R1
A=R0
SETDEC
GOSBVL =AD2-12 IIIII,FFFCC into (A,B)
SETHEX
GOSBVL =uRESD1 into (C)
R1=C IIIII,FFFCC into R1
*
D1=D1- 15
C=DAT1 A copy data at address in D1 into C(A)
CD0EX Put it into D0
A=R1 IIIII,FFFCC into A
DAT0=A W Store value IIIII,FFFCC into variable
D0=C
*
GOSBVL =GETFP
D1=D1+ 15
D1=D1+ 5
RTNCC
*
****************************************************************