home *** CD-ROM | disk | FTP | other *** search
/ FreeWare Collection 3 / FreeSoftwareCollection3pd199x-jp.img / kxc / ms_dos / extcons / s_del.asm < prev    next >
Assembly Source File  |  1980-01-02  |  5KB  |  344 lines

  1. ;================================================
  2. ;= タイトル:すーぱーDEL    ver 1.0    =
  3. ;=         programed by K.OKAMOTO :copy free   =
  4. ;================================================
  5. ;
  6. ;;参考文献:富士通FMRシリーズ 徹底解析マニュアル :BNN
  7. ;
  8.     ;
  9. CODE    SEGMENT
  10.     ASSUME    CS:CODE,DS:CODE        ;;タイニーモデル
  11.     ;
  12. F_NO    EQU    00H
  13. F_LEFT    EQU    01H
  14. F_RIGHT    EQU    02H
  15. F_TYPE    EQU    04H
  16.     ;
  17.     ;
  18. MOUSE    PROC    FAR        ;;マウス割り込みルーチン
  19.     ;
  20.     MOV    CL,3        ;;水平位置
  21.     SHR    BX,CL
  22.     INC    BX
  23.     MOV    CS:CUR_X,BL
  24.     ;
  25.     MOV    CL,4        ;;垂直位置
  26.     SHR    DX,CL
  27.     INC    DX
  28.     MOV    CS:CUR_Y,DL
  29.     ;
  30.     CMP    AX,0002H    ;;左ボタン押してる
  31.     JNE    TRG1
  32.     CALL    HIT
  33.     JMP    E_MOU
  34. TRG1:    ;
  35.     CMP    AX,0008H    ;;右ボタン押してる
  36.     JNE    TRG2
  37.     CALL    DIR
  38.     JMP    E_MOU
  39. TRG2:    ;
  40.     ;
  41. E_MOU:    RET
  42. MOUSE    ENDP
  43.     ;
  44.     ;
  45. HIT    PROC            ;;左クリックルーチン
  46.     ;
  47.     MOV    AX,CS            ;DS=CS
  48.     MOV    DS,AX
  49.     ;
  50. HEAD:    CALL    GET_CH
  51.     CMP    BX,0020H    ;;スペース
  52.     JNE    HEAD1
  53.     JMP    E_HIT
  54.     ;
  55. HEAD1:    CMP    BX,003EH    ;;'>'
  56.     JNE    HEAD2
  57.     JMP    E_HIT
  58.     ;
  59. HEAD2:    CMP    CUR_X,1        ;;この文字列の先頭を探す
  60.     JE    F_NAME
  61.     DEC    CUR_X
  62.     CALL    GET_CH
  63.     CMP    BX,0020H
  64.     JE    H_LOOK
  65.     CMP    BX,003EH    ;;'>'
  66.     JNE    HEAD2
  67.     JMP    E_HIT
  68.     ;
  69. H_LOOK:    INC    CUR_X
  70.     ;
  71. F_NAME:    MOV    AL,CUR_X
  72.     ;
  73.     AND    AL,0FH        ;;DIR /W で表示されたディレクトリを指すか?
  74.     CMP    AL,01H
  75.     JE    FIL_N
  76.     ;
  77.     JMP    E_HIT
  78.     ;
  79.     ;
  80.     ;;ファイル名か?(文字列の構造)
  81.     ;
  82. FIL_N:    MOV    CX,0        ;;文字数
  83.     MOV    DI,OFFSET F_BUFF
  84.     ;
  85. FIL_N1:    CALL    GET_CH        ;;ファイル名の文字の有る部分
  86.     MOV    [DI],BX        ;;xxxx____.xxx
  87.     ;            ;;^^^^
  88.     ;
  89.     INC    CX
  90.     INC    CUR_X
  91.     INC    DI
  92.     INC    DI
  93.     ;
  94.     CMP    BX,0020H    ;;スペースを見つけた
  95.     JZ    FIL_N2
  96.     ;
  97.     CMP    CX,9        ;;9文字つづくファイル名は無い
  98.     JZ    E_HIT
  99.     ;
  100.     JMP    FIL_N1
  101.     ;
  102. FIL_N2:    DEC    CX
  103.     DEC    CUR_X
  104.     DEC    DI
  105.     DEC    DI
  106.     ;
  107. FIL_S:    MOV    WORD PTR [DI],0    ;;終わりの記号
  108.     ;
  109. FIL_S1:    CALL    GET_CH        ;;ファイル名の文字の無い部分
  110.     ;            ;;xxxx____.xxx
  111.     ;            ;;    ^^^^^
  112.     INC    CUR_X
  113.     INC    CX
  114.     ;
  115.     CMP    BX,0020H    ;;スペースでなければならない
  116.     JNE    E_HIT
  117.     ;
  118.     CMP    CX,9        ;;もう拡張子?
  119.     JNE    FIL_S1
  120.     ;
  121.     ;
  122. FIL_E:    MOV    DI,OFFSET E_BUFF
  123.     MOV    CX,3
  124.     ;
  125. FIL_E1:    CALL    GET_CH        ;;拡張子の有る部分
  126.     MOV    [DI],BX        ;;xxxx____.xxx
  127.     ;            ;;         ^^^
  128.     INC    CUR_X
  129.     INC    DI
  130.     INC    DI
  131.     ;
  132.     LOOP    FIL_E1        ;;黙ってコピー
  133.     ;
  134.     MOV    WORD PTR [DI],0    ;;終わりの記号
  135.     ;
  136.     MOV    SI,OFFSET S_DEL
  137.     MOV    DI,OFFSET KBUFF
  138.     MOV    CX,0
  139.     ;
  140.     CALL    S_COPY
  141.     ;
  142.     MOV    SI,OFFSET F_BUFF
  143.     ;
  144.     CALL    S_COPY
  145.     ;
  146.     MOV    WORD PTR [DI],002EH
  147.     INC    DI
  148.     INC    DI
  149.     INC    CX
  150.     ;
  151.     MOV    SI,OFFSET E_BUFF
  152.     ;
  153.     CALL    S_COPY
  154.     ;
  155.     ;
  156.     MOV    WORD PTR [DI],000DH
  157.     INC    CX
  158.     ;
  159.     MOV    WORD PTR [DI+2],0000H
  160.     ;
  161.     CALL    JIS_CNV        ;バッファのJIS漢字をシフトJISにする。
  162.     ;
  163.     MOV    AX,0B01H
  164.     MOV    DI,OFFSET KBUFF
  165.     INT    90H
  166.     ;
  167. E_HIT:    RET
  168. HIT    ENDP
  169.     ;
  170.     ;
  171. S_COPY    PROC            ;MACRO
  172. S_COP:    MOV    AX,[SI]
  173.     MOV    [DI],AX
  174.     INC    CX
  175.     INC    SI
  176.     INC    SI
  177.     INC    DI
  178.     INC    DI
  179.     ;
  180.     CMP    AX,0
  181.     JNZ    S_COP
  182.     ;
  183.     DEC    CX
  184.     DEC    SI
  185.     DEC    SI
  186.     DEC    DI
  187.     DEC    DI
  188.     ;
  189. S_CO_E:    RET
  190.     ;
  191. S_COPY    ENDP
  192.     ;
  193.     ;
  194. JIS_CNV    PROC    ;バッファのJIS漢字をシフトJISにする。
  195.     ;
  196.     MOV    SI,OFFSET KBUFF
  197. JIS_1:    MOV    AX,[SI]
  198.     ;
  199.     CMP    AX,0    ;おしまい
  200.     JE    JIS_E
  201.     ;
  202.     TEST    AH,01H    ;半角
  203.     JZ    JIS_2
  204.     ;
  205.     MOV    DH,AL    ;漢字変換
  206.     ;
  207.     MOV    AX,[SI+2]
  208.     ;
  209.     CMP    AX,0    ;おしまい
  210.     JZ    JIS_E
  211.     ;
  212.     MOV    DL,AL    ;漢字変換
  213.     ;
  214.     MOV    AH,00H    ;漢字変換 "JIS" TO "SHIFT JIS"
  215.     INT    0AFH
  216.     ;
  217.     MOV    AH,0
  218.     MOV    AL,DH
  219.     MOV    [SI],AX        ;漢字変換
  220.     MOV    AL,DL
  221.     MOV    [SI+2],AX    ;漢字変換
  222.     ;
  223.     INC    SI
  224.     INC    SI
  225.     ;
  226. JIS_2:    INC    SI
  227.     INC    SI
  228.     ;
  229.     JMP    JIS_1
  230.     ;
  231. JIS_E:    RET    
  232.     ;
  233. JIS_CNV    ENDP
  234.     ;
  235.     ;
  236. DIR    PROC                ;"DIR /W"する 
  237.     ;
  238.     MOV    AX,CS            ;DS=CS
  239.     MOV    DS,AX
  240.     ;
  241.     MOV    AX,0B01H
  242.     MOV    CX,8
  243.     MOV    DI,OFFSET DIRBUFF
  244.     INT    90H
  245.     ;
  246. E_DIR:    RET
  247.     ;
  248. DIR    ENDP
  249.     ;
  250.     ;
  251. GET_CH    PROC
  252.     MOV    DH,CUR_Y    ;;1文字取り出しサブルーチン
  253.     MOV    DL,CUR_X    ;;DL=桁位置 DH=行位置
  254.     ;
  255.     MOV    AH,14H
  256.     INT    91H
  257.     ;
  258.     mov    ax,bx
  259.     MOV    CH_TY,BH    ;;bit0=0:半角 1:全角 bit1=0:1byte 1:2byte
  260.     MOV    CH_JIS,BL    ;;文字コード
  261.     ;
  262.     RET
  263. GET_CH    ENDP
  264.     ;
  265.     ;
  266.     ;
  267. CUR_X    DB    ?
  268. CUR_Y    DB    ?
  269. CH_TY    DB    ?
  270. CH_JIS    DB    ?
  271.     ;
  272. F_BUFF    DW    20H DUP (?)
  273. E_BUFF    DW    10H DUP (?)
  274. KBUFF    DW    40H DUP (?)
  275.     ;
  276.     ;
  277. DIRBUFF    DB    ' ',00H,'D',00H,'I',00H,'R',00H,' ',00H,'/',00H,'W',00H,0DH,00H
  278. S_DEL    DB    'D',00H,'E',00H,'L',00H,' ',00H,00H,00H
  279.     ;
  280.     DB    100H DUP (?)    ;<これがないと暴走する?魚田さん教えて下さい。
  281.     ;
  282.     ;
  283. LOADER    PROC    ;;ここ以降は常駐するとき捨てられる
  284.     ;
  285.     MOV    AX,CS            ;DS=CS
  286.     MOV    DS,AX
  287.     ;
  288.     MOV    AH,00H        ;;マウス動作開始
  289.     INT    99H
  290.     ;
  291.     MOV    AX,0200H    ;;マウスカーソル表示
  292.     INT    99H
  293.     ;
  294.     MOV    AH,0CH        ;;マウスカーソルのスピードを上げる
  295.     MOV    DH,04H        ;;水平
  296.     MOV    DL,04H        ;;垂直
  297.     INT    99H
  298.     ;
  299.     MOV    DX,OFFSET MSG    ;;タイトル表示
  300.     MOV    AH,09H
  301.     INT    21H
  302.     ;
  303.     MOV    AX,CS
  304.     MOV    DS,AX
  305.     ;
  306.     MOV    AH,0BH        ;;マウス割り込みルーチンの定義
  307.     MOV    DX,000AH
  308.     MOV    DI,OFFSET MOUSE
  309.     INT    99H
  310.     ;
  311.     MOV    DX,OFFSET LOADER    ;;常駐終了
  312.     SHR    DX,1
  313.     SHR    DX,1
  314.     SHR    DX,1
  315.     SHR    DX,1
  316.     INC    DX
  317.     MOV    AX,3100H
  318.     INT    21H
  319.     ;
  320. MSG    DB    01BH,'[31m','」'
  321.     DB    01BH,'[0;1m','  すーぱーDEL  ver 1.0 '
  322.     DB    01BH,'[31m','」'
  323.     DB    0DH,0AH
  324.     DB    01BH,'[31m',' K',01BH,'[0m','.OKAMOTO 1990  <<COPY FREE>>'
  325.     DB    0DH,0AH
  326.     DB    0DH,0AH
  327.     DB    01BH,'[1;31m',' <<警告>>'
  328.     DB    0DH,0AH
  329.     DB    01BH,'[0;33m'
  330.     DB    '現在よりマウスでクリックされたファイルを削除します。'
  331.     DB    0DH,0AH
  332.     DB    '非常に危険なプログラムなので、なんだかよくわからない'
  333.     DB    0DH,0AH
  334.     DB    '人は、いますぐTOWNSをリセットして下さい。'
  335.     DB    0DH,0AH
  336.     DB    '回復させるときはリセットするかEXTCONS2を必ずキーボード'
  337.     DB    'から打ち込んで下さい。'
  338.     DB    0DH,0AH,'$'
  339.     ;
  340. LOADER    ENDP
  341.     ;
  342. CODE    ENDS
  343.     END    LOADER
  344.