since 2007.8 by K-ichi

にわかに再びMSXをいじりだして、アセンブルなどする必要が出てきた。もはやWindows環境(というより現代のPC)から離れられない体になってしまったので、3.5インチ2DDフロッピを共通の媒体として、WinXP上でクロス開発を行う。


まずは媒体の準備。

市場ではフロッピ自体が珍しくなってきたが、置いてあったとしても2HD。3.5インチの場合は、実用上2HDディスクを2DDとして使うことができる。ライトプロテクトノッチの反対側にある穴は2HDを示すものなので、遮光性のある丈夫なテープを貼って塞いでおく。

とあるメーリングリストのアーカイブには次のような記述がある。

[Scott Mueller, Upgrading and repairing PCs, eighth edition, p.554]

                    5 1/4-Inch                           3 1/2-Inch
-----------------------------------------------+----------------------------
                     Double   Quad     High    | Double   High     Extra High
                     Density  Density  Density | Density  Density  Density
Media Parameters     (DD)     (QD)     (HD)    | (DD)     (HD)     (ED)
-----------------------------------------------+----------------------------
Tracks Per Inch (TPI) 48      96       96      | 135      135      135
Bits Per Inch (BPI)   5,876   5,876    9,646   | 8,717    17,434   34,868
Media Formulation     Ferrite Ferrite  Cobalt  | Cobalt   Cobalt   Barium
Coercivity (Oersteds) 300     300      600     | 600      720      750
Thickness (Micro-In.) 100     100      50      | 70       40       100
Recording Polarity    Horiz.  Horiz.   Horiz.  | Horiz.   Horiz.   Vert.
-----------------------------------------------+----------------------------
TPI、BPIは記録の実力値を示すもので、数値が大きい分には問題ない。磁性体組成も同等だが、2HDは保磁力が少し大きくなっている。2DD:630Oe、2HD:730Oeという記述も見かける。2DDドライブでは力不足で書き込めない可能性もないわけではないが、実用上はほとんど問題ない。

磁性体膜厚は、2DDの方が倍ほど厚く2μm近くあり、光に透かすと濃さの違いがよく解る。
2HDディスク2枚重ね、若しくは2DDディスク1枚で、太陽を見るのにちょうどいい濃さになる。が、危険なのでやってはいけない、とされる。7月22日の皆既日食木漏れ日ピンホールが手軽で安全。

(参考)
磁性体の見た目について:AXIAマル磁講座(アーカイブ)
塗膜厚について:塗工屋家業奮戦記


そしてフォーマット。

MSXで使うディスクはMSXでフォーマットするのがベストだが、それができない場合もある。クロス開発であればWinXP機で、といきたいが、公式には2DDフォーマットはできないことになっている。別ページの記述では、コマンドプロンプト上でもできない、と読める。
実際には、単純明快な/f:720オプションこそ使えなくなったものの、次のようにトラック数やセクタ数を指定してやることでフォーマットは可能。

format a: /t:80 /n:9

また、これ以外を含めて、さまざまなフォーマットを試したサイトもある。


次に起動ディスク化。

媒体を準備しフォーマットができれば、ファイルのやりとりはできる。しかし、MSX-DOSの起動ディスクにはできない。DOS用のプログラムを作って動かす場合にはDOSで起動しなければならず、そのためにはブートセクタを書き換えなくてはならない。
この書き換え用に、MSX-DOS2ではFIXDISK.COMという外部コマンドが用意されている。DOSが起動できなければこのコマンドも使えず「卵と鶏」になってしまうが、DOS2相当のDisk-BASIC2.0上で、ファンクション67Hを使うルーチンを書けば、同様の処理ができると思われる。

問題は、DOS1相当のDisk-BASIC1.0環境しかない場合。高々256バイトの中に、いくつかのデータとシステム読み込みルーチンを置くだけなので、さほど難しくはなさそうだが、MSX-DOS2やCP/M2.2などMSX-DOS1以外のことまで考えはじめると少し心配にもなる。試しにMSX-DOSエミュレータでFIXDISKを実行してみたが、DOS1エミュレータであるためエラーで終了。

……などと考えていたら、便利ツールが発表されていた。
MSXformは、2DDフォーマットができ、MSX-DOS1/DOS2用のブートセクタを書き込める、というツール。フォーマットせずに、ブートセクタのみの書き換えも可能。FIXDISK.comの拡張版forWin、といったところ。あとはMSXDOS.SYSなどシステムファイルを書き込んでおけば、適当なMSX-DOSが起動する。


そのほか、クロス開発での便利ツール。
CP/M program EXEcutor
Windowsのコマンドプロンプトなどの上で、CP/M用ソフトを動かす。アセンブラM80、L80などはこれで動く。動作は軽い。初期SPが100Hに設定されているので要注意。以下のような初期化をしておくと安心。
ld  sp,(BDOS+1)
ld  hl,0000h
push  hl
MSX-DOS Emulator
Windowsのコマンドプロンプトなどの上で、MSX-DOS1用ソフトを動かす。少し重い。ファンクション27H、および初期DTA値にバグあり。
ファンクション27Hは、Aレジスタにエラーを返さないので、HLレジスタペアで読めた量を確認する必要がある。
初期DTA値は、値自体がない。デフォルトのままでは、読み込みファンクションを実行しても、メモリのどこにも読み込まれない模様。

L80,M80,N80
M80、L80はDOStoolsに入っているアセンブラとリンカ。とても高機能なので、独自のマクロ群を咬ますことで他言語用マクロアセンブラとして使うこともできる。実際にPICやCASLをアセンブルしたことがある。N80は、M80が日本語対応してないため、前処理をするフィルタツール。

2 件のコメント:

匿名 さんのコメント...

仮想FDDとMSXPLAYer(MSXマガジン永久保存版3に掲載)を使えば簡単に開発できますよ~私はこの環境で使ってます。^^

Virtual Floppy Drive 2.1
http://chitchat.at.infoseek.co.jp/vmware/vfdj.html

K-ichi さんのコメント...

ソフト制作が主目的だと、最近のPCにはFDDも載らなくなってきましたし、その方法が良さそうですね。私の場合は、実機上のハードウェアを動かすため、ってことが多いので、実際にデータを移す必要があるんです。

コメントを投稿

.

関連記事


この記事へのリンク by 関連記事、被リンク記事をリストアップする」記事

ブログ アーカイブ