Top サイトマップ

DOS 関連ツール

更新:2013/02/18 00:16

JWasm

2010. 1.23(土)

■ 配布しているところ

Japheth さんのサイト
URL: http://www.japheth.de/JWasm.html

オープンソースで各種 OS に対応しています。

ライセンスは、Sybase Open Watcom Public License version 1.0 (原文)です。


■ MASM 6 との互換性

JWasm と MASM の互換性については、JWasm 2.02 と MASM の動作の違いを見て
下さい。


■ FreeBSD や Linux でのコンパイル手順

ソースファイルを展開します。

> mkdir jwasm201
> cd jwasm201
> unzip ../jwasm201s.zip

GNU make コマンドを使ってコンパイルします。

> gmake -f GccUnix.mak     # FreeBSD の場合
> make -f GccUnix.mak      # Linux の場合


LSI C-86 3.30c 試食版

2012. 2.18(月)

■ 配布しているところ

エル・エス・アイジャパン社のフリーソフトウェア集にて
URL: http://www.lsi-j.co.jp/freesoft/


■ 割り込み処理について

 LSI C-86 3.30c の割り込み処理の例として pit18.c を作ってみました。pit18.c は、
プログラマブル・インターバル・タイマー(PIT: i8254 相当)の割り込み回数を18回数え
るシンプルなプログラムです。コンパイルして

>lcc -O -o pit18.exe pit18.c -ltinymain.obj -lintlib.lib

実行するとこんな感じになります。DOSBoxのようなエミュレータでも動きます。

>PIT18.EXE
PIT 18
PIT 18

pit18.c の割り込み処理の部分は、こんなになっていて

void far pit_count()
{
    _asm( "PUSH   AX" );
    _asm( "PUSH   DS" );
    _asm( "MOV    AX,DGROUP" );
    _asm( "MOV    DS,AX" );
    pitcnt++;               /* PIT interrupt count */
    _pushf();
    (*old_PIT_isr)();
    _asm( "POP   DS" );
    _asm( "POP   AX" );
    _iret();
}

オプション -S を付けてコンパイルすると pit18.a86 というファイルができて

>lcc -S -O pit18.c

該当する部分は、こんなコードになりました。

pit_count_::
    PUSH   AX
    PUSH   DS
    MOV    AX,DGROUP
    MOV    DS,AX
    INC [pitcnt_].W
    pushf
    CALLF   [old_PIT_isr_].D
    POP   DS
    POP   AX
    iret
    RETF

最後の RETF は不要なんですが、試食版では必ず付いてきます。割り込み処理に影響は
ありませんが、スクリプト等を使って削除するようにした方がいいかもしれません。

もっと複雑な割り込み処理の場合は、iret の前に調整用の POP が必要になりますので、
ご注意を。

<追記> PC-9821のカレンダー時計割り込みの例として cal32.c を作りました。
カレンダー時計(UPD4993A)の割り込み回数を32回数えるシンプルなプログラムです。



Windows 版の TASM32 5.3

2009.12.14(月)

■ 配布していたところ

2009年 8月に配布を終了したようです。

Turbo Explorer の Turbo C++ の中に入っていました。
URL: http://www.turboexplorer.com/jp/cpp

また、C++ BuilderX Personal (cbx1_personal_windows.zip) でも配布されていました
ので、雑誌等の付録で入手できるかもしれません。

Windows 版ですが、DOS のコードもアセンブルできます。


■ ファイルの展開

 7-Zip のコマンドライン版を使うと下記のようにして展開できます。

> 7za e -tcab TCPP_EXPL_JP_DL.exe -r Data1.cab
> 7za e -tcab Data1.cab tasm32.exe

 cabextract を使うと下記のようにして展開できます。

> cabextract -F Install/Data1.cab TCPP_EXPL_JP_DL.exe
> cabextract -F tasm32.exe Install\Data1.cab

尚、英語版 (TCPP_EXPL_EN_DL.exe) でも同じようにして展開できます。


■ 関連文書

TASM 5.0 互換の Paradigm Assembler のユーザーズ・ガイド (PDF) です。

Paradigm Assembler User's Guide (968KB)
URL: http://www.phatcode.net/res/308/files/pasmug.pdf



Windows 版の MASM 7

2009.12.21(月)

■ 配布していたところ

Windows Server 2003 DDK に入っていましたが、現在配布は終了しています。
URL: http://www.microsoft.com/japan/whdc/DevTools/ddk/default.mspx
URL: http://download.microsoft.com/download/9/0/f/ (実際には1行です)
   90f019ac-8243-48d3-91cf-81fc4093ecfd/1830_usa_ddk.iso


■ 必要なファイルを取り出す

上記より入手したファイル 1830_usa_ddk.iso を CD-R に焼いたり、仮想ドライブに
して common ディレクトリにあるファイル X86dBINS.cab を取り出します。また、同じ
ディレクトリにある d16bebin.cab, d16beinc.cab, d16belib.cab の3つのファイル
が、MSC 8 と MASM 5.1 の圧縮ファイルで設定等は別途記載します。


■ ファイルの展開

圧縮ファイル X86dBINS.cab から下記のようにして展開します。

> expand X86dBINS.cab -F:X86dBINS_FILE_19 .
> ren X86dBINS_FILE_19 ml.exe

尚、DOS のコードをアセンブルするときは、オプションの -omf が必要になります。



DOS 用の MSC 8 と MASM 5.1

2009.12.21(月)

■ 配布していたところ

Windows Server 2003 DDK に入っていましたが、現在配布は終了しています。
URL: http://www.microsoft.com/japan/whdc/DevTools/ddk/default.mspx
URL: http://download.microsoft.com/download/9/0/f/ (実際には1行です)
   90f019ac-8243-48d3-91cf-81fc4093ecfd/1830_usa_ddk.iso


■ 必要なファイルを取り出す

上記より入手したファイル 1830_usa_ddk.iso を CD-R に焼いたり、仮想ドライブに
して common ディレクトリにある d16bebin.cab, d16beinc.cab, d16belib.cab の3
つのファイルを取り出します。また、同じディレクトリにある X86dBINS.cab という
ファイルの中に MASM 7 があります。


■ インストール

C ドライブの \msc ディレクトリにインストールする場合の例です。

1. d16bebin.cab ファイルの展開
 C: ドライブに \msc\bin ディレクトリを作ります。
 C:\msc\bin ディレクトリに d16bebin.cab ファイルを展開します。

2. d16beinc.cab ファイルの展開
 C: ドライブに \msc\include ディレクトリを作ります。
 C:\msc\include ディレクトリに d16beinc.cab ファイルを展開します。

 C: ドライブに \msc\include\sys ディレクトリを作ります。
  sys_locking.h, sys_stat.h, sys_timeb.h, sys_types.h, sys_utime.h の
 ファイルを \msc\include\sys ディレクトリに移動させて、ファイル名から
 sys_ の部分を取り除きます。

3. d16belib.cab ファイルの展開
 C: ドライブに \msc\lib ディレクトリを作ります。
 C:\msc\lib ディレクトリに d16belib.cab ファイルを展開します。


■ 環境変数の設定

環境変数を下記のように設定します。

SET PATH=%PATH%;C:\msc\bin
SET INCLUDE=C:\msc\include
SET LIB=C:\msc\lib

■ テスト

試しにハローワールドをやってみます。

> cl /AT hello.c
> hello.com
Hello, world !!

設定が正しければ正常に表示されるはずです。