2023年1月19日木曜日

動作確認

 各パソピアと各ディスプレイでRGBコンバータの動作確認

パソピアの「カラー」と「カセット」コネクタは同じ形状なので、差し間違えに注意。
初代パソピアは、電源ケーブルのとなりが「カラー」コネクタ

初代パソピア T-BASIC + CENTURY LCD-800V。背景色ちゃんと出た。

OA-BASIC + NEC LCD-EA245WMi。こちらも大丈夫

パソピア5 + CENTURY LCD-800V

パソピア7は、向かって右側が「カラー」コネクタ

パソピア7 + CENTURY LCD-800V

パソピア700も、向かって右側が「カラー」コネクタ

パソピア700 + CENTURY LCD-800V
T-BASIC7なので、カラーパレットを使って中間色の背景もできる。

T100、向かって右側が「COLOR」コネクタ。どちらかというと、パソピア7に近い配置。

T100 + CENTURY LCD-800V

パソピア7 + cocopar  TX133019

パソピア7 + LCD-EA243WM

パソピア7 + LCD-EA244WMi

パソピア7 + Extron DSC301HD(ビデオスケーラー) + NEC LCD-EA245WMi(HDMI接続)

パソピア7 + 例の9.7インチ液晶モニター

パソピア/5/7/700/T100は全て問題なさそう。
但しパソピア16/1600では、このコンバータは利用できない。
(同じDIN8ピンのコネクタだが、12Vとクロック信号が出ていない)

ディスプレイに関して、全体的に15kHzが表示できるディスプレイなら問題なさそう。
中間色の背景だとディスプレイによってはモアレや色ずれが気になる場合がある。ディスプレイ側の調整で改善できるかもしれないが、解像度が違って滲まないので仕方ない部分もある。NEC系ディスプレイは自動調整後、モアレや色ずれが出にくくて良い感じ。

水平15kHzを正式にサポートしていないディスプレイは、同じ型番でもファームバージョンによって表示されなくなったりすることもある様子。
あくまで参考程度にしてもらえれば。

2023年1月8日日曜日

基板とケース作り

強制ブランキングするRGBコンバーターの基板とケース作り。

基板は今回もunicraftさんにお願いした。今回も綺麗な仕上がりでした。

パーツを装着するとこんな感じ。

組みあがった基板は、ロジアナつけて動作確認。
背景色ちゃんとでた。
ロジアナでも、ちゃんと水平同期信号と連動して8.94us強制ブランキングになっていた。

今回もケースを作ってみる。
試したケースは2種類。梅沢無線で購入したTAKACHIのアルミケース(MB4-3-5)と、秋月で購入したプラスチックケース(SW-50)

アルミケースはリューターで削り、VGAコネクタ・RGBケーブル・ネジ×4の穴を開ける。
VGAコネクタの半田部分とアルミケース壁のクリアラスが少ないので、部分的にコネクタ下の壁を薄くした。

必要な部品は、ネジ M2.6×2mm(4個)、ネジ/ナット M3×20mm(4個)、絶縁スペーサー M3×9mmとM3×5mm(4個ずつ)、グロメット 5mm(先にケーブルに通しておく)

高さ調整のためにゴム板 3mmほど挟んで、結束バンドでRGBケーブルを固定。

カバーを取り付けると完成
アルミは質感が高くて気に入っているが、削り作業が大変...

続いてプラスチックケース。こちらはNCで削って棒ヤスリで整える。
VGAコネクタ・RGBケーブル・ネジ穴×4の穴を開ける。

必要な部品は、ネジ/ナット M3×20mm(4個)、絶縁スペーサー M3×5mm(8個)、グロメット 5mm(先にケーブルに通しておく)
こちらも高さ調整のためにゴム板 3mmほど挟んで、結束バンドでRGBケーブルを固定。

カバーをはめ込んで完成。

プラスチックは、NCで固定するときに治具の傷が付いたり、ヤスリで傷がついてしまうのが欠点だが、加工しやすくフィッティングを取りやすい。

このRGBコンバータをつけて、NECのLCD-EA245WMiでAlphosを遊んでみた。
24インチは圧巻。

今回作ったケース、2つ並べてみた。
どちらも満足。

2022年12月28日水曜日

強制ブランキング

強制ブランキングの方法について。

NTSC信号の水平同期信号は、水平周期パルス信号(4.7us)→Breezeway(0.6us)→カラーバースト信号(2.5us)→Back Porch(1.6us)の順番タイミングになっている。
15kHz対応の液晶モニタでパソピア背景色を正しく表示するためには、水平周期パルス信号~カラーバースト信号の区間で、映像信号をカットする必要がある様子。(見つけてくれた先人の方々に多謝!)  H-SyncがLowになってからBack Porch内までの区間(7.8us~9.6us)、映像信号を強制ブランキングする仕組みを考えてみる。

テクニカルマニュアルによると、パソピア7の水平周波数は15.7kHz。
水平同期信号(4.47us)の区間でLowになる仕様。水平同期信号がHighになるタイミングから更に4.47us待つと8.94usでちょうどBack Porchの真ん中くらいのタイミングになりそう。

以前紹介した東芝純正のRGB変換アダプターでは、この強制ブランキングのタイミングをTC4538BP+可変抵抗で手動で調整する。CRTに映像を表示しながらマイナスドライバーで調整していた。

パソピアのカラー出力はDIN8ピンで、VGAコネクタは3列15ピン。
ケーブル側コネクタは以下のピン配置

パソピア本体から14MHzのクロック信号がでており、1clock=69.85nsになっている。
今回はこの信号を使って、自動でブラキング区間を決めるようにする。
クロックのカウントに、74HC590というカンターICを使ってみる。
H-SyncがLowになるとカウンターがリセットされ、Highになるとカウント開始。
64clock(=4.47us)経過するとQGピンがLow→Highに変化し、クロックカウントが停止。
これで、4.47us+4.47us=8.94usの間LowになったあとHighに戻る、という動作になる。
これとR/G/B映像信号をANDすると、ブランキング期間の映像信号が強制的にLowに落ちる

パソピアから+12Vも来ているので、レギュレータで5Vに落としてICを動かす。
考えた回路全体はこんな感じ。
若干の信号の遅延があるので、念のためR/G/B信号と一緒にH-SyncもAND回路を通してタイミングを合わせる。V-Syncの方は時間に余裕があるので直結。

基板に実装したところ。

ロジアナでタイミングを調べてみると、
上から順番にClock, H-Sync, 74HC590のQGピン, Blue信号, QGとBlue信号のAND結果。
ちゃんと水平同期信号と連動して8.94us強制ブランキングになっている。
IC動作分の遅延(0.09us程)があるが、Back Porch内に収まっている。

パソピア7実機とつなげてみると、
ちゃんと背景色が表示されるようになった!

中間色もちゃんとでたが、
CRTのように滲まないので、縦縞が目立つ...

2022年12月22日木曜日

パソピアの背景色

2011年に紹介した西田ラジオさんのS端子アダプタ、今でも重宝しています。
以前の記事にもあるように、パソピアの背景色問題に対応してもらいました。

パソピアを15kHz対応の液晶モニタにつなげた場合、背景色の問題が出る時がある。
DIN 8ピンからVGA端子3列15ピンに変換するケーブルを用意し、うちの15kHz対応液晶モニタで試したところ、やはり背景色が正しく表示されなかった。

例えばCENTURYのLCD-8000VでALPHOSを起動すると、全体的に黄色い。
下部は、27色では出ないような綺麗なグラデーションで背景色が消えていく...

純正のCRTで表示すると、青い背景色と白いニーモニック号がちゃんと表示される。
モニタの端まで綺麗に青が表示されている。

パソピアの背景色について。
初代パソピアでは、COLOR命令で背景色を指定できる。カンマの後が背景色(1=青)

パソピア7も同じようにCOLOR命令で背景色を指定できるが、

パレットコード0が背景色なので、COLOR=(0, ...)で中間色の背景色にもできる。

CENTURYのLCD-8000Vで背景色を青(1)にすると、背景は黒のまま文字色が黄色っぽく。
ピンク中間色(2,3)にすると、青と黒の縦じまになった。

NECのLCD-EA245WMiの場合、中間色(2,3)を指定しても背景は黒のまま。

ExtronのDSC 301 HDでHDMI出力も試してみた。

CENTURYのLCD-8000Vと同じ傾向。
青(1)の場合は背景黒で文字が黄色っぽく。中間色(2,3)の場合は青と黒の縦じまになった。

うちにある15kHz対応機器では、背景色が正しく出なかった。
次は、背景色問題対策の強制ブランキングについて。(続く)

2022年11月13日日曜日

パソピア7/700用のFDフォーマッタ

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

BIOSでFDDを制御するためには、まずパラメータのセット(Fn#=18)が必要
・Cレジスタ:Function(Fn)#=18(FDDパラメータセット)
・HLレジスタ:Buffer先頭アドレス
・Dレジスタ:Track#
・Eレジスタ:Sector#
・Bレジスタ:Read/Write Sector数
・Aレジスタ:FDD Paramter
 - bit7:Side (0 or 1)
 - bit6-5:00...両面倍密度, 01...片面倍率度, 10...両面単密度, 11...片面単密度
 - bit4-3:00固定
 - bit2-0:装置番号-1 (0-3)

FDDパラメータセット(Fn#=18)後、以下いずれかのFn#で再びBIOSコール
・Fn#=19:Disk Read(Seek & Read)
・Fn#=20:Disk Write(Seek & Write)
・Fn#=21:Disk Write(Seek & Write with Check)
・Fn#=22:Disk Write Delete(Seek & Write Delete)
・Fn#=23:Disk Restore(Seek to Zero)
・Fn#=24:Disk Format(Seek & Write ID)
・Fn#=25:Disk Check(Check Disk Status)
BIOSコールから戻ってきた際に、キャリーフラグが立つとエラー発生。
・Aレジスタ:終了ステータス
 - "0"=30h:正常
 - "1"=31h:Not Ready
 - "8"=38h:Write Protect
 など。
エラー時のリトライは1回ずつ入れることにした。

アンフォーマットのフロッピーだと、最初にトラック毎にIDの書き込みが必要。
IDを書かずにデータ書き込みするとID errorで失敗する。

フォーマット処理フローは以下の通り
(1) 装置初期化
・Fn#18でパラメータセット
 - Aレジスタ:FDD Paramter=装置番号-1(0-3)をセット
・Fn#23でDisk Restore
 - Aレジスタ:FDD Paramter=07hをセット

(2) トラック毎にID書き込み
・Fn#=18でパラメータセット
 - HLレジスタ:ID Buffer先頭アドレス。バッファには以下104バイトを書き込んでおく
  - 1バイト目:Track#
  - 2バイト目:Side0(00h) or Side1(01h)
  - 3バイト目:Index(01h→1Ah)
  - 4バイト目:単密度(00h) or 倍密度(01h)
  →上記を26回繰り返し4バイト×26回=合計104バイト
 - Dレジスタ:Track#
 - Eレジスタ:Sector#=E5h
 - Bレジスタ:Read/Write Sector数=40h
 - Aレジスタ:FDD Paramter=装置番号-1(0-3)をセット(Side1は+80h)
・Fn#24でWrite ID
 - Aレジスタ:FDD Paramter=8Dhをセット

(3) Disk読み込みチェック
・Fn#=18でパラメータセット
 - HLレジスタ:Read Buffer先頭アドレス。
  - 読み込み用に16セクタ(最大4,096バイト)分のバッファを用意しておく
 - Dレジスタ:Track#
 - Eレジスタ:Sector#=01h
 - Bレジスタ:Read/Write Sector数=10h
 - Aレジスタ:FDD Paramter=装置番号-1(0-3)をセット(Side1は+80h)
・Fn#=23でDisk Seek & Read
 - Aレジスタ:FDD Paramter=30hをセット

(4) Track0.Side0→Track0.Side1→Track1.Side0→Track1.Side1→...
→Track34.Side0→Track34.Side1の順番で(2)(3)を繰り返し。
但しTrack18のWrite ID後、ディレクトリ・ディスク属性・FATをSide0に書き込み
・Fn#=18でパラメータセット
 - HLレジスタ:Read Buffer先頭アドレス。
  - バッファにはディレクトリ・ディスク属性・FATを書き込んでおく
 - Dレジスタ:Track#=12h
 - Eレジスタ:Sector#=01h
 - Bレジスタ:Read/Write Sector数=10h
 - Aレジスタ:FDD Paramter=装置番号-1(0-3)をセット
・Fn#=21でDisk Write with Check
 - Aレジスタは変更なし

(5) Disk Restore
・Fn#18でパラメータセット
 - Aレジスタ:FDD Paramter=装置番号-1(0-3)+80hをセット
・Fn#23で装置初期化
 - Aレジスタ:FDD Paramter=07hをセット

上記の流れで処理を組んでコンパイル。できたバイナリをBASICと組み合わせ。
パソピア7のエミュレータで確認。
うまく行ったっぽい。
エミュが作成したd88イメージをバイナリエディタで確認したが、問題なさそう。

初代パソピアT-DISK BASICでの読み書きもエミュレータで確認。
パソピア7でフォーマットしたディスクは、初代パソピアでも使えそう。

実機での動作確認はパソピア700。フォーマット、データ読書きも大丈夫そう。

FDフォーマッタのRAMPACイメージとBASICテキストをアップしました。

パソピア7と初代パソピアはエミュレータでしか確認できていないので、すぐ試せる方は試して報告してもらえると助かります。

2022年11月12日土曜日

パソピアのフロッピーフォーマット

以前の投稿で パソピアのフロッピーをイメージ化する手順をまとめたが、今回はフロッピーの内部フォーマットについて調べてみたので備忘録。
パソピアには片面ミニフロッピーもあるが、今回は両面倍密(2D)ミニフロッピーについて。

・2ヘッド:Side0, Side1
・35トラック:Track#0(外周)~#34(内周)
・1トラックあたり16セクタ:Sector#1~#16 (時計回り順)
・1セクタあたり256byte(倍密度) ※Track#0.Side0のみ128byte(単密度)
・8セクタ毎に1クラスタ。クラスタの並び順は、
 Side0.Sector1-8 → Side1.Sector1-8 → Side0.Sector9-16 → Side1.Sector9-16
 下の表の場合、セクタ順に並べたのでクラスタ順が0→2→1→3になっているのに注意。

・Track#0は未使用領域
・Track#18.Side0は、
 (a) Sector#1-12:ディレクトリ
 (b) Sector#13:ディスク属性
 (c) Sector#14-16:FAT(256byte)×3セット

初代パソピア用T-DISK BASICの場合は、以下の領域が使われている。
・Track#0.Side1.Sector#1-8:初期化ルーチン
・Track#1.Side0.Sector#2~Track#8.Side1.Sector#16:T-DISK BASICシステム
・Track#19.Side1.Sector#1~Track#34.Side1.Sector#16:漢字パターン

総容量は、2ヘッド×35トラック×16セクタ×256byte-(単密度分:16セクタ×128byte)
=284,672byte

Track#18.Side0の格納データにについて。
(a) Sector#1-12:ディレクトリ ... 16バイト毎に、ファイル情報が格納される
・0~9バイト:ファイル名
 - ファイル名に00h, FFh, 3Ah(":")は含んではならない
 - 0バイト目が00hならKILLされたファイル、FFhなら未使用
・10バイト:ファイル属性
 - 00h:ソース形式(JISコード)
 - 01h:マシン語
 - 80h:バイナリ(中間言語)形式
 - それぞれ10hを加えると書き込み禁止
・11バイト:クラスタ番号
・12~15バイト:未使用
・1セクタあたり16ファイルの情報が書き込めるので、12セクタで最大192ファイルの領域
・フォーマット直後はFFh埋め

(b) Sector#13:ディスク属性
・0バイト:ディスク属性
 - 00h:(SET 装置番号," ") 属性なし
 - 10h:(SET 装置番号,"P") 書き込み禁止(Write Protect)
 - 20h:(SET 装置番号,"E"?) EBCDIC(未使用)
 - 40h:(SET 装置番号,"R") 書き込み確認(Read after Write)
・1~255バイト:未使用(00h)
・フォーマット直後は00h埋め

(c) Sector#14-16:FAT(256byte)×3セット
・クラスタ(8セクタ)単位でFAT情報1バイトを格納
 - 00h~8Bh:Nextクラスタ番号(=FAT内ポインタ)
 - C1h~C8h:ラストクラスタ ※右4bitの1~8:有効セクタ数
 - FEh:Reserved
 - FFh:未使用クラスタ
・フォーマット直後は、0~3, 72, 74, 140~255バイトがFEh、それ以外はFFh。
 上記256バイトが、Sector#14,#15,#16に3セット書き込まれる。

FAT256バイトはクラスタ順で並んでいる。
上の表はセクタ順に並べたのでTrack#18でFEhが連続しているように見えるが、クラスタ順が入れ子になっているため、Track#18(72-75セクタ)のFATはFEh, FFh, FEh, FFhの並び。
紛らわしいので注意...

-----
(2023/1/29)表の一部が間違っていたので訂正。Track#0.Side0(Sector#1-16)が単密度

2022年10月23日日曜日

フィルムコンデンサ交換

パソピア/7の持病フィルムコンデンサ、ついに我が家の初代パソピアでも破裂。
バンッと音がして、パソピアを見てみると煙がモクモク。部屋中、焦げ臭く。

まずは、パソピアの蓋を開けて電源ユニットの取り出し。
初代パソピアは床面ネジ1本と両脇の爪を開くと上カバーが外れる(爪は折れやすいので注意)

電源ユニットから基板取り出し。

電源スイッチの蓋を取り外すと、例のフィルムコンデンサが。
破裂してフィルムがめくれあがり、焦げたカスが散らばっている。
ヒューズは2つあって両方テスターでチェックしたが、どちらも切れてなかった。

半田ごてと半田吸い取り機でコンデンサを取り外し。
左は破裂したコンデンサで、右は以前のブログで紹介した6年前に用意していたコンデンサ

コンデンサの足の間隔を合わせて、基板に取り付け。

取り付けたらこんな感じ。

基板を電源ユニットに戻して、パソピア本体に取り付け。

動作確認。
ちゃんと動きました。
よかったー。