トップ «前の日記(2014-05-08) 最新 次の日記(2014-05-13)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2014-05-11

_ 書いた通りにプログラムが動かないC

プログラムが書いた通りに動かないといえば、Cだよなぁと思い出す。

今を去ること4半世紀昔のことだ。

386sxを載せた98note SXというノートPCが出たので購入したのだった。

PCは買っただけでは役に立たないので環境を整えるために、まず安いコンパイラを探してTurboC 2.0(9801用)を買った。

手元にはAmiga用のプログラムのソースがそこそこあったので、最初にMicro Emacsを移植した。Turbo Cには妙なエディターが付いていたのだがMicroとは言えEmacsのほうが使いやすいのだから当然そうするものだ。

これをやったおかげでPC9801というコンピュータのハードウェア回り(VRAMとかキーボードとか)をTurboCでどう書けば良いかわかったような気がする。ついでにJISコードとシフトJISについても相当に理解した気がする(記憶違いかも知れないが、9801のVRAMにはJISコードを転送する必要があったような)。と書いているうちに思い出したけど、というわけで文字コードの変換が必要なのかかったるいなと思ったら、TurboCのVRAM操作関数のできが良くて(vramprintfみたいな名前だったような)直接VRAMをいじる必要がなかったのだ。AXかDOS/Vかは直接シフトJISコードを転送すれば良いのでそう実装したのと記憶がごっちゃになっていたようだ。

というわけで、そこそこまともなエディターが手に入ったので次に手元にあったAmiga用のNethackを移植する。

で遊び始めるのだがそこはNethackすぐにOに囲まれたり飯がなくなったりして死ぬわけだが(そのうち面倒になって飯が不要なモードとかを実装することになる)墓がおかしい。エピグラムが異様だ。

                       ----------
                      /          \
                     /    REST    \
                    /      IN      \
                   /     PEACE      \
                  /                  \
                  |    starvation    |
                  |    starvation    |
                  |    starvation    |
                  |    starvation    |
                  |    starvation    |
                  |       1991       |
                 *|     *  *  *      |
        _________)/\\_//(\/(/\)/\//\/|_)_______

多分、3.0あたりだろう。

と言う具合に当時の最適化の技術(TurboCのある最適化オプションをONにするとそうなったわけだが)はお粗末だったのだった(というか、いかにDOSではメモリコンシャスにするのが重要だったかというか)。

本日のツッコミ(全1件) [ツッコミを入れる]
_ ふる (2014-05-11 12:15)

だからこそ人力が必要だったんですよね。<br>最近のコンパイラ賢いから勝てるシーンが少ないです。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|

ジェズイットを見習え