問題タブ [watcom]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
dos - フラットメモリモードのHW割り込みをDOS32/Aに置き換えます
フラットメモリモードでHW割り込みを置き換える方法について質問があります...
- 私のアプリケーションについて...
- WatcomCとDOS32/Aを組み合わせて作成されました。
- DOSモードで実行するために作成されました(OSモードではありません)
- DOS32 / Aを使用すると、100万を超えるメモリにアクセスし、使用する大容量メモリを割り当てることができます...(フラットメモリモードで実行中!!!)
- 現在の問題...
- 1枚のPCIカードにISR(割り込みサービスルーチン)を書きたい。したがって、HW割り込みを「置き換える」必要があります。
- 元。PCIカードの割り込みライン=0DOSでは0xE。これは、このデバイスが8259のIRQ14を介して割り込みを発行することを意味します。
しかし、フラットモードでこの割り込みを置き換えるという目標を達成する方法はありませんでしたか?
@リソースを見つけました...-watcomCのライブラリには、_dos_getvect、_dos_setvect、および_chain_intrを使用してINT0x1Cをフックするサンプルが1つあります...このコードをテストしてOKでした。しかし、それを私の場合に適用すると、INT76(IRQ14は"INT 0x76" <-(14-8)+ 0x70)で、何も起こりませんでした。
- HW割り込みが生成されていることを確認しましたが、自分のISRが呼び出されませんでした...
私は何かを失いますか?または、目標を達成するために使用できる機能はありますか?
================================================== =============
[20120809] DPMI呼び出し0x204および0x205 を使用しようとしましたが、 MyISR()がまだ呼び出されていないことがわかりました。私がしたことを以下に説明しました。多分あなた方全員が私にいくつかの提案をすることができます!
1)インラインアセンブリを使用してDPMI呼び出し0x204および0x205を実装し、OKをテストします...
元。DPMI 0x204を使用して16個のIRQの割り込みベクトルを表示すると、次の結果が得られます( selector:offset ): 8:1540(INT8)、8:1544(INT9)、.....、8:1560(INT70)、8 :1564(INT71)、...、8:157C(INT77)
元。DPMI 0x205を使用してIRQ14 (INT76)の割り込みベクトルを設定し、CF = 0を返し、成功したことを示します
2)次のように独自のISR MyISR()を作成します。
3) DPMI呼び出し0x205によって新しい割り込みベクトルを設定します。
次に、sts = 0(CF = 0)は成功したことを示します!
- ここで奇妙なことの1つは、私のアプリはフラットメモリモデルで実行され、MyISR()のセレクターは0である必要があると思います...しかし、DPMI呼び出し0x205のセレクター= 0の場合、CF=1およびAX=0x8022を取得し、「無効なセレクター」!
4) HW割り込みを生成し、証拠は次のとおりです。
- PCIデバイス構成レジスタ0x5ビット2(割り込み無効)= 0
- PCIデバイス構成レジスタ0x6ビット3(割り込みステータス)= 1
- PCIデバイス構成レジスタ0x3C/0x3D(割り込みライン)= 0xE / 0x2
- DOSでは、割り込みモードはPICモード(8259モード)およびピンベース(MSIE = 0)です。
5)ティックの値を表示し、それがまだ「0」であることを確認しました...
したがって、MyISR()が正しく呼び出されていないと思います...
assembly - DOS エクステンダまたは DPMI 環境で DMA 転送を行う方法は?
プログラムは DOS エクステンダ + DPMI 環境で実行中に DMA 転送をどのように使用できますか?
つまり、割り当てられた dma バッファーの物理アドレスを割り当てて取得し、その物理アドレスを DMA コントローラーまたはPCI バス マスター デバイスに提供する方法です。
次の 2 つの可能性があります。
DOS エクステンダーまたは DPMI サーバー/ホストは、仮想メモリをサポートします。例えばコーズウェイ。
DOS エクステンダーまたは DPMI サーバー/ホストは仮想メモリをサポートしていませんが、ページングは有効になっています。例えばDOS32a。
Open Watcom Cコンパイラを使用しています。
ランタイム環境は次のとおりです。
FreeDOS + XMS (EMS/EMM386 なし) + DOS エクステンダ (DOS32a)
DJGPPの場合、ソリューションはこちら
しかし、最後に述べた解決策、つまり XMS 経由は DOS32a でも動作しますか?
DOS32a のドキュメントによると、プロテクト モードに切り替える前に、使用可能なすべての拡張メモリが割り当てられ、プログラムは DPMI 関数 501h を介してそのメモリを割り当てることができます。
注: dma バッファは 1MB 程度になる可能性があるため、従来のメモリは使用できません。
c - DOSの「サマータイム」
C アプリケーションでこの関数を使用してtime(NULL)
、1970 年以降の秒を取得しています。1 時間の差で情報が返されていることに気付きました。
tm
次に、 を使用して結果を構造体に変換しようとしましたが、フィールドが設定されているlocaltime
ことに気付きました。tm_isdst
コードは次のようになります。
最初はprintf
、tempo
1時間差でプリント中です。2番目に、正しい値を出力しています。
私はMs DOS 6.0
OS でアプリケーションを実行しており、アプリケーションは でコンパイルされていWatcom v1.3
ます。
情報はどこDaylight Savings Time
から来たのですか?DOS はこの情報を保持していますか?
c++ - Open Watcomエラーを実行できません(wpp):そのようなファイルまたはディレクトリはありません*
そこで、OpenWatcomFORTRANを使用して16ビットMSDOSアプリケーションを作成しようとしています。
新しいプロジェクトを作成し、単純なhello world cppファイルを作成しましたが、f4を押してビルドしようとすると、エラーが発生します。
エラー(E14):実行できません(wpp):そのようなファイルまたはディレクトリはありません
私はそれを数回グーグルで検索しましたが、私の問題に対する答えを見つけることができませんでした。
PS:コマンドラインにないGUIでWatcomを使用しています
*これは、ここでの前の説明から続きますが、未回答のまま
です。msdosで実行できるc ++コンソールexeを作成するにはどうすればよいですか?
c - コンパイラのセットアップ Windows XP で watcom を開く
Virtual Boxで実行するOS Win XPにコンパイラ「Open watcom」をインストールしました。
プログラムを automode: full package でインストールし、環境変数に必要なすべての情報がインストール中に挿入された autoexec および config ファイルへの自動変更を使用しました。
C プロジェクトを DOS 16 ビット用にコンパイルできません。次のエラーが表示されます。
「system.init」ファイルを修正しようとして、「device=c:\watcom\binw\wdebug.386」を [386enh] ディレクトリに挿入しました (open watcom に関連するサイトの 1 つの FAQ でアドバイスされていました)。効果はありませんでした。
私は助けが必要です!c プロジェクトをコンパイルして wdebug.386 の問題を解決するにはどうすればよいですか。
assembly - open watcom エラー (複数の開始アドレスが見つかりました) を伴う 16 ビット アセンブリ コードのコンパイル
オープン watcom IDE で本のルートキット アーセナルから 16 ビット アセンブリ コード スニペットをコンパイルしようとしています。「複数の開始アドレスが見つかりました」というエラーが表示されます。組み立てに関する知識が非常に限られているため、整理することができませんでした。これはコードです:
親切に、私を助けてください。
dll - Open Watcom for Win32 コンソール アプリケーションで libxml2 をコンパイルおよびリンクする
C で記述され、Open Watcom を使用してコンパイルされた Windows 32 ビット コンソール アプリケーションがあります。アプリケーションで libxml2 ライブラリを使用したいと考えています。Win32 DLL バイナリが見つかりました。Watcom コンパイラを使用してアプリケーションのコードにリンクできますか?