MYCPU80でCP/Mを!
超巨大基板の8080互換HCMOS・CPUでCP/Mを走らせてしまおうという、なんとも狂気なプロジェクトです!
[第68回]
●MYCPU80の送受信プログラムについて
MYCPU80をご購入いただいたお客様からご質問のメールをいただきました。
MYCPU80(TK80回路)操作説明書の9章モニタプログラムリスト の「SIRIAL OUTPUT ROUTINE」がよくわからないのですが、お聞きしてよいでしょうか。(INPUTもですが) 下記のコメント欄に推測と疑問点を記入していますが、教えてもらえませんか。 記 SOUT:MOV C,A // 送信する1バイトデータ(例えば80)の入ったAレジスタをCレジスタに転送する。 SOUT2:IN 98 // アドレス98のI/Oデバイスから1バイトデータがAに入ってくる。→何が入るのか?。 // XXXX XX1Xがパソコン→USB→PIC→Aレジスタ(受付が出来るまで待つ?) ANI 02 JZ SOUT2 MOV A,C // A←80 OUT 94 // PICにデータA(=80)を出力する。PICは、いつパソコンに送信するのか?。 MVI A,F9; I/Oaddress 94 "out" & STROBE ON // F=I/Oaddress 94 "out" , 9=STROBE ON か?。 OUT 98 // A(=F9?)をアドレス98のI/Oデバイスに出力する。→なんのために?。 SOUT3:IN 98 // Aには何が入ってくるのか?。 ANI 02 // A=XXXX XX0Xになるのを待つ?。 JNZ SOUT3 MVI A,FB; I/Oaddress 94 "out" & STROBE OFF // F=I/Oaddress 94 "out" , B=STROBE ON か?。 OUT 98 // A(=F9?)をアドレス98のI/Oデバイスに出力する。→なんのために?。 RET |
;SERIAL OUTPUT ROUTINE ; 027C 4F SOUT:MOV C,A 027D DB98 SOUT2:IN 98 027F E602 ANI 02 0281 CA7D02 JZ SOUT2 0284 79 MOV A,C 0285 D394 OUT 94 0287 3EF9 MVI A,F9; I/Oaddress 94 "out" & STROBE ON 0289 D398 OUT 98 028B DB98 SOUT3:IN 98 028D E602 ANI 02 028F C28B02 JNZ SOUT3 0292 3EFB MVI A,FB; I/Oaddress 94 "out" & STROBE OFF 0294 D398 OUT 98 0296 C9 RET ; |
;SERIAL INPUT ROUTINE ; ORG $02A0 ; 02A0 DB98 SIN:IN 98 02A2 0F RRC 02A3 DAA002 JC SIN 02A6 3EFE MVI A,FE;BUSY 02A8 D398 OUT 98 02AA DB94 IN 94 02AC 4F MOV C,A 02AD 3EFF MVI A,FF;READY 02AF D398 OUT 98 02B1 79 MOV A,C 02B2 C9 RET ; |