------------------------------------------------------------------------------
  Hyper Operating System V4  μITRON4.0仕様 Real-Time OS                      
    日立 H8/300H 用 ドキュメント                                              
                                                                              
                                       Copyright (C) 1998-2003 by Project HOS 
                                       http://sourceforge.jp/projects/hos/    
------------------------------------------------------------------------------


1. 概要

  本ドキュメントは Hyper Operating System V4（以下 HOS-V4）のH8/300H
シリーズ用の固有部分についての説明を記載します。



2. ライブラリのmake方法

  現在、(株)秋月電子通商より販売されている H8/3048F 用のコンパイラ(以下
秋月C)及びGCCにて動作確認しております。

 a. 秋月Cを使用する場合

  http://sourceforge.jp/projects/hos/files/ にて公開しておりますライブ
ラリアン BLIBG をご準備ください。
  次に hos-v4\lib\h83\akih8に移動してください。
  akih8.makという メイクファイルがありますので、適当なエディタでオープ
ンして INCH8DIR の定義の部分を Cコンパイラの標準インクルードパスの設定に
あわせて変更してください。
  後は "make -f akih8.mak" のように実行すれば h4h83aki.lib が得られます。
  Tiny用については、上記メイクファイル、ライブラリファイル名をそれぞれ
akih8n.mak、h4h83nak.libと読みかえるだけです。


 b. GCCを使用する場合

  hos-v4\lib\h83\gccに移動してください。
　"make -f h4h83.mak"のように実行すれば、libh4h83.aが得られます。
  Tiny用については、上記メイクファイル、ライブラリファイル名をそれぞれ
h4h83n.mak、libh4h83n.aと読みかえるだけです。


  なお、make は Windows 用のものなら大抵のもので大丈夫だと思いますが
動作確認は フリーで公開されている Borland-C++ Ver 5.5 付属の make.exe
にて行っております。
  １行が長いコマンドがありますので、DOS用のmakeですとうまくいかない
可能性があります。また、cygwin などの make を利用する場合は '\' を
'/' に置換するなどの作業が必要になると思われます。



3. H8/300H 固有の関数

  多重割り込みの制御に際して、割り込みマスクを設定する関数が、HOS-V4
独自に実装されております。
  以下の４つの関数があります。

    ER chg_imsk(IMSK imsk)          割り込みマスクのベース値の変更
    ER get_imsk(IMSK *p_imsk)       割り込みマスクのベース値の参照
    ER fchg_imsk(IMSK imsk)         現在の割込みマスク値の強制変更
    ER fget_imsk(IMSK *p_imsk)      現在の割込みマスク値の強制参照

  この時、割り込みマスク値として設定＆取得できる値は以下のとおりです。

    H38_IMSK_LEVEL0  プライオリティーレベル0/1を許可
    H38_IMSK_LEVEL1  プライオリティーレベル1のみ許可
    H38_IMSK_LEVEL2  すべて禁止

  chg_imsk と get_imsk はベース割り込みマスク値を操作します。
  ベース割り込みマスク値は現在の割り込みマスク設定を指すわけでは
無い点に注意してください。
  H8/300H では割り込みが発生すると、自動的にすべての割り込みが
禁止されます(CCR の I と UI が 1 にセットされます）。
  従って、割り込みハンドラに入った際には、ベースマスク値に関わらず
マスク値は H38_IMSK_LEVEL2 になり、割り込み完了後にベースマスク値に
設定されている値に戻ります。

  しかしながらプライオリティーレベル０の割り込みハンドラ内で
多重割り込みを許可するために、現在の割り込みマスク値を下げたい場合が
あります。その場合には fchg_imsk と fget_imskを利用することで
今現在の値を操作することが出来ます。
  なお、fchg_imsk で設定した値は、呼び出した割り込みハンドラ内で
のみ有効です。
  割り込みコンテキストから復帰の際にはベースマスク値に復帰します。



------------------------------------------------------------------------------
 Copyright (C) 1998-2003 by Project HOS                                       
------------------------------------------------------------------------------

