90年代の風にしてA/UX 1.1 をインストールする

2026/07/06 1:07

90年代の風にしてA/UX 1.1 をインストールする

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

現行のサマリーは機能するもののやや密度が高く、キーポイントリストに含まれる一部の詳細な技術的詳細(特にハードウェア制約、正確なメディアタイプ、ディスプレイカードのサポート)に触れていない。これを改善し、より明確にし、リストからすべての独自の点をカバーすることを確認する必要がある。

改善されたサマリー: 著者は、ドミニク・シャープによって新たにアーカイブされたメディアを使用して Snow エミュレータ上で A/UX 1.x(Apple の高エンド 68k ベース Mac 向けの UNIX バージョン)を正常に起動し、実行することに成功した(MMU/PMMU および FPU を必要とする)。インストールセットは、Tinker Different の討論から入手された 34 つの Floppy イメージで構成されている。起動可能なシステムを実現するために、著者は「Toby」ディスプレイカードに対するネイティブサポートを実装し、特定のインストールパスに従った:HD SC Setup によるパーティション割付け、最初に System 6 をインストールして SASH を実行し、それから 26 つのインストールディスクから OS を読み込む。このプロセスでは、2 つの重大なバグを修正する必要があった。1 つ目は

core/src/mac/adb/keyboard.rs
にあり、無効な ADB Talk 2 ロジックによる Modifier キーのフリーズ問題に対応し、もう 1 つは
core/src/mac/scsi/controller.rs
であり、カーネル起動時の NCR 5390 DMA フリーズ問題を解決した。テープドライブもドミニクに関連する歴史を持つ代替インストール方法を提供するが、現在の焦点はエミュレートされた 68k ベース Mac での円滑な動作の確認にある。このブレークスルーは Snow における「ピーク UNIX ゲーミング」の妥当性を検証し、A/UX 3.x が X11 および Myst などの現代ゲームをサポートするのに対し、限られたグラフィカルアプリケーション(Toolbox アプリ 3 つのみ)をサポートする初期のマルチユーザー環境への機能的な窓を提供する。

本文

A/UX 1.x の Snow エミュレーション環境で安定稼動に成功

最近、古き良しのマッキントッシュエミュレータ**「Snow」上でA/UX 1.x のブートと安定稼動**に成功しました。以下は、その過程における環境構築や解決した問題のまとめです。

A/UX と Snow エミュレータ

  • A/UXとは、Apple が 68k プロセッサ搭載の Macintosh 向けに提供した UNIX ベースの環境です。
  • 動作させるには以下のハードウェア構成が必須でした。
    • メモリー管理ユニット(MMU):プロセス間の隔離のため必要。
      • 元 II シリーズ:オプションの68851 PMMUまたは統合型 MMU。
      • Quadra など:標準搭載の統合型 MMU。
    • 浮動小数点演算ユニット(FPU)
  • 対応機種:
    • ✅ Macintosh II シリーズ
    • ✅ Quadra シリーズ
    • ❌ LC シリーズ(非対応)

情報源と入手経路

  • 情報源: A/UX Penelopeは互性情報の有益なリソースです。
  • 入手経路:
    • 交流していた Dominic Sharp 氏より、公開アーカイブ用のセットを共有いただきました。
    • このセットは「disc status」に確信が持てないため、非公開で共有されていました。
  • 現状の確認:
    • A/UX 1.1 のソフトウェア自体の公開アーカイブ例は存在せず、Snow でも動作していなかった(不具合のある)1.1.1 のみでした。

初期環境の整備

  • ディスク構成:
    • 34 枚分の800KB GCR フォーマットフロッピーディスクイメージ
    • Applesauce
      を使用し、RAW ドアイメージに変換しました。
  • ハードウェア要件:
    • Snow は CPU、FPU、PMMU を全てエミュレートしています。
    • A/UX 1.x はビデオハードウェアに非常に厳しく、サポート状況が不明確でした。
  • 実装対応:
    • A/UX Penelope に記載の「Toby」(マッキントッシュ II のビデオカード)をネイティブサポートとして追加しました。

インストール手順(第 1 ページ:ディスクからの起動)

パーティション分割

  • ツール:
    HD SC Setup
    を使用。
  • テンプレートレイアウトが含まれており、直感的に進められます。

システム 6 と SASH の導入

  1. 「システム設定と README」ディスクから開始。
  2. 逆説的ですが、まず Mac パーティションに**Macintosh System 6(最小限)**をインストール。
    • 理由:A/UX ブート用のアプリケーション「SASH(スタンドアロンシェル)」が必須のため。
    • SASH は A/UX カーネル起動、ディスク操作などを可能にします。
  3. 「SASH and utilities」ディスクの内容を新規先へコピー。

A/UX の初期設定

  • **「Floppy Launch」**ディスクからブートし自動的に対応開始:
    1. SASH を起動。
    2. A/UX カーネルを起動。
    3. 「Floppy Root」ディスクを読み出し。
  1. フォーマットとコピー:
    • A/UX パーティションのフォーマット。
    • ブートローダとなるシステムのコピー。

問題解決:ADB キーボード実装

  • 現象: 無効な
    ADB Talk 2
    実装により、変修鍵(Modifier keys)が固定された問題が発生。
  • 対応策: キー状態のロジックを反転させるコード修正を行いました。
--- a/core/src/mac/adb/keyboard.rs
+++ b/core/src/mac/adb/keyboard.rs
@@ -140,29 +146,34 @@ impl AdbDevice for AdbKeyboard {
                 response
             }
             2 => AdbDeviceResponse::from_iter(
-                AdbKeyboardReg2::default()
+                // Register 2 のキー・変修ビットは ACTIVE LOW (低電位で有効) です。
+                AdbKeyboardReg2(0xFFFF)
+                    // LED ステータスビット(0..2)はホスト制御であり、active-high です。
                     .with_led_numlock(self.keystate[SC_NUMLOCK as usize])
                     .with_led_capslock(self.capslock)
                     .with_led_scrolllock(self.keystate[SC_SCROLLOCK as usize])
-                    .with_numlock(self.keystate[SC_NUMLOCK as usize])
-                    .with_capslock(self.capslock)
-                    .with_scrolllock(self.keystate[SC_SCROLLOCK as usize])
-                    .with_cmd(self.keystate[SC_COMMAND as usize])
+                    // NUM, CAPS, SCROLL, CMD など、状態は反転して出力します。
+                    .with_numlock(!self.keystate[SC_NUMLOCK as usize])
+                    .with_capslock(!self.capslock)
+                    .with_scrolllock(!self.keystate[SC_SCROLLOCK as usize])
+                    .with_cmd(!self.keystate[SC_COMMAND as usize])
                     .with_control(
-                        self.keystate[SC_LCTRL as usize] || self.keystate[SC_RCTRL as usize],
+                        !(self.keystate[SC_LCTRL as usize] || self.keystate[SC_RCTRL as usize]),
                     )
                     .with_option(
-                        self.keystate[SC_LOPTION as usize] || self.keystate[SC_ROPTION as usize],
+                        !(self.keystate[SC_LOPTION as usize] || self.keystate[SC_ROPTION as usize]),
                     )
-                    .with_delete(self.keystate[SC_DELETE as usize])
+                    // Shift キーの状態も同様に反転処理します。
+                    .with_shift(
+                        !(self.keystate[SC_LSHIFT as usize] || self.keystate[SC_RSHIFT as usize]),
+                    )
+                    // Delete キーも同様です。
+                    .with_delete(!self.keystate[SC_DELETE as usize])
                     .to_be_bytes(),
             ),
             3 => AdbDeviceResponse::from_iter(
                 AdbReg3::default()
                     .with_exceptional(true)
                     .with_srq(true)
-                    .with_address(Self::INITIAL_ADDRESS)
-                    .with_handler_id(2) // Apple Extended Keyboard M0115
+                    .with_address(self.address)
+                    .with_handler_id(self.handler_id)
                     .to_be_bytes(),
             ),

インストール手順(第 2 ページ:ハードディスクからの起動)

SCSI コントローラーの修正

  • 現象: カーネル起動時に NCR 5390 コントローラーの 'DMA end'ビット待機でフリーズ
  • 対応策: DMA モードも考慮してフラグを正しく計算するコードに修正。
--- a/core/src/mac/scsi/controller.rs
+++ b/core/src/mac/scsi/controller.rs
@@ -771,10 +771,13 @@ impl BusMember<Address> for ScsiController {
             NcrReadReg::BSR => Some(
                 self.reg_bsr
                     .with_dma_req(self.get_drq())
-                    .with_dma_end(!matches!(
-                        self.busphase,
-                        ScsiBusPhase::DataIn | ScsiBusPhase::DataOut,
-                    ))
+                    // DMA 終了フラグを正しく計算するために、現在のモードも考慮します。
+                    .with_dma_end(
+                        self.reg_mr.dma_mode()
+                            && !matches!(
+                                self.busphase,
+                                ScsiBusPhase::DataIn | ScsiBusPhase::DataOut,
+                            ),
+                    )
                     .with_phase_match(self.phase_match())
                     .0,
             ),

ディスクのインストール

  • 「Installation Disks」 26 枚を処理(時間がかかります)。
  • 代替手段:
    • テープドライブを持つ場合はテープからのインストールが可能(フロッピー交換不要)。
    • Dominic のコレクションにテープが含まれています。
    • 将来的には Snow にApple 40SC テープドライブを追加し、テープからのインストールも実現可能です。

インストール完了と検証

  • 26 枚目のディスク読み終えたら再起動。
  • ハードディスク上の SASH から最終的な A/UX インストールが完了。
  • UNIX ゲームで成果を祝い、滑らかな動作を確認しました。

グラフィカルインターフェースについて

A/UX 1.x はグラフィカルな側面を持っていますか?

  • X11 アプリケーション: サポートしています(Myst などを以前実行した経験あり)。
  • Toolbox GUI:
    • init 2
      でマルチユーザモードへ移行すると動作可能。
    • 利用可能なアプリケーションは3 つのみです。

おわりに

  • Dominic 氏にディスクを共有いただいたことに心から感謝します。
  • これらのディスクは、将来的に公開アーカイブされる予定です。

同じ日のほかのニュース

一覧に戻る →

2026/07/06 6:03

Open プリンター

## Japanese Translation: Openprinter は、印刷技術における大きな転換点であり、コンパクトな耐久性と完全な修理可能性、そしてコスト削減および電子廃棄物削減を実現するオープンソースアーキテクチャを統合しています。Raspberry Pi Zero W および STM32 カートリッジ基板といった標準コンポーネントを基盤として構築されており、制限的な DRM を排除しつつ、Wi-Fi、Bluetooth、または USB を介して Windows、macOS、Linux、Android、iOS などの複数のオペレーティングシステムに対応します。このデバイスは高い汎用性を備えており、A4、A3、Letter の標準用紙、長さ 37.5m までのロール、バナーのようなカスタムフォーマットを処理でき、壁取付または机置き(統合されたカッターにより多様な構成が可能)に対応します。ユーザーは、特定の HP カートリッジ(地域によりモデルが異なる)に互換性のある再利用可能な Inkit ボトルを採用する低コストな消耗品戦略から恩恵を受け、モノクロ印刷においてすべての色が不要であっても、600〜1200 dpi の高品質出力を実現します。配布は Crowdsupply 上のクラウドソーシングモデルを通じて行われ、即席で使用できるユニットまたは組立キットが提供されます。さらに、該装置は電話アプリを介して HD ドキュメントキャプチャを含むスキャン機能を統合しています。結局のところ、このアプローチは個々に低価格な技術と統合されたスキャン機能を提供し、持続可能性を促進します。その成否は現在のキャンペーンにおける消費者の採用に依存し、印刷が引き続きアクセス可能な長期的な未来を約束しています。クリエイティブ・コモンズライセンスの下で配布され特許によって保護されている本プロジェクトは、倫理的利用を保証しつつ開示性を維持します。

2026/07/05 23:14

オーガニックマップ

## Japanese Translation: Organic Maps は、MapsWithMe および Maps.Me の背後にあるオープンソースコミュニティによって開発された、ハイキング、自転車走行、車での移動、地下鉄利用のための優れた無料オフラインファーストナビゲーションアプリです。完全におープンストリートマップのデータを動力源とし、アクティブなインターネット接続を必要とせず、かつデータを送信することなく、詳細なオフライン地図、曲がりくねるポイントごとの音声ガイダンス、等高線、高低差プロファイル、Wikipedia アーティクルを含むすべての機能を提供します。本アプリは、ゼロ広告、トラッカー、データ収集、強制登録、「ホームへ連絡」のない厳格なプライバシー設計で際立っており、これらは Exodus Privacy Project および iOS 用の TrackerControl による独立した監査によって検証されています。小さなフットプリントを持ち、1 つのバッテリー充電で 1 週間持つことができ、インターネットなしで機能の 100% をサポートするため、遠隔地域に最適です。Android、iOS、Linux(Flatpak/パッケージ)、Huawei AppGallery、Obtainium、Accrescent、F-Droid で利用可能で、Apache License 2.0 の下で動作し、寄付を通じて開発をサポートすることを可能にするコミュニティ主導のインディーズプロジェクトを育んでいます。本アプリは積極的にグローバルな参加者を招待しており、ベータテストプログラム(iOS 用の TestFlight、Android/Firebase/Flatpak/Linux デスクトップ用)を提供し、問題トラッカー、メール、Telegram、Matrix スペース、GitHub、Bluesky、FOSStodon などのソーシャルメディアプラットフォームなど複数のチャネルを通じてバグ報告、機能リクエスト、アップデートを提供しています。母語が多種類ある地元のコミュニティから支援され、専用の Matrix チャットおよび Telegram グループを通じてサポートされている Organic Maps は、ユーザーに世界を自由に探求できるようにすると同時に、監視慣行を拒否します。

2026/07/06 6:32

Show HN:自宅で作ってきたオープンソースゲームプラットフォーム「Homegames」

## Japanese Translation: Homegames は、アカウントを作成することもなくソフトウェアをインストールすることなく、ユーザーがゲームを楽しみ、作成し、共有できるブラウザベースのプラットフォームです。開発者は簡単なインブレーズアエディターを使用してコードを書き、ライブプレビューを確認しながら変更を即時テストし、マルチプレイヤーセッションを直接実行できます。資産管理は標準機能として搭載されており、ユーザーはファイルをアップロードするか、スタジオ内でコンテンツを描画または記録することもできます。ゲームはユーザーの好みに合わせて公開publishするか、プライベートに保つことが可能です。2018 年以来、GPLv3 ライセンスの下でオープンソースシステムとして構築され、単一サイドプロジェクトとして展開されてきた Homegames は、プラットフォーム全体とその API を個人ハードウェア上でのセルフホスティングを可能にし、元のサイトがオフラインになった場合でも長期的な保存を保証します。第三者サーバーへの依存を排除することで、Homegames はインディペンデント開発者に対する障壁を低下させ、プラットフォームの不安定さから創造的作業を守るための頑丈なインフラストラクチャを提供しています。

90年代の風にしてA/UX 1.1 をインストールする | そっか~ニュース