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

  1. ;================================================
  2. ;= タイトル:CONSOLE++    ver 2.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    CS:BUTTON,CH    ;;現在押されているボタン
  21.     ;
  22.     MOV    CL,3        ;;水平位置
  23.     SHR    BX,CL
  24.     INC    BX
  25.     MOV    CS:CUR_X,BL
  26.     ;
  27.     MOV    CL,4        ;;垂直位置
  28.     SHR    DX,CL
  29.     INC    DX
  30.     MOV    CS:CUR_Y,DL
  31.     ;
  32.     CMP    AX,0002H    ;;左ボタン押してる
  33.     JNE    TRG1
  34.     CALL    HIT
  35.     JMP    E_MOU
  36. TRG1:    ;
  37.     CMP    AX,0008H    ;;右ボタン押してる
  38.     JNE    TRG2
  39.     CALL    DIR
  40.     JMP    E_MOU
  41. TRG2:    ;
  42.     ;
  43. E_MOU:    RET
  44. MOUSE    ENDP
  45.     ;
  46.     ;
  47. HIT    PROC            ;;左クリックルーチン
  48.     ;
  49.     MOV    AX,CS            ;DS=CS
  50.     MOV    DS,AX
  51.     ;
  52.     CMP    BYTE PTR DRV_F,F_RIGHT    ;;右ドライブシフトがあった
  53.     JNE    HIT1
  54.     ;
  55.     TEST    BYTE PTR BUTTON,F_RIGHT    ;;右ボタンを押しっぱなしか?
  56.     JZ    HIT1
  57.     ;
  58.     CALL    DRVR        ;;右ドライブシフト
  59.     ;
  60.     JMP    E_HIT        ;;おしまい
  61.     ;
  62. HIT1:    CMP    CUR_X,1        ;;左端をクリックしたか?
  63.     JNE    HEAD
  64.     ;
  65.     CALL    GET_CH        ;;半角か?
  66.     TEST    BH,01H
  67.     JNZ    HEAD
  68.     ;
  69.     MOV    DRV,BL        ;;ドライブ名保存
  70.     ;
  71.     INC    CUR_X
  72.     ;
  73.     CALL    GET_CH        ;;ドライブ名か?
  74.     DEC    CUR_X
  75.     CMP    BX,003EH    ;;'>'
  76.     JNE    HEAD
  77.     ;
  78.     MOV    BYTE PTR DRV_F,F_LEFT
  79.     ;
  80.     CALL    DRVL        ;;左ドライブシフト
  81.     ;
  82.     JMP    E_HIT
  83.     ;
  84.     ;
  85. HEAD:    CALL    GET_CH
  86.     CMP    BX,0020H    ;;スペース
  87.     JNE    HEAD1
  88.     JMP    E_HIT
  89.     ;
  90. HEAD1:    CMP    BX,003EH    ;;'>'
  91.     JNE    HEAD2
  92.     JMP    E_HIT
  93.     ;
  94. HEAD2:    CMP    CUR_X,1        ;;この文字列の先頭を探す
  95.     JE    F_NAME
  96.     DEC    CUR_X
  97.     CALL    GET_CH
  98.     CMP    BX,0020H
  99.     JE    H_LOOK
  100.     CMP    BX,003EH    ;;'>'
  101.     JNE    HEAD2
  102.     JMP    E_HIT
  103.     ;
  104. H_LOOK:    INC    CUR_X
  105.     ;
  106. F_NAME:    MOV    AL,CUR_X
  107.     ;
  108.     AND    AL,0FH        ;;DIR /W で表示されたディレクトリを指すか?
  109.     CMP    AL,01H
  110.     JE    FIL_N
  111.     ;
  112.     JMP    E_HIT
  113.     ;
  114.     ;
  115.     ;;ファイル名か?(文字列の構造)
  116.     ;
  117. FIL_N:    MOV    CX,0        ;;文字数
  118.     MOV    DI,OFFSET F_BUFF
  119.     ;
  120. FIL_N1:    CALL    GET_CH        ;;ファイル名の文字の有る部分
  121.     MOV    [DI],BX        ;;xxxx____.xxx
  122.     ;            ;;^^^^
  123.     ;
  124.     INC    CX
  125.     INC    CUR_X
  126.     INC    DI
  127.     INC    DI
  128.     ;
  129.     CMP    BX,0020H    ;;スペースを見つけた
  130.     JZ    FIL_N2
  131.     ;
  132.     CMP    CX,9        ;;9文字つづくファイル名は無い
  133.     JZ    E_HIT
  134.     ;
  135.     JMP    FIL_N1
  136.     ;
  137. FIL_N2:    DEC    CX
  138.     DEC    CUR_X
  139.     DEC    DI
  140.     DEC    DI
  141.     ;
  142. FIL_S:    MOV    WORD PTR [DI],0    ;;終わりの記号
  143.     ;
  144. FIL_S1:    CALL    GET_CH        ;;ファイル名の文字の無い部分
  145.     ;            ;;xxxx____.xxx
  146.     ;            ;;    ^^^^^
  147.     INC    CUR_X
  148.     INC    CX
  149.     ;
  150.     CMP    BX,0020H    ;;スペースでなければならない
  151.     JNE    E_HIT
  152.     ;
  153.     CMP    CX,9        ;;もう拡張子?
  154.     JNE    FIL_S1
  155.     ;
  156.     ;
  157. FIL_E:    MOV    DI,OFFSET E_BUFF
  158.     MOV    CX,3
  159.     ;
  160. FIL_E1:    CALL    GET_CH        ;;拡張子の有る部分
  161.     MOV    [DI],BX        ;;xxxx____.xxx
  162.     ;            ;;         ^^^
  163.     INC    CUR_X
  164.     INC    DI
  165.     INC    DI
  166.     ;
  167.     LOOP    FIL_E1        ;;黙ってコピー
  168.     ;
  169.     MOV    WORD PTR [DI],0    ;;終わりの記号
  170.     ;
  171.     ;CALL    DEBUG        ;;得ることの出来たファイル名の表示
  172.     ;
  173.     MOV    DRV_F,F_NO    ;;ドライブシフトなし
  174.     ;
  175.     CALL    E_JOB        ;;拡張子ごとの処理をする
  176.     ;
  177.     MOV    WORD PTR [DI],000DH
  178.     INC    CX
  179.     ;
  180.     MOV    WORD PTR [DI+2],0000H
  181.     ;
  182.     CALL    JIS_CNV        ;バッファのJIS漢字をシフトJISにする。
  183.     ;
  184.     ;CALL    DEBUG2        ;;KEYバッファに送るはずの文字列を表示
  185.     ;
  186.     MOV    AX,0B01H
  187.     MOV    DI,OFFSET KBUFF
  188.     INT    90H
  189.     ;
  190. E_HIT:    RET
  191. HIT    ENDP
  192.     ;
  193.     ;
  194. E_JOB    PROC
  195.     MOV    SI,OFFSET E_BUFF    ;拡張子を調べる
  196.     MOV    AX,[SI]
  197.     INC    SI
  198.     INC    SI
  199.     CMP    AL,'E'        ;EXE/EXP
  200.     JE    K_EXE
  201.     CMP    AL,'C'        ;COM
  202.     JE    K_COM
  203.     CMP    AL,'B'        ;BAT
  204.     JE    K_BAT
  205.     CMP    AL,' '        ;' '
  206.     JE    K_CD
  207.     ;
  208.     JMP    J_TYPE        ;;その他:TYPE 処理
  209.     ;
  210. K_EXE:    CMP    BYTE PTR [SI],'X'
  211.     JNE    J_TYPE
  212.     INC    SI
  213.     INC    SI
  214.     ;
  215.     CMP    BYTE PTR [SI],'E'
  216.     JE    J_EXE        ;実行処理
  217.     ;
  218.     CMP    BYTE PTR [SI],'P'
  219.     JE    J_EXP        ;RUN386実行処理
  220.     ;
  221.     JMP    J_TYPE        ;TYPE 処理
  222.     ;
  223.     ;
  224. K_COM:    CMP    BYTE PTR [SI],'O'
  225.     JNE    J_TYPE
  226.     INC    SI
  227.     INC    SI
  228.     ;
  229.     CMP    BYTE PTR [SI],'M'
  230.     JE    J_EXE        ;実行処理
  231.     ;
  232.     JMP    J_TYPE        ;TYPE 処理
  233.     ;
  234. K_BAT:    CMP    BYTE PTR [SI],'A'
  235.     JNE    J_TYPE
  236.     INC    SI
  237.     INC    SI
  238.     ;
  239.     CMP    BYTE PTR [SI],'T'
  240.     JE    J_EXE        ;実行処理
  241.     ;
  242.     JMP    J_TYPE        ;TYPE 処理
  243.     ;
  244. K_CD:    CMP    BYTE PTR [SI],' '
  245.     JNE    J_TYPE
  246.     INC    SI
  247.     INC    SI
  248.     ;
  249.     CMP    BYTE PTR [SI],' '
  250.     JE    J_CD        ;ディレクトリ変更処理
  251.     ;
  252.     JMP    J_TYPE        ;TYPE 処理
  253.     ;
  254.     ;
  255.     ;
  256. J_EXE:    MOV    SI,OFFSET F_BUFF
  257.     MOV    DI,OFFSET KBUFF
  258.     MOV    CX,0
  259.     ;
  260.     CALL    S_COPY
  261.     ;
  262.     JMP    JOB_E
  263.     ;
  264.     ;
  265. J_CD:    MOV    SI,OFFSET S_CD
  266.     ;
  267.     JMP    J_EXP0
  268.     ;
  269. J_EXP:    MOV    SI,OFFSET S_386
  270.     ;
  271. J_EXP0:    MOV    DI,OFFSET KBUFF
  272.     MOV    CX,0
  273.     ;
  274.     CALL    S_COPY
  275.     ;
  276.     MOV    SI,OFFSET F_BUFF
  277.     ;
  278.     CALL    S_COPY
  279.     ;
  280.     JMP    JOB_E
  281.     ;
  282.     ;
  283. J_TYPE:    MOV    SI,OFFSET S_TYPE
  284.     MOV    DI,OFFSET KBUFF
  285.     MOV    CX,0
  286.     ;
  287.     CALL    S_COPY
  288.     ;
  289.     MOV    SI,OFFSET F_BUFF
  290.     ;
  291.     CALL    S_COPY
  292.     ;
  293.     MOV    WORD PTR [DI],002EH
  294.     INC    DI
  295.     INC    DI
  296.     INC    CX
  297.     ;
  298.     MOV    SI,OFFSET E_BUFF
  299.     ;
  300.     CALL    S_COPY
  301.     ;
  302.     MOV    BYTE PTR DRV_F,F_TYPE    ;TYPEしたよフラグ
  303.     ;
  304.     JMP    JOB_E
  305.     ;
  306.     ;
  307. JOB_E:    RET
  308.     ;
  309. E_JOB    ENDP
  310.     ;
  311.     ;
  312. S_COPY    PROC            ;MACRO
  313.     ;    JMP    S_CO_E    ;DEBUG
  314. S_COP:    MOV    AX,[SI]
  315.     MOV    [DI],AX
  316.     INC    CX
  317.     INC    SI
  318.     INC    SI
  319.     INC    DI
  320.     INC    DI
  321.     ;
  322.     CMP    AX,0
  323.     JNZ    S_COP
  324.     ;
  325.     DEC    CX
  326.     DEC    SI
  327.     DEC    SI
  328.     DEC    DI
  329.     DEC    DI
  330.     ;
  331. S_CO_E:    RET
  332.     ;
  333. S_COPY    ENDP
  334.     ;
  335.     ;
  336. JIS_CNV    PROC    ;バッファのJIS漢字をシフトJISにする。
  337.     ;
  338.     MOV    SI,OFFSET KBUFF
  339. JIS_1:    MOV    AX,[SI]
  340.     ;
  341.     CMP    AX,0    ;おしまい
  342.     JE    JIS_E
  343.     ;
  344.     TEST    AH,01H    ;半角
  345.     JZ    JIS_2
  346.     ;
  347.     MOV    DH,AL    ;漢字変換
  348.     ;
  349.     MOV    AX,[SI+2]
  350.     ;
  351.     CMP    AX,0    ;おしまい
  352.     JZ    JIS_E
  353.     ;
  354.     MOV    DL,AL    ;漢字変換
  355.     ;
  356.     MOV    AH,00H    ;漢字変換 "JIS" TO "SHIFT JIS"
  357.     INT    0AFH
  358.     ;
  359.     MOV    AH,0
  360.     MOV    AL,DH
  361.     MOV    [SI],AX        ;漢字変換
  362.     MOV    AL,DL
  363.     MOV    [SI+2],AX    ;漢字変換
  364.     ;
  365.     INC    SI
  366.     INC    SI
  367.     ;
  368. JIS_2:    INC    SI
  369.     INC    SI
  370.     ;
  371.     JMP    JIS_1
  372.     ;
  373. JIS_E:    RET    
  374.     ;
  375. JIS_CNV    ENDP
  376.     ;
  377.     ;
  378. DIR    PROC                ;"DIR /W"する 
  379.     ;
  380.     MOV    AX,CS            ;DS=CS
  381.     MOV    DS,AX
  382.     ;
  383.     TEST    BYTE PTR BUTTON,F_LEFT    ;;左ボタンを押しっぱなしか?
  384.     JZ    DIR1
  385.     ;
  386.     CMP    BYTE PTR DRV_F,F_LEFT    ;;左ドライブシフトがあった
  387.     JNE    DIR0
  388.     ;
  389.     CALL    DRVL        ;;左ドライブシフト
  390.     ;
  391.     JMP    E_DIR
  392.     ;
  393. DIR0:    CMP    BYTE PTR DRV_F,F_TYPE    ;TYPEしたよフラグ
  394.     JNE    DIR1
  395.     ;
  396.     CALL    CTL_C        ;;  [CTRL]+C 処理
  397.     ;
  398.     JMP    E_DIR
  399.     ;
  400. DIR1:    CMP    CUR_X,1        ;;左端をクリックしたか?
  401.     JNE    NR_DRV
  402.     ;
  403.     CALL    GET_CH        ;;半角か?
  404.     TEST    BH,01
  405.     JNZ    NR_DRV
  406.     ;
  407.     MOV    DRV,BL        ;;ドライブ名保存
  408.     ;
  409.     INC    CUR_X
  410.     ;
  411.     CALL    GET_CH        ;;半角か?
  412.     DEC    CUR_X
  413.     CMP    BX,003EH    ;;'>'
  414.     JNE    NR_DRV
  415.     ;
  416.     MOV    BYTE PTR DRV_F,F_RIGHT
  417.     ;
  418.     CALL    DRVR        ;;右ドライブシフト
  419.     ;
  420.     JMP    E_DIR
  421.     ;
  422. NR_DRV:    ;
  423.     MOV    AX,0B01H
  424.     MOV    CX,8
  425.     MOV    DI,OFFSET DIRBUFF
  426.     INT    90H
  427.     ;
  428.     MOV    DRV_F,F_NO    ;;ドライブシフトなし
  429.     ;
  430. E_DIR:    RET
  431.     ;
  432. DIR    ENDP
  433.     ;
  434.     ;
  435.     ;
  436. DRVL    PROC
  437.     MOV    AL,DRV
  438.     DEC    AL
  439.     CMP    AL,'A'-1
  440.     JNE    DRVL1
  441.     MOV    AL,'Q'
  442. DRVL1:    ;
  443.     MOV    DRV,AL
  444.     MOV    AX,0B01H
  445.     MOV    CX,3
  446.     MOV    DI,OFFSET DRV
  447.     INT    90H
  448.     ;
  449.     RET
  450.     ;
  451. DRVL    ENDP
  452.     ;
  453.     ;
  454. DRVR    PROC
  455.     MOV    AL,DRV
  456.     INC    AL
  457.     CMP    AL,'Q'+1
  458.     JNE    DRVR1
  459.     MOV    AL,'A'
  460. DRVR1:    ;
  461.     MOV    DRV,AL
  462.     MOV    AX,0B01H
  463.     MOV    CX,3
  464.     MOV    DI,OFFSET DRV
  465.     INT    90H
  466.     ;
  467.     RET
  468.     ;
  469. DRVR    ENDP
  470.     ;
  471.     ;
  472. CTL_C    PROC
  473.     ;
  474.     MOV    AX,0B01H
  475.     MOV    CX,1
  476.     MOV    DI,OFFSET CTRL_C
  477.     INT    90H
  478.     ;
  479.     RET
  480.     ;
  481. CTL_C    ENDP
  482.     ;
  483.     ;
  484.     ;
  485. GET_CH    PROC
  486.     MOV    DH,CUR_Y    ;;1文字取り出しサブルーチン
  487.     MOV    DL,CUR_X    ;;DL=桁位置 DH=行位置
  488.     ;
  489.     MOV    AH,14H
  490.     INT    91H
  491.     ;
  492.     mov    ax,bx
  493.     MOV    CH_TY,BH    ;;bit0=0:半角 1:全角 bit1=0:1byte 1:2byte
  494.     MOV    CH_JIS,BL    ;;文字コード
  495.     ;
  496.     RET
  497. GET_CH    ENDP
  498.     ;
  499.     ;
  500. ;
  501. ;;ここしばらくはデバックに使ったルーチン達です。
  502. ;
  503. ;DEBUG    PROC
  504. ;    ;debug        ;;ファイル名格納バッファの内容を表示する。
  505. ;    ;
  506. ;    MOV    AH,1DH
  507. ;    MOV    AL,'_'
  508. ;    INT    91H
  509. ;    ;
  510. ;    MOV    SI,OFFSET F_BUFF
  511. ;D_FIL:    MOV    AX,[SI]
  512. ;    INC    SI
  513. ;    INC    SI
  514. ;    CMP    AX,0
  515. ;    JE    D_EXT
  516. ;    MOV    AH,1DH
  517. ;    INT    91H
  518. ;    JMP    D_FIL
  519. ;    ;
  520. ;D_EXT:    MOV    AH,1DH
  521. ;    MOV    AL,'.'
  522. ;    INT    91H
  523. ;    ;
  524. ;    MOV    SI,OFFSET E_BUFF
  525. ;D_EXT1:    MOV    AX,[SI]
  526. ;    INC    SI
  527. ;    INC    SI
  528. ;    CMP    AX,0
  529. ;    JE    D_END
  530. ;    MOV    AH,1DH
  531. ;    INT    91H
  532. ;    JMP    D_EXT1
  533. ;D_END:    ;
  534. ;    RET
  535. ;    ;
  536. ;DEBUG    ENDP
  537. ;    ;
  538. ;DEBUG2    PROC
  539. ;    ;debug        ;;KEYバッファの内容を表示する。
  540. ;    ;
  541. ;    ;MOV    AH,1DH
  542. ;    ;MOV    AL,'['
  543. ;    ;INT    91H
  544. ;    ;
  545. ;    MOV    SI,OFFSET KBUFF
  546. ;D_KEY:    MOV    AX,[SI]
  547. ;    INC    SI
  548. ;    INC    SI
  549. ;    CMP    AX,0
  550. ;    JE    D_KEY1
  551. ;    MOV    AH,1DH
  552. ;    INT    91H
  553. ;    JMP    D_KEY
  554. ;    ;
  555. ;D_KEY1:    ;MOV    AH,1DH
  556. ;    ;MOV    AL,']'
  557. ;    ;INT    91H
  558. ;    ;
  559. ;    RET
  560. ;    ;
  561. ;DEBUG2    ENDP
  562. ;    ;
  563. ;    ;
  564. ;DEBUG3    PROC
  565. ;    ;debug        ;;AXの内容を表示する。
  566. ;    ;
  567. ;;************************************
  568. ;;** print hex$(ax) (no bleak regs) **
  569. ;;************************************
  570. ;;
  571. ;p_hex:    push    ax
  572. ;    push    cx
  573. ;    ;
  574. ;    push    ax
  575. ;;
  576. ;    mov    cl,8
  577. ;    ror    ax,cl
  578. ;;
  579. ;    call    dis            ;joui keta
  580. ;;
  581. ;    pop    ax
  582. ;    call    dis            ;kai keta
  583. ;;    
  584. ;    pop    cx
  585. ;    pop    ax
  586. ;    ;
  587. ;    mov    al,' '
  588. ;    mov    ah,1dh
  589. ;    int    91h
  590. ;;
  591. ;    jmp    p_hex_e
  592. ;    ;
  593. ;dis:    push    ax
  594. ;;
  595. ;    mov    cl,4
  596. ;    ror    al,cl
  597. ;;
  598. ;    call    dis1            ;joui keta
  599. ;;
  600. ;    pop    ax
  601. ;    call    dis1            ;kai keta
  602. ;;
  603. ;    ret
  604. ;;
  605. ;dis1:    and    al,0fh            ;low data
  606. ;    cmp    al,10
  607. ;    jae    dis2
  608. ;    or    al,30h
  609. ;    jmp    dis3
  610. ;dis2:    sub    al,10
  611. ;    add    al,41h
  612. ;;
  613. ;dis3:    mov    ah,1dh
  614. ;    int    91h
  615. ;;
  616. ;    ret
  617. ;;
  618. ;p_hex_e:ret
  619. ;    ;
  620. ;DEBUG3    ENDP
  621. ;    ;
  622. ;    ;
  623.     ;
  624. CUR_X    DB    ?
  625. CUR_Y    DB    ?
  626. CH_TY    DB    ?
  627. CH_JIS    DB    ?
  628.     ;
  629. BUTTON    DB    0    ;;BIT0=左ボタンON   BIT1=右ボタンON
  630. DRV_F    DB    0    ;;BIT0=左ドライブシフト BIT1=右ドライブシフト
  631.     ;
  632. F_BUFF    DW    20H DUP (?)
  633. E_BUFF    DW    10H DUP (?)
  634. KBUFF    DW    40H DUP (?)
  635.     ;
  636.     ;
  637. DRV    DB    ?,00H,':',00H,0DH,00H
  638.     ;
  639. DIRBUFF    DB    ' ',00H,'D',00H,'I',00H,'R',00H,' ',00H,'/',00H,'W',00H,0DH,00H
  640. S_TYPE    DB    'T',00H,'Y',00H,'P',00H,'E',00H,' ',00H,00H,00H
  641. S_386    DB    'R',00H,'U',00H,'N',00H
  642.     DB    '3',00H,'8',00H,'6',00H,' ',00H,00H,00H
  643. S_EXP    DB    '.',00H,'E',00H,'X',00H,'P',00H,00H,00H
  644. S_CD    DB    'C',00H,'D',00H,' ',00H,00H,00H
  645. CTRL_C    DB    03H,00H
  646.     ;
  647.     DB    100H DUP (?)    ;<これがないと暴走する?魚田さん教えて下さい。
  648.     ;
  649.     ;
  650. LOADER    PROC    ;;ここ以降は常駐するとき捨てられる
  651.     ;
  652.     MOV    AX,CS            ;DS=CS
  653.     MOV    DS,AX
  654.     ;
  655.     MOV    AH,00H        ;;マウス動作開始
  656.     INT    99H
  657.     ;
  658.     MOV    AX,0200H    ;;マウスカーソル表示
  659.     INT    99H
  660.     ;
  661.     MOV    AH,0CH        ;;マウスカーソルのスピードを上げる
  662.     MOV    DH,04H        ;;水平
  663.     MOV    DL,04H        ;;垂直
  664.     INT    99H
  665.     ;
  666.     MOV    DX,OFFSET MSG    ;;タイトル表示
  667.     MOV    AH,09H
  668.     INT    21H
  669.     ;
  670.     MOV    AX,CS
  671.     MOV    DS,AX
  672.     ;
  673.     MOV    AH,0BH        ;;マウス割り込みルーチンの定義
  674.     MOV    DX,000AH
  675.     MOV    DI,OFFSET MOUSE
  676.     INT    99H
  677.     ;
  678.     MOV    DX,OFFSET LOADER    ;;常駐終了
  679.     SHR    DX,1
  680.     SHR    DX,1
  681.     SHR    DX,1
  682.     SHR    DX,1
  683.     INC    DX
  684.     MOV    AX,3100H
  685.     INT    21H
  686.     ;
  687. MSG    DB    01BH,'[0m','☆'
  688.     DB    01BH,'[1m',' CONSOLE++  ver 2.0 '
  689.     DB    01BH,'[0m','☆'
  690.     DB    0DH,0AH
  691.     DB    01BH,'[31m',' K',01BH,'[0m','.OKAMOTO 1990  <<COPY FREE>>'
  692.     DB    0DH,0AH
  693.     DB    01BH,'[0m',' 常駐しま~す。'
  694.     DB    0DH,0AH,'$'
  695.     ;
  696. LOADER    ENDP
  697.     ;
  698. CODE    ENDS
  699.     END    LOADER
  700.