SilentCの知られざる世界 (1) [ColdFire V2]
SilentCの関数にInterface誌の記述との相違点を見つけました。
SciPutc関数
"SciPutc"関数は、UART0から一文字分のデータを送信する機能です。 Interface誌には、引数をひとつ取る関数として記述されています。
void SciPutc(char ch)
ところが、この記述を信じて関数を使用したところ、文字が表示されません。
OK SciPutc('*') OK
さる所を調査した結果、第二引数の値が表示されるらしいことが判明しました。
OK SciPutc('A', '*') * OK
第一引数は、使用されていないように見えます。
ファイル・ハンドルはlong型である
Interface誌には、ファイル・ハンドルは"int"型、すなわち16ビットであると記述されています。 ところが、"OpenFile"関数は、32ビットの値を返してきます。
OK ??OpenFile("index.htm") 20001370 OK
まず、ファイル・ハンドルが32ビットであると仮定して、"SeekFile"関数でファイルの終端にポインタを移動してみました。
OK ?SeekFile(0x20001370,0,2) 409 OK
409というのは、"index.htm"ファイルの長さと等しいので、ファイルの終端にポインタが移動したらしいことがわかります。
もし、これを16ビットの変数に代入して使ったら、どうなるでしょうか。
OK ?SeekFile(0x1370,0,2) 317948 OK
これは、何が起こったのでしょうか。 317kバイトもポインタが移動してしまったことになっています。
参考文献
Interface (インターフェース) 2008年 09月号 [雑誌]
- 作者:
- 出版社/メーカー: CQ出版
- 発売日: 2008/07/25
- メディア: 雑誌
コメント 0