世界を動かす技術を、日本語で。

ビニールレコードからのブート(2020)

概要

  • IBM PC でレコードプレーヤーからのブートを実現した実験
  • カセットインターフェース を用いた独自ブートローダーの開発
  • FreeDOSカーネル や最小限のコマンド環境を64Kに収めたRAMディスク
  • レコード音声信号を デジタルデータ として読み取りブート
  • 信号補正や機材調整の詳細な技術的工夫

レコードプレーヤーからIBM PCをブートする実験

  • 通常のPCは HDD、SSD、ネットワーク、USB、DVD などからブート
  • 今回は レコードプレーヤー からのブートに挑戦
  • 10インチレコードに 64セクタ・512バイトのDOSブートディスク をアナログ記録
  • 総再生時間 6分10秒(45rpm) でデータ転送

システム構成と仕組み

  • IBM PC とレコードプレーヤーを アンプ経由 で直結
  • ROM内蔵ブートローダー がPCの「カセットインターフェース」を制御
  • BIOSが他のブートオプション失敗時に自動起動
  • レコードには 64Kの読み取り専用RAMディスク (FreeDOSカーネル、最小COMMAND.COM、INTERLNK)が記録
  • ブートローダーが音声信号をデータとして読み取り、メモリに展開して起動

技術的詳細

  • ブートローダーは BootLPT/865150CAXX の統合版(プリンターポート除外)
  • ROMは BIOS拡張スロット に挿入(または他メディアでも可)
  • カセットインターフェース :PCスピーカーのタイマーチャンネル2(出力)、8255A-5 PPIポートCチャンネル4(入力、I/Oポート62hビット4)
  • BIOS INT 15h を使いソフトウェアで変調・復調
  • ブートイメージは BOOTDISK.IMG (64K RAMディスク)、5150CAXXで「IBMカセットテープ」形式の音声データに変換し、レコードカッティング

信号補正・再生環境

  • レコードは RIAAイコライゼーションカーブ でカット、通常プリは逆補正
  • Harman&Kardon 6300アンプ (MMフォノプリ内蔵)を使用
  • トレブルを -10dB/10kHz まで下げ、バスを +6dB/50Hz に上げ、ボリュームは 0.7Vピーク 程度に調整
  • フェーズ・ラウドネス補正は 全てオフ
  • 信号に ノイズや大きなクリック音 がないことが重要
  • 若干のワウや速度誤差(±2~3%)は許容範囲

実験まとめ・入手情報

  • ブートローダーバイナリは 2364チップ用 (2764もアダプタで可)
  • IBM 5150、モノクロ画面、RAM512K以上の環境で動作
  • ブートディスクイメージやアナログ音声データは BootLPT/86記事 から入手可能
  • レコードの溝から直接ブートするという ユニークなハードウェア実験

まとめ

  • レコードプレーヤーを使い、 IBM PCのブートメディア として活用する前代未聞の試み
  • 古典的な カセットインターフェース を現代技術で再活用
  • 信号補正ROMブートローダー 設計など、ハード・ソフト両面の工夫
  • レトロPC愛好家オーディオマニア にも興味深い内容

Hackerたちの意見

うん、それめっちゃクールだね。メディアさえ手に入れば、実現可能なのもいいよね。

ちょっと高いけど、オンデマンドのレコードは作りやすいよ。

昔のスキャナーはSCSIだったから、ブートデバイスとして使えないかなって思ったんだ。スキャナードライバーとOCRソフトをBIOSに入れればできるかも。今はuEFIがあるから、もしかしたら簡単かもね。

*だった

もっと古いスキャナーは、セントロニクスケーブルでISAを生でつないでたんだよね。

中年のPowerPC Macでやってみて!

それはめちゃくちゃ素晴らしいアイデアだね!昔SCSIスキャナーを持ってたけど、もう部品にしちゃったんだよね。シンプルなブートローダーを書いて、紙に印刷されたバイトをメモリに読み込んで起動することができるかも。例えば、黒(0)、白(1)とか、長い長方形(1)、短い長方形(0)みたいな感じで。A4用紙のストレージ容量ってどのくらいなんだろう。

いいプロジェクトだね。昔は雑誌がフレキシディスクでソフトを配布してたんだよね(https://en.wikipedia.org/wiki/Flexi_disc)。あれ、すごく信頼性が低かったのを覚えてる。雑誌には、フレキシディスクをカセットテープにコピーしてから使うようにって書いてあった。ディスクは通常1回か2回しか再生できなかったからね。

クールだね。80年代に音楽雑誌でそんなディスクを手に入れたのを覚えてる。あの時、ソフトを載せられるかもって思ったけど、実際にやってるのは見たことなかったな。

そういえば、私はAcorn Electron(BBC Micro互換)を持ってたんだけど、ソフトは音声カセットで、時々コンピュータ雑誌の表紙に貼られてソフトのデモを共有してたんだ。電話に繋がってないモデムみたいなもので、テープが擦り切れてきたら、鉛筆をギアの一つに入れて少し巻き取って修理することもあったよ。音楽用のデュアルテープデッキがあればソフトをコピーできたんだ。

私の国では、アタリ800のソフトをラジオで放送してたんだよね - そして、それがちゃんと動いてた…

古いアミガのバックアップをVHSにまだ持ってるよ。ちゃんと動いたし… :)

ポーランドの共産主義時代、国営放送がそれをやってたんだ。アタリやZXスペクトラム、コモドール64のためにね。でもオーディションは聞いたことないな。自分の時代よりずっと前のことだし。

本当に驚きだね。もっと詳しく知りたいな。

オランダでは、Hobbyscoopラジオ番組の一部としてソフトウェアを放送してたんだ。様々なホームコンピュータで動く汎用BASICコードで、小さなローダープログラムが必要だったんだ。このプロジェクトはBASICODEって呼ばれてたよ。[1] https://en.wikipedia.org/wiki/BASICODE

PCの内蔵「カセットインターフェース」(ほとんど使われてなかった) え、ちょっと待って、何それ?なんで知らなかったんだろう。

おそらく、XTが出たときに取り除かれたからで、2年ちょっとの間だけあったんだよね。でも、いい交換だったと思う。カセットポートを取り除いたおかげで、PCBにISAスロットが3つ増やせるスペースができたし。

初期のPCが8ビットマシンにすごく近かったのが面白いよね。ROMにBASICがあって、カセットインターフェースもあったし。テレビを使うこともできたんだよ!

それ、16ビット以下の'80年代以前のMS-DOS前の家庭用コンピュータでは珍しくないよ。見た目はかっこいいけど、実際はめっちゃ遅くて、思い出すのも辛いって言われてるね。

ずっと昔は、マザーボードにシリアルポートが内蔵されてるのがラッキーだった。すべてが拡張カードだったからね。でも、テープドライブのインターフェースはあったよ。それはカセットプレーヤーに差し込むオーディオジャックみたいなもので、自分でテープをスタート・ストップしなきゃいけなかったけどね。

ヒント:録音を聴く前に音量を全部下げておいてね。聴いてるときにプログラムされてるんじゃないかって不安になったよ。プルリバスのウイルスの代わりみたいな感じ。

今はストレージがすごく進化してて、普通のユーザーには漏れのない抽象的な形で見えるよね。小さな長方形の形で、動く部分もなくて、ブロックを保存したり取り出したり、低遅延で高信頼性。昔のストレージはもっと「リアル」だった。遅いし、音がして、雑音のせいで劣化も目立ったし、複雑な機械部品があった。音だけで問題を見つけられたかも。

それでも、エンジニアリングの驚異だったよね。あのステッパーモーターから得られる精度と信頼性にはいつも驚かされてた。トラックのサイズを想像するのが楽しい思考実験だった。デスクの上にある128GBのSDカードは、1,000,000 x 1,000,000ピクセルの1ビットビットマップを保存できるんだよ。それをダイのサイズに縮小したら、各(論理的な)セルがどれだけ小さいか想像してみて。

音だけで問題を見つけることができるかも。そうそう、フロッピーに不良セクタがあるときは簡単に気づけたよね。ハードディスクも、音がうるさすぎて、断片化がひどくなったり、ディスクの調子が怪しくなったりするのがわかった。

レコードを買い始めてから気づいた、レコードの「リアル」な特徴の一つは、スリーブからレコードを取り出して溝を見れば、各面に何曲入ってるか、各曲の長さがわかるってこと。再生中にこの方法で曲を「スキップ」することもできるから、テープよりずっと便利だよ。

ああ、これを聞くと昔の「パーティートリック」を思い出すな。HDDのシーク音を聞いて、どのOSが動いてるか分かるって言ってたんだ。懐かしいなぁ。

聞くだけで問題が分かるかもしれない。あのZipドライブのことを思い出すと、今でもPTSDになりそうだ。データが消えていくのを無力に見守るしかなかったからね。

当時のストレージはもっと「リアル」だったよね。遅くて、音がして、ストレイ磁場の影響で明らかに劣化していったり、複雑な機械部品があったり。聞くだけで問題が分かることもあったし、データを保持するものを手動で操作することもあった。たくさんのスイッチやカード、大きなリール式テープに触れたことはないけど、家族の最初のコンピュータにはRadio Shackのカセットプレーヤーがあって、それを繋いでソフトを読み込んでたんだ。テープを入れて、必要なら巻き戻して、カセットプレーヤーの再生ボタンを押すのとプログラムを読み込むコマンドを入力するのを合わせるのが大変だったな。あの頃は本当に楽しかった!自分のプログラムもテープから録音して読み込めたし、録音と再生ボタンを同時に押して、キーボードでエンターを押すんだ。確かに最初のコンピュータにはカートリッジもあったけど、持ってたのはほんの少しだけだった。新しいソフトを手に入れるたびにクリスマスみたいな気分だったよ。Radio Shackや本屋からテープを買ったりしてね。だからプログラミングを始めたんだ。楽しかったし、自分が欲しい時に新しいソフトを手に入れる唯一の方法だったから。最初はマニュアルからプログラムを入力してたけど、すぐに自分で書くことを覚えたよ。その後5 1/4インチのフロッピーディスクドライブを手に入れた時は最高だった。特にAppleを手に入れて、他の人やお店、地元の大学、図書館からディスクを交換したりコピーしたりできるようになった時はね。モデムを手に入れても、データをどこかに保存しなきゃいけなかったから、フロッピーに保存してた。すべてが物理的で新鮮だった。ほんとに素晴らしかったよ。

DJをやってたことがあるから気になるんだけど、Qbertみたいな人に運転させながら読み込むと、どんなハッキングができるんだろう。ダイヤルアップ接続の音の一部は、接続速度を交渉することだったよね。今は、33 1/3、45、78の交渉が必要な高度な機能があったら面白いなって思ってる。

私のコレクションの中でお気に入りのレコードの一つは、8-Bit Construction Setの12インチ盤だよ。チップチューンと、アタリやC64のブート可能なトラックが入ってるんだ。