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 パーマリンク

Mikbugが動いた への9件のフィードバック

  1. DAI より:

    こんにちは。
    前回のVTLに反応してしまいました。
    たしか、当時のアスキー等の雑誌をさきいか状態にしておいていたはず、とさがしたのですが、ありません。
    VTLとか、大西博さんのGAMEとかおいていたはずなのですが。
    東大版、電大版のBASICは出てきました。
    でも、当時のTinyBASICの資料はネット上、主に海外に転がっていますが、
    VTLやGAMEは見あたりません。
    20年ほど前の引越時に捨てたのかなあ。
    使用されたVTLは以前からお持ちだったのでしょうか。
    えっ、「タイニーBASICをCで書く」がVTLにも参考になるんですか。

    • vintagechips より:

      DAIさん、いつもボクに自慢話をする機会を与えてくれてありがとう。VTLはSBC6800で動かすために探しました。もともとがROMに書き込んで販売された商品なのでファイルに書き出されたソースは世界中のどこにも存在しません。ネットの情報はヨタ話が多くてアテになりません。そこで、秘密のルートでマニュアルを入手し、掲載されているソースを書き起こしました。現在、動作確認中です。数日中に結果を投稿し、マニュアルと世界で唯一のソースをアップし、目立たないリンクを張っておきます(フリーでない可能性があるので)。こんな調査能力抜群のボクでも電大版BASICは、ブルーバックスの印刷がかすれたページがあるだけで、ファイルになったやつは持っていないな。

  2. DAI より:

    VTL、期待しています。
    電大版に関しては、たしかにファイルは見たことがありません。
    紙ベースでは、ブルーバックス以外にもう一つ手元にあります。bitと言う雑誌(共立出版でしたっけ)のVol10 No8からNo12にかけて安田先生が直々に書かれています。
    それを見ますと、ブルーバックス版で発生していた文法エラー時のハングアップを回避してある版
    だそうです。
    おお、ALTAIR680bにVTL/2と言う強力言語があると書いてある。
    おおおお!MITS_Altair_680_Very_Tiny_Language_VTL-2_Manual.PDFで検索したら・・・・。

    • vintagechips より:

      DAIさん、こんにちは。ネタ元が割れちゃったのでマニュアルはアップしないで、探した人だけが入手できるものとしますね。巻末のリスティングを見ていただけると話が早いのですが、正体不明のアセンブリ言語で書かれていますし、行番号499はトリックです。リスティングを公開している以上、プロテクトではないはずですが、こいつのせいで、ROMのイメージがあったとしても逆アセンブルがうまくいかない、というのが、ソースが存在しない理由でしょうね。

  3. DAI より:

    これが元ネタでしたか。昨日書き込んだ後、もしやと思いました。
    確かにモトローラ純正とは違いますね。
    まだ読めると言えるほどではないのですが、179行目が切れています。
    ここ、BD F1
    かなと思うのですが、なにかわかりましたか。
    499行は私にはよくわかりません。9c は2バイト命令、次の0D は1バイト命令のはずなので、
    ジャンプ先がどちらでもそれなりに動いてしまいそうだと思いました。
    このころは、ハンドアセンブルだと思いますので、nopがわりかな、
    でも、前後のCLCやSECは何したいのだろ。
    あの頃、メモリ節約のために、トリッキーなプログラムをやっていたと何かで読んだことがありますが、これもそうなのでしょうか。

    • vintagechips より:

      DAIさん、こんにちは。ディープな話題を振ってくれてありがとう。行番号179はソースがFND3 BSR NXTXTと読めるのでハンド逆アセンブルすると8DE1です。トリックのほうはキャリーを立てるか立てないか選択するものです。行番号500のOKラベルから実行したときは、SEC(0D)がキャリーを立てて先へ進みます。上から流れてきたときは、行番号498のCLCでキャリーを下げ、行番号499のCPX(9C0D)が、それ自体は無意味ですが行番号500のSECをスキップする役割を果たし、キャリーを下げたまま先へ進みます。こういう話、投稿に書いたら誰もついてこられないだろうなと悩んでいたところです。ああすっきりした。

      • 70年代プログラマの生き残り より:

        VTLに関しては創刊当時のアスキーにダンプが掲載されており、その中で、499行のトリッキーなテクニックが説明されており、省メモリのためにスゴい! と絶賛されておりました。
        と、ジジイのタワゴトでございましたw

  4. DAI より:

    こんにちは。今回は(も)大変勉強になりました。ハンドアセンブルは30年ほど前にZ80で少しやっただけで、もう忘れてしまってました。
    カウンタが2進んでいることや、モトローラではブランチだったことなど。
    ほかにも、経験のなさが丸わかりですね。こんな私のお相手をしていただきありがたい限りです。
    これからしばらく、命令表と関数電卓片手にリストを読んでみます。
    ただ、ここでは、VTlの話よりMikbugの話の方が良かったのかもしれません。
    ですが、Mikbugの資料はすでに持っているものの使ったことがないのです。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中