ワンボードマイコンをつくろう!(パソコンの原点はここから始まった)
TK80ソフトコンパチブル!8080、Z80マシン語からBASICまでこれ1台でこなせます
| 当記事は2009年11月から「TTLでCPUをつくろう!」というタイトルの もとにほとんど毎日連載をしてきたものを再編集したものです。 |
2011.7.1 前へ 次へ 目次へ戻る ホームページトップへ戻る |
| ☆ND80ZVでBASICを(2) ND80ZVに搭載予定のBASICはハンパではありません。 浮動小数点演算をこなし、さらに三角関数、対数計算までできるのです。 しかも、倍精度での演算もできてしまいます。 |
[第64回]
●SIN、COS、TAN(倍精度)
前回はZ80BASICの三角関数の機能を紹介しました。
その前には、SQR(平方根)関数を倍精度演算でもご紹介いたしましたので、すると三角関数はどうなの?
という疑問を持たれたかもしれません。
ええ。
三角関数も倍精度で計算させることができるのです。
そこで、今回は倍精度の三角関数の計算についてご紹介申し上げてまいりますけれど、せっかくの機会ですので、前回の単精度実数型の三角関数のサンプルプログラムを倍精度に直しながら、Z80BASICのいろいろな編集機能についてもあわせてご紹介してまいりたいと思います。
実際の作業の過程をログファイルでお見せします。
logfile nd80zlog\07110749.txt open
ND80ZVに接続しました
0001 0000 - z1000 00C3 - *** nd80z3 basic ****
>h.
TEXT 8004-8198
ヘンスウ DFFB-DFFF
>.
5 ON ERROR GOTO *ERR
10 PRINT "rad","sin","cos","tan"
20 A=0:A$="0":GOSUB *SAN
30 A=PI/6:A$="pai/6":GOSUB *SAN
40 A=PI/4:A$="pai/4":GOSUB *SAN
50 A=PI/3:A$="pai/3":GOSUB *SAN
60 A=PI/2:A$="pai/2":GOSUB *SAN
70 A=PI:A$="pai":GOSUB *SAN
80 A=PI*1.5:A$="1.5pai":GOSUB *SAN
90 A=PI*2:A$="2pai":GOSUB *SAN
100 STOP
110 *SAN
120 PRINT A$,SIN(A),COS(A),TAN(A)
130 RETURN
190 *ERR
200 PRINT "***"
210 RESUME NEXT
|
>sl a=
20 A=0:A$="0":GOSUB *SAN
30 A=PI/6:A$="pai/6":GOSUB *SAN
40 A=PI/4:A$="pai/4":GOSUB *SAN
50 A=PI/3:A$="pai/3":GOSUB *SAN
60 A=PI/2:A$="pai/2":GOSUB *SAN
70 A=PI:A$="pai":GOSUB *SAN
80 A=PI*1.5:A$="1.5pai":GOSUB *SAN
90 A=PI*2:A$="2pai":GOSUB *SAN
|
>xl a=,a#=
20 A=0:A$="0":GOSUB *SAN
30 A=PI/6:A$="pai/6":GOSUB *SAN
40 A=PI/4:A$="pai/4":GOSUB *SAN
50 A=PI/3:A$="pai/3":GOSUB *SAN
60 A=PI/2:A$="pai/2":GOSUB *SAN
70 A=PI:A$="pai":GOSUB *SAN
80 A=PI*1.5:A$="1.5pai":GOSUB *SAN
90 A=PI*2:A$="2pai":GOSUB *SAN
|
>sl a) 120 PRINT A$,SIN(A),COS(A),TAN(A) |
>xl a),a#) 120 PRINT A$,SIN(A),COS(A),TAN(A) 120 PRINT A$,SIN(A),COS(A),TAN(A) 120 PRINT A$,SIN(A),COS(A),TAN(A) |
>list
5 ON ERROR GOTO *ERR
10 PRINT "rad","sin","cos","tan"
20 A#=0:A$="0":GOSUB *SAN
30 A#=PI/6:A$="pai/6":GOSUB *SAN
40 A#=PI/4:A$="pai/4":GOSUB *SAN
50 A#=PI/3:A$="pai/3":GOSUB *SAN
60 A#=PI/2:A$="pai/2":GOSUB *SAN
70 A#=PI:A$="pai":GOSUB *SAN
80 A#=PI*1.5:A$="1.5pai":GOSUB *SAN
90 A#=PI*2:A$="2pai":GOSUB *SAN
100 STOP
110 *SAN
120 PRINT A$,SIN(A#),COS(A#),TAN(A#)
130 RETURN
190 *ERR
200 PRINT "***"
210 RESUME NEXT
|
>run rad sin cos tan 0 0 1 0 *** pai/6 0 -1 0 *** pai/4 0 -1 0 *** pai/3 0 -1 0 *** pai/2 0 -1 0 *** pai 0 -1 0 *** 1.5pai 0 -1 0 *** 2pai 0 -1 0 break in 100 |
>list
5 ON ERROR GOTO *ERR
10 PRINT "rad","sin","cos","tan"
20 A#=0:A$="0":GOSUB *SAN
30 A#=PI/6:A$="pai/6":GOSUB *SAN
40 A#=PI/4:A$="pai/4":GOSUB *SAN
50 A#=PI/3:A$="pai/3":GOSUB *SAN
60 A#=PI/2:A$="pai/2":GOSUB *SAN
70 A#=PI:A$="pai":GOSUB *SAN
80 A#=PI*1.5:A$="1.5pai":GOSUB *SAN
90 A#=PI*2:A$="2pai":GOSUB *SAN
100 STOP
110 *SAN
120 PRINT A$,SIN(A#),COS(A#),TAN(A#)
130 RETURN
190 *ERR
200 PRINT "***"
210 RESUME NEXT
> 5'ON ERROR GOTO *ERR
|
>run
rad sin cos tan
0 0 1 0
ERR: 9
30 A#=PI/6:A$="pai/6":GOSUB *SAN
|