Browse Source

initial dis.w32 by rururutan, in Shift_JIS

vampirefrog 1 year ago
commit
f55b4c5a26
62 changed files with 22820 additions and 0 deletions
  1. 827
    0
      ChangeLog.txt
  2. 340
    0
      GPL.TXT
  3. 1469
    0
      README.DOC
  4. 41
    0
      README.W32
  5. 404
    0
      dis_option.1
  6. 204
    0
      include/doscall.mac
  7. 183
    0
      include/fefunc.mac
  8. 254
    0
      include/iocscall.mac
  9. 1123
    0
      include/sxcall.mac
  10. 56
    0
      labelfile.5
  11. 148
    0
      src/Makefile
  12. 728
    0
      src/analyze.c
  13. 41
    0
      src/analyze.h
  14. 277
    0
      src/analyze2.c
  15. 60
    0
      src/avl/Makefile
  16. 744
    0
      src/avl/avl.c
  17. 130
    0
      src/avl/avl.h
  18. 464
    0
      src/avl/avl.tex
  19. 4077
    0
      src/disasm.c
  20. 163
    0
      src/disasm.h
  21. 152
    0
      src/disasmonly.c
  22. 127
    0
      src/estruct.h
  23. 178
    0
      src/etc.c
  24. 109
    0
      src/etc.h
  25. 603
    0
      src/eval.y
  26. 244
    0
      src/fpconv.c
  27. 46
    0
      src/fpconv.h
  28. 2848
    0
      src/generate.c
  29. 57
    0
      src/generate.h
  30. 201
    0
      src/getopt.c
  31. 21
    0
      src/getopt.h
  32. 77
    0
      src/global.h
  33. 161
    0
      src/hex.c
  34. 104
    0
      src/hex.h
  35. 372
    0
      src/include.c
  36. 30
    0
      src/include.h
  37. 353
    0
      src/label.c
  38. 71
    0
      src/label.h
  39. 293
    0
      src/labelcheck.c
  40. 316
    0
      src/labelfile.c
  41. 21
    0
      src/labelfile.h
  42. 758
    0
      src/main.c
  43. 157
    0
      src/offset.c
  44. 28
    0
      src/offset.h
  45. 727
    0
      src/option.c
  46. 21
    0
      src/option.h
  47. 433
    0
      src/output.c
  48. 46
    0
      src/output.h
  49. 139
    0
      src/ports/Makefile_Cyg_MinGW
  50. 139
    0
      src/ports/Makefile_Cyg_MinGW.org
  51. 139
    0
      src/ports/Makefile_Cygwin
  52. 139
    0
      src/ports/Makefile_FreeBSD
  53. 139
    0
      src/ports/Makefile_Linux
  54. 166
    0
      src/ports/ports.txt
  55. 177
    0
      src/search.c
  56. 360
    0
      src/symbol.c
  57. 58
    0
      src/symbol.h
  58. 362
    0
      src/table.c
  59. 76
    0
      src/table.h
  60. 18
    0
      src/version.c
  61. 475
    0
      table.doc
  62. 146
    0
      tablefile.5

+ 827
- 0
ChangeLog.txt View File

@@ -0,0 +1,827 @@
1
+2010-05-25(火)  Tachibana
2
+
3
+	* dis version 3.16 として公開。
4
+
5
+	* ドキュメント類修正、src/ports/ports.txt 新規作成。
6
+
7
+
8
+2010-05-23(日)  Tachibana
9
+
10
+	* *.[ch]: 移植時にエラーや警告が出ないように調整。明示的なキャス
11
+	トや #include <~.h> の追加など。
12
+
13
+	* Makefile, fpconv.c: 従来は printf() が "%Lg"(long dobule) に対
14
+	応していれば HAVE_LDBL_DOPRNT を定義していたが、逆にして対応して
15
+	いない場合に NO_PRINTF_LDBL を定義するようにした。
16
+
17
+	過去ログ見てたら
18
+	> -DNO_LDBL_DOPRNT を -DHAVE_LDBL_DOPRNT に変更.
19
+	なんてのがあった……。
20
+
21
+	* labelfile.c (get_line): getline から名称変更。glibc に同名関数
22
+	があるため。
23
+
24
+	* labelfile.h (getline, COMMENT_CHAR, SYMBOL_TERMINATE_STRING):
25
+	宣言と定義を削除。
26
+
27
+	* main.c (loadfile): サイズが 0~1 バイトで、拡張子が .r 以外の
28
+	ファイルを指定した時にきちんとエラーに飛ぶようにした(従来は読み
29
+	込んでいないバッファを参照していたが、その後の読み込みでエラーに
30
+	飛ぶので結果的にはセーフ)。
31
+
32
+	* (loadfile): open() の第3引数 S_IRUSR を削除(O_CREAT 時にだけ必
33
+	要な引数)。該当部分の OSKDIS 用コードを削除して統合。
34
+
35
+
36
+2010-05-17(月)  Tachibana
37
+
38
+	* src/global.h: VOLATILE の定義を削除。
39
+
40
+	* src/etc.[ch] (err): 上記変更に対応。代わりに __attribute__
41
+	((noreturn)) を追加。
42
+
43
+	* src/table.c (read_tablefile): コメント行の記号に「;」を追加。
44
+
45
+
46
+2010-05-16(日)  Tachibana
47
+
48
+	* src/estruct.h (xheader, os9header): コンパイル環境によっては構
49
+	造体に余計なパディングが入ってしまい、正しく読み取れない不具合を
50
+	修正(gcc 拡張機能を使用)。
51
+
52
+	* (zheader): main.c から移動。
53
+
54
+	* (ctimez): ctime() がエラー(NULL)になった時に不正なアドレスに書
55
+	き込んでいたのを修正し、"(invalid time)" を返すようにした。
56
+
57
+	PD libc では常に有効なアドレスが返るが、規格上はエラー時に NULL
58
+	が返る。コンパイル環境によっては不正なタイムスタンプの場合などに
59
+	問題となる。
60
+
61
+	* src/include.c (search_and_readfile): dis_inc と include を初期
62
+	化しないまま参照することがある不具合を修正。
63
+
64
+	* src/main.c: QUICK_YES_NO 定義時のみ getch() を宣言するようにし
65
+	た。また __HUMAN68K__ 定義時に conio.h、未定義なら curses.h を読
66
+	み込むようにした(従来は __FreeBSD__ 定義時に curses.h)。
67
+
68
+	* (print_title): Cygwin/MinGW/Linux 対応。処理が長くなってきたの
69
+	で OSKDIS の表示形式を調整。
70
+
71
+	* src/option.c (usage): ヘルプを標準エラー出力ではなく標準出力に
72
+	表示するようにした。
73
+
74
+	* etc.h: __mc68000__ 定義時に __BIG_ENDIAN__ を定義するようにし
75
+	た。以後は __BIG_ENDIAN__ の有無だけを見る。ほとんどの環境で
76
+	Makefile でエンディアンを定義する必要がなくなったはず。
77
+
78
+	* etc.h (peekw, peekl), main.c (loadfile): 上記変更に対応。
79
+
80
+
81
+2006-03-18(土)  Tachibana Eriko  <eririn@spica.freemail.ne.jp>
82
+
83
+	* dis version 3.15 として公開。
84
+
85
+
86
+2006-03-15(水)  Tachibana Eriko  <eririn@spica.freemail.ne.jp>
87
+
88
+	* src/disasm.c (op04): -m680x0 指定時に link.w 命令を逆アセンブ
89
+	ルすると、68000 命令なのに .cpu 68020 が出力されてしまう不具合を
90
+	修正。
91
+
92
+	* README.DOC: ドキュメント修正。
93
+
94
+
95
+2000-05-18(木)  Tachibana Eriko  <eririn@spica.freemail.ne.jp>
96
+
97
+	* dis version 3.14 released.
98
+
99
+	* analyze.c (analyze): 一昨日の変更が期待通りに動作していなかっ
100
+	たのを修正.
101
+
102
+	* disasm.c (op0f): fbra が条件分岐として扱われていた不具合を修正
103
+	(BCCOP から JMPOP に変更).
104
+
105
+
106
+2000-05-16(火)  Tachibana Eriko  <eririn@spica.freemail.ne.jp>
107
+
108
+	* analyze.c (analyze): JMPOP/JSROP でメモリ間接アドレッシングの
109
+	ときは分岐先の解析を行わないようにした(JMPOP は絶対ショートも).
110
+	間接参照先のラベルを登録するようにした.
111
+
112
+	* 上記変更によりプログラム領域の検索中にバスエラーが発生すること
113
+	がある不具合を修正. ただし、対症療法なので、もしかしたらまだ発生
114
+	することがあるかも知れない.
115
+
116
+	* disasm.c (setEA): bd を省略すると (,d0.l) というように出力して
117
+	しまう不具合を修正.
118
+
119
+
120
+version 3.13
121
+-a--rw-   114214 1999-09-01 00:04:32 dis.x
122
+
123
+	その他:
124
+
125
+	環境変数 dis_header、dis_sxmac に空文字列が指定されていた場合は
126
+	無指定と見なすようにした.
127
+
128
+	generate.c の MIN_BIT(x) のマクロ定義を (((x) ^ ((x) - 1)) & (x))
129
+	から ((x) & -(x)) に変更.
130
+
131
+	LIBC をぱっちその14に、bison を version 1.27 human68k-1.1 に変
132
+	更.
133
+
134
+
135
+version 3.12
136
+-a--rw-   114212 1999-04-25 04:05:32 dis.x
137
+
138
+	出力ファイル関係:
139
+
140
+	"sr" が "ccr" になってしまう不具合を修正.
141
+
142
+
143
+version 3.11
144
+-a--rw-   114282 1999-01-03 01:35:18 dis.x
145
+
146
+	オプション関係:
147
+
148
+	-v --exclude-iocscall-mac でバスエラーになる不具合を修正.
149
+
150
+	出力ファイル関係:
151
+
152
+	-M で IOCS コールに(moveq の)コメントが付く不具合を修正.
153
+
154
+
155
+version 3.10
156
+-a--rw-   114336 1998-12-23 03:02:24 dis.x
157
+
158
+	本日の目玉:
159
+
160
+	FreeBSD 上で動作するようにした(リトルエンディアンも問題なし!!).
161
+
162
+	オプション関係:
163
+
164
+	--{in,ex}clude-fefunc-mac オプションを指定するとエラーになってい
165
+	た不具合を修正.
166
+
167
+	入力ファイル関係:
168
+
169
+	$dis_sxmac 読み込み時にメモリを破壊する不具合を修正.
170
+
171
+	アドレス境界情報のシンボル(*filename*)を無視するようにした.
172
+
173
+	出力ファイル関係:
174
+
175
+	-A によるコメントが cmpi.w 等に付かなかった不具合を修正.
176
+	moveq.l にもコメントを付けるようにした.
177
+
178
+	.data セクションがない場合に -S で正しくファイルが作成されなかっ
179
+	た不具合を修正.
180
+
181
+	-A で adda/suba を常に add/sub と表記するようにした. addq/subq
182
+	への最適化を防止する為、必要ならサイズを付ける. addi/subi も演算
183
+	先がデータレジスタでなければ同様に処理する.
184
+
185
+	-v -B で bra の後に空行が入らない不具合を修正.
186
+
187
+	--exclude-xxx-mac 指定時にヘッダ部分に .include (null) と出力さ
188
+	れてしまったので、何も出力しないようにした.
189
+
190
+	68030 の pmove、68040/68060 の plush や、MMU レジスタ bad0、bac0、
191
+	mmusr を使用した命令が正しく出力できなくなっていた不具合を修正.
192
+
193
+	その他細かい不具合を修正.
194
+
195
+	-x で相対オフセットテーブルにもコメントを付けるようにした.
196
+
197
+	FreeBSD 版では fstat() で出力先の同一検査を行うようにした.
198
+
199
+	解析関係:
200
+
201
+	chk2 及び cmp2 のアドレッシングモードが全てとなっていたのを制御
202
+	モードに修正.
203
+
204
+	-m68000 の場合にも tst 命令で 68020 以降で拡張されたアドレッシン
205
+	グを受け付けていた不具合を修正.
206
+
207
+	その他:
208
+
209
+	いろいろと高速化(したはず…).
210
+
211
+	不要になっていた stack.s を削除.
212
+	Makefile.bsd を追加.
213
+
214
+
215
+version 3.00
216
+-a--rw-   116854 1998-10-17 00:38:08 dis.x
217
+
218
+	オプション関係:
219
+
220
+	--include-XXX-mac=<file> 及び --exclude-XXX-mac オプション追加.
221
+	XXX は doscall、iocscall、fefunc のいずれか.
222
+
223
+	--header=<file> オプション追加.
224
+
225
+	-mcpu32 オプション追加.
226
+
227
+	出力ファイル関係:
228
+
229
+	テーブル末尾のラベルが二重に出力される不具合を修正.
230
+
231
+	同一アドレスに対し複数のセクションにラベルが定義されていた場合に
232
+	最後のセクションに全て出力されていた不具合を修正.
233
+
234
+	stack セクションの出力に対応(シンボルテーブルが存在する場合のみ).
235
+
236
+	テーブル関係:
237
+
238
+	テーブルの式に 0x から始まる 16 進数を記述できるようにした.
239
+
240
+	解析関係:
241
+
242
+	解析中にスタック溢れを監視してバスエラーが起きる前に強制終了する
243
+	ようにした.
244
+
245
+	CPU32 の命令セットに対応. ただし .cpu の切り換えは行わない.
246
+
247
+	その他:
248
+
249
+	ソースコードの大幅改修.
250
+
251
+	ソースコードデバッガ情報は全く再現できなかった. この事をドキュメ
252
+	ントに加筆.
253
+
254
+	バージョンを 3.00 にして開発終了とする.
255
+
256
+
257
+version 2.85
258
+-a--rw-   118966 1998-07-17 22:50:38 dis.x
259
+
260
+	オプション関係:
261
+
262
+	-z オプション指定時にファイル形式エラーになる不具合を修正. また、
263
+	アドレスの指定に $ や 0x を付けられるようにした(付けなくても 16 
264
+	進数として扱いますが).
265
+
266
+	サブルーチンコール命令の直後に引数を置くプログラムを解析する為の
267
+	-G オプション作成.
268
+
269
+	出力ファイル関係:
270
+
271
+	ファイルが存在していた場合、r(rename) でファイル名を変更出来るよ
272
+	うにした.
273
+
274
+	二バイト半角文字の扱いを修正.
275
+
276
+	解析関係:
277
+
278
+	テーブル終了アドレスのラベル属性が消えてしまう不具合を修正.
279
+
280
+	その他:
281
+
282
+	-o オプションの説明を修正(デフォルトは 60 で、バイト数ではなく桁
283
+	数だった).
284
+
285
+	実行ファイルの読み込みバッファを 16 バイト余分に確保するようにし
286
+	た.
287
+
288
+	ドキュメント修正.
289
+
290
+
291
+version 2.83
292
+-a--rw-   118402 1998-06-03 01:01:46 dis.x
293
+
294
+	オプション関係:
295
+
296
+	外部定義シンボルの出力を指定する -s[num] オプション作成. -s2 な
297
+	ら .xdef も使いシンボルテーブルをほぼ完全に再現する. 従来の -s
298
+	オプションから機能が変わったので注意して下さい.
299
+
300
+	-m68008 を -m68000 と等価に扱うようにした.
301
+	隠しオプション --x、--r、--z 作成.
302
+
303
+	入力ファイル関係:
304
+
305
+	X/Z 形式実行ファイルを、先頭の 2 バイトの内容で判別するようにし
306
+	た(従来は拡張子).
307
+
308
+	シンボル関係の各種バッファを動的に確保するようにした. 定義数の上
309
+	限がなくなったので -s オプションを削除し、別の機能を割り当てた.
310
+	シンボルが多すぎるとメモリを破壊する不具合を修正.
311
+	未定義のシンボル属性を警告するようにした.
312
+
313
+	出力ファイル関係:
314
+
315
+	定数の外部定義に -C、-Z オプションが効くようにした. -s2 指定時は
316
+	外部定義のラベルも .xref で出力するようにした.
317
+
318
+	拡張精度実数値を実数表記で出力する場合、もし正確に変換できなかっ
319
+	たら内部表記で出力するようにした.
320
+
321
+	標準出力へ書き込む時は自動的に -q を指定するようにした.
322
+
323
+	解析関係:
324
+
325
+	BSS 以降もアドレス依存データや 0x4e75(rts) を検索していた不具合
326
+	を修正. BSS が細切れになるバグが直った筈.
327
+
328
+	-j オプション指定時は、奇数アドレスへの分岐を正しい命令として認
329
+	めるようにした(ただし分岐先はプログラムと見なさない).
330
+
331
+	末尾のラベルが削除されてしまい、不正なメモリを参照してソースコー
332
+	ドを出力し続けてしまう不具合を修正.
333
+
334
+	テーブル関係:
335
+
336
+	浮動小数点を出力する命令 .dc.s、.dc.d、.dc.x、.dc.p を新設. ただ
337
+	しオペランド表現式は記述できず、pc の値を出力するのみ.
338
+
339
+	byte、ascii、asciiz、lascii 以外の命令を BSS 内で使用できるよう
340
+	にした(何に使うのか知らないけど…).
341
+
342
+	各種バッファを動的に確保するようにした(定義数の上限がなくなった).
343
+	定義が多すぎるとメモリを破壊する不具合を修正.
344
+
345
+	ソースコード関係:
346
+
347
+	-DNO_LDBL_DOPRNT を -DHAVE_LDBL_DOPRNT に変更.
348
+	-DHAVE_STRTOX を追加.
349
+
350
+	他は多すぎるので省略.
351
+
352
+	その他:
353
+
354
+	配布規定を GPL に準拠するようにした.
355
+	README.DOC 修正. 今回の改良で残った不具合を仕様に変更.
356
+	dis_option.1 修正. -s の解説を変更、-P 削除.
357
+	tablefile.5 追加.
358
+
359
+
360
+version 2.82
361
+-a--rw-   116442 1998-05-14 21:09:40 dis.x
362
+
363
+	解析関係:
364
+
365
+	-v オプションを指定するとバスエラーが発生する不具合を修正.
366
+
367
+	ソースコード関係:
368
+
369
+	eprintf() の返値を void から int に変更.
370
+
371
+
372
+version 2.81
373
+-a--rw-   117732 1998-03-22 06:11:46 dis.x
374
+
375
+	オプション関係:
376
+
377
+	-Y オプションを新設. 指定した場合は、最初にカレントディレクトリ
378
+	からインクルードファイルを検索する.
379
+
380
+
381
+	入力ファイル関係:
382
+
383
+	識別子 READ_FEFUNC_H を定義してコンパイルすれば、fefunc.mac では
384
+	なく fefunc.h を読み込むようにした.
385
+
386
+	インクルードファイルに定義されたシンボル名によっては、認識されな
387
+	いことがある不具合を修正.
388
+
389
+
390
+	出力ファイル関係:
391
+
392
+	デバイスヘッダに参照されないラベルが出力される不具合を修正.
393
+
394
+
395
+	その他:
396
+
397
+	識別子 QUICK_YES_NO を定義してコンパイルすれば、上書き確認を
398
+	version 2.79 互換('y'のみで決定)になるようにした.
399
+
400
+	ドキュメント修正.
401
+
402
+
403
+version 2.80
404
+-a--rw-   117758 1998-02-11 02:38:22 dis.x
405
+
406
+	サポートの引き継ぎに伴ない、patchlevel ではなく version で管理す
407
+	るようにした.
408
+
409
+
410
+	出力ファイル関係:
411
+
412
+	ラベル/テーブルファイル名を省略した場合に、入力ファイル名から補
413
+	完するようになってしまっていたエンバグを修正.
414
+
415
+	fpconv_[sdx]()で±0.0を特別扱いして最初に処理するようにした(これ
416
+	により拡張精度で+0.0が内部表現で出力される不具合を修正).
417
+	拡張精度を内部表現で出力する閾値を大きくした.
418
+
419
+
420
+	その他:
421
+
422
+	タイトル行に作成年月日を表示するようにした.
423
+	READMEを削除し、全体のマニュアルとしてREADME.DOCを書き下した.
424
+	doscall.mac/iocscall.mac/fefunc.macも添付するようにした.
425
+
426
+
427
+・備考
428
+
429
+ version 2.80 以降は version 2.79 をベースにしています. それ以前の
430
+version 2.78 patchlevel 1~5 のベースは version 2.78ですが、これは私が
431
+version 2.79 が存在していることを知らなかった為です.
432
+ version 2.78 patchlevel 1~5 は version 2.79 と version 2.80 のあいだ
433
+のあたりに位置します.
434
+
435
+
436
+version 2.78 patchlevel 5
437
+-a--rw-   117576 1997-11-29 00:08:30 dis.x
438
+
439
+	入力ファイル関係:
440
+
441
+	インクルードファイルの疑似命令(equ/macro)が大文字だと認識出来な
442
+	くなっていたエンバグを修正.
443
+	定義が一つもなかった場合のエラーメッセージがおかしかった不具合を
444
+	修正. 一つもなくてもエラー終了しないようにした.
445
+	fefunc.dis/fefunc.hではなくfefunc.macを読み込むようにした.
446
+	-u1が指定されていなければ$sx_macを読み込まないようにした.
447
+
448
+
449
+	出力ファイル関係:
450
+
451
+	move16の絶対ロングアドレッシングに()が付かない不具合及び、--old-syntax
452
+	を指定するとハングアップする不具合を修正.
453
+
454
+	link命令のエリア長を16進数で出力するようにした.
455
+
456
+
457
+	解析関係:
458
+
459
+	andi/ori/eori to ccrがワードサイズと見なされていた不具合を修正.
460
+
461
+
462
+	その他:
463
+
464
+	READMEに導入の項を加筆.
465
+	dis_option.1に環境変数の項を加筆.
466
+
467
+	非LIBC環境でコマンドラインの出力が正しくない不具合を修正.
468
+	err()は必ず終了コード1でエラー終了するようにし、引数から終了コー
469
+	ドの指定を削除.
470
+	*_mac_pathをchar []ではなくchar*に変更.
471
+
472
+
473
+	ソースコード関係:
474
+
475
+	いくつかの魔法の数字を#defineで定義するようにした.
476
+	include.cを大幅に改変.
477
+	MakefileのLDFLAGSをLIBFLAGSに変更し、LDFLAGS = -Wl,-xを設定.
478
+	ほか若干の修正.
479
+
480
+
481
+version 2.78 patchlevel 4
482
+-a--rw-   118232 1997-11-13 03:07:00 dis.x
483
+
484
+	オプション関係:
485
+
486
+	数値の指定がおかしくないか調べるようにした.
487
+	-U指定時は-Xも自動的に指定されるようにした.
488
+	シンボルバッファ数のデフォルトを2048に変更.
489
+
490
+	--real/--inrealオプションを新設した. デフォルトは--real.
491
+
492
+	--old-syntax/--new-syntaxオプションを新設した. アドレッシング
493
+	表記を旧形式/新形式で出力する. デフォルトは--new-syntax.
494
+
495
+	-m680*0オプションに複数のMPUを指定できるようにした.
496
+	-m680x0で対応している全てのMPUの同時指定となる.
497
+	-m6888*、-m68851は-m680*0で打ち消されるようになったので注意.
498
+
499
+	.dcbで出力する最小バイト数を指定するオプション-W numを作成.
500
+
501
+
502
+	入力ファイル関係:
503
+
504
+	テーブルの記述でext.wa()などがエラーにならない不具合を修正.
505
+	テーブルの記述でdc.bなどを.dc.bと記述しても受け付けるようにした.
506
+
507
+	実行ファイルの読み込み時にエラーチェックを行なうようにした.
508
+
509
+
510
+	出力ファイル関係:
511
+
512
+	LIBC版でコマンドラインを内部変数_comlineから得るようにした.
513
+	-v指定時に--spが無視される不具合を修正.
514
+	-U指定時にSXCALLのコール名が大文字になってしまう不具合を修正.
515
+	-r指定時に文字列の16進数コメントの文字が変更できなかった不具合を修正.
516
+
517
+	OSK版で(d16,an)の出力が旧表記のままだった不具合を修正.
518
+	quadサイズの即値が正しく出力できない不具合を修正.
519
+	(d32.l,an,ix)のアドレッシングでbdがアドレス依存していなくてもラベル
520
+	に置換されてしまう不具合を修正.
521
+	一部の未定義命令でオペランドがラベルに置換されてしまう不具合を修正.
522
+	データブロックの出力中に-aのアドレス表示が更新されない不具合を修正.
523
+	cpush/cinv命令でアドレスレジスタ番号が正しく出力されない不具合を修正.
524
+
525
+	「bra @f; .ds.b 126; @@:」のbraにはサイズを付けないようにした.
526
+	サプレスされたアドレスレジスタは出力しないようにした.
527
+	(0,an,ix)は(an,ix)として出力するようにした.
528
+	$8000~$ffffの絶対ショートアドレッシングは(-d16)として出力するようにした.
529
+	サイズ".w"は不要になったので削除.
530
+
531
+	ラベルファイルを64ビット整数及び浮動小数点データに対応させた.
532
+
533
+	拡張精度/パックドデシマル型式浮動小数点の実数表記出力に対応.
534
+	ただし完全ではない.
535
+
536
+
537
+	解析関係:
538
+
539
+	複数のMPU命令を同時に受け付けるマルチMPUモードに対応.
540
+	「-m68030,68040」などとして指定する.
541
+
542
+	浮動小数点命令のデフォルトサイズを.wから.xに修正.
543
+	fmove/fmovem from/to fpcr命令のデフォルトサイズを.lに修正.
544
+
545
+	PDBcc、FBcc、PBcc、TRAPcc、FTRAPcc、PTRAPccのサイズ出力/抑制が
546
+	指定通りに行われなかった不具合を修正.
547
+
548
+	-m68020で movec cacrが逆アセンブル出来なくなっていた不具合を修正.
549
+	-m68010でrtdが逆アセンブル出来ない不具合を修正.
550
+	pmove crp,a0などを出力してしまう不具合を修正.
551
+	pflush命令の即値のエラーチェック/出力が正しく行われていなかった
552
+	不具合を修正.
553
+
554
+	長い命令の先頭の一部だけが実行ファイルの末尾に存在した場合、
555
+	ファイル末尾を超えてデータを読んでしまう不具合を修正.
556
+
557
+	OSK版でも68020以降の新設命令を出力可能にした.
558
+
559
+
560
+	ライブラリ関係:
561
+
562
+	libbinioのリンクをやめ、LIBCに対するパッチで対処するようにした.
563
+	これにより端末への出力はCRLF改行で、それ以外はLF改行で行われる.
564
+	libioctlと同じように、dis自身は全く関与せずに実現してます:-)
565
+
566
+	同梱の実行ファイルは改造したlibgccをリンクしています.
567
+	いくつかの不具合を修正しましたが、エンバグしているかも知れません.
568
+
569
+	LIBC/libhdiを改造してlong double対応の_doprnt()を作成した.
570
+
571
+
572
+	その他:
573
+
574
+	テーブルファイル解析中に、alloca()で確保したメモリをfree()で解放
575
+	しようとしていた不具合を修正.
576
+	SXCALLのコール名ポインタ配列は必要な時だけ確保するようにした.
577
+	ファイル名バッファを静的配列ではなくmalloc()で確保するようにした.
578
+
579
+	メッセージ修正.
580
+
581
+
582
+	ソースコード関係:
583
+
584
+	浮動小数点の変換を扱うfpconv.[ch]を作成.
585
+	ヘッダファイルが#includeする順番に依存していたのを修正.
586
+
587
+	int MPU_typeをmputypes MPU_typesに変更.
588
+	main.c:short FPCP_ID[16]をdisasm.c:char FPUID_table[16]に変更.
589
+
590
+
591
+version 2.78 patchlevel 3
592
+-a--rw-   113162 1997-09-02 02:18:26 dis.x
593
+
594
+	出力ファイル関係:
595
+
596
+	$dis_headerのファイルに'%'が含まれていた場合に正しく出力できなかった
597
+	不具合を修正.
598
+	定数シンボルの再現がおかしくなっていた不具合を修正.
599
+	浮動小数点のNaN、無限大が文字列として出力されてしまっていたので、内部
600
+	表現で出力するように修正.
601
+	実効アドレス表記(abs.[wl])を(abs).[wl]に修正.
602
+	ビットフィールド命令のオペランドが出力されなくなっていた不具合を修正.
603
+
604
+	-S指定時に付加する拡張子を小文字にした.
605
+	シンボル名の多重定義に対応. これに伴いラベルファイルの形式を拡張.
606
+	.dc.?はゼロサプレスせずに出力するように変更. ただし最小単位のデータ
607
+	はサプレスされる.
608
+	.dc.w及び.dc.lも.dcb.?に変換されるようにした.
609
+	.dcb.? len,$00は.ds.? lenとして出力するようにした.
610
+
611
+
612
+	解析関係:
613
+
614
+	-m68000指定時にビットフィールド命令が.w (an)と出力されるversion 2.78
615
+	からの不具合を修正.
616
+
617
+	命令中のアドレス依存検査を正しく書き直した.
618
+	ラベルファイルの出力より先にラベルチェックを行うように変更.
619
+
620
+
621
+	表示関係:
622
+
623
+	"bindコマンド等"→"unbindコマンド等".
624
+	バージョンから"(Eriko ver.)"を削除.
625
+
626
+
627
+	オプション関係:
628
+
629
+	-Sを指定すると-Tも指定されてしまっていた不具合を修正.
630
+	-m68008を認識しないようにした.
631
+
632
+
633
+	ソースコード関係:
634
+
635
+	etc.cにLIBC互換のeprintf()を作成(LIBCがあるならLIBCのものを使用).
636
+	可変長引数を受け取る関数はstdarg.hを参照して正しく宣言するようにした.
637
+	nearadrs()のバイナリサーチの条件式がおかしかったのを修正.
638
+	なるべくsetDn()を使うようにした.
639
+	関数の定義を新しい形式に書き換えた.
640
+	staticな関数はファイル先頭で定義してプロトタイプ宣言を削除した.
641
+	小さい関数、一度しか呼ばれない関数はinline関数にした.
642
+	その他いろいろ.
643
+
644
+
645
+version 2.78 patchlevel 2
646
+-a--rw-   113046 1997-08-07 07:12:36 dis.x
647
+
648
+	68060対応:
649
+
650
+	未実装整数・浮動小数点命令をsoftware emulationとして認識します.
651
+	新設命令lpstop、plpar、plpawに対応.
652
+	新設制御レジスタbuscr、pcrに対応.
653
+
654
+
655
+	表示関係:
656
+
657
+	Target MPU、MMU、FPCPの表示を変更した.
658
+
659
+
660
+	オプション関係:
661
+
662
+	命令セットを変更するオプションを作成.
663
+		-P num		software emulation命令を有効にする.
664
+				-R numと同じように指定する.
665
+			+1	未実装浮動小数点命令を有効にする.
666
+			+2	未実装整数命令を有効にする.
667
+				デフォルトは3.
668
+		--fpsp		FPSP命令を有効にする(68040/68060).
669
+		--no-fpsp	〃	  無効にする.
670
+		--isp		ISP命令を有効にする(68060のみ).
671
+		--no-isp	〃	 無効にする.
672
+		--no-fpu	FPU命令を無効にする.
673
+				(-m68030~68060では-m6888xを指定しなくても
674
+				FPU命令が有効になってしまうので、その対策)
675
+		--no-mmu	MMU命令を無効にする.
676
+				(-m68030~68060では-m68851を指定しなくても
677
+				MMU命令が有効になってしまうので、その対策)
678
+
679
+		--no-fpuと--no-mmuは-m680x0のあとに指定すること.
680
+		それ以外は-Pと同じように使用可.
681
+		--(no-)fpspと--(no-)ispはもう片方の設定は変更しない.
682
+		例)-P0 --fpspで浮動小数点命令のみ有効.
683
+
684
+	# 68060専用のプログラムだがFPU/MMU命令は使ってないことが分っていて、
685
+	# データ領域との判別をより正確にしたい場合などは -m68060 --no-fpu
686
+	# --no-mmu と指定すればよい.
687
+
688
+
689
+	出力ファイル関係:
690
+
691
+	拡張精度及びパックドデシマル形式の即値が0サプレスされるバグを修正.
692
+	FPU IDに1以外が指定された場合は.fpidを出力するようにした.
693
+
694
+	複数即値オペランドのfmovem.l #imm,#imm[,#imm],fpcrlistが正常に逆
695
+	アセンブルできなかったのを修正.
696
+
697
+	-U指定時に.include .cpu .fpid .equが大文字にならないのを修正.
698
+
699
+	movepのディスプレースメントに".w"が付いていたが、これは不要なので
700
+	付かないようにした.
701
+
702
+	ラベルファイルにシンボル名を追加すると、そのラベルが必ず外部定義に
703
+	なってしまうのを修正.
704
+
705
+	一部の実効アドレス形式で--spが効かなくなっていたのを修正.
706
+
707
+
708
+	解析関係:
709
+
710
+	「データ領域の中からプログラム領域を捜しています(1).」や「ラベル
711
+	チェック中.」で無限ループに陥る不都合を修正(AVL_delete()のバグ).
712
+
713
+	シンボルテーブルやラベルファイルでシンボル名が無視されるようになって
714
+	いた不都合を修正.
715
+
716
+	-g指定時もシンボルテーブルを読み込むようにした.
717
+
718
+	ワードサイズの再配置情報を通常のロングロードサイズと同等に扱うようにした.
719
+
720
+
721
+	ソースコード関係:
722
+
723
+	fprintf(stderr,...)をeprintf(...)に変更.
724
+	fputc(c,stderr)をetc.cに作成したeputc(c)に変更.
725
+	fputc()の第一引数をcharにcastしていたのをやめた.
726
+
727
+	パーサジェネレータを自分で移植したGNU Bison version 1.25に変更.
728
+
729
+	add_symbol()で行っていた定数シンボル登録の振り分けをmake_symtable()
730
+	で行うようにした.
731
+
732
+	ラベル行とオペランド中のラベルの生成ルーチンを独立させた.
733
+	make_symbol()の第三引数(コロン付加モード)を削除.
734
+
735
+
736
+	ライブラリ関係:
737
+
738
+	avl.c: AVL_delete()で節を削除すると子が迷子になるバグを修正.
739
+
740
+	option.c: XCの独自関数strbpl()を使わないようにした.
741
+
742
+
743
+version 2.78 patchlevel 1
744
+-a--rw-   118978 1997-06-29 00:50:46 dis.x
745
+
746
+	表示関係:
747
+
748
+	Target FPCPの表示形式を若干変更した.
749
+	Target MPU/FPCPの表示から'MC68***'の'MC'を削除した.
750
+	-m68851、-m68030、-m68040指定時はTarget MMUとして表示するようにした.
751
+
752
+
753
+	オプション関係:
754
+
755
+	コマンドラインより先に環境変数dis_optを評価するようにした.
756
+	これにより-Q削除(ただし互換性の為、指定されても無視する).
757
+
758
+	-Cオプションの初期値を-C0から-C2に変更した.
759
+	-mオプションの初期値を-m68030から-m68000に変更した.
760
+
761
+	バージョンを表示するオプション--versionを作成した.
762
+	使用法を表示するオプション--helpを作成した.
763
+	なお、-?はgetoptの仕様上エラーになる.
764
+
765
+
766
+	入力ファイル関係:
767
+
768
+	X形式実行ファイルのヘッダ確認は、先頭2バイトが'HU'かどうかで
769
+	行うようにした(次の1バイトは予約領域、その次の1バイトはロードモード).
770
+
771
+	64バイト未満の不当なX形式実行ファイルがエラーにならないで異常な
772
+	ソースを生成してしまう不都合を修正した.
773
+
774
+	テキストデータとして読み込むファイル(label、table、include、headerの四種)
775
+	は明示的にテキストモードでオプションするようにした.
776
+
777
+	include fileのマクロ/定数名に':'が付いていても認識するように修正.
778
+
779
+
780
+	出力ファイル関係:
781
+
782
+	-vオプションによる出力で"undefined inst."の後にゴミが付く不都合を修正した.
783
+
784
+	.cpu疑似命令や定数の外部定義リストの直後の空行が二行になるように修正した.
785
+	残っていた旧アドレッシング表記を新表記に改めた.
786
+
787
+	単精度浮動小数点小数がラベルに変換されてしまう不都合を修正した.
788
+	浮動小数点小数の先頭に"0f"を付けるようにした.
789
+
790
+	上書き確認はfgets()で"yes"の入力を待つように変更した. それ以外の文字列が
791
+	入力された場合(空文字列も含む)は"no"とみなし中断する.
792
+
793
+	libbioio.aをリンクした関係上、常にLF改行で出力されるようになった.
794
+
795
+
796
+	解析関係:
797
+
798
+	最初のシンボル登録時に不当なアドレスを参照する不都合を修正した.
799
+	SCSIDRV.SYSに-dオプションを付けるとバスエラーになる不都合を修正した.
800
+
801
+	10進数テーブルが文字列";毀"にならないようにした. 但し.dc.lにはならない.
802
+
803
+	-m68020 -m68851指定時に以下のMMU命令が逆アセンブル出来ない不都合を修正.
804
+		レジスタtcを使用した命令
805
+		pmove (d16,pc),mmureg
806
+
807
+
808
+	ソースコード関係:
809
+
810
+	avlライブラリを../avlから./avlに移動した.
811
+	ソースファイルの改行コードをLFにし、TAB幅を8桁に変更した.
812
+	option.cの不正なコメントを修正、analyze2.cのコメント中の"/*"を削除.
813
+
814
+	labelchange()の返値は使用しないようになっていたのでvoid型にした.
815
+	hex.hで宣言されている関数のプロトタイプがhex.cで定義されている実体と
816
+	違っていたのを修正.
817
+	option.hから存在しないhelp()のプロトタイプを削除.
818
+
819
+
820
+	ライブラリ関係:
821
+
822
+	-DLIBCを不要にした.
823
+	strncmpi()はlibcのstrnicmp()を使うように変更.
824
+	libhdi.a、libhmem.a、libbinio.aをリンクするようにした.
825
+
826
+
827
+────────────────────────────────────

+ 340
- 0
GPL.TXT View File

@@ -0,0 +1,340 @@
1
+		    GNU GENERAL PUBLIC LICENSE
2
+		       Version 2, June 1991
3
+
4
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5
+                       51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
6
+ Everyone is permitted to copy and distribute verbatim copies
7
+ of this license document, but changing it is not allowed.
8
+
9
+			    Preamble
10
+
11
+  The licenses for most software are designed to take away your
12
+freedom to share and change it.  By contrast, the GNU General Public
13
+License is intended to guarantee your freedom to share and change free
14
+software--to make sure the software is free for all its users.  This
15
+General Public License applies to most of the Free Software
16
+Foundation's software and to any other program whose authors commit to
17
+using it.  (Some other Free Software Foundation software is covered by
18
+the GNU Library General Public License instead.)  You can apply it to
19
+your programs, too.
20
+
21
+  When we speak of free software, we are referring to freedom, not
22
+price.  Our General Public Licenses are designed to make sure that you
23
+have the freedom to distribute copies of free software (and charge for
24
+this service if you wish), that you receive source code or can get it
25
+if you want it, that you can change the software or use pieces of it
26
+in new free programs; and that you know you can do these things.
27
+
28
+  To protect your rights, we need to make restrictions that forbid
29
+anyone to deny you these rights or to ask you to surrender the rights.
30
+These restrictions translate to certain responsibilities for you if you
31
+distribute copies of the software, or if you modify it.
32
+
33
+  For example, if you distribute copies of such a program, whether
34
+gratis or for a fee, you must give the recipients all the rights that
35
+you have.  You must make sure that they, too, receive or can get the
36
+source code.  And you must show them these terms so they know their
37
+rights.
38
+
39
+  We protect your rights with two steps: (1) copyright the software, and
40
+(2) offer you this license which gives you legal permission to copy,
41
+distribute and/or modify the software.
42
+
43
+  Also, for each author's protection and ours, we want to make certain
44
+that everyone understands that there is no warranty for this free
45
+software.  If the software is modified by someone else and passed on, we
46
+want its recipients to know that what they have is not the original, so
47
+that any problems introduced by others will not reflect on the original
48
+authors' reputations.
49
+
50
+  Finally, any free program is threatened constantly by software
51
+patents.  We wish to avoid the danger that redistributors of a free
52
+program will individually obtain patent licenses, in effect making the
53
+program proprietary.  To prevent this, we have made it clear that any
54
+patent must be licensed for everyone's free use or not licensed at all.
55
+
56
+  The precise terms and conditions for copying, distribution and
57
+modification follow.
58
+
59
+		    GNU GENERAL PUBLIC LICENSE
60
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61
+
62
+  0. This License applies to any program or other work which contains
63
+a notice placed by the copyright holder saying it may be distributed
64
+under the terms of this General Public License.  The "Program", below,
65
+refers to any such program or work, and a "work based on the Program"
66
+means either the Program or any derivative work under copyright law:
67
+that is to say, a work containing the Program or a portion of it,
68
+either verbatim or with modifications and/or translated into another
69
+language.  (Hereinafter, translation is included without limitation in
70
+the term "modification".)  Each licensee is addressed as "you".
71
+
72
+Activities other than copying, distribution and modification are not
73
+covered by this License; they are outside its scope.  The act of
74
+running the Program is not restricted, and the output from the Program
75
+is covered only if its contents constitute a work based on the
76
+Program (independent of having been made by running the Program).
77
+Whether that is true depends on what the Program does.
78
+
79
+  1. You may copy and distribute verbatim copies of the Program's
80
+source code as you receive it, in any medium, provided that you
81
+conspicuously and appropriately publish on each copy an appropriate
82
+copyright notice and disclaimer of warranty; keep intact all the
83
+notices that refer to this License and to the absence of any warranty;
84
+and give any other recipients of the Program a copy of this License
85
+along with the Program.
86
+
87
+You may charge a fee for the physical act of transferring a copy, and
88
+you may at your option offer warranty protection in exchange for a fee.
89
+
90
+  2. You may modify your copy or copies of the Program or any portion
91
+of it, thus forming a work based on the Program, and copy and
92
+distribute such modifications or work under the terms of Section 1
93
+above, provided that you also meet all of these conditions:
94
+
95
+    a) You must cause the modified files to carry prominent notices
96
+    stating that you changed the files and the date of any change.
97
+
98
+    b) You must cause any work that you distribute or publish, that in
99
+    whole or in part contains or is derived from the Program or any
100
+    part thereof, to be licensed as a whole at no charge to all third
101
+    parties under the terms of this License.
102
+
103
+    c) If the modified program normally reads commands interactively
104
+    when run, you must cause it, when started running for such
105
+    interactive use in the most ordinary way, to print or display an
106
+    announcement including an appropriate copyright notice and a
107
+    notice that there is no warranty (or else, saying that you provide
108
+    a warranty) and that users may redistribute the program under
109
+    these conditions, and telling the user how to view a copy of this
110
+    License.  (Exception: if the Program itself is interactive but
111
+    does not normally print such an announcement, your work based on
112
+    the Program is not required to print an announcement.)
113
+
114
+These requirements apply to the modified work as a whole.  If
115
+identifiable sections of that work are not derived from the Program,
116
+and can be reasonably considered independent and separate works in
117
+themselves, then this License, and its terms, do not apply to those
118
+sections when you distribute them as separate works.  But when you
119
+distribute the same sections as part of a whole which is a work based
120
+on the Program, the distribution of the whole must be on the terms of
121
+this License, whose permissions for other licensees extend to the
122
+entire whole, and thus to each and every part regardless of who wrote it.
123
+
124
+Thus, it is not the intent of this section to claim rights or contest
125
+your rights to work written entirely by you; rather, the intent is to
126
+exercise the right to control the distribution of derivative or
127
+collective works based on the Program.
128
+
129
+In addition, mere aggregation of another work not based on the Program
130
+with the Program (or with a work based on the Program) on a volume of
131
+a storage or distribution medium does not bring the other work under
132
+the scope of this License.
133
+
134
+  3. You may copy and distribute the Program (or a work based on it,
135
+under Section 2) in object code or executable form under the terms of
136
+Sections 1 and 2 above provided that you also do one of the following:
137
+
138
+    a) Accompany it with the complete corresponding machine-readable
139
+    source code, which must be distributed under the terms of Sections
140
+    1 and 2 above on a medium customarily used for software interchange; or,
141
+
142
+    b) Accompany it with a written offer, valid for at least three
143
+    years, to give any third party, for a charge no more than your
144
+    cost of physically performing source distribution, a complete
145
+    machine-readable copy of the corresponding source code, to be
146
+    distributed under the terms of Sections 1 and 2 above on a medium
147
+    customarily used for software interchange; or,
148
+
149
+    c) Accompany it with the information you received as to the offer
150
+    to distribute corresponding source code.  (This alternative is
151
+    allowed only for noncommercial distribution and only if you
152
+    received the program in object code or executable form with such
153
+    an offer, in accord with Subsection b above.)
154
+
155
+The source code for a work means the preferred form of the work for
156
+making modifications to it.  For an executable work, complete source
157
+code means all the source code for all modules it contains, plus any
158
+associated interface definition files, plus the scripts used to
159
+control compilation and installation of the executable.  However, as a
160
+special exception, the source code distributed need not include
161
+anything that is normally distributed (in either source or binary
162
+form) with the major components (compiler, kernel, and so on) of the
163
+operating system on which the executable runs, unless that component
164
+itself accompanies the executable.
165
+
166
+If distribution of executable or object code is made by offering
167
+access to copy from a designated place, then offering equivalent
168
+access to copy the source code from the same place counts as
169
+distribution of the source code, even though third parties are not
170
+compelled to copy the source along with the object code.
171
+
172
+  4. You may not copy, modify, sublicense, or distribute the Program
173
+except as expressly provided under this License.  Any attempt
174
+otherwise to copy, modify, sublicense or distribute the Program is
175
+void, and will automatically terminate your rights under this License.
176
+However, parties who have received copies, or rights, from you under
177
+this License will not have their licenses terminated so long as such
178
+parties remain in full compliance.
179
+
180
+  5. You are not required to accept this License, since you have not
181
+signed it.  However, nothing else grants you permission to modify or
182
+distribute the Program or its derivative works.  These actions are
183
+prohibited by law if you do not accept this License.  Therefore, by
184
+modifying or distributing the Program (or any work based on the
185
+Program), you indicate your acceptance of this License to do so, and
186
+all its terms and conditions for copying, distributing or modifying
187
+the Program or works based on it.
188
+
189
+  6. Each time you redistribute the Program (or any work based on the
190
+Program), the recipient automatically receives a license from the
191
+original licensor to copy, distribute or modify the Program subject to
192
+these terms and conditions.  You may not impose any further
193
+restrictions on the recipients' exercise of the rights granted herein.
194
+You are not responsible for enforcing compliance by third parties to
195
+this License.
196
+
197
+  7. If, as a consequence of a court judgment or allegation of patent
198
+infringement or for any other reason (not limited to patent issues),
199
+conditions are imposed on you (whether by court order, agreement or
200
+otherwise) that contradict the conditions of this License, they do not
201
+excuse you from the conditions of this License.  If you cannot
202
+distribute so as to satisfy simultaneously your obligations under this
203
+License and any other pertinent obligations, then as a consequence you
204
+may not distribute the Program at all.  For example, if a patent
205
+license would not permit royalty-free redistribution of the Program by
206
+all those who receive copies directly or indirectly through you, then
207
+the only way you could satisfy both it and this License would be to
208
+refrain entirely from distribution of the Program.
209
+
210
+If any portion of this section is held invalid or unenforceable under
211
+any particular circumstance, the balance of the section is intended to
212
+apply and the section as a whole is intended to apply in other
213
+circumstances.
214
+
215
+It is not the purpose of this section to induce you to infringe any
216
+patents or other property right claims or to contest validity of any
217
+such claims; this section has the sole purpose of protecting the
218
+integrity of the free software distribution system, which is
219
+implemented by public license practices.  Many people have made
220
+generous contributions to the wide range of software distributed
221
+through that system in reliance on consistent application of that
222
+system; it is up to the author/donor to decide if he or she is willing
223
+to distribute software through any other system and a licensee cannot
224
+impose that choice.
225
+
226
+This section is intended to make thoroughly clear what is believed to
227
+be a consequence of the rest of this License.
228
+
229
+  8. If the distribution and/or use of the Program is restricted in
230
+certain countries either by patents or by copyrighted interfaces, the
231
+original copyright holder who places the Program under this License
232
+may add an explicit geographical distribution limitation excluding
233
+those countries, so that distribution is permitted only in or among
234
+countries not thus excluded.  In such case, this License incorporates
235
+the limitation as if written in the body of this License.
236
+
237
+  9. The Free Software Foundation may publish revised and/or new versions
238
+of the General Public License from time to time.  Such new versions will
239
+be similar in spirit to the present version, but may differ in detail to
240
+address new problems or concerns.
241
+
242
+Each version is given a distinguishing version number.  If the Program
243
+specifies a version number of this License which applies to it and "any
244
+later version", you have the option of following the terms and conditions
245
+either of that version or of any later version published by the Free
246
+Software Foundation.  If the Program does not specify a version number of
247
+this License, you may choose any version ever published by the Free Software
248
+Foundation.
249
+
250
+  10. If you wish to incorporate parts of the Program into other free
251
+programs whose distribution conditions are different, write to the author
252
+to ask for permission.  For software which is copyrighted by the Free
253
+Software Foundation, write to the Free Software Foundation; we sometimes
254
+make exceptions for this.  Our decision will be guided by the two goals
255
+of preserving the free status of all derivatives of our free software and
256
+of promoting the sharing and reuse of software generally.
257
+
258
+			    NO WARRANTY
259
+
260
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
262
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
266
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
267
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268
+REPAIR OR CORRECTION.
269
+
270
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278
+POSSIBILITY OF SUCH DAMAGES.
279
+
280
+		     END OF TERMS AND CONDITIONS
281
+
282
+	    How to Apply These Terms to Your New Programs
283
+
284
+  If you develop a new program, and you want it to be of the greatest
285
+possible use to the public, the best way to achieve this is to make it
286
+free software which everyone can redistribute and change under these terms.
287
+
288
+  To do so, attach the following notices to the program.  It is safest
289
+to attach them to the start of each source file to most effectively
290
+convey the exclusion of warranty; and each file should have at least
291
+the "copyright" line and a pointer to where the full notice is found.
292
+
293
+    <one line to give the program's name and a brief idea of what it does.>
294
+    Copyright (C) <year>  <name of author>
295
+
296
+    This program is free software; you can redistribute it and/or modify
297
+    it under the terms of the GNU General Public License as published by
298
+    the Free Software Foundation; either version 2 of the License, or
299
+    (at your option) any later version.
300
+
301
+    This program is distributed in the hope that it will be useful,
302
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
303
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
304
+    GNU General Public License for more details.
305
+
306
+    You should have received a copy of the GNU General Public License
307
+    along with this program; if not, write to the Free Software
308
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
309
+
310
+
311
+Also add information on how to contact you by electronic and paper mail.
312
+
313
+If the program is interactive, make it output a short notice like this
314
+when it starts in an interactive mode:
315
+
316
+    Gnomovision version 69, Copyright (C) year name of author
317
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
318
+    This is free software, and you are welcome to redistribute it
319
+    under certain conditions; type `show c' for details.
320
+
321
+The hypothetical commands `show w' and `show c' should show the appropriate
322
+parts of the General Public License.  Of course, the commands you use may
323
+be called something other than `show w' and `show c'; they could even be
324
+mouse-clicks or menu items--whatever suits your program.
325
+
326
+You should also get your employer (if you work as a programmer) or your
327
+school, if any, to sign a "copyright disclaimer" for the program, if
328
+necessary.  Here is a sample; alter the names:
329
+
330
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
331
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
332
+
333
+  <signature of Ty Coon>, 1 April 1989
334
+  Ty Coon, President of Vice
335
+
336
+This General Public License does not permit incorporating your program into
337
+proprietary programs.  If your program is a subroutine library, you may
338
+consider it more useful to permit linking proprietary applications with the
339
+library.  If this is what you want to do, use the GNU Library General
340
+Public License instead of this License.

+ 1469
- 0
README.DOC
File diff suppressed because it is too large
View File


+ 41
- 0
README.W32 View File

@@ -0,0 +1,41 @@
1
+ソースコードジェネレータ for X680x0 version 3.16
2
+
3
+[これは?]
4
+
5
+ 個人的に必要になったのでdisをWIN32にportingしました。
6
+ disはX68000では標準的な逆アセンブラです。
7
+
8
+ オリジナルソースは桑島技研ARCHIVES(http://kuwa.xps.jp/x68k/KGARC/kgarc.html)
9
+ から取得してください。
10
+
11
+ 3.16で立花さんが、MinGW版の修正を取り込んで下さったので、
12
+ 今回はMakefileの変更以外はコンパイルしたのみです。
13
+ バイナリはMinGW32 + m4 + bisonでコンパイルを行いました。
14
+
15
+[使い方]
16
+
17
+ X68000版とまったく同じです。:-)
18
+
19
+[謝辞]
20
+
21
+ 素晴らしいプログラムを作成されたK.Abe/R.ShimiZu/Tachibana Eriko各氏に感謝致します。
22
+
23
+[変更履歴]
24
+
25
+ 2007/08/27 初版
26
+ 2008/04/10 Zファイルの解析に失敗していたので修正。
27
+            パディングを考慮せず構造体を定義してそのまま読むという元のコードの潜在問題。
28
+            修正が面倒なのでgccの拡張機能使って逃げました。
29
+ 2008/05/22 解析元ファイルのタイムスタンプがおかしいとクラッシュするのを修正。
30
+            ctimeの戻りを見ていない元のコードの潜在問題。
31
+ 2009/12/02 -X/-Uオプションが効かないと報告を受けたので修正。
32
+ 2014/11/29 3.16ベースに変更
33
+
34
+[ライセンス]
35
+
36
+ オリジナルと同等でお願いします。
37
+
38
+[連絡先]
39
+
40
+ EMAIL: tsato@vesta.dti.ne.jp
41
+ URL:   http://www.vesta.dti.ne.jp/~tsato/

+ 404
- 0
dis_option.1 View File

@@ -0,0 +1,404 @@
1
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
2
+
3
+		ソースコードジェネレータ オプション一覧
4
+
5
+────────────────────────────────────
6
+
7
+-a[num]		num 行ごとにアドレスをコメントで入れる
8
+		(num を省略すると5行ごと)
9
+
10
+-b num		相対分岐命令のサイズの出力
11
+		(0:自動 1:常に省略 2:常に付ける)
12
+
13
+		相対分岐命令のオペコードにサイズを付けるかどうかを指定し
14
+		ます.
15
+
16
+		通常(-b0 指定時)は、ショートブランチで届く距離をワードブ
17
+		ランチ、またはワードブランチで届く距離をロングブランチし
18
+		ている場合にサイズを付けます.
19
+
20
+		なお、-b2 を指定しても fdbcc 命令には絶対にサイズが付き
21
+		ません(アセンブラの仕様によります).
22
+
23
+-c		ラベルチェックを行わない
24
+
25
+		命令の中を指すラベルを探さないようにします. 通常は指定す
26
+		る必要はありません. 指定した場合、正常なソースを出力でき
27
+		ない場合があります.
28
+
29
+-d		デバイスドライバの時に指定
30
+
31
+		デバイスヘッダの構造を認識します. デバイスドライバでなけ
32
+		れば指定しないで下さい.
33
+
34
+-e[file]	ラベルファイルの出力
35
+
36
+		ラベルファイルを出力します. ファイル名を省略した場合はソ
37
+		ースファイル名の拡張子を .lab に変更したファイル名で出力
38
+		します.
39
+
40
+-f		バイト操作命令の不定バイトのチェック($00 or $ff ?)をしな
41
+		い
42
+
43
+		通常は、バイトサイズの即値の上位バイトは通常 $00 か $ff
44
+		であるので、それ以外であったら未定義命令と見なします(値
45
+		が正なら$00、負なら$ffになります).
46
+
47
+		このオプションを指定した場合はそのチェックを行ないません.
48
+		指定した場合は再アセンブルしても同じコードにならない場合
49
+		があります.
50
+
51
+-g[file]	ラベルファイルを読み込む
52
+
53
+		ラベルファイルを読み込みます. ファイル名を省略した場合は
54
+		ソースファイル名の拡張子を .lab に変更したファイル名から
55
+		読み込みます.
56
+
57
+-h		データ領域中の$4e75(rts)の次のアドレスに注目する
58
+
59
+		データ領域中に$4e75(rts)を発見した場合、その次のアドレス
60
+		を何らかのラベル(大抵はプログラム)として認識します.
61
+
62
+-i		分岐先で未定義命令があってもデータ領域と見なさない
63
+
64
+		通常は、未定義命令を含むサブルーチン(と思われるもの)に分
65
+		岐した場合は分岐元自体がデータ領域と見なします. このオプ
66
+		ションを指定すればそのチェックを行わずに無条件に命令と見
67
+		なします.
68
+
69
+-j		アドレスエラーが起こるであろう命令を未定義命令と見なさな
70
+		い
71
+
72
+		通常は実行時にアドレスエラーが起こるであろう命令は未定義
73
+		命令と見なしますが、このオプションを指定した場合はそのチ
74
+		ェックを行ないません.
75
+
76
+-k		命令の中を指すラベルはないものと見なす
77
+
78
+		命令の中を示すラベルが見つかった場合、そこは命令ではなく
79
+		データと解釈します. 元々命令の中を指すラベルがなければソ
80
+		ースの質が良くなる場合がありますが、そのようなラベルがあ
81
+		れば逆に悪くなります.
82
+
83
+-l		プログラム領域が見つからなくなるまで何度も捜すことをしな
84
+		い
85
+
86
+		通常はデータ領域からプログラム領域を見つからなくなるまで
87
+		探しますが、このオプションを付けると一度しか探しません.
88
+		付ける必要はありません.
89
+
90
+-m 680x0	逆アセンブル対象のMPUを指定(x=[0],1-4,6)
91
+
92
+		逆アセンブルする命令セットを選択します. -m68040~68060
93
+		指定時は内蔵コプロセッサ・MMU 命令も使用可能になります.
94
+
95
+		-m68000,68030 のように複数の MPU を指定すると、指定した
96
+		全ての MPU の命令セットが同時に使用可能になります. また、
97
+		-m680x0 を指定すると選択可能な全ての MPU の命令セットが
98
+		採用されます.
99
+
100
+-m 68851	68851命令を有効にする(-m68020 指定時のみ有効)
101
+
102
+		外付けMMU命令を逆アセンブル可能にします.
103
+		このオプションは -m680*0 オプションによってクリアされる
104
+		ので、それより後に指定して下さい.
105
+
106
+-m 6888x[,ID]	有効なFPCPとそのIDを指定(68881/68882 ID=[1],2-7)
107
+
108
+		-m68020~68030 を指定している場合に、外付けコプロセッサ
109
+		命令を逆アセンブル可能にします. -m68881 と -m68882の機能
110
+		は全く同じです.
111
+
112
+		IDの指定を省略した場合は1と見なされます.
113
+		-m68881 -m68882,2 のように複数のIDを指定することも出来ま
114
+		す.
115
+
116
+		このオプションは -m680*0 オプションによってクリアされる
117
+		ので、それより後に指定して下さい.
118
+
119
+-n num		文字列として判定する最小の長さ. 0なら判定しない(初期値=3)
120
+
121
+		文字列として判定する最小のバイト数を指定します. 短い文字
122
+		列の判定に失敗する場合、または判定を行いたくない時に使用
123
+		します.
124
+
125
+-o num		文字列領域の桁数(1≦num≦80 初期値=60)
126
+
127
+		文字列領域を出力する際の、ソースファイルの一行あたりの桁
128
+		数を指定します.
129
+
130
+-p		データ領域中のプログラム領域を判別しない
131
+
132
+		通常は、一度データ領域と判定した場所からプログラム領域が
133
+		なかったか調べますが、このオプションを指定するとそれをし
134
+		ません. 付ける必要はありません.
135
+
136
+-q[num]		メッセージを出力しない
137
+		([0]:通常 1:テーブルに関する情報も出力しない)
138
+
139
+		解析中/ファイル出力中のメッセージを表示しません. 指定す
140
+		ればその分処理が速くなります.
141
+
142
+-r		文字列に16進数のコメントを付ける
143
+
144
+-s[num]		シンボルテーブルの出力([0]:しない 1:[通常] 2:全て)
145
+
146
+		外部定義シンボルを再現します. -s1 指定時は定数シンボルの
147
+		み、-s2 指定時はアドレス値も出力します.
148
+
149
+-u[num]		未使用の A,F line trap を未定義命令と見なさない
150
+		(num=1 SX-Window 対応)
151
+
152
+		A line trap や doscall.mac 及び fefunc.mac などで定義さ
153
+		れなかった F line trap を未定義命令と見なさないようにし
154
+		ます.
155
+
156
+		-u1 指定時は環境変数 dis_sxmac に設定してある SX-Window
157
+		のファンクションコール定義ファイルを読み込み、DOSコール
158
+		等と同様のマクロ出力を行ないます.
159
+
160
+-v		単なる逆アセンブルリストの出力
161
+
162
+-w num		データ領域の横バイト数(1≦num≦32 初期値=8)
163
+
164
+		データ領域を出力する際の、ソースファイルの一行あたりのバ
165
+		イト数を指定します.
166
+
167
+-x		実際のオペコードを16進数のコメントで付ける
168
+
169
+-y		全てのデータ領域をプログラム領域でないか確かめることをし
170
+		ない
171
+
172
+		通常は、一度解析した後サイズの分らないデータがプログラム
173
+		でないか解析します.
174
+
175
+		このオプションを指定すると、データの終わりがリターン命令・
176
+		分岐命令などである領域のみを解析します. プログラム領域を
177
+		データとして残すことが有りますが、逆にデータ領域をプログ
178
+		ラムにすることも無くなる可能性もあります.
179
+
180
+-z base,exec	実行ファイルを base からのバイナリファイルとみなし、exec
181
+		から解析する
182
+
183
+		アドレスに依存したバイナリ形式の実行ファイルを解析します.
184
+		実行開始アドレスが分らない時は、ファイル先頭アドレスと同
185
+		じ値を指定してみて下さい.
186
+
187
+-A		cmpi, movea 等を cmp, move 等にする
188
+
189
+		ただし、演算先がデータレジスタの cmpi、ori、andi、subi、
190
+		addi、eori は "i" なしの命令とオブジェクトコードが異なる
191
+		ので、そのままで出力されます. また、addi と subi で即値
192
+		が 1 ~ 8 の場合、addq や subq に最適化されるのを防ぐ為、
193
+		即値にサイズが付きます.
194
+
195
+-B		bra の後でも改行する
196
+
197
+		通常は rts、rte、rtr、jmp、DOS _EXIT、_EXIT2、_KEEPPR、
198
+		SXCALL __TSExit(ExitToShell)の後に一行空行を入れますが、
199
+		このオプションを指定すると bra の後にも空行を入れます.
200
+
201
+-C[num]		ラベルの後のコロン
202
+		(0:付けない 1:全てに1つ [2]:通常 3:全てに2つ)
203
+
204
+		ラベル定義行に付けるコロンの数を指定します. 通常は内部定
205
+		義(static)のラベルには一個(':')、外部定義(extern)のラベ
206
+		ルには二個('::')付きます.
207
+
208
+		内部定義か外部定義かの区別は、実行ファイルのシンボルテー
209
+		ブルにラベル定義が出力されているかどうかです.
210
+
211
+-D		データセクション中にもプログラムを認める
212
+
213
+		データセクションに分岐するプログラムに対応します. そのよ
214
+		うなプログラムでは「pc が有効なセクションを外れた」と表
215
+		示されるので、このオプションを指定してみて下さい.
216
+
217
+-E		バイト操作命令の不定バイトの書き換えチェックをしない
218
+
219
+		通常は、不定バイトを書き換えるような命令は未定義命令と見
220
+		なしますが、このオプションを指定した場合はそのチェックを
221
+		行ないません.
222
+
223
+-F		dbra, fdbra を dbf, fdbf として出力する
224
+
225
+-G		サブルーチンコール命令の直後に引数を置くプログラムを解析
226
+		する.
227
+
228
+-I		命令の中を差すラベルのアドレスを表示する
229
+
230
+		命令の中を指すラベルが現われた時に、その旨を表示します.
231
+
232
+		・「命令の中を差すラベル(X -> Y+?)」
233
+		アドレス X が命令の中を指していたため、Y+? に置き換えま
234
+		した.
235
+
236
+		・「命令の中を差すラベル(X) -> データ領域に変更しました
237
+		  (Y-X)」
238
+		-k オプションの影響、またはアドレス X が不定バイトを指し
239
+		ていた為に Y から X までの領域をデータ領域に変更しました.
240
+		そこが本当はプログラム領域であった場合は -E オプションを
241
+		指定してみて下さい.
242
+
243
+-K char		char をコメントキャラクタとして用いる
244
+
245
+-L char		char をラベル名の先頭文字として用いる
246
+
247
+		実行ファイルのシンボルテーブルやラベルファイルでラベル名
248
+		が与えられなかったラベルは、'Lxxxxxx'(x は16進数値)とい
249
+		う形式でラベル名が生成されますが、先頭文字 'L' を任意の
250
+		文字に変更します.
251
+
252
+-M		cmpi, move, addi.b, subi.b #imm および pack, unpk にコメ
253
+		ントをつける
254
+
255
+		imm が表示可能な ASCII 文字の場合にコメントを出力します.
256
+
257
+-N		サイズがデフォルトなら付けない
258
+
259
+-R num		未使用フィールドのチェック項目の指定
260
+		(ビット指定, 初期値=15)
261
+	+1	mulu.l, muls.l, ftst.x における未使用レジスタフィールド
262
+	+2	拡張アドレッシングでのサプレスされたレジスタフィールド
263
+	+4	サプレスされたインデックスレジスタに対するスケーリング
264
+	+8	サプレスされたインデックスレジスタに対するサイズ指定(.l)
265
+
266
+-S[num]		出力ファイルを num KB ごとに分割する
267
+		(num を省略すると 64KB)
268
+
269
+		実行ファイルの約 num KB ごとにソースファイルを分割して出
270
+		力します. ソースファイルには以下のような拡張子が付加され
271
+		ます.
272
+
273
+		テキストセクション		.000 .001 ~ .009 .00a ...
274
+		データセクション		.dat
275
+		ブロックストレージセクション	.bss
276
+
277
+-T[file]	テーブル記述ファイルを読み込む
278
+
279
+		テーブル記述ファイルを読み込みます. ファイル名を省略した
280
+		場合はソースファイル名の拡張子を .tab に変更したファイル
281
+		名から読み込みます.
282
+
283
+-U		ニーモニックを大文字で出力する
284
+
285
+-V num		バックトラックの原因の表示
286
+		(0:しない [1]:プログラム領域 2:全ての領域)
287
+
288
+		解析した領域がプログラムと認められなかった時に、その理由
289
+		とアドレスを表示します.
290
+
291
+-W num		同一データを .dcb で出力する最小バイト数.
292
+		0なら圧縮しない(初期値=64)
293
+
294
+		データを .dc.? で出力する場合、全てのデータが同一の値で
295
+		あれば .dcb.? により圧縮して出力されますが、一定のサイズ
296
+		より小さい領域は例え同一値であっても圧縮されません. この
297
+		オプションでそのサイズの閾値を変更出来ます.
298
+
299
+-X		16進数を大文字で出力する
300
+
301
+-Y		カレントディレクトリからも include ファイルを検索する
302
+
303
+		カレントディレクトリにあるインクルードファイルを優先して
304
+		読み込みます.
305
+
306
+-Z[num]		16進数をゼロサプレスする([0]:通常 1:省略可能な'$'を省略)
307
+
308
+--include-XXX-mac=file
309
+		include ファイルの指定(XXX = doscall,iocscall,fefunc)
310
+
311
+		標準の include ファイルの代わりに file を読み込みます.
312
+
313
+--exclude-XXX-mac
314
+		include ファイルを読み込まない
315
+
316
+		include ファイルを読み込まず、ファンクションコールの逆ア
317
+		センブルも行わないようにします.
318
+
319
+--header=file	ヘッダファイルの指定(環境変数 dis_header より優先)
320
+
321
+		標準のヘッダの代わりに file の内容を出力します.
322
+
323
+--(no-)fpsp	未実装浮動小数点命令を[有効](無効)にする
324
+--(no-)isp	未実装整数命令を[有効](無効)にする
325
+
326
+		通常は、システムによってソフトウェアエミュレーションされ
327
+		ることが保証されている命令は実在する命令と見なされますが、
328
+		このオプションを指定した場合は未定義命令と見なします.
329
+
330
+--no-fpu	内蔵FPU命令を無効にする(-m68040~68060の後に指定)
331
+--no-mmu	内蔵MMU命令を無効にする(-m68030~68060の後に指定)
332
+
333
+		通常は -m680*0 オプションで指定した MPU によっては、自動
334
+		的に内蔵 FPU/MMU 命令が有効になります. これらのオプショ
335
+		ンを指定するとそれらの命令を対象命令セットから除外します.
336
+
337
+		逆アセンブルするファイルにそれらの命令が含まれていないと
338
+		分っている場合、このオプションを指定することで命令セット
339
+		を限定し、解析の手助けをすることが出来ます.
340
+
341
+		このオプションは -m680*0 オプションによってクリアされる
342
+		ので、それより後に指定して下さい.
343
+
344
+--sp		a7 レジスタを'sp'と表記する(標準では --a7)
345
+
346
+		オペランド中のレジスタ a7 の表記を sp に変更します.
347
+		movem 命令のレジスタリストに表われる a7 は変更されません.
348
+
349
+--old-syntax	アドレッシングを旧表記で出力する(標準では --new-syntax)
350
+
351
+		通常は 68020 以降で定められたアドレッシング表記で出力し
352
+		ますが、このオプションを指定した場合は 68000 の表記で出
353
+		力します. ただし、68020 以降でしか使用できないアドレッシ
354
+		ングでは常に新しい表記で出力します.
355
+
356
+--(in)real	浮動小数点を[実数表記](内部表現)で出力する
357
+
358
+		命令のオペランドやデータとして浮動小数点を出力する場合の
359
+		表記を選択します. --real を指定すると「0f1.23e+10」といっ
360
+		た実数表記、 --inreal を指定すると「!4048f5c3」といった
361
+		内部表現で出力します.
362
+
363
+		非数や無限大、非正規化数、未使用ビットがセットされている
364
+		データの場合は実数表記が不可能なので常に内部表現で出力さ
365
+		れます.
366
+
367
+		標準状態では --real が指定されています.
368
+
369
+--overwrite	ファイルを無条件で上書きする
370
+--version	バージョンを表示する
371
+--help		使用法を表示する
372
+
373
+
374
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
375
+
376
+		ソースコードジェネレータ 環境変数一覧
377
+
378
+────────────────────────────────────
379
+
380
+dis_opt		デフォルトのオプションを指定します. コマンドラインの指定
381
+		より先に解釈されますが、-m680*0 など上書き指定できるもの
382
+		を除き取り消すことは出来ません.
383
+
384
+dis_include	doscall.mac、iocscall.mac、fefunc.mac を検索するディレク
385
+		トリ名を設定します. dis_include で指定されたパスに存在し
386
+		なければ環境変数 include を見ます.
387
+
388
+include		環境変数 dis_include で指定されたパスに各ファイルが存在
389
+		しなかった場合に検索するディレクトリ名を設定します.
390
+		include で指定されたパスにも存在しなければ dis.x はエラー
391
+		終了します.
392
+
393
+dis_sxmac	SX-Window 用のインクルードファイルのファイル名をフルパス
394
+		で設定しておけば、-u1 オプション指定時にそのファイルが読
395
+		み込まれます. この環境変数を設定しなければ -u1 を指定し
396
+		た時でもファイルが読み込まれないだけで、エラーにはなりま
397
+		せん.
398
+
399
+dis_header	出力ファイルの先頭に出力される .include 部分を書いたファ
400
+		イルをフルパスで設定しておけば、そのファイルの内容を代わ
401
+		りに出力します.
402
+
403
+
404
+────────────────────────────────────

+ 204
- 0
include/doscall.mac View File

@@ -0,0 +1,204 @@
1
+		.nlist
2
+
3
+*		doscall.mac
4
+*			RUKA assembler macro for X680x0/Human68k(v3)
5
+*			version 1.16 2000/03/03 Tachibana Eririn.
6
+
7
+		.ifndef	__doscall_mac__
8
+			__doscall_mac__:=1
9
+
10
+
11
+* Macro --------------------------------------- *
12
+
13
+DOS:		.macro	callno
14
+		.dc	callno
15
+		.endm
16
+
17
+
18
+* DOS Call Number ----------------------------- *
19
+
20
+_EXIT:		.equ	$ff00
21
+_GETCHAR:	.equ	$ff01
22
+_PUTCHAR:	.equ	$ff02
23
+_COMINP:	.equ	$ff03
24
+_COMOUT:	.equ	$ff04
25
+_PRNOUT:	.equ	$ff05
26
+_INPOUT:	.equ	$ff06
27
+_INKEY:		.equ	$ff07
28
+_GETC:		.equ	$ff08
29
+_PRINT:		.equ	$ff09
30
+_GETS:		.equ	$ff0a
31
+_KEYSNS:	.equ	$ff0b
32
+_KFLUSH:	.equ	$ff0c
33
+_FFLUSH:	.equ	$ff0d
34
+_CHGDRV:	.equ	$ff0e
35
+_CHDRV:		.equ	$ff0e			;=_CHGDRV
36
+_DRVCTRL:	.equ	$ff0f
37
+_CONSNS:	.equ	$ff10
38
+_PRNSNS:	.equ	$ff11
39
+_CINSNS:	.equ	$ff12
40
+_COUTSNS:	.equ	$ff13
41
+_FATCHK:	.equ	$ff17
42
+_HENDSP:	.equ	$ff18
43
+_CURDRV:	.equ	$ff19
44
+_GETSS:		.equ	$ff1a
45
+_FGETC:		.equ	$ff1b
46
+_FGETS:		.equ	$ff1c
47
+_FPUTC:		.equ	$ff1d
48
+_FPUTS:		.equ	$ff1e
49
+_ALLCLOSE:	.equ	$ff1f
50
+_SUPER:		.equ	$ff20
51
+_FNCKEY:	.equ	$ff21
52
+_KNJCTRL:	.equ	$ff22
53
+_CONCTRL:	.equ	$ff23
54
+_KEYCTRL:	.equ	$ff24
55
+_INTVCS:	.equ	$ff25
56
+_MAKEPSP:	.equ	$ff26
57
+_PSPSET:	.equ	$ff26			;=_MAKEPSP
58
+_GETTIM2:	.equ	$ff27
59
+_SETTIM2:	.equ	$ff28
60
+_NAMESTS:	.equ	$ff29
61
+_GETDATE:	.equ	$ff2a
62
+_SETDATE:	.equ	$ff2b
63
+_GETTIME:	.equ	$ff2c
64
+_SETTIME:	.equ	$ff2d
65
+_VERIFY:	.equ	$ff2e
66
+_DUP0:		.equ	$ff2f
67
+_VERNUM:	.equ	$ff30
68
+_KEEPPR:	.equ	$ff31
69
+_GETDPB:	.equ	$ff32
70
+_BREAKCK:	.equ	$ff33
71
+_DRVXCHG:	.equ	$ff34
72
+_INTVCG:	.equ	$ff35
73
+_DSKFRE:	.equ	$ff36
74
+_NAMECK:	.equ	$ff37
75
+_MKDIR:		.equ	$ff39
76
+_RMDIR:		.equ	$ff3a
77
+_CHDIR:		.equ	$ff3b
78
+_CREATE:	.equ	$ff3c
79
+_OPEN:		.equ	$ff3d
80
+_CLOSE:		.equ	$ff3e
81
+_READ:		.equ	$ff3f
82
+_WRITE:		.equ	$ff40
83
+_DELETE:	.equ	$ff41
84
+_SEEK:		.equ	$ff42
85
+_CHMOD:		.equ	$ff43
86
+_IOCTRL:	.equ	$ff44
87
+_DUP:		.equ	$ff45
88
+_DUP2:		.equ	$ff46
89
+_CURDIR:	.equ	$ff47
90
+_MALLOC:	.equ	$ff48
91
+_MFREE:		.equ	$ff49
92
+_SETBLOCK:	.equ	$ff4a
93
+_EXEC:		.equ	$ff4b
94
+_EXIT2:		.equ	$ff4c
95
+_WAIT:		.equ	$ff4d
96
+_FILES:		.equ	$ff4e
97
+_NFILES:	.equ	$ff4f
98
+
99
+_V2_SETPSP:	.equ	$ff50
100
+_V2_SETPDB:	.equ	$ff50			;=_V2_SETPSP
101
+_V2_GETPSP:	.equ	$ff51
102
+_V2_GETPDB:	.equ	$ff51			;=_V2_GETPSP
103
+_V2_SETENV:	.equ	$ff52
104
+_V2_GETENV:	.equ	$ff53
105
+_V2_VERIFYG:	.equ	$ff54
106
+_V2_COMMON:	.equ	$ff55
107
+_V2_RENAME:	.equ	$ff56
108
+_V2_FILEDATE:	.equ	$ff57
109
+_V2_MALLOC2:	.equ	$ff58
110
+_V2_MAKETMP:	.equ	$ff5a
111
+_V2_NEWFILE:	.equ	$ff5b
112
+_V2_LOCK:	.equ	$ff5c
113
+_V2_ASSIGN:	.equ	$ff5f
114
+
115
+		.ifndef	_V2_MALLOC3
116
+_V2_MALLOC3:	.equ	$ff60			;060turbo.sys
117
+_V2_SETBLOCK2:	.equ	$ff61			;�V
118
+_V2_MALLOC4:	.equ	$ff62			;�V
119
+_V2_S_MALLOC2:	.equ	$ff63			;�V
120
+		.endif
121
+
122
+_V2_FFLUSH_SET:	.equ	$ff7a
123
+_V2_OS_PATCH:	.equ	$ff7b
124
+_V2_GETFCB:	.equ	$ff7c
125
+_V2_GET_FCB_ADR:.equ	$ff7c			;=_V2_GETFCB
126
+_V2_S_MALLOC:	.equ	$ff7d
127
+_V2_S_MFREE:	.equ	$ff7e
128
+_V2_S_PROCESS:	.equ	$ff7f
129
+
130
+_SETPSP:	.equ	$ff80
131
+_SETPDB:	.equ	$ff80			;=_SETPSP
132
+_GETPSP:	.equ	$ff81
133
+_GETPDB:	.equ	$ff81			;=_GETPSP
134
+_SETENV:	.equ	$ff82
135
+_GETENV:	.equ	$ff83
136
+_VERIFYG:	.equ	$ff84
137
+_COMMON:	.equ	$ff85
138
+_RENAME:	.equ	$ff86
139
+_FILEDATE:	.equ	$ff87
140
+_MALLOC2:	.equ	$ff88
141
+_MAKETMP:	.equ	$ff8a
142
+_NEWFILE:	.equ	$ff8b
143
+_LOCK:		.equ	$ff8c
144
+_ASSIGN:	.equ	$ff8f
145
+
146
+		.ifndef	_MALLOC3
147
+_MALLOC3:	.equ	$ff90			;060turbo.sys
148
+_SETBLOCK2:	.equ	$ff91			;�V
149
+_MALLOC4:	.equ	$ff92			;�V
150
+_S_MALLOC2:	.equ	$ff93			;�V
151
+		.endif
152
+
153
+_FFLUSH_SET:	.equ	$ffaa
154
+_OS_PATCH:	.equ	$ffab
155
+_GETFCB:	.equ	$ffac
156
+_GET_FCB_ADR:	.equ	$ffac			;=_GETFCB
157
+_S_MALLOC:	.equ	$ffad
158
+_S_MFREE:	.equ	$ffae
159
+_S_PROCESS:	.equ	$ffaf
160
+
161
+		.ifndef	_TWON
162
+_TWON:		.equ	$ffb0			;(v)twentyone.sys
163
+		.endif
164
+
165
+		.ifndef	_MVDIR
166
+_MVDIR:		.equ	$ffb1			;dos_mvdir.r
167
+		.endif
168
+
169
+		.ifndef	_VMALLOC
170
+_VMALLOC:	.equ	$ffe0			;swapper.sys
171
+_VMFREE:	.equ	$ffe1			;�V
172
+_VMALLOC2:	.equ	$ffe2			;�V
173
+_VSETBLOCK:	.equ	$ffe3			;�V
174
+		.endif
175
+		.ifndef	_VEXEC
176
+_VEXEC:		.equ	$ffe4			;vmexec.sys
177
+		.endif
178
+
179
+_EXITVC:	.equ	$fff0			;not DOS Call
180
+_CTRLVC:	.equ	$fff1			;�V
181
+_ERRJVC:	.equ	$fff2			;�V
182
+
183
+_DISKRED:	.equ	$fff3
184
+_DISKWRT:	.equ	$fff4
185
+_INDOSFLG:	.equ	$fff5
186
+_SUPER_JSR:	.equ	$fff6
187
+_BUS_ERR:	.equ	$fff7
188
+
189
+_OPEN_PR:	.equ	$fff8
190
+_KILL_PR:	.equ	$fff9
191
+_GET_PR:	.equ	$fffa
192
+_SUSPEND_PR:	.equ	$fffb
193
+_SUSPEND:	.equ	$fffb			;=_SUSPEND_PR
194
+_SLEEP_PR:	.equ	$fffc
195
+_SEND_PR:	.equ	$fffd
196
+_TIME_PR:	.equ	$fffe
197
+_CHANGE_PR:	.equ	$ffff
198
+
199
+
200
+* End of File --------------------------------- *
201
+
202
+		.endif
203
+
204
+		.list

+ 183
- 0
include/fefunc.mac View File

@@ -0,0 +1,183 @@
1
+		.nlist
2
+
3
+*		fefunc.mac
4
+*			RUKA assembler macro for X680x0/Human68k(v3)
5
+*			version 1.15 1999/05/16 Tachibana Eririn.
6
+
7
+		.ifndef	__fefunc_mac__
8
+			__fefunc_mac__:=1
9
+
10
+
11
+* Macro --------------------------------------- *
12
+
13
+FPACK:		.macro	callno
14
+		.dc	callno
15
+		.endm
16
+
17
+
18
+* FEfunc Call Number -------------------------- *
19
+
20
+__LMUL:		.equ	$fe00
21
+__LDIV:		.equ	$fe01
22
+__LMOD:		.equ	$fe02
23
+__UMUL:		.equ	$fe04
24
+__UDIV:		.equ	$fe05
25
+__UMOD:		.equ	$fe06
26
+__IMUL:		.equ	$fe08
27
+__IDIV:		.equ	$fe09
28
+__RANDOMIZE:	.equ	$fe0c
29
+__SRAND:	.equ	$fe0d
30
+__RAND:		.equ	$fe0e
31
+
32
+__STOL:		.equ	$fe10
33
+__LTOS:		.equ	$fe11
34
+__STOH:		.equ	$fe12
35
+__HTOS:		.equ	$fe13
36
+__STOO:		.equ	$fe14
37
+__OTOS:		.equ	$fe15
38
+__STOB:		.equ	$fe16
39
+__BTOS:		.equ	$fe17
40
+__IUSING:	.equ	$fe18
41
+__LTOD:		.equ	$fe1a
42
+__DTOL:		.equ	$fe1b
43
+__LTOF:		.equ	$fe1c
44
+__FTOL:		.equ	$fe1d
45
+__FTOD:		.equ	$fe1e
46
+__DTOF:		.equ	$fe1f
47
+
48
+__VAL:		.equ	$fe20
49
+__USING:	.equ	$fe21
50
+__STOD:		.equ	$fe22
51
+__DTOS:		.equ	$fe23
52
+__ECVT:		.equ	$fe24
53
+__FCVT:		.equ	$fe25
54
+__GCVT:		.equ	$fe26
55
+__DTST:		.equ	$fe28
56
+__DCMP:		.equ	$fe29
57
+__DNEG:		.equ	$fe2a
58
+__DADD:		.equ	$fe2b
59
+__DSUB:		.equ	$fe2c
60
+__DMUL:		.equ	$fe2d
61
+__DDIV:		.equ	$fe2e
62
+__DMOD:		.equ	$fe2f
63
+__DABS:		.equ	$fe30
64
+__DCEIL:	.equ	$fe31
65
+__DFIX:		.equ	$fe32
66
+__DFLOOR:	.equ	$fe33
67
+__DFRAC:	.equ	$fe34
68
+__DSGN:		.equ	$fe35
69
+__SIN:		.equ	$fe36
70
+__COS:		.equ	$fe37
71
+__TAN:		.equ	$fe38
72
+__ATAN:		.equ	$fe39
73
+__LOG:		.equ	$fe3a
74
+__EXP:		.equ	$fe3b
75
+__SQR:		.equ	$fe3c
76
+__PI:		.equ	$fe3d
77
+__NPI:		.equ	$fe3e
78
+__POWER:	.equ	$fe3f
79
+__RND:		.equ	$fe40
80
+__SINH:		.equ	$fe41
81
+__COSH:		.equ	$fe42
82
+__TANH:		.equ	$fe43
83
+__ATANH:	.equ	$fe44
84
+__ASIN:		.equ	$fe45
85
+__ACOS:		.equ	$fe46
86
+__LOG10:	.equ	$fe47
87
+__LOG2:		.equ	$fe48
88
+__DFREXP:	.equ	$fe49
89
+__DLDEXP:	.equ	$fe4a
90
+__DADDONE:	.equ	$fe4b
91
+__DSUBONE:	.equ	$fe4c
92
+__DDIVTWO:	.equ	$fe4d
93
+__DIEECNV:	.equ	$fe4e
94
+__IEEDCNV:	.equ	$fe4f
95
+
96
+__FVAL:		.equ	$fe50
97
+__FUSING:	.equ	$fe51
98
+__STOF:		.equ	$fe52
99
+__FTOS:		.equ	$fe53
100
+__FECVT:	.equ	$fe54
101
+__FFCVT:	.equ	$fe55
102
+__FGCVT:	.equ	$fe56
103
+__FTST:		.equ	$fe58
104
+__FCMP:		.equ	$fe59
105
+__FNEG:		.equ	$fe5a
106
+__FADD:		.equ	$fe5b
107
+__FSUB:		.equ	$fe5c
108
+__FMUL:		.equ	$fe5d
109
+__FDIV:		.equ	$fe5e
110
+__FMOD:		.equ	$fe5f
111
+__FABS:		.equ	$fe60
112
+__FCEIL:	.equ	$fe61
113
+__FFIX:		.equ	$fe62
114
+__FFLOOR:	.equ	$fe63
115
+__FFRAC:	.equ	$fe64
116
+__FSGN:		.equ	$fe65
117
+__FSIN:		.equ	$fe66
118
+__FCOS:		.equ	$fe67
119
+__FTAN:		.equ	$fe68
120
+__FATAN:	.equ	$fe69
121
+__FLOG:		.equ	$fe6a
122
+__FEXP:		.equ	$fe6b
123
+__FSQR:		.equ	$fe6c
124
+__FPI:		.equ	$fe6d
125
+__FNPI:		.equ	$fe6e
126
+__FPOWER:	.equ	$fe6f
127
+__FRND:		.equ	$fe70
128
+__FSINH:	.equ	$fe71
129
+__FCOSH:	.equ	$fe72
130
+__FTANH:	.equ	$fe73
131
+__FATANH:	.equ	$fe74
132
+__FASIN:	.equ	$fe75
133
+__FACOS:	.equ	$fe76
134
+__FLOG10:	.equ	$fe77
135
+__FLOG2:	.equ	$fe78
136
+__FFREXP:	.equ	$fe79
137
+__FLDEXP:	.equ	$fe7a
138
+__FADDONE:	.equ	$fe7b
139
+__FSUBONE:	.equ	$fe7c
140
+__FDIVTWO:	.equ	$fe7d
141
+__FIEECNV:	.equ	$fe7e
142
+__IEEFCNV:	.equ	$fe7f
143
+
144
+__CLMUL:	.equ	$fee0
145
+__CLDIV:	.equ	$fee1
146
+__CLMOD:	.equ	$fee2
147
+__CUMUL:	.equ	$fee3
148
+__CUDIV:	.equ	$fee4
149
+__CUMOD:	.equ	$fee5
150
+__CLTOD:	.equ	$fee6
151
+__CDTOL:	.equ	$fee7
152
+__CLTOF:	.equ	$fee8
153
+__CFTOL:	.equ	$fee9
154
+__CFTOD:	.equ	$feea
155
+__CDTOF:	.equ	$feeb
156
+__CDCMP:	.equ	$feec
157
+__CDADD:	.equ	$feed
158
+__CDSUB:	.equ	$feee
159
+__CDMUL:	.equ	$feef
160
+__CDDIV:	.equ	$fef0
161
+__CDMOD:	.equ	$fef1
162
+__CFCMP:	.equ	$fef2
163
+__CFADD:	.equ	$fef3
164
+__CFSUB:	.equ	$fef4
165
+__CFMUL:	.equ	$fef5
166
+__CFDIV:	.equ	$fef6
167
+__CFMOD:	.equ	$fef7
168
+__CDTST:	.equ	$fef8
169
+__CFTST:	.equ	$fef9
170
+__CDINC:	.equ	$fefa
171
+__CFINC:	.equ	$fefb
172
+__CDDEC:	.equ	$fefc
173
+__CFDEC:	.equ	$fefd
174
+
175
+__FEVARG:	.equ	$fefe
176
+__FEVECS:	.equ	$feff
177
+
178
+
179
+* End of File --------------------------------- *
180
+
181
+		.endif
182
+
183
+		.list

+ 254
- 0
include/iocscall.mac View File

@@ -0,0 +1,254 @@
1
+		.nlist
2
+
3
+*		iocscall.mac
4
+*			RUKA assembler macro for X680x0/Human68k(v3)
5
+*			version 1.15 1999/05/16 Tachibana Eririn.
6
+
7
+		.ifndef	__iocscall_mac__
8
+			__iocscall_mac__:=1
9
+
10
+
11
+* Macro --------------------------------------- *
12
+
13
+IOCS:		.macro	callno
14
+		moveq	#callno,d0
15
+		trap	#15
16
+		.endm
17
+
18
+
19
+* IOCS Call Number ---------------------------- *
20
+
21
+_B_KEYINP:	.equ	$00
22
+_B_KEYSNS:	.equ	$01
23
+_B_SFTSNS:	.equ	$02
24
+_KEY_INIT:	.equ	$03
25
+_BITSNS:	.equ	$04
26
+_SKEYSET:	.equ	$05
27
+_LEDCTRL:	.equ	$06
28
+_LEDSET:	.equ	$07
29
+_KEYDLY:	.equ	$08
30
+_KEYREP:	.equ	$09
31
+_OPT2EN:	.equ	$0a
32
+_OPT2DIS:	.equ	$0b
33
+_TVCTRL:	.equ	$0c
34
+_LEDMOD:	.equ	$0d
35
+_TGUSEMD:	.equ	$0e
36
+_DEFCHR:	.equ	$0f
37
+_CRTMOD:	.equ	$10
38
+_CONTRAST:	.equ	$11
39
+_HSVTORGB:	.equ	$12
40
+_TPALET:	.equ	$13
41
+_TPALET2:	.equ	$14
42
+_TCOLOR:	.equ	$15
43
+_FNTADR:	.equ	$16
44
+_VRAMGET:	.equ	$17
45
+_VRAMPUT:	.equ	$18
46
+_FNTGET:	.equ	$19
47
+_TEXTGET:	.equ	$1a
48
+_TEXTPUT:	.equ	$1b
49
+_CLIPPUT:	.equ	$1c
50
+_SCROLL:	.equ	$1d
51
+_B_CURON:	.equ	$1e
52
+_B_CUROFF:	.equ	$1f
53
+_B_PUTC:	.equ	$20
54
+_B_PRINT:	.equ	$21
55
+_B_COLOR:	.equ	$22
56
+_B_LOCATE:	.equ	$23
57
+_B_DOWN_S:	.equ	$24
58
+_B_UP_S:	.equ	$25
59
+_B_UP:		.equ	$26
60
+_B_DOWN:	.equ	$27
61
+_B_RIGHT:	.equ	$28
62
+_B_LEFT:	.equ	$29
63
+_B_CLR_ST:	.equ	$2a
64
+_B_ERA_ST:	.equ	$2b
65
+_B_INS:		.equ	$2c
66
+_B_DEL:		.equ	$2d
67
+_B_CONSOL:	.equ	$2e
68
+_B_PUTMES:	.equ	$2f
69
+_SET232C:	.equ	$30
70
+_LOF232C:	.equ	$31
71
+_INP232C:	.equ	$32
72
+_ISNS232C:	.equ	$33
73
+_OSNS232C:	.equ	$34
74
+_OUT232C:	.equ	$35
75
+_SETMSADR:	.equ	$36
76
+_SETESCADR:	.equ	$37
77
+_SETFNTADR:	.equ	$38
78
+_SET_BEEP:	.equ	$39
79
+_SET_PRN:	.equ	$3a
80
+_JOYGET:	.equ	$3b
81
+_INIT_PRN:	.equ	$3c
82
+_SNSPRN:	.equ	$3d
83
+_OUTLPT:	.equ	$3e
84
+_OUTPRN:	.equ	$3f
85
+_B_SEEK:	.equ	$40
86
+_B_VERIFY:	.equ	$41
87
+_B_READDI:	.equ	$42
88
+_B_DSKINI:	.equ	$43
89
+_B_DRVSNS:	.equ	$44
90
+_B_WRITE:	.equ	$45
91
+_B_READ:	.equ	$46
92
+_B_RECALI:	.equ	$47
93
+_B_ASSIGN:	.equ	$48
94
+_B_WRITED:	.equ	$49
95
+_B_READID:	.equ	$4a
96
+_B_BADFMT:	.equ	$4b
97
+_B_READDL:	.equ	$4c
98
+_B_FORMAT:	.equ	$4d
99
+_B_DRVCHK:	.equ	$4e
100
+_B_EJECT:	.equ	$4f
101
+_DATEBCD:	.equ	$50
102
+_DATESET:	.equ	$51
103
+_TIMEBCD:	.equ	$52
104
+_TIMESET:	.equ	$53
105
+_DATEGET:	.equ	$54
106
+_DATEBIN:	.equ	$55
107
+_TIMEGET:	.equ	$56
108
+_TIMEBIN:	.equ	$57
109
+_DATECNV:	.equ	$58
110
+_TIMECNV:	.equ	$59
111
+_DATEASC:	.equ	$5a
112
+_TIMEASC:	.equ	$5b
113
+_DAYASC:	.equ	$5c
114
+_ALARMMOD:	.equ	$5d
115
+_ALARMSET:	.equ	$5e
116
+_ALARMGET:	.equ	$5f
117
+_ADPCMOUT:	.equ	$60
118
+_ADPCMINP:	.equ	$61
119
+_ADPCMAOT:	.equ	$62
120
+_ADPCMAIN:	.equ	$63
121
+_ADPCMLOT:	.equ	$64
122
+_ADPCMLIN:	.equ	$65
123
+_ADPCMSNS:	.equ	$66
124
+_ADPCMMOD:	.equ	$67
125
+_OPMSET:	.equ	$68
126
+_OPMSNS:	.equ	$69
127
+_OPMINTST:	.equ	$6a
128
+_TIMERDST:	.equ	$6b
129
+_TIMERAST:	.equ	$6c
130
+_VDISPST:	.equ	$6c			;=_TIMERAST
131
+_CRTCRAS:	.equ	$6d
132
+_HSYNCST:	.equ	$6e
133
+_PRNINTST:	.equ	$6f
134
+_MS_INIT:	.equ	$70
135
+_MS_CURON:	.equ	$71
136
+_MS_CUROF:	.equ	$72
137
+_MS_STAT:	.equ	$73
138
+_MS_GETDT:	.equ	$74
139
+_MS_CURGT:	.equ	$75
140
+_MS_CURST:	.equ	$76
141
+_MS_LIMIT:	.equ	$77
142
+_MS_OFFTM:	.equ	$78
143
+_MS_ONTM:	.equ	$79
144
+_MS_PATST:	.equ	$7a
145
+_MS_SEL:	.equ	$7b
146
+_MS_SEL2:	.equ	$7c
147
+_SKEY_MOD:	.equ	$7d
148
+_DENSNS:	.equ	$7e
149
+_ONTIME:	.equ	$7f
150
+_B_INTVCS:	.equ	$80
151
+_B_SUPER:	.equ	$81
152
+_B_BPEEK:	.equ	$82
153
+_B_WPEEK:	.equ	$83
154
+_B_LPEEK:	.equ	$84
155
+_B_MEMSTR:	.equ	$85
156
+_B_BPOKE:	.equ	$86
157
+_B_WPOKE:	.equ	$87
158
+_B_LPOKE:	.equ	$88
159
+_B_MEMSET:	.equ	$89
160
+_DMAMOVE:	.equ	$8a
161
+_DMAMOV_A:	.equ	$8b
162
+_DMAMOV_L:	.equ	$8c
163
+_DMAMODE:	.equ	$8d
164
+_BOOTINF:	.equ	$8e
165
+_ROMVER:	.equ	$8f
166
+_G_CLR_ON:	.equ	$90
167
+_VC_R0:		.equ	$91
168
+_VC_R1:		.equ	$92
169
+_VC_R2:		.equ	$93
170
+_GPALET:	.equ	$94
171
+_GCOLOR:	.equ	$95
172
+_APAGE2:	.equ	$96
173
+_GVRAMGET:	.equ	$97
174
+_GVRAMPUT2:	.equ	$98
175
+_GVRAMPUT:	.equ	$99
176
+_GBITPUT:	.equ	$9a
177
+_GBITPUT2:	.equ	$9b
178
+_GBITPUT3:	.equ	$9c
179
+
180
+_SFTJIS:	.equ	$a0
181
+_JISSFT:	.equ	$a1
182
+_AKCONV:	.equ	$a2
183
+_RMACNV:	.equ	$a3
184
+_DAKJOB:	.equ	$a4
185
+_HANJOB:	.equ	$a5
186
+
187
+_SYS_STAT:	.equ	$ac
188
+_B_CONMOD:	.equ	$ad
189
+_OS_CURON:	.equ	$ae
190
+_OS_CUROF:	.equ	$af
191
+_DRAWMODE:	.equ	$b0
192
+_APAGE:		.equ	$b1
193
+_VPAGE:		.equ	$b2
194
+_HOME:		.equ	$b3
195
+_WINDOW:	.equ	$b4
196
+_WIPE:		.equ	$b5
197
+_PSET:		.equ	$b6
198
+_POINT:		.equ	$b7
199
+_LINE:		.equ	$b8
200
+_BOX:		.equ	$b9
201
+_FILL:		.equ	$ba
202
+_CIRCLE:	.equ	$bb
203
+_PAINT:		.equ	$bc
204
+_SYMBOL:	.equ	$bd
205
+_GETGRM:	.equ	$be
206
+_PUTGRM:	.equ	$bf
207
+_SP_INIT:	.equ	$c0
208
+_SP_ON:		.equ	$c1
209
+_SP_OFF:	.equ	$c2
210
+_SP_CGCLR:	.equ	$c3
211
+_SP_DEFCG:	.equ	$c4
212
+_SP_GTPCG:	.equ	$c5
213
+_SP_REGST:	.equ	$c6
214
+_SP_REGGT:	.equ	$c7
215
+_BGSCRLST:	.equ	$c8
216
+_BGSCRLGT:	.equ	$c9
217
+_BGCTRLST:	.equ	$ca
218
+_BGCTRLGT:	.equ	$cb
219
+_BGTEXTCL:	.equ	$cc
220
+_BGTEXTST:	.equ	$cd
221
+_BGTEXTGT:	.equ	$ce
222
+_SPALET:	.equ	$cf
223
+
224
+*_MACS:		.equ	$d0			;macsdrv.x
225
+*_MOON:		.equ	$d1			;moon.x(on macsdrv.x)
226
+
227
+_TXXLINE:	.equ	$d3
228
+_TXYLINE:	.equ	$d4
229
+_TXLINE:	.equ	$d5
230
+_TXBOX:		.equ	$d6
231
+_TXFILL:	.equ	$d7
232
+_TXREV:		.equ	$d8
233
+_TXRASCPY:	.equ	$df
234
+
235
+_OPMDRV:	.equ	$f0			;opmdrv.x
236
+_RSDRV:		.equ	$f1			;rsdrv.sys
237
+_A_JOYGET:	.equ	$f2			;ajoy.x
238
+_MUSICDRV:	.equ	$f3			;musicdrv.x
239
+_MERCURY:	.equ	$f4			;mercurydriver.sys
240
+_SCSIDRV:	.equ	$f5
241
+_HIMEM:		.equ	$f8			;himem.sys/ts16drv.x/060turbo.sys
242
+_TS6BGAG:	.equ	$f9			;ts6bgag.x
243
+_TS6BGAS:	.equ	$fa			;ts6bgas.x
244
+
245
+_ABORTRST:	.equ	$fd
246
+_IPLERR:	.equ	$fe
247
+_ABORTJOB:	.equ	$ff
248
+
249
+
250
+* End of File --------------------------------- *
251
+
252
+		.endif
253
+
254
+		.list

+ 1123
- 0
include/sxcall.mac
File diff suppressed because it is too large
View File


+ 56
- 0
labelfile.5 View File

@@ -0,0 +1,56 @@
1
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
2
+
3
+		ソースコードジェネレータ ラベルファイル書式
4
+
5
+────────────────────────────────────
6
+
7
+'*'から始まる行はコメント行.
8
+
9
+アドレス (空白) 属性文字列 [(空白) シンボル名] ... [(空白) *コメント]
10
+
11
+	アドレスは6桁の16進数で、頭に'$'・'0x'などは付かない.
12
+	シンボル名は空白で区切って複数記述できる.
13
+
14
+属性文字列
15
+	P	プログラム
16
+
17
+#	RB	相対オフセットテーブル(バイト) **未対応**
18
+	RW	〃		      (ワード)
19
+	RL	〃		      (ロングワード) [*]
20
+
21
+	DS	文字列データ
22
+	DB	バイトデータ
23
+	DW	ワードデータ
24
+	DL	ロングワードデータ
25
+	DZ	ロングワードテーブル [*]
26
+
27
+	DF	浮動小数点実数データ(単精度)
28
+	DD	〃		    (倍精度)
29
+	DX	〃		    (拡張精度)
30
+	DP	〃		    (パックドデシマル)
31
+
32
+	DU	サイズがない/分からないデータ
33
+
34
+	[*]印付きの属性は dis.x が出力することはなく、ユーザ指定のみ.
35
+	属性の最後が 'F' の場合は、絶対にその属性であることを示す.
36
+	dis.x が出力する属性文字列は全て大文字である. ユーザが属性を書き
37
+	換える場合、小文字で記述すればそこから解析を行う.
38
+
39
+シンボル名
40
+
41
+	実行ファイルのシンボルテーブルに含まれる、アドレスを現わすシンボ
42
+	ル名が全て出力される.
43
+	ラベルファイルを読み込ませた場合はシンボルテーブルに含まれるシン
44
+	ボル名は無視されるので、書き換えたり削除・追加することが出来る.
45
+
46
+	シンボル名が出力されたラベルは外部定義であるが、その行のシンボル
47
+	名を全て削除した場合、そのラベルは内部定義として扱われる.
48
+	シンボル名がないラベルにシンボル名を記述しても、外部定義にはなら
49
+	ない.
50
+
51
+	ソースファイルのラベル行には全てのシンボル名が出力されるが、命令
52
+	中のオペランドとして使用されるのは先頭に記述されたシンボル名だけ
53
+	である.
54
+
55
+
56
+────────────────────────────────────

+ 148
- 0
src/Makefile View File

@@ -0,0 +1,148 @@
1
+# Makefile for dis (Human68k)
2
+
3
+.phony: all clean index install tags
4
+
5
+PROGRAM		= dis.x
6
+
7
+YACC		= bison
8
+AS		= has
9
+CC		= gcc2
10
+LD		= $(CC)
11
+LDFLAGS		= -Wl,-d_STACK_SIZE=0x40000
12
+#		  -Wl,-x
13
+
14
+FUNCCFLAGS	= -DHAVE_STRTOX -DHAVE_STRUPR -DHAVE_JCTYPE_H
15
+#		  -DHAVE_STRTOX
16
+#		  -DHAVE_STRUPR
17
+#		  -DHAVE_JCTYPE_H
18
+#		  -DNO_PRINTF_LDBL
19
+
20
+DEFAULTCFLAGS	= -Wall -cc1-stack=600000
21
+#		  -DQUICK_YES_NO
22
+#		  -DREAD_FEFUNC_H
23
+
24
+# gcc 1.xx —p
25
+#OPTCFLAGS	= -O -fstrength-reduce -fomit-frame-pointer -fcombine-regs \
26
+#		  -fforce-mem -fforce-addr -finline-functions
27
+
28
+# gcc 2.x.x —p
29
+OPTCFLAGS	= -O2 -fforce-addr
30
+
31
+CFLAGS = $(DEFAULTCFLAGS) $(FUNCCFLAGS) $(OPTCFLAGS)
32
+
33
+#LIBS		= -lExtmalloc -lh68unix -lhupair	# -lprof
34
+#LIBS		= -lExtmalloc -lioctlb
35
+LIBS		= -lld -lhdi -lhmem
36
+
37
+%.o: %.y
38
+	$(YACC.y) $< -o $*.c
39
+	$(COMPILE.c) $*.c $(OUTPUT_OPTION)
40
+
41
+HDRS		= analyze.h \
42
+		  disasm.h \
43
+		  estruct.h \
44
+		  etc.h \
45
+		  fpconv.h \
46
+		  generate.h \
47
+		  getopt.h \
48
+		  global.h \
49
+		  hex.h \
50
+		  include.h \
51
+		  label.h \
52
+		  labelfile.h \
53
+		  offset.h \
54
+		  option.h \
55
+		  output.h \
56
+		  symbol.h \
57
+		  table.h
58
+
59
+SRCS		= analyze.c \
60
+		  analyze2.c \
61
+		  disasm.c \
62
+		  disasmonly.c \
63
+		  etc.c \
64
+		  eval.y \
65
+		  fpconv.c \
66
+		  generate.c \
67
+		  getopt.c \
68
+		  hex.c \
69
+		  include.c \
70
+		  label.c \
71
+		  labelcheck.c \
72
+		  labelfile.c \
73
+		  main.c \
74
+		  offset.c \
75
+		  option.c \
76
+		  output.c \
77
+		  search.c \
78
+		  symbol.c \
79
+		  table.c \
80
+		  version.c
81
+
82
+OBJS		= $(addsuffix .o,$(basename $(SRCS)))
83
+
84
+all: $(PROGRAM)
85
+
86
+$(PROGRAM): $(OBJS)
87
+	$(LD) $(LDFLAGS) $(LIBS) $(OBJS) -o $(PROGRAM)
88
+
89
+install: $(PROGRAM)
90
+	install -s $(PROGRAM) /usr/local/bin
91
+
92
+clean:
93
+	rm -f $(PROGRAM) $(OBJS) eval.c
94
+
95
+index:
96
+	ctags -wx $(HDRS) $(SRCS)
97
+
98
+tags: $(HDRS) $(SRCS)
99
+	etags -et $(HDRS) $(SRCS)
100
+
101
+###
102
+
103
+analyze.o:	estruct.h global.h label.h analyze.h disasm.h offset.h etc.h
104
+analyze2.o:	estruct.h global.h label.h analyze.h disasm.h offset.h etc.h
105
+disasm.o:	estruct.h global.h disasm.h fpconv.h hex.h etc.h
106
+disasmonly.o:	estruct.h global.h disasm.h generate.h output.h hex.h etc.h
107
+etc.o:		estruct.h global.h label.h offset.h symbol.h etc.h
108
+eval.o:		estruct.h global.h label.h offset.h generate.h hex.h etc.h \
109
+		labelfile.h table.h disasm.h fpconv.h
110
+fpconv.o:	estruct.h fpconv.h hex.h
111
+generate.o:	estruct.h disasm.h generate.h global.h fpconv.h hex.h etc.h \
112
+		include.h label.h offset.h output.h symbol.h table.h
113
+getopt.o:	getopt.h
114
+hex.o:		estruct.h hex.h
115
+include.o:	estruct.h disasm.h generate.h global.h include.h etc.h
116
+label.o:	estruct.h global.h label.h etc.h avl/avl.c
117
+labelcheck.o:	estruct.h global.h label.h disasm.h analyze.h offset.h etc.h
118
+labelfile.o:	estruct.h global.h label.h symbol.h analyze.h etc.h
119
+main.o:		estruct.h global.h label.h symbol.h analyze.h etc.h \
120
+		disasm.h generate.h include.h labelfile.h offset.h option.h table.h
121
+offset.o:	estruct.h global.h offset.h etc.h
122
+option.o:	estruct.h global.h generate.h disasm.h analyze.h hex.h etc.h \
123
+		fpconv.h getopt.h include.h option.h output.h symbol.h
124
+output.o:	estruct.h global.h disasm.h output.h generate.h hex.h etc.h
125
+search.o:	estruct.h global.h label.h offset.h etc.h
126
+symbol.o:	estruct.h global.h symbol.h output.h label.h hex.h etc.h
127
+table.o:	estruct.h global.h label.h labelfile.h table.h offset.h hex.h etc.h
128
+version.o:
129
+
130
+analyze.h:	estruct.h label.h
131
+disasm.h:	estruct.h
132
+estruct.h:
133
+etc.h:		global.h
134
+fpconv.h:
135
+generate.h:	estruct.h
136
+getopt.h:
137
+global.h:	estruct.h
138
+hex.h:		global.h
139
+include.h:
140
+label.h:
141
+labelfile.h:
142
+offset.h:
143
+option.h:
144
+output.h:
145
+symbol.h:
146
+table.h:	etc.h
147
+
148
+# EOF

+ 728
- 0
src/analyze.c View File

@@ -0,0 +1,728 @@
1
+/* $Id: analyze.c,v 1.1 1996/11/07 08:04:58 ryo freeze $
2
+ *
3
+ *	ソースコードジェネレータ
4
+ *	自動解析モジュール
5
+ *	Copyright (C) 1989,1990 K.Abe, 1994 R.ShimiZu
6
+ *	All rights reserved.
7
+ *	Copyright (C) 1997-2010 Tachibana
8
+ *
9
+ */
10
+
11
+#include <stdio.h>
12
+#include <string.h>
13
+
14
+#ifdef	__HUMAN68K__
15
+#ifdef	__LIBC__
16
+#include <sys/xstart.h>
17
+#else
18
+extern void __volatile _stack_over (void);
19
+extern void *_SSTA;
20
+#endif
21
+#endif
22
+
23
+#include "analyze.h"
24
+#include "disasm.h"
25
+#include "estruct.h"
26
+#include "etc.h"	/* charout, peek[wl] */
27
+#include "global.h"
28
+#include "label.h"	/* regist_label etc. */
29
+#include "offset.h"	/* depend_address , nearadrs */
30
+
31
+
32
+USEOPTION	option_i;
33
+
34
+boolean		Reason_verbose;
35
+boolean		Arg_after_call = FALSE;
36
+
37
+
38
+/* private 関数プロトタイプ */
39
+private address	limitadrs (address);
40
+private boolean	branch_job (address, address, address, address,
41
+				analyze_mode, address);
42
+private void	regist_data (disasm*, operand*);
43
+private boolean	prolabel (address);
44
+private void	pcix (address, address);
45
+private void	unregist_data (operand*);
46
+
47
+
48
+/*
49
+	right_opecode()下請け.
50
+	アドレスに依存可能なオペランドが依存していれば
51
+	neardependを次の依存アドレスに進める.
52
+	依存不可能か、依存していなければそのまま.
53
+*/
54
+static INLINE address
55
+skip_depend_ea (address neardepend, disasm* code, operand* op)
56
+{
57
+    switch (op->ea) {
58
+	case AbLong:
59
+	    if (neardepend == op->eaadrs)
60
+		neardepend = nearadrs (neardepend + 1);
61
+	    break;
62
+	case IMMED:
63
+	    if (neardepend == op->eaadrs && code->size == LONGSIZE)
64
+		neardepend = nearadrs (neardepend + 1);
65
+	    break;
66
+	case AregIDXB:
67
+	    if (neardepend == op->eaadrs && op->exbd == 4)
68
+		neardepend = nearadrs (neardepend + 1);
69
+	    break;
70
+	case AregPOSTIDX:
71
+	case AregPREIDX:
72
+	    if (neardepend == op->eaadrs && op->exbd == 4)
73
+		neardepend = nearadrs (neardepend + 1);
74
+	case PCPOSTIDX: