PCの不調を復旧する~突然PCが落ちる~

2020/12/17

 Windows10 Professionalが突然落ちて、画面が真っ黒になり、何が起こったのかわからなくなりました。気が付いてみると、PCを購入してからすでに8年ほど経っていました。半年ぶりにPC内部の埃の掃除し、点検しましたが、特に問題は見つかりませんでした。


SSDのSMARTを確認し、記憶内容の読み込みエラーが発生していないか確認しましたが、読込みエラーは、ありませんでした。次に、怪しい部分は、電源の不調によりリセットが発生したかもしれないので、念のため電源容量が十分な新しい電源ユニットに交換してみました。依然として、突然PCが落ちることが治りませんでした。


ここで、以前のWindowsなら、ブルースクリーンが出てから落ちるようになっていたことに気が付き、なぜブルースクリーンが出ないか、確認すると、Windows10では、システムエラー時、「自動的に再起動する」がデフォルトになっていました。おせっかいの極みです。ブルースクリーンが出るようにすると、「MEMORY_MANAGEMENTエラー0x0000001a」が発生していました。


これは、メモリーに問題がある場合に発生することが多いため、メモリー診断を行いましたが、問題無いようでしたが、よっぽど状態が悪くない限りエラーを発見できないようです。突然PCが落ちる頻度は、30分~数時間ですので、次に、DIMMコネクターの接触不良ではないかと、接点を清掃して2枚のDIMMを入れ替えましたが、まだ、突然PCが落ちます。しかたがないので、メモリを新調したところ、治まりました。


原因が特定できて少しほっとしたました。ところが今度は突然PCが落ちたために、SSDのCHKDSKが必要な状態になりました。しばらく起動時のCHKDSKをスキップさせていましたので、CHKDSKを行うと修復はできましたが、ボロボロ状態でした。念のため、バックアップソフトで、パーディションのバックアップを取ろうとしましたが、セクター単位でしかバックアップが取れませんでした。(ファイルシステムに問題がある証拠です)


NTFSは、ジャーナルによって、ファイルシステムが必要なロールバックにより、整合性を保つ仕組みがあるはずでしたが、なぜか、修復を必要な状態になってしまいました。泣きっ面に蜂状態です。思い起こすと、HDDをSSDに乗せ換えたときに、AHCI モードを使用し、ドライブ側のWriteキャッシュを有効にしていたことに気が付きました。これでは、ドライブ側のWriteキャッシュが捨てられることが発生し、NTFSのロールバックが意味なくなることになります。わかっていたものの、パフォーマンスを重視しすぎました。


さて、たくさんのアプリケーションをインストールしている環境なので、Windowsの新規インストールは避けたいところです。SSDの復旧をするしかない状況になりました。

(再クロール更新:2022/12/22)

SBCZ80ルーズキットの製作(8MHz動作編)

2020/09/25

 10MHz高速版のSIOが届きました。



まず8MHzで動作させましたが、問題なく動きました。ただ、DRAMのアクセスタイムが100nS必要で、オーバークロックになっています。ASCIIART.BASの速度は、速いのは速いのですが、それほど体感速度が出ませんでした。Z80は、結構クロック数を必要としますので、仕方がない気もします。


10MHz版のSIOには、オーバークロックになりますが、16MHzを試してみました。残念ながら動作しませんでした。スペックを確認すると、16MHzの場合、DRAMとEEPROMのアクセスタイムが70~80nSが必要なようで、今回は共に150nSでしたので、当たり前みたいです。

(再クロール更新:2022/12/22)

SBCZ80ルーズキットの製作(シリアルハンドシェーク編)

2020/09/24

 GRANTBASで、ASCIIART.BASを走らそうとしましたが、TeraTermでプログラムをペーストすると、シリアルポート入力の取りこぼしが発生しました。


TeraTermのフロー制御を"hardware"にしましたが、改善しませんでした。GRANTBAS.ASMの確認を行うと、RTSのハンドシェークがされていませんでした。下記のような、修正を行ったところ、問題なくペーストできるようになりました。大きなプログラムでは、必須な機能ですので、必要な方は、修正をお勧めします。


修正内容は、入力バッファの残りが4文字より少ない場合、RTSをINACTIVEに、入力バッファ中の文字数が4文字以下の場合。RTSをACTIVEにしています。

【修正前①】
; CHECK BUFFER FULL
LD A,(RBFCNT)

【修正後①】
; CHECK BUFFER HIGH
LD A,(RBFCNT)
CP RBFSIZ-4
JP M,CHKFUL
LD A,005H ; WR5
OUT (PSIOAC),A
LD A,0E8H ; RTS INACTIVE
OUT (PSIOAC),A
; CHECK BUFFER FULL
CHKFUL: LD A,(RBFCNT)

【修正前②】
; READ DATA
LD A,(RBFCNT)

【修正後②】
; CHECK BUFFER LOW
CP 4
JP P,RDDAT
LD A,005H ; WR5
OUT (PSIOAC),A
LD A,0EAH ; RTS ACTIVE
OUT (PSIOAC),A
LD A,(RBFCNT)
; READ DATA
RDDAT: LD A,(RBFCNT)

なお、ZTB.ASMも同様です。

(再クロール更新:2022/12/22)