ブログの練習

ブログを書く練習です。
最近はレトロな計算機(電卓、マイコン、パソコンなど)
に関することを書き始めました。

Toshiba BC-1201

2022-06-12 12:31:16 | 電卓
Toshiba BC-1201です。BC-1001、BC-1411に続く、東芝の3代目の電卓です。
電卓博物館(Toshiba desktop calculator)によると、「1967年5月発売、219000円、トランジスタ式の小形、低価格、普及機」とのことです。1967年当時としては世界トップレベルの小型機で歴史的価値も高く、calcuseum(CALCUSEUM TOSHIBA: BC1201)のCollector valueも10.0の最高値が付与されています。

この個体は説明書付きで入手した動作品です。

説明書には「軽量小型化」とありますが、大きくて重いです。確かに前の2機種よりは小さいですが。

幅。

奥行き。

後ろはこんな感じ。

BC-1001やBC-1411と違って、キャビネットが簡単には開かなかったので、中を見るのはやめました。電卓博物館にはキャビネットを開けた画像が掲載されています。
コスト削減のためか、小数点以下の桁数は0桁(整数モード)と3桁(小数点モード)の2モードです。"P"スイッチで切り替えます。

小数点以下の桁数がもっと欲しい場合には1億倍して計算すればいいのかな。

これもコスト削減のためか、負数の表示がありません。x<0の場合は10^12+xが表示され、マイナス100はこのようになります。この状態からもう一度"-"キーを押すと"100"になります。

ゼロ除算時のエラーは"7.0000000000"が表示されます。

動画です。下記の計算をしています。
・355/113 (整数モード)
・355/113 (小数モード)
・35500000000/113 (整数モード)
・100-200
・100/0

「軽量小型化」を実現した電卓ですが、これも置き場所に困っているところ。オークションに出して海外に行っちゃったりニキシー管時計の材料にされるのも嫌なので、博物館への寄贈を検討しています。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Zilog Z8671 BASIC/Debug

2022-06-07 14:17:28 | マイコン
Zilog Z8671 (Z8 MCU with BASIC/Debug Interpreter)です。BASICインタプリタのROMが内蔵されたZ8ファミリーのマイコンです。運良く入手することが出来たので動作確認してみました。ググると情報がいくつか見つかり、主に下記サイトを参考にさせていただきました。
Z8671を動かす | Electrelic by Electrelicさん
Z8 – 電脳伝説 by 電脳伝説さん
Z8 – レトロな雰囲気 by tomi9さん
まずはHardware Application Note (Zilog "z8671 seven chip computer hardware application note", Sept. 1981)に忠実に作ろうと思ったんだけど、Z6132なる32Kbitの疑似SRAMを使っていたので早々にあきらめ、おなじみのHM6116に変更。
最初はブレッドボードかユニバーサル基板に組もうかと考えていたところなのですが、
電脳伝説さん(&tomi9さん)のSBCZ8の基板が440円という安さで売られているのでそれを購入して流用することにしました。
SBCZ8はRAMがx800H~xFFFHに配置されているようだったのですが、そこにはボーレート設定用のROMを置きたいので入れ替える必要がありそう。
/CEを入れ替えようと思ったんだけど、基板のパターンを見たら/WEを入れ替える方が簡単だったので、ROMとRAMの物理的な位置と/WEを入れ替えて解決。ところがパターンカットするときに/CEの線も切ってしまったので、結局/CEを入れ替えるのと労力はあまり変わらず。まあいいか。
最初、何でA8~11をプルダウンしているんだろうと思っていたのですが、Handbook (Zilog Z8 Family Design Handbook)に記載あり。起動時にI/Oポートをアドレスバスとして使用する設定をする前にメモリにアクセスしに行くため。なるほど言われてみればそうですね。Z8681は起動時に外部ROMにはアクセスしないのでプルダウンは不要。チップ横の抵抗を省略出来ました。
せっかく内蔵BASICなのに、ボーレートの設定だけのために外付けROMを付けるのはなんだかなあ、と思っていたところ、上記のElectrelicさんのブログにD0~2をプルアップ&プルダウンして値を入れればいいという話を発見。ROMを省略できました。
RXDの6.8Kは何なんだろうと思っていたら、tomi9さんのブログに「USBシリアルを接続すると、PowerONリセットがRXDからの電流の回り込みでVCCに電圧が加わりリセットできないのでRXDに抵抗が追加してあります。」という記述を発見。なるほど納得。



とりあえず完成したので起動。してみたが動かず・・・おかしいなあ。
オシロで/AS, /DS, /CE, TXDの信号を見てみるとそれなりの信号は出ている。が、良くみるとTXDの動きが遅すぎる。XTAL1, XTAL2をみたら周波数が数KHz。これはおかしい。水晶がちゃんと発振していないようだ。水晶にソケットとか付けたのがまずかったのかなあと思ったものの、せっかくソケットなので水晶を入れ替えてみる。手持ちの4MHzだとちゃんと発振。10MHzは発振せず。ああ、やっぱりそういう微妙なところか。
SBCZ8のコンデンサは15pだったんだけど、Applicatio Noteは22pFだったので、その差も気になる。

データシートを確認しようと思い、Handbookを確認したところ、C<=15pFって書いてあるじゃん!Application Noteは何で22pFなのよ。

15pFと22pFでそんなに変わるかなあ、と思いながらコンデンサを交換。結果、あっさり発振成功。(このあたりは写真や記録を撮っていなかったので画像無し)

お約束のマンデルブロ集合でベンチマークでも走らすか、と思って以前MCS8051のベンチマークに使ったASCIIART.BASを見てみたら浮動小数点演算していることに気付く。
マンデルブロ集合の計算なんだからそりゃそうだよね。しかしZ8671のBASICは16bitの整数型なのだ。整数型BASIC用のベンチマークは無いのかな?と思ってはせりんさんのサイト(ASCIIART(マンデルブロ集合)ベンチマーク)を見ても、みんな浮動小数点演算が前提だった。
仕方ないので固定小数点版をやっつけで作ってみました。
最初小数部8bitでやってたらいろいろ溢れて試行錯誤の結果小数部6bitで動きました。
16bitの符号付き整数を小数部6bitの固定小数点に変換しながら計算。
最初小数部8bitでやったら計算途中で溢れてNG。7bitだと一応動くけど、溢れる可能性があるので6bitにしました。
この実装も結構インチキなのですが、計算に使われる変数値が±5.0以下みたいなのでとりあえず動いているという感じです。
発散判定は整数部だけでやってます。(真面目にやっても時間がかかるわりにそれほど差が無いので。)
CHR関数的なものが無いので、10~15はIF文で"A"~"F"をPRINT。FOR文も無いのでIFとGOTOで代用。
プログラムはこんな感じ。
(【2023/1/5 追記
下記コードはオーバーフローしてる箇所があるっぽいので、整数型BASIC用のプログラムとしては別の記事(Fairchild F8 Family (F3850))に書いたやつの方がいいかもしれないです。)

10 F=64: M=F-1: REM for Fixed Floating Point (F=1.0, M is a bit mask for fraction part)
20 Y=-12
30 X=-39
40 C=X*3: REM 0.0458*F
50 D=Y*16/3: REM 0.08333*F
60 A=C
70 B=D
80 I=0
100 Q=B/F
130 IF B>=0 THEN S=AND(B,M): GOTO 150
140 S=-AND(-B,M)
150 T=(A+B)*(A-B)/F+C
160 B=2*(A*Q+A*S/F)+D
170 A=T
180 P=A/F: Q=B/F
190 IF (P*P+Q*Q)>4 THEN GOTO 220
200 I=I+1:IF I<=15 THEN GOTO 100
210 PRINT " ";: GOTO 300
220 IF I<10 THEN PRINT I;: GOTO 300
230 IF I=10 THEN PRINT "A";: GOTO 300
240 IF I=11 THEN PRINT "B";: GOTO 300
250 IF I=12 THEN PRINT "C";: GOTO 300
260 IF I=13 THEN PRINT "D";: GOTO 300
270 IF I=14 THEN PRINT "E";: GOTO 300
280 IF I=15 THEN PRINT "F";
300 X=X+1:IF X<=39 THEN GOTO 40
310 PRINT
320 Y=Y+1:IF Y<=12 THEN GOTO 30

結果です。クロックは7.3728MHz、実行時間は1897秒(31分37秒)。かなり遅いです。でもレトロマイコンは遅いほど味わい深いのでこれでいいのだ。


動作時も消費電力は5V×50mAと小さめ。円高で値上げされそうなので駆け込みで買ったFLIRで測定。52度ぐらいとそれほど高温ではない。

さて次は何をやろうかな?
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

CASIO AL-1000

2022-06-04 10:34:17 | 電卓
CASIO AL-1000です。

Ledudu(AL-1000)で☆☆☆、CALCUSEUM(CASIO: AL1000)のcollector valueも10.0の正真正銘の稀少機種です。電卓博物館(Casio desktop calculator)によると「1967年10月に発売された世界で最初のプログラム付電卓」とありますが、それには異論があるようで、DoPECC(Casio AL-1000 Calculator)には、1965年発売のOlivetti Programma 101の方が先と書かれています。
この個体はオークションで入手したのですが、そのときの商品説明がこちら。
「カシオの初期型の電卓AL-1000です、通電しましたがボタン操作してたらパーンと言って煙が出たのでジャンク品でお願いします、その後もう一度コンセントにさすとディスプレイはまた普通に表示されてボタンも押せましたがここでまたコンセントを抜きました。もともと一か所数字が点灯しなかったです。ルートの計算までできたのは確認しました。とにかく古い機械なので修理ベースとお考えの上ご入札お願いいたします。」
整理すると、
・一旦通電したが部品が爆発した。(おそらくコンデンサ)
・ニキシー管点灯不良1ヶ所あり。
・数値入力、開平の計算、表示はできた。
ということなので、爆発したコンデンサを交換すれば良さそうです。爆発しているので故障箇所の特定も簡単そう。爆発した原因がコンデンサ以外にもある可能性もありますが、一番ありがちな原因は単なるコンデンサの劣化でしょう。
大型電卓3台(Sharp PC-7200, Toshiba BC-1001, BC-1411)をマイコン博物館に寄贈できたおかげで作業部屋が多少片付いたので、前からやらなきゃと思っていた修理に取りかかりました。
筐体を開けてみたら、確かに何かが破裂した残骸がありました。

電源基板の右上のコンデンサ(100μF, 25V)が破裂していました。耐圧の値からすると、高電圧がかかるところでもないので、純粋にコンデンサの劣化が原因だったのかな。

集めた残骸がこちら。

右下のコンデンサも膨らんでいたので除去。

他のコンデンサも交換した方が良いのでしょうが、とりあえず2つだけ交換しました。

電源を入れたところ無事どうさ。商品説明にあった1桁点灯しない現象を確認しましたが、単にウォーミングアップに時間がかかるだけで、30秒ほどしたらちゃんと点灯しました。

基板はこんな感じ。基板の詳細はネット上に大量にあるので、これ以上の分解・撮影はしないことにしました。

計算の様子。お約束の円周率の近似値sqrt(sqrt(2143/22))と、65536の開平。0除算をすると暴走して2桁目の表示が狂います。平方根の計算はかなり速いように思います。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Toshiba BC-1411

2022-06-02 11:34:46 | 電卓
Toshiba BC-1411。以前ブログに書いたBC-1001に続く、東芝の2代目の電卓です。
電卓博物館の情報(Toshiba desktop calculator)によると、1966年12月発売、当時の価格は390,000円とのことです。
この個体は残念ながら通電しません。かなり大きくて置き場所に困っていたので、「夢の図書館・マイコン博物館」に、Sharp PC-7200, Toshiba BC-1001とあわせて寄贈させていただくことにしました。
入手してから放置されていて写真も撮っていなかったため、寄贈前に撮影しました。
キーボードです。

銘板

キャビネットは簡単に開くような作りになっていました。

基板。

横から。

基板の写真等は電卓博物館(BC-1411の基板)にたくさんあったので、バラして撮影するのはやめました。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする