2023年3月4日土曜日

パソピア700修理

以前から調子悪いパソピア700があって、ずっと直したいと思っていた。

How many disk drivesの表示が出て、キー入力しても応答しない状態。
純正のキーボードでも、USBキーボードアダプタでもダメ。

まずは分解。パソピア700のマザーボードはこんな感じ。
下は以前紹介したパソピア7のマザーボート
パソピア700はFD関係のチップも載っているが、カスタムICもあってゆとりある配置。

まず疑ったのは電解コンデンサー。そんなに数もないので全部交換してみる。
が、交換しても改善せず。
上の写真の右側が、外付けキーボード用の信号を作るチップ達。(パソピア7には無い)
キー入力できないので、次はこの辺を調べてみる。

ロジアナで調べてみたが、外付けキーボードの信号はちゃんと入っているっぽい。
そういえば、キーの入力音は鳴っている。

ところで、Returnなどの操作キーと文字入力キーは入力音が違うのね。
GraphやShiftなどは音が鳴らないし、なかなか凝っていることに気づいた。

何回か電源ON/OFFしているうちに、モニターモードに入ることがあった。
モニターモードに入った時は、キー入力できる。メモリダンプやRAM書き換えもできる。
RAM/ROMダンプをXPAC2に保存するマシン語プログラムを作り、入力して実行する。
実行後はハングするが、ダンプはMRAMに保存されるので別のパソピアでSDカードに保存。

バイナリ比較した結果、BASIC ROM/BIOS ROMは問題なし。
(BASICもROMもパソピア7と微妙に違う。トータルで10数バイトの違い。)

ただDRAMのいくつかのアドレスでFFhを書き込んでもFBhになってしまう。
特定アドレスのbit3が死んでいるDRAMがありそう。

このパソピア700のDRAMは、富士通のMB8264A-15が8個搭載されていた。
別のパソピア700はTMM4164AP-15だったので、ロットによってチップは異なる様子。

はんだシュッ太郎でDRAMを取り外し、ソケットに置き換え。
その際にいくつかパターンを切ってしまったのでジャンパー線で修復。
シュッ太郎の先端を強く押し付けると、パターンが切れてしまうので注意。

新しいDRAMは、TMM4164互換の富士通MB8266A-10を装着。

来たー! ちゃんと動くようになった。
パソピア700はあまり流通していないと思うので、いつかは直したいとずっと思っていた。
修理できたのはよかった。

今回のパソピア700は塾で使われていたものらしく、PAC2スロットの中から消しゴムや小さい鈴が出てきた。子供たちよ、消しゴムはいいけど鈴はやめてくれ。

2023年2月19日日曜日

パソピア7/700のFDバックアップ

前回紹介したFDコピーをもう少し拡張してみる。
XPAC2を持っている方はSDカードも使えるので、フロッピーイメージを分割してファイルに保存する方法を考えてみる。

パソピアの2Dは、1トラックに32セクタ(1セクタ256バイト)で8KBのデータ領域。
XPAC2のスロット#5は、8KBのSRAM RAM PAC2になっているので、ここをバッファとして利用する。

SDカードにトラック毎のデータ保存用ファイルを用意する
同じフォルダ内に"ファイル名.xx"で、拡張子xxが00~34のファイルを用意。
Trackファイル00はサイド0が単密度(128バイト)なので6,144バイト、Trackファイル01~34は8,192バイトのファイルを用意。
各Trackファイルは、ヘッド0 セクター1→16、ヘッド1 セクター1→16の順番で、合計32セクターのデータが保存されます。

例えばFormat.xxというファイル名の場合、"Format.00"(6,144バイト)と"Format.01~.34"(それぞれ8,192バイト)の35ファイルを用意。
これら35ファイルは、SDカードの同じフォルダに格納しておきます。
以前紹介した自作フォーマッタで初期化したディスクをイメージ化したのでアップします

SDカードへのExportと、FDへのImportプログラムを用意したのでアップしました。
RAM PAC2イメージには"BACKFD"というファイル名で保存されています。
フロッピーからSDカードにExportする場合、最初に1を選択。
フロッピードライブ番号を選択し、SDカードのバス名を指定します。
例えば、DiskフォルダにFormat.00~34ファイルを置いている場合、パス名は「/Disk/Format.」を指定します。00~34の拡張子2文字は自動で入力されます。

SDカードへの保存が成功すると、"Completed successfully."が表示されます。

SDカードからフロッピーにImportする場合、最初の選択でに2番を選びます。
あとは同じように、フロッピードライブ番号を選択し、SDカードのバス名を指定します。
"Completed successfully."が表示されると、SDカードに保存してあった35トラックデータがフロッピーに書き戻しされています。

あと、せっかくWindowsでTrackファイルを読み書きできるようになったので、TrackデータとD88ファイルを相互変換するWindowsアプリを作ってみました。
実行ファイル(32bitと64bit)とコードをアップしました。(つたないコードですが...)

実行ファイル(D88Track.exe)上にトラック00ファイルをドラッグ&ドロップすると、00~34ファイルを読み込み、同じフォルダにD88ファイルとログを出力します。
逆にD88ファイルをドラッグ&ドロップすると、00~34までのトラックデータに分割して、同じフォルダにTrackファイルを出力します。

D88Track.exeを単独で起動した場合は、ファイルを開くダイアログが開くので、トラック00ファイルかD88ファイルを指定して開いてください。
その後の動作はドラッグ&ドロップ時と同じです。

これで作成したD88ファイルをエミュレータで読込みましたが、問題なく利用できました。
但し全てのファイルで確認したわけではないので、うまく動作しない場合は連絡ください。

D88ファイルはトラック順に並んでいない場合があります。一旦セクターデータのオフセット位置を調べてから、Trackファイル00から順番にファイル出力する仕組みにしています。

PC-98の2D対応5インチドライブがあれば、パソピアの2Dフロッピーから直接D88ファイルを作ることができますが、今は環境を用意するのも難しくなってきました。

今回のツールで、パソピアの2Dフロッピー <-> SDカードのTrackファイル <-> D88ファイルの相互変換できるようになったので、実機とエミュの行き来がしやすくなったのかなと思います。

あと、パソピア700には1ドライブ仕様があります。
1ドライブの場合、ディスクコピーする際に何度もフロッピー入替えが必要でしたが、SDカード経由でバックアップ・リストアできれば、楽にコピーできるようになります。

2023年2月18日土曜日

パソピア7/700用のFDコピー

パソピア7/700用フロッピーディスクのコピープログラムを作ってみる。

前回調べたフォーマット形式を参考に作ってみる。
パソピアの2Dは、0~34トラック、1トラック毎に32セクタで、1セクタは256バイト。
(但し、トラック0ヘッド0のみ単密度で128バイト)

パソピア7純正コピープログラムは2トラック16KB(4000h)ずつコピーしている。
今回はできるだけ短いプログラムを組んで、3トラックずつコピーする方法を考える。
裏RAM利用も考えたが、BIOSコールと排他になるのでシンプルな方法で行くことにする。

BIOSコールのプログラムは、F000hに配置。BASICプログラムはできるだけ短くして、バッファは9000h~EFFFhで24KB(3トラック分)確保できました。

FDコピーのRAMPACイメージとBASICテキストをアップしました。
RAMPACイメージにはCOPYFDのファイル名で保存しています。

コピーを実行する前に、コピー先のフロッピーをフォーマットしておく必要があります。
COPYFDを実行すると、オリジナルのコピー元FDドライブ番号(1~4)と、コピー先FDドライブ番号(1~4)を聞かれるので入力。
フロッピーディスクを2枚それぞれ挿入し、RETURNキーを押すとコピー開始されます。
コピーが無事に終われば、"Completed Successsfully."の表示がされます。

1ドライブのみの場合、オリジナルFDドライブ番号とコピー先FDドライブ番号の両方に"1"をセット。ドライブ#1のディスクを入れ替えながら進めます。
前述のとおり、パソピアの2Dはトラック#0~#34の35トラックあり、3トラックずつコピーするので、12×2回のディスク入れ替えが必要です。
純正のコピーツールは2トラックずつなので、もっと大変だったはず...

パソピア700実機でコピーしたディスクを98で読み込んでバイナリ比較してみましたが、ちゃんとコピーできているようです。エミュでの確認も大丈夫でした。

パソピア7+FDD実機での確認はしていませんので、もし試された方がいましたら報告もらえると助かります。

1ドライブコピー時のディスク入れ替えは苦痛(というかドライブ壊れないか心配)なので、別な方法も考えてみます。
(続く)

2023年1月29日日曜日

Fire Dragon for Pasopia7

パソピア7の傑作ゲーム、ファイア・ドラゴン。
パズルとアクションを複合したゲームで、自分でオリジナル面を作成できる。

カセットのA面には通常ゲーム、B面はConstruction(オリジナル面作成)。

A面のロード中。データサイズが大きいので、RAM PACに入れる場合は64KBのが必要。

走行型ヘルメット「ポルコン」から出す火薬でファイヤ・ドラゴンを操り、敵エイリアンや敵基地を破壊していく。

2・4・6・8キーで、ポルコンを操作。
Xキーで低速火薬、Zキーで高速火薬を撒き、火薬を伝わってファイア・ドラゴンが燃える。

ポルコンは敵につかまると、しばらくの間気絶する。
火薬が切れてファイア・ドラゴンが消滅すると1down
赤い橋は、ファイア・ドラゴンが通ると壊れて渡れなくなる。
決まった場所にファイア・ドラゴンを通過させると、ボースキャラクタが出現する。

ちなみに50面はこんな感じ。
どうやってクリアするんだ?

50面までクリアするとパスワードが現れる様子。パスワードと説明書最後のページにある応募券を送ると記念品がもらえる。(59年8月31日締め切り...)

実機+RGB変換ケーブル+液晶モニタの動画。

パソピア7版には高速モード([カナ]キーロック)、音無しモード([CAPS]キーロック)は無いとのこと。ロックできるキーが無いので...

2023年1月26日木曜日

パソピア用RGB変換ケーブル【RGBConv】

今年はパソピア7発売から40周年!
家電のケンちゃん(https://www.kadenken.com/)からパソピア用RGB変換ケーブル【RGBConv】を発売します。→通販ページはこちら

以下、簡単な説明になります。

【機能】
パソピアのカラー出力を、水平周波数15kHzに対応したディスプレイに表示します。
※一般的なVGAディスプレイ(水平周波数31kHz)では利用できません。

カラーバースト信号のタイミングで映像信号をカットすることで、パソピアの背景色を正しく表示する機能を持ちます。

【対応機種】
・パソピア (PA7010/PA7012)
・パソピア5 (PA7005)
・パソピア7 (PA7007)
・パソピア700 (PA7015)
※パソピアIQ/16/1600では利用できません

【接続方法】
・パソピアの電源をオフにして、「カラー」コネクタにRGBConvを差し込んでください。
※「カラー」と「カセット」コネクタは同じ形状なので、間違わないよう注意して下さい。
 パソピアの「カラー」コネクタは、下の青丸
 パソピア7の「カラー」コネクタは、下の青丸
※「カラー」コネクタには、奥までしっかり差し込んでください。
※接触不良の場合、コネクタを何度か抜き差しすると改善することがあります。
※コネクタを抜く際は、線を引っ張らずコネクタ部分をつまんで抜いてください。

・別途VGAケーブルを用意し、RGBConvとディスプレイ※を接続して下さい。


※640×200ドット表示できる水平周波数15kHz対応ディスプレイに接続して下さい。
 同じ型番でもファームウェアの違いなどによって動作しないディスプレイもあります。

【確認方法】
・パソピアの背景色はCOLORコマンドで指定します。
 COLOR ,カラーコード
・パソピア7/700の場合、COLOR=コマンドで中間色の背景色を指定できます。
 COLOR=(0, カラーコード1, カラーコード2)
※カラーコードは 0:黒, 1:青, 2:赤, 3:紫, 4:,緑 5:水色, 6:黄, 7:白
※色ムラやモアレが出る場合、ディスプレイの調整で改善される場合があります。

【注意・免責事項】
プラスチックのケースには傷や加工跡がありますが、ご了承願います。
本機を使用して生じたトラブル、被害、またはそれに掛かる損害などについて責任負わないものとさせて頂きます。
VGAケーブル、水平周波数15kHz対応ディスプレイはお客様でご用意下さい。全てのデバイスで動作保証するものではありません。
改良のため、予告無く仕様変更をすることがあります。
ご理解のほどお願い致します。

新しい情報などがあれば、https://pasopia700.blogspot.com/search/label/RGBConvサイトから公開していきます。

マニュアルはRGBConv_Rev1_第1版.pdfで公開しています。

-----
同時に家電のケンちゃんで、いくつか再販します。


近いうちに通販ページに登録されると思いますので、よろしくお願いします。

2023年1月24日火曜日

カラーパレットのテスト

パソピア7はカラーパレットで中間色を表示することができる。
横640ドットの偶数・奇数列で2つの色をタイリング表示して中間色を表示している。

パソピア7の画面をLCDに表示して気になったことがある。
COLOR=(0,0,7) と COLOR=(0,7,0)の表示が微妙に違う。。
どちらも黒(0)と白(7)の中間色なので同じ色だが、偶数列と奇数列が入れ替わっているっぽい。

ということで、カラーパレットをテストしてみる。
偶数列と奇数列で2つの画像をミックスしたビットマップ(640×200ドット)を生成。
パソピア7で表示させて、

カラーパレットで偶数列のみ、奇数列のみ表示を切り替えると、
いい感じで切り替わる。
FOR i=1 TO 7:COLOR=(i,i,0):NEXT
FOR i=1 TO 7:COLOR=(i,0,i):NEXT
で切り替える。

もともとパソピア7は320×200で2画面切り替えができるので、パレットを使った画面切替えは実用性が無いが、パレットの動作確認ができたということで。

続いてパソピア700でも動くだろうと試したところ、切り替わらない...
LCDでやっても切り替わらない。

パソピア7(左)と700(右)の中間色を比較してみると、
タイリングのパターンが違っている。。。
パソピア7は縦縞のパターン、パソピア700は市松模様のパターン。

知らなかった...
確かにパソピア700でパレット表示するとモアレが少ないような気がする。