問題タブ [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 - 他のアーキテクチャでのZ80DJNZ命令に相当しますか?
最初に少し背景。z80 CPUには、ループと同様の方法で使用できるDJNZと呼ばれる命令があります。for
基本的に、DJNZはBレジスタをデクリメントし、ゼロでない場合はラベルにジャンプします。例えば:
もちろん、通常の比較命令とジャンプ命令を使用して同じことを行うことができますが、多くの場合、単一の命令を使用すると便利です。
それが邪魔にならないように、私の質問は、他のCPUアーキテクチャに同様の制御命令が含まれているのかということです。
z80 - Sinclair ZX80 PC 用のプログラムを含むオーディオ テープ/カセットのプログラムをお探しですか?
氷河期の前に、Sinclair ZX80 PC (ディスプレイとしてテレビ、ストレージ デバイスとしてカセット テープ プレーヤー) を持っていたことを思い出します。
明らかに、カセット テープのプログラムは、テープを再生すると非常に独特な音 (えーと... ノイズ) を出しました... 誰かがまだそれらのテープを持っているのではないかと思っていましたか?
その理由 (およびこの Q がプログラミングに関連している理由) は、IIRC の異なる言語が多少異なるピッチのノイズを生成したためですが、テープを実行して自分自身を聞いて、それが本当に当てはまるかどうかを確認したいと思います...
z80 - 電話線を使用してaz 80を配線し、0000 0000 0000 0000にジャンプしました
私は 1100 0011 0000 0000 0000 0000 を 2764 eprom に入れました --- これは z80 をテストすることになっています -- 私は 500 khz で動作する 555 タイマーを持っています。この小さなプログラムは z80 で動作しますか? m465 オシロスコープのアドレス ピンを調べました。アドレスは最大で 0100 0000 まで表示されます。0000 0000 0000 0011 までしか数えるべきではないと思います。z80 はテストできますか? サンタ クララ バレーは、rc ループ全体を完成させないと高低を示さない lm1871 ラジコン チップも製造しました。
assembly - Z80アセンブラ/マシンコードでは、バイト/ワード/アドレスは符号付きですか、符号なしですか?
Z80 バイナリ用のエミュレーターを作成していますが、すべての整数データ型が署名されているか署名されていないかをマニュアルまたは Google から確認できません。では、register A
、B
...などからの数字は署名されていますか?HL
BC
また、マシンコードでは、命令の後に引数が符号付きまたは符号なしとして来るバイト/ワード/アドレスがありますか?
これらの例のように ( 8080/Z80 Instruction Setから):
前もって感謝します。
assembly - Z80アセンブリ言語-INCrの後の符号フラグ
Z80アセンブリ言語の1つが気になります。符号フラグは常にAレジスタの値の符号を表しますか?つまり、「INC B」を実行すると、結果はBに戻るので、符号フラグはAまたはBレジスタの値から取得されますか?前もって感謝します
assembly - GBZ80:LD HL、(SP + e)はHフラグとCフラグにどのように影響しますか?
LD HL,(SP+e)
ゲームボーイZ80では、操作はHフラグとCフラグにどのように影響しますか?(ハーフキャリー+キャリー)
assembly - TI アセンブリ: の違い
TI プログラミング プラットフォームは初めてです。これに対する私の最善のルートについて、いくつかの指針を得たいと思っています。
TI-83(p) および 84p モデル間で互換性のある一連の演算およびグラフ関数を作成する必要があります。
このプラットフォームで利用できる豊富な情報を見つけてうれしく思いましたが、圧倒されました. また、それらの多くは非常に古いものです。
BASIC は私の目的には合わないと思います。もう 1 つのオプションは z80 アセンブリです。しかし、nostub、Ion、MirageOS の 3 つの亜種があるようです。特に上記のモデル間の互換性を考慮して、3つの間に違いがあるかどうかを知ることができますか. (私は Microchip PIC 開発のバックグラウンドを持っており、2 つのアセンブリ方言にかなりの違いがあることを発見しました。)
また、z88dk C コンパイラについて読んだことがありますが、このアプローチを採用することを非常に好みます。しかし、ti プラットフォームのサポートが、z80 アセンブリを知らない人が使用できるほど成熟しているかどうかはわかりません。z88dk ユーザーは、ti-8x プラットフォームの信頼性についてコメントできますか?
うーん、答えはありません。私が見たところによると、z88dk はかなり役に立ちません。したがって、z80 asm をためらうことはありません。Ion シェルは、ti 83、83+、83se、84+、および 84se の互換性要件を満たしているようです。
emulation - CPUをエミュレートするときのサイクルカウント精度に関する質問
私は、Javaでの趣味のプロジェクトとして、今後数か月にわたってSega Master Systemエミュレーターを作成することを計画しています(これには最適な言語ではないことはわかっていますが、作業が非常に快適で、 WindowsとLinuxの両方で、クロスプラットフォームアプリケーションが素晴らしいと思いました)。私の質問はサイクルカウントに関するものです。
別のZ80エミュレーター、および他のエミュレーターのソースコードを調べましたが、特に実行ループに興味をそそられます。呼び出されると、intが引数として渡されます(例として1000としましょう)。これで、各オペコードの実行にかかるサイクル数が異なり、これらが実行されると、サイクル数が全体の数値から減少することがわかります。残りのサイクル数が0未満になると、実行ループは終了します。
私の質問は、これらのエミュレーターの多くは、実行される最後の命令がサイクル数を負の値に押し上げる可能性があるという事実を考慮していないということです-つまり、実行ループ間で、たとえば1002サイクルになる可能性があります1000の代わりに実行されます。これは重要ですか?一部のエミュレーターは、次の実行ループで補正することによってこれを説明しますが、そうでないエミュレーターもあります-どちらのアプローチが最適ですか?私は自分自身を横切るのが特に得意ではないので、私の質問を説明させてください。
この特定のループの例が終了すると、numOfCyclesは-2になります。これはほんのわずかな不正確さですが、人々の経験では全体的に重要ですか?これについて誰かの洞察をいただければ幸いです。これが適切だと思われるので、フレームごとにCPUに割り込む予定なので、1000サイクルは低いと思いますが、これは単なる例です。
どうもありがとう、フィル
java - WindowsXPとWindows7のJavaタイミング精度
私には奇妙な問題があります-誰かが私に何が起こっているのか、そして可能な回避策を説明してくれることを望んでいます。別のスレッドでjava.util.Timerオブジェクトを使用して、JavaでZ80コアを実装し、速度を落とそうとしています。
基本的な設定では、1つのスレッドで1秒間に50回実行ループを実行しています。ただし、この実行ループ内では、多くのサイクルが実行されてから、wait()が呼び出されます。外部タイマースレッドは、20msごとにZ80オブジェクトでnotifyAll()を呼び出し、3.54 MHz(ish)のPALセガマスターシステムのクロック周波数をシミュレートします。
上記の方法は、Windows 7(2台のマシンを試した)で完全に機能しますが、2台のWindows XPマシンも試しましたが、両方で、Timerオブジェクトが約50%ほどオーバースリープしているようです。これは、Windows XPマシンでは、エミュレーション時間の1秒が実際には約1.5秒かかることを意味します。
Timerオブジェクトの代わりにThread.sleep()を使用してみましたが、これはまったく同じ効果があります。ほとんどのOSの時間の粒度は1ミリ秒よりも優れているとは思いませんが、1000ミリ秒ではなく999ミリ秒または1001ミリ秒に耐えることができます。私が我慢できないのは1562msです-私の方法が新しいバージョンのWindowsでうまくいく理由はわかりませんが、古いバージョンではうまくいきません-割り込み期間などを調査しましたが、そうではないようです回避策を開発しました。
この問題の原因と推奨される回避策を教えてください。どうもありがとう。
更新:同じ問題を表示するために作成した小さなアプリの完全なコードは次のとおりです。
メインクラスが行うのは、これらのワーカースレッドの1つを作成して開始することだけです。Windows 7では、このコードは約999ms〜1000msの時間を生成しますが、これはまったく問題ありません。ただし、同じjarをWindows XPで実行すると、約1562ms〜1566msの時間が発生します。これは、私がこれをテストした2台の別々のXPマシン上にあります。それらはすべてJava6update27を実行しています。
タイマーが20ms(非常に小さい値)スリープしているため、この問題が発生していることがわかります-1秒間すべての実行ループをwait wait()-notifyAll()サイクルにバングすると、正しい結果が生成されます-I '私がやろうとしていること(50fpsでセガマスターシステムをエミュレートする)を見る人は、これが解決策ではないことを理解するでしょう-それはインタラクティブな応答時間を与えず、50ごとに49をスキップします。私が言うように、Win7はこれにうまく対応します。私のコードが大きすぎる場合は申し訳ありません:-(
assembly - トークンの文字列を ASCII 値の文字列に変換する [TI-83+ ASM]
TI-83+ 電卓用のプログラムをアセンブラーで書いています。欲しい機能が 1 つありますが、それを実行する方法がわかりません。
Ans 変数から文字列を取得しました。そこから ASCII 値を簡単に収集できることを期待していましたが、完全なルックアップ テーブルを作成するまでもなく、これを行う方法が思い浮かびません。Texas Instruments はトークンに独自のエンコードを使用しており、一部のトークンは多くの文字を表しています。
要するに、TI トークンの文字列を ASCII 文字の文字列に変換する方法を理解する必要があります。