第4話 何度も立ちはだかる壁
私はシナリオを少しづつ追加しながら、小説記述言語の仕様を追加していった。
私は将来の商品化を考えるとシナリオはオリジナルの方がいいと思い、市販の体験告白小説を参考にするのは止めにして自分でシナリオを作ることにした。
他の人が書いた小説を読んでそれを参考にシナリオを書くという作業よりは、自分でシナリオを作った方が実際の所、作業時間は短くて済むし余計な手間もかからず作業もはかどった。
それに自分でシナリオを作るというのは、苦労も多いが楽しい作業だった。
仕事の合間に時間を作っての作業はなかなかはかどらなかったが、最初は順調に作業が進んだ。
しかし難関は以外と早く私の前に立ちはだかった。
当時の16ビットのコンパイラーでは一つのファイルに変数を1000個程度しか定義できなかったのだ。
それ以上に変数が多いとコンパイラーがエラーを返してきた。
シナリオの文章一行に一変数を割り当てていたので、これでは最大1000行しか定義できない。
当時のパソコンのCコンパイラーの性能というのはまだその程度だったのだ。
すぐには解決方法は見つからなくて、いろいろ試しては見たが全部だめだった。
私はもしかしてアセンブラだったら変数の個数の制限はないのではと考えた。
アセンブラというのは知らない人も多いと思うが、機械語と一対一に対応するコードを出力するかなり原始的な言語だ。
昔はパソコンのソフトはアセンブラで書いた物だが、いまはもうアセンブラでコーディングするプログラマーなどいない。
だがアセンブラでもまたきっとどこかで制限に引っかかってぶん駄目だと思った。
まあ一応やってみようと、Cのソースコードを自動的にアセンブラのコードに展開するプログラムを組んでみた。
やってみたらどうゆう訳か上手くいってしまった。
それでひとまず最初の壁は乗り越えた。
アセンブラならいくら変数の数が増えても制限はなかったので作業は順調に進んだ。
しかしまた次の壁が立ちはだかった。
C言語のコンパイラーが静的データは64キロバイトが上限でそれ以上は定義できなかった。
当時のパソコンはまだ16ビットマシーンだったので、セグメントによるメモリー管理をしていたのだ。
1セグメントは64キロバイトで、それを越すデータは定義できない。
シナリオを追加していくうちにその上限にたどり着くのにたいして時間はかからなかった。
私はいろいろ試してみたが結局どうにもならなかった。
これで開発は行き止まりかと一度は諦めたが、またアイデアが浮かんだ。
C言語のコンパイラーは静的データに決まったセグメント名を割り当てる。
セグメントは最大64キロバイトなので、別のセグメント名を使えばなんとかなるかもしれないと思った。
だがそれは通常のC言語のコンパイラーの規約からははずれてしまうので、上手く動くかどうかは判らない。
他に思いつく方法もないので、ともかくやってみることにした。
私はたぶん運が良かったのだと思うが、これも予想外に上手くいった。
1セグメント64キロバイトなので、必要な分だけデータのセグメントを作ればよかった。
これで静的データの制限もなくなり、私はもうこれで大丈夫だと安心して開発を続けた。
しかしまた次の壁が待ち受けていた。
プログラムとシナリオのテキストデータが大きくなりすぎて、コンパイルとリンクの時間が10分を超えてしまった。
当時開発に使っていたのはDOSのパソコンで、画面は横80縦25文字の固定だった。
同時にエディターで開けるのはせいぜいテキストファイルが二つまでで、ソースコードを修正したあとは、すべてのファイルを閉じて、コンパイラーを動かして、そのあと実行してまた修正の為にエディターを起動するという作業の繰り返しだった。
大変手間のかかる作業で、その上コンパイラの待ち時間が10分を越えてしまったらとても作業にはならない。
結局の所性能のいいパソコンが安く購入出来る時期が来るまで、作業は中断せざる得なかった。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます