PC-9801エミュレータ(T98-Next)でMS-DOSプログラミング (51レス)
1-

1
(1): 2021/08/04(水)16:28 ID:MAOnCu96(1/10) AAS
おじさんの懐古趣味スレ
2: 2021/08/04(水)16:56 ID:MAOnCu96(2/10) AAS
とりあえず汎用的に使えそうなCのソースを書いておく
コンパイラはLSI-C86 試食版
3: 2021/08/04(水)16:58 ID:MAOnCu96(3/10) AAS
/*-----------------------------------------------------------------------------
HI_LIB Macro module

hi_macro.h
-----------------------------------------------------------------------------*/

#ifndef HI_MACRO
#define HI_MACRO 1

/*
* user defined type
*
*/
省82
4
(1): 2021/08/04(水)17:01 ID:MAOnCu96(4/10) AAS
/*
* character test macro
* 0:FALSE !0:TRUE
*/
#define M_isdigit(c) ((c)>='0'&&(c)<='9')
#define M_islhex(c) ((c)>='a'&&(c)<='f')
#define M_ishhex(c) ((c)>='A'&&(c)<='F')
#define M_ishex(c) (M_islhex(c)||M_ishhex(c))
#define M_isxdigit(c) (M_isdigit(c)||M_ishex(c))
#define M_iskanji(c) (((c)>=0x81&&(c)<=0x9f)|| ¥
省55
5
(1): 2021/08/04(水)17:02 ID:MAOnCu96(5/10) AAS
/*
* FAR ポインターからセグメント、オフセットを取り出す
* unsigned short FP_SEG( ???? far *p )
* unsigned short FP_OFF( ???? far *p )
*/
#ifndef FP_SEG
#define FP_SEG(p) ((WORD)((DWORD)((void far *)(p))>>16))
#endif
#ifndef FP_OFF
#define FP_OFF(p) ((WORD)(p))
省42
6: 2021/08/04(水)17:09 ID:MAOnCu96(6/10) AAS
/*-----------------------------------------------------------------------------
HI_LIB マクロ記述モジュール (98専用)

hi_98mac.h
-----------------------------------------------------------------------------*/

#ifndef HI_MACRO
#include "hi_macro.h"
#endif

#ifndef HI_98MAC
#define HI_98MAC 1

/*-------------------------------------
省27
7: 2021/08/04(水)17:10 ID:MAOnCu96(7/10) AAS
/*-------------------------------------
BEEP の継続時間カウンタ
AH=24H, int 18H の BEEP の残り時間を
10 ミリ秒単位で格納する
-------------------------------------*/
#define M_beep_time() ( M_peek( 0x0000, 0x0448 ) )

/*-------------------------------------
BEEP 音程
AH=23H, INT 18H で設定する音程。
8253A の分周値が格納される
省42
8
(1): 2021/08/04(水)17:11 ID:MAOnCu96(8/10) AAS
/*------------------------------------
キーバッファオーバーフロー時の BEEP
1 → ON , 0 → OFF
------------------------------------*/
#define M_KBD_beep() ( M_isBITon( 5, 0x0000, 0x5000 ) )

/*------------------------------------
CPU = V series ?
1 : V30/V30HL/V50/V33/V30モード
0 : 80x86
------------------------------------*/
省48
9: 2021/08/04(水)17:16 ID:MAOnCu96(9/10) AAS
以上、LSI-C86 試食版用のマクロ定義ヘッダでした。

hi_macro.h ・・・LSI-C86試食版で汎用的に使えるマクロ
hi_98mac.h ・・・PC-98にゴリゴリ依存したマクロ
10: 2021/08/04(水)17:23 ID:MAOnCu96(10/10) AAS
もういっちょ
テキスト VRAM 制御関数

tvram.h
tvramc
11: 2021/08/04(水)22:00 ID:UZhvVxc9(1) AAS
面倒くさいことに挑むね
実機もお待ちか
12: 2021/08/05(木)01:15 ID:gWzB/HnL(1/2) AAS
おお、こんなスレにも書き込みがw

実機ははるか昔に廃棄処分したなー
最近PC-98エミュレータの存在を知って、98用のMS-DOSとBIOSファイルも手に入ったので
昔持ってたPC-98の環境を再現してみてたんだけど、いじってると若い頃の感覚が戻って面白いのよね。
これ作ってる時はあんな事があったな、なんて唐突に思い出したり。
13: 2021/08/05(木)01:24 ID:gWzB/HnL(2/2) AAS
昔持ってた98のHDD内容をずっと保存してたんだけど、消さなくてよかった。
LSI-C86 3.30試食版とMS QuickBASIC 4.5とN88BASIC 6.1を超久しぶりに動かしたよ。
そういえばFDの作者の出射さんもLSI-Cの作者の森さんももう亡くなってるんだよなぁ。
時の流れを感じるわ。
14: 2021/08/06(金)10:41 ID:3MYb7QRI(1) AAS
3つのPC-98エミュレータを試した。

np2.exe ねこープロジェクト2

CPUは80286相当
MS-DOS3.30 動作OK
MS-DOS6.20 動作NG (DOS3.30しか使えないので、仮想HDDは128MBまで。HIMEM.SYSも使えない)

N88BASIC (6.1)正常動作
Cのコンパイルスピードは遅い
テキストVRAM 正常
グラフィックVRAM 正常

他のエミュレータに比べれば速度は遅いがちょうど実機のPC-9801とほぼ同じ速度で動くのでかなりリアル。
省22
15: 2021/08/06(金)14:53 ID:zVD5naH0(1) AAS
復活して幸せなHDDだろね
よくあんなの保管できた

任意のシステムフォントからfont.bmpを作成できるプログラムあった気がする
なので実機はなくても良し
16
(2): 2021/08/07(土)02:05 ID:7aG66mNX(1/2) AAS
PC-98で使ってたHDDをそのまま残してたわけじゃなくて、中のファイルをごっそりバックアップしたのを代々HDDに継続コピーしてたのよ。
流石に実機で使ってたSASIや98SCSIのHDDが今あったってデータは取り出せそうもないわw
98を初めて手に入れた時は貧乏学生で、バイトしまくってPC-9801RX2をやっと買ったんだよね。
モニタと色々小物を揃えて40万くらいしたようなw
その後就職して40MBのSCSI-HDDを8万くらい出して買って、コンパイラもボチボチ揃えてって頃で、プログラミングが楽しかったあの頃の思い出が一杯詰まっているHDD内容を消すのが忍びなくてね。
ずっとHDDにコピーしては保存してた。
それを今回エミュレータにぶっこんだわけ。
惜しむらくは開発環境以外のアプリケーションソフトを取ってなかったことかな。
一太郎Ver.3とかVJE-penとかマルチプランとか、その辺のソフトが今あればなぁ・・
DOS標準の日本語FEPがバカ過ぎるのに驚愕したけど、WX2が深いディレクトリから見つかったのでそれに置き換えた。
省4
17
(1): 2021/08/07(土)02:15 ID:7aG66mNX(2/2) AAS
ついでに当時作った小物プログラム
何かのソフトを動かしてグラフィック表示が残ったままになった場合に消去するやつ。
LSI-C86試食版でコンパイルしたらちゃんと動いた

/*-------------------
gvram クリア
-------------------*/

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <dos.h>
省57
18: 2021/08/13(金)06:11 ID:AXHpISpF(1/5) AAS
Annex86
CPUの設定をいじくると激しく動作がおかしくなるみたい。
ざっと試してみた所、まともに動くのは4MHz設定までで、それ以上のクロック数にするとハングアップに近いような動きになってしまう。
これはもうパスだな。

T98-Next
これはAnnex86に比べるとだいぶマシなんだけど、VZエディタの動きがちょっとおかしいのとGVRAMの輝度プレーンがないのが痛い。
VZエディタでおかしいところとは、カーソルを高速ブリンクの設定にしていても普通の速度のブリンクのまま、という点。
これは同じ+.nhdをneko-proj2で起動してみるとちゃんと高速ブリンクになってるので、T98-Nextのバグだろう。
T98-Nextは折角DOS6.20が使えるのにここだけが惜しい。
(neko-prj2はCPUが80286しか選択できないのでDOSは3.30まで)
省5
19: 2021/08/13(金)13:12 ID:AXHpISpF(2/5) AAS
上記補足
MS-DOS3.30の環境変数エリアはconfig.sysで拡張可能なのを忘れてた。

config.sysに
shell=a:\command.com a:\ /E:1024 /P
と書けば環境変数エリアが 1024 バイトに拡張される
これで環境変数自体はいくつも設定できるようになったんだけど
個々の環境変数そのものに容量制限があるのか、pathが長くなると設定できないみたい。
autoexec.bat中に

path=a:\dos
path=%path%;a:\language\msc60
省15
20: 2021/08/13(金)13:23 ID:AXHpISpF(3/5) AAS
MS-DOS3.30までしか使えないnp2.exeだけど、np21.exeであればMS-DOS6.20がインストールできるみたい。
試してみた結果、インストールはうまくいったのだけど、ハマった点を書き置き。

np21.exeのCPUクロックを4倍以上に上げるとエディタのスクロールがカクついて見にくかったんだけど、これは設定で直った。
np21.exeのメニューバー項目 Screen の中の nowait にチェックを入れると(デフォルトではチェックなし)カクつかなくなった。
1-
あと 31 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.086s*