2020.9.13
前へ
次へ
ホームページトップへ戻る

[新連載]復活!TINY BASIC
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
すべてはここからはじまりました。
中日電工も。
40年前を振り返りつつ新連載です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜



[第89回]


●SIZE

今回はSIZE関数について説明します。
SIZE関数のプログラムも短いプログラムです。



SIZEにはテキストエリアの残りバイト数が入ります。
関数というよりは、システム変数というほうが適切でしょう。
先頭の
SIZE:LHLD TXTUNF
でHLにTXTUNFの値が入ります。
TXTUNFにはTINY BASICの起動時にINITルーチンの中で初期値としてテキストエリアの先頭アドレスTXTBGN(オリジナルでは1017)が入れられます。
またNEWコマンドを実行時にもTXTUNFにはTXTBGNが入れられます。
INITは[第25回]で説明しました。
NEWは[第37回]で説明をしました。
ユーザーのテキストプログラムはTXTBGN(1017)から後ろに向かって書き込まれていきます。
TXTBGNは「中日電工版」TINY BASICでは9017です。
ユーザープログラムが書き込まれていくのに伴ってTXTUNFの中のアドレス値も後ろに向かって進んでいきます。
TXTUNFの値はつねに次にテキストプログラムが書き込まれるアドレスを示しています。
アドレス0459でHLに読み込まれたTXTUNFの値は次の
045C PUSH D
045D XCHG
でDEレジスタに移されます。
そして
045E LXI H,VARBGN
でHLにはVARBGN(1366)が入れられます。
VARBGNは変数アドレスの先頭です。
VARBGNは@(0)のアドレスです。
VARBGNは「中日電工版」TINY BASICでは9F66です。
ユーザーのテキストエリアは1017〜1365(「中日電工版」TINY BASICでは9017〜9F66)です。
初期状態ではテキストエリアの空きバイト数は
1366H−1017H=034FH(847)バイトです。
「中日電工版」TINY BASICでは
9F66H−9017H=0F4FH(3919)バイトです。
SIZEには
VARBGN−TXTUNFの値
を計算した値が入ることになります。
HLにはVARBGNが、DEにはTXTUNFの値が入れられています。
0461 CALL SUBDE
でHL−DEが計算されて結果がHLに入ります。
SUBDEは[第48回]で説明しました。

念のためテストをしてSIZEの値を確認してみました。
TINY BASICの起動直後にSIZEの値を確認します。
それから前回と同じABSのテストプログラムを入力したあとでもう一度SIZEの値を確認します。
そのあとZB3BASICに戻ってDMコマンドでメモリの中身を確認してみます。



TINY BASICの起動直後はSIZEの値は3919です。
前回と同じABSのテストプログラムを入力したあとのSIZEの値は3888です。
[Ctrl][Z]でZB3BASICに戻りました。
そのあとDMコマンドでアドレス9000〜903Fのメモリ内容を表示させました。
テキストエリアの先頭アドレスは9017です。
アドレス9017からは
0A 00 49 4E 50 …という値が入っていて、最初の000Aが行番号10の16進数でそれに続いてINPの文字コードがありますから、テキストエリアがアドレス9017から始まっていることが確認できます。
TXTUNFはオリジナルのTINYBASICでは1015、1016ですが「中日電工版」TINY BASICでは9015、9016です。
メモリダンプリストの9015、9016を見ると36 90になっています。
ユーザーのテキストプログラムを入力した結果、TXTUNFの値が9036になりました。
メモリダンプリストで確認してみると、アドレス9035に0Dがあってそこが行番号30の行の終わりであることがわかります。
その次のアドレスから後ろがテキストエリアの空きエリアですからTXTUNFにはその先頭アドレス9036が入ることになります。
そのときのSIZEの値を検証します。
VARBGNは「中日電工版」TINY BASICでは9F66です。

9F66H−9036H=0F30H(3888)バイト

計算の結果とSIZEの値は一致しました。

長々と説明をしてきましたが、今回でやっとオリジナルのTINY BASICの説明が完了しました。
次回は最後の締めくくりです。

復活!TINY BASIC[第89回]
2020.9.13upload

前へ
次へ
ホームページトップへ戻る