ZX Spectrum の巧妙なハードウェアハックが明らかに:故障したメモリチップと抵抗器のトリックがコンピュータ史を作った方法

BigGo 編集部
ZX Spectrum の巧妙なハードウェアハックが明らかに:故障したメモリチップと抵抗器のトリックがコンピュータ史を作った方法

1980年代初頭の質素な8ビットコンピュータである ZX Spectrum は、発売から数十年経った今でも、プログラマーやハードウェア愛好家を魅了し続けている。この機械を真に注目すべきものにしているのは、コンピュータ史への影響だけでなく、そもそもそれを可能にした巧妙なコスト削減ハックなのである。

レトロコンピューティングコミュニティでの最近の議論により、史上最も影響力のあるホームコンピュータの一つを作り上げるために行われた並外れたエンジニアリング決定に光が当てられている。これらは洗練されたソリューションではなかった。必要性と予算制約から生まれた素晴らしい回避策だったのである。

ZX Spectrum のデザインにインスパイアされたレトロコンピューティングにおける創造性とドキュメンテーションを象徴する、「PAPER」と書いている鉛筆を持つ手
ZX Spectrum のデザインにインスパイアされたレトロコンピューティングにおける創造性とドキュメンテーションを象徴する、「PAPER」と書いている鉛筆を持つ手

故障メモリチップ戦略

おそらく最も大胆なハックは、 Sinclair のメモリ調達アプローチだった。48K Spectrum は実際には96KBの物理メモリを搭載していたが、その半分は意図的に機能しないものだった。 Sinclair は欠陥のあるメモリチップを大幅に割引された価格で購入し、その後、上位32KBセクションか下位32KBセクションのどちらが動作するかに基づいてそれらを分類した。

各マシンには動作するメモリ領域を選択するジャンパーが付いていた。このアプローチにより、 Sinclair は他のメーカーなら廃棄していたであろう故障部品を使用でき、約束された48KBの使用可能な RAM を提供しながらコストを劇的に削減できた。

ZX Spectrum 48K メモリ構成:

  • 総物理メモリ: 96KB
  • 使用可能 RAM : 48KB(32KB作業用 + 16KBシステム用)
  • ROM : 16KB( BASIC インタープリター)
  • 非機能メモリ: 32KB(意図的に未使用の不良チップ)
  • ジャンパー選択可能メモリ領域(上位または下位32KB)

CPU とグラフィックスチップのメモリアクセス争奪戦

Z80 プロセッサと ULA グラフィックスチップの関係は、もう一つの魅力的なハックを明らかにしている。メモリアクセスを管理するために高価なマルチプレクサを使用する代わりに、 Sinclair は単純に両方のアドレスバスを抵抗器を通して接続した。両方のチップが同時にメモリにアクセスしようとすると、 ULA が Z80 の信号を圧倒するのである。

グラフィックスチップは CPU のクロックを停止し、メモリ操作を実行してから、制御をプロセッサに戻す。これにより、特定のメモリ領域、特にフレームバッファへのアクセスが目に見えて遅くなるシステムが作られたが、それは機能し、コストを抑えることができた。

ハードウェアアーキテクチャの詳細:

  • CPU: Zilog Z80 プロセッサ
  • グラフィックス: ULA (Uncommitted Logic Array)チップ
  • メモリチップ: 4116 DRAM (16,384 × 1ビット、128×128として構成)
  • メモリアクセス: 抵抗ベースのアドレスバス共有
  • クロック管理: ULA はメモリ競合時に Z80 クロックを停止可能

奇妙な画面メモリレイアウト

ZX Spectrum の奇妙な画面メモリ構成は任意のものではなかった。それは4116 DRAM チップの制限を中心に設計されていた。これらのチップは、行と列のアドレスを順次クロックインする必要があったが、同じ行内での連続アクセスに対して高速ページモードを提供していた。

蛇行するメモリレイアウトは、新しい行アドレスの必要性を最小限に抑え、ハードウェアの自然なアクセスパターンに最適化していた。これが、グラフィックスの描画に単純な線形メモリアクセスではなく、複雑なアドレス計算が必要だった理由を説明している。

画面メモリ構成:

  • 解像度: 256×192ピクセル
  • 文字グリッド: 8×8ピクセルの32×24ブロック
  • メモリレイアウト: 8行グループでの蛇行配置
  • 色制限: 8×8ピクセルブロックあたり1つのインク色+1つのペーパー色
  • フレームバッファサイズ: 約7KB
メモリシステムにおけるピクセルアドレッシングを説明する手描きの図で、 ZX Spectrum のスクリーンメモリの独特な構成を強調している
メモリシステムにおけるピクセルアドレッシングを説明する手描きの図で、 ZX Spectrum のスクリーンメモリの独特な構成を強調している

高度なプログラミングトリック

熟練したプログラマーは、ハードウェアを見かけの限界を超えて押し上げる方法を発見した。人気のあるテクニックの一つは、水平ブランキング間隔中に色属性を変更するために ULA と同期することだった。これにより、標準的な8x8ピクセルあたり1パレットの制限が示唆するよりもカラフルなディスプレイが可能になった。

「ULA と同期することで、各水平ブランキング間隔で属性行を上書きできた。もちろん、サイクルに余裕があるのは、他に何もしていない時だけだった。」

同様のトリックで、カラフルなボーダー効果を作ることができ、プログラマーは画面リフレッシュサイクル中の色変更を慎重にタイミングを合わせることで静的なストライプを描いていた。

制約駆動型イノベーションの遺産

ZX Spectrum の成功は、ヨーロッパ全体の世代にコンピューティングをアクセシブルにしたことから生まれた。これらのハードウェアハックによって達成された低コストは、より高価な代替品を買う余裕のない家庭にコンピュータをもたらした。

現代の開発者たちは、そのシンプルさと制限が提示する創造的な挑戦に惹かれて、このプラットフォーム向けのソフトウェアを作り続けている。このマシンのアーキテクチャは、単一のプログラマーによって完全に理解可能だった。これは今日の複雑なシステムとは対照的である。

現代の基準では粗野に見えるかもしれないこれらのハードウェア妥協は、極端な制約下でのエンジニアリングのマスタークラスを表している。それらは、創造的な問題解決と型破りなソリューションを受け入れる意欲が、故障した部品から作られ、巧妙なハックで結束された製品であっても、あるいはそれゆえに、世界を変える製品を作り出すことができることを実証している。

参考: ZX Spectrum Graphics Magic: The Basics Every Spectrum Fan Should Know