HP Forums
(35S) Indirect Memory Save|Recall|List - Printable Version

+- HP Forums (https://www.hpmuseum.org/forum)
+-- Forum: HP Software Libraries (/forum-10.html)
+--- Forum: General Software Library (/forum-13.html)
+--- Thread: (35S) Indirect Memory Save|Recall|List (/thread-2904.html)



(35S) Indirect Memory Save|Recall|List - MarkHaysHarris777 - 01-23-2015 10:14 AM

The storage area (30192 bytes) of the HP35s is shared between indirect memory (data) registers, stored programs, and stored equations. Reserving storage area for (data) registers means placing a non zero value in the highest memory below which you wish to reserve. Placing a non zero value in 100 will reserve 101 locations 0-100 x37 bytes of storage.

These reserved storage locations are accessed via indirection registers (I) and (J) :
J direct register the actual value in J
(J) indirect register the 'value' in the numbered registers 'pointed to' by J

The problem occurs for storage and retrieval because of the necessary cumbersome use of the indirection registers (I) and (J). Also, there are a possible (depending on reservation) 801 locations... what is stored there (no menu, no list, not easy).

The following three sets of codes provide easy access to indirect memory locations for STO and RCL, and a routine for looping through the reserved memories displaying the memory reg number and its associated value (step through these manually with [R/S] and scan them with [PSE].

Storage Codes:
Code:


     S001  LBL  S
     S002  STO  I
     S003  CLx
     S004  R|                (roll down
     S005  STO  (I)        ( zero key at the bottom of the unit
     S006  RTN

     To use (storing x stack value) enter the register number (causes stack lift)
     and then press  [XEQ]  [S]  [ENTER]
Retrieve Codes:
Code:


     R001  LBL  R
     R002  STO  J
     R003  CLx
     R004  RCL  (J)
     R005  RTN

     To use enter the register number and press [XEQ]  [R]  [ENTER]  to retrieve 
     the register into the x stack location.
Memory List
Code:


     M001  LBL  M
     M002  100                  (assumes you have reserved 101 memory locations
     M003  STOP                ( allow the operator to begin the scan from any
                                     (value...  these codes scan descending--  down
     M004  STO  J
     M005  DSE  J              (   the starting value is not displayed, reserve marker
     M006  GTO  M009
     M007  CLSTK  
     M008  RTN
     M009  CLx
     M010  RCL  (J)             (get the first value
     M011  x=0?                 (    we only display non zero items
     M012  GTO  M005         (loop back looking for next non zero value
     M013  x<>y                
     M014  CLx
     M015  RCL  J               (display the register number
     M016  x<>y                (swap so that reg # is in Y,  value is in X
     M017  STOP                (could use PSE , just don't allow infinite loop
     M018  GTO  M005         ( loop back to display next non zero value


     To use press  [XEQ]  [M]  [ENTER]   set the parm to an integer less than 
     or equal to the number of memories you have reserve; the scan will start there
     and will proceed descending.   You might just as easily code this to scan 
     ascending (or provide a parm to select)   Use the [R/S] key to scan through 
     your memories.
Enjoy
Smile