問題タブ [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.

0 投票する
14 に答える
13333 参照

z80 - お気に入りの ZX Spectrum 開発ツールは何ですか?

古き良きZX Spectrumのお気に入りのアセンブラ、コンパイラ、環境、インタプリタは何ですか?

0 投票する
2 に答える
5412 参照

assembly - z80 マシン コードのリバース エンジニアリングを開始するにはどうすればよいですか?

.z80 メモリ ダンプがあります。リバース エンジニアリングの方法を教えてください。何を知る必要がありますか? 手作業を最小限に抑えるにはどうすればよいですか?

0 投票する
14 に答える
3151 参照

c++ - C/C++/rtl に Z80 のような LDIR 機能がないのはなぜですか?

Z80 マシン コードでは、バッファを固定値 (すべて空白など) に初期化する安価な手法。したがって、コードのチャンクは次のようになります。

その結果、DESTINATION のメモリのチャンクは完全に空白になります。memmove と memcpy を試しましたが、この動作を再現できません。私はmemmoveがそれを正しく行うことができると思っていました。

memmove と memcpy がこのように動作するのはなぜですか?

この種の配列の初期化を行う合理的な方法はありますか?

配列の初期化のための char array[size] = {0} をすでに認識しています

memset が単一の文字に対して機能することは既に認識しています。

この問題には他にどのようなアプローチがありますか?

0 投票する
5 に答える
923 参照

division - ZX81 BASIC での素早い可分性チェック

Project Euler の問題の多くは割り切れる可能性を何度もチェックする必要があるため、ZX81 BASIC でこのタスクを実行する最速の方法を見つけようとしています。

これまで、が割り切れるかどうかを比較(N/D)INT(N/D)てチェックしてきました。私はZ80 マシン コードで テストを行うことを考えていましたが、マシン コードで BASIC の変数を使用する方法をまだ理解していません。ND

どうすれば達成できますか?

0 投票する
8 に答える
11640 参照

c++ - CまたはC++でグラフィカルなZ80エミュレーターを作成する

Z80プロセッサ用の独自のシンプルなエミュレータを作成することに興味があります。私はこのタイプのプログラミングの経験がありません。私が最もよく知っているのはCベースの言語なので、ほとんど問題ありません。

これを達成するために何が必要であり、このプロジェクトで私を助けることができるいくつかの良いチュートリアル/リファレンスは何ですか?

また、 TI-84 Plus計算機用のROMダンプアプリケーションをコーディングして、このエミュレータでROMを使用できるようにするためのチュートリアルも必要です。

0 投票する
3 に答える
4088 参照

parsing - Z80アセンブラーの作成-ASMの字句解析と、コンポジションを使用した解析ツリーの構築?

私はアセンブラーを作成するという概念に非常に慣れていません。大量の資料を読んだ後でも、いくつかの概念に頭を悩ませることはまだ困難です。

  1. ソースファイルを実際にトークンに分割するプロセスは何ですか?このプロセスは字句解析と呼ばれ、意味のある実際のコード例を上下に検索しましたが、それほど単純なコード例は大歓迎です;)

  2. 解析するときに、情報をツリーの上下に渡す必要がありますか?私が尋ねる理由は次のとおりです。

    LD BC、nn

トークン化されたら、次の解析ツリーに変換する必要があります(???)

ここで、このツリーをトラバースするときに、次のマシンコードを生成する必要があります。

指示があった場合:

次に、出力は次のようになります。

それが問題を提起することを意味しますが、LDノードはオペランドに基づいて異なるものを返しますか、それとも何かを返すのはオペランドですか?そして、これはどのように達成されますか?時間が許せば、より単純なコード例が優れています。

高度な既存のツールを見るよりも、ここで生のプロセスのいくつかを学ぶことに最も興味があるので、YaccまたはFlexに送る前にそのことを覚えておいてください。

0 投票する
3 に答える
4646 参照

bnf - Z80 ASM BNF構造...私は正しい方向に進んでいますか?

私はBNFを学び、いくつかのZ80ASMコードをアセンブルしようとしています。私は両方の分野に慣れていないので、私の質問は、私は正しい軌道に乗っているのかということです。Z80 ASMの形式をEBNFとして書き込もうとしているので、そこからソースからマシンコードを作成する場所を見つけることができます。現在、私は次のことをしています。

私が間違っている場合の方向性フィードバックは素晴らしいでしょう。

0 投票する
7 に答える
3951 参照

assembly - 8080 から x86 へのアセンブラー変換ツールはどこにありますか?

編集、グッドニュース!

10 年後、私はついに腰を据えてこれを実現する必要があると判断しました。必要な convert-8080-to-z80-or-x86 および convert-z80-to-x86 ツールを作成し、Sargon コードを x86 コードに変換し、以下で説明するように検索の深さを増やし、基本的にすべての目標を達成しました。プロジェクトのウェブサイト

レトロ コンピューティング プロジェクトでは、1970 年代の 8080 アセンブリ言語の本体を x86 形式に変換する必要があります。まさにそれを行うためのツールが、Intel の 80x86 ファミリの導入に関するマーケティングの重要な部分であった時期がありました。しかし、私のグーグル スキルは、その元のツールまたは類似のものを見つける仕事には及ばないようです。そのようなツールがどこでも利用できるかどうかは誰にもわかりませんか?

編集

私がやろうとしていることをより明確にするために、いくつかの背景情報を追加することにしました。これは一般的な関心のためであり、さらにフィードバックを引き出すためのものです。

以前のプロジェクトで、私は 1970 年代のチェス プログラムである Microchess を調べ、著者の Peter Jennings の協力を得て、現代のマシンで実行できるようにしました。Peter は彼の Web サイトで Microchess の話を詳しく説明し、6502 アセンブリ言語のソースを提供しました。私の貢献がストーリーに追加され、次の場所で見つけることができます。

http://benlo.com/microchess/microchess9.html

私がそのプロジェクトに取り組んだ方法は、手作業でコードを最小限に変換して、C 言語のセマンティクスに一致させることでした。たとえば、これを変換しました。

これに;

必要な 6502 命令すべてに対応する C プリプロセッサ マクロを作成しました。たとえば、LDYi() は、エミュレートされたレジスタ Y に (i) 中間値をロードします。

しばらくして、ドイツ人の Andre Adrian が私のコードを取得し、最新のチェス GUI からコードを駆動できるようにするインターフェイスを追加したことを発見しました。いいですね、考えればよかったのに。これは彼のウェブサイトで見ることができます。

http://www.andreadrian.de/schach/index.html

同じページ (Google 翻訳を使用) で、彼は元のバージョンの Sargon にリンクしています。これは、別の古典的なチェス プログラムであり、おそらくレトロなチェスの古典であり、誰かがこのコードを私が行ったのと同じ方法で生き返らせてくれることを願っています。マイクロチェス (とにかく、Google 翻訳が言っていることだと思います)。よしよし、私は奉仕するためにここにいる!今度は GUI インターフェースの追加もおろそかにするか、Andre と協力するか。

Sargon アセンブリ言語はこちらです。

http://web.archive.org/web/20040217034933/madscientistroom.org/chm/Sargon.html

Andre は不要なものをすべて削除し、アセンブリ言語コードだけをここに残しました。

http://www.andreadrian.de/schach/sargon.asm

さて、プロットは厚くなります。Andre は、エミュレーターを使用して、この機能を自分で動作させようとしました。(2012 年 1 月 3 日編集 - Andre はこれを大幅に前進させ、最新の PC で古い Sargon コードを実行できるようになりました - 以下の彼の回答と上にリンクされている彼の Web サイトを参照してください)。しかし、彼が理解しているとは思えない複雑な問題があります。Sargon コードは、実際には Z80 をターゲットにしています。しかし、アセンブリ言語は通常の Z80 アセンブリではなく、代わりに 8080 アセンブリであり、Z80 のみの命令に奇妙な Intel スタイルのニーモニックが使用されています。いくつかの背景。Zilog Z80 は、Intel 8080 のサード パーティの子孫です。8080 命令セットのバイナリ互換スーパーセットを使用します。Zilog は、Z80 用に、よりクリーンで、より直交的であるが (ソース レベルで) まったく異なるアセンブリ言語を提供することを決定しました。サードパーティ (第 4 の?) パーティは、これが悪い決定であると明確に判断し、Z80 拡張機能を Intel のような方法で表現した、別の Intel スタイルの Z80 アセンブラを作成しました。あるいは、既存の 8080 アセンブラのマクロ機能を使用して Z80 拡張機能を追加しただけかもしれません。それは問題ではありません; 複雑なのは、Sargon コードがこのかなり奇妙なハイブリッド アセンブラを使用していることです。

Z80 のエミュレーションや私の Microchess プロジェクトからの C マクロ アプローチの繰り返しではなく、8080 から x86 へのトランスレータが必要な理由がいくつかあります。

1) 今回はもっと多くのコードがあります。最小限の変換であっても、できれば行ごとの編集は避けたいと思います。

2) 今回はコードをフルスピードで実行したい。マイクロチェスではできなかった、検索の深さを増やすことができるように思えます。チェスのコードは CPU サイクルを消費します。

3) 便利なエミュレーション ソリューションがあったとしても、このようなものをアセンブルする必要があります。これは、奇妙なアセンブラ規則を考えると問題です。しかし、すべての 8080 ニーモニックを x86 に変換できれば、x86 の土地で快適に作業でき、Z80 拡張の <10% 程度の行を同等の x86 コードに手で変換するだけです。

とりとめのない投稿で申し訳ありません。うまくいけば、少なくとも1人がそれを面白いと思うでしょう。もう 1 つの要求。伝説的な Sargon プログラマーである Dan と Kathe Spracklen の祝福を得たいと思っています。しかし、彼らはウェブでの存在感をまったく持っていないようです. Dan Spracklen は LinkedIn を利用していますが、アカウントが機能していないようで、応答がありません。この人たち、または連絡方法を知っている人がいたら教えてください。

0 投票する
2 に答える
741 参照

assembly - Z80(TI-83 +)がCALLで動作を停止します

TI-83 +計算機(Z80プロセッサ)用のアプリケーションをアセンブルするたびに、CALLで実行が停止します。次に例を示します( "Hello")—正常に実行を開始しますが、電卓はCALL命令でフリーズします。CALLの前に置いたものはすべて正常に機能し、後に置いたものはすべて実行されません。これは、ラベルではなく住所を表示するためのコードの逆アセンブルです。読みやすくするために、それらが含まれるDB行を表示するために「修正」しました。

アセンブリ「プログラム」(RAMにロードされる)を作成するときにこの問題が発生したことはありません。「アプリケーション」(フラッシュROMに保持されている)の実行に関して私が知っている唯一の問題は、それらが自己変更できないことと、ページングが必要なため、別のページのデータにアクセスできないことです。これは自己変更ではなく、1ページしかありません...私は何を間違えましたか?

0 投票する
3 に答える
6395 参照

assembly - Z80:16ビットと8ビットのレジスタを追加するにはどうすればよいですか?

キャリー付きの16ビットレジスタと8ビットレジスタ(HL、Aなど)をどのように追加しますか?