0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Open WatcomでTEEN

Last updated at Posted at 2021-03-08

PC-9801がIPリーチャブルになったのでなにか作ってみようと思います。

FreeBSDで使えるようにしたOpen Watcom v2を使います。

当時はTEENのアプリケーションはLSI CかTurbo Cで作られるケースが多かったようです。

TEENは常駐型のプログラムでアプリケーションとはソフトウエア割り込み(INT)でやり取りをします。

TEENMEM.png

下のコードは割り込みの番号を探して、TEENが常駐している場合はソフトウエア割り込みを使ってTEENのバージョンを取得しています。

tver.c
# include <dos.h>
# include <stdio.h>
# include <string.h>

void teen_version(int vect)
{
union REGS regs;

        regs.h.ah = 0x01;
        int86(vect, &regs, &regs);
        printf("TEEN Vector %x Version %d.%d", vect, regs.h.al, regs.h.ah);
}

int main()
{
        int vect;
        char far *addr;

        vect = 0x22;
        while ( vect < 0x100){
                addr = (char *far)_dos_getvect(vect);
                addr -= 9L;
                if (_fstrcmp(addr, "%TEENAPI") == 0) {
                        teen_version(vect);
                        return 1;
                }
                ++vect;
        }
        printf("NG");
        return 0;
}

ラージモデル(-ml)でビルドする必要がありました。

FreeBSDでコンパイルしてTFTPでPC-9801に転送して確認しました。

A>TVER
TEEN Vector 70 Version 0.39

TEENではアセンブラで書かれたライブラリが用意してありました。スモールモデル用とラージモデル用があり、

ライブラリはTurbo Cの呼出し手順で作られていて、Open Watcomで使うためには引数のレジスタの変更が必要です。返り値はAX,DXで同じようです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?