偽装CPU…とSBC6800の話。

(最初にこれを書いたときに不十分なところがあったので、加筆修正してます)。

SBC6809を作る際に、ebay などで6809系CPUを計4つ調達したんですが、CPUのラベルと中身が一致していない例が複数ありました。

上から、Hitachi HD63C09P と称するもの。謎ブランドのMC6809EPと称するもの。STmicro のMC68B09P(これは動作確認済み)。

真ん中の、MC6809EPは6809Eシリーズということで、クロックジェネレーターが内蔵されていませんので、6809とは非互換です。そのままSBC6809に刺しても動かないはずですが、なんと普通に動いた(驚)。

どうやら、型番テキトーらしい。

一番上のHD63C09P(と称するもの)はそのまま、SBC6809に刺せば動くべきですが、こっちは、動きません。

こちらで6809EをSBC6809で動作させることについて書かれていました(外付けでPIC12F1822で500kHzのクロックジェネレーターを実装)ので、tomi9jpさんを真似してアダプターを作成。HD63C09Pを6809Eアダプターに刺して、SBC6809に装着して動かすと、見事にBASICなど動きました。。。。

こちらも偽装CPUだ。とはいえ、気になったので、こちらの6809/6309チェックプログラムで確認してみました。

チェックしてみたら、6309の命令セットが使えるらしい。また、消費電力を見たら、SBC6809全体で、25mA消費ということで、CMOSっぽい。したがって、謎なマーク書き換え品ということになります。

Motorola MC68B09Pを刺したときは、消費電流 131mAでした。

STmicro MC68B09Pでは、消費電流 155mAでした。

謎ブランド MC6809EP (Eだけどクロックジェネレーター付き)では、消費電流129mAでした。

上記どれもHD63C09P以外は、6809相当の命令セットの判定でした。

それなりに消費電流は違いますね。(HD63C09Pと称するCPUを動かしているときはクロックが他の半分なので、そのまま比較はできませんが、CMOSと思っても良いと思います)。

CPUを刺さないときのSBC6809の消費電流は20mA程度です。

というわけで、CPUは出所のハッキリしたところから注意して買いましょう。

マーキングが信用できないので、最高動作クロックも謎。

これとは別に、シングルボードコンピューター収集癖が治らず、SBC6800も作りました(下)。こちらはMIKBUGを入れてあります。特に何かをする、という目的はありませんが、それはSBC6809も同じかも。6800の方は、私が10代の時には、特に目に入るところではありませんでしたので、どうも思い入れが湧かないです。

SBC6809の方は、Cコンパイラーをスタンドアローンで動かしたいと思うんですが、メモリーが足りないんで、Z80-MBC用に買った「超絶大容量」128KBytesメモリーをこちらにつけたいんですが、外部I/Fも含めたボードをSBC6809をもとに起こすか、CPUソケットにボードを積み重ねて乗っ取る方式にするか悩み中。

米国出張にて

この間、カリフォルニアのとあるところに出張をしました。

先方とは何度か往来があるお知り合いの関係で、今回の出張は、

「1月から2月は娘の中学受験があるから、その時期の訪問はちょっと無理で、3月あたりがいいかな」

と相談していましたし、

「中学受験対応無事終わったよ」

なんてメールをしていたので、ランチやディナーの時には、中学受験・大学受験がらみの話にもなりました。

5年生から2年間通塾して中学受験の準備をしたことを話したら、ちょっと驚かれました。

米国でももちろん中学高校は、上から下まであり、トップ25大学に入学する割合の高さなどから、地域トップ校とみなされる学校が固定的にあるようです。そして、そのほとんどは、私立の学校だそうです。そういったトップ校を目指す家庭は当然あって、そういった家庭の子は準備のために小学校6年生の時には、準備クラスに通うとのことでしたが、日本のように、家庭によっては低学年から塾に通うというようなことはない、とおっしゃってました。

そういった私立の学校ですが、当然学費は結構するみたいで、先方も子供を私立にやったそうですが、学費が毎年、「カムリ一台分」(=300万+?)かかると言ってました。まあ、米国はここのところ、不動産価格もめちゃ上昇、いろいろなコストが上昇しているので、それと比べるとまあしょうがないレベルかもしれませんが、日本と比べると2~3倍ということで、結構お金がかかるな、と思います。

この費用の違いは、国などの補助金額の日米の違いにあるのか?と思って、調べてみたんですが、日本では私学への補助金は10%程度だと思いますので、これほどの学費の違いが何に因るのかよくわかりませんでした。

当然そういった地域トップ中学高校に入る子は、大学にも行くので、大学のアドミッションについての話にもなりました。

ちょうど日本では国立大学の入試が終わったタイミングだったので、

「日本では、2日間の入試のペーパーテストだけで、アドミッションが決まる。高校からの書類は、高校課程修了見込みの証明でしかないんだ。」(ごめんなさいセンター入試は配点が低いので無視しました)

という話をしたら、これもまた驚きの目。

「そのとき調子が悪かったらどうすんだ?」

という話があったので、

「そりゃ、だめでしょ。だから、中学受験もそうだけど、体調を崩さないようにめちゃ気をつける。この時期インフルエンザとか流行るから、結構大変。」

「でも、逆に2日間だけパフォーマンスを出せばよいから、楽とも言える。自分は、6年間優秀な成績を継続的にとる、なんて真面目なことは到底できないから、この日本の入試制度に助けられたと思う」

などという話をしました。

米国は、共通学力テストもありますが、学校でのパフォーマンスも評価の対象で、その上で、essayの内容が重要だ、という仕組みなので、大変だ、と思います。日本でも、近年はAOとかの制度でこれを真似していると思いますが、日本の場合、AO入試が大学の定員確保策に堕しているので、これはだめだ、と思います。AO入試で入学することが悪いとは思いませんが、同じ学校で比べるとAO入試で入った人の方が学力に劣る傾向にあるのは、当然のことだと思います。

米国トップ25大学という表現を先方がされていたので、興味を持って調べてみましたが、日本ですと、東大・京大・一橋・東工大、早稲田・慶應というように学部関係なく学校の名前でヒエラルキーがあるような見方がされますが、米国の大学評価は、様々な視点でのランキングが発表されていて面白い。私は大学は理系出身ですので、STEM(=Science, Technology, Engineering and Mathematics)大学ランキングに目が行きます。

出張でYaleやら、Princetonなど、いろいろな大学を訪問したことがありますが、やっぱり米国トップ大学は素晴らしい環境。

米国の大学は学費が高いので知られています。確かに、私立大学は年間400万~ということで、非常に高いですが、親の収入に応じて学費が変わる制度を持っている大学もあるし、州立大学などは、その州出身の学生は学費が安めに設定してたりすることもあるので、親の収入がそれほどでもなく、でも「出来る子」が勉学を一生懸命するのには、必ず道が開けているようになっているのではないか?と思います。

また、そういったトップ大学を出た人たちは、卒業後のサラリーが日本と比べると非常に高い職に就く場合が多いので、そういった道を選ぶ人にとっては学費はペイバックするからあんまり関係ないでしょう。まあ、収入が取れる分野に行かないといけないプレッシャーは日本よりあると思いますし、失敗した人に冷たい制度とも言えます。

最近、日本から海外の大学に学部から行く人も増えているようですが、海外からの入学者にそのような学費減免制度はあまりないように思うのですが、どうなんだろう。まあ、我が娘は家庭の収支の問題から、国内の大学で、できれば学費の安めな国立大学で、でも「しっかり好きなことを」学んでくれたらいいな、と思います。あんまり、この分野だと卒業後の給与が多いからこっち、みたいな貧乏臭い考え方はしてほしくないな、と思う。

そんなことを日米入試事情比較からつらつらと考えました。

Z80-CP/M ボードをつくる

SBC6809を作って遊ぶ過程でWebを見ていたら、いろいろなものがあることがわかりました。

4IC Z80 コンピューター を作りたくなって、オレンジピコからまたポチリ(病気がこじれた)。土日には配達されるまいと思っていたら、日曜の午後に郵便が届いていたので、我慢ができず作業開始。

1) ハードウェアの製作

まず、Z80のペリフェラルを引き受けているATmega32aにプログラム(Arduinoのスケッチ)を書き込むことが必要。

Atmega32a へ書き込みは下記の通り実行。

Arduino as ISP を使ってAtmega32a にブートローダーなどを書き込む方針に決めた。TL866CSライタを使っても良いみたいだけど、ヒューズの設定の仕方など不明点があったので、とりあえずみんながやっているやり方で!(あとで、こちらのDiscussions をよく読んだら書いてあったけど)。

1a) まず、arduino as ISP を作成する。

手持ちのFreeduinoを引っ張り出してきて、でも、いろいろの実験でどうなっているか不明だったので、Atmel ICE を使ってArduino のbootloader を書き込んでArduino化する。

次にArduino IDEのExamples からArduinoISPスケッチを開いて、Freeduinoの方に、ArduinoIDEを書き込もうとしたら、シリアル経由ではうまくいかなかった。しょうがないので、ブートローダー付きのArduinoIDEスケッチの.hexファイルを生成し、AtmelICEをICSP端子につないでAtmelICEから直接書き込んだ(2度手間をやっちゃった)。

そして、ArduinoISPとなった、Freeduinoを使っての書き込みを実行。

ブレッドボードにATmega32a を刺し、適当にググって下記の配線をジャンパーワイヤーでArduinoISPとなったFreeduinoと行った。

– Connect pins 10 and 30 on IC to 5V on Arduino

– Connect pins 11 and 31 to Ground on Arduino

– Connect pin 6 on IC to pin 11 on Arduino (MOSI)

– Connect pin 7 on IC to pin 12 on Arduino (MISO)

-Connect pin 8 on IC to pin 13 on Arduino (SCK)

-Connect pin 9 on IC to pin 10 on Arduino

そのうえで、まず、ArduinoISPを使って、ATmega32のブートローダーを書き込む。そして、Arduino IDEでATmega32Aで動かすスケッチ(S221116_R100218_Z80.ino)を開いて、アップロード実行。

不安なので、ATmega32aをブレッドボードから外して、TL866CSにつないでメモリの内容を読みだしたところ、ちゃんと書き込みできてそう。ちょっと不安だけど、この先はボードを完成させてからチェックすることにする。

1b) ボードの実装。

実装するLEDは、状態を見るだけなので、全部手持ちの赤でもいいのだけど、まあ、作った人の例に色も合わせてみようといろいろな色のLEDを秋月から購入。

ついでに、EEPROM (24LC1025)を2つ使ってi2c につなぐvirtual disk もCP/Mを走らせるのには必要なので、これもまた、人の実装例を見ながらおんなじように作った。さらに、I2CバスにつけるRTCモジュールもAmazonでポチり、これもまた、こちらのLogsにある通りのことをやって、接続した。Parallel I/O の例も載っていたが、こちらの方はi2c pio expander のICを買っておいた(未実装)。

1c) 火入れ。

電源は、PCのUSBから取る。あっさり、basic が起動できることを確かめた。

2) ソフト

2a) CP/M を動かす。

CP/M は8080で動く、MS-DOSの前からあるDOSです(自分の世代より前のことなのでわかりません。。。) MS-DOSがすでに理解してもらえないような気が。

中略。

ブートさせると、basic, forth, iLoad, 等を選べるようになっているが、iLoadを選び、iDiskという、i2cのvirtual diskにディスクイメージを書き込むためのユティリティをアップロードして動かすと、プロンプトがでるので、QPM271_DiskPack.zipを解凍したところに入っている4つの.hexファイルをteratermを使ってアップロード。ついでにCPMのディスクパックに含まれているdisk1 用のTurbo Pascal のイメージも書き込む。

Turbo Pascalなんて、学部1年の情報実習以来?懐かしい!というかPascalの文法も、TruboPascalの統合環境の使い方ももう忘れてる。

リブートして、QP/Mをロードしたところ。

QP/Mのディスクにはmicrosoft basic が入っていたのでそれでi2c RTCの動作確認(QP/Mで使っているけど)

OK!

ここでCコンパイラを動かしたりしたいけど、メモリとかディスクとかちょっと不足気味?

とりあえず、mbasic で遊ぶ。

Conway’s game of Life

いろんなbasicのゲームがwebで見つかるので、いろいろ遊んでみる。

game of life は、昔F-BASIC でも作って動かしていたように思います。

動かしてみたけど、有名なグライダーを入れると、グライダーが飛んでかないでいきなり消滅。。。?

3) 今後

特に目的もなく、作ってみましたが、basic でi2cポートも叩けるみたいなので、手持ちの24bit AD変換器などのセンサーを動かして高精度データをとりつつ、でも、データの表示はASCIIキャラクターのグラフで表示。みたいなのをやって遊びたいな、なんて思っています。

 

sbc6809を作る

有隣堂にモトローラ6800伝説があったので、思わず衝動買い。(ついでにインテル8080伝説の方も・・・)こういうの私的にはぐいぐい来ます。

私は、先に書いたように、Z80と6809が載っているパソコンをいじくったことはあるのですが、アセンブラは6809しか経験がないです。今回、FMのメモリ拡張ボードなどを作ったりしてハードウェアは一番なじみのある、6809のsingle board computer を作りたくなりました。

まず、スイッチサイエンスでPCBを販売していたので、購入。

ボードを購入して、退路を断った後、部品を集めようと思いましたが、その前に、自分のジャンクボックスにEPROMやら、74LS00やら74LS138ならきっとあるはずと思って、探してみたら、今の家に引っ越した後に部品の整理ということで、古い部品をかなり捨てていたことが発覚。どれも手持ちがありませんでした。手持ちの7400などは全部HCだった。使えない!

EPROMライタも昔作った覚えがあるのですが、見つけられない。EPROMの消去は、サンハヤトの感光基板作成用の紫外線ライトがあるはずだからそれでやればいいはず。

頒布されている技術情報のpdfを見ると、非常に丁寧に部品の購入先やら型番まで表に書かれていたので、それを見ながら、全部通販でポチポチ購入。

6809は、若松通商になかったので、ebay で怪しい中国の業者に、Hitachi HD63C09や、Motorola MC68B09P の発注をした後に、オレンジピコでMC68B09Pが扱われていることに気が付き、そちらで68B09Pと、あとで楽することを考えて、EEPROMを購入。若松からは、HD63A50P, HM6264ALSP-12, Intel D27256, 74LS00, 74LS138を購入。その他必要な部品(シリアル-TTL 5V変換ケーブル、ACアダプター、ICソケット、スイッチ、抵抗、コンデンサ、水晶)は、秋月から購入。

EPROMの書き込みにライタが必要なので、amazonでTL866CSを購入。

それから、ボーレートクロックジェネレータとして使われているPIC12F1822も書き込みツールを持っていないので、オレンジピコからpickit3互換品を購入。

ポチポチしまくって数日内に全部の部品がそろいました。通販バンザイ。

オレンジピコのMC68B09PはSTmicroでした。なんか残念。やっぱり日立かモトローラでしょ!

オリンピックの女子パシュート決勝を見ながら、はんだ付け大会。部品のGNDピンのサーマル処理がちゃんとされているので、かなりはんだ付けが楽でした。素晴らしい。

pickit3を使ったpic12f1822の書き込みは、ブレッドボードを使って行いました。

EPROMは動作確認用のエコーバックプログラムのHEXファイルを書き込み。

PCにつないで、5VのACアダプターを繋ぎ電源投入すると、あっさり動きました。

 

美しいボードだ。。。

CPUはまあまあ暖かくなります。消費電力は5V 0.15A = 0.75W でした。意外に低消費電力。モバイルバッテリーで十分動かせますね。

BASICを入れて、プログラム書いて遊びたい。本当は、このボードでCコンパイラが動くといいのですが、メモリが小さすぎて無理かな?やっぱり、同じボードで完結する環境が好きなので、インタープリターを入れていじくるのが良い。

… 勢いあまって、BASIC もEEPROMに書き込んで動かしてみた。

夜更かししてないで、はよ寝よ!

 

 

中学受験雑感

娘の中学受験が終わって2週間ほどが経ち、もう少しで中学の保護者ガイダンスです。試験が終わってから1週間ほどはちょっと親は抜け殻みたいになっていたんですが、ようやく少し戻ってきたという感じです。今日、塾の教材もかなりゴミに出して、少しすっきりとしました。

とにかく、塾に行ってかなりの時間受験勉強しているので、どこかに入学できないとつらいだろうなと思って、とにかく、併願をいろいろと組んだり必死でしたが、終わってしばらく経つと、そこまでする必要があったかな?という疑問も少し感じないわけではないですね。

中学受験に娘を放り込んだのは、半分は親のエゴだと思っています。我が子はどれくらい頑張って勉強に取り組めるかな?というような感じの。

私は、中学受験や、中高一貫を直接経験していませんので、娘を通じて、どんな世界か体験してみたかった、というのもちょっと(かなり?)あります。

私自身は、小学校の時にしばらく豊島区に暮らしていたことがあるのですが、その時同級生が四谷大塚に通っていたな、とか、そのあと神戸に引っ越したときに、同級のデキル女子が中学受験したらしく、担任の先生がその子のお母さんに「合格おめでとうございます」って言っているのを横目に「ん?何?」と思ったりとか、高校の時、東大模試を受けに神戸の駿台に行ったら、灘の子が大勢つるんで余裕の表情で楽しそうにしているのを見てコンプレックスを感じたりとか、中学受験・中高一貫の世界って、周辺から、遠巻きに眺めている、という感じでした。

大学に入った後、クラスには中高一貫生がたくさんいましたが、割合みんな器用にそつなくこなす人が多いな、という印象を持ちました。今思うと、中学受験の問題を短い時間の中で戦略をもって解く練習をしてきた人たちだから、公立の野武士とは違って当然という気がします。

大学生の時に中学受験生の家庭教師をしたことがあるのですが、その時、少し中学受験のこわさを感じる出来事もありました。その教え子は、麻布を目指していたんですが、合格できず、その報告をお母さんから電話で頂いたとき、「聖光は受かったんですが。。。」というなり、電話口で泣きだされたんです。私はおろおろしてしまって、結局それっきりになってしまったんですが、当時は「受かったところがあるんだから、いいじゃない」と思っていたんですが、今は、お母さんの気持ちがわかる気がします。(というか、中学受験生の家庭教師を、公立出身の人間がやるのは無理がありました。ごめんなさい。)

我が子が塾に行き、中学受験をし、中高一貫に入るということで、まあ、よかったな、と思うんですが、親の目から見ると、塾での2年間で、少し、教わりグセがついてやしないか?と心配するところも、少しあります。

中学受験の問題、確かに難しいとは思いますが、しょせん小学生の学習範囲です。1年も経てば、ちゃんと勉強に向き合う子たちだったら、みんな理解できる事柄を、あの短い試験時間内に、そつなく正解する力を訓練し、競っているだけだと思います。(だけ、は、ちょっと言い過ぎかな。)

(だから、親は、少し肩の力を抜いて、子どものチャレンジをサポートするのでちょうどいいと思います。あんまり、順位がどうだーとか、こだわってもしょうがない。とかは、終わった後だから言える話、ですが)

中学からは、勉強にせよ、何にせよ、もっと時間をかけて悩んで自主的に取り組んでほしいな、考え抜く、ということを一生懸命やって欲しいな、という風に私は今思っているところです。