にがMSX

〜 FS-A1Fの改造 続編〜




FS-A1F
1 VDP交換
2 システムROM書き換え
3 F4レジスタ実装
4 S端子増設
5
2ドライブ化テスト
6
FM音源増設
7
4MBメモリ増設
8
16MBメモリ増設
9
FDエミュレータ内蔵
前編はコチラ。後編はコチラ

 FS-A1F改造ネタは過去記事で左記項目の1〜7が終了している。
今回は内蔵メモリ16MB化、GOTEKのFDエミュレータ(FlashFloppy)の内蔵による2FDD化行う。



回路図


(画像クリックでフルサイズ表示)
 前作は多数のロジックICでDRAMを制御していたが、これらをCPLDに置き換えてみた。ほとんどのDRAM制御信号はCPLDで生成できたが、マクロセルの都合でスロットセレクト信号はS1985から入力する。8MB以上の増設はS1985の機能設定でSLOT#0を拡張し、 S1985から出力される /SLT0x信号を利用して /CASA〜/CASCを生成することにした。

もちろんOPLLのIOデコーダやMSX2+化に必要なF4レジスタもCPLDに内蔵している。





 基板サイズは前作と同一で、電解コンデンサの貫通孔やZ80の下駄のレイアウトも同じ。FM音源部の回路も前作と同等だがレイアウトのみ変更している。

前作ではA1Fメイン基板に設けたDRAMソケットから下位アドレスや/RAS信号を取得していたが、CPLD化によりその必要がなくなった。Primary RAMのみ実装すれば4MBのマッパメモリとして機能するが、U8(74HC32)SLOT#A〜SLOT#CのDRAMを追加実装することで16MBまでのメモリ増設が可能になっている。



4MB化

 

 とりあえず最小構成の4MBマッパメモリとして実装してみた。必要な部品はCPLDとDRAM、3.3Vの電源回路だけで非常にシンプルである。

プライマリRAMのスロットセレクト信号/SLT30はS1985からワイヤーで引き出して接続しているが、それ以外はCPU下駄のソケットに載せるのみ。

 今回はあっさりと一発動作した。メモリチェッカーでエラー無く、MPCMでのテストも問題なく発音された。特に動作が不安定になることもないようだ。

もちろんNo wait動作でPAUSEにも対応しており、30分間PAUSEしてもデータ化けは確認されなかった。DRAMはRAS onlyリフレッシュしているが、CPLDに11bitのリフレッシュカウンタを内蔵しており、Z80のリフレッシュアドレスは不使用。PAUSE時は4クロックに1サイクルのリフレッシュを行っている。





8MB化

既にA1F内部には未使用スロットがないので、8MB以上のメモリを搭載する場合は、SLOT#0の内部拡張が必要となる。

上図はS1985のデータシートから抜粋したもの。キーボードリターン信号の/X1,/X3をリセット時にLに落とすことでSLOT#0が拡張され、/SLT01,/SLT02,/SLT03がピンに出力される。



こちらはS1985のピンアサイン図。
SLOT#0を拡張すると48p => /SLT01、49p => /SLT02、50p => /SLT03が出力される。

なお、A1FのプライマリRAMはSLOT#3-0に割り当てられており、スロットセレクト信号/SLT30は53pから取得できる。




以上をふまえて16MB改造時のS1985の設定を書き出すとこんな具合となる。
なお、47pの/SLT00はシステムROMに割り当てられているので使用不可。



負論理のリセット信号(/RESET)はリセットボタン近傍のQ9のコレクタから取得できる。




実際に/X1,/X3をダイオードを介してリセット信号に接続した様子がコチラ。
S1985はピンピッチが細かいので、取り出しやすいキーボードコネクタから信号を取り出している。

リセット信号はQ9のコレクタ(真ん中のピン)にワイヤーで接続。

この設定にてSLOT#0が拡張される。




スロットセレクト信号は直接S1985からワイヤーで引き出すしかない。ピッチは細かいが、やろうと思えば何とかなるものである。

画像では、42pの/CASにもワイヤーが繋がっているが、今回は不使用。



メモリ増設基板には74HC32SLOT#AのDRAMを追加実装し、S1985から引っ張り出した/SLOT01〜03をジャンパーピンに接続した。パスコンも忘れずに。

8MBだけならスロットセレクト信号/SLT0xは適当な1本をSLTSL #Aに繋げばよいが、後で16MBまで増やすつもりなので、3本全て結線した。


J2のEnablerはジャンパピンでGNDに接続。これを忘れると8MB以降は認識されなくなる。この仕組みはSLOT#0にRAMが存在すると動作しないソフトウエアがあるためで、EnablerをOPENにすることでSLOT#A〜SLOT#CのRAMをまとめてDisableにできる。

以上の増設にて問題なく8192kB認識され、メモリチェックもMPCM再生テストもクリアした。



12MB/16MB造設


引き続きSLOT#B,SLOT#CのDRAMを追加実装するだけで12MB,16MBに増設できた。/CAS信号以外は他のDRAMと共通なので、亀の子接続で増やすような感覚。16MBメモリが役に立つかどうかはともかく、DRAMはとても安価なのでお手軽に増設できる。




16MB増設時のスロット構成をTINY SLOT CHECKERで表示させてみた。内蔵ソフト(A1コックピット)は廃しているが、MSX2+化に伴い漢字BASICの追加とFMBIOSを追加しているので、内部のスロットは全て埋まっている。





 
16MB Disable機能の追加

 

画像クリックで拡大


 過去のA1FXの16MB改造では、SLOT#0にRAMが存在するとアレスタ2等の一部のソフトが起動しないといった現象を経験している。ソフトウエアのバグによる不具合であるが、いちいち解析してパッチを当てるのは現実的ではないので、4MBモードで起動できる仕組みが欲しいところ。

今回はPICマイコンを利用して、特定のキーを押下しながら起動することでSLOT#0のRAMを無効化することにした。PICマイコンには12F629を採用。秋月電子で2021年現在100円程度で売られている。書き込みには秋月のPICライターの他、ROMライターのTL866II PLUSも使える。HEXファイルはコチラ(A1F16MB.zip)

今回はMキー押下をトリガーとしたが、PICの3p,6pを他のキーボードマトリクス信号に結線すれば任意のキーをトリガーとすることができる。回路図には記載していないが、2pには5pの反転信号を出力しているので、こちらをEnablerに接続すれば、デフォルトを4MBモード、Mキー起動時のみ16MBモードにすることも可能。



 PICマイコンは適当な基板の切れ端に実装して厚手の両面テープで貼りつけた。ワイヤーはジュンフロン線を使い、近傍の集合抵抗の空きパターンを通して基板裏に配線した。

この改修にて、Mキーを押しながら電源投入、またはリセットすることでSLOT#0のRAMが無効化され、4MBモードで起動できるようになった。





フル実装

FM音源部にも全て部品を実装して前作と並べてみた。これだけのロジックIC群に加え、リフレッシュカウンタやDRAMアドレスも入ってしまうのだからCPLD化による恩恵はかなりのものである。ロジックにバグがあってもCPLD書き換えで対応できるのも大きなメリット。もちろんFM音源も前作同様に問題なく機能した。

MSX2+化に必要なF4レジスタもCPLDに入っているが、JP1ショートで機能有効化、JP2ショートでF4レジスタのハードウエア的な初期値を反転する。これでPana系のMSX2+BIOSでもSONY系BIOSでもパッチ無しで使用可能になった。

前作のようにDRAMソケットからの信号取得が必要なくなったため、汎用性も向上した。試しに初代FS-A1やSONYのHB-F1XVに4MBメモリとして載せてみたところ問題なく機能した。ただし、SONY機ではキーボードやシールド板に干渉するためにケースには収まらない。





2FDD化


画像クリックで拡大
MSXの2FDD化においては、FDC(Floppy disk controller)上の物理ドライブを1台から2台に増やしてもメモリ使用量は変わらないが、外部スロットにFDDカートリッジを接続すると増設FDCの管理領域としてメモリ使用量が増える。最近はFDC搭載のFDDエミュレータカートリッジもあるようだが、これをA1Fで使用するとメモリ使用量が増えて動作に支障を来たすソフトがあるだろう。FDC内蔵MSXでFDDエミュレータを併用したい場合、内部増設して2ドライブ構成とした方がよい。

前回の改造にて、FDDのデイジーチェーン接続コネクタと上図のABドライブ切替回路は実装済みであるが、今回は実際にGOTEK FDDエミュレータ(基板)をA1F本体に内蔵する。なお、GOTEK FDDエミュレータやファームウエアFlashFloppyについては、コチラのblog(レトロなPCとか)に詳しく書かれている。ピンアサインやMSX との接続については過去記事参照のこと。


FlashFloppy は操作スイッチとしてロータリーエンコーダを使用するのが一般的だが、今回は秋月電子のTMHU28使用のDIP化キットを使ってみた。TMHU28は押し込みスイッチ付きの2方向2段階レバースイッチである。ベース基板にはユニバーサル基板Eタイプを使用。

PICマイコンでロータリーエンコーダを偽装して3段階のオートリピート機能を実装した。レバーを軽くスライドさせると2回/sec、奥までスライドで4回/sec、そのまま2secのホールドで10回/secのオートリピートがかかる。
ケースに組み込む際はレバーの曲面に合わせてガワをカットするのがポイント。

わざわざマイコンでロータリーエンコーダのパルスを発生させているのはタクトスイッチの入力にON/OFF信号を送っても高速連打ができないためである。タクトスイッチ入力はちょっと厳しめにチャタリング対策されていると思われる。


画像クリックで拡大
使用するPICマイコン12F1822は秋月電子で110円程度。ROMライターのTL866II PLUSやRaspberryPiのPickleで書き込める。HEXファイルはコチラ(FlashfloppySW.zip)。PICマイコンの電源は3.3Vへの接続を推奨(オープンドレイン出力なのでたぶん5Vでも問題なく動作するが非検証)。

レバースイッチ基板はトップカバーのスロット右側に取り付けた。黒い皿ビスでガワに固定したので目立たなくて良い感じである。
USBメモリ用のコネクタは別途固定用の基板を作成した。秋月のユニバーサル基板Dタイプから6角スペーサーでFタイプ基板をぶら下げ、USBコネクタを取り付けている。



A1FのAVコネクタの上に用意されてる穴付きの金属ステーにUSBコネクタ基板を固定した。ステーに基板穴がジャストフィットするが、ネジが切っていなかったのでタッピングネジでねじ込んだ。

USBコネクタ穴は現物合わせでテキトーにやると失敗するので、KiCADのPcbnewで2o穴を配列した図面を作り、原寸プリントを貼りつけて加工した。

穴開け後はこんな具合。USBメモリの着脱で負荷がかかってもグラつきは許容内。

ちなみにA1Fの姉妹機のA1FMでは、この位置に内蔵モデムのモジュラーコネクタがレイアウトされている。穴付きのステーはそのためのもの。コチラ(up-cさんのサイト)に内部画像あり。



 FlashFloppyのOLEDはトップカバーのクリアパーツを利用して組み込むことにした。姉妹機のA1FMでは内蔵モデムのステータスLEDが組み込まれている部分で、元々インジケータ用のパネルなので良好な視認性が期待できる。

実際に加工するまで構造が謎であったが、上から透明パネルがツメで固定されていて、その下にアルミ板が粘着固定されていた。先に透明パネルを取り外したいところだが、粘着剤が強力な上にアルミ板との間に微妙に隙間があるため、下から突っついてもびくともしない。

仕方なくアルミ板にアタリをつけてアートナイフで切り取り、露出した透明パネルを押し出して取り外した。

透明パネルにはスリット状のパターンがプリントがされていたのでこれを2000番の耐水ペーパーで削り落とし、模型用コンパウンドで磨いて透明にした。削りすぎた部分は模型用塗料で修正する(画像はレタッチ前)。

なお、溶剤でのプリント除去は推奨しない。素材が劣化して曇ったり、クラックが入る恐れがあるため。

OLEDモジュールはホットボンドで裏側から固定した。

実際に表示させてみたところ。覗き込む必要なく視認性は大変良好である。バランスよくPOWERランプとMSXロゴの中間にレイアウトできたと思う。

レバースイッチはリセットボタンの上に顔を出している。小さくて目立たないレバーであるが、操作性は意外と良好。



GOTEK FDDエミュレータから基板を取り出し、薄くなるように邪魔なコネクタ類を除去。具体的にはジャンパセッティング用のピンヘッダ、USBコネクタ、タクトスイッチ2個を除去、斜めに突き出ていた電解コンデンサは付け替えた。ドライブセレクト信号はS1側をジャンパ線でショート。

圧電ブザーは適当にネジ止めしてワイヤーで接続、ピンソケット付きのUSBとOLEDとレバースイッチ用のケーブルを作成して接続した。

この面を上にしてA1Fに収納するが、露出した端子がキーボードの金属板と接触する恐れがあるため、薄い透明プラ板を貼りつけて絶縁処理とした。プラ板はブリスターパック等の切れ端で十分。



実際に組み込むとこんな感じ。A1Fはコンパクトな見た目の割に内部の空間が広いため、デバイスの追加実装は容易。その気になればCPU下駄にもう一段基板をスタックすることもできそう。


トップカバーのOLEDとレバースイッチ基板にコネクタを接続しガワを閉じる。スペースに余裕があるので無理なく収まった。


16MBのRAMは余分かも知れないが、似非SDiskからNextorが起動できるし、リアルFDDや FlashFloppyからゲームの起動もできるのでマルチに使えるMSX2+に改造できたと思う。OPLLも内蔵したので空きスロットにSCCを挿して音源プレーヤとして使うのもアリだろう。





少量頒布します
 今回も余った基板を家電のケンちゃんさんを通して頒布予定。前作よりは数は用意できると思う。WEBマニュアルはコチラ

ベースキットとして4MBメモリが実装済みで、部品を追加実装すれば16MBまで増設可能。空きパターンがあったらRAMを載せてしまう習性のある人もお楽しみ頂けるだろう。

FM音源を構成する部品は非実装であるが、今回はFM音源増設キット付きも用意するつもり。

 お約束ですが、この記事を見て修理・改造などを行い故障やその他問題が発生しても当方は責任を負いません。各自の責任において情報を広く集めて行うことをおすすめします。

この記事の内容は個人の憶測や見解の誤りを含んでいる可能性があります。内容についてメーカー各社に問い合わせるのは止めましょう。

続く?

ご意見、ご感想、ご質問はにが BBSまで!
Top pageへ 戻る

copyright (C) 2021 Niga.