ワンボードマイコンをつくろう!(パソコンの原点はここから始まった)
TK80ソフトコンパチブル!8080、Z80マシン語からBASICまでこれ1台でこなせます
| 当記事は2009年11月から「TTLでCPUをつくろう!」というタイトルの もとにほとんど毎日連載をしてきたものを再編集したものです。 |
2011.6.30 前へ 次へ 目次へ戻る ホームページトップへ戻る |
| ☆ND80ZVでBASICを。 とんでもない機能追加を思いついてしまいました。 ND80ZVでBASICを実行できるようにしようというのです。 それも浮動小数点演算ができて、三角関数や対数計算までできる本物のBASICです! |
[第54回]
●今回もデバッグ作業の続きです
さて前回までのデバッグでテストプログラムの行番号70までは正しく実行されることが確認できました。
そうなれば、問題はその後ろ、80〜100にあることは誰でもわかります。
いくらなんでもそこまでわかっていて、そのまま実行するのは時間のムダというものです。
80〜100はFOR NEXT文です。
FOR NEXTはその前の50〜70でも実行しています。
ただちょいと気になりますのは、50〜70は変数A%を使った整数型のFOR NEXT文であるのに対して、80〜100は変数Aを使った実数型のFOR NEXT文である点です。
ええ。FOR NEXT文については、整数型と実数型で扱いが少し異なっているのです。
でもまあ、とりあえずは、行番号90のPRINT SQR(A)を外してみることにしました。

前回でのデバッグで追加した75のSTOP文をコメント行にして、ついでに90のPRINT文もコメント文にします。
代わりに85のPRINT A,を追加しました。
で、実行してみたのですが。
あ。その結果につきましては、ログファイルでお見せします。
logfile nd80zlog\06230904.txt open
ND80ZVに接続しました
send[read+]
0001 0000 - zzentry
1000 00C3 - send goto zentry
>help
TEXT 8004-80F3
ヘンスウ DFEF-DFFF
>list
10 A%=123
15 'STOP
20 B%=456
30 C%=A%+B%
40 PRINT "a%=";A%,"b%=";B%,"c%=";C%
45 'STOP
50 FOR A%=0 TO 10
60 PRINT A%,
70 NEXT A%
75 'STOP
80 FOR A=0 TO 10
90 PRINT SQR(A)
100 NEXT A
> 90'PRINT SQR(A)
>85print a,
>list
10 A%=123
15 'STOP
20 B%=456
30 C%=A%+B%
40 PRINT "a%=";A%,"b%=";B%,"c%=";C%
45 'STOP
50 FOR A%=0 TO 10
60 PRINT A%,
70 NEXT A%
75 'STOP
80 FOR A=0 TO 10
85 PRINT A,
90 'PRINT SQR(A)
100 NEXT A
>run
ndremote.exeを終了しました
logfile closed at Wed Jun 23 09:04:11 2010
|


うーん。
実行してみた結果、残念ながら、かすりもしませんでした。
せっかくここまで来て、これじゃだめだったのです。

なんだ。なんだ。
わからんではないか。
ということで、いささか、やけになって、方角違いのことをやっています。
80〜100の文を整数型に直してしまいました。
この変更作業も前回説明しましたスクリーンエディタで、カーソルを各行まで移動して行っています。
これができるとほんと、便利です。
実行した結果は、またログファイルでお見せします。
logfile nd80zlog\06230907.txt open
ND80ZVに接続しました
send[read+]
0001 0000 - zzentry
1000 00C3 - send goto zentry
>help
TEXT 8004-8103
ヘンスウ DFEF-DFFF
>list
10 A%=123
15 'STOP
20 B%=456
30 C%=A%+B%
40 PRINT "a%=";A%,"b%=";B%,"c%=";C%
45 'STOP
50 FOR A%=0 TO 10
60 PRINT A%,
70 NEXT A%
75 'STOP
80 FOR A=0 TO 10
85 PRINT A,
90 'PRINT SQR(A)
100 NEXT A
> 75 STOP
>71abc=123.5
>72print "abc=";abc
>list
10 A%=123
15 'STOP
20 B%=456
30 C%=A%+B%
40 PRINT "a%=";A%,"b%=";B%,"c%=";C%
45 'STOP
50 FOR A%=0 TO 10
60 PRINT A%,
70 NEXT A%
71 ABC=123.5
72 PRINT "abc=";ABC
75 STOP
80 FOR A=0 TO 10
85 PRINT A,
90 'PRINT SQR(A)
100 NEXT A
>run
a%=123 b%=456 c%=579
0 1 2 3 4 5
6 7 8 9 10 abc=123.5
break in 75
> 75'STOP
> 80 FOR A%=0 TO 10
> 85'PRINT A,
> 90 PRINT SQR(A%)
> 100 NEXT A%
> 85 PRINT A%,
>run
a%=123 b%=456 c%=579
0 1 2 3 4 5
6 7 8 9 10 abc=123.5
0 0
1 1
2 1.41421
3 1.73205
4 2
5 2.23607
6 2.44949
7 2.64575
8 2.82843
9 3
10 3.16228
>/save bstest.txt
ndremote.exeを終了しました
logfile closed at Wed Jun 23 09:07:16 2010
|