📄 windows.txt
字号:
ッグなどが乖えるˉ #ItIs/Winに烹很されていたカ〖ネル柒婶攫鼠山绩は侍ユニットとなったデバッグコンソ〖ルを铜跟にするにはsys_defs.h:37の //#define DEBUG_ENABLEのコメントをはずし·离咐を铜跟にすることで网脱材墙となるˉ痰跟にするには澈碰改疥の离咐を猴近またはコメントアウトすればよいˉTOPPERS/JSP Windowsシミュレ〖ション茨董では·肌のデバッグ脱怠墙を捏丁しているˉOnDebug : デバッグ箕のみ铜跟となる乖につける离咐 乖の片にOnDebugをつけることで·DEBUG_ENABLE箕にのみ铜跟となる乖を词帽に 侯ることができるˉ DEBUG_ENABLE箕 : #define OnDebug 润DEBUG_ENABLE箕 : #define OnDebug /##/ 毋 OnDebug wsprintf(buffer,"i = %d",i);unsigned int DebugOut(LPCSTR text) : デバッグコンソ〖ルへの叫蜗 DebugOut簇眶はデバッグコンソ〖ルへ矢机误を叫蜗するˉ 润DEBUG_ENABLE箕にはコメント乖になるˉ------------------------------3.3 タスクトレイ (Notify Icon)------------------------------TOPPERS/JSP Windowsシミュレ〖ション茨董では·奶撅プログラムは斧えない赂哼として瓢侯するˉしかしそれではプログラムの姜位を澄千する缄檬がなくなってしまう错副拉を燃うˉそのためWindowsシミュレ〖ション茨董では茶烫宝布のタスクトレイ惧にアイコンが山绩され·プログラムが附哼悸乖面であるかどうかが澄千できるようになっているˉまたこのトレイ惧のアイコンを宝クリックすることで·プログラムを动扩姜位させることが材墙であるˉDEBUG_ENABLE箕にはTOPPERS/JSP Windowsシミュレ〖タの塑挛となるウィンドウを动扩弄に山绩させるようになっているˉこの眷圭は塑挛となるウィンドウを姜位させることでプログラムを动扩姜位させることができるˉ----------------------------3.4 デバイスエミュレ〖ション----------------------------TOPPERS/JSP Windowsシミュレ〖ション茨董では、システムに儡鲁されたデバイス(LEDなど)をエミュレ〖トするための怠菇をもっているˉデバイスエミュレ〖ションでは肌のようなことができるˉ ˇカ〖ネルが泼年の戎孟をアクセスした眷圭、デバイスに奶梦する ˇカ〖ネルに滦して充り哈みを券栏させる ˇカ〖ネルの弹瓢および姜位をデバイスに奶梦する ⅷそれぞれの怠菇は漓脱簇眶を奶して网脱するマッピング滦据となる鄂粗は悸メモリとは佰なる鄂粗である (IntelプロセッサのI/Oポ〖トを鳞年していただきたい)。そのためマッピングされたされた鄂粗へのアクセスは漓脱簇眶を拆して乖う。デバイスは鄂粗が脚剩しなければ剩眶弹瓢することが材墙である。またカ〖ネルも剩眶弹瓢することが材墙であるが、デバイスエミュレ〖ション怠菇を网脱できるカ〖ネルはシステム柒で帽办である。デバイスエミュレ〖ションはデフォルトで铜跟となっているが、config/windows/sys_defs.h:38をコメントアウトすることで痰跟にできる。铜跟にするには澈碰乖を浩刨コメント豺近すれば、簇息する链ての灌誊が铜跟となる。デバイスエミュレ〖ションはメ〖ルスロットとCOMの2硷梧の悸刘がある。COMをサポ〖トしていない茨董での悸乖ではメ〖ルスロットで票屯のことが乖える。メ〖ルスロットでのエミュレ〖ションを乖う眷圭にはconfig/windows/device.cを、COMによるエミュレ〖ションを乖うにはconfig/windows/device_com.cppを怯戮弄にプロジェクトに纳裁する。また、デバイスを网脱するソ〖スファイルでdevice.hをインクル〖ドする。 #办车には咐えないがCOMの数が悸乖庐刨は庐い ##JSP-1.1では、メ〖ルスロット惹デバイスマネ〖ジャは芹邵滦据嘲カ〖ネルから网脱できるデバイスエミュレ〖ション簇息の簇眶を布に绩す。また链ての簇眶はデバイスエミュレ〖ション痰跟箕にはコメント乖として胺われる。void InitializeDeviceSupportModule(void) デバイスエミュレ〖ション簇息の介袋步を乖う。 答塑弄に弹瓢箕に介袋步を乖っているので、泼に钙ぶ涩妥はない。void FinalizeDeviceSupportModule(void) デバイスエミュレ〖ション簇息の姜位借妄を乖う。 カ〖ネル忙叫箕に姜位借妄を乖っているので、墙瓢弄に钙ぶ涩妥はない。int DeviceRead(unsigned long address, unsigned long size, void * storage) デバイスからの粕叫し address : デバイスを急侍するためのアドレス猛など (悸メモリ鄂粗とは迫惟) size : 粕み叫す墓さ storage : 呈羌黎へのポインタ 手笛猛 : 粕み叫されたデ〖タのバイト眶 または -1(己窃) addressにマッピングされたデバイスからsizeバイトのデ〖タを粕叫し、 storageに呈羌する。マッピングされたデバイスがない眷圭、簇眶は-1 を手笛する。券乖箕はCPUロック觉轮となる。int DeviceWrite(unsigned long address, unsigned long size, void * storage) デバイスへの今哈み address : デバイスを急侍するためのアドレス猛など (悸メモリ鄂粗とは迫惟) size : 今き哈む墓さ storage : 叫蜗デ〖タを呈羌する挝拌へのポインタ 手笛猛 : 今き哈まれたデ〖タのバイト眶 または -1(己窃) addressにマッピングされたデバイスへstorageに呈羌されたsizeバイトのデ 〖タを今き哈む、storageに呈羌する。マッピングされたデバイスがない眷圭 、簇眶は-1を手笛する。券乖箕はCPUロック觉轮となる。デバイス塑挛およびデバイスマネ〖ジャに簇しては稿揭の5.1を徊救のこと。------------------4ˉ倡券茨董の菇蜜------------------------------------4.1 倡券茨董の车妥------------------カ〖ネルを悸乖するには·JSPカ〖ネルの芹邵キットに崔まれる笆嘲に·笆布のツ〖ルおよびライブラリが涩妥であるˉMicrosoft Visual C ++ (6.0にて澄千) 帽挛にて瓢侯材墙cygwin + gcc GNU Make (3.77にて澄千) BINUTILS (紧ツ〖ル 2.10にて澄千) GCC (Cコンパイラ 2.95.2にて澄千) NEWLIB (筛洁Cライブラリ 1.8.1にて澄千) #拒嘿は充唉-----------------------------------------------4.1.1 Microsoft Visual C++を网脱する眷圭 (极瓢)-----------------------------------------------倡券を乖っている茨董がWindows Scripting Hostの悸乖茨董を积つ眷圭、极瓢栏喇スクリプトが网脱できる。庙) 极瓢栏喇スクリプトは、称サブスクリプトを弹瓢するために、WScript.WshShell.Runメソッドを网脱している。办婶のセキュリティソフトウェアは惧淡メソッドを蝗脱するスクリプトを碍剂と冉们し、悸乖をブロックする眷圭がある。极瓢栏喇スクリプトは、 jsp/WINDOWS/configure.vbs という叹涟で呈羌されている。このスクリプトを悸乖すると、コンフィギュレ〖タの栏喇およびデバイスエミュレ〖タの栏喇を乖い、Visual C++を弹瓢した稿サンプルプロジェクトを倡く。肌のファイルを悸乖することで、改」の婶墒ごとに栏喇することも材墙である。 コンフィギュレ〖タ/菇喇チェッカ : jsp/cfg/vc_project/make.vbs デバイスエミュレ〖タ : jsp/windev/make.vbs-----------------------------------------------4.1.2 Microsoft Visual C++を网脱する眷圭 (缄瓢)-----------------------------------------------まずコンフィギュレ〖タを栏喇するˉコンフィギュレ〖タは/cfg/VC_Project/柒にあるMicrosoft Visual C++プロジェクトファイルを倡くことにより·紧肋年をせずとも篓ビルドが材墙な觉轮になるˉ筛洁では·cfg.exeはjsp/cfg/cfg.exeとして侯喇されているˉこのとき、票箕にカ〖ネルチェッカも栏喇する。カ〖ネルチェッカをビルドするには、メニュ〖から≈プロジェクト∽≈アクティブプロジェクトの肋年∽≈checker∽を联买し、ビルドメニュ〖からビルドを联买する。カ〖ネルチェッカは "Windows ImageHlp API"を蝗脱しているため、栏喇箕にはライブラリIMAGEHLP.LIBが涩妥になる。サンプルプロジェクトファイルの肋年には、プログラムが蝗脱するライブラリモジュ〖ルとしてIMAGEHLP.LIBが纳裁されている。赖撅にビルドが姜位すると、筛洁では、悸乖ファイルはjsp/cfg/chk.exeとして侯喇されている。TOPPERS/JSP Windowsシミュレ〖ション茨董の菇蜜はMicrosoft Visual C++のプロジェクト ワ〖クスペ〖スを网脱するˉ/config/WINDOWS/vc_project柒にあるプロジェクトファイルおよびワ〖クスペ〖スを倡くことで·菇蜜に涩妥な肋年を链て姜えた觉轮で弹瓢するˉ #このプロジェクトではサンプルプログラムが栏喇されるようになっている烧掳のサンプルプログラムではすでに肋年がされているが·サンプル笆嘲のコンフィギュレ〖ションファイルを网脱する眷圭·コンフィギュレ〖タにkernel_id.hとkernel_cfg.cを侯喇させる涩妥があるˉ笆布に肋年恕を绩すˉ (ここでは·コンフィギュレ〖タは/jsp/cfg/cfg.exeであるとしている) (a) Visual C++ に乖わせる眷圭 1. 滦据となるcfgファイルを联买し·コンテキストメニュ〖(宝クリック)から 肋年を联买するˉ 2. 办忍から≈撅にカスタムビルドステップを蝗脱∽を铜跟にする 3. カスタムビルドタブを联买昏·コマンド婶に肌のコマンドを虑つ ---8<--- ここから ---8<--- cd $(InputDir) cl /E /I "../kernel" /I "../include" /I "../config/windows" \ $(InputName).cfg | ..\cfg\cfg.exe -s -c -v -obj -lj -cpu windows ---8<--- ここまで ---8<--- #乖琐に\のある乖は乖琐の\を猴近し、稿鲁する乖を鲁けて掐蜗する 4. 叫蜗婶に肌のファイルを虑つ kernel_cfg.c kernel_id.h 5. メニュ〖から≈プロジェクト∽≈肋年∽を联买し、ダイアログ柒のタブ ≈ビルド稿の借妄∽を联买する 6. ビルド稿の借妄コマンドとして、肌のコマンドを掐蜗する。 ---8<--- ここから ---8<--- cd .. ..\cfg\chk.exe -m toppers.exe -cs windows.chk -obj -v -lj ---8<--- ここまで ---8<--- (b) コマンドラインから木儡虑つ眷圭 1. Visual C++をインスト〖ルした眷疥のBinフォルダにある VCVARS32.BATを悸乖する #インスト〖ル箕に≈コマンドラインから悸乖するための #バッチを侯らない∽と回年するとこのファイルはない 2. コンフィギュレ〖ションファイルのあるディレクトリで 肌のコマンドを掐蜗する ---8<--- ここから ---8<--- cl /E /I "../kernel" /I "../include" /I "../config/windows" \ <ファイル叹> | ..\cfg\cfg.exe -s -c -v -obj -lj -cpu windows ---8<--- ここまで ---8<--- #乖琐に\のある乖は乖琐の\を猴近し、稿鲁する乖を鲁けて掐蜗するkernel_id.hとkernel_cfg.cが栏喇されたら·これらのファイルをプロジェクトに纳裁し·Visual C++からビルドを乖えばプログラムが栏喇されるˉ烧掳のプロジェクトファイルでは·それぞれ努磊なフォルダにファイルが呈羌されるようになってるˉユ〖ザプログラムはSource FilesとHeader Filesに呈羌されるˉサンプル笆嘲のプログラムを网脱される眷圭·この2つのフォルダに呈羌されているファイルをプロジェクトから猴近してから·糠しいプログラムを纳裁する涩妥があるˉ--------------------------5ˉ泼检な怠菇に簇する棱汤------------------------------------------------------5.1 デバイスエミュレ〖ション----------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -