cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 985|回复: 2

HP67: 一款命令行界面的全功能 HP-67 计算器模拟器

[复制链接]
发表于 2024-5-25 11:54:04 | 显示全部楼层 |阅读模式
#        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>
3  y^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        余弦

...

##        参考

-        [HP67源代码/可执行文件下载地址](http://www.ibiblio.org/pub/Linux/apps/math/calc/)
-        [HP67中文介绍](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)


 楼主| 发表于 2024-5-25 11:55:08 | 显示全部楼层
相关资源

hp67.zip (311.54 KB, 下载次数: 24)

HP67一款命令行界面的全功能HP-67计算器模拟器.pdf (119.16 KB, 下载次数: 31)
发表于 2024-6-6 12:22:39 | 显示全部楼层
下载使用看看,RPN计算器
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cnCalc计算器论坛

GMT+8, 2024-11-21 17:27 , Processed in 0.141572 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表