sysの中身をいくつか解説。
n := sys->char2byte(c:int, buf:array of byte, n:int); mu : array [Sys->UTFmax] of byte; n := sys->char2byte(16r3bc,mu,0);
Unicodeなcharを UTF-8に変換する。
sys->print ("%s\n",hoge);
n := sys->aprint ("%s\n",hoge);
フォーマットにしたがってprintfできる。
fd := sys->open("hoge",sys->OREAD)
|sys->OWRITE|書き込みで開く。ファイルがなければなにもしない?| |sys->OTRUNC| | |sys->OTRUNC| | |sys->ORCLOSE| |
# /dev/consを開く。consはbufferingされる。 consfd = sys->open("/dev/cons",sys->OREAD); # File Descripter を別のあたらしい標準入力にduplicateする sys->dup(consfd.fd,0); # /dev/consを書くために開く consfd = sys->open("/dev/cons",sys->OWRITE); # stdoutとstderrの両方ともduplicateする sys->dup(consfd.fd,1); sys->dup(consfd.fd,2);
n := sys->read(fd,buf,len buf) # 改行コードがついてるから、取り除いたりする。 buf = buf[:n];
返り値は、読み込めたサイズ
n := sys->remove("hoge");
ファイルを消す。成功したら0、それ以外は-1が返る。
n := sys->write(fd,buf,len buf)
n := sys->stream(fd_src, fd_dst, len buf)
fd_srcからの入力をfd_dstにlen bufだけ流し込む。
readとwriteをくりかえしゃいーじゃん、と思うなかれ。videoやaudioのコピー とかにも使えるようにチューニングしてあるんよ。streamはスケジューリングの 中で一番高い優先度を持つ。