So-net無料ブログ作成

SilentCの知られざる世界 (1) [ColdFire V2]このエントリーを含むはてなブックマーク#

1990557

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月号 [雑誌]

Interface (インターフェース) 2008年 09月号 [雑誌]

  • 作者:
  • 出版社/メーカー: CQ出版
  • 発売日: 2008/07/25
  • メディア: 雑誌

nice!(0)  コメント(0)  トラックバック(0)  このエントリーを含むはてなブックマーク#

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。