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
;
|
