Skip to content

ponzu0147/PC88iOS

Repository files navigation

PC88iOS

PC88iOS は、iOS デバイス上で動作する PC-88 エミュレータです。このプロジェクトは、PC-88 の機能を iOS 環境で再現することを目的としています。

開発環境

  • Xcode 15.0+
  • iOS 18.2+
  • Swift 5.9+

プロジェクト構成

  • App: アプリケーションのエントリーポイントと設定
  • Assets.xcassets: 画像やアイコンなどのアセット
  • Common: 共通ユーティリティやヘルパー
  • Core: エミュレータのコア機能
    • CPU: CPU エミュレーション
    • Disk: ディスク関連処理(ALPHA-MINI-DOS など)
    • Memory: メモリ管理
    • Screen: 画面表示関連
    • Sound: 音声関連
  • UI: ユーザーインターフェース関連のコード
  • Resources: リソースファイル
  • Tests: テストファイル

SwiftLint の設定

このプロジェクトでは、コード品質とスタイルの一貫性を確保するために SwiftLint を使用しています。

インストール方法

brew install swiftlint

設定ファイル

.swiftlint.yml ファイルがプロジェクトのルートディレクトリに配置されています。この設定ファイルには、プロジェクト固有のコーディング規約が定義されています。

主な設定内容:

  • 行の長さ: 120文字(警告)、150文字(エラー)
  • 関数の長さ: 60行(警告)、100行(エラー)
  • 型の長さ: 300行(警告)、500行(エラー)
  • ファイルの長さ: 500行(警告)、1000行(エラー)
  • カスタムルール: 直接の print() の使用を避けるなど

ビルド時の自動実行

SwiftLint はビルド時に自動的に実行されます。コーディング規約に違反するコードがあれば、Xcode の警告やエラーとして表示されます。

手動実行

cd /path/to/PC88iOS
swiftlint

ALPHA-MINI-DOS の読み込み

このプロジェクトでは、ALPHA-MINI-DOS の読み込みと実行をサポートしています。

  • AlphaMiniDosLoader: ALPHA-MINI-DOS を専用に読み込むためのクラス
    • ディスクイメージから直接 IPL と OS を抽出する機能
    • メモリへのロードと実行開始アドレスの設定
    • 主要な定数:
      • IPL ロード先アドレス: 0x8000
      • OS ロード先アドレス: 0x0100
      • OS 実行開始アドレス: 0x0100

D88 フォーマットの詳細仕様

D88 フォーマットは以下の構造を持っています:

  1. ヘッダ部(0x2b0バイト):

    • 0x00-0x10: ディスク名(ASCII + '\0')
    • 0x11-0x19: リザーブ(0x00)
    • 0x1a: ライトプロテクト(0x00=なし、0x10=あり)
    • 0x1b: ディスクタイプ(0x00=2D、0x10=2DD、0x20=2HD)
    • 0x1c-0x1f: ディスクサイズ(リトルエンディアン)
    • 0x20-0x2af: トラックオフセットテーブル(164トラック分、各4バイト、リトルエンディアン)
  2. セクタ部:

    • 0x00: ID C(シリンダ番号)
    • 0x01: ID H(ヘッド番号)
    • 0x02: ID R(レコード番号/セクタ番号)
    • 0x03: ID N(セクタサイズコード)
    • 0x04-0x05: トラック内のセクタ数(リトルエンディアン)
    • 0x06: 記録密度(0x00=倍密度、0x40=単密度)
    • 0x07: DELETED MARK(0x00=ノーマル、0x10=DELETED)
    • 0x08: ステータス(0x00=正常、0x10=正常(DELETED)、0xa0=ID CRCエラー、0xb0=データCRCエラー、0xe0=アドレスマークなし、0xf0=データマークなし)
    • 0x09-0x0d: リザーブ
    • 0x0e-0x0f: セクタデータサイズ(リトルエンディアン)
    • 0x10-: セクタデータ

ライセンス

このプロジェクトは MIT ライセンスの下で公開されています。詳細については LICENSE ファイルを参照してください。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages