diff options
| author | Robert Scheibe <mail@robert-scheibe.de> | 2026-01-03 11:35:04 +0100 |
|---|---|---|
| committer | Robert Scheibe <mail@robert-scheibe.de> | 2026-01-03 11:35:04 +0100 |
| commit | 8fba61f1e68e425a55f30c2fda40925db89d7271 (patch) | |
| tree | af2704823cf0b191f6ff09fb237dcf5819a712b7 | |
added some programs for celestrial navigation and some optical calculation
| -rw-r--r-- | doc/reference.md | 183 | ||||
| -rw-r--r-- | programs/dms2hms.lst | 16 | ||||
| -rw-r--r-- | programs/hfp.lst | 35 | ||||
| -rw-r--r-- | programs/hms2dms.lst | 17 | ||||
| -rw-r--r-- | programs/ow.lst | 23 |
5 files changed, 274 insertions, 0 deletions
diff --git a/doc/reference.md b/doc/reference.md new file mode 100644 index 0000000..5026834 --- /dev/null +++ b/doc/reference.md @@ -0,0 +1,183 @@ +# HP‑41C Befehlsreferenz (Standardfunktionen) + +Alle Befehlsnamen sind so notiert, wie sie im Display bzw. im Programmlisting erscheinen.[page:1] + +## A + +- ABS – Absolutwert von X.[page:1] +- ACOS – Arkuskosinus von X im aktuellen Winkelmodus.[page:1] +- AOFF – Schaltet ALPHA‑Modus aus.[page:1] +- AON – Schaltet ALPHA‑Modus ein.[page:1] +- ARCL – Inhalt eines Registers an ALPHA anhängen.[page:1] +- ASHF – ALPHA‑Register um 6 Zeichen nach links schieben.[page:1] +- ASIN – Arkussinus von X im aktuellen Winkelmodus.[page:1] +- ASN – Funktion/Programm einer Taste für USER‑Modus zuweisen.[page:1] +- ASTO – Linke 6 Zeichen von ALPHA in Register speichern.[page:1] +- ATAN – Arkustangens von X im aktuellen Winkelmodus.[page:1] +- AVIEW – ALPHA‑Register anzeigen, bis Taste gedrückt wird.[page:1] + +## B + +- BEEP – Kurzen Signalton ausgeben.[page:1] +- BST – Schritt zurück im Programm / Programmschritt rückwärts anzeigen.[page:1] + +## C + +- CAT – KATALOG – Auflisten von Programmen/Funktionen (CAT 1/2/3).[page:1] +- CF – Flag nn löschen.[page:1] +- CHS – Vorzeichen von X ändern.[page:1] +- CLA – ALPHA‑Register löschen.[page:1] +- CLD – Anzeige und sichtbares Register löschen.[page:1] +- CLP – Programm löschen (CLP "Name" oder aktuelles Programm).[page:1] +- CLRG – Alle Datenregister löschen.[page:1] +- CLΣ – Statistikregister löschen.[page:1] +- CLST – Stackregister löschen.[page:1] +- CLX – X‑Register löschen.[page:1] +- COPY – Benutzerprogramm kopieren.[page:1] +- COS – Kosinus von X.[page:1] + +## D + +- D‑R – Grad → Radiant umrechnen.[page:1] +- DEC – Oktal → Dezimal umrechnen.[page:1] +- DEG – Winkelmodus Grad.[page:1] +- DEL – n Befehle ab aktueller Zeile löschen.[page:1] +- DSE – Decrement and skip if ≤ (Zählerschritt mit Test).[page:1] + +## E + +- END – Programmende / Trennt globale Programme.[page:1] +- ENG – Ingenieur‑Darstellung.[page:1] +- ENTER↑ – Stack nach oben schieben.[page:1] +- E↑X – Exponentialfunktion \(e^x\).[page:1] +- E↑X‑1 – \(e^x − 1\) für kleine x.[page:1] + +## F + +- FACT – Fakultät von X (nur ganzzahlig, nicht negativ).[page:1] +- FC? – Test: Flag nn ist gelöscht? (ggf. Sprung).[page:1] +- FC?C – Test und Flag nn löschen.[page:1] +- FIX – Festkomma‑Darstellung mit n Nachkommastellen.[page:1] +- FRC – Nachkommateil von X.[page:1] +- FS? – Test: Flag nn ist gesetzt?[page:1] +- FS?C – Test und Flag nn löschen.[page:1] + +## G + +- GRAD – Winkelmodus Grad‑Gon (400).[page:1] +- GTO – Sprung zu Marke / Zeilennummer / Label / GTO .. PACK.[page:1] + +## H + +- HMS – Dezimalstunden → h.mmss.[page:1] +- HMS+ – Addition im HMS‑Format.[page:1] +- HMS‑ – Subtraktion im HMS‑Format.[page:1] +- HR – h.mmss → Dezimalstunden.[page:1] + +## I + +- INT – Ganzzahlteil von X.[page:1] +- ISG – Increment and skip if > (Zählerschritt mit Test).[page:1] + +## L + +- LASTX – Vorheriger X‑Wert.[page:1] +- LBL – Label (lokal/global) im Programm setzen.[page:1] +- LN – Natürlicher Logarithmus.[page:1] +- LN1+X – ln(1+x) für kleine x.[page:1] +- LOG – Zehnerlogarithmus.[page:1] + +## M + +- MEAN – Mittelwert der Statistikdaten.[page:1] +- MOD – Rest bei Division Y/X.[page:1] + +## O + +- OCT – Dezimal → Oktal umrechnen.[page:1] +- OFF – Rechner ausschalten.[page:1] +- ON – Rechner einschalten / globaler Reset mit ← gehalten.[page:1] + +## P + +- P‑R – Polar → Kartesisch.[page:1] +- PACK – Programmspeicher packen.[page:1] +- % – Prozent von Y auf X (kein Stack‑Pop).[page:1] +- %CH – Prozentänderung von Y nach X.[page:1] +- PI – Konstante \(\pi\).[page:1] +- PROMPT – ALPHA anzeigen, Zahleneingabe abwarten.[page:1] +- PSE – Pause (~1 s) und X anzeigen.[page:1] + +## R + +- R↑ – Stack nach oben rotieren.[page:1] +- R‑D – Radiant → Grad umrechnen.[page:1] +- R‑P – Kartesisch → Polar.[page:1] +- RAD – Winkelmodus Radiant.[page:1] +- RCL – Registerinhalt nach X (inkl. indirekter und Stack‑Adressierung).[page:1] +- RDN / R↓ – Stack nach unten rotieren.[page:1] +- RND – X rundet entsprechend FIX/SCI/ENG‑Einstellung.[page:1] +- RTN – Rückkehr aus Unterprogramm / Run‑Modus: GTO 000.[page:1] + +## S + +- SDEV – Standardabweichung aus Statistikregistern.[page:1] +- SCI – Wissenschaftliche Darstellung.[page:1] +- SF – Flag nn setzen.[page:1] +- SIN – Sinus von X.[page:1] +- SIGN – Vorzeichenfunktion von X (±1).[page:1] +- SIZE – Anzahl Datenregister festlegen.[page:1] +- SQRT – Quadratwurzel.[page:1] +- SST – Einzelschritt / Programmschritt anzeigen/ausführen.[page:1] +- ST+ – X zu Register nn addieren (STO +).[page:1] +- ST‑ – X von Register nn subtrahieren (STO −).[page:1] +- ST* – Register nn mit X multiplizieren (STO *).[page:1] +- ST/ – Register nn durch X teilen (STO /).[page:1] +- STO – X in Register nn speichern.[page:1] +- STOP – Programmausführung anhalten.[page:1] +- Σ+ – Daten in Statistikregister einfügen.[page:1] +- Σ‑ – Daten aus Statistikregister entfernen.[page:1] +- ΣREG – Basisregister der Statistikregister setzen.[page:1] + +## T + +- TAN – Tangens von X.[page:1] +- TONE – Ton mit Frequenzparameter n (0–9) ausgeben.[page:1] + +## V + +- VIEW – Inhalt eines Registers anzeigen, ohne X zu überschreiben.[page:1] + +## X / Y / Vergleich + +- X=0? – Test X = 0.[page:1] +- X≠0? – Test X ≠ 0.[page:1] +- X<0? – Test X < 0.[page:1] +- X≤0? – Test X ≤ 0.[page:1] +- X>0? – Test X > 0.[page:1] +- X=Y? – Test X = Y.[page:1] +- X≠Y? – Test X ≠ Y.[page:1] +- X<Y? – Test X < Y.[page:1] +- X≤Y? – Test X ≤ Y.[page:1] +- X>Y? – Test X > Y.[page:1] +- X<> – X mit Register nn tauschen.[page:1] +- X<>Y – X und Y tauschen.[page:1] +- XEQ – Funktion/Programm ausführen.[page:1] +- X↑2 – X quadrieren.[page:1] +- Y↑X – Y hoch X.[page:1] + +## Grundrechenarten & Tastenfunktionen + +- + – Addiert Y + X → X.[page:1] +- − – Subtrahiert Y − X → X.[page:1] +- × – Multipliziert Y × X → X.[page:1] +- ÷ – Dividiert Y ÷ X → X.[page:1] +- 1/X – Kehrwert von X.[page:1] +- 10↑X – Zehnerpotenz \(10^X\).[page:1] +- R/S – Start/Stop Programmausführung.[page:1] +- ← – Letzte Ziffer/X löschen, im PRGM Zeile löschen.[page:1] +- USER – USER‑Modus ein/aus.[page:1] +- PRGM – Programmmodus ein/aus.[page:1] +- ALPHA – ALPHA‑Modus umschalten.[page:1] + + diff --git a/programs/dms2hms.lst b/programs/dms2hms.lst new file mode 100644 index 0000000..e6df6bf --- /dev/null +++ b/programs/dms2hms.lst @@ -0,0 +1,16 @@ +# dms -> hms (Eingabe: Grad.Minuten dezimal; Ausgabe: Grad.MMSS) +# Beispiel: Eingabe 50.305 interpretiert als 50° 30.5' -> 50.3030 (für HMS+, HMS-) +# ist mit ASN DMS2HMS auf SQRT gemappt im User mode + +01 LBL DMS2HMS +02 ENTER↑ # Eingabe duplizieren +03 INT # Grad +04 X<>Y # X: Eingabe, Y: Grad +05 FRC # Minutenanteil (dezimal/100) +06 100 +07 * +08 60 +09 / +10 + # Grad + Minuten/60 (Dezimalgrad) +11 HMS # in HMS-Format wandeln +12 RTN diff --git a/programs/hfp.lst b/programs/hfp.lst new file mode 100644 index 0000000..dced588 --- /dev/null +++ b/programs/hfp.lst @@ -0,0 +1,35 @@ +# hyperfocalpunkt +# +#d_h = f^2/(k*Z)+f +# +#d_h hyperfokale Entfernung +#f Brennweite in mm +#k Blendenzahl +#Z Zerstreuungskreisduchmesser (Grad der Unschärfe, entspricht bei monochromen Digitalsensoren 1 Pixel -> 4.5 µm) +# +#6mm^2/(4*0.0045mm)+6mm = 2006 mm für die Hyperfocale Entfernung bei 6mm Brennweite (Nahpunkt 1m). +# +# assined to LN in user mode +# SHIFT ASN HFP LN + +LBL HFP +ALPHA Focal Length ALPHA +XEQ PROMPT +STO 01 +ALPHA F STOP ALPHA +XEQ PROMPT +STO 02 +ALPHA Pixel SIZE in um ALPHA +XEQ PROMPT +STO 03 +RCL 01 +X^2 +RCL 03 +1000 +/ +RCL 02 +* +/ +RCL 01 ++ + diff --git a/programs/hms2dms.lst b/programs/hms2dms.lst new file mode 100644 index 0000000..8145040 --- /dev/null +++ b/programs/hms2dms.lst @@ -0,0 +1,17 @@ +# hms -> dms (Eingabe: Grad.MMSS im HMS-Format; Ausgabe: Grad.MinutenDez) +# Beispiel: Eingabe 50.3030 (50°30'30'') -> 50.3050 (für weitere DMS-Rechnungen) +# ist mit ASN HMS2DMS auf X^2 gemappt im User mode + +01 LBL HMS2DMS +02 HR # HMS -> Dezimalgrad +03 ENTER↑ # duplizieren +04 INT # Grad +05 X<>Y # X: Dezimalgrad, Y: Grad +06 FRC # Bruchteil der Dezimalgrad +07 60 +08 * +09 100 +10 / +11 X<>Y # X: Grad, Y: Minuten/100 +12 + +13 RTN diff --git a/programs/ow.lst b/programs/ow.lst new file mode 100644 index 0000000..d38c948 --- /dev/null +++ b/programs/ow.lst @@ -0,0 +1,23 @@ +# oeffnungswinkel bei bekannter sensorbreite in mm und brennweite +# 2*atan(8.748 /(2*3.5)) = 102.7° +# assined to LOG in user mode + +LBL OW +ALPHA FOCAL LENGTH in mm ALPHA +XEQ PROMPT +STO 01 +ALPHA No of Pixel ALPHA +XEQ PROMPT +ALPHA um Pixel size ALPHA +XEQ PROMPT +1000 +/ +* +RCL 01 +2 +* +/ +ATAN +2 +* + |
