MYCPU80でCP/Mを!
超巨大基板の8080互換HCMOS・CPUでCP/Mを走らせてしまおうという、なんとも狂気なプロジェクトです!
[第70回]
●倍精度実数演算プログラムの組込み(3)
紅葉も見ごろとなりましたこの連休でしたが、もちろん私はといえば、とてもとても紅葉狩りどころではありませんで、ひたすらMYCPU80にZB3BASICを組み込む作業をしておりました。
前にも書いたことですが、24KBもあるZ80のマシン語プログラムを8080の命令に置き換えるという作業はなかなかに苦しい作業です。
なにしろZ80にあって8080にはない命令がそれこそ山ほどあって、それを8080の命令に置き換えなければいけません。
レジスタだってZ80は8080の倍以上あります。
フラグも複雑です。
Z80の命令を8080の命令に置き換える過程で、ついうっかりフラグの設定を間違えたり、見落としたりしてしまい、そのために1日も2日も異常な動作に悩むことになります。
なかなかにつらい作業です。
しかし徐々にではありますが、やっと努力の成果が見えてきました。
その成果報告です。
まずは、倍精度のSIN関数です。
10 FOR A#=0 TO 90 STEP 5 20 PRINT A#,SID(A#) 30 NEXT A# 40 PRINT "end" >r. 0 0 5 0.8715574274765816D-1 10 0.1736481776669303 15 0.2588190451025207 20 0.3420201433256687 25 0.4226182617406994 30 0.5 35 0.5735764363510461 40 0.6427876096865393 45 0.7071067811865475 50 0.766044443118978 55 0.8191520442889917 60 0.8660254037844386 65 0.90630778703665 70 0.9396926207859083 75 0.9659258262890682 80 0.984807753012208 85 0.9961946980917455 90 1 end |
10 FOR A#=0 TO 90 STEP 5 20 PRINT A#,COD(A#) 30 NEXT A# 40 PRINT "end" >r. 0 1 5 0.9961946980917456 10 0.9848077530122081 15 0.9659258262890682 20 0.9396926207859083 25 0.90630778703665 30 0.8660254037844386 35 0.8191520442889918 40 0.766044443118978 45 0.7071067811865475 50 0.6427876096865393 55 0.5735764363510461 60 0.5 65 0.4226182617406995 70 0.3420201433256688 75 0.2588190451025208 80 0.1736481776669304 85 0.8715574274765818D-1 90 0 end |
10 FOR A#=0 TO 10 20 PRINT A#,SQR(A#) 30 NEXT A# 40 PRINT "end" >r. 0 0 1 1 2 1.414213562373095 3 1.732050807568877 4 2 5 2.23606797749979 6 2.449489742783178 7 2.64575131106459 8 2.82842712474619 9 3 10 3.162277660168379 end |