デモ用の記述を整理している時に、i8086のコンパイラを探したが、オープンソースのコンパイラでは、i8086向けのものはあまりない。いくつかのサイトを見ていると、旧ボーランドが、古いソフトをパーソナルユース向けに無償でダウンロードできるようにしているらしい。
がとりあえず目についたが、ふと、サイトを散策すると、
なんてのも見つかる。おお!懐しい!。
実は、Turbo Pascalのこの初期のころのバージョンは私は大好きだったのだ。
あっという間に完了するコンパイル、エティタと統合された開発環境、値段の安さ等、当時のコンパイラの常識を引っくり返した優れものだった。
これには、いくらか秘密があり、高速コンパイルの一番の理由は、固定番地のライブラリルーチンにあったと思う。(もちろん、Pascalの言語仕様も貢献しているが…)
独立したツールを作ることを考えると、固定されたライブラリ(10kBくらいだったか?)が、当時の小さなフロッピー容量を圧迫したが、それにも代えがたいありがたいツールであった。
おそらく、世界中のPascalユーザ数増加に大きな役割を果したと思う、このソフト、今でも、簡単なプログラム練習用には、充分通用するのでは?
追記:
さて、i8086命令互換CPUのバスタイミングを整理して、BIUをきれいにしたので、シリアルコントローラやRAMを接続して、FPGAに載せてみようと作業をしてみた。
が、手持ちのボードには、若干入らなかった(;-p)。
レジスタファイルや演算回りを整理すれば、まだかなり論理を圧縮できそうだけれど、i8086としては、2000スライスで実現できているのは、小さい方かも?
論理を削る作業は棚上げして、他のボードを調達するか…
Device utilization summary: --------------------------- Selected Device : 3s200ft256-5 Number of Slices: 2008 out of 1920 104% (*) Number of Slice Flip Flops: 614 out of 3840 15% Number of 4 input LUTs: 3882 out of 3840 101% (*) Number of IOs: 42 Number of bonded IOBs: 37 out of 173 21% Number of BRAMs: 8 out of 12 66% Number of GCLKs: 1 out of 8 12% Number of DCMs: 1 out of 4 25%
ちなみに、HD-LAB社の商用IP8086コアで、2300スライスなので、大きさ的には、こんなものかもしれない。今回、ISEが報告した周波数が非常に低い(10MHz)ので、長いパスを見直して、周波数アップを図った方がよさそうだが、そこまでやるか…?
10MHzでも、充分使い道はあるので、悩み所。