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)

SBC6809ルーズキットの製作(中華HD63C09P編)

2018/05/02

 日立のCMOS LSIは、すべてeBayで調達しました。その中で心配なのは、やっぱりHD63C09Pです。基板の改造後、組み立てを行い、まずHD63C09Pからテストです。予想通りクロックが発振しません。 38pinの電圧を調べるとやはり5Vで、中身がHD63C09EPの証拠です。


eBayの出品者に返品クレーム(英語と写真で交渉)をしたところ、別の仕入れ先からの交換品を送ってくれるとのことになりました。交換品をしばらく待つ必要がありますが、待ってばかりではさびしいので、基板を追加改造してHD63C09PとHD63C09EPの両方に対応できるようにしました。


①基板へTSC(39pin)のGNDジャンパ追加

②E,Q信号発生モジュールの製作

 場所が限られていますので、小型の表面実装部品と1.27mmピッチの蛇の目基盤を使い、組立てましたが、これまたルーペを必要とする半田づけになりました。

 下記は、E,Q信号発生モジュールの回路と写真です。






③基板へE,Q信号発生モジュール用ソケット追加

 HD63C09EPを使う場合は、TSCをジャンパを有効にし、E,Q信号発生モジュールをソケットに差し込みます。下記が、追加改造後の基板と追加モジュールです。


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

SBC6809ルーズキットの製作(改造編)

2018/05/01

 最近SBC6809ルーズキットを知り、6809が懐かしく早速スイッチサイエンスさんから基板を購入しました。せっかく製作するので、ルーズキットを改造して機能・性能を強化し、日立のCMOS LSIで統一してみました。①RAM 32KB化②ROM 8KB×4ページ化③EEPROMプログラミング④ROM 28KB化⑤HD63C09P⑥3MHz動作が可能になります。


下記は、改造後の基盤です。





改造のポイントは下記内容ですが、銅箔カットはデザイン用カッターナイフとルーペで細かな作業になります。半田付時の再ショート防止のために、カット溝に尖がらした爪楊枝を使って、エポキシ接着剤をわずかに充填しました。


①32KB RAMの搭載(HM62256BLSP-10)

 ・RAM 1pin->GNDのカット、CPU A14->RAM 1pin

 ・RAM 26pin->VCCのカット、CPU A13->RAM 26pin

 ・74138 15pin->RAM 20pinのカット、CPU A15->RAM 20pin

②32KB ROM(HN27C256AG-10)と8KBページ切替で、4つのプログラムROMを搭載可能

 ・ROM A14信号を作成し、ショートジャンパで、GNDとCPU A14切替

 ・ROM 26pin->VCCのカット、ROM 26pinをショートジャンパで、GNDとCPU A13切替

③ページ切替なしで、最大28KBの連続ROM

 ・7400 9pin->GNDのカット、CPU A15->7400 9pin

 ・7400 10pin->GNDのカット、74138 11pin->7400 10pin

 ・74138 7pin->ROM 20pinのカット、7400 8pin->ROM 20pin

 ・74138 4pin->GNDのカット、CPU A12->74138 4pin

④EEPROM(HN58C256AP-10)搭載可能で、自己書き込み可能(後日、プログラム作成予定)

 ・ROM 1pin->VCCのカット、ROM 1pinをショートジャンパで、VCCとROM A14切替

 ・ROM 27pin->VCCのカット、ROM 27pinをショートジャンパで、RAM 27pinとROM A14切替

⑤HD63C09P搭載で3MHz動作

 ・水晶振動子をソケット化

⑥HD63B50P搭載し、READアクセスタイムを稼ぐために74AC138を使用、3MHz動作(実力)

 動作確認後、信号の遅延を測定し、タイミングマージンを測定したいと思います。


基板にピンヘッダーのための穴をピンバイスとドリル刃で開けます。ピンヘッダーは、エポキシ接着剤で基板に固定後、リード線を半田付けします。


変更部分の概略回路とジャンパー設定をまとめると、次のようになります。

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