[comp.sys.handhelds] HP48: Solar System Database

IMS103@psuvm.psu.edu (Ian Matthew Smith) (05/14/91)

This is a small astronomical database of objects
in the solar system.  Adding and editing objects
should be straightforward.  Commants appricated.
If you make some improvments, post them!

PFEILDS: List of field names.
PNAMES : List of objects in the database.
PDATA  : Array that contains the data.

PPICK  : A custom menu showing objects to select from.
         Pressing the unshifted softkey will simply
         display the information.  A left-shifted softkey
         will display the information for that object,
         and then diaplay a curtom menu to allow you to
         recall selected values to the stack.

PDISP  : Called by the custom menu created by PPICK.

For those of you with \->PRG, replace the PPICK in the
ASTRO directory with this version, which will save over
600 bytes of memory.  make sure \->PRG is in the current
path when PPICK is run.

-- Ian Smith <<ims103@psuvm.psu.edu>>

PPICK
Chksum: #48F8h
Bytes:     160
%%HP: T(3)A(R)F(.);
\<< PNAMES \-> pnam
  \<< 1 pnam SIZE
    FOR j pnam j
GET j 'PDISP' 2
\->PRG j NEG 'PDISP'
2 \->PRG 2 \->LIST 2
\->LIST
    NEXT pnam SIZE
\->LIST TMENU
  \>>
\>>

ASTRO Directory
Chksum: #8A29h
Bytes:    1747
%%HP: T(3)A(R)F(.);
DIR
  PPICK
    \<< { { "Sun" { \<< 1
PDISP \>> \<< -1 PDISP \>> } }
{ "Mercury" { \<< 2
PDISP \>> \<< -2 PDISP \>> } }
{ "Venus" { \<< 3 PDISP \>>
\<< -3 PDISP \>> } } {
"Earth" { \<< 4 PDISP \>>
\<< -4 PDISP \>> } } {
"Moon" { \<< 5 PDISP \>> \<< -5
PDISP \>> } } { "Mars"
{ \<< 6 PDISP \>> \<< -6 PDISP \>>
} } { "Jupiter" { \<< 7
PDISP \>> \<< -7 PDISP \>> } }
{ "Saturn" { \<< 8
PDISP \>> \<< -8 PDISP \>> } }
{ "Uranus" { \<< 9
PDISP \>> \<< -9 PDISP \>> } }
{ "Neptune" { \<< 10
PDISP \>> \<< -10 PDISP \>> } }
{ "Pluto" { \<< 11
PDISP \>> \<< -11 PDISP \>> } }
} TMENU
    \>>
  PDISP
    \<< DUP PNAMES
SWAP ABS GET
"Name: " SWAP + 1
CLLCD DISP DUP ABS
\-> c1 c
      \<< { } PFEILDS
SIZE 1 SWAP
        FOR p
PFEILDS p GET DUP
PDATA { c p } GET
DUP ROT ROT \->STR
DUP2 SIZE SWAP SIZE
+ 22 - NEG
"                    "
SWAP 1 SWAP SUB
SWAP + + p 1 + DISP
SWAP \->TAG +
        NEXT
        IF c1 SIGN
-1 ==
        THEN TMENU
        ELSE DROP
        END 3
FREEZE
      \>>
    \>>
  PFEILDS {
"Dist (km)"
"Diam (km)"
"Orbit(km/sec)"
"Axis (Deg)"
"Mass (1=Earth)" }
  PDATA
[[ 0 139200 0 7 33300 ]
 [ 57900000 4880 48 0 .0556 ]
 [ 108200000 12100 35 3 .8 ]
 [ 149600000 12756 30 23.45 1 ]
 [ 384400 3476 1.026 6.68 .0116 ]
 [ 227900000 6794 24 25.2 .1 ]
 [ 778300000 143200 13 3.1 318 ]
 [ 1427000000 120000 9.7 26.7 95 ]
 [ 2870000000 51800 6.8 82.1 14 ]
 [ 4497000000 49500 5.4 28.8 17 ]
 [ 5900000000 3000 4.7 60 .0019 ]]
  PNAMES { "Sun"
"Mercury" "Venus"
"Earth" "Moon"
"Mars" "Jupiter"
"Saturn" "Uranus"
"Neptune" "Pluto" }
END