CASLで、LC共振回路の計算を・・・無謀
まず、√(ルート)の計算って・・・
できるのか?
自力では無理なので、チャット(Copilot)と会話しながら・・・
しかも、CASLの初版なので、制約がある。命令数が少ない。
汎用レジスタも0~4と5つ
足りない分はアドレスへ格納する
チャット君もCASLは理解してくれたが、初版制約を教えながら進めた
いまのところ、完成したのが、少数1位まで・・・
しかも、精度はいまいち・・・
CASL結果 電卓
SQRT(4)=2.0 2.00
SQRT(5)=2.1 2.23
SQRT(25)=5.0 5.00
SQRT(2)=1.2 1.41
計算は5秒くらいかかる
ちなみに、実機はPC-G850VSで実行した
そう、この精度で・・・LC共振回路の計算なんて・・・無謀
以下のソースで、680N DC 25 が√25
結果は、GR0に整数部、GR1に少数1桁が格納される
さらに少数2桁のロジックを実装するともっと複雑に
処理時間もかかる・・・ここまでにしとくね
10SQRT START
20 LD GR1,N
30 LD GR2,ONE
40 LD GR3,ZERO
50LOOP CPA GR1,ODD
60 JMI INTEND
70 SUB GR1,ODD
80 ADD GR3,ONE
90 ADD GR2,TWO
100 ST GR2,ODD
110 JMP LOOP
120INTEND ST GR3,K
130 LD GR0,ZERO
140 ST GR0,N100
150 LD GR4,ZERO
160 ST GR4,COUNT
170M100LP LD GR0,N100
180 ADD GR0,N
190 ST GR0,N100
200 LD GR4,COUNT
210 ADD GR4,ONE
220 ST GR4,COUNT
230 CPA GR4,HUND
240 JMI M100LP
250 LD GR4,ZERO
260 ST GR4,DEC1
270DLOOP LD GR4,DEC1
280 ADD GR4,ONE
290 ST GR4,DEC1
300 LD GR0,ZERO
310 ST GR0,A
320 LD GR4,ZERO
330 ST GR4,COUNT
340T10LP LD GR0,A
350 ADD GR0,K
360 ST GR0,A
370 LD GR4,COUNT
380 ADD GR4,ONE
390 ST GR4,COUNT
400 CPA GR4,TEN
410 JMI T10LP
420 LD GR0,A
430 ADD GR0,DEC1
440 ST GR0,A
450 LD GR1,ZERO
460 ST GR1,SUMSQ
470 LD GR4,A
480 ST GR4,COUNT
490SQLOOP LD GR1,SUMSQ
500 ADD GR1,A
510 ST GR1,SUMSQ
520 LD GR4,COUNT
530 SUB GR4,ONE
540 ST GR4,COUNT
550 CPA GR4,ZERO
560 JMI SQEND
570 JMP SQLOOP
580SQEND LD GR1,SUMSQ
590 CPA GR1,N100
600 JMI SAVE
610 JMP DEND
620SAVE LD GR0,DEC1
630 ST GR0,BEST1
640 JMP DLOOP
650DEND LD GR0,BEST1
660 ST GR0,DEC1
665 LD GR0,K
667 LD GR1,DEC1
670 RET
680N DC 25
690K DS 1
700ODD DC 1
710ONE DC 1
720TWO DC 2
730ZERO DC 0
740N100 DS 1
750COUNT DS 1
760TEN DC 10
770HUND DC 100
780A DS 1
790SUMSQ DS 1
800DEC1 DS 1
810BEST1 DS 1
820 END