www.pudn.com > ÉùÒô¿ØÖÆ.rar > ev.asm


        CODE  SEGMENT 
              ASSUME    CS:CODE,DS:CODE 
              ORG       100H 
      BEGIN:  JMP       INIT 
          R1  EQU       224H 
          R2  EQU       225H 
        INT9  DD        ? 
        MARK  DB        'zd' 
     NEW_INT  PROC      FAR 
              STI 
              PUSH      AX 
              PUSH      ES 
              XOR       AX,AX 
              MOV       ES,AX 
              IN        AL,60H 
              TEST      AL,80H 
              JNZ       EXIT1 
              TEST      BYTE PTR ES:[0417H],100B 
              JZ        EXIT1 
 
              CMP       AL,59       ;F1 
              JZ        OK 
              CMP       AL,60       ;F2 
              JZ        OK 
              CMP       AL,61       ;F3 
              JZ        OK 
              CMP       AL,62       ;F4 
              JZ        OK 
              CMP       AL,63       ;F5 
              JZ        OK 
              CMP       AL,64       ;F6 
              JZ        OK 
 
              CMP       AL,65       ;F7 
              JZ        OK 
              CMP       AL,66       ;F8 
              JZ        OK 
              JMP       EXIT1 
         OK: 
              PUSH      AX 
              PUSH      BX 
              PUSH      CX 
              PUSH      DX 
              PUSH      BP 
              PUSH      DI 
              PUSH      SI 
              PUSH      DS 
              MOV       BL,AL 
              PUSH      CS 
              POP       DS 
              IN        AL,61H 
              PUSH      AX 
              OR        AL,80H 
              OUT       61H,AL 
              POP       AX 
              OUT       61H,AL 
              MOV       AL,20H 
              OUT       20H,AL 
              CALL      MY 
 
              POP       DS 
              POP       SI 
              POP       DI 
              POP       BP 
              POP       DX 
              POP       CX 
              POP       BX 
              POP       AX 
 
      EXIT1: 
              POP       ES 
              POP       AX 
              JMP       CS:INT9 
     NEW_INT  ENDP 
 
          MY  PROC      NEAR        ;;;;;;;;;;;;;;;;;;;;;;;my app;;;;;;;;;;;;;;;;;;;;;;;;;; 
 
          O:  CMP       BL,59 
              JNZ       O1 
              MOV       CL,32H 
              CALL      UP 
              JMP       QUIT 
 
         O1:  CMP       BL,61 
              JNZ       O2 
              MOV       CL,38H 
              CALL      UP 
              JMP       QUIT 
 
         O2:  CMP       BL,63 
              JNZ       O3 
              MOV       CL,36H 
              CALL      UP 
              JMP       QUIT 
 
         O3:  CMP       BL,65 
              JNZ       O4 
              MOV       CL,14H 
              CALL      UP 
              JMP       QUIT 
 
;down 
 
         O4:  CMP       BL,60 
              JNZ       O5 
              MOV       CL,32H 
              CALL      DOWN 
              JMP       QUIT 
 
         O5:  CMP       BL,62 
              JNZ       O6 
              MOV       CL,38H 
              CALL      DOWN 
              JMP       QUIT 
 
         O6:  CMP       BL,64 
              JNZ       O7 
              MOV       CL,36H 
              CALL      DOWN 
              JMP       QUIT 
 
         O7:  CMP       BL,66 
              JNZ       O8 
              MOV       CL,14H 
              CALL      DOWN 
              JMP       QUIT 
         O8: 
 
       QUIT:  RET 
          MY  ENDP 
 
          UP  PROC      NEAR        ;;;;;;;;;;;;;;;UP;;;;;;;;;;;;;;;;;; 
              XOR       AX,AX 
              MOV       AL,CL 
              MOV       DX,R1 
              OUT       DX,AL 
              MOV       DX,R2 
              IN        AL,DX 
              ADD       AX,11H 
              CMP       AX,0FFH 
              JLE       GOON 
              MOV       AX,0FFH 
       GOON: 
              PUSH      AX 
              MOV       AL,CL 
              MOV       DX,R1 
              OUT       DX,AL 
              POP       AX 
              MOV       DX,R2 
              OUT       DX,AL 
              RET 
          UP  ENDP 
 
        DOWN  PROC      NEAR        ;;;;;;;;;;;;;DOWN;;;;;;;;;;;;; 
              XOR       AX,AX 
              MOV       AL,CL 
              MOV       DX,R1 
              OUT       DX,AL 
              MOV       DX,R2 
              IN        AL,DX 
              SUB       AX,11H 
              CMP       AX,0H 
              JGE       GO 
              MOV       AX,0H 
         GO: 
              PUSH      AX 
 
              MOV       AL,CL 
              MOV       DX,R1 
              OUT       DX,AL 
 
              POP       AX 
 
              MOV       DX,R2 
              OUT       DX,AL 
              RET 
        DOWN  ENDP 
 
 
       INIT: 
              CLI 
              PUSH      CS 
              POP       DS 
 
              MOV       DX,OFFSET ZD 
              MOV       AH,9 
              INT       21H 
 
              MOV       AX,3509H 
              INT       21H 
              CMP       WORD PTR ES:[BX-2],'dz' 
              JNZ       INSTALL 
              MOV       DX,OFFSET MES1 
              MOV       AH,9 
              INT       21H 
              MOV       AH,4CH 
              INT       21H 
 
    INSTALL: 
              MOV       DI,OFFSET INT9 
              MOV       [DI],BX 
              MOV       [DI+2],ES 
              PUSH      CS 
              POP       DS 
              MOV       DX,OFFSET NEW_INT 
              MOV       AX,2509H 
              INT       21H 
              STI 
              MOV       DX,OFFSET MES 
              MOV       AH,9 
              INT       21H 
 
              MOV       DX,OFFSET INIT 
              INT       27H 
          ZD  DB        'MIXER VOLUME CTRL V1.0 ZDsoft 1995',0DH,0AH,'$' 
         MES  DB        'CTRL-F1 -- TURN MASTER VOL UP',0DH,0AH 
        MES2  DB        'CTRL-F2 -- TURN MASTER VOL DOWN ',0DH,0AH 
        MES3  DB        'CTRL-F3 -- TURN CD VOL UP ',0DH,0AH 
        MES4  DB        'CTRL-F4 -- TURN CD VOL DOWN ',0DH,0AH 
        MES5  DB        'CTRL-F5 -- TURN FM VOL UP ',0DH,0AH 
        MES6  DB        'CTRL-F6 -- TURN FM VOL DOWN ',0DH,0AH 
        MES7  DB        'CTRL-F7 -- TURN VOICE VOL UP ',0DH,0AH 
        MES8  DB        'CTRL-F8 -- TURN VOICE VOL DOWN ',0DH,0AH,'$' 
        MES1  DB        'Already Install!$' 
 
        CODE  ENDS 
              END       BEGIN