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

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



[第42回]


●16ビットアプリケーション

前回、前々回とテキストファイルの改行コード問題について書きました。
しかし一般的にはテキストファイルの改行コードがどうであってもそれほど問題になることはないと思います。
問題があったとしても[第38回]に少し書きましたように、せいぜいnotepad(メモ帳)で開いたときに改行されなくて表示がくずれてしまうことぐらいでしょう。
そういった場合でも、それも[第38回]に書きましたように、あるいは前回も書きましたようにTeraPadを使えば問題を回避できます。
「一体なにがそんなに問題なのだ?」
と疑問に思われるかもしれません。
ええ。
ですから一般的には改行コードの違いなどはどーでもよいことなのです。
ですけれど私の場合にはこれはそのままには捨て置けない大問題なのです。
そもそも事の起こりは[第33回]にアップロードしましたtinybst7.txtをダウンロードしたところ、当社製の8080アセンブラasm80.comでアセンブルできないという問題が発生したことでした。
確認してみたところ本来は改行コードが’0D0A’であったはずのところが、アップロード、ダウンロードの過程でそれが’0A’に変えられてしまっていました。
asm80.comの場合行末には’0D’コードが必要です。
それがないとアセンブルできずにこけてしまいます。
TINY BASICは8080ニーモニックで書かれていて、それをもとに作成作業中の「中日電工版」TINY BASICも8080ニーモニックで記述しています。
それをアセンブルするにはどうしてもasm80.comが必要なのです。
しかしことはasm80.comだけにとどまりません。
当社オリジナルのZ80アセンブラzasm.comも同様の作りですし、ZB3BASICでLOAD、SAVEするユーザープログラムのテキストファイルも’0D0A’ルールなのです。
つまり、私の作ったシステムは’0D0A’がベースで成り立っているのです。
いまさらそこを’0A’をベースにしたシステムに書き換えるなどとてもできませぬ。
ええ、確実に寿命が尽きてしまいます。
前回も書きましたように今のところはなんとかなるような対策もあるのですけれど。
これから先のことを考えますと、なかなかに困った状況だといえましょう。

なんだかつい余計なことを書いてしまいました。
困ったことは改行コード問題だけではありません。
今回のテーマの「16ビットアプリケーション」もなかなかに困った問題です。
この問題については過去にも何回か書いています。
16ビットアプリケーションというのは古き良き時代の8086アプリケーションで拡張子が.comで示されます。
CP/Mのアプリケーションの拡張子も.comですがそれは8080の命令で書かれたファイルですので、今回ここで取り上げる16ビットアプリケーションではありません。
ここでいう16ビットアプリケーションはWindowsのコマンドプロンプトで命令(コマンド)として実行できる形式のファイルでもとは8086アセンブラで作成した8086のマシン語プログラムファイルです。
16ビットアプリケーションは16ビットCPU8086のためのプログラムだからその名前になっているかのような印象を受けますが厳密にはそういうことではありません。
8086は16ビットですがアクセスできるメモリ空間は20ビットあります。
しかし拡張子が.comのプログラムファイルはセグメント(64KB)を越えてアクセスすることはできません。
8086にはそれぞれ16ビットのセグメントレジスタが4つあって、それを使って20ビットのメモリ空間の中の任意の64KB(16ビット)をアクセスすることができますが、何らかのテクニックを使わない限りたとえば64KBを越えるプログラムとかデータを扱うことができません。
16ビットが壁になっていますから16ビットアプリケーションです。

Windowsマシンで16ビットアプリケーションを実行する場合にはMSDOSプロンプト(コマンドプロンプト)を開いてそこで実行します。
上で書いたasm80.comやzasm.comが16ビットアプリケーションです。
ND80Z3.5などをUSB接続してZB3BASICを実行するときもコマンドプロンプト上で実行しますが、そのためのアプリケーションプログラムzb3.exeは16ビットアプリケーションではありません。
拡張子が.exeのアプリケーションは.comのアプリケーションと区別して32ビットアプリケーションと呼びます。
32ビットアプリケーションはこれから以下で説明するような問題はありません。

さてそれでその16ビットアプリケーションなのですが。
昔のWindowsバージョンでも現行のWindows10でも16ビットアプリケーションは実行可能です。
ただし実行可能なのは32ビット版のWindowsに限ります。
たとえばWindows7の64ビットバージョンやWindows10の64ビットバージョンでは16ビットアプリケーション(.comのファイル)は実行できません。
当初このことが明らかになったときは「えらいこっちゃあ」と大いにうろたえました。
それで「ND80Z3.5などに附属するCDROMに収録のasm80.comとかzasm.comなどの16ビットアプリケーションは64ビットバージョンのWindowsでは実行できません」という但し書きを取扱説明書に書き加えました。
この問題についてはもう10年も昔に「パソコンをつくろう!」[第9回]に書いたのが最初です。

ところがまさに地獄で仏といいましょうか、その記事をお読みになった方から、「私の作ったプログラムを使えば64ビットWindowsの上でも.comが実行できますから使ってみてください」という有難いメールをいただきました。
さっそくホームページで紹介をさせていただきました(「パソコンをつくろう!」[第16回])。
そういうことでその後しばらくはそのままの対応だったのですが、新しい組立キットを新規販売開始することになった折に久し振りにその方のホームページを訪問させていただこうと思いましたところお引越しをされたようでリンクが切れてしまっていました。
そこで新しいお引越し先のリンクをつけるとともに改めて紹介をさせていただきました(「マイコン独立大作戦」[総合第30回]参照)。
こちらももう3年も前の記事になってしまいました。
上記の記事を書きましてからはND80Z3.5などの取扱説明書には上記記事についての追補を入れるようにして、「64ビット版Windowsでもそこで紹介させていただいているアプリケーションソフト(MSDOS.EXE)を使えば16ビットアプリケーションが使えます」ということを告知するようにしました。

しかしそれ以前のお客様で上記記事をお読みになっていないか、あるいは読んだけれど忘れてしまったという方もいらっしゃるかと思います。
そういう方が64ビットのWindowsパソコンをお持ちで、今回の企画記事をお読みになってtinybst7.txtをダウンロードしてasm80.comを実行しようとすると、「16ビットアプリケーションは実行できません」というメッセージに遭遇してしまうことになります。
そういうことに気が付きましたので今回あらためて上記について書いた次第です。
もし64ビット版のWindows7、Windows10などのパソコンをお持ちでasm80.comなどを実行しようとお考えの場合に、もし「MSDOS.EXE」についてご存知ではないようでしたら「マイコン独立大作戦」[総合第30回]をお読みいただきますようお願いいたします。

今回また久し振りに上記で紹介させていただいたサイトに訪問させていただきましたところ、MSDOS.EXEが最新バージョンになっておりました。
上記記事で紹介させていただいたときは(3/1/2017)バージョンだったのですが、今は(5/10/2020)バージョンになっています。

復活!TINY BASIC[第42回]
2020.7.19upload

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