MYCPU80でCP/Mを!
超巨大基板の8080互換HCMOS・CPUでCP/Mを走らせてしまおうという、なんとも狂気なプロジェクトです!
[第39回]
●ブレークポイントを設定して追跡してみました
前回の続きです。
テストプログラムのアドレス820Bと8221の間でおかしなことがおきている、というところまではわかりました。
正常ならばアドレス8221ではBレジスタとDレジスタが00になって、浮動小数点レジスタのRBレジスタの仮数部が6ビット右にシフトされるはずでした。
ところが結果はBレジスタは00になりましたが、DレジスタはFFで、RBレジスタの仮数部はゼロクリアされてしまいました。
しかしプログラムを見る限りではDレジスタがFFになるわけはありません。
どう考えても変です。
下は前回もお見せしたテストプログラムのその部分です。
;shift right RB & RBE++;till A=0 8206 47 RBFA4:MOV B,A 8207 3A10F1 LDA RB7 820A 57 MOV D,A 820B CD1D83 CALL FADSP 820E 210FF1 RBFA42:LXI H,RB6 8211 0E04 MVI C,04 8213 AF XRA A;reset cf 8214 7E RBFA43:MOV A,M 8215 1F RAR 8216 77 MOV M,A 8217 2B DCX H 8218 0D DCR C 8219 C21482 JNZ RBFA43 821C 14 INR D 821D 05 DCR B 821E C20E82 JNZ RBFA42 8221 CD1D83 CALL FADSP 8224 7A MOV A,D 8225 3210F1 STA RB7 8228 3AFFF1 RBFA5:LDA FA8 |
>bp 821c >rt 820B 800052AEF000017801CC 00FA481075D1 FA95 0684 FA12 F200 A F B C D E H L PC SP SZ H P C E845 0600 FA12 F10B 821C F7F0 01000101 >bp 821e >rt A F B C D E H L PC SP SZ H P C E805 0500 FB12 F10B 821E F7F0 00000101 >bp 821c >rt A F B C D E H L PC SP SZ H P C 7444 0500 FB12 F10B 821C F7F0 01000100 >bp 821e >rt A F B C D E H L PC SP SZ H P C 7400 0400 FC12 F10B 821E F7F0 00000000 >bp 821c >rt A F B C D E H L PC SP SZ H P C BA44 0400 FC12 F10B 821C F7F0 01000100 >bp 821e >rt A F B C D E H L PC SP SZ H P C BA04 0300 FD12 F10B 821E F7F0 00000100 >bp 821c >rt A F B C D E H L PC SP SZ H P C 5D44 0300 FD12 F10B 821C F7F0 01000100 >bp 821e >rt A F B C D E H L PC SP SZ H P C 5D00 0200 FE12 F10B 821E F7F0 00000000 >bp 821c >rt A F B C D E H L PC SP SZ H P C AE45 0200 FE12 F10B 821C F7F0 01000101 >bp 821e >rt A F B C D E H L PC SP SZ H P C AE01 0100 FF12 F10B 821E F7F0 00000001 >bp 8211 >rt A F B C D E H L PC SP SZ H P C AE01 0100 FF12 F10F 8211 F7F0 00000001 >bp 821c >rt A F B C D E H L PC SP SZ H P C D744 0100 FF12 F10B 821C F7F0 01000100 >bp 821e >rt A F B C D E H L PC SP SZ H P C D794 FF00 0012 F10B 821E F7F0 10010100 >/exit リモート接続を終了しました logfile closed at Mon Sep 01 21:51:28 2014 |
logfile nd80zlog\09012231.txt open zb3dos3m 2014.3.31 by Chunichidenko MYCPU80に接続しました *** nd80z3 basic **** >p.sid(30) 0.5 >/load sqrtest.txt 10 FOR A=0 TO 10 20 PRINT "a=";A,"sqr(a)=";SQR(A) 30 NEXT A 40 PRINT "end" data end >r. a= 0 sqr(a)= 0 a= 1 sqr(a)= 1 a= 2 sqr(a)= 1.41421 a= 3 sqr(a)= 1.73205 a= 4 sqr(a)= 2 a= 5 sqr(a)= 2.23607 a= 6 sqr(a)= 2.44949 a= 7 sqr(a)= 2.64575 a= 8 sqr(a)= 2.82843 a= 9 sqr(a)= 3 a= 10 sqr(a)= 3.16228 end >. 10 FOR A=0 TO 10 20 PRINT "a=";A,"sqr(a)=";SQR(A) 30 NEXT A 40 PRINT "end" > 10 FOR A=0 TO 90 step 5 > 20 PRINT "a=";A,"sid(a)=";sid(A) >. 10 FOR A=0 TO 90 STEP 5 20 PRINT "a=";A,"sid(a)=";SID(A) 30 NEXT A 40 PRINT "end" >/save sidtest.txt 10 FOR A=0 TO 90 STEP 5 20 PRINT "a=";A,"sid(a)=";SID(A) 30 NEXT A 40 PRINT "end" >r. a= 0 sid(a)= 0 a= 5 sid(a)= 0.871557E-1 a= 10 sid(a)= 0.173648 a= 15 sid(a)= 0.258819 a= 20 sid(a)= 0.34202 a= 25 sid(a)= 0.422618 a= 30 sid(a)= 0.5 a= 35 sid(a)= 0.573576 a= 40 sid(a)= 0.642787 a= 45 sid(a)= 0.707107 a= 50 sid(a)= 0.766044 a= 55 sid(a)= 0.819152 a= 60 sid(a)= 0.866025 a= 65 sid(a)= 0.906308 a= 70 sid(a)= 0.939692 a= 75 sid(a)= 0.965926 a= 80 sid(a)= 0.984808 a= 85 sid(a)= 0.996194 a= 90 sid(a)= 1 end >. 10 FOR A=0 TO 90 STEP 5 20 PRINT "a=";A,"sid(a)=";SID(A) 30 NEXT A 40 PRINT "end" > 20 PRINT "a=";A,"cod(a)=";cod(A) >. 10 FOR A=0 TO 90 STEP 5 20 PRINT "a=";A,"cod(a)=";COD(A) 30 NEXT A 40 PRINT "end" >r. a= 0 cod(a)= 1 a= 5 cod(a)= 0.996195 a= 10 cod(a)= 0.984808 a= 15 cod(a)= 0.965926 a= 20 cod(a)= 0.939693 a= 25 cod(a)= 0.906308 a= 30 cod(a)= 0.866025 a= 35 cod(a)= 0.819152 a= 40 cod(a)= 0.766044 a= 45 cod(a)= 0.707107 a= 50 cod(a)= 0.642788 a= 55 cod(a)= 0.573577 a= 60 cod(a)= 0.5 a= 65 cod(a)= 0.422618 a= 70 cod(a)= 0.34202 a= 75 cod(a)= 0.258819 a= 80 cod(a)= 0.173648 a= 85 cod(a)= 0.871559E-1 a= 90 cod(a)= 0 end >/exit リモート接続を終了しました logfile closed at Mon Sep 01 22:34:11 2014 |