ドナドナされるプログラマのメモ

Windows用アプリのプログラミングメモ

HGSTの250GB HDD HDT722525DLA380を分解した

日立GST のハードディスクである HDT722525DLA380 (Deskstar T7K250(250GB / SATA3Gb/s / 7200rpm / キャッシュ8MB)を処分するため分解した。2005年10月製だから、約17年前の遺物だ。完動品で、中のデータは分解前に吸い出し済み。エラーなし。

HDT722525DLA380 (Deskstar T7K250) 外観 (上面)

HDT722525DLA380 (Deskstar T7K250) 外観 (下面)

HDT722525DLA380 (Deskstar T7K250) 外観 (底面)

当時はまだSATA用電源出力を持たない電源ユニットが多かったからか、見慣れた4端子がいる。そして、英語で「両方の電源を同時につないじゃ駄目よ♪」って書かれてる。

HDT722525DLA380 (Deskstar T7K250) シールをはがしたところ

ケースのネジは全てトルクスネジの8番。ケース内部まで貫通するものは、ネジの上に透明なプラスチックが貼り付けられて気密を保っていた。

HDT722525DLA380 (Deskstar T7K250) 内部

カバーを取ると、鏡のようなディスクと三角形のヘッド部、左下には強力な磁石、左上には吸湿剤?が姿を表した。

ヘッド部は白いパーツに収まることで先端のセンサーを保護し、また一番左下に見える白い長方形磁石に吸着することで、電源が切れている状態でもこのヘッド位置を保持するようになっていた。

マジ鏡

固定ネジおよびシール

斜めから見たところ

ヘッド格納部

ヘッド格納部を固定するシャーシ部は、組立時の都合からか、格納部パーツよりも大きな台となっていて、はみ出る部分までしっかりフライス加工されていた。通常の状態だとヘッドがディスクに干渉するため組付けができない。そのため、ヘッドを写真よりさらに手前に動かして組み付けていると思われる。そのためには高さ方向の位置決めが必要なので、台は手前方向に長いものと思われる。

ヘッド格納部と、ヘッド保持用磁石つきゴム

ヘッド保持用磁石がなければ、ディスクと干渉しない位置までヘッドが動く

カバー裏面

カバーはゴム状のパッキンで風刺する構造。このままだと気圧が低いときにケースが膨らんだりしてしまうためか、通気用のフィルタが左下に居た。

通気フィルタ (表)

通気フィルタ(裏)

通気フィルタ (内部)

通気フィルタの表側は細い通路となっていて通気量を制限しているように見えた。裏側は不織布でフィルタ。内部には黒い活性炭のような塊が入っていて、これで微粒子を吸着しているように見えた。

HDT722525DLA380 (Deskstar T7K250) 基板(表)

InfenionのUAB-M3059-HTはおそらくDSPで、SATAインターフェースも担当。コネクタへと線が伸びているし。
上の方にいる8ピンICはPMCの25LV512E。512kbitのフラッシュメモリである。

左端にいる0A30502はモータードライバの模様。

左端にいる8ピンのはS93C76で8kbitのEEPROM。

HDT722525DLA380 (Deskstar T7K250) 基板(裏 緩衝材付)

HDT722525DLA380 (Deskstar T7K250) 基板(裏)

裏面にいるでっかいのは今は亡きエルピーダの8MB SDRAMであるS6416AHTA-6BEH。

右の方にある端子群は、HDD内部へのコネクタと接触する部分。

シャーシの貫通孔とコネクタ

アクチュエータの磁石上部を外したところ

シャーシに話を戻して、アクチュエータを駆動する磁石2個のうち上部をはずした。きれいなコイルが見える。

アクチュエータ

アクチュエータ側面

アクチュエータにはディスク2枚の表裏に読み書きするためのデバイスが4個ついていた。また、基部にはドライバ・アンプっぽい半導体がついていた。TI 1970R6 505149004と刻印されていた。

アクチュエータ側面2

アクチュエータのベアリング

アクチュエータの側面にはイモネジがついており、これを外すと軸がすっぽぬけた。とても気持ちよく回る軸である。良いベアリングが使われているようだ。なお、イモネジはトルクスネジの6番だった。

ここまで外した

次にディスクを外す。ディスクはトルクスネジ6番で固定されていた。

固定リング表

固定リング裏

ディスク2枚とスペーサー、保持具

ディスクとディスクの間にはスペーサーがいた。黒いプラスチック部品は用途不明。なんのためにあるんだろう?

ヘッド駆動用磁石(内側)

ヘッド駆動用磁石(外側)

ヘッド駆動用磁石を組み合わせたところ

ヘッド駆動用磁石は非常に強力なので、何かと重宝する。ただ、本当に強力なためうっかり指を挟むと物凄く痛い。

シャーシとモータ

シャーシからモータを外した。モータはおそらくDCブラシレスモータ。こちらは分解できなかった。

シャーシにはもう部品は無し。これにて分解終了。

今使っているPC(CPU)は何代目?

ふと、今使っているPC(CPU)は何代目なのか気になった。

初代は、メンブレンキーボードを搭載した超小型の黒いPC。右奥にROMカートリッジ?をつける場所があった。おそらく、Timex Sinclair 1000と思われる。アメリカのヤードセールで買った。いつ処分したかは記憶にない。CPUはZ80らしい。

Timex Sinclair 1000(シンクレア ZX81のクローン)(Wikipediaより)

2代目はNECのPC9801UV11。CPUはV30で10MHz/8MHz切り替え可能だった。RAMは640kB。最初は26音源をつけていた。SCSI?もつけていて、外付け40MB HDDに接続していた。

NEC PC9801UV11(Wikimedia commonsより)

3代目はEpsonPC-386Mだと思われる。ただ、かなりうろ覚え。このころには86音源を導入していたと思う。

4代目はNECのPC9801BA/U2。たぶん。486 DX2搭載の40MHz機。メルコのEMSメモリだったかを8MBぐらい積んでた気がする。HDDはたしかSASI接続の120MB、後日300MBぐらいのに換装してた。Windows3.1は本機でデビュー。でもMS-DOS5も使っていた。NiftyServeに入り浸ってた気がする。aiwaの33600bpsモデムを使ってた。

5代目はNECのPC9821V10。Pentium搭載の100MHz機。RAMは少なくとも16MBあったが、32MBぐらいに増設してた気がする。HDDはSASI接続の850MBぐらいだったかな。Windows95を搭載してて、たしかNiftyServeのインターネット接続サービス経由でネットサーフィンしてた。

98MATE GUIDE BOOKより

6代目はIBM/PC互換機でいわゆる自作PCなんだけど、仕様が思い出せない。Windows98および2000機だったと思うんだけどなあ。グラボとしてVoodooを載せていたと思う。

7代目も自作PC。ケースはそのままで中身だけ入れ替えてたはず。ソケットかスロットかで悩んでスロットにした気がするので、CPUはおそらくAMDThunderBird。グラボはATIのALL-IN-WONDER 128。OSはWindows2000だと思う。また、ケーブルテレビによるインターネット常時接続を契約。512kbps 6000円/月で、2022年現在の相場よりも500倍ぐらい高い。

また、学校支給のノートPCも使っていた。スペックは忘れてしまった。

8代目も自作PCだけど、よくわからない。チップセットとしてnForce3を使った覚えはあるからAthron64だと思うのだが。グラボは先代のママだったと思う。

9代目はIntel CPUとしか覚えていない。グラボはNVIDIAのなにか。

10代目はAMD PhenomII x6 1090T (6コア3.2GHz)。AMD 790GXチップセットと組み合わせていた。WindowsXp 64bitを入れていた。グラボはGALAXY GeForce GTX 460 (1GB)。

また、このころThinkPad x240を購入。

11代目はIntel Corei7 4770K (4コア3.5GHz)。マザボGigabyte Z87X-UD3H-CF、グラボはGALAXのGF PGTX1070-EXOC/8GD5(8GB)でメモリは16GB、OSはWindows10 64bit。

12代目はAMD Ryzen 3700X(8コア 3.6GHz)。マザボGigabyte X570 Aorus Elite、メモリやグラボは先代のものを使用。OSもそのまま。

また、このころThinkPad T14 AMDを購入。

13代目はAMD Ryzen5800X (8コア 3.8GHz)。マザボなどはそのまま。

そうか・・・13代目か・・・

4ポートUSBハブ H431BKの分解

以前からなんかカラカラ音がしていた、10年以上前に買った4ポートUSBハブ: H431BKが機能しなくなったので分解し分別廃棄したのでメモ。

外観(表面、裏面)

ケース内側

ケースは完全にスナップイン式でネジは無し。

基板B面と金属片

ケースを開けたら、USBコネクタの背面カバーがポロッと出てきた。写真一番右のUSBコネクタから外れたらしい。

カラカラ音の原因はこれかなあ。あと、もしかしてこれが中央にある水晶発振子(円筒形の部品)に触れて短絡し機能停止させてたのかな。

基板B面(真上から)

基板A面

基板A面中央にあるのがUSBハブのIC: GL850G。ちなみにこいつは8bitマイコンを内蔵してるんだけど、メインメモリが64バイトしかない。マスクROMも2Kバイトだけ。固有のPIDやVIDを外付けEEPROMから読めるようにするために居るっぽいけど、このハブには外付けEEPROMが見当たらないからその機能は使ってないぽい。

ラジオ・ライト付き手回し発電機の分解

漢字のナンクロで当たったらしい、ラジオ・ライトつき手回し発電機の電池が死んだので分解・廃棄することにした。

側面

上面

反対側面

前面

底面

背面

内部

左の方にいる黄色い部品がリチウムイオン電池。電圧が0.1ボルトしかなく過放電になっていた。無理やり充電して3Vぐらいにしても、すぐ放電して1Vぐらいになってしまう。

基板

基板反対面は、セレクタのノブが外せなかったために撮影できず。

発電機ギヤボックス



 

C++REST (cpprest)をスタティック構成のMFCと一緒に使う

RedmineのデータをREST API経由でダウンロードするプログラムを作るためにcpprestを導入しようとした際に苦労した点のメモ。

前記ソフトをMFCランタイムをダウンロードできない/しづらい環境でも使えるようにするため、MFCをスタティックライブラリとして組み込む必要があった。しかし、なぜか忌々しい「Debug assertion failed!」とともに、

File: minkernel\crts\ucrt\src\appcrt\heap\debug_heap.cpp

Line: 996

Expression:__acrt_first_block == header

というのが表示された。

んんん?公式ライブラリでこんな致命的なエラー?どいうことだ?

調査したところ、どうやらcpprestはメモリ確保をDLL内部で独自にやっていて、それがアプリ内部でのメモリ管理と衝突してしまっているようだ。これを解決するにはcpprestもスタティックライブラリにすればよい。cpprestをstaticで使う方法は公式に記載されていないが、以下の手順で導入完了。

  1. vcpkgでcpprestsdk:x64-windows-static及びcpprestsdk:x64-windows-staticを必要に応じて実行。
  2. vcpkgでintegrate installを実行。
  3. Visual Studioのプロジェクトのプロパティにvcpkgというアイテムが出来ているので、そこのuse static librariesを「はい」にする。

これで無事にメモリ関連のエラーも起きなくなり解決。

昔のOA機器?写真の供養

昔のOA機器?の写真が出てきたので供養がてら記録に残す。CANONと書かれたアルバムに入っていたがNECの製品っぽい。詳細不明。

f:id:donadonasan:20220107122854j:plain

TCP-17996

f:id:donadonasan:20220107122940j:plain

TCP-19080

f:id:donadonasan:20220107122950j:plain

TCP-21036

f:id:donadonasan:20220107123001j:plain

TCP-21037

f:id:donadonasan:20220107123012j:plain

TCP-21040 (ND3100)

f:id:donadonasan:20220107123044j:plain

TCP-23611

f:id:donadonasan:20220107124027p:plain

キーボード左下の拡大。たぶん、「NEC EXECUTIVE OFFICE SYSTEM」って書かれてる