CPU
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
] [
リンク元
]
開始行:
#contents
**1.5 CPU [#wc12fe32]
μPD9002の概要は以下のとおり。
-V30モードとμPD780モードを持つ。両者の関係はV30のネイティ...
-V50と同様に、以下の周辺回路を内蔵。
--DMAコントローラ、割り込みコントローラ、タイマ、シリアル...
--プログラマブルウェイト制御ユニット: メモリサイクル、I/O...
--クロックジェネレータ、リフレッシュユニット
-I/Oトラップ機能を持つ。
***1.5.1 命令セット [#zc70fa9c]
V30モードにおける命令セットは、以下をサポートしない点を除...
-INS
-EXT
-OUTM
-INM
[マイコン '87/8月号]
Z80エミュレーションモードへの移行命令として、BRKEM2命令が...
***1.5.2 内蔵周辺回路の制御 [#n100afdd]
V50の場合は、FFF0h-FFFFhのI/OでCPUの端子の機能の選択、ウ...
VA2の場合、以下の設定で使用している。(VA1未調査)
ポート番号 出力データ(バイト) いずれも16進表記
---- --
FFFE 11
FFFD 07
FFFC 01
FFFB 60
FFFA 88
FFF9 A0
FFF6 08
FFF5 80
FFF4 53
FFF2 08
FFF0 00
***1.5.3 I/Oトラップ [#yfa171fd]
[VAクラブ PC実験室 4016 (92/ 3/31) CoBit氏]
I/OトラップとはI/O命令を実行すると発生するソフト...
のことです。普通、Vシリ〜ズ系のソフトウェア割り込みはI...
命令やDIV命令等の実行時エラ〜で発生しますが、VAでは...
令でも発生させることができます。
I/Oトラップは、もともとV1・V2モ〜ドのために一部...
(50〜53H、60〜68H、6E〜6FH)をエミュレ〜...
在します。したがって、V3モ〜ドではI/Oトラップは禁止...
すが、制御ポ〜トを操作することで使用することができます。...
V1・V2モ〜ドのI/Oのいわばパッチ当てのために存在す...
ので、その機能は貧弱です。
VAにはBNNのテニカルマニュアルに載ってないI/Oポ...
ありますが、I/Oトラップのためのポ〜トはFFE0〜FF...
に割り当ててあります。以下にその内容を示しますが、その名...
つけたものです。
I/Oポ〜ト
FFE0 _IOTrap1S OUT W
I/Oトラップポ〜トブロック1のスタ〜トポ〜トNo.
FFE2 _IOTrap1E OUT W
I/Oトラップポ〜トブロック1のエンドポ〜トNo.
FFE4 _IOTrap2S OUT W
I/Oトラップポ〜トブロック2のスタ〜トポ〜トNo.
FFE6 _IOTrap2E OUT W
I/Oトラップポ〜トブロック2のエンドポ〜トNo.
FFE0とFFE2、FFE4とFFE6を互いにペアと...
I/Oトラップするポ〜トNo.の領域(ブロック)を2...
FFEF _IOTrapC I/O B
I/Oトラップ制御
76543210
000*00**
| ||
| |+― 0:INトラップ禁止、 1:許可
| +―― 0:OUTトラップ禁止、1:許可
+――――― 0:バイトポ〜トトラップ、1:ワ〜ド...
次にトラップが発生した時の割り込みベクタです。
割り込みベクタ
7CH I/OTrap(IN)
7DH I/OTrap(OUT)
I/Oトラップを使用するときは、このベクタを割り込み...
の先頭アドレスに設定してやります。
※注意点
・I/Oトラップするポ〜トNo.の領域を設定するので、...
でないポ〜トがその領域内に存在する場合は、トラップ先...
トラップ禁止にして、実際のI/O処理をしてやらなけれ...
・FFE0〜FFE6はワ〜ドアクセスできますが、上位バ...
下位バイトしか設定できません。したがって、ワ〜ドポ〜...
定しても、ワ〜ドポ〜トNo.の下位バイトが一致すると...
るので、トラップ先のプログラムで望みのポ〜トかどうか...
りません。
・I/Oトラップが発生した後、ベクタに設定した割り込み...
へ実行を移す時FLAG、CS、IPがスタックに保存さ...
CS:IPの値はトラップが発生した場所、つまりI/O...
であって、割り込み処理後、次に実行する命令の番地では...
のため、どのようなI/O命令でトラップしたのかが、ス...
れたCS:IPの番地をみることでわかります。ですが、...
前にはI/O命令の長さを考えて、必ずスタックの中のC...
して、次の命令の番地にしてからIRETしないと無限ル...
・I/Oトラップはソフトウェア処理ですから、I/Oトラ...
場合、I/O命令は数十倍から数百倍遅くなると考えてく...
ポ〜ト52Hを含んでワ〜ドトラップすると、ポ〜ト15...
するので、このポ〜トを頻繁に利用するPC―ENGIN...
目に見えて動きが遅くなります。FDDなどのポ〜トもま...
・トラップが発生すると割り込み禁止(CLI)状態で割り...
ラムに実行が移ります。
・割り込み処理プログラム中でI/O命令を使う時は必ずト...
て、I/Oトラップがネストしないようにします。
・I/Oトラップの割り込み処理プログラムは、処理中に外...
(STI)にするときは、必ずトラップ禁止にします。
・ffe0〜ffffのポ〜トをトラップしてはいけない。
・これらの機能は私がROM解析&実験して判断したものな...
があるかもしれません。また、まだ足りない部分があるか...
ここまで、みてきてもなにがなにやらわからないと思うので...
プログラム例(98IOE)を以下にアップしておきます。決...
いプログラムではありませんが、これをもとにすればI/Oト...
いて考えずに処理ポ〜ト内容を増やしていけるかと思います。...
です(^^;)
&ref(IOTRAP.LZH); I/Oトラップ使用サンプル
終了行:
#contents
**1.5 CPU [#wc12fe32]
μPD9002の概要は以下のとおり。
-V30モードとμPD780モードを持つ。両者の関係はV30のネイティ...
-V50と同様に、以下の周辺回路を内蔵。
--DMAコントローラ、割り込みコントローラ、タイマ、シリアル...
--プログラマブルウェイト制御ユニット: メモリサイクル、I/O...
--クロックジェネレータ、リフレッシュユニット
-I/Oトラップ機能を持つ。
***1.5.1 命令セット [#zc70fa9c]
V30モードにおける命令セットは、以下をサポートしない点を除...
-INS
-EXT
-OUTM
-INM
[マイコン '87/8月号]
Z80エミュレーションモードへの移行命令として、BRKEM2命令が...
***1.5.2 内蔵周辺回路の制御 [#n100afdd]
V50の場合は、FFF0h-FFFFhのI/OでCPUの端子の機能の選択、ウ...
VA2の場合、以下の設定で使用している。(VA1未調査)
ポート番号 出力データ(バイト) いずれも16進表記
---- --
FFFE 11
FFFD 07
FFFC 01
FFFB 60
FFFA 88
FFF9 A0
FFF6 08
FFF5 80
FFF4 53
FFF2 08
FFF0 00
***1.5.3 I/Oトラップ [#yfa171fd]
[VAクラブ PC実験室 4016 (92/ 3/31) CoBit氏]
I/OトラップとはI/O命令を実行すると発生するソフト...
のことです。普通、Vシリ〜ズ系のソフトウェア割り込みはI...
命令やDIV命令等の実行時エラ〜で発生しますが、VAでは...
令でも発生させることができます。
I/Oトラップは、もともとV1・V2モ〜ドのために一部...
(50〜53H、60〜68H、6E〜6FH)をエミュレ〜...
在します。したがって、V3モ〜ドではI/Oトラップは禁止...
すが、制御ポ〜トを操作することで使用することができます。...
V1・V2モ〜ドのI/Oのいわばパッチ当てのために存在す...
ので、その機能は貧弱です。
VAにはBNNのテニカルマニュアルに載ってないI/Oポ...
ありますが、I/Oトラップのためのポ〜トはFFE0〜FF...
に割り当ててあります。以下にその内容を示しますが、その名...
つけたものです。
I/Oポ〜ト
FFE0 _IOTrap1S OUT W
I/Oトラップポ〜トブロック1のスタ〜トポ〜トNo.
FFE2 _IOTrap1E OUT W
I/Oトラップポ〜トブロック1のエンドポ〜トNo.
FFE4 _IOTrap2S OUT W
I/Oトラップポ〜トブロック2のスタ〜トポ〜トNo.
FFE6 _IOTrap2E OUT W
I/Oトラップポ〜トブロック2のエンドポ〜トNo.
FFE0とFFE2、FFE4とFFE6を互いにペアと...
I/Oトラップするポ〜トNo.の領域(ブロック)を2...
FFEF _IOTrapC I/O B
I/Oトラップ制御
76543210
000*00**
| ||
| |+― 0:INトラップ禁止、 1:許可
| +―― 0:OUTトラップ禁止、1:許可
+――――― 0:バイトポ〜トトラップ、1:ワ〜ド...
次にトラップが発生した時の割り込みベクタです。
割り込みベクタ
7CH I/OTrap(IN)
7DH I/OTrap(OUT)
I/Oトラップを使用するときは、このベクタを割り込み...
の先頭アドレスに設定してやります。
※注意点
・I/Oトラップするポ〜トNo.の領域を設定するので、...
でないポ〜トがその領域内に存在する場合は、トラップ先...
トラップ禁止にして、実際のI/O処理をしてやらなけれ...
・FFE0〜FFE6はワ〜ドアクセスできますが、上位バ...
下位バイトしか設定できません。したがって、ワ〜ドポ〜...
定しても、ワ〜ドポ〜トNo.の下位バイトが一致すると...
るので、トラップ先のプログラムで望みのポ〜トかどうか...
りません。
・I/Oトラップが発生した後、ベクタに設定した割り込み...
へ実行を移す時FLAG、CS、IPがスタックに保存さ...
CS:IPの値はトラップが発生した場所、つまりI/O...
であって、割り込み処理後、次に実行する命令の番地では...
のため、どのようなI/O命令でトラップしたのかが、ス...
れたCS:IPの番地をみることでわかります。ですが、...
前にはI/O命令の長さを考えて、必ずスタックの中のC...
して、次の命令の番地にしてからIRETしないと無限ル...
・I/Oトラップはソフトウェア処理ですから、I/Oトラ...
場合、I/O命令は数十倍から数百倍遅くなると考えてく...
ポ〜ト52Hを含んでワ〜ドトラップすると、ポ〜ト15...
するので、このポ〜トを頻繁に利用するPC―ENGIN...
目に見えて動きが遅くなります。FDDなどのポ〜トもま...
・トラップが発生すると割り込み禁止(CLI)状態で割り...
ラムに実行が移ります。
・割り込み処理プログラム中でI/O命令を使う時は必ずト...
て、I/Oトラップがネストしないようにします。
・I/Oトラップの割り込み処理プログラムは、処理中に外...
(STI)にするときは、必ずトラップ禁止にします。
・ffe0〜ffffのポ〜トをトラップしてはいけない。
・これらの機能は私がROM解析&実験して判断したものな...
があるかもしれません。また、まだ足りない部分があるか...
ここまで、みてきてもなにがなにやらわからないと思うので...
プログラム例(98IOE)を以下にアップしておきます。決...
いプログラムではありませんが、これをもとにすればI/Oト...
いて考えずに処理ポ〜ト内容を増やしていけるかと思います。...
です(^^;)
&ref(IOTRAP.LZH); I/Oトラップ使用サンプル
ページ名: