Best emulator

最高のエミュレータ

受賞者:Stephen Sykes

引用元:https://www.ioccc.org/2005/sykes/sykes.c

審査員・作者による説明:https://www.ioccc.org/2005/sykes/hint.text

動作

コモドールPET 2001のエミュレータ。 初のエミュレータ系作品で、今後いろいろなエミュレータが入賞することになる。

作者自身が作成したROMが添付されている。6502testはCPUのテスト。

$ gcc -o sykes sykes.c -lncurses

$ ./sykes 6502test
6502 test suite
Instruction tests
ADC passed
AND passed
ASL passed
BCC passed
BCS passed
BEQ passed
BIT passed
BMI passed
BNE passed
BPL passed
BRK passed
BVC passed
BVS passed
CLC passed
CLD passed
CLI passed
CLV passed
CMP passed
CPX passed

chessはチェスプログラム(作者の落選した過去の作品を再利用したとのこと)。

$ ./sykes chess
  +-+-+-+-+-+-+-+-+
8 |R|N|B|Q|K|B|N|R|
7 |P|P|P|P|P|P|P|P|
6 |.|.|.|.|.|.|.|.|
5 |.|.|.|.|.|.|.|.|
4 |.|.|.|.|.|.|.|.|
3 |.|.|.|.|.|.|.|.|
2 |p|p|p|p|p|p|p|p|
1 |r|n|b|q|k|b|n|r|
  +-+-+-+-+-+-+-+-+
   A B C D E F G H

d2d4のようにコマを動かす。

7 |P|P|P|P|P|P|P|P|
6 |.|.|.|.|.|.|.|.|
5 |.|.|.|.|.|.|.|.|
4 |.|.|.|.|.|.|.|.|
3 |.|.|.|.|.|.|.|.|
2 |p|p|p|p|p|p|p|p|
1 |r|n|b|q|k|b|n|r|
  +-+-+-+-+-+-+-+-+
   A B C D E F G H
d2d4
........................................
....
h7h5
  +-+-+-+-+-+-+-+-+
8 |R|N|B|Q|K|B|N|R|
7 |P|P|P|P|P|P|P|.|
6 |.|.|.|.|.|.|.|.|
5 |.|.|.|.|.|.|.|P|
4 |.|.|.|p|.|.|.|.|
3 |.|.|.|.|.|.|.|.|
2 |p|p|p|.|p|p|p|p|
1 |r|n|b|q|k|b|n|r|
  +-+-+-+-+-+-+-+-+
   A B C D E F G H

縦幅は24行で切れる。

解説

基本的には6502のCPUエミュレータ。 10進数モードと非公式命令は実装していないとのことだが、それでもこのサイズで実現されているのはすごい。

コード形状はPET 2001の筐体の特徴的な形状をそのまま表現している。

なお、hint.textには、ROMデータをどこからかダウンロードして実行する方法が書かれているが、著作権上の問題があるかもしれないので割愛する。 見たい人は自己責任で。