Message Log 28 Return to Parent Menu 
Last Updated by 07/01/05(Fri)  

 
Tips
 

 やっぱり 2001 年もアセンブラッ!!だねっ


 
Message log list
 

 アセンブラ掲示板に書き込まれた過去のログです。


Message log 44 (05/01/0506/30/05)
Message log 43 (01/01/0504/30/05)
Message log 42 (01/01/0412/31/04)
Message log 41 (11/01/0312/31/03)
Message log 40 (10/01/0310/31/03)
Message log 39 (04/01/0309/30/03)
Message log 38 (12/01/0203/31/03)
Message log 37 (08/01/0211/30/02)
Message log 36 (05/01/0207/31/02)
Message log 35 (03/01/0204/30/02)
Message log 34 (01/01/0202/28/02)
Message log 33 (09/15/0112/31/01)
Message log 32 (08/01/0109/14/01)
Message log 31 (05/26/0107/31/01)
Message log 30 (05/15/0105/25/01)
Message log 29 (05/01/0105/14/01)
Message log 28 (02/01/0104/30/01)
Message log 27 (01/01/0101/31/01)
Message log 26 (10/01/0012/31/00)
Message log 25 (07/21/0009/30/00)
Message log 24 (06/16/0007/20/00)
Message log 23 (05/20/0006/15/00)
Message log 22 (05/01/0005/19/00)
Message log 21 (04/01/0004/30/00)
Message log 20 (02/01/0003/31/00)
Message log 19 (01/01/0001/31/00)
Message log 18 (11/01/9912/31/99)
Message log 17 (09/05/9910/31/99)
Message log 16 (08/21/9909/04/99)
Message log 15 (07/01/9908/20/99)
Message log 14 (04/01/9906/30/99)
Message log 13 (02/01/9903/31/99)
Message log 12 (11/01/9801/31/99)
Message log 11 (09/21/9810/31/98)
Message log 10 (08/01/9809/20/98)
Message log 09 (07/01/9807/31/98)
Message log 08 (05/04/9806/30/98)
Message log 07 (04/08/9805/03/98)
Message log 06 (02/23/9804/07/98)
Message log 05 (01/01/9802/22/98)
Message log 04 (11/09/9712/31/97)
Message log 03 (10/17/9711/08/97)
Message log 02 (08/22/9710/16/97)
Message log 01 (06/20/9708/21/97)


 
Message log 02/01/0104/30/01
 




Ichi  [2001/04/30 Mon 23:36:09]  [211.13.2.242]
http://www7.freeweb.ne.jp/computer/ichi98/

>IRQ1 - KEYBOARD DATA READY
ってのは、キーボードのキーが押された/離されたときに
発生する割り込みです。普段はBIOSがこれを処理します。
その処理ルーチンのなかで、キーボードバッファに
を操作したりするわけです。

Tsuyoshi  [2001/04/30 Mon 10:10:41]  [211.8.109.113]
Keyboard

おはようございます。Tsuyoshiです。
Ichiさん、お早いお返事に感謝します。
さて、・・・

>キーボードバッファは「BIOSで実現される」高級な機能なので、
>キーボードを直接たたく時は間にキーボードバッファは存在しません。
・・・初耳・・・。

>自分のプログラムがキーボードを直接読んでる間に
>BIOSのキーボードバッファにたまっていくのが好ましくない
>ということであれば、INT9をフックしてみてもいいでしょうね。

のところについてですが、実は、自分で、次のようなソースを書いて
実験をしてたんです。

CODE segment
assume cs:CODE, ds:CODE, es:CODE, ss:CODE
org 100h
START:
in al, 60h
cmp al, 01h; ESCキー
jne START
jmp QUIT; プログラム終了

それで、実行するとESCキーを押すと終了するところまではふむふむと納得できるのですが、どうも、その後プロンプトに戻ると、
実行していたときに押されたキーたちが、順に表示されてしまうんです。
またーキーボードバッファとの関係のせいか、実行中にあまりESC以外のキーを押しすぎると、
キーボードから注意されて(ピーピーという音が出て)、強制終了のはめに
なるんです。

前者の問題は、僕にとっては全く謎めいておりまして、
これは、キーボードの1から学ばなければ解らないなと思って書き込んでいます。
さて、後者の問題ですが、「INT9をフック」については、
"Assembler Source only board" のなかで、僕の今の試行錯誤の起原といえる
ソースがありまして、そのソースの中にも同じことがされていました。
フックという言葉の意味については、この掲示板の過去ログで学びました。
しかし、INT 9h とは何者なのかがまだ解りません。
"Ralf Brown's Interrupt List HTML Version"のそれに相当するところを見ると
・・・何せEnglishなものですから、ホントいって、
IRQ1 - KEYBOARD DATA READY くらいにしか意味が取れませんでした。
これは具体的にはどういう役割を果たしているのかを、どなたか教えてくれませんか?
Ichi  [2001/04/29 Sun 23:28:39]  [211.13.1.246]
http://www7.freeweb.ne.jp/computer/ichi98/

>キーボードバッファをクリアするにはどうしたらよいのかが解りません。
キーボードバッファは「BIOSで実現される」高級な機能なので、
キーボードを直接たたく時は間にキーボードバッファは存在しません。

もしキーボードバッファをクリアするのならば、
BIOSを使うことになります。

自分のプログラムがキーボードを直接読んでる間に
BIOSのキーボードバッファにたまっていくのが好ましくない
ということであれば、INT9をフックしてみてもいいでしょうね。
Tsuyoshi  [2001/04/29 Sun 18:18:34]  [211.8.109.113]
Keyboard

書き込みどうもありがとうございました。
ところで、今、キーボードとのアクセスをしようと(INT XXhを使わずに)"Ralf Brown's Interrupt List"のKB Controllerの資料を見て頑張っているところです。ScanCodeとかいうものは、実験的に 60h を読んでみたら取得できましたが、まだよくは解っていません。KBコントローラーへの出力は 64h,KeyBoardへの出力は 60h で、それらの結果は、60h に帰ってくることは理解できました。しかし、キーボードバッファをクリアするにはどうしたらよいのかが解りません。どなたか教えていただけませんか?

キーボードの根本的なところが解ってないのかもしれませんので、わかりやすい説明をお願いします。
なべちゃん@abk  [2001/04/27 Fri 16:12:11]  [202.236.152.84]

>なぜか実行すると例外になってしまいます。(一般保護違反)
>INT 21H で処理が止まる

use 16 なプログラムを windows 上で実行したとか、
use 16 なオブジェクトを PE形式 で出力して矛盾したとか、
DOS function が許されてないだけとか、
(窓はよう知らないが、nt系は無理のようなきもする)
いくらでも可能性がありえます。

★akatesさん
>プロテクトモードを使わずにプロテクトメモリにアクセスする

int 15h BIOS でしたっけ? 98系はあんまり詳しくないけど、そんなの
だったような気が。

>今、VCPIに対応させようか、と思って、VCPIを使うテストプログラムを動かしている程度なんです。

おお、それは大変ですね(^^;;
XMS、VCPI って、なかなか目的の物理アドレスを直に
アクセスしたり大変ですからねぇ...。

>(http://web11.freecom.ne.jp/~akates/)に置いてはありますがお薦めできません...

はい、分かりました。

>この「ISR」というのがそうですね?

そうです。私も98な友人に教えてもらいました(爆

>特に割り込みコントローラの部分がよくわからなくて、

割り込みコントローラは難しいですよ。8259Aの資料を直接拾ってくる
方がいいですね。一般に使わないのは割愛されてますし、
8259A相当の場合は、8259Aの機能であっても動くとは限りませんから。
(カスタムチップで、それ相応のものが組み込まれてるだけですから)

回転とかは多少分かりますが、これ勝手にいじるとOSの方で
矛盾がおこるような気がするので、私は過去に少しいじってやめました。

>(FFFFhからのワードアクセスなど)。

それは起こると思います。よく覚えてないけど、386のマニュアルや
資料本などにもそう書いてあったように思います。
おそらく、80386のリアルモードは、セグメント裏レジスタのリミット値に
0ffffh をロードするしくみだったような気がしますし。

>最初の命令が実行される直前にセットされ、EOI発行によってクリアされる、
>という理解でいいですよね...

私はそう理解しています。厳密な資料は読んだこと無いのですが(爆
akates  [2001/04/27 Fri 00:02:06]  [211.10.154.178]


>ソースみないことにはなんとも...

いじっているプロテクトモードプログラムの代表はPC-98用の「リセットしても消えないRAMディスク」(286互換。デバイスドライバ)です。あまりたいしたプログラムではありませんが、一応完成しています。現バージョンは直接PEビットをONにしてプロテクトモードに入っているので、V86モード(EMM386)だと動かないため、UMBが使えません^^; (実はプロテクトモードを使わずにプロテクトメモリにアクセスするバージョン(これはV86 OK)もあるのですが、機種ごとに固有なので...)
今、VCPIに対応させようか、と思って、VCPIを使うテストプログラムを動かしている程度なんです。なお、Webページ(http://web11.freecom.ne.jp/~akates/)に置いてはありますがお薦めできません...

>どの IRQ のサービス(INT)を処理中か一目でわかるようになってます。

...あっ!? そうなんですか!?...この「ISR」というのがそうですね?(in「PC-9800テクニカルデータブック」^^;) 勘違いというより無知でした...^^;;
言いわけなんですけれど、「PC-9800テクニカルデータブック」の記述は説明のない部分が多くて... 特に割り込みコントローラの部分がよくわからなくて、いまだに「ポールモード」とか「回転」が何なのかがわかりません...^^;
さらに言いわけ(?)ですけれど、リアルモード例外(286以上の)って時々起こり(起こし?)ますよね(FFFFhからのワードアクセスなど)。 V30なら平気なのに、386の98(DOS)はこれでハングしてしまうことがありました。DOS(少なくとも98の)は286以上のリアルモード例外は処理しないようです(8086互換の除算例外(INT 00h)なんかは強制プロセス終了しますが...)。私はてっきりこの部分(例外とハードウェア割り込みの弁別)が難しいからだと思っていました(愚)
ちなみにこの「ISR(Interrupt Serving Registerの略?)」(の各ビット)はINT処理ルーチンの最初の命令が実行される直前にセットされ、EOI発行によってクリアされる、という理解でいいですよね...


>フォントデータを読み取って(Int 15h, AX=5000h)それを画面に出力しようとしているんですが...

私も日本語BIOSについては詳しくは知らないのですが(^^;)、たまたま資料がありましたので、参考までに...
ファンクション「INT 15h, AH=50h」は「フォントパターンの読み書き」と資料にも書かれているのですが、実際は「フォントパターン読み書きルーチンアドレスの取得」とでも呼ぶのが相当のようです。「フォントパターンの読み書き」の名にふさわしいのはファンクション「INT 10h, AH=18h」であるようです(ただしこのファンクションは「INT 15h, AH=50h」を呼び出すそうです)。
また、グラフィックVRAMへのドットイメージの読み書きを行うファンクションは、「INT 10h, AH=0Ch/0Dh」のようです。

>INT 21H
で処理が止まる

INT 21hのどのファンクション(AH or AXの番号)でしょうか? それからDOS窓ですか? DOSモードでやってみると違うかも...

Kohichi Nagai  [2001/04/26 Thu 17:08:43]  [202.247.6.3]

みなさん、こんにちは。
初めて書き込みします。

アセンブラは始めて一週間目です。

アセンブラの本を買って、これから
MASMを使って、本を頼りにとりあえずソースを
コンパイルしてみたのですが、コンパイルは通るのですが
なぜか実行すると例外になってしまいます。(一般保護違反)
ネットで色々さがしているうちにここを見つけました。
初めてなのにいきなり質問するのも失礼だとは思うのですが
メッセージボードを見ていたのですがどれが自分の状況に
当たるのかさえわからないので僕みたいな初心者でも
理解しやすくアドバイスをお願いできたらありがたいです。

状況としては以下のようです
exe形式のファイルを作ったところ
INT 21H
で処理が止まる
処理を30Hにしてみたところブルースクリーンになってしまいました

僕の今持っている本をほとんどそのまま書き写しただけなのですが
その本は16bit用なのがいけないのでしょうか?





Tsuyoshi  [2001/04/22 Sun 12:04:25]  [211.8.108.51]
文字表示について

Tsuyoshiです。
グラフィックスモードで、文字を表示しようと、フォントデータを読み取って(Int 15h, AX=5000h)それを画面に出力しようとしているんですが、何がなんだか分からなくなっている状況です。まず、読み取ったフォントデータの扱い方、ということがまず知りたいことで、あわせて、Video RAMの書き込みとは具体的にどうすればよいのかを教えてください。
なべちゃん  [2001/04/19 Thu 17:45:12]  [202.236.152.84]
Free386 offcial page

★akatesさん
>>あとでdumpするなり...
>なんか、よくハング(無限ループ?)とかリセットとかしてしまうんですよね。

dump 用の書き込みがデータを食いつぶしてるとか?(^^;;
ソースみないことにはなんとも(みてもわからないだろうけど...

>>スタックからエラーポイントを取得...
>プロテクトモードコードの逆アセンブルをしなければなりませんよね?

私は、出力された実行形式の番地が特定できるように、
アセンブラの出すリストファイルの番地でその該当個所をみるようにしました。

>でも私のSYMDEB(改)では、リアルモード用に解釈するので、
>SIZXプレフィクスなどの解釈が逆になってしまいます(32ビットコードの場合)。

私は ddeb (Vectorにある) を使いましたが、これでもやっぱり use16 固定ですので
解釈が変なところは無視して、あとは命令の並びからソースみて推測しました。
(だいたいいじってることろがエラーになりますから。
 そうでない場合はやっぱりアドレスを特定しました)

>プロテクトモード(のコード)用逆アセンブラを使ったりするものなんでしょうか?

あれば使いたいのですけどねぇ...。あんまりできのいいのはないです。
use32固定だったりとか。

>>8529から判別...
>正にそこで詰まってしまって... ポートのハードウェア割り込み要求フラグが
>OFFだったら間違いなくCPU例外でしょうが、

8259には割り込み要求の他に「割り込みサービスレジスタ」というのがありまして、
どの IRQ のサービス(INT)を処理中か一目でわかるようになってます。

I/O操作までは覚えてませんので、手前味噌ですが Free386 のソースを参照下さい(汗

>DOSエクステンダの開発(oh!)にはどのようなデバッガをお使いになったのでしょうか?

symdeb の386命令対応版(=改造版)ももってますが、なんとなく ddeb を使いました。
ご存知のことですけど、CPUモードを切り替える時点でディバガで追うのは困難でして
(そんなディバガを作のも困難) CPUフォールトのレジスタダンプ
プログラムを搭載してからは、調べたい個所で(わざとエラーを出し)レジスタをダンプさせてました。

akates  [2001/04/19 Thu 05:36:47]  [211.10.154.178]

>あとでdumpするなり...

なんか、よくハング(無限ループ?)とかリセットとかしてしまうんですよね。一応例外ハンドラつくったのに...(;_;)

>スタックからエラーポイントを取得...

そうすると、場合によっては、プロテクトモードコードの逆アセンブルをしなければなりませんよね? でも私のSYMDEB(改)では、リアルモード用に解釈するので、SIZXプレフィクスなどの解釈が逆になってしまいます(32ビットコードの場合)。その場合プロテクトモード(のコード)用逆アセンブラを使ったりするものなんでしょうか?...それとも感じで読み取るとか...

>8529から判別...

これは、多分、int番号を移動せずに、例外ハンドラの中で、割り込みコントローラ(8259)のポートからINしてステータスをチェックするということですよね? もし、そうだとしたらの話ですが、正にそこで詰まってしまって... ポートのハードウェア割り込み要求フラグがOFFだったら間違いなくCPU例外でしょうが、ONだった場合、そのintの発生源がハードウェア割り込みであるとは言いきれないような... ? 私、何か勘違いしてますか?

>DOS-Extenderな環境のディバガ...

...なべちゃんさんはDOSエクステンダの開発(oh!)にはどのようなデバッガをお使いになったのでしょうか? 私はSYMDEBぐらいしかわかりません...

かいん  [2001/04/16 Mon 10:35:08]  [211.7.178.194]
ありがとうございました。

armさん
 ありがとうございました。
 モトローラのS形式がわかりやすかったです。
 データ長の値が16進ってのが解らなく苦労しましたが^^;
 何とか仕様は解りました^^

澤口@一升金さん
 ありがとうございます。
 私もそのページは見ましたが、良く分からなかったもので・・・^^;

では、どうもありがとうございました。
UUM  [2001/04/16 Mon 09:30:11]  [210.145.49.121]

>澤口@一升金さん
 情報提供感謝します。
澤口@一升金  [2001/04/15 Sun 17:35:44]  [211.4.198.32]

澤口@一升金です。

to UUMさん:

ここに、 BIN2MOT というユーティリティがあります。

http://www.batlabs.com/fileutil.html

to かいんさん:

coff についての解説はここにありました。

http://www.delorie.com/djgpp/doc/coff/
arm  [2001/04/14 Sat 04:30:49]  [61.124.228.252]

こんばんは。

アセンブラ初心者さん>
GAIO XASS-Vについて。CPUは違いますが、使ったことはあります。
シンボル定義は、シンボル EQU 数値でできていました。
例えば、TRUE EQU 1H とか。
セクション宣言は、セクション名 SECT CODE でできると思います。
サイズというのがわかりませんが、配置情報という意味なら、
リンク時に使用するオプションファイルで指定できます。
(ところでヘルプはお持ちではないのでしょうか?)

UUMさん>
バイナリからSフォーマットへ変換するツールは、
以前webで見つけましたが今は公開されてませんでした。

かいんさん>
S3フォーマットって、
S3LLAAAAAAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDSS
という感じの形をしているものでしょうか。それなら、
S3: 固定、LL: 長さ(この例では21バイトなので15)
AA: アドレス、DD: データ、SS: チェックサムだと思います。
(チェックサムは、データ部分を全部足してビット反転する)
S5でデータ終了です。確か。

なんかこんなページも見つけました↓
http://www.canb.auug.org.au/~millerp/srecord/srecord.html

かいん  [2001/04/13 Fri 13:27:15]  [211.7.178.194]
誰か知りません?

初めて投稿させていただきます。

今、ファイルフォーマットの変換を作成しようと思ってるんですが、
モトローラのS3形式とCOFF形式の仕様がよく解らないのですが、
誰か解る方いらっしゃいますか?
よろしくお願いします。
UUM  [2001/04/12 Thu 16:20:45]  [210.145.49.121]

>Vector にあったような、なかったような...

モトローラフォーマットからの逆アセンブラは登録されているのですが...。探しているのは、バイナリ形式からの逆アセンブラでして。
バイナリ形式からモトローラフォーマットに変換するツールがあれば、それでも可なのですが...。

やはり自作するしかないんでしょうか? 6502の逆アセンブラなら昔自作した事があるんですが。しかし、最近は時間が無いもので。
(単に怠け者になったしまった?)
なべちゃん  [2001/04/12 Thu 10:47:06]  [202.236.152.84]
Free386 offcial

>一応例外ハンドラは設定したりしているのですけれど、どの例外でも同じルーチンで、リアルモードへの出口へjmpするのみです^^;

int 21h を DOS に chain していないならば、そうですねぇ、
内部変数に情報を記録しておいて、あとで dump するなり、標準出力する
なりするといいと思います。大抵は一般保護エラーですから。
私は当て込みで、スタックからエラーポイントを取得するルーチンを書きました。

>従ってプロテクトモード中はハードウェア割り込みは禁止です^^;

私も最初そうで、今は 8259 から判別するようにしました。そのうち再配置予定(^^;;

>そのような場合(よくわかってない?)、デバッガには何をつかうとよいのでしょうか...

DOS-Extender な環境 (Windows含む) のディバガが必要ですね。
#そういや早いところ作らな(^^;; >自分

---
>DOS上で動作する68000の逆アセンブラを探しております。

Vector にあったような、なかったような...
UUM  [2001/04/10 Tue 12:04:04]  [210.145.49.121]

はじめて書き込ませて頂きます。アセンブラ歴は一応10ン年の者です。
現在、DOS上で動作する68000の逆アセンブラを探しております。が、見つかりません。こちらの掲示板の過去のログにも、これについての情報は存在しないようです(見落としていたらすみません)。
どなたか、御存知の方はいらっしゃいませんでしょうか?
akate  [2001/04/10 Tue 03:40:44]  [211.10.154.205]

>CPU例外をトラップしてあげれば...

一応例外ハンドラは設定したりしているのですけれど、どの例外でも同じルーチンで、リアルモードへの出口へjmpするのみです^^; 従ってプロテクトモード中はハードウェア割り込みは禁止です^^; ハードウェア割り込みによる「割り込み」と、例外による「割り込み」との区別のつけかたがわからないんです... 一般的には、割り込みコントローラを操作して、例外に使用されないint番号にハードウェア割り込みを設定するようですけれど、再設定したいintが他のプログラムで使用されているかも、と思うんですが...

>無理というわけではなくて...

そのような場合(よくわかってない?)、デバッガには何をつかうとよいのでしょうか...
アセンブラ初心者  [2001/04/09 Mon 13:52:47]  [210.161.213.114]

当方アセンブラ歴1週間でもともとJAVAなどを専門として
いたものです。かなり基本的なことで申し訳ありませんが
質問させてください。
ソース作成用のアセンブラ(Toshiba TLCS-90)と
シュミレータのアセンブラ(GAO TECHNOLOGY XASS-V for Windows)
で文法が異なり、正しくアセンブルすることができません。
両者の違いを把握してawk,perlなどで変換プログラムを
作成しようと思っております。
現在不明な点として以下があります。
1)シンボル定義の相違
TLCS-90のシンボル定義の方法は以下のとおりです。
  シンボル equ 数値(10/16進数)
XASS-Vでは[ビルド]-[設定]-[アセンブル]-[シンボルの定義]
に書き込む以外に方法はないのでしょうか?
ソース内に定義する方法がありましたら教えてください。
2)セクション宣言の相違
TLCS-90のセクション宣言の方法は以下のとおりです。
セクション名 section code サイズ
XASS-Vでの宣言方法が不明です。ご存知の方がいらっしゃい
ましたら教えてください。


Tsuyoshi  [2001/04/07 Sat 16:22:59]  [211.8.108.32]

Ichiさんへ
お返事どうもありがとうございました。
初めは英語にとまどっていましたが、何とか内容は解りました。

HPを眺めていると、MS-DOSはVGAの操作まで用意してくれているじゃないですか! Page Number という単語の意味が解りませんでしたが・・・。
Ichi  [2001/04/06 Fri 23:45:57]  [211.13.1.215]
Ichiのプログラミング小ネタ集

to Tsuyoshiさん:
> Alt,Ctrl,Shiftキーの読み込み、というか、
> 押されているか否かの認識
AT互換機なら、INT16h, AH=02hで
SHIFT, CTRL, ALT等の状態が取得できます。

やり方は、Ralf Brown's Interrupt List の
INT 16 02の説明を読めばほとんど自明だと思います。


Tsuyoshi  [2001/04/06 Fri 18:29:19]  [211.8.108.32]

Tsuyoshiといいます。
話の途中のようですが、質問をさせてください。
キーボードのことで、Alt,Ctrl,Shiftキーの読み込み、というか、押されているか否かの認識(確かこういう意味の熟語があったような・・)をどうやってするのかがわかりません。int21hで、キーボードからの1文字入力などではできませんでした。どなたか教えてくださいませんか?

アセンブラをはじめて数ヶ月しかたってないので、詳しい説明をお願いしまーす。
なべちゃん  [2001/04/04 Wed 18:07:27]  [202.236.152.80]

>東芝のサイトでTMPZ84c15でなく、

懐かしい型番(^^;; 昔よく*撲ロボットでいじった記憶が(^^;;

:これはすぐ下
>ちょっと難しいところもありましたけど、だいだいわかりました(?)

ちょっとぶっきらぼうすぎた説明でしたが...(反省

>プロテクトモード(DOSエクステンダなし)ではトレース実行などは、無理

無理というわけではなくて、自分でトラップルーチンをかけばできないことはないです。
たしかに面倒ですが。

>out 37h,6(98なもので)で「ピー」とか鳴らして

余談ですが、私はTOWNSなもので、高速モードとかのモード切り替えに
連動している LED を使ってやってました。たしかに大変で(^^;;
プロテクトモードに切り替えができてるなら、それほど面倒ではないですから
割り込みテーブルを配置してCPU例外をトラップしてあげればリセットする回数は激減するはずです。

>きな場所で止められたりするのかななんて想像(妄想?)したりしているのですけれど。

VMware なんかはどうなんでしょうね。ハードウェアのみのエミュレート
って話ですけど。

akate  [2001/03/30 Fri 05:12:09]  [211.10.154.152]

なべちゃんさん、プロテクトモードの件、resありがとうございます。
ちょっと難しいところもありましたけど、だいだいわかりました(?)
プロテクトモード(DOSエクステンダなし)ではトレース実行などは、無理なんですね。
私はプロテクトモードに入ってからハングするような場合、out 37h,6(98なもので)で「ピー」とか鳴らして、「とりあえずここまでは来ているな」と確認してたりしていました。ひょっとしたら80386の完全なエミュレータなんかがあればリアルモード、プロテクトモードに関わらずどこでも好きな場所で止められたりするのかななんて想像(妄想?)したりしているのですけれど。
またよろしくお願いします。
kiyo  [2001/03/26 Mon 05:43:10]  [211.16.176.235]

どうも、kiyoです。
z80でのキーミュレータの質問に付いては、とりあえず非同期モードでいけそうだと
判断できました。東芝のサイトでTMPZ84c15でなく、TLCSz80とかで検索したましたらデータシートが発見できました。トラ技SPのNo.49(こちらも詳しいですが)よりさらに詳しい解説が載っていました。「アセンブラとは関係ねーじゃんと」言われそうですが、ハード寄りの質問になってしまいました。すいません
SIOの各モードのフローチャートやアセンブラでのサンプルがとても参考になりました。
次からは、もちょっとまともな質問をします。
Satoi Sonidori  [2001/03/25 Sun 05:46:19]  [210.197.122.126]
Clinic of Nurse Cap.

どもお久しぶりです。(^^;
ところで↓でMASM互換アセンブラとDCPという互換DOSが公開されていますよ。
http://www.robotron-net.de/
ではまた。3ヶ月後にでも。
一 五明  [2001/03/24 Sat 07:48:42]  [63.12.86.212]
[HOME]

 zobは時々ROMしてます(^^;


kiyo  [2001/03/24 Sat 00:58:11]  [211.16.177.205]

始めまして、kiyoと申します。
システムロードさんのSL-80を使っています。

現在、PS/2ポート(PC/AT)とキーボードの間にZ80ボードを入れてゲーム用のキーエミュレータを作ってみようとプロトコル等の資料を集めてみたのですが、今までLCDの表示とかはやってみたのですがまだまだ初心者なので、SIOとかの機能のどれを使ってよいのかわかりません。(HDLCモードがよさそうなのですが・・・)

http://panda.cs.ndsu.nodak.edu/~achapwes/PICmicro/PS2/ps2.htm

を参考にデータの転送に使うのは"DATA"と"CLOCK"の2本&"GND"で計3本です。
「"DATA"と"CLOCK"はキーボード側で5vプルアップされたオープンコレクタ接続されている」と書いてあるようです。両ラインは双方向で別のサイトにはハンドシェークでやり取りするとも書かれているようですが英語なので自身がありません。転送時"CLOCK"に乗せられるクロック周波数は10-33kHzです。
この辺のことはもしかすると、トラ技のNo72に載っているかも・・・

どの程度キーボードの動きを再現するかによると思いますが、つなぎっぱなしでBIOSチェックにもパスできればいいなと思っています。
PC98用のが販売されているのですが、できれば節約したいので同じようなことをDOS/Vでやってみた方がいらっしゃいましたらどの機能を使ったかだけでも教えて頂ければ幸いです。 うーん一度ミールに乗ってみたかったよー
合著  [2001/03/24 Sat 00:17:55]  [202.18.170.10]
website

はじめまして合著です。

一 五明さんおひさしぶりです。
最近はzobに現れていないようですね(^^;
一応言っておくと、zob はまだ昔の無手順接続もできます。
電話番号も前と同じなので気分が向いたら(^^; また顔だしてください。
でわでわ。

#私的会話で申し訳ないです。

合著  [2001/03/24 Sat 00:17:54]  [202.18.170.10]
website

はじめまして合著です。

一 五明さんおひさしぶりです。
最近はzobに現れていないようですね(^^;
一応言っておくと、zob はまだ昔の無手順接続もできます。
電話番号も前と同じなので気分が向いたら(^^; また顔だしてください。
でわでわ。

#私的会話で申し訳ないです。

一 五明  [2001/03/22 Thu 20:46:52]  [63.12.86.167]
[HOME]

>MASM は Win(DPMI) でないと動かないのが最大の難点ですが。

 こちらはlccwinでプログラム始めてみたものの、何せC言語はど素人で、
半分勘で組んでる状況ですから重くて仕方ないのが出来たので、アセンブラで
書いたルーチンを呼び出したいと思って調べてたので、とりあえずはどちら
でもいいんですが、将来はマルチプラットフォーム化したいのでNASMのほうが
便利かも知れませんね。


>#NASM を(自動翻訳)したのなら、そういうのばっか集めてる
> サイトがあります。

 電脳研に「図書館」とか「輸出」とか書いてあるのが有りました(^^;;

  → http://www.bekkoame.ne.jp/~bero/docj/nasm/


>#NASM なソース読めばすぐわかるような気もしますが。
>#すくなくとも ASKA よりはよっぽど MASM に近いですけど。

 実はR86使いだったのでMASMも詳しくないんですが(^^;、MASMのソースが
見つかったので試しにNASMに掛けてみたら通らなくて探してた…と言う次第
です。
 探したらNASMのもいくつか出てきました。

なべちゃん  [2001/03/22 Thu 01:43:01]  [210.252.157.23]

MASM は Win(DPMI) でないと動かないのが最大の難点ですが。
#よって私には価値なしぃー
#NASM を(自動翻訳)したのなら、そういうのばっか集めてる
サイトがあります。
#NASM なソース読めばすぐわかるような気もしますが。
#すくなくとも ASKA よりはよっぽど MASM に近いですけど。

一 五明  [2001/03/21 Wed 19:38:21]  [63.12.86.251]
[HOME]

 初めましてです。

 NASMの使い方がよく判らなくて、日本語の解説がどこかに無いかと
調べに来たんですが、掲示板の下のほうにMASMがDL出来るという情報が
あったのでそっちでやってみます(^^;。


>pikkleさん

 if(x > 639) { x = 0;}

 …くらいならMMX無くても

 mov bx,ax
cmp ax,640
sbb ax,ax
and ax,bx

 分岐せずに書けますね。スピードはともかく(^^;;

なべちゃん  [2001/03/16 Fri 23:30:25]  [210.252.157.22]
Free386 official page

>ただ、非圧縮部分の目的のところを書き換えると、チェックサムエラー
>を表示して、フロッピーをアクセスしに行ってしまいます。
>動きからすると、Award Boot Block内で引っかかっているようです。

非圧縮部に何が書いてあるか分かりませんが(^^;;、
私が思うにはライタソフト本体にパッチしてチェックサムを外すのが
一番簡単なような気がします。

緑モモ  [2001/03/16 Fri 18:02:02]  [210.191.211.242]

なべちゃんさんResありがとうございます。

>どの段階でチェックサムが掛かってるのかわからないのですが。
>(焼き込み段階? 起動段階?) たしか、BIOSデータ自体は lzh 形式で
>圧縮されているはずですが。

あ、すみません起動段階です。(^^;

調べた感じでは圧縮部分と非圧縮部分と分かれているようです。
圧縮部分の変更はその手のToolで、つじつまを合わせてくれるので、
問題ないです。

ただ、非圧縮部分の目的のところを書き換えると、チェックサムエラー
を表示して、フロッピーをアクセスしに行ってしまいます。
動きからすると、Award Boot Block内で引っかかっているようです。

引き続き、情報お待ちしています。m(__)m

なべちゃん@abk  [2001/03/16 Fri 16:39:31]  [210.252.157.21]
Free386 official page


>Award BIOSのチェックサムを外したい(パスさせたい)と思っているのですが、

どの段階でチェックサムが掛かってるのかわからないのですが。
(焼き込み段階? 起動段階?) たしか、BIOSデータ自体は lzh 形式で
圧縮されているはずですが。

>DOSで、VCPIなんかでプロテクトモードのコードを実行させる場合、
>そのコードのデバッグはどのようにしたらよいのでしょうか?

拙作の Free386 などは DOS-Extender ですからまさにプロテクトモードに
動作モードを切り換えてからのディバグに同じく苦労したのですが。
CPU例外をフックしてしまっていたので、
わざと例外を起こしてレジスタをダンプしたり、DOS function を接続する
プログラムが出来てたので該当部をレジスタダンプルーチンを呼んだり、
I/O を操作してハングアップするまでの動作を追ってみたり、
状態をメモリ内のセーブして、V86モードに下りてからダンプしたりなどなど
の方法を使いました。個人的には、何らかの DOS-Extender を使うのが
一番スマートに思えますが。

>えーっと、質問があるのですが、アセンブラで
>画像(BMP)をCRTに出力する方法誰か知りませんか?

アセンブラでやる意義がいまいち分かりませんか、普通にファイルをフォーマットの
通り読みだして、DOS なら VGA や VESA、Win なら相応の関数で画面を設定して、
X Window-system でもウィンドウと描画関連を設定して
VRAM に書き込めむか、それなりの描画関数を使えばでるのでは?

  [2001/03/14 Wed 14:30:01]  [211.13.146.237]
BMP?

えーっと、質問があるのですが、アセンブラで
画像(BMP)をCRTに出力する方法誰か知りませんか?
知っていたら教えてください。
サンプルを探したのですが、見つかりません(^^;<そりゃそうか(笑)

お願いします。
akate  [2001/03/12 Mon 01:30:40]  [211.10.154.209]

DOSで、VCPIなんかでプロテクトモードのコードを実行させる場合、
そのコードのデバッグはどのようにしたらよいのでしょうか?
SYMDEBではできないのでしょうか?
akates  [2001/03/12 Mon 01:25:26]  [211.10.154.209]


緑モモ  [2001/03/10 Sat 13:30:49]  [202.212.101.82]

はじめまして、緑モモと申します。

Award BIOSのチェックサムを外したい(パスさせたい)と思っているのですが、どういったカラクリなのか
見当がつきません、心当たりの方いませんか?

今、分かっていることは…これだけ
・実際の動きから推測すると、Award Boot Blockの中にチェックコードがありそう。
・圧縮部分の変更ではエラーにならないので、ROM全部のチェックはしてなさそう。

よろしくお願いします。



なべちゃん@abk  [2001/02/28 Wed 11:26:50]  [202.236.152.74]
Free386

ここには随分昔にお邪魔したことがあるような気がするのですが。
でも、はじめまして。

今、DOS-Extender という変わったものを作ってまして、
VESA3.0 の Protect Mode BIOS を配置して初期化までは成功した
模様なのですが、どうにも function がうまく実行できません。

http://www.abk.nu/dosext/at_test0.lzh

正直詰まってまして...。何かおわかりの方が居たら
よろしくお願いします。

Unit Missing Link  [2001/02/26 Mon 21:48:38]  [61.114.64.6]
Unit Missing Link's Web page 'Rhythm'

Technical Assembler の管理をしております Unit Missing Link です。
皆様、日々の書き込み誠にありがとうございます。

ずうぅ〜っとほったらかしになっていた掲示板のログ整理をしております。
暫定的ではありますが、掲示板を軽くすべく、

02/14/00 〜 01/31/01 の書き込みをログページ Message Log 20a に移動しました。

ずいぶんと長い間重たい状態で使用していただいて、ご迷惑をおかけしました。
今後とも Technical Assembler 掲示板かわいがってやってくださいませ。
cocoala  [2001/02/25 Sun 23:22:52]  [210.228.248.48]

>以前に、あるWEBページでHDDを論理フォーマットしても
>データを復活することができるって書いてあったのですが、

確かにそうです。undeleteとか。

>ということはデータを上書きしても以前のデータは
>HDD上に残っているのでしょうか?

そんなことないと思います。

>個人的にはありえないような気がします。
>HDD(全領域)にランダムでゴミデータを書き込めば
>復活できないと思うのですが?

その通りです。
「論理」フォーマットですから、ファイル情報はほとんど
失われていないんです。
ふえふぁ  [2001/02/25 Sun 00:09:59]  [202.247.187.150]

初めまして。
以前に、あるWEBページでHDDを論理フォーマットしても
データを復活することができるって書いてあったのですが、
ということはデータを上書きしても以前のデータは
HDD上に残っているのでしょうか?

個人的にはありえないような気がします。
HDD(全領域)にランダムでゴミデータを書き込めば
復活できないと思うのですが?

何か知っている方がいましたら教えて下さい。
Pikkle  [2001/02/18 Sun 23:40:20]  [143.90.74.97]


 けんぼぉさん、こんばんは。

 おかげさまで、なんとかソースを移したり、基本コード
をコンバートして、何が何にあたるのがが理解できました。
おおむね大丈夫です。

 あとMMXなプログラムを組んでみました。


 いいですね。なにがいいかっていうと、比較命令が最高にいいです。
たとえば、

 if(x > 639) { x = 0;}

 を普通にCコンパイラで書くと、最低一回の分岐ショートジャンプが
発生しますが、MMXだとジャンプ出さずにかけるところが最高です。
 ちょこちょこあったこういう部分を直したら、思いっきり早くなり
ました。

 パイプラインストールが発生しないなんて、おいしすぎる。

  

けんぼぉ  [2001/02/17 Sat 10:21:08]  [210.163.178.219]

ども、けんぼぉです。

♪Pikkle さん
はじめまして。

> どなたか、GNU AS の文法やOptionの利用方法の記載された
> HPを御存じないでしょうか。

Programming Basic Exercise 3
http://www.teu.ac.jp/nsit/~tominaga/lect/pbe3/

↓たしか GNU の解説が載っていたと思います。
プログラミングの力を生み出す本
http://www.ohmsha.co.jp/data/books/contents/4-274-13134-3.htm

あと、intel2gas とか、NASM もありますよ。
intel2gas
http://www.niksula.cs.hut.fi/~mtiihone/intel2gas/

NASM
http://www.web-sites.co.uk/nasm/
Pikkle  [2001/02/16 Fri 23:48:31]  [143.90.74.21]


いまDirectDrawを利用したプログラムを、BeOSのGameKitに移しているのですが、
GNU AS の文法がいまいちよくわかりません。
いままでMASM、もしくはR86(LSI-C)しか利用しことがなかったので、かなりの足
止めをくらっています。

GCCベースの開発環境で、アセンブラ書くのはナンセンスのような気がしないでもな
いですが、MMXはアセンブラでないと書けませんので。
どなたか、GNU AS の文法やOptionの利用方法の記載されたHPを御存じ内でしょ
うか。
Pikkle  [2001/02/16 Fri 23:39:42]  [143.90.74.21]


>えるださん

MMXが利用できるかそうでないかを検出するには、CPUID命令を利用して
調べます。

厳密に判定するのなら、CPUIDを利用する前にそれ事体の判定をを行わな
くてはいけないのですが、P5ベースのCPUには全てCPUIDが載っている様で
すので、そのまま利用しても特に問題はないでしょう。
また、CPUIDは、SSEやSSE2の検出などにも使えるはずです。

CPUIDの詳しい解説などは、インテルのHPにあるPDFマニュアルを調べてみ
てください。

自分的には、MMXルーチンが必要な部分は限られていますので、その部分の
論理的に切離し、Classとしてしまう方法をとっています。
こうすることで、ノーマル、MMX, MMX'(SSEに加えて拡張されています)
それぞれのClassを、プログラム開始時に撰択して利用できる様になります。

この場合の一番のメリットはデバッグと、改良が楽、というのにつきますね。
えるだ  [2001/02/16 Fri 17:38:11]  [210.233.113.156]

はじめまして、gooサーチでやって参りました。

インラインアセンブラで慣れてきたので、
MMX命令に移行したいのですが、
ちょっといきなりわからないので(ぉぃ
よろしかったらご返答ください。

MMXで記述したプログラムをMMXなしのマシンで走らせると
どうなるんでしょうか。やっぱエラーでるのでしょうか。
すると両対応で汎用ルーチンを組むときは、
フラグか何かでMMX情報を用意しといて、
if( bMMX ){
//MMX
asm{
emms
.
.
}
} else {
//ASM
asm{
.
.
}
}
みたいにするんでしょうか・・・。

UCHII  [2001/02/12 Mon 01:56:41]  [64.236.99.13]

澤口@一升金さんありがとうがざいます。

これでこころおきなくプログラミングできます。
本当にありがとうございました。

澤口@一升金  [2001/02/11 Sun 23:08:24]  [211.4.198.30]

澤口@一升金です。

to ムロさん:

外部回路として PWM発生回路と エンコード回路を付けてやれば
できます・・・というやり方はさておいて、ソフトウェアだけでも、一定
周期で回るメインループが作れれば、できます。
ただし、Z80 ですと、がんばっても周期 1ms 程度でしょうから、1kHz
ですね。
CTC を使って 1ms 毎に割り込み処理するのも、メインループでポー
リングして 1ms 毎に処理するのも、どちらでもやることは同じです。
ループを正確に定周期で回してやるためには、分岐も含めてあらゆ
る処理の全クロック数を同一にします。
ある条件分岐では処理が短くなるときは、NOP を入れたり、 JMP $+2
などの無効処理を入れて適当に遅くしてやります。
Z80 などの通常の8bit CPU ではこういうことをやるメリットや実用性
はほとんどありませんが、クロック計算が簡単で実行速度のはやい
PIC マイコンなどではよく使われるテクニックです。
澤口@一升金  [2001/02/11 Sun 22:48:10]  [211.4.198.30]

澤口@一升金です。

to UCHIさん:

H2INC.EXE がどこかに解凍されてないですか?
(MASM の圧縮ファイルに含まれているはずです)
これを使って *.H ファイルを *.INC に変換できると思います。

ムロ  [2001/02/09 Fri 18:29:34]  [202.223.168.3]

どうも、お久しぶりです。
まだライントレースプログラムの方にかかりっきりになっています。
アセンブラでは必要不可欠?のCTCを使わずにPWM制御+エンコーダ制御は出来るのでしょうか?出来るのであれば、どのようにアセンブラを組み立てればよいのか教えてください。
実は学校の後輩達にアセンブラ実習という形で説明しなければならなくなってしまったので・・・よろしくお願いします。
UCHII  [2001/02/06 Tue 02:48:45]  [64.236.122.138]

初心者です。

98DDKの「98BLDENV」と「98SETUP」を
DLし、インストールしました。

ヘッダファイルに「*.h」と「*.inc」がありますが、
「*.inc」のほうに、「winuser.inc」や
「wingdi.inc」、「windows.inc」などが
ないのはなぜでしょうか?

・DLしたファイルがたりない?
・もともとはいっていない?
・「*.h」をなんとかする?
・間違って消したんじゃない?

どのような理由でないのか教えてください。
お願いします。
masm  [2001/02/03 Sat 21:25:45]  [203.104.134.141]

Java 2 Platform Standard Edition Version 1.3.0 Windows版
を手に入れ、
情報処理技術者試験センターのCASLIIシミュレータ ver1.01
で調べました

Sign Flagは立たない(正)
ことを確認しました
この結果を信じます

masm  [2001/02/03 Sat 16:58:46]  [203.104.134.164]

こんにちは
CASLでアセンブラ言語の勉強をはじめたのですが
CPLの後のフラグレジスタの変化に疑問があります


CPLTEST START BGN
BGN LD GR0,DATA1
LD GR1,DATA2
CPA GR0,GR1
CPL GR0,GR0
CPL GR0,GR1
RET
DATA1 DC #FFFF
DATA2 DC 2
END


参考書(CASL集中ゼミ/SOFT BANK)の記述から、
CPL GR0,GR1
の後はSign Flagは立たない(正)と判断しました。
しかし、
CaslIIBuilder Ver2.02
CASL2000forWindows98,95/NT4.0 バージョン  3.03
で確認したところ、どちらでもSign Flagが立ちます(負になります)


私の判断が間違っているのか、
上記のソフトが二つともバグっているのか
どなたか教えてください

K.Takata  [2001/02/01 Thu 23:49:41]  [211.2.46.85]

初めまして。

MASM なら、Visual C++ 6.0 Processor Pack
http://msdn.microsoft.com/vstudio/downloads/ppack/
に含まれているものの方が Win98DDK のよりも新しいです。(Ver.6.15)
VC6.0 SP4 がインストールされていないと使えないことになってはいますが、
> VCPP /C /T:<path>
とすれば簡単に MASM が取り出せます。
masm  [2001/02/01 Thu 22:12:57]  [203.104.148.116]

micro soft のサイトからbins_ddk.exeがダウンロードできます


参考
http://www.microsoft.com/ddk/download/
http://user.ecc.u-tokyo.ac.jp/~l94102/programmierung/masm-e.html



e-mail: mist@e-net.or.jp
Structured Anchor Tree Return to Menu Return to Parent Menu 
Powered by Unit Missing Link.