復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第410回]
●F80でのまさかのエラーの顛末です
本日も結局時間がなくなってしまいましたので、どこまで書けるかわかりませんが、とにかくできるところまで書くことにいたします。
[第408回]で書きましたように、思ってもみなかったF80(FORTRAN80)でのまさかのエラーに直面してしまいました。
さてどうするか?
F80(FORTRAN80)はもう1年ほど前、昨年7月に、作ったばかりのZB3DOS上で動くことを確かめております([第168回])。
それからこっちかなりたっぷりとあれこれいじってきましたから、一体そのどこがいけなかったのかなんて、それはもう考えたってどだい無理つうもんです。
ファイルオープンができないらしいということからすると、FORTRAN80プログラムのかなり始めのほうでトラブルが発生していることになります。
Zフォルダを新設したりしまして、そうとうファイルオープンのあたりもいじくってしまいましたから、ひょっとするとそのあたりかもしれません。
こういう場合には。
ブレークポイントを設定しながら、エラーが発生するまで、少しずつ気長にトレースを続けていくというやり方が、回り道のようでいて、結果的には効果的であるということをよく経験しています。
今回の場合には、*の表示に=HELLO と入力したところから始まっているわけですから、それがプログラムのどのあたりかということがわかれば、あとはそれから先に少しずつ進んでいくことができます。
有り難いことにCP/Mアプリケーションは大抵はファンクションコールを利用しています。
アドレス0005Hのコールです。
そこでFORTRAN80の逆アセンブルリストをTeraPadで開いて、CD0500という文字列で検索をかけて、それを順にチェックしていきました。
すると。
ほどなくして、入口がみつかりました。
63B7 3E2A LD A,2A 63B9 CDF763 CALL $63F7 63BC 0E0A LD C,0A 63BE 11005B LD DE,$5B00 63C1 CD0500 CALL $0005 63C4 3E0A LD A,0A 63C6 CDF763 CALL $63F7 63C9 D1 POP DE 63CA C1 POP BC 63CB 3A015B LD A,($5B01) 63CE 21025B LD HL,$5B02 63D1 E5 PUSH HL 63D2 22515B LD ($5B51),HL 63D5 85 ADD A,L 63D6 6F LD L,A 63D7 3E00 LD A,00 63D9 8C ADC A,H 63DA 67 LD H,A 63DB 360D LD (HL),0D 63DD 23 INC HL 63DE 3E0A LD A,0A 63E0 77 LD (HL),A 63E1 E1 POP HL 63E2 C9 RET |
>bp cc03 >/cpm,d drive D ................................ drive C ................................ drive B ................................ drive A ................................ A>f80 A F B C D E H L A'F' B'C' D'E' H'L' PC SP IX IY I SZ H PNC 0044 0000 0001 0000 0000 0000 0000 0000 CC03 F7FE 0000 0000 FF 01000100 >bp@63c4 >rt@ *=HELLO A F B C D E H L A'F' B'C' D'E' H'L' PC SP IX IY I SZ H PNC 4F42 000A 5B00 5B01 0000 0000 0000 0000 63C4 D3FD 0000 0000 FF 01000010 >dm@5b00,5b30 5B00 50 06 3D 48 45 4C 4C 4F-00 00 00 00 00 00 00 00 P.=HELLO........ 5B10 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 5B20 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 5B30 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ >bp@63e1 >rt@ A F B C D E H L A'F' B'C' D'E' H'L' PC SP IX IY I SZ H PNC 0A08 0000 0001 5B09 0000 0000 0000 0000 63E1 D3FF 0000 0000 FF 00001000 >dm@5b00,5b0f 5B00 50 06 3D 48 45 4C 4C 4F-0D 0A 00 00 00 00 00 00 P.=HELLO........ >bp@63e2 >rt@ A F B C D E H L A'F' B'C' D'E' H'L' PC SP IX IY I SZ H PNC 0A08 0000 0001 5B02 0000 0000 0000 0000 63E2 D401 0000 0000 FF 00001000 > |
646E D5 PUSH DE 646F 0E16 LD C,16 6471 CD0500 CALL $0005 6474 3C INC A 6475 CAAC60 JP Z,$60AC 6478 E1 POP HL 6479 CDA764 CALL $64A7 647C 0E0F LD C,0F 647E CD0500 CALL $0005 6481 3C INC A 6482 CAA660 JP Z,$60A6 |
>bp@6471 >rt@ A F B C D E H L A'F' B'C' D'E' H'L' PC SP IX IY I SZ H PNC FF6A 0016 5A71 E00A 0000 0000 0000 0000 6471 D3F5 0000 0000 FF 01101010 >bp@6475 >rt@ A F B C D E H L A'F' B'C' D'E' H'L' PC SP IX IY I SZ H PNC 0100 0016 5A71 5A91 0000 0000 0000 0000 6475 D3F5 0000 0000 FF 00000000 >bp@647e >rt@ A F B C D E H L A'F' B'C' D'E' H'L' PC SP IX IY I SZ H PNC 0048 000F 5A71 5A71 0000 0000 0000 0000 647E D3F7 0000 0000 FF 01001000 >dm@5a70,5a7f 5A70 00 00 48 45 4C 4C 4F 20-20 20 52 45 4C 00 00 00 ..HELLO REL... |