6809が動いた

6809で動く世界最小のコンピュータSBC6809が完成。6809はボクが生まれて初めて動かしたマイクロプロセッサで、これは通算2台め。富士山に登らなやつと2回登るやつはどうかしているといわれるが、SBC6809を作った目的は6800を習得した技術者が6809をどういう気持ちで捉えたのかを知ること。継承性を無視しているといわれるけれど、それはそうでもないと思う。SBC6809のプリント基板はSBC6800のプリント基板の設計がほぼそのまま使えて、いつも5回くらい作り直すのに、これは1回で成功した。

SBC6809

命令体系はバイナリ互換ではなくてニーモニック互換。原則、再アセンブルすればいい。その方法で、6800のために書いたテストプログラム、端末から入力した文字をエコーバックするだけのやつがするりと動いた。ただし、スタックポインタの動きかたが違うので、Mikbugは再アセンブルしてもだめだと思う。MicroBASICはどうだろうか。いろいろと妄想が膨らむが、その前に6800を極めようと思う。

広告
カテゴリー: 6809 | コメントをどうぞ

VTLが動いた

MITSのAltair680(とAltair680B)は256バイトのEPROM、1702のICソケットが4個あり、そのうちの1個にモニタが挿さっている。モニタを書いたのはポール・アレンとマーク・チェンバレン。マーク・チェンバレンの人となりは資料がなくて不明。ポール・アレンはビル・ゲイツと協力してBASICを完成させ、商談のためにMITSを訪問し、そのままMITSのソフトウェア担当ディレクタに収まっていた。その後、MITSが経営不振に陥ったことでビル・ゲイツとともにMicrosoftを創業したのだが、ああ、その話ではないのだった。

Altair680の3個のICソケットは総容量が768バイトしかなく、使い道がなくてしばらく空いたままになっていたが、1976年、コンピュータストアのゲイリー・シャノンとフランク・マッコイがぴったり768バイトのインタプリタ、VTLを完成させ、3個の1702に書き込んで発売した。MITSがこれを絶賛した結果、純正に準ずるオプションとなった。正式名称はVTL-2だが、VTL-1が表立って出回った形跡がないため、一般にただVTLと呼ばれる。

ファイルに書き出されたソースは出回っていないので、VTLのマニュアルに掲載されたソースを書き起こしてSBC6800で動かすことにした。自慢じゃないが、誰にでもできる簡単な作業ではない。正体不明のアセンブリ言語で書かれているし、行番号499にトリックがあって、どう書き起こしたらいいか判断が難しい。まあ、そこは何とかしたけどね。ちなみに、トリックのやり口は前回の投稿に頂いたコメントの返信で言及している。

VTL_trick_L

SBC6800でVTLを動かすにはモニタを移植するのが手っ取り早い。その場合、モニタのJコマンドで何ら手を加えていないVTLが起動する。しかし、当時の日本にAltair680がなかった関係でマニアはVTLを単独で動かすことに情熱を燃やしたらしい。同好の士にフンと鼻で笑われ(たように感じて)、癪に障ったので単独動作可能版を作った。やってみればどうということはない。移植したモニタからサブルーチンを3個、書き写しただけだ。

VTL_ROM

VTLは起動した直後、使ってもいいRAMの範囲を設定する。システム変数*に末尾のアドレスを代入し、同&に先頭のアドレスを代入する。これをやり忘れると必ず暴走する。最初にこの種の儀式を必要とするのは当時のプログラムにありがちなことであり、VTLの出来が悪いわけではない。マイクロソフトのBASICは時代が進んで16ビットパソコンに採用されてからでさえ、How many files(1-15)?と尋ねたものだ。

VTL_start

プログラムを入力する方法はBASICと同じ。コマンドやステートメントはぜんぜん違う。リストを表示するにはLISTではなく0を入力する。VTLの世界観を如実に物語るのは実行行を表すシステム変数#。#に1を代入すると先頭行から実行するのでRUNに相当。プログラムの中で行番号を代入すればGOTOのように分岐する。#に0を代入しても無視される。したがって条件式と行番号を掛け算してから代入することで、IF~GOTOにあたる条件分岐が成立する。

VTL_sample

VTLの文法は、まるで数学のように、少数の原則と多数の応用で成り立っている。ネットでは「小さいなりに貧弱」みたいなニュアンスで紹介されることが多いし、マイクロソフトのBASICを標準と考える人にはいんちき臭く感じるだろうが、ボクにはとても美しく見えるぞ。もしかして、とうとうボクも変人たちの仲間入りか。

カテゴリー: 6800 | 4件のコメント

Mikbugが動いた

SBC6800でMikbugを動かした。Mikbugはモトローラが6830L7(ROM)に書き込んで提供したモニタ。モトローラのMEK6800D1やEXORciserやSWTPCのSWTPC6800などに採用されて実質的なOSあるいはBIOSの役割を果たした。これが動くと、そのもとでマイクロBASICなどが動く。1970年代のソフトウェアを再現するなら、これがないと始まらない。

mikbug

通例にしたがい端末に「HELLO, WORLD」を表示。プログラムは末尾にSWI($3F)を置いておけば、これがブレークポイントになる。Lコマンドでプログラムをロード。それから、MコマンドでMikbugの変数に直接、実行開始アドレスを書き込み、Gコマンドで実行。どこかでひとつ、つまらないミスをやらかしたらたちまち暴走する。スリル満点。

mikbug_hello

Mikbugのソースを見てみたいという人がいるかもしれないから、いちおうGithubのGistにアップしておく。その土台となるSBC6800のほうは、プログラムがちゃんと動くにもかかわらず、いまだプリント基板の修正を繰り返している。大筋に問題がないのにささいなことにこだわって何度も修正するやつは、組織だと嫌われ者だが、趣味だから問題がない。

カテゴリー: 6800 | 9件のコメント

SBC6800の近況

6800で動く世界最小のシングルボードコンピュータSBC6800は、相変わらずプリント基板をいじっている状態。ROMを2732から27256まで取り付けられるようにした(2716は動作確認に失敗)ついでに、RAMも6116ASPと6264ASPを取り付けられるようにした。ピン数の少ないやつは尻揃え。6116ASPでMIKBUGとVTLが動いた。6264ASPだとMicroBASICが動く。まだ調整し切れていないので、これらの詳細は追って報告する。

SBC6800top4K

このプリント基板はseeedで製造。スイッチサイエンス経由だと3週間かかるところを何と10日で到着。たぶんウチが成田空港に近い(クルマで2時間)せいだと思う。価格は10枚4.9ドル。ただし送料が18ドル。釈然としないので手もとで温めていたMICOM85の改良版を合わせて注文。レジストは黒を指定。やってみたかったんだよね、これ。都合2点、価格が9.8ドルで送料が22ドル。まあ妥当なところか。

MICOM85PCB

MICOM85はインテルの8085と8755と8156の組み合わせ。この一式はプリント基板のパターンが美しく引けることで知られているが、黒のレジストだとぜんぜん見えない。パターンの引き回しがうまくいかなかったとき黒を指定するといい。今度、BeagleBone Blackをよく観察してみよう。

カテゴリー: 6800, 世間話 | コメントをどうぞ

SBC6800暫定版お披露目

6800が動く世界最小のシングルボードコンピュータSBC6800はもうとっくに完成しているが、プリント基板にちょこちょこ改良したいところが見付かって公開が先延ばしになっている。このままだと永遠に公開できないので、完成している証拠として、とりあえず現状のデータ一式を公開する。これで今すぐ下に示すコンピュータが出来上がる。でも、もう少し待ってくれたらもっといいデータをドキュメント付きで公開できると思う。

SBC6800rev3

関心がある人はデータ一式をこちらのOneDriveからダウンロードしていただきたい。SBC6800R3.zipはスイッチサイエンスに直接アップロードできるガーバーデータ。mc6800crgen.X.zipはPIC12F1822をクロックジェネレータにするプロジェクト。同じくosc1536.X.zipはボーレートジェネレータのプロジェクト。いま取り組んでいる改良はROMを2716から27256までどれでも取り付けられるようにすること。もし2764だけでいいなら現状でまったく問題がない。

カテゴリー: 6800 | 13件のコメント

DRAMとWindowsと心臓がヘン

DRAMの動きかたがおかしい件、信号のタイミングを徹底的に調整した上で、その信号に加えてアドレスとデータの波形をとった。もう面倒臭いから何色がどの信号かは説明を省略するが、信号のタイミングとアドレスの切り替わりとデータの出力とリフレッシュが完璧。それなのに6803の4.9152MHzで一部のアドレスがデータの書き換えに失敗する。ただし2.4576MHzだと正常。ちなみに、6803が何MHzで動いてもDRAMが動作するタイミングは同じ。成功と失敗でどこが違うのか、まったくわからない。

seijo_dram

ところで、DRAMのテストプログラムを書いたり波形を観測したりしているWinodws10のパソコンが、更新したあとネットにつながらなくなった。トラブルシューティングをしても問題を特定できない。Windows、お前もか。フィードバックをお寄せくださいというのだけれどネットにつながらないのだからそれは無理。この件は、再起動すればつながることが分かったから当面はそれで我慢するとしよう。

seijo_net

DRAMとWindowsに続いて心臓の動きかたがおかしくなった。ときどきカックンとくる感じがするので脈をとってみた。「脈拍計が完成」で作った脈拍計に指を乗せ、2400円の格安オシロOSC001で読み取る。OSC001は測定可能な周波数帯域の上限が頑張っても300kHzくらいだというので評判が悪いが、脈拍は余裕でとれる。むしろ、周波数が低すぎて画像が更新されるまで30秒ほど待たなければならない。

seijo_beat_ok

ほらほら、やっぱり脈が飛んでいるよ。このままじゃ死んじゃうと思って医者へ行ったが、このくらいは(データは見せていない)、特段の異常ではないらしい。それは本当か! 何かストレスがありますか? と訊くので自信をもってありますと断言。そんなやりとりのあげく、安定剤を出すか地域拠点病院に紹介状を書くか選べということになり、地域拠点病院のほうを選んだ。

seijo_beat_ng

地域拠点病院で血液検査とレントゲンと心電図をとってすべて正常。健康体そのものですと太鼓判を押しやがった。こうして、明らかに異常が起きているのに測定するとどこも悪くないという事象が3つ揃った。もしかしたらご心配おかけするかもしれないけれど、お見舞いのコメントは謹んでご辞退いたします。返信のしようがないから。

カテゴリー: 6800, DRAM | コメントをどうぞ

DRAMが、一応、動いた

DRAMの動きかたがおかしい件、同じ41464を使ったCOMMODOR64の回路図を参考にして、#OEを常時有効とし、#WE(こちらが優先)だけで制御する方式に変更。DRAMボードはもはや修正不可能ないほどツギハギだらけなので、別のプリント基板で作り直す。10枚まで同じ値段というシステムは、この種の試行錯誤に向いている。ただし、ICソケットとか積層セラミックコンデンサとか、安いけれど湯水のように使う部品が懐に響く。

DRAM_ok1

結果はぜんぜん変化なし。手弁当の開発は資金が枯渇しかけている。あとひとつ6803の速度を半分に落として動かしてみて、ダメだったら諦めることにした。現在、6803には4.9152MHzの水晶が付いている。それを2.4576MHzに取り換える。この簡単な話が意外な大仕事になった。今どきそんな低い周波数は需要がないらしく、著しく入手が困難。千石電商とサンエレクトロと日米商事は売り場にケースがあるのに中身がカラ。ケースがない若松通商で店員さんに尋ねて、ようやく入手することができた。

DRAM_ok2

速度を半分に落としたから通信速度も9600bpsから4800bpsに半減。端末をつないで電源を入れると、あ、テストプログラムが完走し、ようやくOKの2文字を見ることができた。テストプログラムはこのあとスタックをDRAMに設定して割り込みで文字の入出力を繰り返す。すべて正常。何もかもうまくいったとき人間の発する言葉は「あ」だけなんだね。

DRAMtest_ok

タイミングをうまく調整すればたぶん普通の速度で動くと思う。はじめからタイミングだけの問題だったかもしれないので、これまでに試したいろいろな回路を遡って見直したい。やりたいことはたくさんあってカネがない。資産家の令嬢と交際したい。

カテゴリー: 6800, DRAM | 2件のコメント