FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

「30日でできる!OS自作入門」を読み始めた (23日目. APIを拡充する)

30日でできる! OS自作入門

30日でできる! OS自作入門

23日目はAPIを拡充していく。APIの数が増えてきたのでなんだかわからなくなったのでいったんまとめてみた。

f:id:msyksphinz:20180505220510p:plain
表. はりぼてOSのAPI一覧 (23日目まで)

アプリケーションの中で、乱数発生のためにrand() を使わなければならないのだが、gccを使っていると乱数が使えないので非常に単純な乱数生成関数を探してきて使用させてもらった。

blog.goo.ne.jp

  • stars.c
#include "a_nask.h"

unsigned long rand (void)
{
  static unsigned long rand;

  rand *= 1234567;
  rand += 1397;

  return rand;
}

void HariMain (void)
{
  char *buf;
  int win, i;
  unsigned int x, y;

  api_initmalloc();
  buf = api_malloc (150 * 100);
  win = api_openwin (buf, 150, 100, -1, "stars");
  api_boxfilwin (win, 6, 26, 143, 93, 0 /* Black */);
  for (i = 0; i < 50; i++) {
        x = (rand() % 137) + 6;
        y = (rand() %  67) + 26;
        api_point (win, x, y, 3 /* Yellow */);
  }
  api_end ();
}

というわけでAPIを追加して、描画もできるようになった。

f:id:msyksphinz:20180505220107p:plain
図. linesアプリケーションを起動した様子