AILight / AILZ80ASM

Z80アセンブラ
MIT License
49 stars 2 forks source link

DSが期待通りに動かない場合がある #274

Closed tablacus closed 10 months ago

tablacus commented 11 months ago

いつも便利に使わせてもらっています。 AILZ80ASM version 1.0.12.0でDSが期待通りにならなくなっている場合があったので報告します。

ソースは https://github.com/tablacus/LSX-Dodgers のPC-8801mkIISR版になります。 ASM_AILS80ASM_88.BATでアセンブルしています。

こちらの画像は該当部分で左がAILZ80ASM version 1.0.0.0で右がAILZ80ASM version 1.0.12.0です。 image このDS INTAD-AT_TABLEの部分のDSが右側で期待通りになっていない部分です。 INITAD0EE00HAT_TABLE0EDE3Hなので一番左のカウンタが増えると期待しているのですが右側では001FEAのままです。

X1/turbo/Z版 と MZ-700/1500版 ではほぼ同じ要領でDSを使っているのですが期待通りに動作しています。 そういう訳でPC-8801mkIISR版だけこちらのバグでこうなっているのかも知れません。 すみませんが、調べていただけると嬉しいです。

AILight commented 11 months ago

ご迷惑をおかけしております。申し訳ございません。 DSの出力に関してはちょっと変更があったかと思います。確認をさせていただきます。

AILight commented 11 months ago

こちらでも環境を作らせていただいて確認をしました。 これからテストコードを書いてテストを行っていきます。 image

tablacus commented 11 months ago

回避策を発見しました。 SUB.ASMのORG指定を前回のORGの第2引数と同じ対応にしたところ正常にアセンブルできるようになりました。

    ORG $$+OFFSET,$$    ;$DEPHASE

SUB.ASMの最後の方です。 image

tablacus commented 11 months ago

アドレスを揃えるのにALIGNが便利そうなので使ってみたのですが88INTVEC.ASMALIGNの後のDSが期待通りには動作しませんでした。 こちらも同じ個所が原因のような気がします。

AT_TABLE:
    DS  INTAD-AT_TABLE

image

    ALIGN   256

image

AILight commented 11 months ago

ありがとうございます。現象の確認はできているのですが、テスト用に使うコードをうまく作れなくて困っていました。調査していただいた結果を参考にさせていただきながら引き続き調査を行いたいと思います。

AILight commented 10 months ago

おかげさまで上手くテストコードが書けました。引き続き調査を行います。 image

AILight commented 10 months ago

プログラムの修正が完了しました。年内にリリース予定です。

AILight commented 10 months ago

修正版をリリースしました。

tablacus commented 10 months ago

ALIGNも正常に動作することを確認しました。 ますます便利に使えます。 対応ありがとうございました。

AILight commented 10 months ago

ご確認ありがとうございます。バグレポートをいただきまして大変助かりました。 今後AILZ80ASMに大きな修正が入るときには、LSX-Dodgersのアセンブル結果が一致しているか確認させていただきます。現在は手動確認ですので漏れが発生する可能性があるのですが、時間が出来ましたらリリース時に自動でチェックできるようにしたいと思っております。

tablacus commented 10 months ago

AILZ80ASMはORGの第2引数を用いることで入り組んだコードをすっきりとしたLSTに出力できるので非常に助かっております。 また、OFFSETを活用できればますます便利に使える予感がします。