そこで、私はプログラム上で計算し易いように工夫をしています。
何をしているかと言うと、自作サンプルを見ていただければ一目瞭然。
![8_13_2.png](/msxtsuikaiki/file/8_13_2-thumbnail2.png)
1行のDATA文にコードを8バイトしか書かないようにしています。
1行が8バイト、16進数で&H08。
2行で16バイト、16進数で&H10。
要するにアドレスを数える際、2行毎に10、20、30…と数えてく訳です。(上に行く場合はF0、E0、D0…)
最後1行余ったら、8を加えます。
そして、右に1つ移動したら+1、左なら-1すると言うように数えます。
![8_13_3.png](/msxtsuikaiki/file/8_13_3-thumbnail2.png)
ただ、これでも問題があります。
1つのロジックを1ブロックとしていますが、1ブロックの最後の行、プログラム終了から次のブロックまでの間に「00」が入ります。
![8_13_1.png](/msxtsuikaiki/file/8_13_1-thumbnail2.png)
これは単純にプログラムを見易くするための工夫です。
しかし、言ってしまえば無駄です。
MSXのように容量が少なく、制約の多い機種ならなおさら。
しかし、これがあるおかげでロジック追加になった際、この空きを利用してジャンプ命令を入れられます。
うーん、でもアセンブラ使えばその辺の事は気にする必要はありません。(そもそもアドレス指定が不要。)
現状、プログラミングする際、ニーモニック(LD A,01、ADD 02等)を思い浮かべてそれをマシン語コード(3E,01、C6,02等)に変換しているので、アセンブラに移行するのはそれほど苦ではありません。
ただ、やはりアセンブラを起動して、マシン語プログラムをロードし、アセンブリしてから、BASICプログラムをロードして実行...までの手順が、手間に感じてしまう。
今なら全部BASICプログラムだけですからね。
うーん、今更やり方変えるのも面倒だしなぁ...。
まぁ、何か支障が出るまではこのままのスタイルでいきます。
【このカテゴリーの最新記事】