問題タブ [6502]
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 - DASMで直接バイトを設定するにはどうすればよいですか?
私は6502アセンブリ言語を学んでいて、何かをうまく処理するのに問題があります。私はJavaScript6502アセンブラー/エミュレーターを試していましたが、ほとんどの例に次のようなセクションがあることに気づきました。
私はGoogleに何dcbを意味するのか試してみましたが、最も近いのは10進数でコード化されたバイナリです。ソースコードを見ると、アセンブラが値を取得し、コードの現在のポイントにそれぞれを個別のバイトとして挿入しているように見えます。
DASMをローカルで使用してコードをアセンブルしていますが、をサポートしていませんdcb。このようなコードでバイト値を直接設定する同等の方法はDASMにありますか?
assembly - x86アセンブリ学習プラットフォーム
最近、組み立てをいじっていて、たくさんのことを学びました。私は6502asm.comを使用していました。6502asm.comは、6502アセンブリ用のjavascriptアセンブラおよびエミュレータです。これが私が気に入っている点です。入力と出力は非常にシンプルで理解しやすいものです。$0200から$05ffのアドレス空間を持つ32x32ピクセルの画面を提供します。ピクセルの色の変更は、画面のアドレスの1つ(左上が$ 0200、右下が$ 05ff)に色の値($00から$0fの間)を保存するのと同じくらい簡単です。いじりますが、それは8ビットであり、32x32の画面には十分なスペースがありません。6502asm.comのようなものがあるかどうか疑問に思いました8ビットではなく32/64ビットアセンブリ用。(ブラウザーにある必要はありません。類似しているものだけです。)また、nasmを使用することをお勧めしますが、必須ではありません。前もって感謝します!
emulation - 6502 CpuでXとYが0の場合のデクリメント(DEX / DEYオペコード)
現在、.NETを介してNESエミュレーターを作成しようとしていますが、デクリメントとインクリメントを行う特定のオペコードについて質問があります...
XレジスタとYレジスタは8ビットなので、実装上、符号なしバイトですか、それとも符号付きバイトですか。つまり、XおよびYレジスタの値の範囲は-128〜127または0〜255ですか?
XレジスタとYレジスタが0として初期化されている場合、DEXが実行されるとどうなるので、これに混乱しています。それとも、実際にそれを心配するのはプログラマー次第ですか?
皆様のご協力をよろしくお願いいたします。
assembly - テーブル オフセットの計算方法
6502 テーブルのレコードにアクセスする費用効率の高い方法を探しています。テーブルの長さは 8 バイトです。間接 Y を使用して、フィールドをオフセットできますが、次の 0 番目のレコードに到達する方法が必要です。
私は考えました:
アキュムレータが 2 の累乗の値を持っている間に ASL を使用する他の人を見てきました。
レコードが 2 つしかない場合はこれで問題ありませんが、もう一度 ASL を実行すると、結果は x = 32 になります。これはオフセットが大きすぎます。
これを行うには、ADC を使用するよりも良い方法はありますか?
assembly - ブール演算でビットを0に設定するにはどうすればよいですか?
6502アセンブリでのビット単位の操作はまだ新しいです。8つのフラグを持つバイトが欲しいのですが。これにより、メタスプライトのステータスが保存されます。
他のフラグを変更せずに特定のフラグを設定できるようにしたい。
私はORAを使用してそれらを1つに設定する方法を知っています:
EORを使用してそれらを切り替える方法を知っています:
最後に、ビットが真であるかどうかを確認する方法を知っています。
しかし、他のフラグを変更せずに、特定のフラグを0に設定するにはどうすればよいでしょうか。ANDを使用した場合でも、目的のビットを0に設定するように強制するにはどうすればよいですか?
おかげで、私は単純な何かが欠けていると確信しています。
assembly - 6502 には、制御フローを使用するためのどのような方法がありますか?
6502 アセンブリの制御フローを理解しようとしています。
次のコードがあるとします。
個人的には、switch ステートメントやその他の制御フロー構造が好きです。上記の JMP は私にも関係があります。この種のスパゲッティ コードを使用せずに、複数のケースを処理するためのより良い方法があるようです。
assembly - 6502 アセンブリでニブルを値に変換するにはどうすればよいですか?
NES プロジェクトの画面ファイルを格納するバイナリ形式の解凍アルゴリズムに取り組んでいます。NES の画面解像度は 260x240 です。2x2 ピクセル形式でメタタイルを作成しています。圧縮形式は、どの 2x2 ファイルを画面に書き込むかを指定します。
私が選んだフォーマットは次のように書かれます
上記の例では、11110001はインポート ルーチンにタイル 1 を 16 回書き込むように指示します。
私が理解していない部分は、左ニブルを取得して16進数に変換する方法です。私が抱えている同じ問題は、正しいニブルを取り、それを値としても使用することです。
ビット演算を使用してこれを行う方法があるかどうかはわかりません。これを行う効率的な方法が必要です。
forth - VALUE と TO の定義方法
VALUEForth ワードをTORPC/8 ( Minecraft modでエミュレートされたコンピューター)に実装したいと考えています。私の最善の試みは、コンパイル中に使用しない限り、正常に機能する単語のセットを取得します。より具体VALUE的には機能しますが、TO機能しません。
私はそれを機能させるために考えられるすべてを試しましたが、私の最善の試みは私にこれをもたらします:
プロセッサは純粋な 6502 ではなく、65816のカスタム バリアントである65EL02であることに注意してください。
編集 #1: どういうわけか、値の CREATE の呼び出しを忘れていました。ずっとそこにあったはずです。編集#2:私もTO3で切り替えました...おっと。+ずっと逆だったはず。
assembly - 6502 相対アドレス モードのラッピング
6502 のドキュメントを読んでも、どこにも答えが見つかりませんでした。相対アドレッシングを使用する場合は、ラップすることができます。しかし、両端をラップすることは可能ですか? それは可能だと思いますが、可能性は低いです。
そして、私が両端を意味するとき、私はあなたが高いPCから低いPCまでラップできることを知っていることを意味します. しかし、低い PC から高い PC にラップすることもできますか?