Guardado de datos en la pila de usuario

Este programa permite una profundidad de la pila RPN limitada únicamente por la memoria indirecta disponible. Inserta los registros Y, Z y T en la pila de memoria indirecta y limpia estos registros, dejándolos libres para operar con un número mayor de cálculos intermedios. El programa H004 hace una copia de la pila RPN, los registros estadísticos y las variables. La recuperación de los datos se realiza con el programa I.

Etiqueta

La etiqueta H se corresponde con la tecla SIN, que es abreviación de stack in. Además está colocada entre las teclas ENTER y R↓.

Detalle de funciones

Dirección Nombre
H<ENTER> PUSH YZT
H004 PUSH MEM

PUSH YZT

Pulsar XEQ, seguido de H, seguido de ENTER. Los registros Y, Z y T se guardan en la pila de memoria indirecta y se liberan para otros usos. De esta forma, la pila RPN se extiende en tres registros cada vez que se llama a PUSH YZT

Registro Antes Después
T t 0
Z z 0
Y y 0
X x x
L l l
J j j+3

PUSH MEM

Este programa guarda todas las variables de la A a la Z (excepto J), los registros estadísticos, los registros X, Y, Z y T, y el registro LASTx en la pila. El tamaño usado en la pila es de 37 direcciones: 25 variables, 6 registros estadísticos, 5 registros RPN y un registro adicional de uso interno. El iterador it, que contiene todos los registros guardados, se copia en LASTx. También se puede acceder a la dirección del principio de los datos guardados restándole 37 al valor en el registro J. Los registros RPN se limpian. PUSH MEM se puede ver como poner aparte la sesión actual y comenzar otra para uso temporal. Como PUSH MEM y POP MEM restablecen toda la memoria de la calculadora, el intercambio de datos entre sesiones anidadas debe hacerse mediante copia a los registros indirectos que guardan los valores de la sesión anterior, que están indicados por el iterador recién mencionado. Los registros se almacenan con esta disposición:

TAMAÑOS:       <___5___>   <2>   <__6__>   <_16>   <_7_>    = 36
CONTENIDOS:  [ X Y Z T L   i h   Σ₁...Σ₆   z...k   g...a  ]
DIRECCIONES:   it          it+5  it+7      it+13   it+29    it+36

Este método de paso de valores de retorno tiene el inconveniente de destruir una variable que podría estar en uso en la sesión anterior. Tiene como ventaja que no se necesita preparación antes de iniciar la nueva sesión y es más fácil de ejecutar manualmente.

Nota: Para su funcionamiento, este programa se aprovecha de que J010 MEMCOPY deja una copia del iterador en (J).

Registro Antes Después
T t 0
Z z 0
Y y 0
X x 0
L l it
J j j+37

Código fuente

H001 LBL H
  PUSH YZT:
H002 XEQ J023
H003 GTO H005
H004 GTO H027
H005 SF 0
H006 R↓
H007 STO(J)
H008 ISG J
H009 ᴱ
H010 R↓
H011 STO(J)
H012 ISG J
H013 ᴱ
H014 R↓
H015 STO(J)
H016 ISG J
H017 ᴱ
H018 R↓
H019 1
H020 STO(J)
H021 R↓
H022 0
H023 ENTER
H024 ENTER
H025 R↑
H026 RTN
  PUSH MEM:
H027 XEQ J007
H028 R↑
H029 XEQ H002
H030 RCL H
H031 RCL I
H032 LASTx
H033 R↑
H034 XEQ H002
H035 29
H036 XEQ J008
H037 ENTER
H038 x<>y
H039 ⎻32
H040 22
H041 XEQ J010
H042 22
H043 x<>y
H044 +
H045 LASTx
H046 7
H047 -
H048 x<>y
H049 LASTx
H050 +/-
H051 LASTx
H052 XEQ J010
H053 CLSTK
H054 RCL(J)
H055 GTO J003


Longitud             180