にわかに再び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が日本語対応してないため、前処理をするフィルタツール。