ANSI-C 対応C言語ライブラリ
libsxc based on libc 1.1.30A
libc 1.1.30A をベースに gcc 真里子バージョンのSXモードに対応したスタートアップ及び,ライブラリを作成しました.
仕様
OBJECTTYPE
モジュールタイプを指定できます.デフォルトでは'OBJR'です.OBJC にしたければ
% cat foo.s
.xdef OBJECTTYPE
OBJECTTYPE = 'OBJC'
%
といったソースをアセンブルしてリンクしてください.
_COMMON_SIZE
コモンエリアのサイズを指定します.ここでいうコモンエリアとは SX-SYSTEM の確保するもので,gccのSXモードにおけるコモンセクションとは異なります.
確保されたコモンエリアへのポインタは
extern int _common;
で参照できます.
デフォルトのサイズは0です.
extern __common char _sxkernelcomm[]
コマンドラインより起動された場合に使用するカーネルを指定します.デフォルトでは"sxkernel"です.
sxwdb を使用するようにしたければ,
% cat bar.s
.xdef __sxkernelcomm
.text
__sxkernelcomm:
.dc.b 'sxwdb -d -k -l7'
%
などとしてください.
struct _mep _memcp;
struct _psp _procp;
カーネルのプロセスを指しています.つまりsxwin.xやsxkernel.xのプロセスです.
libmb.a, libtz.a, libcplus.a
そのまま利用できると思います.しかしながら,libsignal.aやlibprof.aは動作しないと思います.副作用として,同じタスクを同時に動かした場合に,片方を(コマンドラインで指定して)スーパバイザモードで,もう片方をユーザモードで動かすことができない.タスクが切り代わると time関連のライブラリ内部変数の値が変化する可能性がある.などの症状があります.OBJCタイプのタスクではこの症状は起こりません.errnoも同様にタスクが切り代わったあとは値も変化すると考えてください.
sxmain.o(sxexe.o), lib_sx.a
libsxc.aに含まれています.リンカがヲーニングを出しますが,実害はありません.Makefileを書き換えるなどして,対応してください.
TSChMod
SX-SYSTEM v3.01 現在、TSChModにはいくつかのバグがあり、_dos_chmodと違いTSChMod (filename, -1)といった使い方ができません。v3.1では治っているそうなので、なんの対処も
行っていません。