問題タブ [z80]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
assembly - シングルパスz80アセンブラー(ソースまたはWindowsで使用可能)
私は最近Z80システムを手に入れ、デバッガー用のdissasmblerを作成しています(Z80yのメモリからプルされた命令をプッシュします)。命令を受け取ることはできますが、ASMをアセンブルするときに問題が発生します。ほとんどのアセンブラーは、命令の完全なセットを正しく理解していないか、一部の命令が混乱して、ASMに正しく変換できないことを発見しています。今日皆さんにお願いするのは、実際に機能するものがあるかどうかです(ソースはさらに良いでしょう)。それ以外の場合は(ほぼ)不可能になるため、シングルパスオプションも使用したいと思います。
最後に、テスト用の手順の完全なセットを誰かが持っているかどうかを知ることです。現時点では、8080リストしかないため、拡張された手順をテストできません。
リンク/ファイルをありがとう、Andy A
c - sdccがコードを受け入れない
SDCCに問題があります。私のコード(別のコンパイラから移植しようとしています)は、柔軟な配列メンバーを持つ構造体を使用しています。ただし、次のコードをコンパイルしようとすると、次のようになります。
SDCCは次のエラーを出します:
何が得られますか?このコードは、私が使用している他のz80コンパイラーは言うまでもなく、gccで問題なくコンパイルされます。
編集:関連しているように見えるこのSDCCバグを見つけました。誰かがそれがそうであるかどうか、そしてどのように説明できますか?
c - TI-84: z88dk でカタログから関数を呼び出す
z88dk を使用して C で TI-84 をプログラミングしています。normalcdf や Ztest などを呼び出す必要があります。ti-BASIC から呼び出すことができることは知っていますが、C またはインライン アセンブリから呼び出すにはどうすればよいですか?
vb.net - VB.NET で 16 進オフセットを 2 バイト ポインターに変換するにはどうすればよいですか?
私は、Z80 2 バイト ポインター コンバーターを含む特殊な 16 進エディターに取り組んでいます。
変換の背後にある数学は次のようになります。
- 指し示すオフセットを取得します。
- オフセットの下 4 桁を取り、残りを切り捨てます。
- オフセットが
&H4000
-の範囲外にある場合は、次の&H7FFF
ように変換する必要があります(offset % &H4000) + &H4000
。言い換えると:- オフセットが
&H0000
~の場合は、オフセット&H3FFF
に追加&H4000
します。 - オフセットが から
&H4000
までの場合、オフセット&H7FFF
に対して何もしません。 - オフセットが から
&H8000
までの場合、オフセットから&HBFFF
減算&H4000
します。 - オフセットが から
&HC000
までの場合、オフセットから&HFFFF
減算&H8000
します。
- オフセットが
私の問題は、5 桁または 6 桁の 16 進数オフセットを 2 桁オフセットに変換する方法がわからないことです。最初に余分なバイトを削り取るにはどうすればよいですか (ステップ 2)。
vb.net - 正しくない値を返すポインター コンバーター
Z80 オフセット ポインター コンバーターを作成しようとしていますが、プログラムをコンパイルしてテストすると、出力変数がゼロになります。
その背後にある計算は次のようになります。
- 指し示すオフセットを取得します。
- オフセットの下 4 桁を取り、残りを切り捨てます。
- オフセットが &H4000 - &H7FFF の範囲外にある場合は、(オフセット % &H4000) + &H4000 のように変換する必要があります。言い換えると:
- オフセットが &H0000 から &H3FFF の場合は、オフセットに &H4000 を追加します。
- オフセットが &H4000 から &H7FFF までの場合、オフセットに対して何もしないでください。
- オフセットが &H8000 から &HBFFF までの場合、オフセットから &H4000 を引きます。
- オフセットが &HC000 ~ &HFFFF の場合、オフセットから &H8000 を引きます。
変換ボタンのクリック時に呼び出されるイベントのコードは次のようになります。
また、CoreActions モジュールの変換の背後にあるコードは次のとおりです。
出力が何もないことが判明した場合、正確には何が問題になっているのでしょうか? 実行時に例外や警告は表示されません...
c - C とアセンブラーの逆参照
ポインターの勉強: C のアスタリスク演算子 * は、Z80 のアセンブラーの括弧に類似していると言えますか?
言い換えれば、この2つの文は似たような意味を持っていますか?
c - ATMEL フラッシュ チップ AT45DB081D の連続配列読み取りを実行する方法
次のコードを使用して、SPI 経由で AT45DB081D チップと通信しようとしています。
次のような他のいくつかのコマンドが機能しています。
- バッファ 1/2 読み取り
- ページ消去あり/なしのバッファ 1/2 書き込み
- メインメモリからバッファ 1/2
これらの他のコマンドが機能することを考えると、FLASH_SEL_ON、SPIShift などが期待どおりに機能していると確信しています。
ページ 0 から任意のオフセットを読み取ることができることに注意してください。ただし、0 以外のページから読み取ることができません。これにより、問題はページを指定するための数学に問題があると考えられます。
デバッグ中に、ページ 1、オフセット 0 の 24 ビット アドレスが次のように計算されることがわかりました。
アドレスの形式に関するデータシートの仕様によると、これは正しいように見えます。
どこ:
- ×未使用
- P ページ番号
- Bオフセット
pageNumber = 0 を指定すると、そこに配置した正しい値が返されます。ただし、pageNumber = 1 を指定すると、以前に配置した値ではなく、255 個すべての値が取得されます。
0 以外のページのアドレスを指定するにはどうすればよいですか?
assembly - Z80 オーバーフロー イン DAA
私は Z80 エミュレーターを書いていますが、特定のオペランドに対して 10 進調整命令が何をするかを理解しようとしています。実際の Z80 でのこれらのオペコードの結果 (レジスタ A と F) はどうなりますか?
私のコードは現在、A レジスタの 0xA0 で終了し、ハーフ キャリー ビットとオーバーフロー ビットが設定されています。しかし、それは 0 を返すべきでしょうか?