HP67: 一款命令行界面的全功能 HP-67 计算器模拟器
# HP67: 一款命令行界面的全功能 HP-67 计算器模拟器## 概述
`HP-67` 是惠普于1976年推出的一款相当经典的可编程计算器,在全球有很多爱好者,而`HP67` 是`HP-67`的模拟器,特别有意思的 `HP-67`模拟器,因为它没有提供图形界面,纯文字版本,可以运行在命令行。
开发者说这是一个全功能版本,意思就是实体机有的功能它全都有,不过不是完全复刻,而是全新的实现,毕竟一个是实体机一个是虚拟的模拟器,还是在命令行运行的。
开发者发布了源码,所以可以自己根据自己的需要进行编译。目前测试在手机端的 `AidLux` 发行版和桌面 `macOS` 下都成功编译,正常运行。
## 编译说明
在我的环境下直接编译会报错,根据报错信息,修改了两个文件:`memory.h` 和 `input.cc` 后,成功编译。具体可看压缩包中的代码,已经是修改过的内容。
另外,开发者使用了 `ncurses` 库,需要安装对应的开发包,根据你的平台自行下载安装即可。
## 软件介绍
接着大致介绍一下软件的用法,更详细的使用方法请参考用户手册
### 运行
编译完成后,会生成对应平台的可执行文件 `hp67`,
- 运行可选参数:
- -p program 加载程序,程序是文本文件
- -h 显示帮助
### 模式
软件有3种模式:
- immed 即时模式
- prog编程模式
- step单步调试模式
模式切换:
启动后自动进入即时模式,有三个命令可以切换模式:
- prog 从即时模式进入编程模式
- immed 从编程模式进入即时模式
- step 从即时模式进入单步模式
也有一些功能热键可以迅速切换模式。
### 功能热键
- <CTRL>-D
- 在即时模式下,退出计算器
- 在编程模式下,退回到即时模式
- <DELETE> 清除
- 在即时模式下,调用`clx` 功能删除栈顶元素
- 在编程模式下,删除当前程序行
- 上(方向键) 在编程模式下,移动程序指针后退一步
- 下(方向键) 在编程模式下,移动程序指针前进一步
- <Meta>-<Space> 在即时模式下,调用`step` 功能
- <Meta>-<key> 如果 <key> 是一个可打印字符
- 在即时模式下会调用命令 `run <key>`
- 在编程模式下会调用命令 `label <key>`
- <CTRL>-L 强制重绘整个窗口,在窗口尺寸变化时
### 用户界面
就是一个命令行的界面,开发者默认使用 `80列 * 24行` 的布局。
上面列出了所有可以输入的命令,用户输入区域在左下方
其中即时模式和编程模式可用的命令有所不同,编程模式下多了一些判断相关的命令。
### 即时模式
就是我们的计算器最常见的交互模式,用户输入算式,计算器给出结果。
例如计算:(3 + 4*7) / (2 + 8^3)
用户输入:
```
3<ENTER>
4<ENTER>
7*
+
2<ENTER>
8<ENTER>
3y^x <ENTER>
+
/
```
最终输出: `16.58`
### 编程模式
以一个简单的程序为例,假设我们想写一个求平方的程序:X*X
输入内容如下:
```
prog #进入编程模式
label myprg
ENTER
*
rtn
immed #进入即时模式
```
- 代码中可以使用注释,用井号 `#` 放在注释行首即可
使用刚才写的程序 `myprg`,假设想求 `998` 的平方。
先把 `998` 输入
```
998
```
再输入命令:
```
run myprg
```
> 注意:这里`run` 后面跟着的是程序的标签名称,也就是那个 `label` 语句命名的名称 `myprg`
就会得到结果:
```
996004.00
```
这么好的程序,一旦退出就丢失了,想要多次使用的话就需要把它保存成文本文件,命令如下:
```
w/prog program1.txt
```
加载程序有两种方式:
- 程序启动时加载:
- hp67 -p program1.txt
- 即时模式下加载:
- r/prog program1.txt
### 开发者提供的程序
- 复数计算:
- complex.txt
- 积分计算
- integrator.txt
- 双曲函数
- hyperbolics.txt
这些程序都可以用文本编辑器进行编辑查看,非常方便编写较长的程序,我们可以看一段双曲函数的代码:
```
1 label sinh # The hyperbolic sine of an angle in radians
2 exp
3 ENTER
4 recip
5 -
6 2.000000000000000e+000
7 /
8 rtn
9 label cosh # The hyperbolic cosine of an angle in radians
10 exp
11 ENTER
12 recip
13 +
14 2.000000000000000e+000
15 /
16 rtn
17 label tanh # The hyperbolic tangent of an angle in radians
18 ENTER
19 gosub sinh
20 x<>y
21 gosub cosh
22 /
23 rtn
```
### 命令
`HP67`模拟器提供了很多命令,每个命令对应实体机上的一个按键功能,这里列举几个,更详细的可以参考用户说明手册:
- + 加法
- - 减法
- * 乘法
- / 除法
- ! 阶乘
- chs 改变正负符号
- sin 正弦
- cos 余弦
...
## 参考
- (http://www.ibiblio.org/pub/Linux/apps/math/calc/)
- (http://www.linuxfocus.org/ChineseGB/January2004/article319.shtml)
- [开发者对HP67的介绍](https://www.cneufeld.ca/neufeld/hp67/hp67.html)
- [详细英文手册](http://www.linuxfocus.org/common/src/article319/hp67.html)
相关资源
下载使用看看,RPN计算器
页:
[1]