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

[新連載]復活!TINY BASIC
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
すべてはここからはじまりました。
中日電工も。
40年前を振り返りつつ新連載です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜



[第40回]


●TEXTファイルのエンドコード問題

いつも懇意にしていただいておりますJ大学I先生からメールをいただきました。

[第33回]のtinybst7.txtをダウンロードしたのですがアセンブルできませんでした。
tinybdt7.txtを調べたところ改行コードがCRになっていました。
CRをCR+LFに直したところ無事アセンブルできました。

えっ???
改行コードがCR???
まさか、んなことは…?

そのまさかでありました。
確認してみましたところ[第33回]のtinybst7.txtはなんと改行コードが’0A’になっておりました。
で。
さらに確認してみましたところ、私のハードディスクに入っておりますオリジナルのtinybst7.txtの改行コードは’0D0A’でした。
ということは、私のハードディスクからプロバイダのアップロードサイトにアップロードする過程で本来’0D0A’だったものが’0A’にされてしまったと推測されます。
私はホームページ作成ツールとして昔からホームページビルダーを使っております。
当初は版元はIBMだったはずですがいつの間にかSOURCENEXTに身売りされてしまいました。
今使っておりますのはそのSOURCENEXT版のV9でこれもかなり古い版かと思います。
現在のバージョンがいくつになっているのかは知りませんがそんなものには興味はありません。
私の経験では大体においてバージョンを重ねるごとに使いづらくなってしまう傾向があるように思います。
アプリケーション然り、OS然り、です。
ホームページビルダーV9にも困ったバグがあることは承知していますが、それには慣れていますのでそこにハマらぬように気をつければ済むこと。
なまじバージョンアップなどしてがらりと模様替えされてしまった新趣向に一から付き合わされるなど真っ平です。

つい脱線してしまいました。
それで。
さてはアップローダーか、ということで確認してみました。
ホームページビルダーのFTPローダーの設定タブを開いたところ「転送モード自動判別設定」が目に止まりました。



さてはこいつか?
「テキストモードで転送する」つうのがいかにもクサい。
RS232Cじゃあるまいし。
インターネットのアップローダーになんでこんな古臭いテキストモードなんてものを使うのだ?
ふつうにバイナリーモードでよいではないか。
こんなものが生き残っているなんて今の今までまったく思ってもみませんでした。
とにかくこの’TXT’は外してしまいましょう。



とりあえず’TXT’はリストから外してしまいました。
そしてtinybst7.txtをもう一度アップロードしなおして確認してみましたところ、今度は無事に’0D0A’のままのファイルがアップロードできました。
ですので現在は[第33回]のtinybst7.txtは正しい改行コード(0D0A)になっています。
もし本日以前に同ファイルをダウンロードされていましたら、古い履歴が利いてしまう可能性がありますから念のためブラウザで[第33回]を開き直して、さらに念のため「ページの再読み込み」をしたあとでtinybst7.txtをもう一度ダウンロードしてください(まだ下記に注意事項があります)。

これにて一件落着。

ではありませんでした。
念のため新しくしたはずの[第33回]からtinybst7.txtをダウンロードしてみたところ。
ぬあんと。
やっぱり改行コードが’0A’に置き換わってしまっておりました。
なんてことだ。

つうことはアップローダーだけではなくて、ダウンローダーにも問題あり、ということか。
それはブラウザの問題なのか?
それともプラットホーム(OS、Windows7)の問題なのか?
アップローダーについては転送をテキストモードではなくてバイナリモードにすることで問題を回避しましたからテキストモードで’0A’が選択されてしまう原因がアップローダーそのものに由来するものなのかそれともOSのせいなのかということまではわかりませんでした。
しかしWindows7で普通にテキストファイルをフォルダ間コピーしてもこんなおかしなことは起きません。
するとブラウザがクサい、ということになります。
私はいつもはブラウザにFirefoxを使っています。
では。
ほかのブラウサならどうなのか?

あ。
改行コードを確認するのにはいろいろな方法があります。
でも今回のtinybst7.txtに限っていえばファイルサイズを見るのが一番簡単です。

こちらは改行コードが’0D0A’のtinybst7.txtです。


こちらは改行コードが’0A’のtinybst7.txtです。


もとのファイルよりもサイズが小さくなっていることで判別できます。

それで。
Internet ExplorerとGoogle Chromeでも試してみました。
結果は。
Internet Explorerではちゃんと’0D0A’のままダウンロードできました。
しかしGoogle Chromeではやっぱり’0A’になってしまいました。

これはひどい。
実にひどい。
こんな原始的なところでこんなことが起きているなんて正直なところお口あんぐりです。
開いた口がふさがりませぬ。

実はFirefoxの場合ですが普通にtinybst7.txtのリンクをクリックしてファイルを開いた状態で「名前を付けてページを保存」を選択すると駄目で、リンクを右クリックして「名前をつけてリンク先を保存」を選択すると正しく保存されることがわかりました。
Google Chromeについては試していません。
しかしブラウザによって対応をそれぞれ変えるというのも厄介な話です。
ひと手間かかりますがここは強制的絶対的にバイナリモードでダウンロードしていただくのが一番確実なようです。
こちら↓をダウンロードしてください。

tinybst7.tx2

このとき「ファイルの種類」は「全てのファイル」を指定してください(「テキストファイル」を指定しないようにしてください)。
そのようにしてダウンロードすれば拡張子がtxtではありませんから確実にバイナリモードでダウンロードされます。

中身は変わっていませんから、このファイル名のままでASM80.COMで普通にアセンブルできます。
またnotepadやTerapadで普通のテキストファイルとして開くことができます。
ただダウンロードしたフォルダのtinybst7.tx2をクリックするとファイルを開くアプリケーションを指定してくださいというメッセージが出てしまい普通には開けません。
アプリケーション(notepad、Terapadなど)を先に実行して「ファイルを開く」から開くか拡張子tx2をnotepadに紐付けすれば開けます。
それも面倒ということでしたらダウンロード後にtinybst7.tx2をtinybst7.txtに名前変更をしてください(これが一番簡単です)。

ところで。
話にはまだ続きがあります。
実は。
I先生からいただいたメールについて、気が付いたことがあります。
I先生のメールには「改行コードがCRになっていたのでCRをCR+LFに直したところ無事アセンブルできました。」と書かれていました。
CR?
いや。
LFのはずなんだけど。

ひょっとしたら。
ということでそのあたりについて調べてみました。
それでわかったことは。
そもそもこの改行コード問題は根が深い問題のようです。
もとはOSの違いというところに端を発しているようです。

もともとはプリンタの復帰(CR。Carriage Return)と行送り(LF。Line Feed)を端末に送るための制御コードだったようです。
往時の端末(大抵はRS232C端末。ボーレートは110ボー!)に対してCR(0Dコード)を送ると印字ヘッドが左端に戻り、LF(0Aコード)を送るとヘッド位置は変わらずに1行紙送りが行なわれることから、CRLFと続けて送ることで通常イメージする改行動作が行なわれたようです。
ま。
それは古い古い昔のお話で今時のインクジェットプリンタなどに対しては何の意味もありませんし、ファイルを画面に表示するときでも本来は無意味な機能です(画面には印字ヘッドも紙送り機構もありませぬ!)。
なのですけれど、いまでもテキストファイルについてはその古い昔のルールが生き残っています。

まあ、確かにテキストファイルを表示する場合には改行を意味する何らかのコードは必要なわけで、それなら昔のコードをそのまま使いましょうと。
それを今まで律儀に守っているのがなんとMicrosoftのWindows。
Windowsの改行コードは0D0Aなんですねえ。
それに対してUNIXは0Aコードなんですと。
LINUXはもとUNIXということのようなのでやっぱり0AなんですがMacも0Aなのだそうです。
なるほど。
するとFirefoxやGoogle ChromeはUNIX系(おそらくはLinux)か。
むむ。
なんだかWindows対LinuxおよびMac連合軍という図式が見えるような。

あれ?
Macも0Aコード?
さらに調べてみますとどこかの時点以前のMacは0Dコードだったようです(Macは使ったことがありませんので詳しくは存じ上げません)。
確か以前にI先生はMacをお使いとお聞きしたように記憶しております。
もしそうだとすればI先生からいただいたメールに’CR’と書かれていた理由がわかったように思えます。

まだもう少し書いておきたいこともあるのですが、今回はちょっと長くなってしまいましたので、それについては次回に書くことにいたします。

今回重要なご指摘をいただきましたI先生には心から感謝申し上げます。
今後ともご協力いただきますよう、よろしくお願いいたします。

復活!TINY BASIC[第40回]
2020.7.17upload

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