2017.6.11
前へ
次へ
ホームページトップへ戻る

マイコン独立大作戦
CRT/VGAIF+KEYIF+SDCARDIFボードの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
WindowsパソコンにUSB接続して使う現行方式はそれなりに便利ではありますが、ときとしてWindows
のしがらみから開放されて、小さいながらも独立した一個のパソコンとして機能したいと思うこともあります。
昔はそれが普通のことだったのですが、安価なCRTディスプレイが生産中止となって久しい今日ではそれ
は叶わぬことと諦めていたのですが…。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[総合第86回]


●EXMPL.C

前回、COPY/Aコマンドを使うことでテキストファイルの終わりにEOF(End Of File、1AH)が追加されることを実例で確かめました。
COPY/Aコマンドを使ってコピーした結果、コピー先のファイルはコピー元のファイルよりもファイルサイズが1バイト大きくなりました。
しかしEXMPL.Cはコピー元が256バイトだったのに、コピー先は逆に165バイトと小さくなってしまいました。
一体なぜなのか?
こういうことをひとつずつ確認していくことが肝要です。

コピー元のEXMPL.CをDEBUGコマンドで開いてみました。



DEBUGコマンドでファイルを開くと、100番地からロードされます。
アドレス01A4から後ろは1A(EOF)で埋められていることがわかります。
EXMPL.Cの実体は0100〜01A4であることがわかります。
つまり実際のファイルサイズは100〜1A4のA5H(165)バイトです。
COPY/Aコマンドでコピーした結果、最初の1Aよりも後のコードは不要と判断されて、先頭から165バイトのデータがコピーされたのだと考えられます。

そのことを確かめるためにコピー先のEXMPL.CをDEBUGコマンドで開いてみました。



最初の1Aまでがコピーされたことが確認できました。

●STDIO.Hは不要?

ところでEXMPL.CはインターネットからダウンロードしたAZTEC Cの圧縮ファイルに含まれていたサンプルプログラムなのですが、Cプログラムなのにstdio.hがありません。

main()
{
char buf[80];
printf("please enter your name: ");
gets(buf);
printf("hello, %s, welcome to the growing community of Aztec C users\n", buf);
}

AZTEC Cではstdio.hのような基本的なヘッダーファイルは不要のようです。
途中の経過は省きますが、EXMPL.CをAZTEC CでコンパイルしてできたEXMPL.COMを実行してみたのが下の画面です。



stdio.hがなくてもエラーにならずにコンパイルが完了して、その結果できたEXMPL.COMも正しく実行されました。

実は[総合第84回]でお見せした画面にあったtest4b.cは、そのことを確認するためにtest4.cの先頭のインクルード行を外したファイルとして作成していたのでした。
test4b.cも途中のコンパイルの過程は省きますが、AZTEC Cでコンパイルした結果、stdio.h部分を外したにも関わらず、エラーにもならずにコンパイルが完了し、その結果作成されたtest4b.comも下の画面のように正しく実行されました。



CRT/VGAIF+KEYIF+SDCARDIFボードの製作[総合第86回]
2017.6.11upload

前へ
次へ
ホームページトップへ戻る