0xD0:0x000〜0x0FF0xD1:0x100〜0x1FF0xD2:0x200〜0x2FF0xD3:0x300〜0x3FFこの時、バッファのアドレスの下位8ビットを表すのに、アドレスバスの上位8ビットが使われます。読み出すことができます。先にデクリメントされるため、読み書きするアドレスが一つずれるという現象が起こります。他に割り込み系の命令にもバグがあったと思います。詳しく調べたいと思います。|この記事へのコメントこの件,Bernieさんと一緒に悩んでおりました。挙動は把握できたんですが釈然としないな〜と。見てみると下記の記載があるため「仕様」の様ですね。何か実装上の制約があって止む無くこうなった感じがします。09:28すっきりして何よりです。私も詳細に調べてみるまで、勘違いしていました。ちなみに調べ方は、CPUデータバスとFDDバッファのアドレスをロジアナで観測しています。20:53これはハマるところですよね。ソース等々確認した記憶が。ブロック転送とか何に使うの??って感じでしたので。ゼロフラグが変化しないと知ってエーという感じです。他に割り込み系の命令にもバグがあったと思います。ゼロフラグも引っ掛かりますね。フラグの動きの違いとか。フラグの挙動についてです。このフラグを見ると、割り込み状態なのかそうでないのかが判別できるというものです。普通は、まあ使わないでしょうけど。08:32はじめまして。Z80の割り込み状態取得時のバグについては、この文書↓が分かりやすかったです。12:49>youkanさんコメントありがとうございます。実は割り込みの件は、挙げてもらっていたものから情報を仕入れたものです(^^;この情報が、P6に当てはまるかは、調べる必要があるかと思っています。面倒ですが...I/O命令の16ビットの件は、X1では確かに常識ですけど、NEC系はほとんど使ってないんじゃないかと思います。19:43どうも、この件ではお世話になりました。使うとBregとCregがひっくり返って使用されるということでは無いでしょうし...。22:06おっとっと。ご指摘ありがとうございます。A,(C)が正解です。ブログの本文の方は修正しておきます。22:11Z80の割り込み関連のバグはnMOS品全般にありますが、ZiLOGのCMOS品では修正されています。CMOSでも東芝製は修正されていません。HD64180ではR0マスク(64A180/64B180等)にはあり、次のR1マスク(64180R)で修正されたそうです。NECのμPD780はもともと非ライセンス品でしたが、この辺のバグは引き継がれた(マネした?)ようですね。rd.vector.co.jp/soft/data/hardware/se056089.htmlについて筆者にメールした記憶が。I/OでのBレジスタの挙動は、ゆみたろさんの通り、マニュアルで上位にBレジスタの値が出ることがドキュメントになっているので隠し機能ではなく仕様ですね。(BC),r8としていたのかも知れません。繰り返しの際にも16ビットI/Oとして使うことまでは当時想定されていなかった気はしますが。(ループの残り回数をデバイスに伝える用途には使えそうですが、これ自体(変化する値)をアドレスに使うのはちょっと)セカンドソースではない互換CPUではどうなんでしょうね?64180とかR800とかKC80とか興味あるところです。(n),Aにて上位・下位とも同値(n)を出力)ですから、それ自体が仕様になって継承された可能性はありますね。ブロックI/Oについては8080どころか8086にもなかった機能(80186/V30にて実装)ですし。ところで、FDDといえば、PC-6031の代用としてPC-8031やPC-80S31が使える(逆は不可)そうですね。3.5インチの代用にはなりませんが。3.5インチの代用にするにはレア(?)なPC-8831-MWのFDDを3.5インチに載せ替えたものが必要になりそうです。(動作の保証はできません)66の場合は素直に2Dや2DD(SR)にするのが近道のような気がします。FDDにした場合は、両面FDを片面2枚分として使えるようにもできますし。これがあれば入手が(比較的)容易なPC用FDDが使えるようになるので。ここでで恐縮ですが、ゆみたろさん、NDittにサイド1のアンフォーマットと、(1DD/2DDでの)奇数シリンダのアンフォーマット機能をつけていただければ幸いです。FDDでの安定性向上のためです。現在はPC-98実機上のWizard98でEraseしています。2回実行するので面倒です。41DDには1を、2Dには2と3を、1Dには1と2を実行します。シリアルポートの件は投げたわけではないので念のため。8251に乗り気でないのは確かです。カートリッジスロットを使って16550を載せた方が遥かに高性能なので。TARIOさんの「ピーッ」では16550でのアプローチになっています。www.d1.dion.ne.jp/~tario/pc6601sr.html折衷案として、I/Fは8251のままでマイコンで通訳をし、16550を使用する案もあります。8251モードと16550モードはジャンパで切り替えできるようにするといいでしょう。Manualを改めて確認しましたが、(www.zilog.comから参照できます)OUTI/OTIR/OUTD/OTDRだけで、INI/INIR/IND/INDRではこうならないんですね。謎です他に16ビットI/Oを積極的に使っているのはSMC-777とかですか。22:38>かかっくんさんNDittの件,機能追加自体は簡単にできそうなので考えてみますね。2HDでアンフォーマットしてから書き込めばとりあえずOKな気もします。20:36ゆみたろさんダメモトで要望してみましたが、レスありがとうございます。調子に乗ってもうひとつ。書き込みコマンド時のオプションで不要トラックのアンフォーマット(消去)も同時にできるようにしていただければ。2HDでアンフォーマットしてから書き込めばとりあえずOKな気もします。単純な書き込み時は事前のアンフォーマットで事足りますが、1D/2Dを書き換えた場合の問題は解決できないので。どちらかというとこちらを重視しています。考えたら66SRで書き換えた1DはPC-6601ではエラーになり得ますが、そのような報告があまりないのは...?まさかFDDが1DDとも考えにくいですし。PC-6031SRなら1DDですから判りますが。17:50HD64180のデータシートを参照してみましたが、詳細はありませんでした。A15---逆になっていますね。他に上位0・下位CのOUTもあるので、これはただの誤植でしょう。A15---OUTがループ内にないのが謎です。実際にはループしますが。結局、データシートからはどのタイミングでBをDECするかは解りませんでした。命令トラップで0番地にコール(CP/Mではコマンドラインに戻る)したりするのが特徴ですね。02:21>かかっくんさんNDittの件ですが,忘れないうちにやってみました。不要トラックのみアンフォーマットする機能と書込み時に不要なトラックをアンフォーマットする機能を追加しました。(Uオプション)使い勝手がいいんだか悪いんだかよくわからない感じですが,説明書を見て使ってみてください。バックアップは忘れずに。[必須入力]※画像の中の文字を半角で入力してください。デバッグなど(137)SW:その他(3)HW:AVR(0)HW:RS232Cボード(11)HW:動画再生(18)HW:SD6031(32)HW:その他(33)P6実機:製作・修理・改造など(20)その他(15)月別アーカイブ2020年01月(2)2019年12月(1)2019年07月(5)2019年04月(2)2019年02月(2)2018年12月(10)2018年11月(5)2018年10月(3)2018年08月(2)2018年07月(2)2018年06月(30)2018年04月(7)2018年03月(6)2018年01月(1)2017年11月(12)2017年10月(4)2017年09月(1)2017年06月(4)2017年04月(6)2017年03月(3)Seesaaブログ。