引用元:https://www.ioccc.org/2006/toledo2/toledo2.c
審査員・作者による説明:https://www.ioccc.org/2006/toledo2/hint.text
動作
8080エミュレータ。C.BASICファイルをCという名前のファイルにコピーしてから起動する。
$ cp C.BASIC C
$ gcc -o toledo2 toledo2.c
$ ./toledo2
OK
>
BASIC環境なので、プログラムを入力して実行する例。
>10 PRINT "Hello, world!"
>LIST
10 PRINT "Hello, world!"
OK
>RUN
Hello, world!
OK
終わるにはCtrl+Z。
終わるときにsegfaultするのは仕様。
解説
初のエミュレータ系作品だった[[2005/sykes]]は6502のエミュレータだったが、Intel 8080は6502と市場を競い合っていたCPUで、初代x86である8086の前身となった8ビットCPU。
レジスタ7つ、フラグは4つ、相対ジャンプ命令なしという(現代のx86からみれば)非常に簡素なCPUであるが、それでもIOCCCのサイズ制限を満たすのはすごそう。
コードは、マクロ定義、”8080”のアスキーアート、コードの塊。
アスキーアートは{
、}
、;
で書かれている。
これはIOCCCのサイズ制限のルールにおける、空白の続く波括弧またはセミコロンを0文字扱いするという特例を利用している。
8080の主なユーザはCP/Mで、このプログラムはCP/Mエミュレータとしても動くとのこと。
ただしROMなどをダウンロードしてくる必要がある。
著作権的に問題がある可能性があるので、興味のある人は自己責任でhint.textを参照のこと。
パッチ
パッチをダウンロード