パスワードを忘れた? アカウント作成
147517 journal
スラド

L.Entisの日記: Z80 7

日記 by L.Entis
昔のことだし、私が機械語をいじくり倒すようになったのは 386 以降だったというのもあって、うろ覚えなのですが、子供のときに父が友人から安く貰ってきた初代 X1 の Z80 は、レジスタを使った out 命令は bc レジスタでアドレッシングするのだったのに対して、高校のときに学校で買わされたポケコンの Z80 の out 命令は b レジスタでした。
命令コードは同じで。

X1 はポートのアドレスが16ビットで、実質128kByteのメモリ空間(といってもポートのほうはVRAM中心だけど)が扱えるってのが売りだったと思うので、X1 の Z80 が特殊なのかと思っていたのですが、よくよく考えると、同時代のほかのパソコン(マイコン)のグラフィック制御ってどうなってたんだろうと、少し疑問になってきた。
普通の I/O を考えると、ポート(コントローラー)にVRAMのアドレス書き込んでから、データを out/in?

GDC が、PC-9801 で画期的だったってことを考えると、それ以前にグラフィック処理用のチップが乗っかってるとは思えないし(グラフィックチップに対して命令を発行するのではなく、CPU側から直接VRAMへの制御をするしかなかっただろうし…)

あとは、バンク切り替え?
狭っ!

(ポケコンのメモリは32kByteで、後半はROMとかのバンク切り替えになっていたような)
(ワイヤーフレームの3DダンジョンRPGをポケコンで作ろうとしたのはいいけど、容量が足りなくて、頑張って削ってなんとか完成させた覚えが…w)
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Motohiko (15295) on 2009年09月29日 19時15分 (#1645911) ホームページ

    前者はZ80の隠し仕様をX1のハードウェアが前提にしていただけです。Z80のI/Oポートは8ビット分しかなく、直接アドレッシング OUT (nn),Aでは8ビット分しか指定できませんが、Cレジスタ (Bじゃないですよ) での間接アドレッシング OUT (C),A では、アドレスバスの上位にBレジスタの内容が出力され、実質的に OUT (BC),A として扱えることを利用していました。
    # だからX1ではBレジスタをカウンタとして使うOTDRなんかは事実上使えなかった。

    あとはうろおぼえですが、メモリマップドI/O (バンク切り替え) でVRAMを配置している機種の方が多かったような気がします。参考:Wikipedia: X1 [wikipedia.org]

  • 富士通のFM-8がメイン用とは別にグラフィック用としてMC6809を乗せています。
    あとうろ覚えですがFM-8より前にグラフィック、I/O制御用のマイコンを乗せたコンピュータもあったと聞いています。

    ※FM-8:1981年、PC-9801:1982年、X1:1982年
  • by Anonymous Coward on 2009年09月29日 17時07分 (#1645810)

    内蔵I/OかメモリマップドのI/Oかってだけじゃ?

    • メモリアップドI/Oと、VRAMがメモリ空間にアドレスされているのとは、同一と考えてもいいものですか?
      親コメント
      • ちょっと言葉足らずかもしれないので、補足を。

        詰まる所、ポートアドレスI/Oか、メモリマップドI/Oなのかと言えばそういうことではあるのですが、私が興味があるのは、ポートアドレスI/Oなら、どの程度のアドレス空間が使われていたのか(ポートアドレスが8ビットだと空間が狭いので、あるいは同時期のほかの8ビットパソコンのI/Oアドレスも16ビットだったのか)、メモリマップドI/Oだと、メインメモリはどのくらいでどのくらいの領域をVRAMに割り当てていたのか、とか、そういう具体的な話です。

        X1 の Z80 の16ビットI/Oアドレスと、後にポケコンの8ビットI/Oアドレスを見比べると、X1 同時期のほかの8ビットパソコンがどうだったのか(メモリとI/Oのアドレス空間がX1と比べると余りに狭すぎるように感じられるので)疑問に思うわけです。
        親コメント
typodupeerror

ソースを見ろ -- ある4桁UID

読み込み中...