2018年4月26日木曜日

修正済みの基板が届きました


最初の基板のミス等を修正した新しい基板が届きました。
前回と同じ6802用と6809用2種に加えて、6809EP用変換基板も作ってみました。
新基板(6802用と6809用RAM32KB版)
新基板(6809用RAM128KB版とEPアダプター)

EPアダプターは小さいので複数並べてV-CUTを指定してみましたが(これも初めての経験)、その通りに作ってくれて満足です。

組み立て済み
組み立て済み

回路のミスがないことを確認した後、組み立ててみましたが、無事に動作しました。











EPアダプターとUSB-シリアル変換基板を装着

EPアダプターで6809EP(私の手持ちのものはHD63C09RPとHD63C09EPですが)を動作させてみました。
回路基板は何も変更せず、アダプターを装着するだけで動作します。

EPアダプターの下部の余白部を用いてUSB-シリアル変換基板用のソケットを作って装着してみました。(画像の右端)






ということで、最初の基板のうち動作確認に使用したもの以外は不要になりましたので、もし使ってみたいという方がおられましたら、郵送料のみ負担していただければお分けしたいと思います。各基板とも2,3枚ずつあります。
(パターンカットは済んでいますが、下画像のような追加配線が必要です。)

基板修正の様子(左から6802用、6809用RAM32KB版、同128KB版)

もしご希望の方がいらっしゃいましたら、お知らせください。

2018年4月21日土曜日

FLEX用Virtual Driveの作り方

FLEX用のVirtual Driveを作るためには以下が必要です。
(1)FLEX側:FLEXシステムのDisk DriverルーチンをVirtual Driver用に修正。
(2)Windows側:FLEXからのコマンドを受信して、それに応じてセクターデータをRead,Writeするプログラム。

(1)FLEXシステムのDriverルーチンは6809用FLEX9の場合、READ,WRITE,VERIFY,RESTORE,DRIVE,CHKRDY,QUICK,INIT,WARM,SEEK
の9つからなりますが、重要なのはREAD,WRITEの2つです。その概念図を示します。
READルーチン
READルーチン


つまり、FLEXからREAD,WRITEのためのコマンド文字列を送ることで、それに応じてWindows側ではVirtual DriveにセットされているDSKファイル中のセクターが読まれてデータが戻ってくる、あるいはデータがセクターに記録されるというように動作します。
その他のルーチンは、Windows側だけで処理できます。
WRITEルーチン
WRITEルーチン









(2)Windows側のプログラムは、基本的には受信したコマンド中のドライブ番号、トラック番号、セクター番号に応じて該当のセクターを読み書きするだけで良いのです。

しかし、これだけではWindowsとのデータやプログラムのやり取りができず、実用的ではないので、別にWindows上で仮想ディスクファイルに対してdrag&drop等でファイルのやり取りをする専用のプログラムを作成して使用していました。
これを作るためにはFLEXのFMS(ファイルマネージメントシステム)とほぼ同様のものを実装する必要があり、試行錯誤しながら作成したので、まだ完全な段階ではありませんが、一応、動作しています。(これを作成するにあたっては、「ひっそりX1」さんのX1用のプログラムCPMforX1DiskExplorerのアイディアを参考にさせていただきました。感謝いたします。)

今回、シングルボードコンピュータを作成するにあたって、これらを統合したWindowsアプリを作成しました。それが4月16日に公開したブログに画像を載せたFlexDrvWinです。
(ブログを始めたばかりで、プログラムの公開方法がまだ分かっていません。分かり次第公開する予定です。)('18.5.3追記:GitHubに公開しました。)

2018年4月20日金曜日

6800とFLEX

6800とFLEX

私のマイコン歴は、「私だけのマイコン設計&製作」(松本吉彦著)から始まっているにもかかわらず、6800を使ったことはなく、最初から6802をずっと使い続けています。
ですので、今回の6800ボードマイコンも6802使用です。
6802SBD-W
6802SBD(32KBのRAMを2個使用)
6802SBD_V2
6802SBD_V2(修正済みです)

モニターはそれまで使っていた自作のキーボードとVRAM使用のものをACIAに変更しただけのものを使用しました。ついでにMikbug2.0も入れて、ジャンパーピンで切り替えられるようにしましたが、実際のところ、Mikbugはそう使いやすいものではありません。

6800用のFLEXもネットから入手できます。
今となっては6800でプログラムするのは苦痛でしかありませんが、マイコン初期のころの言語VTL,GAME,TL1やMicroBasic,TinyBasic(電大版など)を動かすためには必要です。(モニターだけではファイルの保存がしにくいので。)



2018年4月16日月曜日

6809シングルボードコンピュータでFLEXを走らせる


ブログ始めました。
未だに6809をいじり続けているOld68funです。

6809シングルボード

最近ネットで6809と検索するとシングルボードコンピュータがヒットし、結構盛り上がっているようです。

それに刺激されて、私もシングルボードマイコンを製作してみました。
私の場合はFLEXが動くことが必須条件であり、Windows上に仮想ドライブを構築して、
ディスクレスのFLEXシステムとすることにしました。

ちょうどFusionPCBで10cmx10cmのプリント基板5枚で送料込みで7.9ドルというキャンペーンをやっていましたので、それに合わせて、初めて使うKiCadでこのサイズ中にCPU,ACIAを2個,ROM,RAMを1又は2個とTTLを10個も押し込んで作ってみました。
KiCadの初心者で使いこなせておらず、回路の間違いもありましたが、何ヶ所かの修正で無事に動きました。

CPUは6809と6802の2種、ROMは4KB、RAMは64KB、ACIA(6850)がコンソール用と仮想ドライブ用の2個で、クロックはACIAのボーレート用と兼用するためゲートICで発振させてCPUに供給しています。ですので、8MHzの時のシステムクロックは2MHzで通信のボーレートは38400baudで4MHzの時はその半分になります。アドレスバスもデータバスもバッファリングしているので、IC数が多くなりました。

6809SBDV11
6809SBDV11(128KBのRAM使用)
6809SBD_V22
6809SBD_V22

6809SBD-W
6809SBD(32KBのRAMを2個使用)
6809SBD_V2
6809SBD_V2(修正済みのものです。以下同様)
EP_adapter
6309EPで動作させるためのアダプター

手持ちに、以前63C09 のつもりで購入した63C09RP(全てEP相当でした...)や63C09EPがありますので、EP用のアダプターも作ってみました。「6809ハンドブック」(加瀬清著)中のFF2個でE,Q信号を作成する回路をそのまま使っています。画像中にはクリスタルとICが見えますが、クロックを2倍にしてみるための実験回路で、アダプターとしては不要です。




全体構成

全体構成図
全体構成図

FLEXの起動

2個のACIAの先にUSB変換ケーブルを接続してWindowsパソコンとつなぎ、ConsoleとしてのTeraTermと、仮想ドライブ用の自作プログラムFlexDrvWinを起動します。

ASSIST9
ASSIST9が動作

リセットすると6809用のモニタプログラムASSIST9が起動します。













仮想ドライブプログラムのドライブ0には起動するシステムディスクをDrag&Dropで設定します。いくつでも設定でき、切り替えてアクティブにできます。
また、システムディスクとしては標準のDSKファイルの他にD77ファイルも使えます。
ドライブ1~3には適当なワークディスクを入れておきます。

FLEXを起動
FLEXを起動

そして、ASSIST9の拡張コマンドとして設定してあるFLEX起動コマンドでFLEXを起動します。

画像は、起動後にCATコマンドを実行してドライブ1のファイルを表示しています。









FlexDrvWin
FlexDrvWin

FlexDrvWin中右のListはFLEXがRead/Writeしているセクターを表示しています。
左のListはアクティブなディスク中のファイルを一覧表示しています。
ここでDrag&Dropによるファイルの追加や削除、名称変更ができます。
('18.5.4追記:FlexDrvWinのダウンロード先をリンクしました)









FLEXについて

私の使い方としては、Windows上の使い慣れたエディタでプログラムを作り、自作の6809用クロスアセンブラでアセンブルしてエラーが無くなったら、FlexDrvWinに放り込み、FLEX上のASMBでアセンブルして保存というスタイルです。

今まではFM77AV40SXに4MbitのROMとRAMを載せた拡張回路を接続してROM,RAMディスクとして使用しており、さらにドライブ3としてWindows上の仮想ディスクも使用していましたが、フロッピーで起動しなければならないことやWindowsとのファイル交換が不便だったりして、何とかしたいと思っていました。
このボードを作成したことで、ようやくフロッピィ―ディスクと縁が切れ、Windowsとの連携もし易くなり、とても使い勝手が良くなりました。

私のFLEXは大昔、TSC社から直接購入したもので8インチのGENERAL版でVer3.01ですが、今はネットから入手できます。また、ドキュメント、言語やユーティリティなども入手できますので、6809で遊ぶには向いていると思います。