110gc -- DataScope Graphics Component

サンプル「ぽたぽた」の説明

コンパイルの流れ

プログラムのソースコードはmain.c及び、pict.cgcになります。 main.cが実際の動作を記述しているソースファイルで、 コンパイルされてmain.relを生成します。 pict.cgcは、gcconvのテンプレートファイルで、 gcconvに通すことによりpict.cファイルに変換されます。 そのpict.cがコンパイルされて、pict.relが生成されます。 また、プログラムヘッダとしてheader.macがアセンブルされ header.relが生成されます。 これらとgc.libが一緒にリンクされ、リンク出力 potapota.absになります。 (リンクコマンドファイルは、makefile中で、一時ファイルとして作成されます。) この後、tuconvでs24形式に変換されます。

main.cの説明

ヒープ領域の初期化で絶対番地を指定しています。 アドレス的には、UserWorkの後方部分です。 この他に、配列を確保し、そのアドレスと長さを与える方法があります。 アプリ固有データ領域 (f_areaセグメント) にデータを確保したい場合は、 その大きさをApInfoに反映させるために、必ず配列で確保します。
#pragma section area UserWork
byte heap_work[2000]; //ワークエリアのヒープ
#pragma section area f_area
byte heap_app[1000]; //アプリ固有データ領域内のヒープ
gcHeap* appheap= 0;  //固有ヒープ
UserStart() {
  ...
  gcAppInit(0);
  workheap= gcHeapInit((void*)heap_work, sizeof(heap_work));
  if(heap_inited==0) {
    appheap= gcHeapInit((void*)heap_app, sizeof(heap_app));
  };
  gcHeapRegister(workheap); //ワークヒープ登録
  gcHeapRegister(appheap);  //固有ヒープ登録
  gcHeapDefault(workheap, 0); //ワークヒープをデフォルトヒープへ
  ...

領域vacantは、初期状態で空いている部分を示します。虫(虫なのか?)が落ちて、 埋まっても、領域filledが増えるだけで、領域vacantは変化しません。 このようにこのプログラムでは領域を多用していますが、 おすすめしません。複雑な領域はメモリを食う上に遅いです。