Closed NasubiKT closed 7 months ago
終了判定処理に RST 20h (符号無し HL,DE比較)使ってました。SBC HL,DE に差し換えて、Sフラグ見るようにして対応しました。
サンプルコードを実行してみましたところ、ループが1回で終了しました。
画面上にはI= 0
のみ表示されました。
失礼しました。 今度こそなおりました。 下記のコードで確認しています。
110 SCREEN1,0,0:COLOR15,4,7:WIDTH32 120 PRINT "FOR I=15 TO 0 STEP -1" 130 FOR I%=15 TO 0 STEP -1:PRINT "I=";I%:NEXT I% 140 I$=INPUT$(1) 150 PRINT "FOR I=15 TO -1 STEP -1" 160 FOR I%=15 TO -1 STEP -1:PRINT "I=";I%:NEXT I% 170 I$=INPUT$(1) 180 PRINT "FOR I=15 TO 1 STEP -1" 190 FOR I%=15 TO 1 STEP -1:PRINT "I=";I%:NEXT I% 200 I$=INPUT$(1) 210 PRINT "FOR I=15 TO -2 STEP -1" 220 FOR I%=15 TO -2 STEP -1:PRINT "I=";I%:NEXT I% 230 I$=INPUT$(1) 240 PRINT "FOR I=15 TO 2 STEP -1" 250 FOR I%=15 TO 2 STEP -1:PRINT "I=";I%:NEXT I% 260 I$=INPUT$(1) 270 PRINT "FOR I=0 TO 15 STEP 1" 280 FOR I%=0 TO 15 STEP 1:PRINT "I=";I%:NEXT I% 290 I$=INPUT$(1) 300 PRINT "FOR I=-1 TO 15 STEP 1" 310 FOR I%=-1 TO 15 STEP 1:PRINT "I=";I%:NEXT I% 320 I$=INPUT$(1) 330 PRINT "FOR I=1 TO 15 STEP 1" 340 FOR I%=1 TO 15 STEP 1:PRINT "I=";I%:NEXT I% 350 I$=INPUT$(1) 360 PRINT "FOR I=-2 TO 15 STEP 1" 370 FOR I%=-2 TO 15 STEP 1:PRINT "I=";I%:NEXT I% 380 I$=INPUT$(1) 390 PRINT "FOR I=2 TO 15 STEP 1" 400 FOR I%=2 TO 15 STEP 1:PRINT "I=";I%:NEXT I%
ありがとうございます。 動作を確認できました。 このISSUEはCLOSEいたします。
下記条件をすべて満たすとき、FOR文のループ処理が正しく行われません。 (1) FOR文の変数が整数型である (2) FOR文のSTEPが
-1
である (3) FOR文の終了条件が0
以下であるサンプルコード
終了条件が
0
の場合、変数がマイナス値に突入し、ループが終了しません。 終了条件が-1
の場合、ループ1回で終了します。 終了条件が1
の場合、正常にループ処理が行われます。