hra1129 / msx_basic_compiler

MSX-BASICコンパイラ
MIT License
22 stars 2 forks source link

PSETの異常 #9

Closed hra1129 closed 5 months ago

hra1129 commented 6 months ago

10 SCREEN 2,2 20 COLOR 15,5,15 30 PSET(128,96) 40 IF INKEY$="" THEN 40 50 END

【問題点1】(128,96) と指定しているのに (128,128) あたりに点が打たれる。 【問題点2】打たれる点の色がおかしい。 【問題点3】1回目の実行と2回目の実行で打たれる点の色が異なる。

参考 https://twitter.com/baseballcap_mio/status/1764412808454881545

baseballcap-mio commented 6 months ago

【問題点2】について 20行目のCOLOR文が反映されず、実行直後のBAKCLR(F3EAH)が反映されるらしい。 COLOR文自体は実行されているので、本テストプログラムを2回続けて実行すると、実行2回目のPSETでうたれる点の色は、初回のCOLOR文で指定された背景色となる。

hra1129 commented 5 months ago

【問題点1】について、ソースコードを確認したところ、色指定を省略したときに Yに指定された値を計算すべきところで、 Xに指定された値を再度計算する記述になっていました。 まずは、これについて修正したモノをチェックインしました。

hra1129 commented 5 months ago

【問題点2】について、PSET と PRESET の挙動が入れ替わっていたのが原因でした。これも修正したモノをチェックインしました。

hra1129 commented 5 months ago

【問題点3】は、【問題点2】の修正とともに直りました。

ということで、この件について全て解決したつもりです。ご確認下さい。

baseballcap-mio commented 5 months ago

正常に動作することを確認しました。 ご苦労様でした。

hra1129 commented 5 months ago

ありがとうございます。closeします。