目录
第1章计算器
大概是1990年,还在上初中的我第一次接触到SHARP计算器。那是一款比PC-1500辈分还要高的计算器,它令我印象深刻的功能:编写一个函数到计算器里,输入自变量的数值即可得到因变量的数值。再加上它精巧的外观,当时我就对它着了迷。
可惜的是,当时在市面上买不到这种计算器。因此,拥有一台SHARP计算器只能是一个梦想。现在好了,借助淘宝网终于实现了这个梦想。
因为年代过于久远,从淘宝网上购买的PC-1500应该都是从垃圾堆里捡出来的,能不能用起来根本搞不清楚。因此我总共购买了6台PC-1500计算器,4个底座,1个串行通讯模块。经过一番折腾,竟然还能凑好两套。下面是整理好的整体图:
能有这样的结果,需要感谢"78621维修车间"和"比夫"的几篇博文。
"78621维修车间"的四篇博文网址如下:
http://cbps99.blog.163.com/blog/static/93048910201142491412918/
http://cbps99.blog.163.com/blog/static/930489102011543824806/
http://cbps99.blog.163.com/blog/static/93048910201162617846/
http://cbps99.blog.163.com/blog/static/93048910201212042542715/
"比夫"的一篇博文网址如下:
http://www.zmdz.com/bbs/forum_read.asp?id=43530
1.1 存储卡
收集到的6台PC-1500,只有1台没配存储卡,其余的都配上了16KB的存储卡(CE-161)。
存储卡安装在PC-1500的背面,如下图所示:
首先把上图红色框内的盖子抠开,然后用手指勾住盖子上方的凹槽向下拉。这样,存储卡就可以被取出来了。
下图中,存储卡的左下角有个小白点,它的上方是白色的写保护开关。应该把这个开关拨到上方,否则就无法对存储卡进行写操作。
如果PC-1500没有配存储卡,那么就不会有小白点。写保护开关有,但它是黑色的,如下图所示:
把存储卡取出来,有什么用呢?"78621维修车间"写的博文是更换了存储卡内部的CR2032纽扣电池。这样,存储在卡里的数据,能够维持两年不丢失。我感觉换上新电池难度比较大,并且用了几年后又得换。关键是这么一通麻烦后实际的意义并不是很大。因此,采取了比较极端的做法——直接把旧电池取出来了。
打开存储卡稍微容易些,使用螺丝刀撬开就行。装起来有些麻烦:需要把卡装入盒子,并且V形弹簧要顶住上方的伸缩盖。
1.2 取出"牛皮糖"
使用十字螺丝刀拧开PC-1500背后的8颗螺丝,如下图所示:
打开PC-1500就可以看到"牛皮糖"了(在下图红色框内。实在不知道它叫什么,只是觉得它特别像牛皮糖)。
上图下端侧面有4个小螺丝,如下图所示。拧开后就可把上图牛皮糖及其所在金属片整个取下来。然后把牛皮糖从金属片上剥离开来。
1.3 打磨键盘按钮
有两台PC-1500的ENTER按钮按下去之后无法弹起来,主要原因是按钮长期受到挤压,侧面变形了,导致有时会卡住。解决方法就是把按钮取出来,然后用锉刀将按钮侧面打磨平整。
使用螺丝刀拧开下图所示的11个螺丝(有两个在黄色带子的下面)。
将板子移开,即可看到键盘按钮。如下图所示。
注意:千万别把按钮弄乱了,否则重新排放一遍是比较费时的。
取出需要打磨的按钮,将其侧面打磨平滑,再放回原位。
1.4 通电
给PC-1500装上四节1.5V的5号电池(1.2V的充电电池也是可以的),如下图所示:
盖上电池盒盖,此时PC-1500的显示如下:
它的含义是——是否清除内存?请按红色的CL键,然后输入命令NEW0,如下图所示:
按下Enter键,即可清除PC-1500的内存。
同样的方法执行NEW256将清除存储卡上的内存。如果PC-1500未安装存储卡或存储卡被写保护,则会出现错误提示ERROR 25。
在PC-1500上输入STATUS0,再按下Enter键,即可查询PC-1500的剩余内存。如下图所示:
下表是机型及可用内存表
机型 |
无存储卡 |
16K存储卡 |
PC-1500 |
1850 |
18175 |
PC-1500A |
5946 |
22271 |
第2章底座
PC-1500配上底座(CE-150)就有了非常拉风的功能:可以打印、绘图,可以通过并口外接打印机,还可以连接磁带机存储数据……
2.1 去除充电电池
下图是底座的外观:
我买了4个底座,坏了2个。损坏率50%。为什么会这么高呢?原因在于底座内部有5节充电电池,即使不使用底座,它们也会处于放电状态,时间一长就会漏液。碱性溶液就会腐蚀底座。
因此,拿到底座后,需要把5节充电电池取出来。可使用一字螺丝刀撬开底座,如下图所示:
撬开后的样子
现在,就可以打开底座了。如下图所示:
上图红色框的部分就是安装充电电池的位置。电池已经被我取出,已经被腐蚀成这个样子了:
电池上的文字:
"78621维修车间"为底座更换了充电电池,我没这么做——再次漏液怎么办?我是这么做的——直接借用底座的外接电源,如下图所示:红色的为正极、蓝色的为负极。
底座接通外接电源(9V)后,即可充当充电电池的角色。5节充电电池是6V,这里的9V电压会不会太大?经过我的实际测试没有发现任何问题。
最后,来一张底座电源适配器的图片。买了4个底座才搜集到一个电源适配器,不容易啊。根据该电源适配器的规格(9V、500mA、12W、直流插头外径5.5mm,电压是内负外正)可以网购一款电源适配器代替它。注意:一定不要购买质量差的电源适配器,它会导致PC-1500无法与底座正常通讯。
2.2 更换打印机
我在4个底座之间相互替换了打印机,其操作比较容易,需要动三个地方:
2.3 更换打印头
购买的4个底座,打印头里的墨水都干了。导致打印不出东西。为此,网购了几个打印笔,将其换上。
首先是打开打印机盖子。方法是:将右边红色框内的开关推到最左边,然后使用手指扣住左边红色框内侧面的凹槽,将其向上打开。
更换打印头的方法如下图所示:使用手指拨开打印笔后端的塑料弹片,然后使用针形物将打印笔挑出来。新的打印笔,先安装头部,然后向下按压即可装入。装好一只笔后,向左拨动打印头(绝对不要向右拨动),旋转90度后,更换另一支打印笔。直至所有的打印笔更换完毕。请注意黑、蓝、绿、红四支打印笔的安装顺序。
2.4 装纸
打开打印机的盒盖,右手拿着纸卷将其插入打印滚轮后方的进纸孔
左手向上滚动打印滚轮(黑色的橡胶滚轮),这样打印纸就被带出来了。然后把纸卷连带滚轴放入纸槽内。注意滚轴要放到滚轴槽内,如下图所示。
纸卷滚轴也是个稀罕物,4个底座只收集到一个,其直径大概为8mm。如下图所示
注意:打印纸可以使用收银机、POS机的热敏打印纸代替。其规格为57×30mm,即纸的宽度是57mm,纸卷的外径是30mm,内径要大于8mm。
2.5 按键、开关
因为没有底座的说明书,以下都是我的猜测,希望是正确的。请参考下图
按钮1是用来进纸的。打印完毕,按下它即可进纸。到合适位置后,即可把打印部分撕切下来(打印纸出口处有锯齿状的切纸器)。
开关2用来打开打印机顶盖。
开关3是REMOTE开关,可用来控制磁带机。连上磁带机,需要把它拨到ON的位置,即可与磁带机交换数据。不连磁带机时,请把它拨到OFF的位置。
开关4是PRINT开关。连接外接打印机时需要拨到P的位置,否则就拨到黑点的位置。
2.6 MIC和EAR
通过底座的MIC和EAR插孔,即可将程序保存到磁带上,也可以从磁带上读取程序。
"78621维修车间"和www.pc1500.com网站介绍了另一种方法:把程序保存成PC的WAV文件,也可以播放WAV文件载入程序。这种方法我测试了,CSAVE似乎没有问题,但是CLOAD一直不成功。
使用磁带、WAV文件保存、载入程序效率太慢。因此,不再做深入研究。
第3章串行通讯
网购了一个PC-1500通讯模块(CE-158)。下面是它的图片:
它与PC-1500的接口
数据通讯口有两个:上方是并行口,它被一个红色的盖子盖住了;下方是25孔的串口。
3.1 改动电路
CE-158内部需要4节1.2V的5号充电电池。充电电池存在漏液问题,因此需要改动电路。拧开底部的四个螺丝
继续拧开四周的4个螺丝
卸下顶壳后,继续拧开下图所示的两个螺丝。
下图红、黑两条线本来是连接充电电池组的正、负极的,现在把它们焊接到下图所示的红、蓝圈内。红圈为正极,蓝圈为负极,千万不要焊错了。
重新安装好,自此CE-158电路改动完毕。它的原理就是借用外部供电设备提供的电力。外部供电电压最好是4.8V(4节1.2V充电电池串联电压),不过根据我的实测:5V~9V都是可以的。也就是说:底座(CE-150)的电源适配器可以给通讯模块(CE-158)供电。
3.2 USB供电
上节说到:可以使用底座的电源适配器给通讯模块供电。不过这不是很方便。"比夫"的博文里提到:使用USB给通讯模块供电,这是个非常好的想法。
下图就是我自做的USB供电线:
说明:
1、直流插头的外径为5.5mm,电压是内负外正;
2、网上可以购买这样的线,其名称为"USB转DC5.5"。但一定要注意它的DC插头是否为内负外正。
3.3 串行通讯线
PC的串口一般都是9针的,CE-158的接口是25孔的,需要一根"9孔转25针"的串口线。获得这根串口线的方法:
1、网购时要求店家定制。因为我网购了一根线,结果连接方法不正确,最后自己改接了线;
2、自己购买9针头、25孔头、数据线,自己焊接。
不管什么方法,哪根线与哪根线连接是关键。具体的连接如下图所示
还有更为简单的连接方法:
3.4 串行通讯
串行通讯前,需要注意的事项:
1、把通讯模块的开关拨到ON的位置,通电后需要等待40秒以上再打开PC-1500。PC-1500过早开机就会显示:CHECK 8,提示通讯模块供电不足;
2、PC给PC-1500发送数据时,因为PC-1500的反应比较慢,所以每发送一个字符都要等待一段时间;
3、Windows 文本文件的行结束符是回车(CR,十六进制的0D)和换行(LF,十六进制的0A),而PC-1500的行结束符是回车。两者相互传输数据时,需要对行结束符进行相互转换。
3.4.1 超级终端
Windows上的串口通讯软件很多,但是这里只介绍超级终端。因为它有一些特有的功能,如:自动转换行结束符,每发送一个字符后可以等待一段时间。
在Windows7操作系统上,不再自带超级终端程序。可以上网下载这个程序,或者从WindowsXP操作系统上复制过来。具体的,需要复制两个文件:
C:\Program Files\Windows NT\hypertrm.exe
C:\WINDOWS\system32\hypertrm.dll
把这两个文件放在同一个文件夹内,即可通过鼠标双击hypertrm.exe运行超级终端程序。
超级终端首先会要求输入连接的名称,这个名称可以任意输入。这里输入pc-1500,然后单击"确定"按钮,如下图所示:
进入如下界面。请选择串口号,单击"确定"按钮
接下来的界面需要注意两个参数:"位/秒"就是波特率。PC-1500只支持110、300、600、1200、2400这五种波特率。经过试验,波特率110通讯失败,所以这里我选择了2400。数据流控制里,请选择"无"。原因在于:通讯模块(CE-158)的25针串口的DTR、RTS始终为低电平,所以给PC-1500发送数据时,硬件握手一定失败;PC-1500给PC发送数据时,要求PC端串口的RTS为高电平,即便选择"无"数据流控制,超级终端也会设置RTS为高电平的。
单击上图的"确定"按钮,现在超级终端就可以和PC-1500通讯了。
不过因为要转换行结束符,还需要一些设置工作。其操作如下:
单击超级终端的【文件】【属性】菜单项
进入"设置"页面,单击"ASCII码设置"按钮
显示如下界面。红色框内的4项设置比较重要
"以换行符作为发送行末尾"勾中此项,超级终端会将 0D ?? 替换为0D 0A ??(要求??不是0A),也就是将行结束符由0D更换为0D 0A;不勾中此项,超级终端会将0D 0A替换为0D。
"字符延迟"与"行延迟":超级终端每发送一个字符就会等待一段时间,只要这个字符不是行结束符,等待时间就采用"字符延迟",否则等待时间就采用"行延迟"。上图的含义:每发送一个字符等待0.025秒,发送一行后等待1秒。注意:Windows不是一个实时操作系统,等待的时间基本上都是0.015秒的整数倍。也就是说设置延迟为1、5、14,则实际延迟可能都是0.015秒;而设置延迟为16,则实际延迟可能是0.03秒。
3.4.2 PC-1500给PC传输程序(文本格式)
PC-1500上按MODE按钮,进入PRO状态,输入如下代码:
10 PRINT 10 20 PRINT 20 |
然后在PC-1500上执行如下命令
OUTSTAT0 SETCOM2400,8,N,1 SETDEVCO CSAVEa |
在PC端将接收到如下信息(<CR>就是回车,即0D)
10 PRINT 10<CR> |
PC-1500发完此行后等待2秒 |
20 PRINT 10<CR> |
PC-1500发完此行后等待2秒 |
<CR> |
程序发完,PC-1500会再发送一个回车符 |
可见:
1、PC-1500发送的程序以回车为行结束符;
2、PC-1500每发送完一行,都会等待2秒;
3、PC-1500把程序发送完毕后,会额外发送一个回车符。PC端程序如果发现两个相邻的回车符,就可以认为PC-1500的程序发送完毕了;
4、如果PC-1500没有BASIC代码,那么CSAVEa不会发送任何字符。
因为Windows文本文件的行结束符是回车加换行,因此需要将PC-1500发送来的数据做处理:把回车替换为回车加换行。还记得超级终端的如下设置吗?它就是专门做这个转换工作的。
所以,对于超级终端而言,重要的是如何把PC-1500发送来的数据保存到文件里去。其操作步骤如下:
单击【传送】【捕获文字】菜单项
单击"浏览"按钮,选择一个文件。然后单击"启动"按钮。
现在,超级终端做好了接收数据并把数据写入上图选中文件的准备了。
PC-1500上执行如下命令
OUTSTAT0 SETCOM2400,8,N,1 SETDEVCO CSAVEa |
CSAVEa执行完毕后,单击超级终端【传送】【捕获文字】【停止】菜单项。
至此,超级终端就完成了接收PC-1500数据,转换行结束符,保存至文件的工作。
3.4.3 PC给PC-1500传输程序(文本格式)
记事本编辑的如下代码并不能直接传给PC-1500。因为Windows文本文件的行结束符为回车加换行,直接发给PC-1500会因为不识别换行符而导致传输失败。
因此,把文本格式的BASIC代码由PC传给PC-1500,首要的工作就是把回车加换行符替换为回车符。所幸的是超级终端的如下设置自动完成此项工作。
与PC-1500一样,PC端发送完代码后,也应该发送一个回车符给PC-1500,"告诉"PC-1500整个程序传输完毕了。为此,记事本编辑BASIC代码时,需要在最后有两个行结束符。检验方法就是在记事本里按下Ctrl+End,插入符与最后一行代码之间要有一个空行,这个空行里请不要输入任何字符,包括空格。
最后就是延迟时间。PC-1500反应比较慢,PC把整个代码一股脑的发给它,则会导致通讯失败。为此,需要设置延迟时间。下图是超级终端里的延迟设置:
"字符延迟"用来保障PC-1500来得及接收数据;"行延迟"用来保障PC-1500来得及将文本格式的代码行翻译成机器内部的二进制格式。
注意上图的数值都是经验值,如果在传输时出现错误,请适当增大延迟时间。
具体操作如下:
PC-1500上执行如下命令
OUTSTAT0 SETCOM2400,8,N,1 SETDEVCI CLOADa |
超级终端上单击【传送】【发送文本文件】菜单项,如下图所示:
选择要发送的代码文件,超级终端就开始传输代码给PC-1500了。这里顺便提一下:超级终端发送文件的功能缺少进度显示,你搞不清楚文件已经传了多少了?大概还要传多久……
3.4.4 传输二进制代码
将CSAVEa、CLOADa分别替换为CSAVE、CLOAD即可传输二进制的BASIC代码。
传输二进制代码的优势:效率高。CSAVEa每发送完一行就会等待2秒;CSAVE不存在这个问题。CLOADa时,PC每发送完一行就要等大概1秒,CLOAD就不存在这个问题了。
传输二进制代码的缺点:首先是可读性差,传给PC的二进制代码人工无法阅读(当然,做个程序把二进制代码转换为文本格式也是可行的,就是不知难度有多大);其次,超级终端无法用来传输二进制代码,因为它过于聪明了。下图的设置,不管勾与不勾,超级终端都会对行结束符做相应的转换。这是传输二进制代码所不希望的。
所以,要在PC与PC-1500之间传输二进制代码,需要单独编写一个串行通讯程序。笔者在PC-E500与PC通讯程序的基础上,增加了与PC-1500通讯的功能。程序下载地址:浏览http://pan.baidu.com/s/1gd7XDkf 再进入 public/Tools/E500Comm。
最后,大致说一下二进制代码的格式。使用CSAVE将得到如下数据(十六进制)。
地址 |
字节 |
数据 |
说明 |
0 |
5 |
01 40 43 4F 4D |
固定。经测试这五个字节不可能是二进制代码的头五个字节 |
5 |
16 |
31 32 33 34 35 36 37 38 39 30 41 42 43 44 45 46 |
CSAVE的参数,这里就是 CSAVE"1234567890ABCDEF" 最多16字节,不足的补00H |
21 |
2 |
01 00 |
随机数。0x0100或0x00C5,还有可能是其它数值。 |
23 |
2 |
00 07 |
总字节数 - 28 |
25 |
2 |
01 08 |
随机数 + 总字节数 - 27 |
27 |
n |
00 0A 05 F0 97 31 30 0D |
二进制代码,字节数n=总字节数-27 最后一个字节一定是0DH |