PC-6001MkIISR MODE1/MODE5でのWAITの入り方

現在、6001MkII/6601が手元にないので、 MkIISRを使って、MODE1とMODE5でM1 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)

■ PC-6001MkIISR MODE1でRAM内ループ

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


■ PC-6001MkIISR MODE1でROM内ループ

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


■ PC-6001MkIISR MODE5でRAM内ループ

MODE1と同じ結果。


■ PC-6001MkIISR MODE5でROM内ループ

MODE1と同じ結果。