Arduino勉強会

2018/04/08からのアクセス回数 4924

モトローラ6800伝説

前職の同僚の大黒さんから鈴木哲哉さんの モトローラ6800伝説 を紹介してもらいました。

ちょうど6809の時代に社会人となりFM-7を購入したこともあり、 興味深く拝見しました。

特に6800の開発にミニコンを活用した場面がでてくるのに驚きました!

参考サイト

モトローラ6800伝説 には、スイッチサイエンスから ルーズキットおよびROMセット を購入できるので、初心者でも試すことができます。

また、技術資料とデータパックも充実しており、ルーズキットのお手本のようなプロジェクトだと感じました。

出来上がった、マイsbc6800ボードです。

th_sbc6800_board.png

ボード発注

残念ながら私がスイッチサイエンスさんのサイトにアクセスしたときには、 ルーズキットの在庫がありませでしたので、データパックのガーバーファイルをFusion PCB に送ってボードを入手しました(5枚で$7.9なので複数人で作るときにはお勧めです)。

発注から届くまでは20日程みておくといいです。

部品一覧

2018/03/21に若松、秋月に注文し、ボードの到着を待つだけのみです。

若松には以下の部品を注文しました(小計 2132円+送料250円)。

品名単価
HD468A00P475円
HN58C256P-20 DIP型472円
HM6116ASP-20367円
HD63A50P630円
74LS0094円
74LS13894円

秋月には以下の部品を注文しました。

品名型番単価
2.1mm標準DCジャック(4A) ユニバーサル基板取付用C-0940830円
スライドスイッチ SS-12D00-G5P-0879020円
丸ピンICソケット (40P)P-0003480円
丸ピンICソケット (28P) 600milP-0003360円
丸ピンICソケット (28P) 300milP-0133970円
丸ピンICソケット (24P) 600milP-0003260円
丸ピンICソケット (16P)P-0002930円
丸ピンICソケット (14P)P-0002825円
丸ピンICソケット ( 8P)P-0003515円
PIC12F1822-I/PI-04557110円 x 2

すぐれもの部品

後で気づいたのですが、ROMのソケット(ロープロファイルゼロプレッシャーICソケット (28P) 600mil) という優れものがありました。

th_P-05435.png

PIC MPLAB IDEの準備

以下のリンクを参照して、Mac用のMPLAB IDEをインストールしました。

PICkit3で書き込むときの注意!

PICkit3で書き込むとき、Powerを供給する必要があります。

プロジェクトのPropertyのPICkit3を選択し、「Power」のOptionからPower target circuit from PICkit3 をチェックします。

th_PiCKit3_Writing_setting.png

EEPROMの書込み

EEPROMの書き込みにはアマゾンで安価に販売していたUSB Mini Proを使用しました。 付属TL866Aの付属のアプリ(minipro.exe)ではどうも書き込みに失敗します。

このEEPROMはとても優れもので、いろんなCPUに対応しており、動かなくなった AVRのヒューズビットの修復も可能だそうです。

th_TL866_ⅡPlus.png

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 

端末ソフトでは、こんな感じです。

th_run_Mikbug.png

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

コメント

選択肢 投票
おもしろかった 0  
そうでもない 0  
わかりずらい 0  

皆様のご意見、ご希望をお待ちしております。勉強会で分からなかったこと等、お気軽に問い合わせて下さい。

スパム防止に画像の文字列も入力してください。


(Input image string)

*1 picocomもbrewでインストールできます

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
SmartDoc