• Windows after Windows

最初のWindowsは1985年に登場したWindows 1.01(写真01)である。当時の「最新マシン」は、IBM PC/ATでCPUは80286(最大クロックは12 MHz)であった。現在のx86アーキテクチャの始まりとなった32 bitプロセッサ80386は翌年に発表されている。このため、Windows 1.01は、16 bitプロセッサである8086/8088を対象にせざるを得なかった。8086/8088は、メモリ空間最大1メガバイト、クロック周波数は最大10 MHz(メガヘルツ)であった。あくまでもこれはCPUの最大スペックで、市場には、クロックがMHzの8086を使った製品も少なくなかった。もちろん、30年以上も前のCPUなので、投機実行もスーパースケーラーもなく、命令を数クロックサイクルかけて実行していた。

  • 写真01: Windows 11でQEMUを動かし、MS-DOSとWindowsをインストールした。Windows Ver.1.04では、画面を分割して複数のアプリケーションを表示できる。8色表示だったためウィンドウ内の領域を色分けしようとすると色使いが派手にならざるを得ず、ちょっと品のない感じがある

また、ビデオカードは、CGAやVGAであり、描画機能などはなく、画面描画はひたすらCPUが行う必要があった。このため、最初のWindows 1.0xでは、画面を分割して使う「タイリングウィンドウ」を利用していた。

Windows 1.0xは、厳密にいうとオペレーティングシステムではなく、シングルタスクのMS-DOSの上で動く「アプリケーション」だった。当時のWindowsアプリケーションは、C言語で開発することができたが、WinMainという特殊な関数をコンパイルしたもの。実行ファイルの形態にはなっているが、実際には、Windowsから呼び出されるサブルーチンのようなものだった。

もちろん、タイマー割り込みでタスクを切り替える「プリエンプティブ」なマルチタスクではなく、WindowsのAPI呼び出しのタイミングで、タスクを切り替える「ノンプリエンプティブ」(協調的マルチタスクともいう)であった。

1987年になるとWindows/386とWindows Ver.2.01が登場する(写真02)。Windows/386は、Windows Ver.2.01の386 CPU専用バージョンで1メガバイトを越えるメモリを扱うことができた。これに対してWindows Ver.2.01は、80286用とされていたが、8086/8088 CPUでも動作することが可能だった。このバージョンは、のちにWindows/286と呼ばれるようになる。Windowsの名前とバージョンが一致しないのは、このあたりからである。

  • 写真02: Window/386であるWindows Ver.2.11は、オーバーラップウィンドウとなったが、アプリケーションの構造などはWindows 1.xと同じ。QEMU内で安定して動かせなかったため、画面写真がシンプルなものになってしまった

Windows/386やVer.2.01は、高性能(当時)のCPUを前提としたため、ウィンドウ同士を重ねることができるオーバーラップウィンドウを実現した。実際には、オーバーラップウィンドウは、Windows 1.0xでもアプリケーションが指定すれば表示可能だったのだが、そもそも、サードパーティ・アプリケーションはほとんどなく、アプリはWindows付属のものしかなく、これらはデフォルトのタイリングウィンドウで動くようになっていた。

Windows/286、386の最大の特徴は、メモリ空間の拡大である。Windows 286ではExpanded Memory Specification(EMS)を使う。これは、バンク切り替えによるメモリ領域の拡張方法である。Windows/386では、386 CPUの物理メモリ空間を利用できるようになっていた。これは、EMSに対してExtended Memoryと呼ばれていた。これらの仕組みにより、640キロバイトに制限さされていたメモリ領域が広がり、より多くのアプリケーションを実行できるようになる。ただし、基本的な部分では、Windows/286、386は、Windows Ver.1.xと同じままだった。より多くのメモリを利用できるようになったため、当時まだ使われていたLotus 1-2-3のようなMS-DOSアプリケーションを動作させる環境として使われることが多かった。1988年になるとVer.2.1が登場Excelが利用可能になったが、世間的には、まだMS-DOS上のアプリケーションが主流だった。Windowsが広く世間に認知されるのは、1990年のWindows 3.0(写真03)から。Windows 3.0は、内部的には386 CPUの32 bitプロテクトモードを使っていたが、アプリケーションは16 bitコードであったため、ここまでが16 bit時代のWindowsである。

  • 写真03: Windows 3.0は、8086/8088 CPU用の「リアルモード」、80286以上のCPUで利用可能な「スタンダードモード」(80286から搭載されたプロテクトモードを利用)、80386の32 bitプロテクトモードや仮想86モードを使う「エンハンスモード」を持つが、アプリケーションは16 bitコードのものを使う

今回のタイトルネタは、1979年の映画「Time After Time」である。The Time Machine(1895)の著者H.G.Wellsをタイムマシンの発明者とし、切り裂きジャックを絡めたタイムトラベル物である。映画の名作リストなどにはほとんど登場しない作品だが筆者の好みの作品。