標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第551回]

●XLコマンドの改良

前回、前々回で、BASICのプログラムの一部文字列を一括置き換えするために、XLコマンドを使用しました。
XLコマンドの機能そのものはなかなかに便利なのですが、置き換えの対象となったBASICプログラム行を表示するときに、置き換え後のリストを表示するのではなくて、置き換え前のリストを表示するようになっていました。
これは、早い話が手抜きでありました。

処理の前半部分は、文字列検索を行うSLコマンドの処理と同じなので、そのようになっていたのでした。
このコマンドを作ったのはもうずいぶん昔のことなのですが、手を加えるのも面倒なので、ずっとそういうことで来てしまいました。

でも、前回、XLコマンドの操作の説明をしておりまして。
うう。
やっぱり、あれです。
置き換え後のリストが表示されない、つうのは、せっかくの便利な機能なのに、いかにも中途半端な印象なのですよねえ。
むむ。なんとかしたいなあ。

で。
なんとか、してしまいました。
今回は、そのご報告です。

まずは前回の置き換え前のリストを用意いたしました。

>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

さて、ではXLコマンドを使ってみましょう。
うまくいきましたら、どうぞ、拍手ご喝采を。

 
>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

おお。
うまくいきました。

続いて、piもpi#に置き換えてみましょう。

>xl pi,pi#
    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#)
   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#)

この行は1行中に置き換えるところが3箇所もあります。
同じ行が3回表示されていますが、よく見てみますと、前から順に1箇所ずつ置き換わっている様子がはっきりわかります。
いやあ。実に楽しいですねえ。

このところは[第549回]でも同じことをやっていますから、見比べてみてくださいませ。

念の為に、listコマンドで置き換え後のリストを表示させてみましょう。

>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 

間違い無く、きちんと置き換えができました。
2010.7.13upload

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