2018/04/08からのアクセス回数 5371 モトローラ6800伝説 †前職の同僚の大黒さんから鈴木哲哉さんの モトローラ6800伝説 を紹介してもらいました。 ちょうど6809の時代に社会人となりFM-7を購入したこともあり、 興味深く拝見しました。 特に6800の開発にミニコンを活用した場面がでてくるのに驚きました!
参考サイト †モトローラ6800伝説 には、スイッチサイエンスから ルーズキットおよびROMセット を購入できるので、初心者でも試すことができます。 また、技術資料とデータパックも充実しており、ルーズキットのお手本のようなプロジェクトだと感じました。 出来上がった、マイsbc6800ボードです。 ボード発注 †残念ながら私がスイッチサイエンスさんのサイトにアクセスしたときには、 ルーズキットの在庫がありませでしたので、データパックのガーバーファイルをFusion PCB に送ってボードを入手しました(5枚で$7.9なので複数人で作るときにはお勧めです)。 発注から届くまでは20日程みておくといいです。
部品一覧 †2018/03/21に若松、秋月に注文し、ボードの到着を待つだけのみです。 若松には以下の部品を注文しました(小計 2132円+送料250円)。
秋月には以下の部品を注文しました。
すぐれもの部品 †後で気づいたのですが、ROMのソケット(ロープロファイルゼロプレッシャーICソケット (28P) 600mil) という優れものがありました。 PIC MPLAB IDEの準備 †以下のリンクを参照して、Mac用のMPLAB IDEをインストールしました。
PICkit3で書き込むときの注意! †PICkit3で書き込むとき、Powerを供給する必要があります。 プロジェクトのPropertyのPICkit3を選択し、「Power」のOptionからPower target circuit from PICkit3 をチェックします。 EEPROMの書込み †EEPROMの書き込みにはアマゾンで安価に販売していたUSB Mini Proを使用しました。 付属TL866Aの付属のアプリ(minipro.exe)ではどうも書き込みに失敗します。 このEEPROMはとても優れもので、いろんなCPUに対応しており、動かなくなった AVRのヒューズビットの修復も可能だそうです。 OSSのminiproを使ってみる †フォーラムで似たようなケースの投稿でLinuxベースのminiproを使うと良いとの 記事がありました。 必要なライブラリはlibusbですが、Intel HexとMotorolar S形式の変換用に srecordもインストールします。 git clone https://github.com/vdudouyt/minipro.git cd minipro brew install libusb brew link libusb brew install srecord make -f Makefile.macOS sudo make install MIKBUG.HEXの書き込み †試行錯誤の結果、srec_catでアドレスを変更し、 miniprohexで書き込むことでMacbook AirからEEPROMに プログラムを書き込むことができるようになりました。 $ srec_cat MIKBUG.HEX -Intel -offset -0X8000 -o conv_mikbug.hex -Intel $ miniprohex -p 28C256 -w conv_mikbug.hex 6800での動作確認 †端末ソフトから通信ソフトpicocom*1 を使ってsbc6800ボードに接続します。 sbc6800ボードのスイッチを入れ、*が表示されればMIKBUGが正常に起動しています。 次にRを入力して、レジスターの場外が表示されることを確認しました。 $ picocom -b 9600 /dev/cu.usbserial-A603BU4B 途中省略 Terminal ready *R 45 AB BB A8AA D35D 1F42 端末ソフトでは、こんな感じです。 Hello Worldの実行 †「*」プロンプトの後にLを入力して、HELLO.Sのテキストをコピー&ペーストする。 画面の先頭がS9なら成功です。 MIKbugの実行開始アドレスをセットしていないので、 そのままGコマンドを入力しても動きません。
MコマンドでRAMを書き換えます。値を変更するときには、 ブランクの後に修正する値を入力します。Mモードを終了するには、 ブランクの後に改行を入力します。 *M 1F48 *1F48 D1 01 *1F49 5D 00 *1F4A 55 08 実行にはGコマンドを入力します。 *G HELLO, WORLD D4 AB 04 0117 0106 1F42 ソフトウェア環境 †いくつかの6800用アセンブラが見つかりました。 今回はコンパイル結果をモトローラS形式に出力してくれる、asm68cを使用することにしました。 asm68cのインストール †sourceforgeのサイトからダウンロードしたasm68c_v00_10a.tgzを展開し、 makeコマンドでコンパイルするだけです。 いくつかのワーニングはできますが、カレントディレクトリにasm68cができます。 $ make ワーニングの出力 6 warnings generated. gcc -o asm68c asm68c.o mne68c.o ops68c.o exp.o # /usr/local/binにコピー $ sudo cp asm68c /usr/local/bin/ Hello Worldのコンパイル †以下のようにsbc6800_datapackのHELLO.ASMをコンパイルすると、 カレントディレクトリにHELLO.xというS形式のファイルが作成されます。 $ asm68c HELLO.ASM ***** pass 1 on HELLO.ASM ***** ***** pass 1 on HELLO.ASM done ***** ***** pass 2 on HELLO.ASM ***** ***** pass 2 on HELLO.ASM done ***** No syntax errors found. | 0107:MESG || e07e:PDATA1 || 0100:START | $ cat HELLO.x S10A0100CE0107BDE07E3FC4 S11301070D0A48454C4C4F2C20574F524C440D0A6E S904011704DF sbc6800_datapackのHELLO.Sと比べるとアドレス(先頭のSxxxの後の4桁) を除くと同じ結果になっていることが分かります。 S1130100CE0107BDE07E3F0D0A48454C4C4F2C20E4 S10B0110574F524C440D0A0440 S9 コメント †皆様のご意見、ご希望をお待ちしております。勉強会で分からなかったこと等、お気軽に問い合わせて下さい。 スパム防止に画像の文字列も入力してください。 Tweet |