まごころせいじつ堂

浜町庄金 研究開発  マイコンで遊んでばっかりで

SORDm5

SORDm5 クロック周りとGA015

 SORD m5のクロックについて調査。
 VDP(TMS9918)がクロックジェネレーターを兼ねている。クロックの源発振は10.738635MHzのクリスタル。CPUCLK出力はその1/3の3.579545MHzでMCKとしてSGCに供給されている。Z80Aのφ入力はTTLコンパチではなくフルスイングを要求するのでMCKをインバーターで反転後、470Ωプルアップで接続。Z80ACTCもこの出力を使っている。
スクリーンショット 2022-12-18 0.38.09

GROMCLK出力は源発振の1/24で447.443125kHz。TCKとしてZ80ACTCのチャネル2に与えられる。これはシリアルI/F 8251のクロック(EXCLK)の元として選択できる。チャネル0はタイマー、チャネル1はシリアル8251の割り込みを受け付け、チャネル3はVDPからの割り込みを受け付ける。このようにZ80ACTCは簡単な割り込みコントローラも兼ねている。

 カスタムIC GA015について。GA015はSORD m5内部のデコーダ等をまとめてある。
入力はA15~4、D1,D0,~MRQ,~IORQ,~RD,~WR,~RST。COMは未接続で不明の端子。デコード内容は図のとおりだが、PSTBとREMはラッチで値を保持する。PSTBはプリンタのストローブ端子で数十ms程度保持する必要がある。またREMはデータレコーダー用のリレーをON/OFFする。このためラッチが必要。PSTBはデーターレコーダーへ書き込むときの値も兼ねている。
今だとGAL 16V8 2個ぐらいでできそうなかんじ。

追記:表の訂正 ~ROM2のデコード範囲
スクリーンショット 2022-12-18 23.24.01





SORDm5F カートリッジの試作その2


 SORDm5C相当の修正。U3 pin5を上げて+5Vに。U6 8251AのRxRDYと*EXINTの間を反転させるために U4 pin4,5,6を上げて pin6=GND、pin5=RxRDY、pin4=*EXTINTに接続。JP5、JP2をカット。
SORDm5FV01L01MOD-sch


 試作基板を修正しBASIC-IとBASIC-Gの動作を確認。
2022-12-16 03.06.32

 さてここでソフトの問題が。BASIC-Iはおそらくシリアルポートをサポートしていないだろうが、BASIC-Gは電子展望の記事『ソードM5アプリケーションレポート』によるとLIST #4といったチャネル指定でシリアルポートに出力できそうなことが書かれている。しかし実際にはERR 4(Variable type mismatch)発生。LIST #3ではプリンタ対象で予想通りハングアップすることからチャネル番号自体はサポートしている。発売時にはシリアルポートのサポートは外されたのかもしれない。
 BASIC-Fはデバイスディスプリプタで入出力をチャネル番号に割り当てることができる。デバイス名は"CNS:"、"GRP:"、"PRT:"、"PRI:"、"CMT:"、"FX:"がマニュアルに記載されている。シリアルポートの記載はなかったが透視能力により"SIO:"であることがわかった。BASIC-Fはシリアルポートをサポートしていそうだ。ただちょっとちぐはぐなところがあって、BASIC-FのINP()関数の説明ではプログラムでシリアルポートからの読み出しをサンプルコードとして掲載してある。シリアルポートの記述を完全に消しているわけではなさそう。

 SORD m5のマニュアル類は http://m5.arigato.cz/en_index.html を参照した。SORD m5のことを調べるためには我々はチェコスロバキア(当時)に行かねばならない。


Trans Slovenia Express 2
Various Artists
EMI Import
2006-09-25


SORDm5F カートリッジの試作その1

 SORDm5C V01L02 SORD m5用ROM/RAMカートリッジ の改良版としてBASIC-FのROMイメージとシリアルインターフェースを追加したSORDm5Fを試作しました。

SORDm5FV01L01-sch

まずはメモリマップのおさらいから。

0000 - 1FFF 8KB *ROM0 モニタハンドラ(内蔵)
2000 - 3FFF 8KB *ROM1 (内部にソケットあり)
4000 - 5FFF 8KB *ROM2
6000 - 6FFF 4KB *EXM
7000 - 7FFF 4KB 内蔵RAM
8000 - FFFF 32KB 拡張RAM領域

*ROM0 , *ROM1 , *ROM2 , *EXM はカスタムIC GA015からの出力で、これらは同時にアサートされることはない。ROMはU1 27C512で容量は64Kx8。A15とA14をDIPスイッチで選択しているので16KB単位で4バンク使用。
ここではやくもミスが。BASIC-Fは2000 - 6FFFの20KBを使用するのでA14をデコードに含まないといけない。A14SELのスイッチはなくしてカートリッジのA14に接続しROMは32KB単位の2バンク構成にしないといけない。
または、*EXMと*EXMSELスイッチでBASIC-Fの*EXMに対応する4KBを有効にしたかったが、修正するならば*EXMSELスイッチで*EXMか*A14SELを選択してU1 ROMのA14に与える。
U4Cで*ROM0と*ROMDSをandしているがここは間違い。*ROMDSはSORD m5内部にあるROMソケット(*ROM1)のチップセレクトを抑止するための信号で、モニタハンドラ(*ROM0)の抑止ではない。これは0000-1FFFをdisableできると勘違いしたため。しかしそうなるとCP/Mはどうやって実現してるんだろうな?あと、*ROMDSは内部ROMのdisableと考えると各種カートリッジではGNDに落としてあるんじゃないだろうか。→手持ちのカートリッジを調べたら特に何もしていない

追記:CP/M実現のためにGA015→内蔵モニタハンドラROMの*CSに抵抗を入れて外部から内蔵ROMを強制的にdisableにする改造をしている。

※U3 HC86のピン5を上げてピン14(+5V)に接続すればSORDm5C相当になります

シリアルインターフェース部分は8251でCPUのクロックが与えられるため3.5MHz以上で動作するグレードが必要。I/Oアドレスは60Hと61H。このセレクト信号はGA015からの出力*EXIOAで与えられる。GA015はA3~A0をデコードしないためアドレスの範囲は60H~6FHとなる。ここを厳密にデコードしようとU5 LS138を入れているが実際には不要なので、実装せずにU5の4ピンと15ピンをショートする。
EXCLKは8251のTXCLK/RXCLKで、Z80CTCの#2から供給される。システムクロックの4分周。さらに高速化できんかと元の発振クロックを設定で分周できるEXO-3を実装できるパターンを用意している。
シリアル通信の制御線まわりは独自に起こしたのだが以下に海外での解析した回路図があった。
これによると*EXINTは反転しないといけない。*DSR - *DTRはオープンだがここはジャンパを用意しているのでカット。*CTSはGNDに落とすオプションがある。あと、*ROM1で選択される8KBのROMは不明。BASICなどと領域がかぶるしBASIC-GやBASIC-Fでシリアルも制御できるはずと思っているがどうなんだろうか。

拡張RAMはU2 HM62256(32Kx8 SRAM)で割り当ててある。

SORDm5FV01L02-pcb

2022-12-10 23.39.04

U5を廃止できるので汎用ロジックはあと1個分は余裕があるが修正どうしようかなあ。

SORDm5にMSXジョイスティックを接続する

 ぴゅう太用MSXジョイスティックアダプタと同じようにSORD m5用のMSXジョイスティックアダプタを作ってみた。
 SORD m5のジョイパッド端子はmini-DIN 6ピンでL,Rの2つがある。上下左右とトリガ2つの6入力だが、これらはキーボードマトリックスの一部で2x4の構成になっている。MSXのコモン端子1つ、上下左右トリガ2つの構成はそのままでは接続できない。また、GNDも出ていない。そこでフォトカプラを使用し、MSXジョイスティックのボタンに対応する6箇所のキーをONにするような回路を考えてみた。フォトカプラのLED用に電源が別途必要になる。

SORDm5JOYV03-sch


SORDm5JOYV03-pcb

 フォトカプラは秋月電子で1個20円のPS817を使用したが今見たらもっと安いUPC817CGがあるな。
フォトカプラのLEDはCR2032のコイン電池(3V)で駆動、電流制限抵抗は集合抵抗。4.7kΩではジョイスティックの入力取りこぼしが頻繁にあった。2.2kΩで問題なし。

2022-07-22 19.08.03

 電源となるCR2032の電池ホルダは裏側から取り付ける。CR2032は220mAhとのことなので、フォトカプラ1つあたり1mAとしてざっと寿命を考えてみる。同時にオンになるフォトカプラは最大4個(トリガ2つとスティック斜め)。パイロットランプのLEDも1mAとして、220÷5=44時間。たまに遊ぶゲーム用途としては妥当じゃないですかね。
 電源は電池の他に外部入力端子を用意している。2つのジョイスティックアダプタのうち片方はこれに接続して電池を省略できる。

2022-07-22 19.08.19

 さて、悩んだのがmini DIN 6Pの接続をどうするか、だった。コネクタはあるけどはんだ付けがたいへん。完成品の配布に関しては製作の工数をある程度まけているけど、これは難しい。

2022-07-25 21.57.04

 mini-DINコネクタを搭載できるようにしているが、mini-DIN 6P オスーオス ケーブルの入手が難しい。Aliexpressで探したがPS/2ケーブルのスプリッタ(キーボード/マウス)やDIN5P変換ケーブルしか見つからなかった。なぜかAmazonにはあった。

2022-07-22 19.06.52




 ということで配布に関してはケーブルの問題に悩みつつ基板のみとするかもしれません。


***

 さてここからは開発の紆余曲折コーナーです。

 当初は無電源でMSXジョイスティックをキーマトリクスの一部に組み込めないか考えてました。フォトカプラでオンオフ→フォトカプラのLED部分がオンオフできれば動くんじゃ?ということでキースキャンの駆動部(オープンコレクタ)からGND、受け側のプルアップ2.2kΩ〜5Vで電源が取れそうということで色々LTSpiceをこねくり回していました。

SORDM5JOY-PNPNPN

 理屈の上では動くんですよ。ただし電源をキーマトリクスからもらった時点でそこに電流が流れ、導通状態になりキーが常にONになったような挙動になってしまう。永久機関は作れなかった。

 基板まで作ってしまいバカの極み。まあトランジスタの勉強になったからいいか。

2022-07-26 00.11.55


記事検索
プロフィール

hardyboy

カテゴリ別アーカイブ
月別アーカイブ
QRコード
QRコード
  • ライブドアブログ