ワンボードマイコンをつくろう!(パソコンの原点はここから始まった)
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 |