Follow HP48 Hub

Support group for land surveyors who still use HP48 and HP35 Calculators for Data Collection and in their daily surveying lives.  Share tips tricks and software here.

43 HP48 Surveyors
👉️Join this Hub

Satified or Dissatisfied with the HP35s calculator

HI everyone,I am a member of the HP Calculator Support Forum Group . I would like to know if you own one of these calculators. And if, you like, or don't like, satisfied or not.Even if you don't like it. This is only RPN  Logic cal. that is made today.Some hate, it some love. Some hate it simply because of the polar to rectangular conversion is missing . Some have other reasons . More and more computers are revolving our work, away  from the way we did them .And more and more things are being drop in our educational practice. I hate to see the day when a surveyor does not carry a calculator with him , but i have already seen this take place.The HP 35s is our last stand. You might say it's the last slide rule. So voice your opinion  I my self  would love to see those 2 keys to be put back .Maybe on the next Hp to replace the HP 35s  and ( Maybe) HP is listening  to you


You need to be a member of Land Surveyors United - Global Surveying Community to add thoughts!

Join Land Surveyors United - Global Surveying Community

Email me when people reply –


  • Hello everyone,  I will continue with rewriting  the traverse program to make it a little more user friendly. knowing what the next input or the next answer is ,help's a whole lot. in running these programs. So I will take the 25 line traverse program and add to it.

               Az Traverse

    T001.      LBL T

    T002.      SF 10

    T003.     AZ  TRAVERSE

    T004.     PSE

    T005.     NORTH

    T006.     PSE

    T007.     INPUT N

    T008.     SF 10

    T009.     EAST

    T010.     PSE

    T011.     INPUT E

    T012.     SF 10

    T013.    A= AZ

    T014.    PSE

    T015.    INPUT A

    T016.    SF 10

    T017.    D= H DIST

    T018.    PSE

    T019.    INPUT D

    T020.    RCL A

    T021.    HMS >>>

    T022.    RCL D

    T023.    X<>Y

    T024.    COS

    T025.    X<>Y

    T026.    LASTx

    T027.    SIN

    T028.    X<>Y

    T029.    X times

    T030.    X<>Y

    T031.    LASTx

    T032.    X times

    T033.    RCL+N

    T034.    STO N

    T035.    X<>Y

    T036.    RCL +E

    T037.    STO E

    T038.    SF 10

    T039.    NEW N

    T040.    PSE

    T041.    VIEW   N

    T042.     SF 10

    T043.    NEW  E

    T044.    PSE

    T045.    VIEW  E

    T046.    GTO T001

    T047.     RTN

      Now the 27 lines is 47 lines, but this improves this program very much and not to much more input  compared to what you will get out of it. The program will run the same way just stopping for input and outputs  and it will work as good as any. These are simple example's  of what this calculator can do .It  can produce much more complex programs.  Some I have already gave you access to. Stay tuned for more of this satisfied calculator story. Did you say it has 800 storage REG's where are they  ??

    • Hello Everyone ,Here is where and how to get to all your memory.


      Programming and Working with Indirectly Addressed Memory on the HP-35s
      The HP-35s calculator is a continuation of the line of scientific calculators that began with the HP-45 in
      the 1970s. Its immediate ancestor is the HP-33S, a calculator still in production. One of the significant
      advances of the HP-35s beyond the HP-33S is the much greater access to the 30K of memory that the
      calculator possesses.
      By being able to transfer control within a program to any program line, using XEQ or GTO, it is possible
      to do a great deal more in programming, without running out of program labels. In addition, the calculator
      can address 26 variables (identified with a letter), 6 statistical registers, and an additional 801 storage
      locations. This memorandum is primarily concerned with working with the 801 additional storage
      Accessing Memory
      Memory locations that are accessible by letter, e.g., STO A and RCL A, may also be address indirectly.
      Similarly, the statistical registers may be addressed indirectly. The 800 additional storage locations must
      be addressed indirectly.

      Indirect access to memory is done through two special memory locations, the variables I and J. These are
      ordinary memory locations, but the calculator can take the contents of the I and J locations and use it as
      the address of another memory location. In this sense, I and J can be used like pointers in regular
      To indirectly access a memory location, an integer is stored in I or J. To store a value in the memory
      location pointed to by the value in I or J, the key sequence STO (I) or STO (J) is used, respectively. This
      stores the value currently in the x register of the stack (the bottom of the stack, and the lower line of the
      display) into the memory location pointed to by the value in I or J, respectively. Similarly, RCL (I) and
      RCL (J) recall the value in the memory location pointed to by the value in I or J, respectively, and copies
      it to the x register of the stack. Register arithmetic, e.g. STO + (I), RCL ÷ (J), is also possible, and
      indirect memory locations can be used in the same way as ordinary memory locations. Note that I and J
      can be used in any way; there are two of them to make programming easier when working with pairs of
      values, such as co-ordinates of paired statistical data.
      The (I) and (J) symbols cannot be entered using the parentheses key. They have their own keys, i.e., 0 and
      the decimal point keys. They can be seen there in red, acting like the letters for variables and labels. Use
      these keys to operate indirect memory addressing.
      The addresses used in the I and J variables are as follows. To access the variables A through Z, use the
      numbers –1 through –26. The statistical registers use the numbers –27 through –32. The 801 additional
      locations use positive numbers 0 through 800.
      Suppose that I want to store a value (say 123.456) into memory location 321. I put the value 321 (the
      memory location) into the x register of the stack and press STO I. Then I put 123.456 (the value I want to
      store) into the x register of the stack and press STO (I). The STO function then moves the value in the x
      register of the stack to the memory location specified in the I variable.
      If I want to recall the value in memory location 230, I put 230 into the x register of the stack and press
      STO J. I then press RCL (J), and the value in memory location 230 is recalled to the x register of the
      Memory Allocation
      The calculator has the memory locations A through Z and the statistical registers enabled at all times.
      However, the 801 additional memory locations are not allocated until needed, and can be de-allocated
      (freed) when no longer needed. As this indirectly addressed memory is shared with program memory, this
      allows it to be held for either purpose. However, the calculator has no explicit functions for allocating and
      de-allocating memory. This happens semi-automatically.
      When a non-zero value is stored in a specific memory location (from the 801), using STO (I) or STO (J),
      memory is allocated for storage up to the memory location used for that STO operation. For example, if I
      store the value 123.456 in memory location 500, using STO (I) or STO (J), memory locations 0 through
      500 will be allocated to storage and will be accessible. They should also be given initial values of zero.
      So memory allocation takes place automatically, and there is no need to initialize the memory to zero. In
      fact, attempting to do so may cause an INVALID (I) or (J) error, because you tried to access memory that
      wasn’t yet allocated. This will happen if you try to STO a value of zero into memory that isn’t allocated.

      However, if you are depending upon the STO function to allocate memory, remember that it requires a
      non-zero value being stored at a location to allocate that memory. If there is any possibility that the value
      that you are storing is zero, that memory location will not be allocated. This may not be a problem if you
      are simply storing a string of values, as unless the last value is zero, later non-zero values will allocate the
      memory and set it to zero.
      A better solution is to decide about how much memory you will need, and allocate that ahead of time.
      That avoids problems with valid data values of zero, as well as initializing the memory locations to zero.
      If you make sure that there is an initial STO (I) or STO (J) operation, rather than STO+ or similar, then
      there will be a valid value in the memory location before you start any register arithmetic.
      For a code example, try the following to allocate 101 memory locations (0 through 100):
      STO I
      STO (I)
      You could insert some other value between the STO I and STO (I) lines, but the above code fragment will
      allocate all memory locations from 0 through 100 that are not already allocated, store the value 100 in
      memory location 100, and for those memory locations not already allocated, set their contents to zero.
      De-allocating memory also has no explicit command on the calculator. Memory is de-allocated when it is
      returned to zero, but this cannot happen if there are still memory locations allocated above the memory
      location being set to zero (i.e., with a greater/higher address number). If you explicitly set the memory
      location at the top of allocated memory to zero, i.e., STO a value of zero in that memory location, that
      location will be de-allocated, but no other locations will be de-allocated, even if they are filled with zeros.
      The solution to de-allocate memory is to set up a loop that sets memory locations to zero from the top
      down, such as the following code fragment, based on de-allocating the memory locations from 100 down
      to 20:
      Line Instruction
      K240 100
      K241 STO I
      K242 0
      K243 STO (I)
      K244 20
      K245 RCL I
      K246 x < y?
      K247 GTO K251
      K248 1
      K249 STO— I
      K250 GTO K242
      K251 PROGRAM END
      Of course, care must be taken to see that the starting value is at the top of allocated memory, otherwise
      the code simply sets memory locations to zero without any de-allocation. Unfortunately, there appears to
      be no easy way to ascertain how many memory locations are currently allocated within a program. You
      can see it as the left number on the lower line of the display when the MEM function is used, but this

      function is not programmable. Note that this value is the number of memory locations allocated, so 25
      means the ‘top’ memory location is 24, as memory locations 0 through 24 are allocated.
      When programming to de-allocate memory locations, it is best to de-allocate only those that you are sure
      you allocated, otherwise you will get an INVALID (I) or (J) error. So there are advantages to being quite
      explicit about allocating and de-allocating memory locations. Remember also that if a program that
      allocates memory is halted before the end, it will not have de-allocated memory locations, so control may
      have to be moved to this section of the code and it executed to de-allocate the memory locations.
      Why De-allocate Memory Locations?
      The calculator’s 30K of memory is shared by programs, memory locations, equations, and a range of
      internal applications, such as SOLVE, and integration (∫ FN). These all use a fair amount of memory,
      integration quite a large amount (albeit only while running). To avoid a MEMORY FULL error, which
      will halt execution, it is wise to de-allocate memory locations that are not needed, so that they can be used
      by other calculator applications which need temporary memory.
      Note also that if you have a lot of program memory space used, this may cut into the available memory
      locations, so that there may not be the full 801 available. Program memory appears to be allocated and deallocated
      automatically, without any need for explicit operation on the user’s part.

      I hope this will help with any ? on indirect addressing of this calculators Memory.


  • Hi Everyone, Maybe I should have named this HP 35's programs. The dissatisfied already scored one. With the two little keys missing. Now programming is up to bat and this is where the Hp 35s shines over the HP 33s. It's ability to address program number line was a step up from the old 33's programming ability. Why? Because now you can use less labels .So this means you can write more programs. I will talk about this on a another day .Satisfied scores one. Also the Hp 35s has 800 storage regs, but the memory size is the same as the 33's, but that is a score. It also has two constant equations solvers for multiple equations, but that's a score. And to me it looks better than the 33 does,so I am old school so we will call that a tie. So now it's 3 to 1 in satisfied favor. So lets stop there and talk about different type of programs. Simple programs are programs that stand alone. No matter if they are stack entry xeq or calling inputs xeq or storage regs. recall xeq, theses are the programs I like or prefer.They do use more memory. Complex programs are programs that use utility programs calling subroutines. These utilities may serve more than one of the programs or all of them. They will not work correct if one is missing from the master program. But they save a lot of memory. Programs like survey programs like these are not easy to come by. Most of the time you have to pay for them and you have to enter them yourself. At one time this is the only way they were entered by key input.This calculator was kept low tech on purpose for test exam for math students,scientist and surveyors are just a few who take their test with this type. There other brands that use algebraic entry that are allowed to take these test. The Hp 33 and 35 will run both modes which you prefer, I prefer RPN. Today I will give you links to some good HP 35s Complex survey programs they also contain key codes to speed up your key entry but be careful with this. The Geodesy programs contain a good resection plus a few more with instructions. The MN DOT are a very good collection of Trav, Inverse, and route surveying Curves, plus triangles program I like this too much for complex programs. Get started and fill that calculator up.


    check out more at this site for your GPS needs
    • HI Every one , be sure to check out the    mygeodesy site,  There is a lot of good info on many surveying subject. don't miss out!!


    • HI Everyone, Right now i will just add some more HP 35s programs that are available . The PDFdrive .net has a lot of free surveying programs for more than the HP 35s but here is the link.  There you will find  a very good Horiz. curve and Vert. curve programs, The Horiz.  with only 2 variable's needed, also the Vert. curve is also a good program. There are  many more, The link to MN dot 35 programs can also be found here, also this also includes Hp 33s programs used by MN dot .

      Go to search page  HP 35 programs

       Here you find the Vert. curve program and a lot more info and programs


  • GEO Ambassador

    It is true that the HP35s does not offer a direct access to polar-rectangular conversion. However, you may do this with the capabilities of the calculator by taking advantage of the display of complex numbers as real numbers with an imaginary part (x, iy) or in polar notation (r, "theta" degrees). Be aware of the angular representation: degrees, radians etc accessible via "MODE". Theta is accessible as a blue arrowed key in the second row, 4th column with the appearance of a strikethrough "O".

    To convert rectangular to polar coordinates (assuming RPN mode, and angular degrees):
    1. Choose "DISPLAY"; item 10 ".0" for the display in polar notation.
    2. Enter the rectangular coordinates as xiy; press "ENTER"

    For example type in "8i6", "ENTER" and you will get 10"theta"36.87 instantaneously which represent the polar notation with an r of 10 and an angle of 36.87°.

    For the polar to rectangular conversion just do the opposite:
    1. Choose "DISPLAY"; item 9 "9" for the display of complex numbers "xiy"
    2. Enter the polar coodinates as r"theta"°; press Enter

    For example "7.07"theta"45" gives "5i5" (5 on x-axis and 5 on y-axis).

    Another way to yield polar coordinates from rectangular notation is to type in "xiy" and calculate "ABS" to obtain r, and "ARG" to obtain the angle.
    Note: "xiy" has to be duplicated in the stack as the complex number is destroyed by the calculation of the absolute or argument. After typing "ABS", type "x<>y" then type "ARG". Of course, I should disclose a more elegant approach using the "LAST X"-command.

    The conversion of rectangular to polar notation earned only a weak hint in the HP35s User's Guide. On page 9-6 you will find that results of complex numbers are dependent from the option set in "DISPLAY".
    If you refer to the training modules for the HP35s (HP35s Training Modules, as per 02-Feb-2010), you will find in the chapter about complex numbers (Part 1) on page 2 a note how to use complex numbers for the conversion, although no example is given.
    Interestingly, the apparent lack of a comprehensible rectangular to polar conversion is a main complaint issued by users in the comments on the official site of the HP35s.

    Although it has nothing to do with the rectangular to polar conversion, the handling of negative roots by this calculator is whimsical. It might have been quoted elsewhere, but I will repeat this because it fits so well into the context of imaginary numbers.
    Ever tried to get a result of the square root of -2 by typing "2" "+/-" "SQRT X"? The answer you get is "SQRT(NEG)", which of course is not false, but is not just what you expected.
    Also the use of "2" "+/-" "ENTER" "2" "ROOT X,Y" (accessible via yellow arrow above "SQRT X") is vain. All you get is "INVALID y^x". The 3rd option would be to raise the power of 0.5 by typing "2" "+/-" "ENTER" "0.5" "Y^X". Again the result is " INVALID y^x ". Now try the complex-number notation "2" "+/-" "i" "0" "ENTER" "0.5" "y^x", and miraculously you will get the correct answer "0i1.414". Try the same use of complex notation of a real negative number with "SQRT" or "ROOT X,Y" and you will get "INVALID DATA".
    The conclusion is that the HP35s is able to handle the root of negative numbers, but you have to use complex notation and the "y^x"-command. The other commands related to the raise of powers or handling of roots are not useful in this context. For me it appears that the internal circuitry for "SQRT" and "ROOT X,Y" came from the simplest calculator design, whereas the "y^x"-command has a more noble origin. Try "1" "e^x" "PI" "I" "*" "y^x" and you get somewhat like "-1.0i-1.267E-12" which is of course a fair approach of such a calculator to Euler's identity.  This is something i found which may be helpful.


    • Hi Justin , this i like.,, but were  is my 2 little keys . just kidding lol


    • Hello everyone ,Here are two examples of P to R and R to P simple programs with out equations and not using a storage Regs.

      LBL P                                         LBL R

      x to y                                          x to y

      i                                                  COS

      x times                                        x to y

      + plus                                         LASTx

      ARG                                           SIN

      LAST x                                        x to y

      ABS                                            x times

      RTN                                             x to y


                                                         x times


      These 2 programs will solve P to R and R to P without any EQU. or  data storage reg. being used .they work  like the 2 keys on the HP 33s..

      They are also simple to program.

      Data entries

             36.8699 ENTER  50, EXQ  R  ENTER   R001  program runs

      answer   30.00,  40.00

      Data  entries

             30.00  ENTER   40.00   EXQ   P   ENTER   P001  programs  runs

      answer   36.8699     50.00

      So now you have P to R and R to P 

       This is as simple as it gets. When using these in a routine omit the LBL and the RTN commands to perform these clone key strokes in the routines .


    • GEO Ambassador

      Here is also a HP35s Program guide if you are interested and feeling adventurous..

    • Hello Justin thank for you reply and info , This is  what i had hopes of bringing it up, about the HP 35s . That you can still make it work. and what a good calculator it is.  No, i do not need it, but this discussion does. and there is  are a lot of  surveyors that do . I have own one for sometime now. And to me it is just like any other RPN calculator and I have always been a HP fan for the RPN logic.and have been writing RPN programs for them, since before 1978,I am in a discussion now at Hp Calculator Support Forms comparing  The HP 35s with the HP 41cx,  this is big time agree and disagree discussion.  And  Kudos to you for your help anytime. No i just wrote about Hp 35s in the Curve calculator Discussion and where you could get curve programs  for it. Even where to download the emulator.  to try or use it. Also I also wrote to Brian Gay about the Hp 35s to take his test in Formulas that Work. Yes, thanks to you and  anyone else , to jump right in , that's what we do this for and to have people who care to help you. That one thing this site is about. There is always something you can learn, no matter who you are. And thru this it may change someone's ability on how they work The  35s is a great tool to have in the field and also as a back up, no one should rely on one system to do there work and that's why a good calculator is a must to use in this profession.  No matter what calculator it is.So lets talk HP 35s.

This reply was deleted.

Hey there!
It looks like you are enjoying the community content.

That's nice! Please don't forget to mention us if you use what you just copied on your website. Help strenthen the community by linking back to us!

Thank you very much! Have a nice day! :)

Ok. Don't bother me again, for this session.