[リストへもどる] [返信 ]  [新着記事] [最新50] [ワード検索] [過去ログ]

記事閲覧・返信


タイトル blta.asm (オプション付き改造版) ver0.30k
投稿日: 2012/01/04(水) 01:10
投稿者: konno
 番 号 47       コメント数 4

#kyo5724 から転載

VTDOS|C:\VZ\T>BLTA.COM ?
BLTA.COM file lister for Win32 DOS Ver0.30k 2012-01-02
usage BLTA opt filename
opt D or d Double quote
opt P or p full Path
opt F or f File name opt
opt H or h or ? Help usage

このように、最初の引数が動作のオプションで、何もつけなければ、Bll と同じ動作
オプションは複数同時指定できます。"-" や "/" は無視します。
第一引数に "f" を指定して半角スペース1個空け第二引数にファイル名を指定できます。

VTDOS|C:\VZ\T>BLTA.COM f blt*.*
BLT.000
BLT1.ASM
BLT1.COM
BLT1.EXE
BLT1.LST
BLT2.ASM
blt2.com
blt2.exe
blt2.map
BLTA.000
BLTA.ASM
BLTA.COM
blta.exe
BLTA.MAP

こんな感じになります。どうでしょうか。以下ソースです。

;-------------------------------------------------------------------------
;blta.asm (Long Fullpath BLT All for win32_DOS)
INCLUDE STDIO.H

CODE SEGMENT BYTE
ASSUME CS:CODE, DS:CODE, SS:CODE
org 80h
argc db ?
argv db 127 dup (?)
org 100h
;-----------------------------------------------------------------
START:
mov bx,80h ;↓ファイル名をASCIIZにする
add bl,[bx]
inc bx
mov [bx],byte ptr 0 ;↑ここまで

mov bx, offset argv
SWCHR: add bx,1
cmp byte ptr [bx],'/'
je SWCHR
cmp byte ptr [bx],'-'
je SWCHR
cmp byte ptr [bx],'D'
je OP_D
cmp byte ptr [bx],'d'
je OP_D
cmp byte ptr [bx],'P'
je OP_P
cmp byte ptr [bx],'p'
je OP_P
cmp byte ptr [bx],'F'
je OP_F
cmp byte ptr [bx],'f'
je OP_F
cmp byte ptr [bx],'?'
je USAGE
cmp byte ptr [bx],'H'
je USAGE
cmp byte ptr [bx],'h'
je USAGE
cmp byte ptr [bx],' ' ;↓ファイル名の先頭を求める
jne normal
add bx,1
mov FILE2,word ptr bx
jmp normal

OP_D: mov OPT_D,1
jmp SWCHR
OP_P: mov OPT_P,1
jmp SWCHR
OP_F: mov OPT_F,1
jmp SWCHR

USAGE: print help_usage
newline
retms
;-----------------------------------------------------------------
;get current disk
normal:
mov ah,19h
int 21h ;-> disk num in AL
add al,'A' ;num2char
mov BUFF_DP, byte ptr al
;get current directory (LFN)
mov dl,0
mov ax,7147h
mov si,offset BUFF_DF ;BUFF_DP+3
int 21h
cmp ax,7100h
je ERR
;check & flag set
cmp BUFF_DP[3],0
je FIND1
mov FLAG, byte ptr 1 ;if root 0, if not root 1 (=add '\')

;findfirst
FIND1: mov ax,714eh
mov dx,offset FILE1
cmp OPT_F,0
je FI0
mov word ptr dx,FILE2
FI0: call SET ;set cx, si, di
int 21h
cmp ax,7100h ;error check
je BYE
;print drive+dir
mov HAND, word ptr ax ;save handle num
cmp OPT_D,0
je FI_2
putchar '"'
FI_2: cmp OPT_P,0
je A1
mov bx,offset BUFF_DP
call PRI
cmp FLAG,0
je A1
putchar '\'
A1: ;print filename
mov bx,offset BUFF_F+2ch
call PRI
cmp OPT_D,0
je FI_3
putchar '"'
FI_3: newline
;findnext
FINDN:
mov bx,HAND
mov ax,714fh
call SET
int 21h
jc BYEBYE
;print drive+dir
cmp OPT_D,0
je FN_2
putchar '"'
FN_2:
cmp OPT_P,0
je B1
mov bx,offset BUFF_DP
call PRI
cmp FLAG,0
je B1
putchar '\'
;print filename
B1: mov bx,offset BUFF_F+2ch
call PRI
cmp OPT_D,0
je B2
putchar '"'
B2: newline
jmp FINDN

ERR: print ERR_MSG1
retms

BYE: print ERR_MSG2
BYEBYE:
mov bx,HAND ;HANDLE CLOSE
mov ax,71a1h
int 21h
retms

;--- subroutines ---

SET: mov cx,28h ;directory, volume 除く
mov si,1
mov di,offset BUFF_F
ret

PRI: cmp [bx],byte ptr 0
je FIN
putchar [bx]
inc bx
jmp PRI
FIN: ret

OPT_P db 0 ;full Path flag
OPT_F db 0 ;Filename opt flag
OPT_D db 0 ;double quote flag
FLAG db 0 ;if root 0, if not root 1 (=add '\')
HAND dw ? ;handle
FILE1 db '*.*',0
FILE2 dw 0 ;opt filename
BUFF_DP db ?,':\'
BUFF_DF db 300 dup (0)
BUFF_F db 320 dup (0)
ERR_MSG1 db 'Run on Windows','$'
ERR_MSG2 db 'File Not Found','$'
help_usage db 'BLTA.COM file lister for Win32 DOS Ver0.30k 2012-01-02',CR,LF
db ' usage BLTA opt filename',CR,LF
db ' opt D or d Double quote',CR,LF
db ' opt P or p full Path',CR,LF
db ' opt F or f File name opt',CR,LF
db ' opt H or h or ? Help usage',CR,LF
db '$'

pend

   - No.47 一括表示へ   -        pre


- 関連一覧ツリー (先頭の番号をクリックするとツリー全体を一括表示します)
47.blta.asm (オプション付き改造版) ver0.30k - konno konno 12/01/04-01:10
 ┣48.blta.asm ver0.31k - konno 12/01/04-02:09
 ┃┗49.blta.com ver0.31k の ish - konno 12/01/04-12:36
 ┣50.blta.asm ver0.40k all DOS版 - konno 12/01/04-20:42
 ┃┗51.blta.com ver0.40k all DOS版のish - konno 12/01/04-20:43
 ┗52.blta.asm ver0.41k all DOS版 バグ修正 - konno 12/01/08-02:03

- - 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)[引用無し]
おなまえ 
Eメール 
タイトル 
メッセージ auto soft pre(図表 ※折り返しません)
 参照先 
 暗証キー (英数字で8文字以内)
 プレビュー          

- 以下のフォームから自分の投稿記事を修正・削除することができます -
   処理   記事No   暗証キー
    [ページトップへ] [管理用]