free42 Programming Tools
Author: | Mitch Richling |
Updated: | 2025-10-10 12:27:09 |
Copyright 2025 Mitch Richling. All rights reserved.
Table of Contents
1. Metadata
- Connonical URL for this file: https://richmit.github.io/hp42/hp42s-meta.html
- org-mode file source for this file: https://github.com/richmit/hp42/blob/master/src/hp42s-meta.org
- GitHub repository: https://github.com/richmit/hp42
3. Emacs Helper Stuff
The elisp file hp42s-mode.el
provides few things:
- A language mode for free42 code – mostly just provides syntax highlighting
MJR-ins42char
: Lisp function to insert characters given a list of character codes
To activate the functionality, simply load
the hp42s-mode.el
file into emacs. You can evaluate teh folloing block to do that:
(load-file "../emacs/hp42s-mode.el")
3.1. yas templates
# -*- mode: snippet -*- # name: if-then-end # key: if # -- ...? @@@@ IF-BEGIN ($1/${1:$(format "%02d" (+ 1 (string-to-number yas-text)))}) GTO ${1:1$(format "%02d" (string-to-number yas-text))} GTO ${1:$(format "%02d" (+ 1 (string-to-number yas-text)))} LBL $1 @@@@ IF-THEN ($1/${1:$(format "%02d" (+ 1 (string-to-number yas-text)))}) @@@@ True Code ($1/${1:$(format "%02d" (+ 1 (string-to-number yas-text)))}) LBL ${1:$(format "%02d" (+ 1 (string-to-number yas-text)))} @@@@ IF-END ($1/${1:$(format "%02d" (+ 1 (string-to-number yas-text)))}) # -*- mode: snippet -*- # name: if-then-else-end # key: ife # -- ...? @@@@ IF-BEGIN ($1/${1:$(format "%02d" (+ 1 (string-to-number yas-text)))}/${1:$(format "%02d" (+ 2 (string-to-number yas-text)))}) GTO ${1:1$(format "%02d" (string-to-number yas-text))} GTO ${1:$(format "%02d" (+ 1 (string-to-number yas-text)))} LBL $1 @@@@ IF-THEN ($1/${1:$(format "%02d" (+ 1 (string-to-number yas-text)))}/${1:$(format "%02d" (+ 2 (string-to-number yas-text)))}) @@@@ True Code ($1/${1:$(format "%02d" (+ 1 (string-to-number yas-text)))}/${1:$(format "%02d" (+ 2 (string-to-number yas-text)))}) GTO ${1:$(format "%02d" (+ 2 (string-to-number yas-text)))} LBL ${1:$(format "%02d" (+ 1 (string-to-number yas-text)))} @@@@ IF-ELSE ($1/${1:$(format "%02d" (+ 1 (string-to-number yas-text)))}/${1:$(format "%02d" (+ 2 (string-to-number yas-text)))}) @@@@ False Code ($1/${1:$(format "%02d" (+ 1 (string-to-number yas-text)))}/${1:$(format "%02d" (+ 2 (string-to-number yas-text)))}) LBL ${1:$(format "%02d" (+ 2 (string-to-number yas-text)))} @@@@ IF-END ($1/${1:$(format "%02d" (+ 1 (string-to-number yas-text)))}/${1:$(format "%02d" (+ 2 (string-to-number yas-text)))}) # -*- mode: snippet -*- # name: if-not-then-end # key: ifn # -- ...? @@@@ IF-NOT-BEGIN ($1) GTO ${1:1$(format "%02d" (string-to-number yas-text))} @@@@ False Code ($1) LBL $1 @@@@ IF-NOT-END ($1) # -*- mode: snippet -*- # name: if-then-end-return # key: ifr # -- ...? @@@@ IF-BEGIN ($1) GTO ${1:1$(format "%02d" (string-to-number yas-text))} @@@@ IF-FALSE-BEGIN ($1) @@@@ False Code ($1) RTN @@@@ IF-FALSE-END ($1) LBL $1 @@@@ IF-TRUE-BEGIN ($1) @@@@ True Code ($1) RTN @@@@ IF-TRUE-END ($1)
4. free42 Notes
4.1. Character Set
0 ÷ 33 ! 65 A 97 a 1 × 34 " 66 B 98 b 2 √ 35 # 67 C 99 c 3 ∫ 36 $ 68 D 100 d 4 ▒ 37 % 69 E 101 e 5 Σ 38 & 70 F 102 f 6 ▸ 39 ' 71 G 103 g 7 π 40 ( 72 H 104 h 8 ¿ 41 ) 73 I 105 i 9 ≤ 42 * 74 J 106 j 10 [LF] 43 + 75 K 107 k 11 ≥ 44 , 76 L 108 l 12 ≠ 45 - 77 M 109 m 13 ↵ 46 . 78 N 110 n 14 ↓ 47 / 79 O 111 o 15 → 48 0 80 P 112 p 16 ← 49 1 81 Q 113 q 17 μ 50 2 82 R 114 r 18 £ 51 3 83 S 115 s 19 ° 52 4 84 T 116 t 20 Å 53 5 85 U 117 u 21 Ñ 54 6 86 V 118 v 22 Ä 55 7 87 W 119 w 23 ∡ 56 8 88 X 120 x 24 ᴇ 57 9 89 Y 121 y 25 Æ 58 : 90 Z 122 z 26 … 59 ; 91 [ 123 { 27 [ESC] 60 < 92 \ 124 | 28 Ö 61 = 93 ] 125 } 29 Ü 62 > 94 ↑ 126 ~ 30 ▒ 63 ? 95 _ 127 ├ 31 • 64 @ 96 ` 128 : 32 [SPACE] 129 ʏ
4.2. Date format
Flag 67 | Flag 31 | Mode |
---|---|---|
Set | N/A | Y.MD |
Clear | Clear | M.DY |
Clear | Set | D.MY |
4.3. Stats registers
Register | Contents |
---|---|
ΣREG? + 0 | Σx |
ΣREG? + 1 | Σx^2 |
ΣREG? + 2 | Σy |
ΣREG? + 3 | Σy^2 |
ΣREG? + 4 | Σxy |
ΣREG? + 5 | n |
ΣREG? + 6 | Σlnx |
ΣREG? + 7 | Σ(lnx)^2 |
ΣREG? + 8 | Σlny |
ΣREG? + 9 | Σ(lny)^2 |
ΣREG? + 10 | Σlnxlny |
ΣREG? + 11 | Σxlny |
ΣREG? + 12 | Σylnx |