home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FreeWare Collection 3
/
FreeSoftwareCollection3pd199x-jp.img
/
kxc
/
ms_dos
/
extcons
/
s_del.asm
< prev
next >
Wrap
Assembly Source File
|
1980-01-02
|
5KB
|
344 lines
;================================================
;= タイトル:すーぱーDEL ver 1.0 =
;= programed by K.OKAMOTO :copy free =
;================================================
;
;;参考文献:富士通FMRシリーズ 徹底解析マニュアル :BNN
;
;
CODE SEGMENT
ASSUME CS:CODE,DS:CODE ;;タイニーモデル
;
F_NO EQU 00H
F_LEFT EQU 01H
F_RIGHT EQU 02H
F_TYPE EQU 04H
;
;
MOUSE PROC FAR ;;マウス割り込みルーチン
;
MOV CL,3 ;;水平位置
SHR BX,CL
INC BX
MOV CS:CUR_X,BL
;
MOV CL,4 ;;垂直位置
SHR DX,CL
INC DX
MOV CS:CUR_Y,DL
;
CMP AX,0002H ;;左ボタン押してる
JNE TRG1
CALL HIT
JMP E_MOU
TRG1: ;
CMP AX,0008H ;;右ボタン押してる
JNE TRG2
CALL DIR
JMP E_MOU
TRG2: ;
;
E_MOU: RET
MOUSE ENDP
;
;
HIT PROC ;;左クリックルーチン
;
MOV AX,CS ;DS=CS
MOV DS,AX
;
HEAD: CALL GET_CH
CMP BX,0020H ;;スペース
JNE HEAD1
JMP E_HIT
;
HEAD1: CMP BX,003EH ;;'>'
JNE HEAD2
JMP E_HIT
;
HEAD2: CMP CUR_X,1 ;;この文字列の先頭を探す
JE F_NAME
DEC CUR_X
CALL GET_CH
CMP BX,0020H
JE H_LOOK
CMP BX,003EH ;;'>'
JNE HEAD2
JMP E_HIT
;
H_LOOK: INC CUR_X
;
F_NAME: MOV AL,CUR_X
;
AND AL,0FH ;;DIR /W で表示されたディレクトリを指すか?
CMP AL,01H
JE FIL_N
;
JMP E_HIT
;
;
;;ファイル名か?(文字列の構造)
;
FIL_N: MOV CX,0 ;;文字数
MOV DI,OFFSET F_BUFF
;
FIL_N1: CALL GET_CH ;;ファイル名の文字の有る部分
MOV [DI],BX ;;xxxx____.xxx
; ;;^^^^
;
INC CX
INC CUR_X
INC DI
INC DI
;
CMP BX,0020H ;;スペースを見つけた
JZ FIL_N2
;
CMP CX,9 ;;9文字つづくファイル名は無い
JZ E_HIT
;
JMP FIL_N1
;
FIL_N2: DEC CX
DEC CUR_X
DEC DI
DEC DI
;
FIL_S: MOV WORD PTR [DI],0 ;;終わりの記号
;
FIL_S1: CALL GET_CH ;;ファイル名の文字の無い部分
; ;;xxxx____.xxx
; ;; ^^^^^
INC CUR_X
INC CX
;
CMP BX,0020H ;;スペースでなければならない
JNE E_HIT
;
CMP CX,9 ;;もう拡張子?
JNE FIL_S1
;
;
FIL_E: MOV DI,OFFSET E_BUFF
MOV CX,3
;
FIL_E1: CALL GET_CH ;;拡張子の有る部分
MOV [DI],BX ;;xxxx____.xxx
; ;; ^^^
INC CUR_X
INC DI
INC DI
;
LOOP FIL_E1 ;;黙ってコピー
;
MOV WORD PTR [DI],0 ;;終わりの記号
;
MOV SI,OFFSET S_DEL
MOV DI,OFFSET KBUFF
MOV CX,0
;
CALL S_COPY
;
MOV SI,OFFSET F_BUFF
;
CALL S_COPY
;
MOV WORD PTR [DI],002EH
INC DI
INC DI
INC CX
;
MOV SI,OFFSET E_BUFF
;
CALL S_COPY
;
;
MOV WORD PTR [DI],000DH
INC CX
;
MOV WORD PTR [DI+2],0000H
;
CALL JIS_CNV ;バッファのJIS漢字をシフトJISにする。
;
MOV AX,0B01H
MOV DI,OFFSET KBUFF
INT 90H
;
E_HIT: RET
HIT ENDP
;
;
S_COPY PROC ;MACRO
S_COP: MOV AX,[SI]
MOV [DI],AX
INC CX
INC SI
INC SI
INC DI
INC DI
;
CMP AX,0
JNZ S_COP
;
DEC CX
DEC SI
DEC SI
DEC DI
DEC DI
;
S_CO_E: RET
;
S_COPY ENDP
;
;
JIS_CNV PROC ;バッファのJIS漢字をシフトJISにする。
;
MOV SI,OFFSET KBUFF
JIS_1: MOV AX,[SI]
;
CMP AX,0 ;おしまい
JE JIS_E
;
TEST AH,01H ;半角
JZ JIS_2
;
MOV DH,AL ;漢字変換
;
MOV AX,[SI+2]
;
CMP AX,0 ;おしまい
JZ JIS_E
;
MOV DL,AL ;漢字変換
;
MOV AH,00H ;漢字変換 "JIS" TO "SHIFT JIS"
INT 0AFH
;
MOV AH,0
MOV AL,DH
MOV [SI],AX ;漢字変換
MOV AL,DL
MOV [SI+2],AX ;漢字変換
;
INC SI
INC SI
;
JIS_2: INC SI
INC SI
;
JMP JIS_1
;
JIS_E: RET
;
JIS_CNV ENDP
;
;
DIR PROC ;"DIR /W"する
;
MOV AX,CS ;DS=CS
MOV DS,AX
;
MOV AX,0B01H
MOV CX,8
MOV DI,OFFSET DIRBUFF
INT 90H
;
E_DIR: RET
;
DIR ENDP
;
;
GET_CH PROC
MOV DH,CUR_Y ;;1文字取り出しサブルーチン
MOV DL,CUR_X ;;DL=桁位置 DH=行位置
;
MOV AH,14H
INT 91H
;
mov ax,bx
MOV CH_TY,BH ;;bit0=0:半角 1:全角 bit1=0:1byte 1:2byte
MOV CH_JIS,BL ;;文字コード
;
RET
GET_CH ENDP
;
;
;
CUR_X DB ?
CUR_Y DB ?
CH_TY DB ?
CH_JIS DB ?
;
F_BUFF DW 20H DUP (?)
E_BUFF DW 10H DUP (?)
KBUFF DW 40H DUP (?)
;
;
DIRBUFF DB ' ',00H,'D',00H,'I',00H,'R',00H,' ',00H,'/',00H,'W',00H,0DH,00H
S_DEL DB 'D',00H,'E',00H,'L',00H,' ',00H,00H,00H
;
DB 100H DUP (?) ;<これがないと暴走する?魚田さん教えて下さい。
;
;
LOADER PROC ;;ここ以降は常駐するとき捨てられる
;
MOV AX,CS ;DS=CS
MOV DS,AX
;
MOV AH,00H ;;マウス動作開始
INT 99H
;
MOV AX,0200H ;;マウスカーソル表示
INT 99H
;
MOV AH,0CH ;;マウスカーソルのスピードを上げる
MOV DH,04H ;;水平
MOV DL,04H ;;垂直
INT 99H
;
MOV DX,OFFSET MSG ;;タイトル表示
MOV AH,09H
INT 21H
;
MOV AX,CS
MOV DS,AX
;
MOV AH,0BH ;;マウス割り込みルーチンの定義
MOV DX,000AH
MOV DI,OFFSET MOUSE
INT 99H
;
MOV DX,OFFSET LOADER ;;常駐終了
SHR DX,1
SHR DX,1
SHR DX,1
SHR DX,1
INC DX
MOV AX,3100H
INT 21H
;
MSG DB 01BH,'[31m','」'
DB 01BH,'[0;1m',' すーぱーDEL ver 1.0 '
DB 01BH,'[31m','」'
DB 0DH,0AH
DB 01BH,'[31m',' K',01BH,'[0m','.OKAMOTO 1990 <<COPY FREE>>'
DB 0DH,0AH
DB 0DH,0AH
DB 01BH,'[1;31m',' <<警告>>'
DB 0DH,0AH
DB 01BH,'[0;33m'
DB '現在よりマウスでクリックされたファイルを削除します。'
DB 0DH,0AH
DB '非常に危険なプログラムなので、なんだかよくわからない'
DB 0DH,0AH
DB '人は、いますぐTOWNSをリセットして下さい。'
DB 0DH,0AH
DB '回復させるときはリセットするかEXTCONS2を必ずキーボード'
DB 'から打ち込んで下さい。'
DB 0DH,0AH,'$'
;
LOADER ENDP
;
CODE ENDS
END LOADER