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
       |