___________________________________________________________
FreeDS is an attempt at
creating an open source
land surveying application
for the HP 48. It is also an
attempt at promoting a concept diametrically opposed
to the ubiqitious window, menu
list, 'choose box' paradigm.
FreeDS is command line and
stack oriented. All user functions are accessed from
the first three pages of the VAR
Menu and from the keyboard.
A keyboard template image is included. You have to
supply your own printer,
x-acto knife and protective
spray and/or tape.
My MSDOS program SkiVert is used to convert comma-delimited
coordinate
files to the HP48 directory type
file used by FreeDS, and vice versa, as
well as producing dxf's.
I use Ripterm or Kermit for file transfer.
Also included is Freeds.E48, KMLs and bitmaps for Emu48.
Thanks to Mike Morris for the
Topcon communications source. And, regarding the
Emu48 version of FreeDS, thanks
to Casey Patterson for the Float_GX files;
I based my FreeDSsmall files on
them. Thanks to Jeffery L. McMahon for the
Jemac files.I based my full
scale graphic on them.
This document is not as
complete as I would like at this time. Additional
explanations, examples, etc.
will be provided with updates.
___________________________________________________________
Installation
Make sure your IO settings are as follows:
For PC to 48GX: wire, ascii, 9600, 0, 3, 1
For 48GX to 48GX: IR, binary, 9600, 0, 3, 1
Send the 'Kogo' file to your HP
using Kermit. This can be done with
the Kermit program, Ripterm, or
any serial communications program
which supports the Kermit
protocol. Insure that the filename as saved
on the calculator is uppercase
"K", lowercase "ogo".
After the transfer is done,
switch to the Kogo subdirectory on your HP.
Type U K S . (Include the period at the end.) A
list will appear on the
stack. This is the "User" key
assignment list.
Press [Left-Shift] [CST] [KEYS] [STOK] . The list is now saved in
memory, and will be referred to
when "User" Mode is active.
Next, type 4 [ENTER] [alpha] [alpha] F I X .
If you prefer the date and time
display, press
[Right-Shift] [CST] [ ^] [ CHECK ] [OK] .
Finally, set "User" Mode by
typing 62
[+/-] [alpha] [alpha] S F .
___________________________________________________________
The Kogo Subdirectory
This program exists as User RPL
coded program and data variables in
the Kogo subdirectory, accessed
via the VAR Menu. The VAR key is
labeled MAIN on the keyboard template @ key
24.1. Pressing it will
return you to the first page of
the VAR Menu. All functions are designed
to be used from the Kogo
directory. Although it's possible to use some
functions from job
subdirectories or elsewhere without generating error
messages or spurious output,
FreeDS has not been completely idiot-
proofed at this time.
Idiot-proofing has been implemented in areas where
errors would be fatal.
___________________________________________________________
The Keyboard Template
Function locations were designed
with preservation of useful native
commands in mind. Certain
functions are grouped by usage context.
They occupy a common key, or if
spanning multiple keys, are
bordered in black. At four
locations function names lie on a red
background. These are associated
with instrument communications.
___________________________________________________________
Creating (or Switching) Job Directories
VAR Menu
Page 2
The JOBS. directory
is reserved for subdirectories
created
using ->JOB. If a subdirectory by the name
submitted already
exists, that subdirectory
becomes the target for computations
involving point data. ex: [alpha] [alpha] OAKSPRINGS
->JOB.
If you have trouble remembering
a jobname, go to the JOBS.
subdirectory, press [ ' ] [ jobname ] MAIN NXT
->JOB.
___________________________________________________________
Storing Point Data with STP.
Overwrite protection (Flag 23)
is set or cleared using OwP on the
keyboard template @ key 62.3, in
the "SETTINGS" group.
Point data exists as list
objects stored in variables. Due to the
variable naming convention of
the 48, these variables begin with
an alpha character, in this case
"P", which is automatically
prefixed to the numeric part of
the variable name when stored
using STP , found on the keyboard template @
key 32.1, or the
first page of the VAR menu ( MAIN ). Storing a northing and easting
or northing, easting,
description as an unused P#, or existing P#
if OwP is off is as follows:
N E P# STP
or N E
D P# STP
You'll notice that the point
number is returned to the stack with a
P prefix. Point numbers are
named in this fashion and used
for point data storage. Point
data ( n e z d ) is saved as a
LIST object.
A default Z value ( 0 ) and
description (as set w/ >Des on the
keyboard template) are saved
along with the given N and E
when using the first example.
The result might look
like this: {5000 5000 0 PROPCOR
}.
The result using the second
example might be like this:
{5000 5000 0 TRAV }. By
including the description for storage,
the default description is
ignored. If you wish to save coordinates and
are unconcerned about
descriptions, use a single character for the
default description to save
memory.
Storing elev. using exist point#. (OwP status disregarded.):
Z P # STE
Storing description using exist point#. (OwP status disregarded):
D P # STD
The procedure for quickly
storing all point data
using the above commands is as
follows:
N E D P# STP Z SWAP STE
An efficient solution would be
to store groups of points with
like descriptions, setting the
default description with >Des
beforehand. The elevation would
be stored as above, by entering
it last, then SWAP STE .
>Des comes in handy when saving groups
of like descripted points,
though note that >P#, located left of>Des @ key 25.2, cannot be
used to manually store point
data sequentially. These functions, along
with the others in their group,
>MU("Measure Up") and >HR (Height of
Rod) are typically used prior to
saving a point measurement w/ STP
during data collection.
Sequential point numbering is done automatically
at this level, with the option
of changing the next point number,
description or rod height.
___________________________________________________________
Radial Stakeout by Point#
Use SO for radial stakeout by point#, SO+ and SO- for the same thing
w/ incremented or decremented
point#'s. An angle right and distance is
generated and put on the stack.
You can also recall this information via
the To SO screen.
___________________________________________________________
Stakeout Measurement
MEAS can be used after a point stakeout
using SO. If GUN is OFF,
manually keying in the
measurement and pressing MEAS generates
a come or go value. No provision
for vertical information exists if using
MEAS manually. If GUN is ON, pressing MEAS initiates an instrument
measurement, and generates the
As So (As Staked out) screen.
Stack after manual MEAS
(By the way, if the numbers don't seem to work in
the screen above, it's because
they don't! It was generated using Emu48 without
the benefit of a total station,
and is intended for layout illustration only)
___________________________________________________________
Radial Stakeout to a Line
BL is used to set up a line, using a
beginning point# and ending point#,
azimuth or bearing/quadrant#.
Subsequent use of BegSta, At
Sta, DIST ,
->OS., or ->RAD. puts an angle right, distance, and
N, E values on the
stack, and generates the To SO screen.
The coordinate can be saved
with STP . Note that it is NOT necessary to
save coordinates prior to
getting stakeout data.
BL needs help in telling whether the
object on stack level 1 represents an
azimuth, quadrant or point#.
Since the object at level 2 (if we're working with
an azimuth or two
point#'s) is by default a point#, we need only to distinguish
the second point# by prefixing
it with a 'P '. This can be done with the alpha
function as in [alpha] P 200 [ENTER ], or more efficiently by keying in
the
point# and pressing MkP#
Another line stakeout method is
BLRef (Left-Shift MEAS). BLRef can use
a coordinate generated by manual
SS, a point# (prefixed w/ MkP#), or the
measurement list produced by SS w/ GUN ON. BLRef then generates
reference information to guide
the rodperson.
___________________________________________________________
Saving Sideshot and Stakeout
Measurements with STP.
Enabling or disabling
instrument communication is done w/ GUN ON/OFF.
Pressing Left-Shift [Alpha]
toggles Topcon communications on and off.
With GUN OFF, the SS (Sideshot) routine takes an angle
right and distance
as arguments, returning a
northing and easting to the stack, ready for storage.
If GUN is ON, SS ignores the stack. Instead it gets
the angle and distance
information from the Topcon.
When an observation is obtained
from the instrument using SS or MEAS (after
a point stakeout using SO ), the pending P# is placed in a
LIST object along with
the received slope distance,
zenith angle and horizontal angle
{P123 100.7798 90.3015 310.1545 }
Afterwards, STP can be used to compute xyz
coordinates and store the shot.
(w/ Notes ON, raw data is saved too.)
STP computes rectangular values based
on the instrument data and the
values set by the functions
listed below:
>MU The
"measure up" - from occupied point to instrument
>HI
Instrument
Height - relative to sealevel - ( This is not accessed
via the keyboard template, but
can be used from the VAR Menu)
>HR
Rod Height
>P#
Pending
Point#
>Des
Pending Description
At any time prior to or after
using SS or MEAS, and prior to using STP ,
you can change the current rod
height, point#, and description to modify the
point data. The point number is
automatically incremented for the next shot.
Using STP after SS with the observation LIST at stack
level 1 produces results
similar to using STP after MEAS, with the "Come" or "Go" string
generated by
MEAS at stack level 1.
"Go:12.34"
The instrument measurements
LIST is put on the stack by SS; MEAS
returns a "Come:" or "Go:"
string. STP tests for the data type and acts
accordingly. Why is the LIST not
at level 1 in both cases?
Distinguishing SS and MEAS derived output is necessary so
these procedures
can be properly formatted and
appended to the string saved as the 'NOTES.'
variable. With Notes ON, measurements are recorded in a
readable format,
analogous to hand written field
notes, including enough information to serve
as a report file. The NOTES. variable contains a string (ie.
text file) to which
measurements are appended by STP while Notes is ON.
Associated with Notes is Nt Elev , an ON\OFF toggle for vertical
information
to NOTES., and PNte , a point lister.
Sample NOTES. string (w/ Nt Elev OFF):
Header:
%%HP:
T(1)A(D)F(.);
Begin
String:
"
Title:
Morrison
- Lot 64
Date:
02-02-02
Crew:
Smith
Bruce
List point
data:
P5013{4899.6397
5485.3933 0.0000 TRAV }
List point
data:
P5001{4261.3976
5524.3426 0.0000 P }
Occupied &
Backsight:
T@
5013 Bs 5001
Stakeout point# &
description: SO (5001) 'LOTCOR'
ARt and
HD:
0.0000
639.4300
S/O pnt
recorded:
Rec
as (5053) 'BSCHECK'
ARt and
HD:
0.0001
639.4400
Sideshot point# &
description: (5054) 'HSECOR'
ARt and
HD:
24.1033
52.8100
(5055) 'EPOLE'
166.2053 12.3100
(5056) 'WELL'
32.1043 162.4500
Stakeout point# &
description: SO (5014) 'LOTCOR'
ARt and
HD:
294.0537
489.9800
S/O pnt
recorded:
Rec
as (5057) 'CHK'
ARt and
HD:
294.0545
490.0200
Sideshot point# &
description: (5058) 'FLY'
ARt
1)112.0522
Rep
2)224.1046
Mean ARt and
HD
M)112.0523
307.5500
More NOTES. examples can be viewed, one with NtElev ON,
and one with multiple angles (ARep).
___________________________________________________________
Intersections and Resections
All of the routines listed in
this section solve for the coordinate of one
unknown point.
2 RES ( 2 Point Resection)
Technically not employing
'resection' calculations but involving a bearing
rotation solution, this
procedure is sometimes referred to as 'free stationing'.
It uses two known points, a
backsight distance, angle right and foresight
distance.
Enter two point#'s, a distance,
an angle right, and a distance.
112 201 57 326.2318 302.0937 2 RES
3 RES (3 Point Resection)
(Collins Method) With 3 RES a all you need are three known
points and two angles.
Since distances are not
necessary, this eliminates the need for a
rodperson's presence at any of
the points as long as they are visible.
Which pretty much means you'd be
sighting building corners, radio towers,
Enter 3 point#'s and two angles in the order of observation.
112 201 57 326.2318 302.0937 3 RES
AAX ( Azimuth - Azimuth Intersection)
I saw no point in enabling the
use of bearings and quadrants; It
seems a small thing to convert
them yourself.
Enter the first point#, azimuth,
second point#, and azimuth.
42 107.1829 44 05.1749 AAX
DDX ( Distance - Distance Intersection)
As you know, there are two
solutions to any distance - distance
intersection problem. This
routine returns one solution. You determine
which one by entering the known
points and distances in sequence so
that the solution lies to the
right, or clockwise (less than 180 degrees)
fromthe known points.
Enter the first point#, distance
from it, second point#, and
distance.
109 32.67 111 50.00 DDX
ADX( Azimuth - Distance Intersection)
Enter the first point#, the azimuth, the second point# and the distance.
42 232.47 44
325.1209 ADX
___________________________________________________________
Command List
Ordered by Menu and Template
Position
Listed below are all of the
FreeDS user functions and some
native keyboard functions
preserved for convenience. Detailed
descriptions not already
provided will be included with document
updates.
VAR Menu
Page1
R->P.
Rect
to Pol
P->R.
Pol
to Rect
INVERS.
Point
Inverse
->OS.
Baseline
Offset Distance
->RAD.
Baseline
Radius Distance
stp.
Store
point (calls STP.)
Page 2
->HI.
Height
of Instrument
->HR.
Height
of Rod
TLEV.
Trig
Levels - VD; ( Uses HI. and HR. )
DLEV.
Differential
Levels; ( Uses HI. )
->JOB.
Create
/ Switch Job
JOBS.
JOBS.
Subdirectory
Page 3
ABC.
Area
by Coordinates
RC>A.
Radius,
Chord; produces Area Under Arc, Arc Length
BEAM.
(Used
w/ Alidade and Plane Table) Distance,
Beamon Arc Reading and Rod
Reading for
Ground Elev @ Rod
LEVL.
(Used
w/ Alidade and Plane Table) Rod Reading
for Ground Elev @ Rod (when
alidade is level)
___________________________________________________________
User Keys
Label ( Program
Name )
Description
2 RES ( RESCT.
)
Two
Point Resection
3 RES ( TPRS.
)
Three
Point Resection ( Angles Only )
AAX ( BBINX.
)
Azimuth
- Azimuth Intersection
RCP ( RCP.
)
Recall
Point Northing & Easting
DDX ( NDDX.
)
Distance
- Distance Intersection
ADX ( BDINX.
)
Azimuth
- Distance Intersection
BL ( BL.
)
Establish
Baseline by Point # - Point #,
Point # - Azimuth or Point # -
Bearing - Quadrant #
BegSta ( STA1.
)
Beginning
Baseline Station
MAIN ( S2M.
)
Default
to 1st Page of VAR Menu
>MU ( MUPR.
)
"Measure
Up" ( For Height of Instrument )
>HR ( >HR.
)
Height
of Rod
>P# ( >PNT.
)
Set
Pending Point #
>Des ( >DESC.
)
Set
Pending Description
prev ( PREV
)
(Native
Command) - PREVious Menu Page
SHI ( HIGET.
)
Establish
Instr. Ht. by BM Shot
updir ( BUPDIR.
)
UPDIRectory
- Will not go above 'FReeDS' to HOME
PNte ( SPCTN.
)
Write
Point data to NOTES., and Display
STP ( STP.
)
Store
N, E or N, E, Desc as Point #
STE ( STOEL.
)
Store
Z to Ex. Point #
STD ( STOD.
)
Store
Description to Ex. Point #
DIST ( DIST>.
)
Distance
Interval along Baseline
To Sta ( STA2.
)
Stake
at Station Value along Baseline
UNDO ( UNDO
)
(Native
Command)
SETUP ( MKPNSETUP. )
Establish Occupied and Backsight Point #'s
HSet ( TOPHSET.48G
) Set Instrument Hz Angle
Trv ( AHD>.
)
Occupy
New Point# , Backsight
previously occupied Point #
To So ( SHOWD.
)
Displays
"To be Staked Out" parameters
As So (
SHOWD2.)
Displays
"As Staked Out" measurements
SS ( 27 SF RECSHT. VSTR. )Displays
Sideshot measurements
Gen ( SETSHOW.
)
The
General Settings Info Screen
Label ( Program Name ) Description
SO ( MKPNSO.
)
Stakeout
Point #
SO+ ( INCRN.
)
Stakeout
Next Point #
SO- ( INCRP.
)
Stakeout
Prevous Point #
SS ( SS.
) Sideshot
OSA ( AOS.
)
Angle
Offset
ARep ( ADBL.
)
Angle
Repetition
DDeg ( HMS>
)
(Native
Command)
HMS ( >HMS
)
(Native
Command)
HMS+ ( HMS+
)
(Native
Command)
HMS- ( HMS-
)
(Native
Command)
MkP# ( MKPN.
)
Mark
Integer as Point # ( As Needed for BL., etc. )
HMSx ( HMSM.
)
HMS
Multiply
HMS/ ( HMSD.
)
HMS
Divide
MEAS ( SCD.
)
Measure
Stakeout
BLref ( A2L.
)
Reference
Point or Sideshot to Baseline
clear ( CLEAR
)
(Native
Command) - Clear Entire Display
Gun ( GOGO.
)
Gun
Comm On/Off
Notes ( NOTER.
)
NOTE.
On/Off
Nte Elev ( ELO.
)
NOTE.
Elevations On/Off
OwP ( OWPSET.
)
Overwrite
Protect On/Off
Mtol ( ATOLSET.
)
Set
Mean Tolerance ( for ARep )
___________________________________________________________