6502とApple IIシステムROMの秘密 6502機械語プログラミングの愉しみ
ラトルズ
著者:柴田文彦
はじめに
第1章 6502とApple II
1-1 6502とApple IIの親密な関係
どうしてもマイナーなマイクロプロセッサー
狙ったのはマイクロプロセッサーの価格破壊!?
ミニマリストのプロセッサー
6502に依存しているApple IIの設計
6502を採用した初期の製品
6502を採用した製品の発展
1-2 現在の6502に関する活動
6502をリバースエンジニアリング
6502を巨大なハードウェアで再現
1-3 エミュレーターで蘇る6502とApple II
いろいろなApple IIエミュレーター
Apple II jsの使い方
第2章 6502誕生の背景
2-1 インテルが作ったマイクロプロセッサーの基礎
汎用8ビットマイクロプロセッサー登場前夜
8ビットマイクロプロセッサーの時代へ
2-2 最初から汎用8ビットプロセッサーに的を絞ったモトローラ
インテルの80系に対抗しうるモトローラの68系
2-3 モトローラからMOS Technologyへ
6800をとことん簡略化して低コストを目指す
6501と6502の誕生
モトローラによる訴訟と和解
第3章 6800との比較で明確になる6502の開発意図
3-1 6800と共通性の高いピンアサイン
ハードウェア的には互換性があった6800と6501
6800とかなりの共通性を残した6502のピンアサイン
似て非なる6800と6502のクロック信号
3-2 開発意図を反映した6502のレジスター構成
大きなくくりでは6800と一致する6502のレジスター構成
極限まで簡略化した6502のレジスター
3-3 このクラスには不似合いなほど強力なアドレッシングモード
CPUの「アドレッシングモード」とは?
アキュムレーターモード
イミーディエイト
アブソリュート
ゼロページ
インデックスト・アブソリュート
インデックスト・ゼロページ
インダイレクト
インデックスト・インダイレクト
インダイレクト・インデックスト
リラティブ
インプライド
第4章 6502のインストラクションセット
4-1 8×8のマトリクスで見るインストラクション一覧
1バイトに軽く収まる全命令語
命令コードの中で命令の種類を表すビットパターン
命令コードの中でアドレッシングモードを表すビットパターン
4-2 アルファベット順インストラクション解説
6502インストラクションセット一覧の見方
ニーモニック解説
第5章 Apple IIのハードウェア概要
5-1 Apple IIの機能ブロック
ゲーム専用機のない時代にゲームマシンとしての性格も獲得
CPUとビデオが対等に動作するアーキテクチャ
3つの画面モードを切り替える、もう1つのマルチプレクサ
5-2 Apple IIのメモリマップ
全メモリ空間=64KBの割り振り方
3種類のRAM容量の構成
RAMのさまざまな用途
5-3 Apple IIのグラフィック機能
3種類×2+αのビデオモード
画面モードの切り替え
カラーキラーとボードのレビジョン
テキストモード
画面表示用文字コード
低解像度グラフィック
高解像度グラフィック画面の変態的なアドレス構成
モノクロのメモリ容量で6色を出す秘密
高解像度グラフィックの注意点
5-4 Apple IIの内臓I/O機能
キーボード入力
カセット入出力/スピーカー出力
パドル入力
アナンシエータ出力
5-5 Apple IIの拡張スロットの仕組み
独自の拡張バスを装備
スロットごとに割り振られたI/Oアドレス
スロットごとのプログラムROMのアドレスと共通ROM空間
第6章 Apple IIファームウェア詳解
6-1 システムモニターだけではないROM領域マップ
Apple IIとApple II plus
オプションのProgrammer’s Aid #1
6-2 BASICだけではない6KBASICのROMの中身
6K BASICのROMに潜む3つの驚き
ミニアセンブラー
浮動小数点演算ルーチン
仮想16ビットCPUインタープリターSweet 16
6-3 超高密度モニターROMの中身
モニターROMの利用マップ
モニターROMによるゼロページ利用マップ
モニターROMのエントリーポイント
第7章 Apple II モニターコマンド
7-1 システムモニターコマンドの使い方
モニターへの入り方
モニターコマンドを使う
7-2 ちょっと特殊なモニター操作
複数コマンドの連続実行
簡易計算機能
入出力のリダイレクト設定
コントロールキーによる操作
7-3 6K BASIC ROMに滑り込ませたミニアセンブラー
ミニアセンブラーの起動
ミニアセンブラーの入力フォーマット
モニターコマンドの実行
索引
コラム
エンディアン
2つの「モステック」?
セカンドソース
キャリーフラグを含まない加減算命令を持たない6502
6809が拡張した「ダイレクト(ゼロページ)モード」
NOP命令が必要なわけ
デシマルモードでの足し算、引き算
Z80を採用したPC-8001の実行クロック周波数
「64KBクリーン」を実現する「ランゲージカード」
シフトキーの機能を「拡張」する「Shift-Key Mod」
Apple IIを他のCPUにすげ替えることさえ可能なフレキシブルな設計
ファームウェアとして世界初のビジュアル・エフェクトを実装した画面クリアルーチン