まごころせいじつ堂

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

2023年05月

液晶ディスプレイの修理

 朝起きたら液晶ディスプレイが真っ暗になっていた。五年間ほぼ通電しっぱなしでついに故障したらしく、電源プラグを抜き差ししてみると一瞬画面が映るときがあるがすぐ真っ暗になる。これはバックパネルLEDの故障かもしれない。


 ゲーム機やBDレコーダに接続して使ってる娯楽設備なので困った。終日買い替えについて悩み色々探してたがどうせならと分解してみた。

FxcSkukaQAA1yat

 液晶パネルとケースが一体化して分解は難しそうだったが、回路部分が下部に集中しており底面の5箇所のネジを外すと下半分のカバーが外れる。ここで無理やり力を入れたためプラの爪がたくさん折れた。背面から左のユニットがメインの回路基板、右が電源。電源はACインレットがついている。

 シールドケースを外して電源ユニットを観察。基板はAC100VのHOT側と安定化電源のCOLD側に分かれている。思ったより電源ケーブルは細い。EC105/EC106のコンデンサが膨らんでいる。それぞれ220uF/35V/105℃ L-ESR表記。
FxcSlCCaQAAJlkl

 スイッチング電源だろうからこの電解コンデンサが劣化してバックパネル用LEDの電源が安定せずに一瞬しか出ないので前述の故障となるのでしょう。HDMI信号入力からの画面表示はしているのでメインのロジック部分は基板・電源ともに問題なしと判断。

 たまたま同等のコンデンサを持ってたので交換。
Fxcc05VaEAY95ec

 仮組みしてしばらく動作確認。問題なさそう。
Fxcc1O5aEAIdKB8

 この液晶ディスプレイは購入してすぐに壁掛けにしていたので気付かなかったのだが、本体下部が熱い。常時通電していて熱で部品が劣化したものと思われる。電源ボタンは右背面にあり押しにくいので、オークションで千円程度で入手できるオーディオタイマーに電源を接続することにした。これでこまめにOFFできる。
IMG_20230531_203601

 とりあえず分解してみてよかった。いずれ買い換えなければならないが先延ばしできた。



↓ 解像度はWQHDから落ちるが仕方がないこれにするかなどと悩みましたよ

富士通FMシリーズのキーボード覚え書き

 富士通のパソコンFMシリーズのキーボードに関するメモ。

・キーボードレイアウト

・FM-8 / FM-7 / FM-New7
これらはキーボード一体型。キーを押したときだけキーコードが送出される。キーが離されたときがわからないのでゲームなどに不向きだった。

・FM-77
24ピンアンフェノールコネクタで接続する外部キーボード。FM-7のキーボードのキーマトリクスが外部に出たような構造。

・FM-11
DIN 8ピンコネクタで接続する外部キーボード。シリアル通信(9600bps パリティあり evenかoddかうちょっと忘れた)。INSキーのLEDとBREAKキーは直結。
ピンアサイン ※FM-7/11活用研究より
1 .. *RESETB
2 .. *CLOCK
3 .. *DATA
4 .. *BREAK
5 .. Vcc
6 .. *INS
7 .. NC
8 .. GND

・FM-16β
DIN 8ピンコネクタで接続する外部キーボード。FM-11互換のコードモードとキーを離したときのコードも送出するキーアドレスモードを持つ。コードモードとキーアドレスモードの切り替えはこのキーボード自体に何らかの設定をPC側から送信する。
FM-11のキーボードをFM-16β本体に接続して使うこともできるが、起動時に"R"のキーが入力されたような動作になった。


・FM77AV ※FM-TechKnowより
RJ-9(FM77AV) , RJ-11(AV20/AV40) , Mini Din 4P(EX)。本体へはスキャンコードの送出のみ。INSキーのLEDは本体にある。初代FM77AVのキーボードは赤外線送信機能ありでワイヤレスで使用でき、Nキーロールオーバーにも対応していた。
JIS9bitモード / FM-16β準拠モード / スキャンコードモード を持つ。
JIS9bitモードはFM-7と互換。FM-16β準拠モードはJIS9bitモードに無変換/変換のキーに対応するコードが割り当てられ、FM-16βのコードモードと互換。スキャンコードモードはFM-16βのキーアドレスモードと同じくキーを離したときのコードも送出する。(完全互換かどうかは未確認)
モードの切り替えは本体内のキーボード担当のマイコンの仕事。


・FMR / FM TOWNS / OASYS
相互に互換性あり。


BASICの左辺MID$の動作について

 BASICの文字列関数MID$()は文字列から指定した場所を抜き出して返す関数だけど、左辺に置くことで文字列の特定の位置からの置き換えをすることができる。これはMicrosoft系のBASICにある機能で初期のもの、サブセットと思われるものには実装されていない。書式は

MID$(文字変数名,文字位置,[文字数])=文字式

で、文字変数名の中の文字列について文字位置から文字数分だけ文字式の内容で置き換える。
これについて、文字変数名と同じもので置き換えようとすると結果が異なるものがある。

A$="12345" : MID$(A$,2)=A$

この結果、A$が"11234"になるものと"11111"になるものがある。各機種について検証した結果は @1re1 さんが BASIC言語 MID$ステートメント 実行結果一覧.xlsx - Microsoft Excel Online としてまとめてくださっている。また、MID$の歴史的経緯については ときどきの雑記帳 Re* にて調査されている。

 では実機での挙動からどのような動作をしているのか調べていく。
VARPTR()関数は指定した変数の情報を返す。文字型変数の場合は文字列の長さ(1バイト)、文字列の格納アドレス(2バイト)を保存しているアドレスを返す(格納アドレスのエンディアンはCPUに依存)。以下の実行例ではA$の文字列がMID$実行後に2103番地から32760番地に変化している。かなりアドレスが離れているが、2103番地はBASICのソーステキスト内、32760番地はBASICの変数の領域。
2023-04-19 03.54.44

 ちょっと脱線するがBASICソース中の文字を書き換えることが可能。
2023-04-20 21.58.02

 MID$を実行した後はA$の内容を書き換えた結果が新しい変数の領域に置かれている。これはA$の内容をいったん作業領域にコピーした後で加工し、文字列が置かれている番地を更新しているものと思われる。そうすると動作は以下のとおり。
(1)まずA$の内容を作業領域にコピーし、(2)作業領域に対してMID$(work$,2)=A$相当の書き換えを行い、(3)A$のVARPTRで参照される文字列格納アドレスを作業領域の先頭番地に書き換える。
スクリーンショット 2023-05-11 22.02.48

 Z80や8086での動作は以下のように考えられる。(1)作業領域へのコピーは同じだが、(2)先にA$の情報を書き換えてしまうので、(3)の置き換え動作で"11111"となってしまう。
スクリーンショット 2023-05-11 22.03.08

 MID$(A$,2)=A$はこのケースに該当するが、領域が一部かぶるデータのコピーは転送元と転送先の位置関係からアドレスの前からやるか後ろからやるか決めないと正しく行われない。昔のパソコンはコードをできるかぎり削りたいためそのような条件の判断とコピー動作の切り替えはやっていないと思われる。そもそもA$を最初に定義した状態では文字列がBASICのソースの中にあるので直接書き換えることはできずどこかにコピーして作業しないといけない。

 富士通のF-BASICは最初から"11234"と期待される動作をしており、80386(FM-TOWNS)のF-BASIC386でも同じ結果だが、Windows上で動作するF-BASIC V6.3はN-88BASICとの互換性を意識しているため"11111"となっている。


以上、BASICの中身は見ずに動作だけから考えてみました。




記事検索
プロフィール

hardyboy

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