PC-6001初代でのWAITの入り方

RAM領域でのループ確認用プログラム。 割り込み要因をすべて排除した後に、自身の命令にジャンプを繰り返す。

C000: DI		; INT OFF
C001: XOR A
C002: OUT (92H),A	; CRTC OFF
C004: JP C004H

ROM領域でのループ確認用プログラム。 割り込み要因をすべて排除した後に、自身の命令にジャンプを繰り返す。

0CB2: JP NZ,0CBAH	; ROM:メモリアクセスのある命令
0CB5: AND E
0CB6: LD C,A
0CB7: LD A,B
0CB8: AND D
0CB9: JP (HL)

C000: DI		; INT OFF
C001: XOR A
C002: LD BC,0000H
C005: LD DE,0000H
C008: LD HL,0CB2H
C002: OUT (92H),A	; CRTC OFF
C007: JP (HL)

■ RAM内ループ

実行される命令はJP C000H。最初のM1がLOWになり、MREQが発行されるが、 ここでWAITがLOWになるのでM1でWAITが入ることが確認できる。その後、RFSHが LOWになり、DRAMリフレッシュが行われるが、ここのMREQではWAITが入らない。 ジャンプ先アドレス(2バイト)を取得する際にもMREQが発行されるが、 ここでもWAITは発生していない。


■ ROM内ループ

実行される命令はJP (HL)。RAM領域と同様に、M1でWAITが入る。 また、オペランドとして条件ジャンプ先のアドレスの取得をする際に メモリアクセスが2回(16bitアドレス取得)発生しているが、 この時にも1CLOCKのWAITが入っていることが読み取れる。