【チラシのうら 22日目】文字列変数を追加したら配列の演算バグが発見された
大部分を /* 未実装 */ にしていた文字列変数を実装しました。
で、テスト用に A$(1)=A(2)+A$(3) が実行できず、突き詰めてみたら A=123+B(1) が計算できない事が発覚。
数式演算での配列要素を入れると評価キューが壊れる事が発覚。
原因が分からずデバックに苦労しました。
やっと直った…と思たら甘かった…(´・ω・`)
トークンをシープ領域に展開するようにした(スタック領域の節約)影響で再起呼び出しでバグが出てました。
修正前
------------------------
M5Z-80 BASIC Ver.0.3
------------------------
Largest Internal = 110580(107.988KByte)
Largest PSRAM = 0(0)
Stack Free = 6428 bytes
READY.
A(2)=123
READY.
PRINT 321+A(2)+111
555
READY.
C$(2)="ABCDE"
READY.
D$="12345" + C$(2)
READY.
print D$
12345ABCDE
READY.
print 321+A((1+1)/2*2)+111
SYNTAX ERROR
READY.
A((1+1)/2*2) = 567
INVALID DATA
READY.
修正後
------------------------
M5Z-80 BASIC Ver.0.3
------------------------
Largest Internal = 110580(107.988KByte)
Largest PSRAM = 0(0)
Stack Free = 6428 bytes
READY.
dim B(10,10)
READY.
A(4) = 4
READY.
B(2,4)=567
READY.
PRINT B((1+1)/2*2 , A((4-2)*4-4));" -- ";A(2+2)
567 -- 4
READY.
ここまでの成果
- 文字列が使えるようになった
- 配列演算のバグ修正
| 固定リンク
「BASIC」カテゴリの記事
- 【チラシのうら 37日目】SDカードユニットの交換で問題解決(2026.08.13)
- 【チラシのうら 36日目】SDカードユニットがハズレだったっぽい?(2026.08.11)
- 【チラシのうら 35日目】M5Stackでテキスト表示が出来るようになった(2026.08.08)
- 【チラシのうら 34日目】CardKB2に絶望した…(2026.08.01)
- 【チラシのうら 33日目】MSX-BASICの文法をみて思う事(2026.07.30)
この記事へのコメントは終了しました。

コメント