フォト
2019年6月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
無料ブログはココログ

MSX・レトロPC

2019年5月18日 (土)

MSX casio PV-7の代替えACアダプタ

MSX casio PV-7、ヤフオクではACアダプタ無しであれば1000円~2000円程度で入手可能です。
魔改造等、実験等にはもってこいのマシンです。

Dscn1760

専用ACアダプタは、DC 10Vで 外径 5.5mm 内径 2.1mmのプラグなのですが、
外側がプラス、内側がGNDと一般的でなく通常とは逆になっています。
ちょっと入手しにくそうな規格のACアダプタです。

Dscn1757

ところが、ファミコンがちょうどこの規格のACアダプタを使用しています。
「CASIOはなんでこんなACアダプタの規格にしたのだろう」と思っていたのですが、
当時のファミコンを意識して規格を合わせたようです。

試しに、互換品のACアダプタを入手して試してみました。
新品でもamazon等で送料込みで1000円以下で入手できます。
ハードオフ等ではもっと安く入手出来ると思います。

電圧、電極、プラグ形状的には適合しており、実際に利用してみても問題無く利用出来ました。

Dscn1758

比較するとかなり小さいです。
「小さいは正義」、こちらの方が断然使い勝手が良いですよね。

Dscn1755

交換したところ、コンセント周りがスッキリしました。
今後これを使っていくことにします。

 

2019年5月10日 (金)

FUSION-C、MSXの開発環境? (3)

前回からの続きです。
FUSION-Cを使ったMSX用プログラム開発環境をWindows 10上に構築しました。

開発環境としては、
  ・テキストエディタ Sublime Text 3
  ・クロスCコンパイラ SDCC
  ・ライブラリ FUSION-C
  ・MSXエミュレータ Open MSX
  ・その他支援ツール(Hex2BIN、etc)
となります。

とりあえず、”Hello,world"を表示するプログラムを作成し、
(クリックすると拡大表示します)
02_3

ビルドしてみました。
(クリックすると拡大表示します)
09

MSXエミュレータが起動し、MSX-DOSのプロンプト状態になります。
(クリックすると拡大表示します)
10

カレントディレクトリには、コンパイルしたプログラム HELLO.COMが格納されています。
実行すると、"Hello,world"と表示されました。
C標準ライブラリを使った記述でも問題なく実行出来ました。
(クリックすると拡大表示します)
03_2

このプログラムをMSX2実機 FS-A1Fにて動作確認をしてみます。

Windows 10機にUSB接続のフロッピディスクドライブを接続して、
MSXFormで2DDフロッピディスク(以降FDと表記)をフォーマットし、
同FDにMSX-DOS、COMMAND.COM、HELLO.COMをコピーしてMSXにてMSX-DOS起動させました。
プロンプト表示状態でhelloを実行、エミュレータと同じように問題なく実行出来ました。

(クリックすると拡大表示します)
Dscn1754

これで、とりあえずはC言語を使ったMSX-DOS上で動くプログラムが作成できる環境が整いました。

このFUSION-Cの開発環境は、Repro Factoryがフリーソフトとして公開しています。
(無料ですが、ユーザー登録して0円商品の購入手続きが必要です) 

(クリックすると拡大表示します)
07

今回の環境構築では、上記の"Fusion-C Library""FUSION-C Tools-Chain"を利用しました。
"Fusion-C Library" が FUSION-Cライブラリパッケージです。
"FUSION-C Tools-Chain" には、最新版では無いかもしれませんが、
  ・テキストエディタ Sublime Text 3
  ・クロスCコンパイラ SDCC
  ・MSXエミュレータ Open MSX
  ・その他支援ツール(Hex2BIN、etc)
が含まれています。これだけで開発環境が構築出来ます。

"Fusion-C Library" にはクイックマニュアル(PDF 全108ページ)が添付されていて
これでけでも十分利用出来ます。
05_1

テキストエディタ Sublime Text 3は、デフォルトでは日本語対応していません。
私は下記のサイトの情報を参考にして日本語環境設定を行いました。
Sublime Text 3のインストールと初期設定

ちなみにこのFUSION-Cのライセンスは、次のように記載されています。
08


2019年5月 6日 (月)

液晶ディスプレイRDT193WMは15kHz対応っぽい

MSX2用に三菱電機製液晶ディスプレイ、RDT193WMを使っています。
RGB to HDMIコンバータ、HTMI to VGAコンバータを連結して映像出力しています。
このディスプレイはHDMI端子がありません ;^^

最近、ネットで
  「三菱製の液晶ディスプレイは非公式で15kHz、24kHz(水平同期信号)に対応している製品が多い」
とのうわさを聞き、
うちのディスプレイも対応しているか、ちょっと実験してみました。

ブレッドボード上にRGB信号をVGA信号に変換する回路を組み試してみると ... 

Dscn1743

表示出来ました。
う~ん、いいですねぇ。
コンバータが無いので表示の遅延も発生しないですね。

ただし、若干映像に縦縞があります。
ブレッドボードのためノイズを拾いやすいのかもしれません。

Dscn1747

水平同期信号は15.9kHzと認識、200ライン系もOKのようです。

Dscn1745

この子(ディスプレイ)、いいですね。
HDMI端子が無く、使い勝手が良くないので処分を考えていたのですが、
捨てなくて良かったです。
レトロPCやゲーム機のモニター用に需要がありそうです。

ちなみにRGB信号からVGA信号への変換は、下記のサイトの情報を参考に実装しました。
特に文献2)は方式を理解することが出来き、大変参考になりました。

参考にした文献
・1)LCD-8000VとMSX: うみゅ
      http://miyako.asablo.jp/blog/2015/06/21/7677303
・2)試運転の資料館 - 複合同期信号分離出力化改造工事設計図
      http://shiuntenlos.ie-yasu.com/psma0020.htm
・3)MSX2 RGB端子 ピンアサイン
      http://gamernium.com/archives/1472
・4)Wikipedia - RGB21ピン
      https://ja.wikipedia.org/wiki/RGB21%E3%83%94%E3%83%B3
・5)Arduinoを用いたVGA映像信号の出力
      http://www.net.c.dendai.ac.jp/~anada/

文献2)「試運転」さんの公開回路図を参考にして、下記の回路図を起こし、
ブレッドボード上にて実装しました。

Photo_1

マルチバイブレータ(74HC221)で水平同期信号のタイミングとパルス幅を確保しています。
時定数を決める抵抗は半固定抵抗に変えて、同期信号のタイミングを調整出来るように
修正した方が良さそうです。

ブレッドボード上ではなく、フレキシブル基板上に実装してケースに入れて
使い勝手を良くしようと思います。


追記 2019/05/09

色々と調整したのですが映像はコンバータ(映像はRGB to HDMIコンバータとHTMI to VGAコンバータを連結)を
利用した方が鮮明で映りが良いです。





2019年5月 2日 (木)

ヤフオクでFS-A1Fを入手したのですが...

ヤフオクでパナソニックのMSX2機 FS-A1Fを入手しました。

Msx

私が入札後、2人の方が競り合っていたのですが何故か、2人ともキャンセルのため
格安で落札出来ました。ラッキー!

FS-A1Fが到着し、動作確認をしてみると、
Dscn0067

画面がまともに表示出来ません。ありゃ..

Dscn9984

実際の起動の様子



はずれを引いたっぽいです。
まあ、2,100円なのでパーツ取り用でも元はとれるでしょう。

試しに、フロッピーディスクドライブにフロッピーディスクを入れて起動してみると
モーターが高速回転しているような感じです。
恐らく内部のベルトが切れていると思われます。

とりあえず、分解してしてみました。

Dscn9988

不具合の発生率が高いHIC-1と呼ばれているボードのコンデンサを見ると、なんとなく怪しい。
根元が錆びているような、液漏れしているような感じです。

Dscn9995

とりあえず、コンデンサを取り換えてみました。

Dscn0021

再度動作確認してみたのですが、状況は「変わらず」でした。残念。。
ここが原因では無いようです。

改めて画面の表示を見て分析してみると、
表示内容の一部が壊れているような感じです。映像出力の同期は出来ている、サウンド出力もOK。
もしかしたらVRAMが怪しい? そこでDRAMを交換してみました。

基板上のDRAMを4つ交換しました(下の写真)

Dscn0044

この交換、意外としんどかったです。
ボードが鉛フリーはんだ?のようで、はんだが溶けにくいです。
結局、DRAMをニッパーで切り離したのち、新しいDRAMを取り付けました。

Dscn0034

再度電源ON、やっと見慣れた画面が表示出来ました。やったー

Dscn0051

パナソニックのMSXではおなじみのコックピット画面が立ち上がりました。

Dscn0048

BASICに移動すると、BASICも起動できました。う~ん、いいですねぇ

Dscn0054

次にフロッピーディスクドライブを修理してみました。

やはりベルトが切れています。

Dscn9979

分解してベルトの破片を取り除きます。
粘土のように柔らかくなっていて、へばり付いていて取り除くのに意外と苦戦しました。

Dscn9997

フロッピーディスクドライブの解体は、こちらを参考にしました。
 (こちら「Restoring a MSX2 Panasonic FS-A1F」が元ネタっぽいです)
下の写真の真ん中のネジは外すとダメとのことです。

Dscn9998

モータについているプーリー(スピンドル?)にべっとりとベルトが溶けてくっついているのを剥がすのが大変でした。

Dscn9999

ベルトはとりあえず、モビロンバンドで代用してみました。
モビロンバンド 折径80mm 黒  50g
MSXの修理ではメジャーな方法ですね。

Dscn0068

組立てて、再度動作確認、フォーマットで動作確認。
最初はエラーとなったのですが、数回やってみるとベルトが馴染んできたのか、
何回やってもフォーマットエラーが発生しなくなりました。やったー

Dscn0061

フロッピーディスクドライブの修理はとりあえず、これで良しとします。
ヘッドは問題ないようなので、一安心です。
利用で難儀するようであれば、ちゃんとしたベルトを調達して対処したいと思います。

ちゃんと動くようになったので、次は掃除です。
キーボードがかなり汚いです。キーボードを1つ1つ外して掃除しました。

Dscn0028

Dscn0027

Dscn0026

修理完了、いい感じになりました。
キーボードは全て問題なく文字入力出来ました。

FS-A1F、フロッピーディスクドライブ付きでコンパクトなボディ、
重くもないので、使いたいときに取り出して使えてます。

  Dscn1737


追記 2019/05/03

メインRAM 128kバイト化の改造をやってみました。
下記の記事を参考にさせていただきました。
 ・MSX - FS-A1Fについて - FS-A1F RAM増設
    http://usbsecretbase.michikusa.jp/a1f/index.html

Dscn0042

同記事で公開しているメモリチェックプログラムを利用して確認したところ、
増加分のメモリが認識されているようです。

Dscn0045

「NG:8」 の表示は無視して良いとのことです。

2019年4月22日 (月)

MSX PV-7をFMPACが使えるように改造しました

カシオ製 MSX PV-7FMPACを使ったFM音源出力が出来るように改造しました。

Dscn0009

動いている様子


PV-7は、価格を抑えるためか、
メインメモリ8kバイト、カートリッジ・スロットの+12V、-12V端子に
同電圧が出力されていない等の制約があり、
FMPACを使ったFM音源出力は未対応でした。

そこで、先日のメインメモリ32kバイト改造に加えて、±12V出力対応してみました。
対応には、下記のモジュールを利用しました。

12V Positive & Negative Dual Output power supply DC DC Step-up Boost Converter module
01_3

実際の製品はこんな感じです。

Dscn0004

これをPV-7に組み込みました。

Dscn0001

このモジュールにマザーボード上の5Vを供給し、出力の±12Vを
カートリッジ・スロット端子の48(+12V)、50(-12V)に供給しました。

Dscn0002

とりあえず、配線追加でもケースに収まる状態です。
ついでに、コナミゲームソフトのSCC対応にための49(SOUNDIN)端子もPSGに
結線しておきました。

Dscn0003

いい感じに改造出来ました。

2019年4月 6日 (土)

3DプリンターでMSX2 FS-A1のスロットカーバーを製作

以前ヤフオクで落札したMSX FS-A1

00
スロットカバーが無いので3Dプリンターで製作しようと思っていたら、
ありがたいことに、チャレンジした先駆者さんにより、データが公開されていました。 

Thingiverse - MSX2 : FS-A1 Slot Cover
01_1

早速、使わせていただきました。

出力の様子
赤いフィラメントを使って出力しました。

Dscn9865

色がピンクがかってで違和感があったので、ラッカーで塗装したのち、装着。
まあ、まあの出来です。色もそう違和感ないです。
のちほど、もう少し出力品質を上げて作り直そうと思います。

Dscn9935

塗装は、ダイソーの100円 ラッカー スプレー レッド を使いました。

Dscn9937

塗装した方が、断然綺麗です(下は出力失敗のものです。第1層が剥離しちゃいました)。
塗料の乗りは意外と良いです。塗った直後は匂いがありますが、しばらく放置しているの無くなります。

Dscn9938

2019年3月23日 (土)

MSX CASIO PV-7を改造してメインメモリーを32kバイトに増量

メインRAMが8kバイトしかないMSX CASIO PV-7、さすがにこれでは厳しいので、
改造して32kバイトに増やしてみました。

 Dscn9856

Dscn9853

参考にした情報
 ・(1) MSX Resource Center - CASIO PV-7 to 16Kb RAM
 ・(2) しおんパパのひみつきち - 旧世界の遺産を守れ!「MSX PV-7/PV-16」カシオ(1984/198x)
 ・(3) 클랴의 공중질소고정법 - MSX PV-7 램 업그레이드 분석 (MSX PV-7 RAMのアップグレード分析)
 ・(4) MSX Resource Center - Casio PV-7

  特に、(3)のクルシャさんの情報が大変参考になりました。

(3)のクルシャさんの情報を参考にして、
基板上のuPD4168 8kバイト XRAM(左写真 上IC)を32kバイト をSRAM HM62256(左写真 下のIC)に交換しました。
基板のパターンカット無しでは、16kバイトまで増量出来ます。

Dscn9850 Dscn9849 

32kバイトに増量するには、
足りない信号(アドレスバス、スロット選択等)を引っ張ってきたり、数か所パターンカットをしましたが、
比較的簡単な改造でメモリを増やせました。

下記の、茶色以外の配線は追加した結線です。

Dscn9847

交換したSRAMは、次のような結線を行っています。

Photo


動作確認として、配列でメモリーを多くとって、値を書き込む確認動作のプログラムを動かしてみました。
とりあえず、問題なさそうです。

Prg

これで、やっと普通のMSXになりました。

Dscn9852

64kバイト化もチャレンジしてみたいと思います。

2019年2月25日 (月)

MSX用ゲームカートリッジのROM交換

先日入手したプログラマ XGecu TL866II Plusの練習として、
MSX用ゲームカートリッジのROMの書き込みを行ってみました。

以前、安価に入手したゲームカートリッジを使いました。

Dscn9716

ゲームカートリッジ基板の、元々付いていたマスクROMのM38128A-F7を取り外し、
ICソケットを装着しました。

代わりに EEPROMのWinbond W27C512(上の写真の左のIC)を装着します。
16kバイトのマスクROMの代わりに64kバイトのEEPROMを取り付けです。

まずは、取り外したマスクROMのデータを吸い出します。

Dscn9685

M38128Aは、利用しているプログラマソフト のICリストに登録されていなくて、
難儀したのですが、AMDのAM27128Aを選択し、Pin DetectCheck IDのチェックを
外すことで、データの読み取りが出来ました。

02

一旦、吸い出したデータをファイルに保存します。

次にWinbond W27C512への書き込みを行います。

ここで、マスクROMのM38128AWinbond W27C512はピン配置と読み出しの
インタフェースはほぼ同じですが、容量が異なります。

基板のICピン割り付けを調べると、元々あったところにWinbond W27C512を置くと、
アドレスピン A15A14が+5Vとなります(下図の黄色の部分)。
(IC外側信号:カートリッジの端子からの信号、内側はIC ピン信号割り付け)

01

A15A14がHIGHなので、元々あったM38128Aの16kバイトは、
Winbond W27C512の 0xC000H ~ 0xFFFFH の領域にマッピングされます。

ですので、吸い出した16kバイトのデータは0xC000h ~ 0xFFFFH に書き込みます。

Dscn9688

書き込みは10秒程度で完了しました。う~ん、早い、お手軽です。
Winbond W27C512を装着、

Dscn9693

ここで、 想定外、ありゃ、ふたがしまりません。諦めることにします。

Dscn9696


気を取り直して、動作確認、無事起動しました。

Dscn9701

問題なさそうです。

Dscn9709

カートリッジに収まらなくなってしまったのは、あれですが、
マスクROMを容量の異なるEEPROMに交換できることが分かりました。

ついでに、このカートリッジが利用している信号を調べてみました。
グレーの箇所は、端子が無く信号は来ていない部分です。
表は、参考文献より引用し、加工しています。

03

CS1がROMのCEに接続、SLTSLがOE(出力有効)に接続、後はアドレスバスとデータバス、
ROMだと意外と単純な制御でデータの取り出しが出来るようです。
参考文献のタイミングチャートを見ると、RDとSLTSLが同じタイミングなので、
SLTSLで、読み出しのタイミングを取っていても良いようです。

参考文献
テクハンwiki化計画 Appendix A.7 カートリッジ ハードウェア仕様

2019年2月22日 (金)

MSXのジョイスティックポートを使ったシリアル通信 (1)

MSXでジョイスティックポートを使ったシリアル通信が出来るらしいので、
事例を少々調べてみました。

シリアル通信が使えると、パソコンとの通信やArduinoとの連携等が出来るので、
色々とと楽しいことが出来ます。

ジョイスティックポートを使ったシリアル通信の事例

・Joy232
  HAKADAY.IO Print using RS232 on the joystick port of MSX computers
  https://hackaday.io/project/18552-joy232

  github - Danjovic/Joy232
  https://github.com/Danjovic/Joy232

・Akio Hiramatsu's Home Page - MSXでH8内蔵EEPROMを焼く
・FSW倉庫(通信) - アクロバット232

・JoyNet
  まとめサイト http://map.grauw.nl/resources/joynet/

まずは、一番簡単そうなJoy232を試してみました。


Joy232  Print using RS232 on the joystick port of MSX computers

01

joy232は、シリアル通信の出力のみ対応ですが、
BASICのLPRINTコマンドで出力することが出来るので、使い勝手が良いです。

早速試してみました。
ホームページの解説を参考にして、Dサブ9ピン コネクタで通信用コネクタを作りました。

Dscn9652 Dscn9653

USB-シリアル変換モジュールを使ってパソコンとの通信を試してみます。

Dscn9630

ホームページに公開されている、「STEP 1 Method 2」のBASICプログラムを、
MSX1(カシオ PV-7)で実行し、更にテスト用プログラム を実行してみました。

TeraTerm (通信速度 9600bps)にて、受信することが出来ました。

Term

MSXからの出力は、
  LPRINT "Hello,World"

みたいに、LPRINTコマンドで任意のデータを出力出来ます。

意外と簡単に出来ました。色々と遊べそうです。
Arduinoと通信を試そうと思い、
とりあえず、以前作成したLEDマトリックスを試してみました。

Dscn9658

シリアル通信でLEDマトリックスを制御できるモジュールです。
Arduino pro miniに8x8LEDマトリックスを直付けしただけです。
(LEDは定格許容範囲内の短いパルス出力では大きな電流を流せます)

Dscn9656

LPRINT "@?1234567890"
と実行すると、

Dscn9659

表示出来ました。

念のため、機種を切り替えてMSX2でも動作確認してみました。
結果は、...

動きません。MSX2が暴動しました。
調べてみると、マシン語プログラムの配置アドレスがまずいようです。
下記はプログラムの問題箇所の抜粋です。

60 EI=&HFAF5:SIZE=63
70 FOR A = EI TO EI+SIZE
80 READ B$: POKE A,VAL("&H"+B$)
90 NEXT A
100 REM
110 POKE &HFFB8,&HFA
120 POKE &HFFB7,&HF5
130 POKE &HFFB6,&HC3

LPRINTのフック(マシン語プログラム)の配置アドレス &hFAxxxx は
MSX2で新たにワーク領域と使われているようです。
基本的に &hF380H番地から&hFFFEH番地 はワーク領域なので使用禁止です。

プログラム自体はリロケータブルなようで、配置位置を&hF200 に変更したところ、
問題なく動作しました。

修正したプログラム(修正箇所のみ抜粋)

60 EI=&HF200:SIZE=63
70 FOR A = EI TO EI+SIZE
80 READ B$: POKE A,VAL("&H"+B$)
90 NEXT A
100 REM
110 POKE &HFFB8,&HF2
120 POKE &HFFB7,&H0
130 POKE &HFFB6,&HC3

Dscn9669

動いている様子



LEDマトリックスを制御しているMSX BASICプログラム
前半は1ドット単位の表示、後半はメッセージを1文字単位で
スクロール方向を変えて表示しています。

10 LPRINT "@?{}"
20 FOR Y=0 TO 7
30 FOR X=0 TO 7
40 LPRINT "@?{";CHR$(48+X);CHR$(48+Y);"1}"
50 NEXT X
60 NEXT Y
70 LPRINT "@?{}"
80 S$="Hello,Wrld.I love MSX!"
90 L=LEN(S$)
100 FOR I=1 TO L
110 R=INT(RND(1)*13)
120 LPRINT "@scrl ";R;",40"
130 LPRINT "@?";MID$(S$,I,1)
140 GOSUB 180
150 NEXT I
160 GOTO 100
170 END
180 TIME=0
190 IF TIME <20 GOTO 190
200 RETURN

上記のプログラムでは、シリアル通信の出力のみなので、
LEDマトリックスにコマンド送信した際の実行完了待ちが出来ないため
180行のサブルーチンで適当な時間待ちを行っています。

出力のみでも、十分遊べると思います。

2019年2月13日 (水)

プログラマ XGecu TL866II Plus USB を入手しました

ROMライターが欲しいと思い、ネットで調べて評価の高い、
XGecu TL866II Plus USB High Performance Programmer (リンク先は公式サイトです)
を入手しました。購入はいつものAliexpressです。

海賊版が出回っているようですが、
とりあえず、「海口鑫工电子有限公司」製の純正品のようです。



Dscn9625

中身

Dscn9602

本体

Dscn9626

付属のCDのアプリは古いバージョンのようなので、公式サイトから
現時点での最新版V8.3をダウンロードしてインストールしました。

アプリの「Xgpro TL866II Plus」を起動時にファームウェアを更新するように促されたので
ファームウェアもアップデートしました。

03

とりあえず、セットアップ終了

02


このTL866シリーズ、購入には少々注意が必要です。
下位のTL866A、TL866CSが安く販売されているのですが、
公式サイトには次の警告があります
(※注意 グーグル日本語翻訳しています)

01

下位のTL866A、TL866CSは生産中止で、偽造品の恐れがあるようです。
ヒントをクリックすると、TL866A、TL866CSはかなり前から生産を中止していて
偽造品にはソフトウェアのアップグレードに制約があるみたいな記載があります。

私は当初、Aliexpressでの中華製品の購入にはブランド選択の意識は無く
安いTL866A、TL866CSを買おうと思ったのですが、
「待てよ、とりあえず、高機能!」とTL866II Plusを選択したのですが、正解でした。