2020-03-09 23:26 — asano
今日は「最近のお買い物」シリーズの番外編として「6502とApple IIシステムROMの秘密」を取り上げてみたいと思います。
これUniMon 6502書く前に読みたかったなぁと思いながら購入したもの、昨日やっと読み終わりました。内容はタイトルの通り、6502プロセッサ自体についてとそれを搭載した往年の名機Apple IIについてです。分量的には2:3といったところでしょうか。
前半の6502については最近動かしたばかりということもありサクサク読み進めていきました。これまで主に英文データシートとウェブ上の情報(これは和文も)を元に理解していたものを、確認しながらといった感じです。アドレス計算の繰上りなど一部誤解していたところはありましたが...
後半はいよいよApple IIです。
まずはハードウェアの概要、技術的なことはほとんど知らなかったので「へ~」と思うことしきりでした。
- 文字コード
てっきり普通のアスキーコードだと思っていたのですが、反転・点滅のアトリビュートも含んでいます。 - VRAM構造
アドレスの並び方が変わっていたり、高解像度グラフィック時に1バイトで7ドットを表しているとかなどです。 - キーボード
文字コードを直接発生させます。ソフトウェアはUARTにターミナルをつないだ場合と同程度ですみます。
これ富士通のFM-8,FM-7なんかと同じ欠点を持っているように思いますが、ゲームはジョイスティック・パドルを使うと割り切っているのかもしれません。 - 出力ポート
特定のアドレスにアクセスすることによってセット・リセットする形式のものが多用されています。PC-8001mk2, PC-8801のGVRAMのバンク切り替えと同じようなものです。
メモリ空間の利用効率は下がりますが、ソフトウェアからのビット操作は楽になります。
以上を踏まえてシステムROM(リファレンスにソースが公開されているモニタ部分)の一部ルーチンについて逆アセンブルをもとに解説されています。
低解像度グラフィックスでの点・水平線・垂直線の描画、パドル読み込み、ベル、1文字入出力などが出てきます。紙面の都合もあるのでしょうが、10行そこそこで実現されているルーチンが多いですね。
ハードウェア制御ソフトウェアの経験者なら読んでもらえばわかると思いますが、ハードウェアとソフトウェアを合わせてトータルでの効率化が行われています。一人の天才が設計したからこそできたのでしょうね。
いまどきの分業体制では大規模なものができるようになった反面、こういう高密度な設計は難しくなったように思えます。
最後にモニタのコマンド解説が出てきます。
この本はもちろんApple IIのすべてを網羅しているわけではありません。VRAMのアドレス計算・高解像度グラフィックス関係・モニタのステップ実行など触れられていない部分にも興味がわいてきます。特に何かの役に立つわけではないでしょうが、機会があったら読んでみたいですね。
コメント
Apple II Reference Manual
英語ですけど、Appleの_Apple II Reference Manual_っていう本はとても良いです。私は毎日使います。archive.orgにスキャンがあります:https://archive.org/details/Apple_II_Reference_Manual_1979_Apple
Re: Apple II Reference Manual
ありがとうございます。
モニタのソースだけではなく回路図も載っていますね。
回廊図
そうですね。でも、スキャンに回廊図は悪く見えるかもしれないですね。実際の本を見たいなら、meetupに来てください!https://monochromeeffect.org/TRCU/
コメントを追加