03-04-2016, 02:03 PM

Here's a really simple program for recalling the stat registers by name, independent of the currently defined ΣREGS. This requires the ΣREG? function present on the 41CX. To use, simply XEQ any of these labels:

ΣX

ΣX^2

ΣY

ΣY^2

ΣXY

ΣN

This program is notable in that it requires no storage registers, and only a single stack level, so it's as unintrusive as simply recalling the register directly*. There's a slight efficiency penalty to make this possible, so it's not really suitable for use in tight loops.

*Note that running this program enables stack lift, so whereas "CLX, RCL 11" would leave Y, Z, and T as-is, "CLX, XEQ ΣX" will lift X and discard T.

EDIT: Saved a few bytes.

EDIT Again: Saved a couple more bytes.

ΣX

ΣX^2

ΣY

ΣY^2

ΣXY

ΣN

This program is notable in that it requires no storage registers, and only a single stack level, so it's as unintrusive as simply recalling the register directly*. There's a slight efficiency penalty to make this possible, so it's not really suitable for use in tight loops.

Code:

`01 LBL "ΣX"`

02 ΣREG?

03 GTO 00

04 LBL "ΣX^2"

05 ΣREG?

06 GTO 01

07 LBL "ΣY"

08 ΣREG?

09 GTO 02

10 LBL "ΣY^2"

11 ΣREG?

12 GTO 03

13 LBL "ΣXY"

14 ΣREG?

15 GTO 04

16 LBL "ΣN"

17 ΣREG?

18 ISG X

19 LBL 04

20 ISG X

21 LBL 03

22 ISG X

23 LBL 02

24 ISG X

25 LBL 01

26 ISG X

27 LBL 00

28 RDN

29 RCL IND T

30 RTN

31 END

*Note that running this program enables stack lift, so whereas "CLX, RCL 11" would leave Y, Z, and T as-is, "CLX, XEQ ΣX" will lift X and discard T.

EDIT: Saved a few bytes.

EDIT Again: Saved a couple more bytes.