home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2001 April / VPR0104A.BIN / DRIVER / IODATA / RSDV120 / rsdv120.exe / DISK.EXE / DOS / MANUAL / TEXT / PRG0104.TXT < prev    next >
Text File  |  1996-09-10  |  2KB  |  55 lines

  1. ------------------------
  2. BIOSファンクションの概要
  3. ------------------------
  4.  
  5. ここでは、実際にBIOSを使用する場合の手順・方法を説明します。
  6.  
  7. ●BIOSの組み込みチェック
  8. BIOSが組み込まれているかどうかのチェックは次の手順で行います。
  9.  
  10. (1).BIOSが使用するソフトウェア割り込みを、アプリケーションプログラムがわかっている場合
  11.  
  12. そのソフトウェア割り込みが使用する割り込みベクタに設定されているアドレスを確認します。確認したアドレスから16バイト下位(低い)アドレスから始まる8バイトに「RSABIOS.」という文字列が入っていれば、BIOSが組み込まれています。また、この文字列に続く3バイトにBIOSのバージョンが設定されており、例えば、「123」と続けば、バージョンは1.23となります。
  13.  
  14. 例)BIOSが使用するソフトウェア割り込みが INT 60h であった場合
  15.  
  16. 使用する割り込みベクタは、0000:0180(60h*4)ですから、そのアドレスに設定されているアドレスを確認します。このアドレスが1234:aaaaであったとすると、そのアドレスより16バイト下位のアドレスは1234:aa9aです。そこで次のように文字列が設定されていればBIOSが組み込まれていることになります。
  17.  
  18.     1234:aa9a  'R'(52)    1234:aaa2  '1'(31)
  19.     1234:aa9b  'S'(53)    1234:aaa3  '0'(30)
  20.     1234:aa9c  'A'(41)    1234:aaa4  '0'(30)
  21.     1234:aa9d  'B'(42)    1234:aaa5  NULL(00)
  22.     1234:aa9e  'I'(49)    1234:aaa6  NULL(00)
  23.     1234:aa9f  'O'(4f)    1234:aaa7  NULL(00)
  24.     1234:aaa0  'S'(53)    1234:aaa8  NULL(00)
  25.     1234:aaa1  '.'(2e)    1234:aaa9  NULL(00)
  26.  
  27.  
  28. (2).BIOSが使用するソフトウェア割り込みを、アプリケーションプログラムがわからない場合
  29.  
  30. ソフトウェア割り込みのINT 40h~7Fhまでを、わかっている場合の手順でサーチします。すべてのソフトウェア割り込みで文字列が発見されない場合、BIOSは組み込まれていません。もし、BIOSが組み込まれていた場合、アプリケーションプログラムは次のようにしてBIOSのファンクションを実行します。
  31.  
  32. BIOSのエントリーアドレスをアプリケーションプログラムのワークにコピーしておき、実行時にはフラグをプッシュした後、そのアドレスへファーコール(セグメント間コール)します。
  33.  
  34. 例)BIOSのエントリーアドレスが1234:aaaaであった場合
  35.     アプリケーションのワーク(ds:[BIOSCALL])にコピーします。
  36.         BIOSCALL    dd ?
  37.        1234:aaaa -> ds:[BIOSCALL]
  38.     実行時には
  39.        pushf
  40.        call dword ptr ds:[BIOSCALL]
  41.     とします。
  42.  
  43.  
  44. ● BIOSファンクション実行手順
  45.  
  46. BIOSファンクションは、以下の手順で実行します。
  47.  
  48. 1.AHレジスタに機能コードをセット(以降、機能コードは全て10進数で記述)
  49.  
  50. 2.その他の必要とするパラメータを各レジスタにセット
  51.  
  52. 3.INT 60h(デフォルト)を実行
  53.  
  54. ※この項以降の説明では、シリアルコントローラ(16550C)のことをUARTと表記します。
  55.