オリジナルの作成:2018/04/08
前職の同僚の大黒さんから鈴木哲哉さんの モトローラ6800伝説 を紹介してもらいました。
ちょうど6809の時代に社会人となりFM-7を購入したこともあり、 興味深く拝見しました。
特に6800の開発にミニコンを活用した場面がでてくるのに驚きました!
モトローラ6800伝説 には、スイッチサイエンスから ルーズキットおよびROMセット を購入できるので、初心者でも試すことができます。
また、技術資料とデータパックも充実しており、ルーズキットのお手本のようなプロジェクトだと感じました。
出来上がった、マイsbc6800ボードです。
<img src="images/23/sbc6800_board.jpg", width="400px"/>
残念ながら私がスイッチサイエンスさんのサイトにアクセスしたときには、 ルーズキットの在庫がありませでしたので、データパックのガーバーファイルをFusion PCB に送ってボードを入手しました(5枚で$7.9なので複数人で作るときにはお勧めです)。
発注から届くまでは20日程みておくといいです。
2018/03/21に若松、秋月に注文し、ボードの到着を待つだけのみです。
若松には以下の部品を注文しました(小計 2132円+送料250円)。
品名 | 単価 |
---|---|
HD468A00P | 475円 |
HN58C256P-20 DIP型 | 472円 |
HM6116ASP-20 | 367円 |
HD63A50P | 630円 |
74LS00 | 94円 |
74LS138 | 94円 |
秋月には以下の部品を注文しました。
品名 | 型番 | 単価 |
---|---|---|
2.1mm標準DCジャック(4A) ユニバーサル基板取付用 | C-09408 | 30円 |
スライドスイッチ SS-12D00-G5 | P-08790 | 20円 |
丸ピンICソケット (40P) | P-00034 | 80円 |
丸ピンICソケット (28P) 600mil | P-00033 | 60円 |
丸ピンICソケット (28P) 300mil | P-01339 | 70円 |
丸ピンICソケット (24P) 600mil | P-00032 | 60円 |
丸ピンICソケット (16P) | P-00029 | 30円 |
丸ピンICソケット (14P) | P-00028 | 25円 |
丸ピンICソケット ( 8P) | P-00035 | 15円 |
PIC12F1822-I/P | I-04557 | 110円 x 2 |
後で気づいたのですが、ROMのソケット(ロープロファイルゼロプレッシャーICソケット (28P) 600mil) という優れものがありました。
<img src="images/23/P-05435.jpg", width="300px" />
以下のリンクを参照して、Mac用のMPLAB IDEをインストールしました。
MPLAB IDEの直リンク
コンパイラーの直リンク
PICkit3で書き込むとき、Powerを供給する必要があります。
プロジェクトのPropertyのPICkit3を選択し、「Power」のOptionからPower target circuit from PICkit3をチェックします。
<img src="images/23/PiCKit3_Writing_setting.png", width="400px" />
EEPROMの書き込みにはアマゾンで安価に販売していたUSB Mini Proを使用しました。 付属TL866Aの付属のアプリ(minipro.exe)ではどうも書き込みに失敗します。
このEEPROMはとても優れもので、いろんなCPUに対応しており、動かなくなった AVRのヒューズビットの修復も可能だそうです。
<img src="images/23/TL866.png", width="400px" />
フォーラムで似たようなケースの投稿で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
試行錯誤の結果、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
端末ソフトから通信ソフトpicocom*1 を使ってsbc6800ボードに接続します。
sbc6800ボードのスイッチを入れ、*が表示されればMIKBUGが正常に起動しています。 次にRを入力して、レジスターの場外が表示されることを確認しました。
$ picocom -b 9600 /dev/cu.usbserial-A603BU4B
途中省略
Terminal ready
*R 45 AB BB A8AA D35D 1F42
端末ソフトでは、こんな感じです。
<img src="images/23/run_Mikbug.png", width="400px" />
「*」プロンプトの後にLを入力して、HELLO.Sのテキストをコピー&ペーストする。
画面の先頭がS9なら成功です。
MIKbugの実行開始アドレスをセットしていないので、 そのままGコマンドを入力しても動きません。
$1F48: 実行開始アドレスの(上位)
$1F49: 実行開始アドレスの(下位)
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を使用することにしました。
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/
以下のように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