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.

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

billy

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

## Replies

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.

Billy

Programming and Working with Indirectly Addressed Memory on the HP-35s

Introduction

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

locations.

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

programming.

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.

Examples

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

stack.

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):

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.

BIlly

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.

Billy

http://www.mygeodesy.id.au/documents/HP35s%20Surveying%20Programs.pdf

http://www.dot.state.mn.us/surveying/toolstech/survsoft.html#HP5

http://www.mygeodesy.id.au/

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!!

billy

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 .

http://www.pdfdrive.net/hp-35s-calculator-program-compute-horizonta...

Go to search page HP 35 programs

http://www.pdfdrive.net/search?q=hp+35s+programs+for+survey&pag...

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

billy

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 x

iy; press "ENTER"For example type in "8

i6", "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 "x

iy"2. Enter the polar coodinates as r"theta"°; press Enter

For example "7.07"theta"45" gives "5

i5" (5 on x-axis and 5 on y-axis).Another way to yield polar coordinates from rectangular notation is to type in "x

iy" and calculate "ABS" to obtain r, and "ARG" to obtain the angle.Note: "x

iy" 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.Addendum:

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 "0

i1.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.0

i-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

billy

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

LASTx

x times

RTN

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 .

billy

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.

Next