SBC6809ルーズキットの製作(アセンブル・動作確認編)

2018/05/03

まず、使い勝手が良い6809アセンブラを探しました。条件としては、

①ソースコードが開示されている(改良の余地あり)

②Windows上で動作可能

③HD6309の命令を扱える

④MC6800の命令を扱える

⑤できれば、マクロ命令が定義できる


比較的良いアセンブラとして"asm6809-6809 cross-assembler"が見つかりました。GPLのアセンブラで、win32、win64のバイナリも公開されています。MC6800命令対応は、マクロで記述する必要があり、例えば、INXは、

INX     MACRO
LEAX 1,X
ENDM

順番に、①ECHOBACK TEST、②MS-BASIC、③MPB6809 monitor、④CHK309をアセンブルしてみました。SBC6809対応として必要な変更箇所は、プログラムの先頭アドレスを$E000に、UART(MC6850)の先頭アドレスを$8018にすることです。

このアセンブラの欠点は、コメントを";"から始めないといけないので、ソースの修正が必要になる場合が多いことです。また、"--setdp $00"オプションを入れないと、ゼロページアドレスが16bitになってしまいます。


ホームページは、下記です。

http://www.6809.org.uk/asm6809/


さて、EEPROMに下記の4つのROMイメージを全部書き込みました。これで4つのプログラムを簡単に切り替えられます。

A14     A13     ページ切替
1 1 ECHOBACK TEST
1 0 MS-BASIC
0 1 MPB6809 monitor ver1.00
0 0 CHK309 - PROCESSOR CHECK PROGRAM

まず最初は、ECHOBACK TESTです。電源を入れても、シリアル出力がありませんでした。調べてみると、手持ちのUSB-Serial Bridgeは、RDとTXのみしかないので、CTS-、RTS-の処理が必要でした。ジャンパワイヤーで、CTS-とRTS-を接続したところ、表示が出るようになり、キー入力のコールバックも問題ありませんでした。


次は、MS-BASICです。これも問題ありませんでした。BASICの仕様が気になったので、ソースコードを調べてみると、下記のコマンドとファンクションが使えるようです。このBASICは、元々1980年に発売された"Tandy TRS-80 Color Computer"に搭載された2種類のBASIC("Extended BASIC ROM"と"Color BASIC ROM")の逆アセンブルソースを出版した"Extended BASIC Unravelled II"と"Color BASIC Unravelled II"を基にしてGrant Searleさんが、FPGA化した6809 SBC用にマージ・編集したようです。

(1)COMMAND LIST	
CLEAR CONT DATA
DEF DEL DIM
EDIT END EXEC
FOR GOTO IF
INPUT LINE LIST
NEW NEXT ON
POKE PRINT READ
REM ' ELSE
RENUM RESTOR RETURN
RUN STOP TROFF
TRON

(2)FUNCTION LIST
ABS ASC ATN
CHR$ COS EXP
FIX HEX$ INKEY$
INSTR INT LEFT$
LEN LOG MEM
MID$ PEEK POS
RIGHT$ RND SGN
SIN SQR STR$
STRING$ TAN USR
VAL VARPTR
標準的なMS-BASICのリファレンスマニュアルを見つけましたので、下記に紹介します。

http://chiclassiccomp.org/docs/content/computing/Microsoft/Microsoft_Basic_8086Xenix_Reference.pdf


次のMPB6809 monitorもクリアしました。今後、時間ができたらEEPROM書き込みコマンドを追加したいところです。最後に、CHK309ですが、判定結果は、"6309/6309E"でした(予想通りです)。


動作確認の最後に、3MHz動作時のHD63B50Pのタイミングマージンを測定しました。常温での測定ですが、動作可能範囲との結果が得られました。HD63C09EPとHD63B50Pは、結構高速ですね。


①E信号のHigh期間が、162nS

 HD63B50Pのスペックでは、min.220nSですので、マージンは、162-220=-58nSになります。

②E信号立下りからCPUアドレス遅延+74AC138遅延が、54nS

 CPUスペックのアドレス遅延110nS+74AC138スペックの遅延12nSでmax.122nSに比べ、かなり高速です。HD63B50PのE信号立上りアドレスセットアップ時間が、min.40nSですので、マージンは、162-40-54=68nSになります。

③E信号立上りからHD63B50Pのデータ遅延が、29nS

 HD63B50Pスペックのデータ遅延max.150nSに比べかなり高速です。CPUのE信号立下りデータセットアップ時間は、min.40nSですので、 マージンは、162-40-29=93nSになります。


以上、①がスペック割れですが、②と③のマージンに依存している数値と思われますので、厳しい方と相殺すれば都合68-58=14nSのマージンがあり、温度上昇等でマージンが悪化しなければ、十分動作可能になります。ROMとRAMアクセスについては、100nS品を使いましたので、問題ありません。

(再クロール更新:2022/12/22)