PREFACE
This package is meant to be a 2-D COGO package with useful routines for construction and engineering. The coordinate file format incorporates an elevation, but only two programs take advantage of it. All calculations are plane geometry and do NOT take into account things like earth's curvature, or refraction.
The thing that makes this package useful and unique is that it takes a scratch pad approach. You can use the stack as your scratch pad to hold answers, enter variables, and do arithmetic. This is great for working plans or checking things in the field. I find that I work and think more like a scratch pad than like a well structured, rigid surveying program. I bet you do too.
NICHE, this program set has a definite niche and it is not meant to replace or show-up commercial software. It is different from commercial software and has different goals in mind. In it, has been created a strategy of operation that is unique and good for calculating, working plans, and quickie field checks. There are many simple operations that surveyors tend to carry a second calculator for. Many who use commercial hp-48 software platforms also carry a second calculator to do simpler tasks or to check complex tasks. It is this niche of "the second calculator" that this program hopes to fill.
Please note that this manual was written entirely with WordPad and so the hypertext is purely human driven, so if something looks funny, that's why. Yeh, no spell check either. Hey, it's LOW-BUDGET!!!!!
CONTENTS
Inverse Azimuth
Traverse
Traverse W/Closure
Observation Averaging
Linear Baseline
Radial Baseline
Spiral-IN Baseline
Spiral-OUT Baseline
Arc/Arc Intersect
Arc/Line Intersect
Line/Line Intersect
Coordinate Conversion
End Area
Triangle Solutions
Curve Data
Fit a Curve
Deflection Angles
Curve Points
Spiral Points
Radius Calculator
Utilities
File Transfer
Gradester
Superelevation
Straight Line Grade
Vertical Curve
Leveling
EDM note reduction
LOT corners, area
LEGAL STUFF
COPYRIGHT AGREEMENT (shareware version only)
This is shareware and you are free to distribute it as long as it is distributed unchanged and in its entirety. And hey, NO DISTRIBUTING THIS FOR PROFIT!!!!!!!!
SHAREWARE VS. NON-SHAREWARE
What is the difference between the shareware version and the non-shareware version? Well, aside from you may NOT distribute the non-shareware version, the point number range. The shareware version can do almost everything the non-shareware version can, except you can only use point numbers 1 thru 13. On the non-shareware version you can use point numbers 1 thru 999999. This is not to say you can have nearly a million points, but you can use point numbers that high. The shareware version has a 13 leg restriction on the LOT corners program, the non-shareware version does not. Also, the Import/Export routines are not available with the shareware versions. That's about it.
PURCHASING
If you have already purchased ANY version of my surveying programs prior to the year 2003, just email me and if I can verify your patronage, I'll email you the update.
If you are a new customer to me and you are interested in the non-shareware versions, please contact me for pricing as well as availability of the overlays. Included in the price are all ten configurations of the program. I have had lots of hardware problems lately and don't know how much longer the Toshiba will survive, so you may wish to use snail mail if I don't respond to your email.
Contact me at:
CUSTOMER SUPPORT
There is NO CUSTOMER SUPPORT. However, if you find bugs or need a little help, please contact me.
WARRANTY
There is NO WARRANTY. These programs and documents are not guaranteed to be free from defects. Use them at you own risk. The author of these programs shall not be held responsible for any loss caused by these programs or their use, incidental or otherwise. Use of these programs constitutes your agreement to accept these terms.
INSTALLATION
If you have another version of this program loaded, please remove it before installing this one. See section on REMOVING PROGRAM.
You are provided this file:
Previously, I provided shareware versions of all five editions, however, because of lack of interest, I have only provided the most popular edition with this posting. It is for the Medium Lite edition. The instruction details what's covered in all the editions so you have an idea of what you get with the FULL NON-SHAREWARE versions.
Indeed, again because of lack of interest, this will probably be the final posting of the LOW-BUDGET line of programs. I may begin a new project eventually, but unless a substantial blunder is found, this is likely the last posting of the LOW-BUDGET project. Updates to this will only be available to those who have paid for the FULL version.
WARNING: Jason has determined that using this in a HP-48SX will corrupt it's memory. These programs are intended for use in the HP-48GX, and DO NOT WORK in the HP-49G. Although I have not tested the programs in the HP-48G+, one user has reported success with it.
Installation should now be complete, and your screen should look something like this:
azimuth orientation
You change the azimuth orientation with |N/S|. Pressing it switches you between a North and South oriented azimuth. North-oriented means the azimuth 0-00-00 points north, and South-oriented means azimuth 0-00-00 points south.
station display format
You change the stationing format with |STA|. Pressing it switches you between English and Metric style stationing display formats.
quadrant number style
You change the Quadrant style with |QUAD|. Pressing it switches you between the usual HP quadrant style and what I'll call "Corners" quadrant style.
coordinate entry/display
You can change the way horizontal coordinates are entered and displayed. With |N&E|, you can switch between entering and displaying coordinates in N E format or E N format. When set to E N, you enter the East component in level 2 and North component in level 1. When set to N E, you enter the North component in level 2 and East component in level 1. Displays will change accordingly. The (n,e) form is still the (n,e) form no matter which way it is set. When you see the coordinates in the parentheses on the stack, it's (north, east). Keep in mind, ALL examples in this document are for N E setting.
bearing entry
You are given a choice of how you enter your bearings. You can toggle the choices between the original method of designating your bearings and a composite method of entering your bearings. The softkey for the toggle is |BEAR|. In the original method, the bearings were entered by seperate bearing angle and quadrant number. With the composite method, you enter the bearing as one number. An Australian guy taught me this several years ago, but I never used it until now. I'd call this "Australian-style", but I have no way of knowing if that's true. Anyway, in the composite method, say your bearing angle is 12-34-56 and it's in quadrant 1, you'd enter it like 112.3456. If your bearing angle were 5-59-04 and your quadrant number were 3, then you'd enter 35.5904. It's a little liberal with the leading zeros, you could also enter it with 305.5904. So when the bearing style is set to Composite and a bearing is expected by the program, it is expected in this format (contrary to what this manual might say.)
HOW TO USE
The concept is simple. You press [CST] to get to the main menu, then press one of the softkeys to change to the program's sub-menu, enter your variables, then solve for whatever it is you're solving for. To get back to the main menu, just press [CST] again.
Most times, numbers are entered from the stack. That's what makes this fast and easy to use. You can use your calculator as a calculator then enter your calculated values to these programs. There are times when your calculator is taken over by a program and it won't act like a calculator, for example, when you start up the file selector. This should be evident, but a sure clue that you are in a program which has taken over control of the calculator is the appearance of |EXIT| or |CANC| or |QUIT| on the softkeys.
Many of the programs leave an answer on the stack for possible use elsewhere. These are ordinary HP variables and can be manipulated in the usual way. You can press [ENTER] and push more copies on the stack. You can press [DEL] and delete them. Some have tags on them to help you remember what the solution was for. Treat these tagged items just as you would untagged ones.
EXAMPLE ON HOW TO USE
Please note that if you have loaded the Experimental edition, this example and perhaps some of the others will not apply because that edition doesn't have some of the programs like Vertical Curve which is used in the example.
Before we begin, let's change the display on the calculator. Let's change it to 4 decimal places, any more than that, and there's just too many numbers to look at. This will not change the display of most of the programs. Changing the decimal display is normally a pain to do, so I've assigned FIX to the [EEX] key (EEX and FIX kind of look similar.) So key in
Now, the softkeys are those labels above the top six keys of the keyboard. The labels correspond to the keys below them, and pressing the key will do what is indicated by the label.
When you press [CST], you access the main menu for the surveying programs. There are more than six programs available in the pack, but there are only six softkeys, thus there are several menu pages, and you press [NXT] to get to the NeXT page. When you run out of pages pressing [NXT], it returns to the first page, like a circle.
So, how do we apply this? This is where our example really starts. Let's solve for a vertical curve. Press
Some of these programs generate information which could be useful in other places or with other programs or for additional calculations, thus some of the programs leave answers on the stack. This "scratch pad" approach is surprisingly useful. Press
Where a coordinate is expected, they are taken from the stack in one of two forms. You can have two real (regular) numbers in levels 1 and 2 of the stack or you can have a complex (n,e) in level 1. The form using the two reals also depends on the way you set the settings. If it's set to E N, then easting would be in level 2 and northing would be in level 1. This example is for when the setting is set to N E.
Here, |INCR|, |STA-|, and |STA+| do the same thing here as they did for the vertical curve, except they solve for coordinates instead. See the section on HORIZONTAL ALIGNMENTS for more information.
Getting back on track, try out the coordinate we just generated with the |O/S?| program. Press
From this, you should understand basically how to work the softkey programs, but what about the ones assigned to the buttons? Well, we already know one of them, [CST] gets you to the main menu. It was nearly seemless. You don't even realize something has been assigned to a key. Hopefully, the others are equally subtle. These keys are going to be discussed in more detail in another section, but let's try one out. Press the keys
There is one new thing that I should demonstrate. I've assigned DUP2 to [/->] [ENTER]. It's one of the HP commands. It dups the first two levels of the stack. I wish I thought of this earlier. Many times, I enter a coordinate onto the stack which I know I will use at least twice, but I don't want to create a file just for that. Well, DUP2 takes care of that problem. For example let's put the coordinate 230.99N 339.09E on the stack twice.
Anyway, by now you should have gotten the idea on how to use the program. All you need to learn now is what each individual programs solves for and what variables it expects.
MENU MAPS
Now that you know how to navigate the program, you need to know what there is and where to find it. Here are five crude maps of the menus for the five editions. You read this as menu choices starting from the main menu and working your way in. For example, Arc/Line intersect is shown as INTER>AR/LI, and you would get to it by pressing [CST] |INTER| |AR/LI|. The maps are also broken up by pages of the main menu to help you navigate.
The Small edition(uses azimuth entry only)
MENU PROGRAM
==== =======
INVER Inverse Azimuth
TRAV Traverse
LINEA Linear Baseline
RADIA Radial Baseline
INTER>AR/AR Arc/Arc Intersect
INTER>AR/LI Arc/Line Intersect
INTER>LI/LI Line/Line Intersect
AREA End Area
UTIL Utilities
UTIL>TFR File Transfer
CDATA Curve Data
SUPER Superelevation
SLG Straight Line Grade
VC Vertical Curve
LEVEL Leveling
The Medium Lite edition
MENU PROGRAM
==== =======
INVER Inverse Azimuth
TRAV Traverse
TRAV>AVG Observation Averaging
W/CL Traverse With Closure
W/CL>AVG Observation Averaging
LINEA Linear Baseline
RADIA Radial Baseline
INTER>AR/AR Arc/Arc Intersect
INTER>AR/LI Arc/Line Intersect
INTER>LI/LI Line/Line Intersect
CONV Coordinate Conversion
AREA End Area
TRIAN>ASA Angle,Side,Angle
TRIAN>SAA Side,Angle,Angle
TRIAN>SSA Side,Side,Angle
TRIAN>SAS Side,Angle,Side
TRIAN>SSS Side,Side,Side
CURVE>FIT Fit A Curve
CURVE>DATA Curve Data
UTIL Utilities
UTIL>TFR File Transfer
SUPER Superelevation
SLG Straight Line Grade
VC Vertical Curve
LEVEL Leveling
The Medium edition
MENU PROGRAM
==== =======
INVER Inverse Azimuth
TRAV Traverse
TRAV>AVG Observation Averaging
W/CL Traverse With Closure
W/CL>AVG Observation Averaging
LINEA Linear Baseline
RADIA Radial Baseline
INTER>AR/AR Arc/Arc Intersect
INTER>AR/LI Arc/Line Intersect
INTER>LI/LI Line/Line Intersect
CONV Coordinate Conversion
AREA End Area
TRIAN>ASA Angle,Side,Angle
TRIAN>SAA Side,Angle,Angle
TRIAN>SSA Side,Side,Angle
TRIAN>SAS Side,Angle,Side
TRIAN>SSS Side,Side,Side
CURVE>C PTS Curve Points
CURVE>DEF< Deflection Angle
CURVE>FIT Fit A Curve
CURVE>DATA Curve Data
UTIL Utilities
UTIL>TFR File Transfer
GRADE Gradester
SUPER Superelevation
SLG Straight Line Grade
VC Vertical Curve
LEVEL Leveling
The Large edition
MENU PROGRAM
==== =======
INVER Inverse Azimuth
TRAV Traverse
TRAV>AVG Observation Averaging
LINEA Linear Baseline
S-IN Spiral-IN Baseline
RADIA Radial Baseline
S-OUT Spiral-OUT Baseline
W/CL Traverse With Closure
W/CL>AVG Observation Averaging
INTER>AR/AR Arc/Arc Intersect
INTER>AR/LI Arc/Line Intersect
INTER>LI/LI Line/Line Intersect
CONV Coordinate Conversion
AREA End Area
TRIAN>ASA Angle,Side,Angle
TRIAN>SAA Side,Angle,Angle
TRIAN>SSA Side,Side,Angle
TRIAN>SAS Side,Angle,Side
TRIAN>SSS Side,Side,Side
CURVE>?RAD Radius Calculator
CURVE>S PTS Spiral Points
CURVE>C PTS Curve Points
CURVE>DEF< Deflection Angle
CURVE>FIT Fit A Curve
CURVE>DATA Curve Data
UTIL Utilities
UTIL>TFR File Transfer
GRADE Gradester
SUPER Superelevation
SLG Straight Line Grade
VC Vertical Curve
LEVEL Leveling
The Experimental edition
MENU PROGRAM
==== =======
INVER Inverse Azimuth
TRAV Traverse
TRAV>AVG Observation Averaging
LOT LOT Corners, area
LINEA Linear Baseline
RADIA Radial Baseline
INTER>AR/AR Arc/Arc Intersect
INTER>AR/LI Arc/Line Intersect
INTER>LI/LI Line/Line Intersect
UTIL Utilities
UTIL>TFR File Transfer
CONV Coordinate Conversion
AREA End Area
TRIAN>ASA Angle,Side,Angle
TRIAN>SAA Side,Angle,Angle
TRIAN>SSA Side,Side,Angle
TRIAN>SAS Side,Angle,Side
TRIAN>SSS Side,Side,Side
CURVE>FIT Fit A Curve
CURVE>DATA Curve Data
It is recognized that with the Large edition, we've arrived at the point of too much. That is to say, there is just too much stuff in it. Most of us rarely need to work with spirals, and all the spiral stuff just gets in the way when not working with them. To combat this, you can change main menus like they do with cellular phones. On the Large edition ONLY, go to the Utilities menu, and on the second menu page is the softkey |MENU|. Press this and a window pops up to let you choose from three styles.
USER DEFINED KEYS (Key assignments)
The user defined keys are very important to know about. This programming is heavily dependent on this feature. When the user keys are active, you'll see USER showing in the upper-right of the screen. Sometimes, you have to turn it off, or sometimes it gets turned off, like when you warm-start the 48. Anyway, with this in mind, you should know how to turn it on and off. You press [/->][alpha] to toggle it on or off. If flag -61 is clear, then you may need to key it an extra time.
The key assignments are:
KEYSROKES BRIEF DESCRIPTION
========= =================
[MTH] STO ELevation, expects elev. in level 2 and pt.#
in level 1.
[/->] [MTH] PRINT mode, toggles IR print ON/OFF.
[PRG] RCL point, expects pt.# in level 1, recalls point
to stack.
[/->] [PRG] Filer, starts up coordinate file selector.
[CST] Main menu, brings up main menu.
[/->] [CST] your custom menu, brings up YOUR custom menu.
[STO] STO point, expects a coordinate, stores to
coordinate file.
[/->] [STO] NEXT point (to sto), prompts you for next point to
store at.
[EVAL] bear<>azim, brings up conversion menu.
[/->] [ENTER] DUP2, dups level 1 and 2.
[y^x] file EDITOR, starts up coordinate file editor.
[EEX] FIX, expects the number of fixed decimal places to set
the 48 to.
[/->] [1/x] INV 1st, toggles INV 1st(for stake notes) mode ON/OFF.
[/->] [/] DMS/
[/->] [x] DMSx
[/->] [-] DMS-
[/->] [+] DMS+
[/->] [0] ->DEC
[/->] [.] ->HMS
A keyboard template makes this easy, but HP stopped selling their write-on template kits, so I made some keyboard templates and they turned out as pictured above. They are not just useful for this set of programs, you can also pencil on them making them useful for your own programs as well. These templates are die cut from 0.010" thick vinyl and lettering is silk-screened with two colors. Contact me for pricing and availability.
Notes:
COORDINATE FILES AND THE FILE SELECTOR
Although not required, you can have coordinate files. All they do is store coordinates for possible use, examination, or revision. All you need to do is create a file with the file selector. The file selector is used for creating, deleting, and selecting (to use) these files. In addition, you can create, delete, and change directories with it. It is much better than the original file selector. It doesn't look as nice, but it operates much better.
You start it up by pressing [/->] [PRG]. When you start it up, at the very top of the screen you'll see the path in small letters between curly braces. For those of you who aren't computer people, your path is like your route of subdirectories. Your path always starts from HOME, and {HOME} is your minimum path. It may be a good idea to create a subdirectory for different projects so that you can break things up and have an easier time organizing your work. This program pack only works with what's in your current directory.
Next in the status area is the File which is currently active. The name in the curly braces after the word "File" is the currently active file. It may be empty which of course means there is no active file in this subdirectory.
If you are in a subdirectory, there should be an entry with two dots and UPDIR further to the right. This means move Up Directory or move to the parent directory. Just highlight this selection and press [ENTER] or |USE| to move up one directory.
If you create subdirectories, their names will appear in the list with DIR on the right of the screen. You can change to those subdirectories in the same manner as you move up a directory. You can also delete these directories by highlighting them and pressing |DEL| or [DEL]. You will be prompted for verification prior to deletion.
The same goes for any files you highlight. If you press [DEL] or |DEL| while a file is highlighted, you will prompted for verification and then the file will be deleted if okay.
To create a file, press |NEW|, and you will be prompted whether to create a file or a directory. If you choose |DIR|, then you will be prompted for a name. If you enter a valid name, the directory is created. If you enter a blank line, it cancels the operation. Nearly all the things you are prompted for will cancel if you enter a blank line.
If you choose to create a file, after you give it a name, you will be prompted for the starting point number. This is what you want the lowest point in the file to be. You cannot go below this point number. Next, you'll be prompted for a file size. This is the initial number of points you want the file to contain. When you store coordinates, if the point number you try to store at is within ten points of the last point in the file, the program figures you just need a little more space and enlarges the file. If you try to store point numbers more than ten points beyond the end of file, you will get an error. So, here's the strategy. If you just want to work a file in sequence and add points as you go, just type in a small number like 10 points for your file size. If you intend to have a wide range of points, and you jump around (some like to break things up by number ranges), then you should enter a number that will cover your range. For example, maybe some guys use points 800-899 for the west controls and points 900-999 for the controls on the main road, etc...
Okay, so you've entered your file size and the file is created. The file selector makes two assumptions here. One, it assumes that you are going to use this file next, so it makes it the current active file. And two, since this is the active file, the next point you wish to store at is probably the first point number of the file, so it makes the STONEXT point number the same as the first point in the file.
At this point, you can quit and begin using it. You press |EXIT| to quit. I know that sounds like a lot, but it's quite fast once you understand how it works.
EXAMPLE ON USING COORDINATE FILES
Learning by example seems to work well. So here we go again. First, start up the coordinate file selector. Press
[/->] [PRG]
Now, create a directory named 'GREENVILLE', press
|NEW|
then choose
|DIR|
to create the directory. You'll be prompted for a name so type in
GREENVILLE [ENTER]
and then the directory is created. If it's not highlighted, then highlight it using the up-arrow, down-arrow, |PGUP|, or |PGDN|. Once you have it highlighted, press
|USE|
to move into the newly created directory. Now, let's create a coordinate file in this directory. Press
|NEW|
and then choose
|FILE|
at which point you will be prompted for a filename. Let's name our file 'CONTROLS', so type in
CONTROLS [ENTER]
at which point you will be prompted for the starting point number. For our example let's use point number 1. Key in
1 [ENTER]
Now you will be prompted for the file size. This is how big you want the coordinate file to be. For this example, let's make the file six points big, so key in
6 [ENTER]
Now, we've created the file and the file was made the current active file for this directory.
By looking at what's between the curly braces after File, you see what the current active file is. In this case, it should look something like File{ CONTROLS }, not to be confused with the path which should be shown at the very top in tiny curly braces. We are done here, so press
|EXIT|
to quit the file selector, and your calculator should return to normal. Since we have just created the file, and since the first point in the file was 1, the point number to store at was set to 1. Let's verify that, press
[/->] [STO]
You will be prompted for the point number to store the next coordinate at, and what it is currently set to is sitting on the command line, and it should be 1. Since we aren't going to change it, just press
[ENTER]
and we're back. So, let's store some points. Let's store the coordinate 100N 200E, key in
100 [ENTER]
which stores it as point number 1 and increments the next point to store at. If you have the program set to E N, then you would have entered 200 then 100, but this example is for the N E format. Now let's store the coordinate 910N 750E, key in
200 [STO]
910 [ENTER]
and it's stored as point number 2. Great, we've stored two points, and they were stored with a default elevation which you can change at the Utilities menu. If those point numbers already had elevations assigned to them, then they would not have been given new elevations because we were storing 2-dimensionally. Now let's say these points are major traverse points and you've just run level to them so now you want to annotate them with their elevations. Point 1 elevation is 234.09 and point 2 elevation is 309.23. So let's change them. Key in
750 [STO]
234.09 [ENTER]
Yes, that's all. Okay, I know you must be asking about safeguards. No, there is no overwrite protection for this. I took a while trying to decide if it should or shouldn't have one. I went with shouldn't. This may change in the future. You can recall point numbers 1 and 2 to the stack to verify the elevation change or you could start up the editor to check it out, but for now let's continue on and do something useful with the coordinates we stored. Press
1 [MTH]
309.23 [ENTER]
2 [MTH]
[CST]
to get to the main menu. If |TRAV| is not one of the choices, then use [NXT] until it's one of the menu choices. Now, press
|TRAV|
to get to the Traverse program menu. Unless you've changed modes, it should be the Azimuth Traverse program. If it's not, don't worry, the example should be close anyway. Okay, we have a coordinate stored as point number 1, and we want to use it as the point we start at, so we recall it to the stack. Key in
1 [PRG]
To recall point 1 to the stack. Update the display so you can see it sitting there and you can grasp what is taking place. Press
[ON]
to update the display. It should look similar to:
Let me explain a little about what it's showing us. First, it doesn't all fit on one line, so that's why level 1 is raised a line. The first 1: is telling us the object is in level 1. The second 1: is the tag. With RCLPT, recalling the points puts a tag of the point number on the coordinate. So the tag is telling us that this coordinate came from point number 1. Next, in the parenthesis is the north/east coordinate. Like any other variable, you can push as many of them on the stack as memory allows. You can also delete it from the stack too, but for this example, we're going to make it the @POINT. So, press
|@POIN|
and it is sucked off of the stack and stored as the @POINT. You can again update the display and see that it's now gone from the stack. Press
[ON]
to update the stack and see for yourself. Now, say we were in the field and you had setup on this same point you've entered as the @POINT. We want to check and see if our backsight is correct. Luckily we've stored our backsight point as point number 2. Recall point number 2 to the stack so that we can inverse to it. Key in
2 [PRG]
to recall point 2 to the stack, and then press
|INV2|
to "inverse to" that coordinate from the @POINT. The direction and distance are revealed and they are left on the stack for possible use elsewhere. Press
[ON]
to update the screen so you know I'm telling the truth. Well, let's say our numbers check out okay and now we shoot a point somewhere. Say it's 123-45-22 @ 450.02, key in
123.4522 [ENTER]
and the resulting coordinate is generated and left on the stack. We want to save this coordinate for some other time, so we want to store it in our file. Since the coordinate is sitting on the stack, just press
450.02 |SIDE|
[STO]
and it's stored as point 3. Now, I know you're saying to yourself, I wish it could automatically store for me instead of having to press [STO] all the time. Well, it can. Let's set it to store automatically as we generate points, just for this example. Press
[CST]
to get to the main menu. Then press
[NXT]
as many time as needed to get to the page with |UTIL| on it. Then press
|UTIL|
to get to the Utilities menu. And then press
|STORE|
to toggle AUTO-store on. It will say "MANUAL-store" when it's off. Now get back to the Traverse program. Press
[CST]
to get to the main menu. Then press
[NXT]
as many times as needed to get |TRAV| to be one of the choices. Then press
|TRAV|
to get back to the Traverse menu. And all should be where we left off at. If there is still some garbage sitting on the stack, you can press [DEL] to clear everything off the stack. Now let's continue on and solve for another point. Let's say we shoot something at 89-09-07 @ 760.77, key in
89.0907 [ENTER]
and in addition to solving, it was stored in the file (it's no longer on the stack.) Oh, but wait. That happened kind of quickly. I didn't see what the point number was. Well, we can check what the next point to store is and so the one before it must be what the last point was stored at. Press
760.77 |SIDE|
[/->] [STO]
and it will prompt you for the next point to store at, with 5 sitting on the command line. This tells me that the last point was 4. You can change the 5 to something else if you want to start storing at a different point number, but we don't need to right now, just press
[ENTER]
to continue on. You probably should turn off the AUTO-store feature. You do it exactly the same way you turned it on. I'll wait while you do it.
.............wait wait wait...........
Okay, now say that you want to review some of the coordinates you've stored, you could just recall them to the stack, or you could fire up the coordinate file editor. Let's use the editor. Press
You already know that if you try to store at a point number that is up to ten points beyond the end of file, it will automatically enlarge the file. So, I guess I should mention |BOOST|. Under the Utilities menu, there is the |BOOST| function. It is used for expanding the coordinate file. Just press |BOOST| and it prompts you for how many points to expand by, then it expands or "Boosts" the currently active file by however many points you specify (if it can.) This is useful if you want to jump around leaving gaps of unused points in the coordinate file. Oh, and don't try and cancel it once it's started, you could loose your entire file.
Lastly, when it comes to coordinate files, you can toggle the overwrite protection on and off. The overwrite protection is when you try to store to a point that has already been used, you get prompted for verification first. You can toggle this feature on and off at the Utilities menu.
HORIZONTAL ALIGNMENTS
These programs are for working with horizontal coordinates relative to baseline segments. There are up to four of these segments you can work with depending on which edition you are using. The Small and Medium editions have only the Linear and Radial baseline programs. The Large edition also has programs for ingoing-spirals and outgoing-spirals.
Basically, once you enter the variables which define your baseline segment, you can generate coordinates given a station and offset. The reverse of that is also available. Given a coordinate, you can solve for the station and offset.
On the first menu page of these programs are the action keys which generate the coordinates. The second page will be the one on which you enter the variables that define the baseline. Each of these programs will require different variables, see the individual program descriptions to find out what is expected for each. Please note though, that when a radius or spiral-angle is expected, entering a negative value means the curve curves to the left.
Once the variables that define the baseline are entered, you can solve for coordinates or stations. To solve for a coordinate, enter the station you want to solve for with |STA|. You enter the stationing in the unit you're using. So, say you want to solve for 4+00, you'd key in 400 |STA| and NOT 4 |STA|. Don't forget the offset. Enter the offset you want to solve for with |O/S|. If you enter a negative value, it will solve for the left offset. If you enter a positive value, it will solve for the right offset. If you enter 0 (zero), it'll generate coordinates on the baseline. Now to solve for the coordinate, just press |SOLVE|.
|STA+| and |STA-| will increment the last station solved for by the amount entered with |INCR|, then it solves for the coordinate of this new station. This saves a bit on keying in stations.
To solve for a station and offset given a coordinate, each of the baseline programs has an |O/S?| softkey. Just have a coordinate on the stack in either of the two forms and then press |O/S?| to calculate the station and offset of a coordinate. For example, 100 [ENTER] 200 |O/S?| would solve for the station and offset of coordinate 100N 200E. You can check it out. Generate a coordinate then use that coordinate to solve for the station.
There is an additional feature, which for lack of a better name, I've named "Inverse First." What it does is, as coordinates are generated, it "inverses" the coordinate with the one stored as the @POINT with the Traverse program. That's the "Traverse" program, NOT the "Traverse With Closure" program. This could be useful for writing your stake-out notes or double-checking the data-collector. You toggle this feature on and off with [/->] [1/x]. It only works with the baseline programs. If the Traverse program was in Angle-Right mode, the direction will be given in angle-right using the setup of the Traverse program. When the traverse is in other modes, the direction will be given in azimuth.
I suspect you're wondering why these programs are broken up into line, curve, spiral-in and spiral-out instead of combinations. It is more effective to have a combination of something like tangent-curve-tangent or tangent-spiral-curve-spiral-tangent, but it has been my experience that construction projects that deal with upgrading old roads don't always encompass the entire change in direction. That is, sometimes the project will pick up part way through the curve and not give the delta. Sometimes, the project will end just past the PC but before the PT and not give the delta. Besides, this way, one can define thier curve or line from any point on the curve or any point on the line.
THE PROGRAM DESCRIPTIONS
This program solves for the azimuth and distance from A to B. There are two menu pages to this. One page requires there be a current coordinate file. It takes a point number and then evaluates it and stores it. It does not dynamically reevaluate the point at the time you press |SOLVE|, so if you change your coordinate for that point after you've entered it here, it won't be reflected. This might sound like a bad thing, but this way, you can pull coordinates from different files. For example, you could keep all your controls in one file and then you have points you want stake in another file, you could pick up your setup point, then switch files and inverse to the point you want to stake.
The other menu page takes only coordinates. It is sweet and simple, and much to my surprise, it's preferred by the folks who give me feedback. Because I have no way of telling which one is more important to you, the last page you use will be the first page next time you come back to this menu.
|PT A| expects a point number.
|PT B| expects a point number.
|BEARI| toggles bearing display ON/OFF.
|PT-| decrements point number and solves.
|PT+| increments point number and solves.
|SOLVE| solves for direction and distance from point A to B.
|CRD A| expects a coordinate.
|CRD B| expects a coordinate.
|BEARI| toggles bearing display ON/OFF.
|SOLVE| solves for direction and distance from coordinate A to B.
Traverse
This program calculates coordinates given a direction and a distance. In all the editions except the Small edition, you have three modes to work in. In the Small edition, you only have Azimuth mode. Basically, you enter the coordinate you're at with |@POIN|. Then you enter your direction and distance with either |HD2TL| or |SIDE|. |HD2TL| "HeaD to TaiL" will calculate the resulting coordinate and make it the new "@POINT." |SIDE| will only calculate the resulting coordinate. See EXAMPLE ON USING COORDINATE FILES.
|SEG| is also in all three modes, and what it does is let you choose which baseline segment you want your shot to be related to. When you press it, it'll say something like "Segement is Linear." Which means that when you key in an direction and distance with |HD2TL| or |SIDE|, the station and offset for the resulting coordinate will be displayed. Don't worry, the coordinate will still be on the stack or stored depending on you're settings. Give it a try, press
Forget what segment you had chosen? Press |VIEW| to remember.
Finished with locating points to a baseline, use |SEG| to change it to "NONE." Just press it until the it says "Segment is NONE"
This program pack is basically meant to be 2-Dimensional, but it's recognized that many times you're going to need to reduce down to two dimensions, so there is |Z&S->|. It takes a Zenith angle in level 2 and slope distance in level 1 and returns the HD and VD. It is straight trig and does NOT take into account things like curvature or refraction. Don't like my |Z&S->| function for reducing your zenith angle and slope distance? You can supply your own program for this. Just store your program with the variable name MYDIST, and if you are in a directory which will access it, your program will be launched by pressing |Z&S->|. I suggest putting it in the HOME directory if you use the same one for all cases.
azimuth mode:
This mode works in azimuth (0-360 degrees.) It's very useful. For computational purposes, it will take improper azimuths, but when the azimuth is displayed, it'll be displayed from zero to up to, but less than 360 degrees.
|>VIEW| view current settings.
|@POIN| expects a coordinate and makes it the point to calculate from.
|Z&S->| expects a z-angle in level 2 and a slope dist. in level 1, returns HD and VD.
|INV2| expects a coord. and returns the azimuth and dist. from @POINT to coordinate.
|HD2TL| expects azimuth in level 2 and distance in level 1. Moves result to @POINT.
|SIDE| expects azimuth in level 2 and distance in level 1.
|>VIEW| view current settings.
|SEG| used to choose baseline segment to locate points to.
|AVG| takes you to the Observation Averaging program menu.
|INV2| expects a coord., returns the azimuth and dist. from @POINT to coordinate.
|TARG| expects a distance and stores it as the target distance.
|@DIST| expects a distance and tells you to come or go.
There are several useful functions on this menu. In azimuth mode on the second page, you have |TARG| and |@DIST|. These two functions work together. |TARG| takes a target distance and stores it. Then when you enter a distance with |@DIST|, it tells you how much to "COME" or "GO" from the instrument to the target distance. So if you entered
Now, keep in mind, I'm not advocating using this instead of a data-collector, just sometimes for a few quick ones, it's much easier than setting up the DC.
I may be wrong about this, but |TARG| and |@DIST| only appear on the azimuth menu because I didn't think anyone uses four quadrant bearings to stake with, and it was getting too crowded on the angle-right menu. Besides, I have a preference for azimuth surveying. It's easier to catch mistakes and you have a frame of reference.
angle-right mode:
This mode is useful for times when you didn't set a correct backsight azimuth, or you just wanted to work with angles. What it needs to know, is what your backsight azimuth is and what you determine to be your plate angle at the backsight. If you move forward with |HD2TL|, then your forward azimuth is carried forward (unless you've entered a 0 distance) for you.
|>VIEW| view current settings.
|@POIN| expects a coordinate and makes it the point to calculate from.
|Z&S->| expects a zenith angle in level 2 and a slope distance in level 1 and returns HD and VD.
|INV2| expects a coordinate and returns the direction and distance from @POINT to coordinate.
|HD2TL| expects angle in level 2 and distance in level 1. Moves result to @POINT.
|SIDE| expects angle in level 2 and distance in level 1.
|>VIEW| view current settings.
|SEG| used to choose baseline segment to locate points relative to.
|AVG| takes you to the Observation Averaging program menu.
|BS PT| expects a coord. then calculates and stores the BS azimuth.
|BS AZ| expects a backsight azimuth.
|BS <| expects an angle, the actual plate angle to the backsight.
bearing mode:
This is useful for working plans and maps in four quadrant bearings. Depending on how the bearing entry style is set, you would enter side shots and head to tail with the same technique as the Traverse with Closure program in bearing mode. When your bearing entry style is set to Original, it'd be 3:bearing angle 2:quadrant number 1:distance. When you set the entry style to Composite, it's 2:bearing 1:distance, where bearing is a composite of the quadrant number and bearing angle.
|>VIEW| view current settings.
|@POIN| expects a coordinate and makes it the point to calculate from.
|Z&S->| expects a zenith angle in level 2 and a slope distance in level 1 and returns HD and VD.
|INV2| expects a coordinate and returns the direction and distance from @POINT to coordinate.
|HD2TL| expects bearing angle in level 2 and distance in level 1. Moves result to @POINT.
|SIDE| expects bearing angle in level 2 and distance in level 1.
|>VIEW| view current settings.
|SEG| used to choose baseline segment to locate points to.
|AVG| takes you to the Observation Averaging program menu.
|INV2| expects a coordinate and returns the direction and distance from @POINT to coordinate.
Traverse W/Closure
This is a traverse with compass rule adjusment program. It breaks many of the rules adhered to in the rest of the program pack. First of all, it requires a coordinate file to work. Next, it doesn't leave coordinates on the stack for use elsewhere, instead it stores to the coordinate file. And, when you edit the traverse file and change something, it doesn't prompt you for overwriting the existing coordinates, it just does it.
This program has changed from previous versions in that now you need to create a file to be used, just like you do with coordinates and Gradester, but this is a good thing, you can save a traverse for later review or revision. On the second menu page, you use the |FILER| to create and delete traverse files. It's the same filer as the one for coordinate files and Gradester files, except now it is only working with traverse files. You may wish to read the section on COORDINATE FILES AND THE FILE SELECTOR. Anyway, once you've created a traverse file (or just made an old one active) and you have a coordinate file currently active, you're ready to begin.
Since, this program uses and requires a coordinate file, it works by point numbers. You need to have the starting coordinate stored before hand. Once you're ready to start, what you do is enter the point number of the start of the traverse with |START|. This not only makes this the start of the traverse, it clears out whatever you may have had in the traverse file. Then, you enter each leg (azimuth and distance) with |HD2TL|. Once you've entered each leg of the traverse, including the one you close with, you press |CLOSE|. At this point you can either close to the starting point, in which case you'd press |START|, or you can close to another point. If you want to close to a point and you haven't stored it yet, it's not too late. Go ahead and store it, you know how. And so to close to a point, just enter the point number of the point you're closing to with |PT#|.
Now once you've closed with either of those options, the calculator will do some processing and generate a report. It will give you the misclosure, precision, and other good things to know. In addition, it will show you the unadjusted coordinates along side the adjusted ones for you to review and perhaps write in your book with a different colored pencil. At this point, you have the option of replacing the unadjusted coordinates in the coordinate file with the adjusted ones, or just cancelling the report. Also, if you wish, there is a |PRINT| menu choice which will send the print to the infrared printer.
You can rerun the closure as many times as you wish. Maybe you made a mistake punching it in or something and you had to edit the traverse. Whatever the reason, you can keep rerunning the closure, even if you replaced the coordinates. You can even make a different coordinate file active and as long as all the points numbers are in the range of the coordinate file, it will accept it. This can be good if you want to run various scenarios, but it can also be dangerous in the case of accidental overwrites. Remember, if you edit the file and change something or pretend you changed something (edit a record with the same info), it WILL recalc and update the points in the file.
Note: Area is calculated using "coordinate method" not DMD. When coordinates with large value (far from zero) components are used, the area can be different from when using coordinates with small value (close to zero) components are used. The problem is with fixed digit representation of values.
The problem is two-fold. First, when you have coordinates with numbers in the hundred-thousands as opposed to ones in the thousands, the amount of represented digits after the decimal place are two less. This probably only becomes a noticable problem over a course with many legs or when the number of digits after the decimal place drops below something like four or five. The second and more substantial problem is one of representing the value when multiplying components. This can be a huge number and again with fixed digits of representation, one can lose precision (represention after the decimal place.) This can add up to a noticable amount. The DMD method is probably the best way to combat this, but implementation is difficult. So as a compromise, the algorithm has been adjusted so that the first coordinate is subtracted from each subsequent coordinate thus helping the second problem in many cases. This is not a panacea, but it helps.
To illustrate this point, follow the example below and write down the areas of the traverse. Then edit the traverse. Change the starting coordinate to something like 904166.20N, 906154.22E. The program will recalc the traverse, so it's easy. Then rerun the closure and note the areas. Now, edit the traverse again and change the starting coordinate to something like 9904166.20N,9906154.22E. Again, rerun the closure and take note of the areas. They should start to change slightly. I don't think cases arise where the coordinate components get so high, but if they do, be aware of the limitations of this program.
|>VIEW| view status. [/->] |>VIEW| will switch between azimuth and bearing mode.
|START| expects a pt.# to start your traverse from, and resets.
|LAST| recalls to the stack, the last azimuth and distance in current traverse.
|INV2| expects a point number to inverse to. Entering point number 0 inverses to the start of the traverse.
|CLOSE| generates misclosure report as well as adjusted coordinates.
|HD2TL| expects azimuth in level 2 and distance in level 1, add legs to traverse.
|>VIEW| view status. [/->] |>VIEW| will switch between azimuth and bearing mode.
|AVG| gets you to observation averaging menu.
|Z&S->| same as in Traverse program.
|EDIT| edits the current Traverse.
|FILER| interactive, it creates, chooses, and deletes traverses or directories.
|PLOT| plots current traverse to screen.
Indeed, this is such a queer program that an example is in order. So here we go.
Here is your traverse:
Assuming you did enter everything correctly, or even if you didn't, let's see how the thing closes. Press
You can also, print to the infrared printer, but for now just exit the report viewer.
Note: When you run a closure, it doesn't change the coordinate file unless you do a replace.
Observation Averaging
This is an unusual program. It averages obersevation readings. That's it, a simple average. So what's so unusual about that? Perhaps nothing, or perhaps that it's simple. It's merely an average, and it takes into account a 360 degree plate reading. Well actually, that's 0 <= reading < 360. So, averages that hover around the 0 region are no problem. Such a simple problem, but think about how you'd program it. It's only simple when you know the answer.
Please test this against numbers you already know so as to be sure it does what you want it to do and not something similar. In fact, please test all these programs against known values and let me know of blunders anywhere.
You have a choice of two modes, direct readings only, or direct and reverse readings. You switch between the two with [/->] |>VIEW|.
What you do is this. Once you get to the menu and have decided whether you want to use, direct only or direct and reverse observations, you should set your tolerance if you haven't already done so. |>VIEW| will reveal what things are currently set at. The tolerance is the acceptable range of variation. Unlike a plus or minus value most folks would use, this program goes by the range of the highest and lowest values. This may be wrong, but my reasoning is that the first reading may not be the center-most value. Anyway, this value is taken in d.mmss so a value of 0.001 will allow a range of 10 seconds in readings.
Next what you would do is press |RESET| to clear out any other readings that might be in there. Afterall, like most of the other programs, your work here is not volatile.
Now, just enter your readings for one point with |OBS|. An average is displayed with each observation. Even if the values go above and below 0-00-00 it's okay. I know some will avoid setting zero for this very reason, but it's okay with this program.
Once you've entered to your satisfaction, you can press |->STK| to push the average onto the stack for possible use elsewhere.
|>VIEW| view your settings and current average.
|BACK| returns you to back to the program it was called from.
|TOL| expects a tolerance in d.mmss, someting like .001
|RESET| resets values to get ready for new average.
|->STK| pushes average onto stack.
|OBS| expects a plate angle to average.
Example:
Say you had traverse notes like these
OBS BS FS
dir 0-00-10 177-02-03
rev 180-00-05 357-02-10
dir 0-00-08 177-02-07
rev 180-00-07 357-02-08
First, if it's not set to Dir & Rev, then change the setting with [/->] |>VIEW|. Now, let's enter the tolerance as 20 seconds.
Linear Baseline
This program solves for horizontal coordinates relative to a baseline that is a straight line. Please read the section on HORIZONTAL ALIGNMENTS for more details on using it.
|INCR| expects an increment to change station by.
|STA-| retards by increment and solves.
|STA+| advances by increment and solves.
|O/S| expects an offset, the offset to be solved for, use a negative value for left.
|STA| expects a station, the station to be solved for.
|SOLVE| solves for coordinate.
|VIEW| view variables.
|P O L| expects the coordinate for the Point On Line.
|@STA| expects the station at the point on line.
|AZI^| expects the azimuth of the line pointing upstation.
|O/S?| expects a coordinate, solves for the station and offset of the coordinate.
Radial Baseline
This program solves for horizontal coordinates relative to a baseline that is an arc. Please read the section on HORIZONTAL ALIGNMENTS for more details on using it.
This program gives you the choice of variables used to define your baseline. In one case, you provide radius point and radial azimuth. In the other case, you provide the Point On Curve and the tangential azimuth pointing forward. To switch between the two modes, press [/->]|>VIEW|.
|INCR| expects an increment to change station by.
|STA-| retards by increment and solves.
|STA+| advances by increment and solves.
|O/S| expects an offset (to be solved for), use negative for left.
|STA| expects a station, the station to be solved for.
|SOLVE| solves for coordinate.
|>VIEW| view variables.
|RD PT| expects the coordinate for the Radius Point.
|RD/RO| expects the Radius/Rotation, use negative for left-hand curves.
|POC.S| expects the station at the Point On Curve.
|AZPOC| expects the radial azimuth to the point on curve.
|O/S?| expects a coordinate, solves for the station and offset of the coordinate.
or
|INCR| expects an increment to change station by.
|STA-| retards by increment and solves.
|STA+| advances by increment and solves.
|O/S| expects an offset (to be solved for), use a negative value for left.
|STA| expects a station, the station to be solved for.
|SOLVE| solves for coordinate.
|>VIEW| view variables.
|P O C| expects the coordinate for the Point On Curve.
|RD/RO| expects the Radius/Rotation, use negative for left-hand curve.
|POC.S| expects the station at the point on curve.
|AZFW| expect the azimuth forward (tangential azimuth upstation.)
|O/S?| expects a coordinate, solves for the station and offset of the coordinate.
Spiral-IN Baseline
This program solves for horizontal coordinates relative to a baseline that is spiral TS to SC.
Operation and concept is the similar to the Radial Baseline and Linear Baseline programs. One small difference is that there wasn't enough room for both |STA+| and |STA-| at the same time, so you have to use [/->] to switch between the two choices. See THINGS TO KNOW.
|O/S?| expects a coordinate, solves for the station and offset of the coordinate.
|>VIEW| view variables.
| TS | expects the coordinate for the TS.
|TS ST| expects the station for the TS.
|TS AZ| expects the tangential azimuth (upstation) at the TS.
|LENG| expects the length of the spiral.
|RD/RO| or expects a radius or spiral angle respectively (negative for LH.)
Spiral-OUT Baseline
This program solves for horizontal coordinates relative to a baseline that is spiral CS to ST. Operation is the same as for Spiral-IN Baseline.
|>VIEW| view variables.
| CS | expects the CS coordinate.
|CS ST| expects the CS station.
|CS AZ| expects the tangential azimuth (upstation) at the CS.
|LENG| expects the length of spiral.
|RD/RO| or expects a radius or spiral angle respectively (negative for LH.)
Arc/Arc Intersect
This program solves for the intersection points of two arcs. Once you've entered your variables, press |SOLVE| and a screen will appear to verify what you've entered and allow you to choose which solution you want. |LEFT| will give you the intersection on the left of the line from radius point 1 to radius point 2. |RIGHT| will give you the intersection to the left. And |BOTH| will give you both.
|R.PT1| expects the coordinate of the radius point of the first arc.
|RAD 1| expects the radius of the first arc.
|R.PT2| expects the coordinate of the radius point of the second arc.
|RAD 2| expects the radius of the second arc.
|INTER| returns you to the intersection menu.
|SOLVE| solves for intersection.
Arc/Line Intersect
This program solves for the intersection points of a line and a curve. Once you've entered your variables, press |SOLVE| and a screen will appear to verify what you've entered and allow you to choose which solution you want. |NEAR| will give you the solution nearest the P O L, |FAR| will give you the farthest from the P O L, and |BOTH| will give you both solutions.
|RD PT| expects the coordinate of the radius point.
|RADIU| expects the radius.
|P O L| expects the coordinate of the Point On Line.
|AZI| expects the azimuth of the line.
|INTER| returns you to the intersection menu.
|SOLVE| solves for intersection.
With all editions except the Small edition, you have the option of entering bearings instead of azimuth. Use the [/->] |>AZI| to switch to it and [/->] |>BR| to switch it back.
Line/Line Intersect
This program solves for the intersection point of two lines. Each line is defined by the direction of the line and a coordinate on that line. Once you've entered your variables, press |SOLVE| and a screen will appear to verify what you've entered. If all's well, just press |MORE| to continue with the answer. The coordinate is left on the stack.
|POL 1| expects the coordinate for the point on line 1.
|AZ 1| expects the azimuth of line 1.
|POL 2| expects the coordinate for the point on line 2
|AZ 2| expects the azimuth of line 2.
|INTER| returns you to the intersection menu.
|SOLVE| solves for intersection.
With all editions except the Small edition, you have the option of entering bearings instead of azimuth. Use the [/->] |>AZ 1| to switch to it and [/->] |>BR 1| to switch it back.
Coordinate Conversion
When working with rectangular coordinate systems, I think they're called cartesian, this program converts coordinates in one system to coordinates in others. About 1993 or so, I was told we were going to be changing over to metric, so I wrote this program. We haven't started yet. I don't think it's going to happen, but I keep the program just in case. Sometimes I use it to do a poor man's resection.
What you do is enter the coordinates for the same two points in both systems. If you have a scaling factor, you can enter it. If not, the program will figure one out for you, just enter 0(zero) as your scaling factor. Then you can convert coordinates either direction. Converting a block of points in a coordinate can be done using |BLOC|. |BLOC| will prompt you. It only converts OLD to NEW, and it doesn't convert unused points in the block.
Now on the scaling factor. If the unit in the old system were the foot and the unit in the new system were a yard then the scaling factor would be 3. Setting the scaling factor to 0 will let the program figure out the scale itself. When automatically figuring the scale, the program NO longer forces a scale close to 1 to be 1. So, if you have a scale, better put it in.
|VIEW| views settings.
|BLOC| converts a block of coordinates (OLD to NEW), prompts you for Pt.#s.
|N->O| expects a coordinate from NEW system and converts to OLD.
|O->N| expects a coordinate from OLD system and converts to NEW.
|VIEW| views settings.
|OLD1| expects coordinate of point 1 in OLD system.
|NEW1| expects coordinate of point 1 in NEW system.
|OLD2| expects coordinate of point 2 in OLD system.
|NEW2| expects coordinate of point 2 in NEW system.
|SCALE| expects scaling factor, use 0 if unknown.
End Area
This program calculates an area from coordinates using the coordinate method. What you do is enter the starting coordinate, be it North/East or Offset/Elevation, with |START|. Then you enter each subsequent point as you work your way around the perimeter with |NEXT|. When you enter the same coordinate you started with, the area is revealed. If you've stored them to a coordinate file in sequence, you have |BLOC| recall and enter them for you. You will be prompted for point numbers. |BLOC| is mindless and just recalls the point number and runs them through, then after reaching the last one, it recalls the first point to close out the perimeter. Useful for end areas.
|START| expects the coordinate of your starting point.
|NEXT| expects a coordinate and is used to enter each subsequent point along the perimeter.
|BLOC| will prompt you for point numbers.
|ST#| expects a point number.
|CHNK| "CHUNK" expects "from" point number in level 2, "to" point number in level 1.
|NXT#| expects a point number.
Now for example, to figure the area of the figure shown above, you'd key in something like
Don't forget, you can use a coordinate file to make this easier. Sometimes, it's easier to store the data in a coordinate file and fix your mistakes there than to flawlessly key it in.
Okay, now say you have stored your coordinates or offset/elevation as coordinates in a coordinate file, and you stored them in order as you go around the perimeter. Well, if you set yourself up like this, as you might very well do with an end-area, you can use |BLOC|. Say you stored them as points 3 thru 13, you'd key in
Newly added to the End Area program are the |ST#| and |NXT#| and |CHNK| softkeys. It has come to my attention that it would be very useful to work this program using point numbers for stored coordinates as well as using coordinates on the stack. What these new softkeys do is take a point number and recall that point and then enter the coordinate to the End Area program. You use |ST#| and |NXT#| just as you would |START| and |NEXT|, except you use point numbers instead of coordinates. It is an entry aid. Actually, all it does is eliminate the need to press [PRG] in the process. So, you could mix using the keys that expect a coordinate and the ones that expect a point number. |CHNK| "CHUNK" takes two numbers from the stack, a "from" point number and a "to" point number and is another entry aid that will recall and enter a sequence of points as "next" points.
Now, say you had stored your coordinates, but they aren't entirely in order. Say your sequence is 2,13,12,11,10,9,8,3,2. You could key in
Triangle Solutions
This program solves for those five popular triangle programs. Choose the scenario that suits your needs. Enter the three knowns and press |SOLVE|. The answers are displayed. If you need the values, pressing |->STK| will push them on the stack. |TRIAN| gets you back to the Triangle Solution menu.
Curve Data
This program solves for various aspects of a curve given the delta of the curve and the radius. Just enter the delta with and the radius with |RADIU|, then press one or more of the |SOLVE| buttons. You may have noticed that there are three |SOLVE| buttons. This is because each solves for different aspects of the curve. Not every aspect is of interest, so you can just solve for the solutions you want.
Fit a Curve
Designing a curve, or reverse engineering a curve, this program lets you figure out what a curve might be. Once at the Fit a Curve menu, you are presented with a choice of three variables you might want to hold constant while you play with a second one. The first three variables are |CHORD|, |RADIU|, and . What you do is enter one of the three variables. Then your menu will change to one with choices for your second variable. You can try out one or more second variables, over and over until you've discovered your curve. |NEW| on the second variable menu brings you back to the first variable menu.
Deflection Angles
This program calculates deflection angles and chords for a non-coordinate method of laying out curves. Generally, before the age of computers, this was a great way to layout curves because you didn't have to recalculate for each setup. The bad part is you need to set up on the curve itself. The short chords ( between stations staked ) are provided, as well as the distance from the instrument. On the 48 it's displayed as "Dist(gun)" because there's a lack of room on the screen.
Even in modern times, this routine can be useful for times when you do have key points in place and coordinates would be impractical. Might be good for a fence or something like that. However, I have not personally used this method in several years, and I am a little hazy on how things should be. Please test it thoroughly, make sure it works out properly.
There are several variations on how people do this, so I'll explain how it's done in this program. Some instruments measure left and right angles, some only measure to the right. If you are okay with going both directions, then left hand curves are no problem. If you can or are only comfortable turning to the right, then this program has a twist to make it easier for you.
If you have a left hand curve, and you set the program RD/RO to a negative number, then it will generate the angles like this. The angle for the PT will be 0 degrees, the angle for the PC will be the full deflection. This is supposed to be easier on the human setting the angles than if you set 0 degrees at the PC and have those large "three-hundred something" numbers coming out.
If you set the radius to a positive number, then the PC will be 0 degrees and the PT is the delta/2. I know this sounds just like turning to the left, but the angles are for an instrument turning to the right.
Now regardless of whether you have a left hand curve or a right hand curve, you may need to move up on a staked station and backsight the previous setup. Well, some folks flip the telescope, sight the previous point with the angle for that point. If you do this, no further calcs are needed. However, some people don't like to flip and some instruments piggyback the EDM and don't like to be flipped. Whatever. If you can't or won't flip the telescope, you just add 180 degrees to the angle for that point, right? Okay, if you change the setup station in the program, it will add the 180 to your back stations. If you are setup at the PT, it will not add the 180 for the backstations, because you are only looking back, not forwards and back.
The |BS T| "backsight tangent" button suggests a backsight angle for you when you are setup at the PC or PT.
|BS T| suggests a BS when SET@ is the PC or PT station.
|ARC->| expects an arc length and returns the chord.
|INCR| expects the increment to advance or retard station by.
|STA-| retards station and solves.
|STA+| advances staion and solves.
|STA->| expects a station and solves.
|VIEW| views setup.
expects an angle for the delta of the curve.
|RD/RO| expects the radius of the curve, negative for LH.
|PC ST| expects the PC station of the curve.
|SET@| expects the station to setup on.
|STA->| expects a station and solves.
Example:
Say you had the PC and PT already in place. Your curve delta is 35 degrees 10 minutes, your radius is 800, and it turns to the left. Let's make the PC station 0+00, and we're going setup there first. First let's put that info in the calculator. Get to the menu where you enter your variables. Key in
Curve Points
This program solves for the break points of a curve as well as the curve data. There are two options to this. The PI is known, solves for the PC, radius point, and PT. The PC is known, solves for the radius point and the PT. You switch by pressing [/->] |>PC| and [/->] |>PI|. You can tell the difference by what's on the menu, and when you press |SOLVE|, you get a chance to verify what you entered. You can also tell from that screen.
In addition to the PI or PC, the azimuth going into the curve, the azimuth going out of the curve, and the radius need to known. Once you enter these things, press |SOLVE| and what you've entered is diplayed for verification. If it's okay, press |MORE| and it will continue on and display the curve data so you can check it against your plans or map. If that's okay, press |MORE| and it will produce the coordinates of the break points.
|AZ IN| expects the azimuth going into the curve.
|AZOUT| expects the azimuth going out of the curve.
|>PC| or |>PI| expect a coordinate for the PC or PI.
|RADIU| expects the radius of the curve.
|SOLVE| solves for the break points and curve data.
Spiral Points
This program is very similar to the Curve Points program. Instead of solving for only the break points of a simple curve, it solves for the break points of the spirals and simple curve if there is one. It assumes you are solving for symmetrical spiral-curve-spiral or spiral-spiral scenarios. You can start from the PI or TS, and you have a choice of using a radius or spiral angle as variables.
You use it the same way as you use the Curve Points program. When you press |SOLVE|, you get a screen verifying you entered things correctly. Then, when you press |MORE|, it continues on and gives you spiral information so you can check it against what is shown on your plans. Then pressing |MORE| will continue on and provide you your solutions. The azimuths shown after the CS, SC, and SS coordinates are the tangential azimuths upstation.
|AZ IN| expects the azimuth going into the curve.
|AZOUT| expects the azimuth going out of the curve.
|>TS| or |>PI| expect a coordinate for the TS or PI.
|LENG| expects the length of the spiral.
or |>RAD| expects the spiral angle or the radius respectively.
|SOLVE| solves for the break points and curve data.
Radius Calculator
This program calculates a radius given a degree of curve or spiral angle and length. |DC->| takes your degree of curve (100' arc) and converts it to a radius in feet. |DCC->| takes your degree of curve (100' chord) and converts it to a radius in feet. takes a spiral angle and length of spiral and converts it to a radius. The answers are left on the stack.
|DCC->| expects the degree of curve in d.mmss format (100' chord.)
|DC->| expects the degree of curve in d.mmss format (100' arc.)
expects the spiral angle and the length of the spiral.
Utilities
This has those little utility programs in it. You can change the system settings, do a file transfer, print out points, or even enlarge your coordinate file here.
|VIEW| view settings.
|PRTPT| prompts you for point range to print to infrared printer.
|PROT| toggles overwite protection ON/OFF. With overwrite protection ON, you will be prompted before a used point is overwritten.
|STORE| toggles you between auto-store and manual-store. Auto-store will store coordinates to file as they are generated.
|TFR| brings you to File Transfer menu.
|BOOST| prompts you for how many points to enlarge file by.
|VIEW| view settings.
|FILER| same as [/->] [PRG], coordinate file selector.
|ELEV| expects an elevation and/or prompts you, changes the default elevation for storing points.
|ABOUT| credits, series number.
|VIEW| view settings.
|QUAD| toggles you between quadrant styles, HP 1,2,3,4 or Corners 9,3,1,7.
|N/S| toggles you between North oriented and South oriented azimuth.
|STA| toggles you between English:0+00.00 and Metric:0+000.000 station format.
|N&E| toggles N,E and E,N entry/display coordinate format.
|BEAR| toggles between Original and Composite bearing entry format.
File Transfer
This program helps you back up your files to a computer or just share them with another HP-48. It uses the built in kermit commands, but helps out by using the file selector to pick the files to send. Set both sides to the same port, baud and type. Then on the receiving side press |RECV|, and on the sending side press |SEND|. When you press |SEND| the file selector will start up and once you highlight the file you wish to send, press |USE| or [ENTER] to send the file.
|VIEW| view settings.
|PORT| toggles between IR and WIRE port.
|BAUD| changes the baud choices.
|TYPE| changes the type of files to send and receive.
|RECV| initiate receive, waits for file.
|SEND| initiates appropriate file selector to choose file and send.
The COORD IMP/EXP type option is finally up and running. This is a rare feature to find outside of a commercial endeavor. The vast majority of shareware I have encountered don't have this feature, and after writing the routines myself, I understand why. Instead most will have you transfer your files in native form and then translate it on a PC or some other platform.
What the EXPort portion does is take a coordinate file in your hp-48 and translate it to an ASCII format on the fly as it transmits it using my interpretation of the KERMIT file transfer protocol. The IMPort portion does the reverse. It receives a coordinate file in ASCII format and translates it on the fly as it gets it. Unfortunately, I am not an expert programmer nor an authority on Kermit, so as a result, the program runs somewhat slower than commercial software of this type. BUT, it works! And I have some thoughts on how to speed things up, but those things need to be done in assembler, so that's for another day.
Note: Import runs too slowly from slot 2. It may not even maintain a connection. Import should be run from slot 1 until the routine is improved.
What would you use this for? Well, you can use it to send coordinates to a PC or something, so you can review it in plain text. On the reverse side, you can create a coordinate file with some other software and send it to the calculator. You could also use the IMPort to add to your coordinate file. But most notably, you can exchange coordinate files with some commercial HP-48 surveying software directly via the IR port. This cross-platform ability might be most useful in the field when you want everyone on the same page.
To use COORD IMP/EXP is almost like when sending and receiving other file types except for a few details. When you want to send a file and you press |SEND|, the file selector will start up. Then when you choose a file, it will stop and ask if you want to send the whole file or just a block of it. If you choose |BLOC|, you will be prompted for the point number range you want to send. The portion of the file will be sent upon entering a valid range.
Don't forget, if you plan to export your coordinate files, you may have to adhere to a naming convention of the software you are exporting to. For example, the software I would export to, requires that you name your coordinate file with up to eight characters and with the extension .CR5, where CR are capital letters. Changing the file name can be a difficult task, I use FILER48 for this. It's also great for backing-up and restoring files on RAM cards. It's freely available on www.hpcalc.org.
To import a file, there are some things to consider. If a coordinate file of the same name as you are trying to import already exists, then you will be prompted as to whether or not to write to that file. What will happen if you write to it is all the points received will be placed in the existing file over whatever coordinates may already be there. It is not replacing the entire file with a new one. If you are receiving a file with many points, this could be useful. Just create or boost the file to cover your point range before hand so that when receiving, the program doesn't need to pause and enlarge the file frequently.If for some reason you wish to cancel while importing a coordinate file. Let me warn you, if you hit the [ON] key while it's enlarging the file, conceivably you might lose the entire file. I have not been able to make this happen during testing (and I've tried,) however, it might be safer to cancel on the sending side then press [ON] while the 48 is waiting for a packet.
IMPORTANT: The IMP/EXP ASCII format, both import and export, depends on how the N&E settings are set. If they are set to display North East, then the format will be like:
Now, if you have it set to East North, then the format will be like:
If this notation is too mysterious for you, you could create a coordinate file and export it using something like Hyperterminal(included with Windows,) then look at it with something like Notepad(also included with Windows.) It should then make sense.
You may have noticed a description field. Well this software doesn't use a description field in the coordinate file, but to remain compatable with other software, one is required for importing. You aren't required to put a description in, but the comma seperator is required. Each line can be up to about 200 or so characters and must end with a carriage return line feed. No headers, trailers, or extra carriage return line feeds are accepted.
If you are receiving a file that doesn't already exist, the first point needs to be the lowest number point, as this will be used as the lowest point in the coordinate file.These conditions will cause receiving a file to end:
To use the IMPORT/EXPORT feature, communication settings must be set to:
And while it probably will work anyway, you should also set the flow control to NONE.
So why all the trouble of creating my own Kermit routine? I guess creating a temporary file and sending it with the built-in Kermit might work except for the lack of space in the HP-48 and the header the built-in Kermit would send. I guess I could send a stream to the serial port like some commercial software does for printing, but that would probably fill the buffer and require flow control and it lacks checking on the receiving end. Don't forget, you'll need some software on the receiving end to capture that stream, and that's not always available. Kermit has a stop and wait process, so it's unlikely it'll overflow the buffer. It checks each packet it receives, and has bad packets resent. Kermit is ubiquitous, so there is likely a free one for the system you use. And best of all, it allows this Low-Budget program to exchange coordinates directly with commercial software that has also adopted this strategy.
Gradester
This program generates elevations along a vertical alignment. You can compose the alignment of straight line grades and vertical curves. Given a station Gradester will return the elevation at that station if possible.
To begin, start up the filer with |FILER| on the Gradester menu. If you're in the desired directory, create a file. You may want to see the section on COORDINATE FILES AND THE FILE SELECTOR. Once you create the file and you verify it's the active file, quit the filer with |EXIT|.
Next, you need to add some elements to the file, so you press |EDIT|. When the editor starts up, you press |ADD| to add an element. You choose which type of element you want to enter, then enter the variables that describe the element. Next, you'll enter the range the element is to be used over. The FROM station must be less than the TO station. When you add, it inserts the element right after the one you're looking at. Continue to enter as many elements as you need.
When you're finished entering elements, quit the editor with |EXIT|. A file checker is provided, it's highly recommended you run the checker by pressing |CHEC|. If you find errors, hit |EDIT| and fix them. Once you've got everything correct, you use it just like you would the other two vertical alignment programs. Please note that |CHEC| only checks for continuity. It checks that there is zero gap in station and that there is no gap in elevation more than 0.0001. It does not check for tangents that match curves. So, it is good to check the PIVCs of the curves carefully for mistakes.
The elements you enter have all the characteristics of the programs they are based on. For example, when you use the SLG program, sta 1 does not need to be lower than sta2, nor are you confined to solving between those stations. And when you use the VC program, for stations outside of the curve, elevations are returned as though on the tangent. Well anyway, that's how you are allowed to use each element in the gradester file. Another thing to be aware of, is that when you toggle on break points, the break points are determined by the range of use stations. This may be important for a grade setter. On the other hand, the more elements you have, the more memory it consumes, and potentially more things to search through when looking for a station. So depending on your needs, you can stategically plan what elements you use.
A side note here. If you place elements out of sequence, or use bad ranges, there is a possiblity it may start searching endlessly. The previous version of this only searched in one direction, avoiding the problem, but this one will go up or down in hopes of speeding things up. So again, I must re-emphisize to use |CHEC| once you've completed entering your elements.
|FILER| interactive, it creates, chooses, and deletes directories or Gradester files.
|EDIT| edits currently selected grade file.
|INCR| expects an increment to change station by.
|STA-| retards by increment and solves.
|STA+| advances by increment and solves.
|STA->| expects a station and solve for elevation.
|VIEW| view current conditions.
|BRKS| toggles break points ON/OFF.
|PRINT| prints to IR printer a range of stations.
|CHEC| checks currently selected grade file for continuity (+/-.0001 elev.)
Superelevation
Used for figuring along segments of a superelevation diagram. They usually can be broken down into sections of zero slope, vertical curve, slope, vertical curve, zero slope. You enter the PI stations, the elevations of the zero slopes and the lengths of the vertical curves. Note that STA 1 doesn't have to be lower than STA 2.
|VIEW| views variables.
|INCR| expects an increment to change station by.
|STA-| retards by increment and solves.
|STA+| advances by increment and solves.
|STA->| expects a station and solve for elevation.
|STA 1| expects a station.
|ELV 1| expects an "elevation" actually the %superelevation.
|LEN 1| expects the length of vertical curve 1. 0 is allowed (linear transition.)
|STA 2| expects a station.
|ELV 2| expect an "elevation" actually the %superelevation.
|LEN 2| expects the length of vertical curve 2. 0 is allowed (linear transition.)
Straight Line Grade
This program solves for elevations along a straight line grade. You define the line with two stations and the elevations at both stations. Note that station 1 does not need to be lower than station 2. The solution elevation is left on the stack with the station tagged to it to help you remember. Treat it as an ordinary number.
|VIEW| views variables.
|INCR| expects an increment to change station by.
|STA-| retards by increment and solves.
|STA+| advances by increment and solves.
|STA->| expects a station and solves for elevation.
|VIEW| views variables.
|STA 1| expects a station.
|EL 1| expects the elevation at station 1.
|STA 2| expects a station.
|EL 2| expects the elevation at station 2.
|STA->| expects a station and solves for elevation.
Vertical Curve
This program solves for elevations along a vertical curve as well as the "turning point." For stations outside of the curve, the elevation is calculated as though on the tangent section. The solution elevation is left on the stack with the station tagged to it to help you remember. Treat it as an ordinary number.
|VIEW| views variables.
|SAG| calculates sag or crest point and grade-in, grade-out, and length.
|INCR| expects an increment to change station by.
|STA-| retards by increment and solves.
|STA+| advances by increment and solves.
|STA->| expects a station and solve for elevation.
|BVCST| expects BVC station.
|BVCEL| expects BVC elevation.
|PI ST| expects PI station.
|PI EL| expects PI elevation.
|EVCST| expects EVC station.
|EVCEL| expects EVC elevation.
Leveling
Leveling is just meant as an aid in reducing your level notes. You can pick up at whatever point you want to. You can enter an elevation and then a backsight rod reading to give you a new HI or you can just enter a HI. |FS| (foresight) will subtract the value entered from the HI and store it as the new value for elevation. That's all there is to it.
Option 1
The first option has the softkeys |3WBS| and |3WFS| stand for "3-Wire BackSight" and "3-Wire ForeSight." You use these keys just like you would |BS| and |FS|, except you use readings from the two stadia lines as well as the center instead of just the center. It takes three values from the stack and does a three wire comparison if the value exceeds the tolerance specified, then it is flagged out with a beep and a star. In level 3 should be the upper wire reading, in level 2 should be the center wire reading, and the lower wire reading should be in level 1 before pressing these softkeys. Works with inverted rod.
Keys:
|3WBS| expects Upper in level 3, Center in level 2, Lower in level 1.
|BS| expects a BackSight rod reading and calculates HI from current elevation.
|HI| expects a Height of Instrument.
|FS| expects a ForeSight rod reading and calculates a new elevation from current HI.
|3WFS| expects Upper in level 3, Center in level 2, Lower in level 1.
|ELEV| expects an Elevation.
|>VIEW| view settings. [/->] |>VIEW| switches options.
|+/-| enters the tolerance to be flagged if exceeded.(something like 0.01)
|RND| decimal points to round to (for 3-wire and c/f.)
Option 2
The second option has the softkeys |PT#EL| and |TARG|. |PT#L| is used for recalling an elevation to the stack from your coordinate file. This is useful if you have your control points stored with elevations. |TARG| is used for entering a target elevation. With this option, when you enter a rod reading with |FS|, it calculates the cut or fill to the target elevation, which is useful for writing your C/F in your field book. |RND| on the second menu page will round the target elevation and the rod elevation to whatever decimal places you specified. This rounding takes place before the cut and fill is figured out. Please note, that the display is still going to display at whatever decimal places the calculator was set for.
Keys:
|PT#EL| expects a point number and recalls the elevation of that point.
|BS| expects a Back Sight rod reading and calculates HI from current elevation.
|HI| expects a Height of instrument.
|FS| expects a Fore Sight rod reading and calculates a new elevation from current HI and C/F.
|TARG| expects an elevation to calculate a cut or fill value to.
|ELEV| expects an Elevation.
|>VIEW| view settings. [/->] |>VIEW| switches options.
|RND| decimal points to round to (for 3-wire and c/f.)
Example:
Say you had level notes like these
You could use this program to reduce the notes. First, set your display to the appropriate decimal places since this program displays using what your calculator is set to. In this case, 2 decimal places would be appropriate.
EDM note reduction
This was an add-on program in previous versions, but at an overhead of only about 3600 bytes I just included it and left it as a hidden program. What this program does is reduce EDM notes 3-dimensionally. Again there is no correction for curvature or refraction, and of course there is no provision for descriptions.
While one could use this for reducing topo notes, commercial software does this much better. A data-collector is better yet. I use it for checking raw file processing, and I know someone who checks edm leveling with it.
If you change the settings to AUTO-Store, it will automatically store 3-dimensionally to file. If not, the results are left on the stack with the point in level 2 and elevation in level 1. So, you could just press [STO] and it will still store it 3-dimensionally.
To get to this program submenu, at the main menu press [/->] |TRAV|. Since this actually goes beyond the scope of what the program pack is intended for, it's not openly included on the main menu. If you would like to add it to your own CST variable or assign it to a key, the library function name is EDMMENU.
What you do is enter all the variables and press |SOLVE|. You have four modes to choose from and you move through them with [/->] |>VIEW|.
LOT Corners, area
I did want to name this program "Parcel" something or other, but "LOT" is just so much shorter and fits all on one softkey, so that's why I went with it. Perhaps one day I'll change that. What this program does is to calculate the coordinates of the corners of a lot or parcel as you traverse your way around the perimeter. It also lets you include arcs as needed, in which case the radius point will be calculated too. In addition to calculating the coordinates, it also calculates the area using the DMD method as opposed to the coordinate method. There are three forms of output available for this program. You can store the coordinates to the currently active coordinate file, you can print it to the IR printer, or you can have it create a variable called OUT.TXT which you can send to your PC and print out (it's basically a coordinate file with descriptions.)
So here's how it goes. You create or select a file just like you do with GRADESTER or the Traverse W/Closure program. Next, you enter your starting point with |START|. This works just like its Traverse W/Closure counterpart except you enter a coordinate instead of a point number. When you enter a coordinate with |START|, you clear out whatever perimeter information you may have entered in this file previously. Next you enter each "LEG" as you traverse around the perimeter. Pressing |ENTR| will run a program to let you enter each leg. Just |CANC| when finished entering your legs. Please note that the prior leg's values will remain in the boxes because sometimes you want to repeat a direction or distance or maybe even the radius. If you made some entry mistakes, you can fix them with the editor. When you think all's well, you can evaluate the file with |EVAL|. |EVAL| will process the file and then prompt you for an initial point number. This is the number you want to begin numbering your coordinates at. If you enter an empty line, it will just cancel the processing, if you enter a point number, then it will generate a report you can page through.
At this point |OUTPU| will be one of the softkeys. Pressing it will let you choose how or if you want to produce output. If you choose |STORE|, it will try to store the points to the currently active coordinate file. Here's how it operates:
Now, for any of this to work, I need to explain to you what I am calling a "LEG." I couldn't come up with a better name, so I just call it a "leg." In this case, a leg is a line segment defined by a distance and a direction and an arc on the end of it which is defined by the direction and radius. The direction defines the ingoing tangent of the arc, and the outgoing tangent is defined from the next leg in the circuit. If it's the last leg, then it picks it up from the first leg. You can have a leg that has a direction, a non-zero distance, and zero for radius which would make it just a straight line segment. You can have a leg that has a leg with a direction, zero distance, and a non-zero radius. This would be good as the start of an arc which doesn't come off of a straight part or doesn't follow the straight part. You could have leg with a direction, a zero distance, and zero radius. This would be good for ending an arc that doesn't follow the next tangent section. Anyway, this scheme seems to work so far. The 48 is limited, so checks are limited. There is no checking for crossing lines, extraneous legs (zero distance and radius and no purpose), or other bogus information.
This program determines which way you are going around the perimeter by the change in directions. SO, if you have crossing lines or too many extraneous legs, you could get a bogus answer. Just to let you know.
|>VIEW| views status. [/->] |>VIEW| toggles bearing and azimuth modes.
|START| expects a coordinate. It clears out current entries and stores starting point.
|FILER| creates, deletes, selects files and directories.
|EVAL| processes the LOT file and allows you to produce output if desired.
|EDIT| interactive file editor.
|ENTR| activates program to enter each leg. Just fill in the boxes and press |OK|. |CANC| when done.
Personal note: This program is an experimental one. Originally started as a prototype for a PC program requested by several people, the one person who has been my guru on cadastral computer stuff has since retired. Regretfully, this was not completed in time for a review by him for integrity. Unable to reverse time (and I REALLY wish I could) I can only tender this program to the rest of the world for review.
Based on feedback, I will decide if to further polish this program or make this the only offering of it. It took a lot longer to do than I normally take to do one, even one of this complexity. It wasn't especially difficult, just tedious. There were many setbacks which made me think it wasn't meant to be. The setbacks were not programming related, but every time I started working on it, something would pull me from it, a bad omen to say the least. So, if you happen along this program during the year 2003 and you have an opinion (feedback) on it, good or bad, please feel free to email me with it. Thank you!
Examples:
Let's do the pretend-lot in this illustration.
Back to doing math while entering your legs, when you are at the entry screen, you can press [NXT] and the menu keys change to of which |CALC| will let you use the calculator functions including the ones assigned to the keys like HMS+ and HMS-. Just press |OK| when you are finished and the result is entered in the box. You just have to play around with it to figure out how it works.
THINGS TO KNOW
FREQUENTLY ASKED QUESTIONS
Q. I don't understand what you are talking about "port" in the installation instructions. What is this about ports and RAM cards?
A. These programs are designed to be able to run out of any port available to users. This is so that you can utilize your memory as you see fit. HP divides your memory into two categories, user memory (working RAM), and port memory. You can plug a 32K or 128K RAM card into slot 1 and merge it to increase your user memory.
You can write to port memory and programs can be run from it, but you can't (well us normal folks can't) alter objects you place there, so it's not a good to put variables you want to change in port memory. Port 0 is taken from your user memory. If you store things there, it takes that much away from your user memory. Port 1 is the unmerged RAM card you have in slot 1.
You can put any available size RAM card into slot 2. Slot 2 can only be used for port memory. The HP-48GX will only access ports in "banks" of up to 128K, so with RAM cards larger than 128K in slot 2, you will have more than one port available. Port numbering in slot 2 begins at port 2. So say you had a 256K card in slot 2, you'd then have ports 2 and 3 available.
In theory, the maximum port available should be 32, but I read somewhere that a software glitch doesn't allow use of port 32. Quien sabe?!?
These programs seem to run fastest from port 0 and port 1. From port 2 and higher, there is a noticable speed difference. The Coordinate file IMPort routine seems to be the most affected by this. It's the only one I know of that slows down so much, it shouldn't even be run from them.
Q. How do you stake-out [off a baseline] with this program?
A. This program was not intended to be used for staking at the instrument, so it's relatively clumbsy compared to a program designed for it. The Inv First feature was designed for writing
stake-out notes. Just toggle it on and when you solve for a station with one of the horizontal baseline programs, the direction and distance is given from the setup point under the traverse menu.
Q. Can you transfer points generated on the computer to the HP-48 and the other way around?
A. Well, I finally got off my butt and got the IMPORT/EXPORT features working in the File Transfer program. With them you can import and export generic ASCII coordinate files with a kermit based file transfer program. For large files, it's faster to send and receive files in the native form and just convert them on a PC with some programs I wrote to do just that. If you would like those PC programs, just ask me, I'll email them to you. I don't include them in the package anymore because the size was getting too much as well as they're crude.
Q. Can you include a description with the points [in the LOW-BUDGET file format]?
A. No.
Q. Is there a way to include curves in the Traverse W/Closure program?
A. No.
Q. Is there a version or a way to work in gradients?
A. Not yet. I have no experience working in this unit, so I am not sure I will create something. Unlike bearings, the conversion is troublesome.
DESIGN FEATURES
This is to point out some design features which make this program set special. While this probably has no impact on what you think about my programs, after spending like a gazillion hours on developing it, I felt compelled to point some of them out.
TECHNICAL STUFF
B2A Bearing to Azimuth menu
FEDIT Coordinate File Editor
FSELECTC Coordinate File Selector
MAIN Main menu
MODE.INV Toggle Inverse First mode
MODE.PRT Toggle Print mode
RCLPT Recall Point
STOPT Store Point (or anything else)
STOEL Store Elevation
STONEXT Next point number to store
REMOVING PROGRAM
There may come a time when you need to remove the Low-Budget Program. Explaining how to remove the libraries is perhaps frustrating, but reading my instructions on how to remove a library is probably even more frustrating. To help with the task of removing this or any of the Low-Budget programs, a program named UNJ is provided with this set.
This program removes libraries with the ROMIDs 1005 1006 1013 1014 1015. If you have a library you don't want to remove with one of these ROMIDs, then you should either modify the program before use, or manually remove the libraries.
The program may not be able to remove the library file for some reason. Maybe the RAM card is write-protected or something like that. If so, correct the problem and perform steps 4 thru 6 again.
Please note that if you are removing the program to upgrade, this DOES delete the JSETTINGS variable which contains the program settings.
The UNJ program should be able to remove the library file from any of the RAM based survey programs I've distributed. However, if you are removing an early version, say versions prior to 3, or you've reassigned the keys, the key assignments may be different. This could cause a problem when using the current version of the survey package. I recommend you delete the key assignments if this is the case. All you would have to do is type in 0 DELKEYS into your HP-48. This will delete all the key assignments. By the way, that's a zero(0) not an O(oh.)
If you're not sure if you have an early version, you may be better off just doing the 0 DELKEYS or better yet, do the three finger salute and blank your RAM by pressing [A] [F] [ON] at the same time. This is because launching some of the routines without the proper variables on the stack could cause a memory reset, some of the early key assignments could possibly do this. Changing the key assignments is not so much of a problem unless library function numbers change, which they shouldn't.