目錄
第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 |