www.pudn.com > norti2.0 > NORTI.H


/****************************************************************************** 
* μITRON仕様OS NORTi標準ヘッダ                                   * 
*                                                                             * 
*  File name : norti.h                                                        * 
*  Copyright (c) Miyazaki System Planning Office. 1991-1995                   * 
*                                                                             * 
* 91-10-25 TRCOM Version                                                      * 
* 92-02-16 Ver1.00                                                            * 
* 92-08-20 Ver1.10                                                            * 
* 93-01-18 Ver1.11                                                            * 
* 93-02-17 Ver1.12                                                            * 
* 93-05-16 Ver1.13β                                                          * 
* 94-01-05 Ver1.14                                                            * 
* 95-06-15 Ver1.20                                                            * 
* 95-09-20 Ver1.21                                                            * 
******************************************************************************/ 
 
#ifndef	NORTI_H 
#define	NORTI_H 
#ifdef __cplusplus 
extern "C" { 
#endif 
 
/* 処理系の判別 */ 
 
#ifdef	M_I86					/* MS-C */ 
#define	NORTi86 
#endif 
 
#ifdef	__TURBOC__				/* TURBO-C, BORLAND-C */ 
#ifdef __HUGE__ 
#error not supported model! 
#else 
#define	NORTi86 
#endif 
#endif 
 
#ifdef	LSI_C80					/* LSIC-80 */ 
#define	NORTi80 
#endif 
 
#ifdef	_MCC68K					/* MCC68K */ 
#define	NORTi68K 
#endif 
 
#ifdef	__TID__ 
#if ((__TID__&0x7f00)==0x0a00)	/* ICC H8/300H */ 
#define	NORTiH83 
#else 
#if ((__TID__&0x7f00)==0x1700)	/* ICC Z80 */ 
#define	NORTiZ80 
#else 
#error not supported CPU! 
#endif 
#endif 
#endif 
 
#ifdef	__CPU__ 
#if (__CPU__==3) 
#define	NORTiH83				/* Hitachi C H8/300H */ 
#else 
#error not supported CPU! 
#endif 
#endif 
 
#ifdef __DCC__ 
#ifdef	m68k					/* D-CC/68K */ 
#define	NORTi68K 
#endif 
#ifdef __ppc					/* D-CC/PowerPC */ 
#define	NORTiPPC 
#endif 
#endif 
 
/* near, far キーワード */ 
 
#ifdef	NORTi86 
#define	NEAR		near 
#define	FAR			far 
#else						/* NORTi/86 以外では */ 
#define	NEAR		/**/	/* NEAR, FAR を無効化 */ 
#define	FAR			/**/ 
#endif 
 
/* cdecl, pascal キーワード */ 
 
#ifndef	NORTi86				/* NORTi/86 以外では */ 
#define	cdecl		/**/	/* cdecl, pascal を無効化 */ 
#define	pascal		/**/ 
#endif 
 
/* packed キーワード */ 
 
#ifndef	_MCC68K				/* MCC68K 以外では */ 
#define	packed		/**/	/* パック構造体指定を無効化 */ 
#endif 
 
/************************************/ 
/* ユーザに依存する定数(NORTi独自)*/ 
/************************************/ 
 
#ifndef	MSGS 
#define	MSGS		16		/* メッセージ長(バイト数) */ 
#endif 
#ifndef	MSEC 
#define	MSEC		10		/* タイマ周期 */ 
#endif						/* wai_tsk(100/MSEC);の様に用いる */ 
 
/************************************/ 
/* データタイプの定義				*/ 
/************************************/ 
 
/* 基本的なデータタイプ */ 
 
typedef char B;				/* 符号付き8ビット整数 */ 
typedef long W;				/* 符号付き32ビット整数 */ 
typedef unsigned char UB;	/* 符号無し8ビット整数 */ 
typedef unsigned long UW;	/* 符号無し32ビット整数 */ 
typedef char VB;			/* タイプ不定データ(8ビットサイズ)*/ 
typedef long VW;			/* タイプ不定データ(32ビットサイズ)*/ 
typedef void *VP;			/* タイプ不定データへのポインタ */ 
typedef void (*FP)(void);	/* プログラムのスタートアドレス一般 */ 
 
#if (defined(NORTi68K)||defined(NORTiPPC)) 
typedef short H;			/* 符号付き16ビット整数 */ 
typedef unsigned short UH;	/* 符号無し16ビット整数 */ 
typedef short VH;			/* タイプ不定データ(16ビットサイズ)*/ 
 
#else 
typedef int H; 
typedef unsigned UH; 
typedef int VH; 
#endif 
 
/* 整数(プロセッサのビット幅)*/ 
 
#if (defined(NORTi80)||defined(NORTiZ80)) 
typedef char INT; 
typedef unsigned char UINT; 
 
#elif (defined(NORTi68K)) 
typedef short INT; 
typedef unsigned short UINT; 
 
#else 
typedef int INT; 
typedef unsigned UINT; 
#endif 
 
/* 特殊な意味を持つデータタイプ */ 
 
#ifndef	BOOL 
typedef INT BOOL;			/* ブール値(FALSE または TRUE)*/ 
#endif 
typedef INT ID;				/* オブジェクトのID */ 
typedef INT HNO;			/* ハンドラ番号 */ 
typedef INT ER;				/* エラーコード */ 
typedef UH TMO;				/* タイムアウト */ 
typedef INT FN;				/* 機能コード */ 
typedef INT TPRI;			/* タスク優先度 */ 
 
/* 関数のデータタイプ(ITRON2互換) */ 
 
#ifdef	__TID__				/* ICC では C_task 付加 */ 
#define	TASK	C_task void	/* タスク */ 
#define	INTHDR	C_task void	/* 割込みハンドラ */ 
#else 
#define	TASK	void FAR	/* タスク */ 
#define	INTHDR	void FAR	/* 割込みハンドラ */ 
#endif 
#define	TMRHDR	void FAR	/* タイマハンドラ */ 
typedef void (FAR *TASKP)(void);	/* タスクスタートアドレス */ 
typedef void (FAR *INTHDRP)(void);	/* 割込みハンドラタートアドレス */ 
typedef void (FAR *TMRHDRP)(void);	/* タイマハンドラタートアドレス */ 
 
/* メッセージパケット構造体 */ 
 
typedef struct t_msg 
{	struct t_msg FAR *next;	/* OS管理領域(次のメッセージへのポインタ)*/ 
	VB msgcont[MSGS];		/* メッセージ本体 */ 
} T_MSG; 
 
/* 時刻データの構造 */ 
 
typedef packed struct 
{	UH ltime;				/* 時刻指定(下位)*/ 
	UH mtime;				/* 時刻指定(中位)*/ 
	UH utime;				/* 時刻指定(上位)*/ 
} T_TIME; 
 
/* バージョン管理情報の構造 */ 
 
typedef packed struct t_ver 
{	UH maker;				/* メーカー */ 
	UH id;					/* 形式番号 */ 
	UH spver;				/* 仕様書バージョン */ 
	UH prver;				/* 製品バージョン */ 
	UH prno[4];				/* 製品管理情報 */ 
	UH cpu;					/* CPU情報 */ 
	UH var;					/* バリエーション記述子 */ 
} T_VER; 
 
/************************************/ 
/* 共通定数の定義					*/ 
/************************************/ 
 
/* 全体 */ 
 
#ifndef	TRUE 
#define	TRUE		1		/* 真 */ 
#endif 
#ifndef	FALSE 
#define	FALSE		0		/* 偽 */ 
#endif 
 
#ifdef	NORTi86 
#define	NADR		(-1L)	/* アドレスやポインタ値が無効 */ 
#else 
#define	NADR		(-1) 
#endif 
 
/* tskid */ 
 
#define	TSK_SELF	0		/* 自タスク指定 */ 
 
/* tskpri */ 
 
#define	TPRI_INI	0		/* タスク起動時の初期優先度を指定(chg_pri)*/ 
#define	TPRI_RUN	0		/* その時実行中の最高優先度を指定(rot_rdq)*/ 
 
/* wtskid */ 
 
#define	NOTSK		0		/* 待ちタスク無し */ 
 
/* tmmode */ 
 
#define	TTM_ABS		0		/* 絶対時間での指定 */ 
#define	TTM_REL		1		/* 相対時間での指定 */ 
 
/* tskstat */ 
 
#define	TTS_RUN		0x01	/* RUN 状態 */ 
#define	TTS_RDY		0x02	/* READY 状態 */ 
#define	TTS_WAI		0x04	/* WAIT 状態 */ 
#define	TTS_SUS		0x08	/* SUSPEND 状態 */ 
#define	TTS_WAS		0x0c	/* WAIT-SUSPEND 状態 */ 
#define	TTS_DMT		0x10	/* DORMANT 状態 */ 
 
/* cyact */ 
 
#define	TCY_OFF		0		/* 周期起動ハンドラが起動されない */ 
#define	TCY_ON		1		/* 周期起動ハンドラが起動される */ 
#define	TCY_INI		2		/* 周期起動ハンドラが初期化される */ 
 
/* wfmode */ 
 
#define	TWF_ANDW	0x00	/* イベントフラグ AND 待ち */ 
#define	TWF_ORW		0x02	/* イベントフラグ OR  待ち */ 
#define	TWF_CLR		0x01	/* イベントフラグクリア指定 */ 
 
/* tmout */ 
 
#define	TMO_FEVR  ((TMO)-1)	/* 永久待ち */ 
 
/************************************/ 
/* エラーコードの定義(ER 16ビット)*/ 
/************************************/ 
#ifndef NORTi80 
#ifndef NORTiZ80 
 
/* システムコール例外を発生しないクラス */ 
 
#define	E_OK		0		/* 正常終了 */ 
 
/* システムエラー例外クラス */ 
 
#define	E_SYS	   (-0x405)	/* システムエラー */ 
 
/* メモリ不足エラー例外クラス */ 
 
#define	E_NOSMEM   (-0x509)	/* システムメモリ不足 */ 
#define	E_NOMEM	   (-0x50a)	/* メモリ不足 */ 
 
/* 予約機能エラー例外クラス */ 
 
#define	E_NOSPT	   (-0x611)	/* 未サポート機能 */ 
#define	E_INOSPT   (-0x612)	/* ITRON/FILEでの未サポート機能 */ 
#define	E_TNOSPT   (-0x613)	/* タイマ関係の未サポート機能 */ 
#define	E_RSFN	   (-0x614)	/* 予約機能コード番号 */ 
#define	E_RSSFN	   (-0x615)	/* 予約サブ機能コード/予約デバイス番号 */ 
#define	E_RSMD	   (-0x616)	/* 予約モード, 予約オプション */ 
#define	E_RSID	   (-0x617)	/* 予約ID */ 
#define	E_RSATR	   (-0x618)	/* 予約属性 */ 
 
/* パラメータエラー例外クラス */ 
 
#define	E_PAR	   (-0x721)	/* 一般的なパラメータエラー */ 
#define	E_ILADR	   (-0x722)	/* 不正アドレス */ 
#define	E_IDOVR	   (-0x723)	/* ID範囲外 */ 
#define	E_SZOVR	   (-0x724)	/* パラメータのサイズが制限を超えた */ 
#define	E_PPRI	   (-0x725)	/* 不正プロセス優先度 */ 
#define	E_TPRI	   (-0x726)	/* 不正タスク優先度 */ 
#define	E_ILTIME   (-0x727)	/* 不正時間指定 */ 
#define	E_ILFN	   (-0x728)	/* 不正機能コード番号 */ 
#define	E_ILMSG	   (-0x729)	/* 不正メッセージ形式 */ 
#define	E_VECN	   (-0x72a)	/* 不正ベクトル番号 */ 
#define	E_IMS	   (-0x72b)	/* 不正IMASK */ 
 
/* 不正オブジェクト指定例外クラス */ 
 
#define	E_SELF	   (-0x831)	/* 自タスク、自プロセスの指定 */ 
#define	E_NOPRC	   (-0x832)	/* プロセスがまだ存在していない */ 
#define	E_EXS	   (-0x833)	/* オブジェクトが既に存在している */ 
#define	E_NOEXS	   (-0x834)	/* オブジェクトが存在していない */ 
#define	E_DMT	   (-0x835)	/* タスクがDORMANTである */ 
#define	E_NODMT	   (-0x836)	/* タスクがDORMANTでない */ 
#define	E_NOCYC	   (-0x837)	/* タスクに対してcyc_wupが発行されていない */ 
#define	E_NOSUS	   (-0x838)	/* タスクがSUSPENDでない */ 
#define	E_ILSEM	   (-0x839)	/* セマフォに対する不正操作 */ 
#define	E_ILAKEY   (-0x83a)	/* セマフォアクセスキーが不正 */ 
#define	E_ILBLK	   (-0x83b)	/* 不正メモリブロックの返却、操作 */ 
#define	E_NOWAI	   (-0x83e)	/* タスクが待ち状態でない */ 
#define	E_OBJ	   (-0x83f)	/* オフジェクト状態に関するその他のエラー */ 
 
/* コンテキストエラー例外クラス */ 
 
#define	E_CTX	   (-0xa45)	/* コンテキストエラー */ 
 
/* 実行時エラー例外クラス */ 
 
#define	E_QOVR	   (-0xb49)	/* キューイングのオーバフロー */ 
#define	E_OOVR	   (-0xb4a)	/* オブジェクト数のオーバフロー */ 
 
/* 実行終了時エラー例外クラス */ 
 
#define	E_DLT	   (-0xc51)	/* 待ちオブジェクトが削除された */ 
#define	E_INIHDR   (-0xc52)	/* 初期化ハンドラエラー */ 
 
/* 待ち状態強制解除例外クラス */ 
 
#define	E_TMOUT	   (-0xd55)	/* タイムアウト */ 
#define	E_RLWAI	   (-0xd56)	/* 待ち状態強制解 */ 
 
/* 処理実行結果を示す例外クラス */ 
 
#define	E_PLFAIL   (-0xe59)	/* ポーリング失敗 */ 
#define	E_AROVR	   (-0xe5a)	/* 用意した領域のサイズが小さすぎる */ 
#define	E_MPURG	   (-0xe5b)	/* メモリブロックが削除された */ 
#define	E_MRELOC   (-0xe5c)	/* メモリブロックが再配置された */ 
 
#endif 
#endif 
/************************************/ 
/* エラーコードの定義(ER 8ビット) */ 
/************************************/ 
#ifndef E_OK 
 
/* システムコール例外を発生しないクラス */ 
 
#define	E_OK		0		/* 正常終了 */ 
 
/* システムエラー例外クラス */ 
 
#define	E_SYS		0xfb	/* システムエラー */ 
 
/* メモリ不足エラー例外クラス */ 
 
#define	E_NOSMEM	0xf7	/* システムメモリ不足 */ 
#define	E_NOMEM		0xf6	/* メモリ不足 */ 
 
/* 予約機能エラー例外クラス */ 
 
#define	E_NOSPT		0xef	/* 未サポート機能 */ 
#define	E_INOSPT	0xee	/* ITRON/FILEでの未サポート機能 */ 
#define	E_TNOSPT	0xed	/* タイマ関係の未サポート機能 */ 
#define	E_RSFN		0xec	/* 予約機能コード番号 */ 
#define	E_RSSFN		0xeb	/* 予約サブ機能コード/予約デバイス番号 */ 
#define	E_RSMD		0xea	/* 予約モード, 予約オプション */ 
#define	E_RSID		0xe9	/* 予約ID */ 
#define	E_RSATR		0xe8	/* 予約属性 */ 
 
/* パラメータエラー例外クラス */ 
 
#define	E_PAR		0xdf	/* 一般的なパラメータエラー */ 
#define	E_ILADR		0xde	/* 不正アドレス */ 
#define	E_IDOVR		0xdd	/* ID範囲外 */ 
#define	E_SZOVR		0xdc	/* パラメータのサイズが制限を超えた */ 
#define	E_PPRI		0xdb	/* 不正プロセス優先度 */ 
#define	E_TPRI		0xda	/* 不正タスク優先度 */ 
#define	E_ILTIME	0xd9	/* 不正時間指定 */ 
#define	E_ILFN		0xd8	/* 不正機能コード番号 */ 
#define	E_ILMSG		0xd7	/* 不正メッセージ形式 */ 
#define	E_VECN		0xd6	/* 不正ベクトル番号 */ 
#define	E_IMS		0xd5	/* 不正IMASK */ 
 
/* 不正オブジェクト指定例外クラス */ 
 
#define	E_SELF		0xcf	/* 自タスク、自プロセスの指定 */ 
#define	E_NOPRC		0xce	/* プロセスがまだ存在していない */ 
#define	E_EXS		0xcd	/* オブジェクトが既に存在している */ 
#define	E_NOEXS		0xcc	/* オブジェクトが存在していない */ 
#define	E_DMT		0xcb	/* タスクがDORMANTである */ 
#define	E_NODMT		0xca	/* タスクがDORMANTでない */ 
#define	E_NOCYC		0xc9	/* タスクに対してcyc_wupが発行されていない */ 
#define	E_NOSUS		0xc8	/* タスクがSUSPENDでない */ 
#define	E_ILSEM		0xc7	/* セマフォに対する不正操作 */ 
#define	E_ILAKEY	0xc6	/* セマフォアクセスキーが不正 */ 
#define	E_ILBLK		0xc5	/* 不正メモリブロックの返却、操作 */ 
#define	E_NOWAI		0xc2	/* タスクが待ち状態でない */ 
#define	E_OBJ		0xc1	/* オフジェクト状態に関するその他のエラー */ 
 
/* コンテキストエラー例外クラス */ 
 
#define	E_CTX		0xbb	/* コンテキストエラー */ 
 
/* 実行時エラー例外クラス */ 
 
#define	E_QOVR		0xb7	/* キューイングのオーバフロー */ 
#define	E_OOVR		0xb6	/* オブジェクト数のオーバフロー */ 
 
/* 実行終了時エラー例外クラス */ 
 
#define	E_DLT		0xaf	/* 待ちオブジェクトが削除された */ 
#define	E_INIHDR	0xae	/* 初期化ハンドラエラー */ 
 
/* 待ち状態強制解除例外クラス */ 
 
#define	E_TMOUT		0xab	/* タイムアウト */ 
#define	E_RLWAI		0xaa	/* 待ち状態強制解 */ 
 
/* 処理実行結果を示す例外クラス */ 
 
#define	E_PLFAIL	0xa7	/* ポーリング失敗 */ 
#define	E_AROVR		0xa6	/* 用意した領域のサイズが小さすぎる */ 
#define	E_MPURG		0xa5	/* メモリブロックが削除された */ 
#define	E_MRELOC	0xa4	/* メモリブロックが再配置された */ 
 
#endif 
/************************************/ 
/* システムコール関数宣言			*/ 
/************************************/ 
 
/* システム起動等 */ 
 
void FAR pascal sysini(void); 
ER FAR pascal syssta(void); 
ER FAR pascal cre_tsk(ID, TASKP, TPRI, UH); 
ER FAR pascal xcre_tsk(ID, TASKP, TPRI, UH, void FAR *); 
void FAR pascal intent(void); 
 
/* タスク管理機能 */ 
 
ER FAR pascal sta_tsk(ID); 
void FAR pascal ext_tsk(void); 
ER FAR pascal ter_tsk(ID); 
ER FAR pascal chg_pri(ID, TPRI); 
ER FAR pascal rot_rdq(TPRI); 
ER FAR pascal rel_wai(ID); 
ER FAR pascal get_tid(ID FAR *); 
ID FAR pascal vget_tid(void); 
ER FAR pascal tsk_sts(UINT FAR *, TPRI FAR *, ID); 
#define	ichg_pri chg_pri 
#define	irot_rdq rot_rdq 
#define	irel_wai rel_wai 
 
/* タスク付属同期機能 */ 
 
ER FAR pascal sus_tsk(ID); 
ER FAR pascal rsm_tsk(ID); 
ER FAR pascal frsm_tsk(ID); 
ER FAR pascal slp_tsk(void); 
ER FAR pascal wai_tsk(TMO); 
ER FAR pascal wup_tsk(ID); 
ER FAR pascal can_wup(INT FAR *, ID); 
void FAR pascal vcan_wup(void); 
#define	isus_tsk sus_tsk 
#define	irsm_tsk rsm_tsk 
#define	iwup_tsk wup_tsk 
 
/* 同期・通信機能(1ビットイベントフラグ)*/ 
 
#ifndef	WFLG 
ER FAR pascal set_flg(ID); 
ER FAR pascal clr_flg(ID); 
ER FAR pascal wai_flg(ID); 
ER FAR pascal cwai_flg(ID); 
ER FAR pascal pol_flg(ID); 
ER FAR pascal cpol_flg(ID); 
#define	iset_flg set_flg 
#endif 
 
/* 同期・通信機能(1ワードイベントフラグ)*/ 
 
ER FAR pascal set_wflg(ID, UINT); 
ER FAR pascal clr_wflg(ID, UINT); 
ER FAR pascal wai_wflg(UINT FAR *, ID, UINT, UINT); 
ER FAR pascal pol_wflg(UINT FAR *, ID, UINT, UINT); 
ER FAR pascal flg_sts(ID FAR *, UINT FAR *, ID); 
#define	iset_wflg set_wflg 
 
#ifdef	WFLG 
#define	set_flg set_wflg 
#define	clr_flg clr_wflg 
#define	wai_flg wai_wflg 
#define	pol_flg pol_wflg 
#define	iset_flg set_wflg 
#endif 
 
/* 同期・通信機能(セマフォ)*/ 
 
ER FAR pascal sig_sem(ID); 
ER FAR pascal wai_sem(ID); 
ER FAR pascal preq_sem(ID); 
ER FAR pascal sem_sts(ID FAR *, INT FAR *, ID); 
#define	isig_sem sig_sem 
 
/* 同期・通信機能(メイルボックス)*/ 
 
#ifndef	NOKNL_C 
ER FAR pascal snd_msg(ID, void FAR *); 
ER FAR pascal rcv_msg(void FAR *, ID); 
ER FAR pascal prcv_msg(void FAR *, ID); 
ER FAR pascal mbx_sts(ID FAR *, void FAR *, ID); 
#endif 
#define	isnd_msg snd_msg 
 
/* 割込み管理機能(NORTi独自)*/ 
 
#ifdef NORTiPPC 
#define	ent_int() asm("\tstwu\tr0,-4(r1)\n\tmflr\tr0\n\tstwu\tr0,-4(r1)\n\tbl\tent_int") 
#else 
void FAR pascal ent_int(void); 
#endif 
UINT FAR pascal vdis_psw(void); 
void FAR pascal vset_psw(UINT); 
void FAR cdecl intini(void); 
void cdecl intsta(void); 
void cdecl intext(void); 
 
/* 割込み管理機能 */ 
 
void FAR pascal ret_int(void); 
void FAR pascal ret_wup(ID); 
ER FAR pascal chg_ims(UINT); 
ER FAR pascal ims_sts(UINT FAR *); 
ER pascal def_int(UINT, INTHDRP); 
ER pascal dis_int(UINT); 
ER pascal ena_int(UINT); 
 
/* メモリプール管理機能 */ 
 
#ifndef	NOKNL_C 
ER FAR pascal get_blk(void FAR *, ID); 
ER FAR pascal pget_blk(void FAR *, ID); 
#endif 
ER FAR pascal rel_blk(ID, void FAR *); 
ER FAR pascal mpl_sts(ID FAR *, int FAR *, ID); 
 
/* 時間管理・タイマハンドラ機能 */ 
 
ER FAR pascal set_tim(T_TIME); 
ER FAR pascal get_tim(T_TIME FAR *); 
ER FAR pascal def_cyc(HNO, TMRHDRP, UINT, T_TIME); 
ER FAR pascal act_cyc(HNO, UINT); 
ER FAR pascal cyh_sts(UINT FAR *, T_TIME FAR *, HNO); 
ER FAR pascal def_alm(HNO, TMRHDRP, T_TIME, UINT); 
ER FAR pascal alh_sts(T_TIME FAR *, HNO); 
#define	ret_tmr() return 
 
/* システム管理機能 */ 
 
ER FAR pascal get_ver(T_VER FAR *); 
 
/* オブジェクト・モニタ機能(NORTi独自)*/ 
 
void cdecl monsta(void); 
void cdecl monext(void); 
BOOL cdecl set_montsk(ID); 
BOOL cdecl set_monflg(ID); 
BOOL cdecl set_monsem(ID); 
BOOL cdecl set_monmbx(ID); 
BOOL cdecl set_monmpl(ID); 
#ifndef NOMON_C 
extern B NEAR cdecl monbuf[2];	/* 仮に[2] */ 
#endif 
 
/* その他(NORTi独自)*/ 
 
#ifdef NORTi86 
void FAR pascal sysini_rom(void); 
int FAR pascal ent_int2(void); 
void FAR pascal vdis_pic(void); 
void FAR pascal vena_pic(void); 
void FAR pascal out_usrsig(BOOL on); 
void cdecl intsta2(void); 
BOOL cdecl judgepc(void); 
BOOL cdecl ispc9801(void); 
BOOL cdecl isibmpc(void); 
BOOL cdecl isfmr(void); 
extern UB NEAR cdecl CodeView; 
#endif 
 
#if (defined(NORTi80)||defined(NORTiZ80)) 
void set_mode2(void *); 
#endif 
 
/************************************/ 
/* システム変数宣言(NORTi独自)	*/ 
/************************************/ 
 
extern ID NEAR cdecl tskid_max;		/* タスクID上限 */ 
extern ID NEAR cdecl flgid_max;		/* イベントフラグID上限 */ 
extern ID NEAR cdecl semid_max;		/* セマフォID上限 */ 
extern ID NEAR cdecl mbxid_max;		/* メイルボックスID上限 */ 
extern ID NEAR cdecl mplid_max;		/* メモリプールID上限 */ 
extern HNO NEAR cdecl cyhno_max;	/* 周期起動ハンドラ番号上限 */ 
extern HNO NEAR cdecl alhno_max;	/* アラームハンドラ番号上限 */ 
extern TPRI NEAR cdecl tpri_max;	/* タスク優先度上限 */ 
extern int NEAR cdecl istksz;		/* 割り込みハンドラのスタックサイズ */ 
 
#ifdef __cplusplus 
}; 
#endif 
#endif /* NORTI_H */