まず、使い勝手が良い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標準的なMS-BASICのリファレンスマニュアルを見つけましたので、下記に紹介します。
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
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)