雑談質問相談掲示板

ページ名:雑談質問相談掲示板

はじめに

ここは、雑談・質問・相談など何でも話題にする掲示板です。

掲示板についてお知らせ

特にありません。

禁止事項

  • 掲示板の趣旨と関係ない書き込み
  • 誹謗・中傷含む書き込み
  • 他サイトやアプリの宣伝
  • 招待URLの書き込み

以上に該当する書き込みを見つけた場合、コメントを削除する可能性がございます。

 

また、お困りのことがございましたら管理者へのお問い合わせフォームよりお問い合わせください。

シェアボタン: このページをSNSに投稿するのに便利です。

コメント

返信元返信をやめる

※ 悪質なユーザーの書き込みは制限します。

最新を表示する
nabe@abk
ID:M2RhYmNlN

>> 返信元

DMコマンドありがとうございます。早速使います!

>INT 97H(TimerBIOS)
V86モードでもプロテクトモードで割り込みを発生させる場合は、DOS-Extenderの機能を使ってリアルモード側のベクタを書き換えるのが正しい処理になります。
よって、V86モードで発生した割り込みでしたら、EMM386の機能としてはリアルモードベクタに飛ばすのが正しい処理だと思われます。もしくは正しい例外処理をエミュレートできれば、EMM386がエミュレートしてリアルモード割り込みに引き継ぐと思われます。
※EMM386は、V86なDOS環境をリアルモードと極力同じにするよう動作します。

返信
2020-07-25 00:21:32

山川機長
ID:MzhiZWIzN

調査ありがとうございます! PLAY "O4C","","","","","","O4C" として津軽のPCM音源をFM音源に合わせて調律(?)したのですが、20725Hzという変な値に落ち着いてます。うねりに関しては、エンベロープの計算の違いだと思います。XM7のCISCさん作のエミュレータと比較してみたところ、減衰の仕方が微妙に違うようなのですが具体的にどう計算を変えると正しくなるのかはまだ解明できてないもので。引き続きよろしくお願いします!

返信
2020-07-24 23:59:27

山川機長
ID:MzhiZWIzN

とりあえずVM86に入ることはできてINTも出るようになったのですが、INT 97H(TimerBIOS)が出てる箇所があって、プロテクトモードのIDTに97Hが書いてなくて止まってます。ここは本来97Hのエントリが書かれてあるべきなのか、それともNP faultを出すのが正しいのかで止まってます。ごまかしてリアルモードのとび先に直接飛ばすという手でも動きそうな気がしますが一応正しく処理する方法を模索してます。

返信
2020-07-24 23:54:39

山川機長
ID:MzhiZWIzN

デバッガは、自分で使いまくるので、ユーザフレンドリーではないかもしれないですが機能は日々成長しています。なお、ダンプですが、 DM または PRI でできます。

DM DS:DI+AX*100+1FFFF

みたいにできます!なお、DM PHYS:1000 とか と DM LINE:2000 とかも可能です。数字はすべて16進数です。

返信
2020-07-24 23:50:25

nabe@abk
ID:NGEzNDY4N

ネットワークドライブの仕組みがなんとなく分かってきたので、MSCDEXを軽く解析してるのですが、デバッガ超絶便利で感動しています。そこで要望ばかりして大変申し訳ないのですが、将来的にメモリダンプコマンドをつけていただけると嬉しいです。
ひとまず「dbコマンド(dump byte)」があると嬉しいです。「db ds:bx」とかできると感動ですが即値のみでも十分。

返信
2020-07-24 23:31:44

WINDY
ID:OWE1ZTIzY

つづき
・F-BASIC386 V2.1 L20でPLAY "@7V15O4C1&C1&C1&C1&C1&"として発声させました
・津軽の出力は音圧が低く、Volt/Divを他の2種よりも低くしています
・HCとうんづは似た波形ですが、逆転しているような波形
・津軽の波形はうねりが小さいようですが、上記の音圧の絡みかも知れません。
・3種とも周期は同じような物でした

返信
2020-07-24 23:16:40

WINDY
ID:OWE1ZTIzY

FM音源の出力波形を計測してみました。
HC:https://drive.google.com/file/d/1VsPsHIIgKx07Vnj2mWnmWD2_6-d8wia7/view?usp=sharing
津軽:https://drive.google.com/file/d/1Vl2WpcR6G-hZJ-nkKl4QhaNxKKILsJIm/view?usp=sharing
うんづ:https://drive.google.com/file/d/1ViLtFJvaMMXMma5BqwfmE9wfAxux4WPw/view?usp=sharing

返信
2020-07-24 23:04:22

nabe@abk
ID:NGEzNDY4N

>> 返信元

(文字数制限にかかったので、続き)

あと、DOS6の仮想86モードは、ほとんどすべての特権命令をEMM386がエミュレートするので、ユーザーランドからみるとリアルモードとほぼ変わりありません。ですので、V86として真面目に実装しなくても(I/O他特権命令を素通りさせても)、DOSは問題なく動く気がします。

-HIMEM.SYS 1MB超えメモリの管理。CPUのリアル←→プロテクトモード切り替え機能。
-EMM386.EXE CPUをV86モードに切り替えてEMM機能(バンクメモリシステム)のエミュレート。

返信
2020-07-24 19:58:06

nabe@abk
ID:NGEzNDY4N

>> 返信元

keymapの実装ありがとうございます。嬉しいです。個人的にはNumLockは無反応(マップなし)で良いのではないかと思います(物理キー側のモードを切り替えるだけなので、何か入力したくて押すわけではない)。

仮想ドライブドライバですが、SHSUCDXというものを見つけたので昨日ずっとソースを読んでました。まだ完全に理解したわけではないですが、そんなに複雑なことはしなさそうですのでなんとかなるかも。
http://adoxa.altervista.org/shsucdx/index.html

返信
2020-07-24 19:51:25

fuzzball
ID:OGM4OTE2O

>> 返信元

シグノシス2作品確認しました。
画像はこちら。 https://twitter.com/fuzzball/status/1286523469656547328

マイクロコズムはスタート時にフリーズ。
スカベンジャー4は改善されたようでプレイ可になっていましたが、ボスでクラッシュしました。ログはこちら。 https://pastebin.pl/view/b5631fd9

昨日ここには書きませんでしたが、シャドー・オブ・ザ・ビーストは1も2も起動せずでした。
シグノシスは手ごわいですね。

返信
2020-07-24 14:28:45

山川機長
ID:MzhiZWIzN

リリースはしてないですが、最新版ソースにkeymapをテキストにsave/loadする機能を追加しました。コマンド SAVEKEYMAP file とすると保存できて、読み込むには起動時オプション -KEYMAP file としてください。USキーボードだと~(TILDA)がESCの位置にありますが日本語キーボードだとTILDAは@になるそうです。DOS6は、LTRを使ってたのはHIMEM内で、Virtual86モードを使っているので、限定的に実装できないか検討中です。NumLockはTownsに無いのでPAUSEキーにしていたのですが、これもカスタマイズできた方がいいですかね?

返信
2020-07-24 12:55:38

WINDY
ID:OWE1ZTIzY

>> 返信元

実家に色々とあると思うのですが、発掘したいと思います。
残念ながら前回行った時にはHIGH-Cや386|ASMのリファレンスは発掘したのですが、DOS関連はその時にはあまり必要性を感じなかったので探していませんでした。

返信
2020-07-24 00:38:36

山川機長
ID:MTVhNTkwZ

>> 返信元

ご報告ありがとうございます!現在、DOS6、シグノシス系、Glodia系をメインに対応しているので少し時間がかかるかもしれませんが、直したいと思います。引き続きよろしくお願いします!

返信
2020-07-23 21:33:42

山川機長
ID:MTVhNTkwZ

>> 返信元

Free386のデバッグにお役に立てるのであれば、なんとかしたいと思います!知り合いのX68Kユーザ(カーネギーメロン大最強の卒業生)にXMODEM対応したと言ったら、X68KにはWINDRVというドライバがあって、と自慢されたので是非ほしいですね!一応、勝手に空けたI/Oで高速にファイルを流し込む機能は既に入ってるのですが、ファイル共有できるとデモプログラミングが楽になりますね。あとは、EthernetCardの仕様がわかれば実装したいとこなのですが。

返信
2020-07-23 21:31:33

fuzzball
ID:NTkwMjljZ

はじめまして、fuzzballと申します。
ご挨拶方々、ソフトウェア互換リストに少し追加させていただきました。
スト2のライン欠けについてはこちらを参照して下さい。
https://twitter.com/fuzzball/status/1286225496460505091

よろしくお願いいたします。

返信
2020-07-23 18:10:15

nabe@abk
ID:Y2ZlMmI0O

DOS6環境時、キーボードまわりでいくつか。
- NumLockを押すとHALTするようです。
- ESC(keycode:1) が効かないようです。
そしてALT押しながら操作を多様するので困ってる(+contextキー付いてない)ので、
translation_data が外部ファイルになっていただけたら嬉しいです。

返信
2020-07-23 16:18:20

nabe@abk
ID:Y2ZlMmI0O

>> 返信元

DOS6動きました、ありがとうございます。EMM386対応も期待してます(Free386のデバッグに使いたいらしい)。

うんづで言うところの windrv.sys みたいなのが欲しくなりますね。
幸いDOSプログラミングは多少慣れているので、DOSでネットワークドライブを作成するドライバ仕様と時間があればやりたいところですが、軽く検索してみても、今どきDOSの資料探すのは大変だった。
多分sysファイルだとブロックデバイスにするしかなくエミュレーションが大変そうなので、ネットワークドライブはMSCDEXよろしくEXEで作るんだと思いますが……。どなたか情報お持ちの方いませんか。

返信
2020-07-23 15:16:45

山川機長
ID:MTVhNTkwZ

リリース出しました!DOS6.2は動きますがEMM386.EXEがTask Registerを使っている影響で未対応です。Task Registerの扱いは改めて勉強しないとわかりません。Task Register対応は後回しということにさせてください。なお、DOS6.2のHIMEM.SYSに対応したらFractal Engine Demoの画面の乱れも直ってしまいました。(やっぱりCPUだった)

返信
2020-07-23 12:39:44

山川機長
ID:MTVhNTkwZ

>> 返信元

連続ですみません。https://wiki.osdev.org/Unreal_Mode これによるとセグメントリミットってリアルモードに戻ってもリセットされないんですね!本当なのだろうか。そんなことが可能ならDOS Extender無くても良さそうな。。。。Unreal ModeはリアルモードでCR0のビット0を立てて使うもんだと思ってました。これを実装すれば多分HIMEM.SYSも動くかも。とりあえず、やってみます。

返信
2020-07-23 08:48:32

山川機長
ID:MTVhNTkwZ

HIMEM.SYSやっぱ変ですね。Real ModeだとセグメントリミットがFFFFのはずなのに。直前で↓になっているので、

1086:0000A67A 0F01E0 SMSW AX
1086:0000A67D D1E8 SHR AX,1
1086:0000A67F 0F82C901 JB 0000A84C

Unreal Modeでも無さそうなのですが。しかし67Hプレフィックスはついているし。HIMEM.SYSがちょっと難航しそうですね。

返信
2020-07-23 08:35:04

NG表示方式

NGID一覧