[HOME]  [リストへもどる]
一括表示

  VZkのリンクエラー - Konno 07/03/31-00:42 No.2379
 ┗ Re: VZkのリンクエラー - Konno 07/04/05-00:31 No.2392

(2379) 2379VZkのリンクエラー  投稿者: Konno   2007/03/31(土) 00:42
   コメント数 1

VZt03k2のソースをMASM5.1+LINK.EXEでアセンブルすると、

LINK : error L2029: Unresolved externals:

killmemtmp in file(s):
 TEXT.OBJ(text.ASM)
readdir_lfn in file(s):
 FILER.OBJ(filer.ASM)
flsyscall in file(s):
 MACRO.OBJ(macro.ASM)
altsize in file(s):
 SCRN.OBJ(scrn.ASM)
texts in file(s):
 DOS.OBJ(dos.ASM)
chkdosheight in file(s):
 CORE.OBJ(core.ASM)
tmpnamep in file(s):
 TEXT.OBJ(text.ASM)
init_module in file(s):
 MAIN.OBJ(main.ASM)
writememtmp in file(s):
 TEXT.OBJ(text.ASM)
ems_free in file(s):
 DOS.OBJ(dos.ASM)
sm_sensekey in file(s):
 SCRN.OBJ(scrn.ASM)
readmemtmp in file(s):
 TEXT.OBJ(text.ASM)

There were 12 errors detected

と、12個のエラーが出ます。これらは全て外部参照宣言文の所であり、実際には
そのラベルが使われていないために出ます。なので、当然出来た実行ファイルは
何の問題もありません。
これはいかにも開発途上であったことをうかがわますね。

いっぽう私のソースでも11個のエラーが出ていたんですが、ソースを公開するに
あたっていらない宣言文を全部コメントにしました。
が、まだエラーが6個残っていてしかもこれらは実際に使われているんです。
な、何故だぁ!

LINK : error L2029: Unresolved externals:

ias_on in file(s):
 SCRN.OBJ(scrn.ASM)
csrblnk in file(s):
 KEY.OBJ(key.ASM)
sound_func in file(s):
 MAIN.OBJ(main.ASM)
omori_fkey in file(s):
 KEY.OBJ(key.ASM)
idl_count in file(s):
 SCRN.OBJ(scrn.ASM)
hp_lx in file(s):
 KEY.OBJ(key.ASM)

There were 6 errors detected

いろいろやってみてわかったこと。

ias_on:
これは、ローカルラベルなので、外部から呼び出すとエラーになるようだ。
対策は、public宣言する

	public	ias_on
ias_on	proc			;これは必要だろうか?
;ias_on:
;中略
	ret
ias_on endp			;procと対


csrblnk		db	0

これはローカルデータなので、頭に GDATA を付けてみた。(グローバルデータ?)

GDATA csrblnk		db	0

GDATA はVZ.INCのマクロで、パブリック宣言を追加するようだ。

GDATA	macro	sym,def,val1
	public	sym
sym	def	val1
	endm


sound_func、omori_fkey、idl_count は同様に対策した。が、

hp_lx 
こ、これは実データが無いぃ! げげぇ・・・・

見てわかるように、これは200LXのスリープフラグを変数に変更したときに追加した
変数 HP のデータだが、高橋版とDANNY版を交互に弄っているうちにフラグに
戻すつもりでデータだけ消してしまい、プログラムの方を直してないのでした。
これではまともに動くわけないですねぇ。申し訳ない。m(__)m

      - No.2379 -    このTreeへ           [リストへもどる] pre

(2379) 2392Re: VZkのリンクエラー  投稿者: Konno   2007/04/05(木) 00:31
    2379 番 Konno さんへのコメント

うう〜む、良く見たら(良く見なくても)すぐ下のTlinkのエラーと同じでしたね。
別スレッドにしてしまって申し訳ない。m(__)m

とりあえずリンクエラーは無くなったので、お詫びに MASM6用のVZアセンブルバッチ
を、テスト板に置いておきました。m(__)m

えむしさんのバッチを少し改造しただけですが、特徴として、
・引数対応。98、IBMJ の引数で2種類のVZをアセンブルできる。デフォはIBMJ
・エラーで COM が出来無かったら、ASMERR. ファイルにアセンブルログを出力
 *.OBJ や、EXEも削除しない。
・COM が出来た場合は、ASMERR. ファイルも *.OBJ や、EXEも削除する。
・高橋版以降のVZ対応で、FILER2.ASM もアセンブル(これにはまった(;_;))

というものです。EXE2BIN はなぜかエラーになったので、EXE2COM を使用しています。
もちろん、ML.EXE 使用が前提です。LINK.EXE は TLINK に置き換えてもOKです。

で、これでアセンブルしたものは、5.1のものとバイト数は同じですが、中身は
相当違っていますね。・・・いいかげんに公開しないとなぁ。(^^;

      - No.2392 -    このTreeへ    コメント元:2379 へ [リストへもどる] pre