問題タブ [cpm]
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.
cpm - ぶら下がっているプログラムを終了し、Turbo Pascal 3 に戻る
CP/M 2.2 で Turbo Pascal 3.01A を実行しています。Turbo Pascal の R メニュー オプションを使用して実行している私の Pascal プログラムにバグがあり、無限ループに陥ったとします。プログラムを中断して Turbo Pascal メニューに戻る特別な制御文字はありますか?
z80 - CP/M 3.1 (z80) 用の最小限のアセンブラー プログラム
私は自分の愚かさとの戦いに負けているようです。
このサイトでは、CP/M のさまざまなバージョンでのシステム コールについて説明しています。
ただし、呼び出し 2 (C_WRITE、コンソール出力) を使用しようとすると、何も起こりません。
次のコードがあります。
ここで記憶から引用します。タイプミスがある場合は、ファイルがコンパイルされ、開始する COM ファイルがあったため、オリジナルには含まれていないので安心してください。
行の意味は次のとおりだと思います。
- これがアドレス 100h にロードされることを確認してください (0h から FFh までがゼロ ページです)。
- システムコール 2 の E レジスタに ASCII 'a' をロードします。
- システムコール 2 の C レジスタに整数 2 をロードします。
- システム コールを作成します (システム コールへの JMP はゼロ ページのアドレス 5 にあります)。
- プログラムを終了します (終了コマンドはゼロ ページのアドレス 0 にあります)。
プログラムは問題なく起動および終了します。最後のコマンドを削除すると、コンピューターがハングします (これも予想どおりで、CALL 0 が機能することを示しています)。
ただし、ASCII 文字は出力されません。(ただし、余分な新しい行が出力されますが、システムがそれを行った可能性があります。)
CP/M プログラムに、システム コールが行うべきことを実行させるにはどうすればよいですか? 私は何を間違っていますか?
更新: 問題は、私が試したすべてのアセンブラーが特定の形式のソース ファイルを想定していたことです。このファイルは、Microsoft のマクロ アセンブラで動作しました。
asm.com (DR のアセンブラー) と m80.com (Microsoft のマクロ アセンブラー) は Intel 8080 ニーモニックを予期しており、明らかに異なる z80 ニーモニックを予期する必要があるときに通知する必要があると思います(私は推測しています)。
とにかく、asm.comを気にせずに画像自体を単に書くことを示唆しているので、それも正しいので、以下の答えを受け入れます。
assembly - m80 マクロ アセンブラ org ディレクティブ
私は Microsoft の古い m80 マクロ アセンブラを使用していますが、しばらく大きな問題は発生していません。
しかし、16 進数で ORG ディレクティブを使用しようとしていますが、失敗します。
これは機能します:
ただし、これは機能しません。
m80 は致命的なエラーだと主張しています:
9 より大きい数字を含む数値で ORG ディレクティブを使用するにはどうすればよいですか?
私は何が欠けていますか?
intel-8080 - CP/M での ROM イメージのビルド
CP/M で由緒ある M80 および L80 ツールを使用して ROM イメージを構築しようとしています。(これは CP/M エミュレータ用であるため、CP/M ツールを使用している理由です。)
残念ながら、L80 は非常に粗雑なようです --- AFAICT では、各オブジェクト ファイルを絶対アドレスにロードし、修正してから、0x0100 からすべてをディスクにダンプします。これは、自身のワークスペース外のアドレスに基づくオブジェクト ファイルがまったく機能していないように見えることを意味します (エラー メッセージが表示されるだけです)。私の ROM には 0xd000 のベース アドレスがあり、これはかなり外側にあります。
M80 と L80 を使用してこれを行うことが可能かどうかは誰にもわかりません。または、CP/M アセンブラー/リンカー スイートを推奨する (そして私を指差す!) ことはできますか?
(可能であれば、クロスコンパイルを避けたいことに注意してください。)
cpm - CP/M BDOS をカスタム メモリ アドレスに再配置するにはどうすればよいですか?
初心者の CP/M の質問かもしれませんが、とにかく ... CP/M BDOS を再配置することは可能ですか? CPM 2.2 で使用できるように、BIOS を作成したハードウェアがあります。ただし、その BDOS (逆アセンブルで確認) は固定アドレスを使用します。私は CP/M をよく知らないので、CP/M BDOS を別の開始アドレスに配置する方法がわかりません。私が見つけた唯一の (やや醜い!) 解決策: CP/M 逆アセンブル リストを見つけたので、単純に "ORG" ディレクティブを変更して再アセンブルしました。CP/Mユーティリティなど、他の方法はありますか?BDOSはJP、CALLなどのオペコードを使用するため(申し訳ありませんが、元の8080アセンブリにはあまり詳しくなく、Z80に精通しています)、PCに依存しないだけではありません。ありがとう!
assembly - Z80 アセンブラの問題
Debian の CP/M 2.2 エミュレーター (z80pack) で Z80 アセンブラーを書き込もうとしています。
行を書き込もうとするたびに「ファイルが見つかりません」と表示されます。説明書を探しましたが、起動方法が記載されていません。入力すべき特別なコマンドはありますか? M80 (Macro-Assembler 80) もすべての行でエラーが発生するためです。