대부분의 에뮬레이터는 특정 명령어가 룩업 테이블에서 차지하는 사이클 수를 저장 한 다음 필요에 따라 조건부 사이클을 추가합니다 (예 : 페이지 경계를 넘는 경우).특정 명령에서 6502에 걸리는 사이클 수를 절차 적으로 결정할 수 있습니까?
어드레싱 모드와 메모리 읽기/쓰기에만 기반하여 명령어가 취할 사이클 수를 절차 적으로 결정할 수있는 방법이 있는지 궁금합니다.
예를 들어, 즉시 또는 상대 주소 지정을 사용하는 모든 명령어는 2 사이클이 걸린다는 것을 알았습니다.
모든 제로 페이지 명령어는 3 사이클을 소비하며, 내부 메모리를 변경하면 추가로 2 사이클이 소요됩니다.
인덱싱 된 모든 제로 페이지 명령은 4 사이클을 수행하고 메모리를 내부에서 변경하는 경우 추가로 2 사이클을 소요합니다.
... 등등.
따라서 위와 같은 명령어의 사이클 수를 결정하기위한 절차가 문서화되어 있습니다. 그러한 공식에서 결정론을 깨뜨릴 수있는 예외가 있습니까?
수동으로 보낸 이전 Atari 8 비트 시리즈 주변 장치에 대한 정확한 타이밍을 얻으려면 항상 [6502 명령어 세트] (http://www.6502.org/tutorials/6502opcodes.html)와 같은 참조를 사용해야했습니다. 비트 당 52 사이클 또는 19 사이클 (1 mhz 6502)에서 직렬 인터페이스에서 한번에 한 비트 씩 수신됩니다. (~ 19,200 비트/초 또는 ~ 52,600 비트/초). – rcgldr