Skip to content
This repository was archived by the owner on Feb 4, 2025. It is now read-only.

Commit 231c4c2

Browse files
committed
feat: add --makemcs option
1 parent 6cc822c commit 231c4c2

File tree

5 files changed

+53
-7
lines changed

5 files changed

+53
-7
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
# 変更履歴
22

3-
## 3.01+18-beta.1 - 2023-07-11
3+
## 3.01+18-beta.2 - 2023-07-11
44
* g2lkモードでのビルド(g2lk.r)を廃止し、通常モード(hlk.r)に統合。
55
実行ファイル名の先頭を'g2lk'(大文字小文字区別なし)にするとg2lkモードで動作する。
6+
* --makemcsオプションを追加。
67

78
## 3.01+17 - 2023-07-10
89
* 060turbo.sys v0.57のハイメモリ仕様(DOS \_MALLOC3)に対応。

hlkev.txt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -206,8 +206,8 @@ struprサブルーチンが終了しません。
206206
張子がなければ".map"を補完します(これを抑制する方法は今のところあり
207207
ません)。
208208

209-
) hlk -p foo (foo.o -> foo.x、foo.map)
210-
) hlk -apbar foo (foo.o -> foo、bar.map)
209+
: hlk -p foo (foo.o -> foo.x、foo.map)
210+
: hlk -apbar foo (foo.o -> foo、bar.map)
211211

212212

213213
・以下の変更はversion 3.01+3以降のものです。
@@ -266,7 +266,7 @@ struprサブルーチンが終了しません。
266266
強制的に作成します。特定のアドレスから実行されるバイナリを作成する場
267267
合は-bによるベースアドレスの指定が役に立つでしょう。
268268

269-
) hlk -rn -b0xed0100 -o sramprog.bin sramprog.o
269+
: hlk -rn -b0xed0100 -o sramprog.bin sramprog.o
270270

271271

272272
・以下の追加はversion 3.01+3以降のものです。
@@ -313,6 +313,15 @@ struprサブルーチンが終了しません。
313313
任意のディレクトリを指定できます。
314314

315315

316+
・以下の追加はversion 3.01+18以降のものです。
317+
318+
--makemcs ... MACS(.mcs)形式ファイルの作成
319+
320+
 MACS(.mcs)形式でファイルを出力します。拡張子が省略された場合は.mcs
321+
になります。-rオプションが自動的に設定されます。
322+
323+
324+
316325
━☆ 変更点(その他) ☆━━━━━━━━━━━━━━━━━━━━━━━━━
317326

318327
・以下の変更はversion 3.01+2以降のものです。

src/hlk.mac

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ OPT_AN_FLAG: .ds.b 1
177177

178178
EXEC_FILE_TYPE: .ds.b 1
179179
OPT_RN_FLAG: .ds.b 1
180+
MAKEMCS_FLAG: .ds.b 1
180181

181182
SLASH_CHAR: .ds.b 1
182183

src/main.s

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
PROGRAM: .reg 'HLK evolution'
44
VERSION: .reg '3.01'
5-
PATCHLEVEL: .reg '+18-beta.1'
5+
PATCHLEVEL: .reg '+18-beta.2'
66
PATCHDATE: .reg '2023-07-11'
77
PATCHAUTHOR: .reg 'TcbnErik'
88

@@ -1001,6 +1001,7 @@ long_opt_table:
10011001
.dc str_quiet-@b ,ana_opt_b550-@b
10021002
.dc str_verbose-@b ,ana_opt_b400-@b
10031003
.dc str_version-@b ,print_version-@b
1004+
.dc str_makemcs-@b, ,option_makemcs-@b
10041005
.dc 0
10051006

10061007

@@ -1276,6 +1277,11 @@ ana_opt_b600: st (TITLE_FLAG,a6)
12761277
ana_opt_b650: lea (NO_X_EXT_FLAG,a6),a4
12771278
bra ana_opt_check_an_rn
12781279

1280+
* --makemcs
1281+
option_makemcs:
1282+
st (MAKEMCS_FLAG,a6)
1283+
bra option_r_rtype
1284+
12791285
* -r / -rn (.r type exec file)
12801286
option_r_rtype:
12811287
lea (EXEC_FILE_TYPE,a6),a4
@@ -1693,7 +1699,10 @@ mk_exec_name_b2:
16931699
lea (NAMECK_Ext,a3),a0
16941700
tst.b (a0)
16951701
bne mk_exname_b3
1696-
@@: lea (ext_r,pc),a0
1702+
@@: lea (ext_mcs,pc),a0
1703+
tst.b (MAKEMCS_FLAG,a6)
1704+
bne mk_exname_b3
1705+
addq.l #ext_r-ext_mcs,a0
16971706
tst.b (EXEC_FILE_TYPE,a6)
16981707
bne mk_exname_b3 ;-aでも".r"は必ず付ける
16991708

@@ -1883,6 +1892,7 @@ usage_msg: .dc.b 'usege: hlk [switch] file [+file] ...',CRLF
18831892
.dc.b ' -h / --help 使用法表示',CRLF
18841893
.dc.b ' -z / --quiet -v/--verbose オプションを取り消す',CRLF
18851894
.dc.b ' -v / --verbose 詳細表示',CRLF
1895+
.dc.b ' --makemcs MACS(.mcs)形式ファイルの作成',CRLF
18861896
.dc.b ' --version バージョン表示',CRLF
18871897
.dc.b CRLF
18881898
.dc.b ' 環境変数 HLK の内容がコマンドラインの手前に挿入されます。',CRLF
@@ -1893,6 +1903,7 @@ str_help: .dc.b 'help',0
18931903
str_quiet: .dc.b 'quiet',0
18941904
str_verbose: .dc.b 'verbose',0
18951905
str_version: .dc.b 'version',0
1906+
str_makemcs: .dc.b 'makemcs',0
18961907

18971908
too_many_args: .dc.b '引数が多すぎます。',CRLF
18981909
.dc.b 0
@@ -1950,6 +1961,7 @@ env_g2lk: .dc.b 'G2LK',0
19501961
env_slash: .dc.b 'SLASH',0
19511962

19521963
ext_a: .dc.b '.a',0
1964+
ext_mcs: .dc.b '.mcs',0
19531965
ext_r: .dc.b '.r',0
19541966
ext_x: .dc.b '.x',0
19551967
ext_map: .dc.b '.map',0

src/make_exe.s

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -500,9 +500,27 @@ make_exe_r_no_check:
500500
cmp.l d0,d7
501501
bcs malloc_err
502502

503-
move.l (X_TextSize,a3),d1
503+
move.l (X_TextSize,a3),d1 ;ファイルに書き出すサイズとバッファ
504504
add.l (X_DataSize,a3),d1
505505
lea (X_HEADER_SIZE,a3),a3
506+
507+
tst.b (MAKEMCS_FLAG,a0)
508+
beq make_exe_r_notmcs
509+
510+
moveq #14,d0 ;MACS(.mcs)ファイル形式の検査
511+
cmp.l d0,d1
512+
bcs make_exe_err_mcs ;ファイルサイズが小さすぎる
513+
lea (a3),a1
514+
cmpi.l #'MACS',(a1)+
515+
bne @f
516+
cmpi.l #'DATA',(a1)+
517+
@@: bne make_exe_err_mcs
518+
addq.l #2,a1 ;データ形式バージョン($01_00)
519+
520+
move.l (X_BssSize-X_HEADER_SIZE,a3),d0
521+
add.l d1,d0 ;ファイルサイズを
522+
move.l d0,(a1) ;MACSファイルのヘッダ内に埋め込む
523+
make_exe_r_notmcs:
506524
bra make_exe_open
507525

508526
make_exe_x:
@@ -595,6 +613,9 @@ make_exe_err_ill_offset:
595613
make_exe_err_adr:
596614
pea (exec_adr_msg,pc) ;実行アドレスが先頭からではない
597615
bra @f
616+
make_exe_err_mcs:
617+
pea (not_mcs_msg,pc)
618+
bra @f
598619
@@:
599620
DOS _PRINT
600621
pea (workbuf+EXEC_NAME,pc)
@@ -4502,6 +4523,8 @@ ill_offset_msg: .dc.b '再配置対象が奇数アドレスにあります: ',0
45024523

45034524
exec_adr_msg: .dc.b '実行開始アドレスがファイル先頭ではありません: ',0
45044525

4526+
not_mcs_msg: .dc.b 'MACS形式ファイルではありません: ',0
4527+
45054528
unmatch_size: .dc.b 'roffsetサイズ不一致(?_?)!',CRLF,CRLF
45064529
.dc.b 0
45074530

0 commit comments

Comments
 (0)