Subversion Repositories Kolibri OS

Rev

Rev 109 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1.  
  2. ;
  3. ;    MIXER
  4. ;
  5. ;    Compile with FASM
  6. ;
  7.  
  8. include 'lang.inc'
  9. include '..\..\..\macros.inc'
  10.  
  11.  
  12. use32
  13.  org    0x0
  14.  db     'MENUET01'    ; header
  15.  dd     0x01          ; header version
  16.  dd     START         ; entry point
  17.  dd     I_END         ; image size
  18.  dd     0x1000        ; required memory
  19.  dd     0x1000        ; esp
  20.  dd     0x0 , 0x0     ; I_Param , I_Path
  21.  
  22.  
  23.  
  24. START:                          ; start of execution
  25.  
  26.   red:                          ; redraw
  27.     call draw_window            ; at first, draw the window
  28.  
  29.  
  30. still:
  31.  
  32.     mov  eax,10                 ; wait here for event
  33.     mcall
  34.  
  35.     cmp  eax,1                  ; redraw request ?
  36.     jz   red
  37.     cmp  eax,2                  ; key in buffer ?
  38.     jz   key
  39.     cmp  eax,3                  ; button in buffer ?
  40.     jz   button
  41.  
  42.     jmp  still
  43.  
  44.   key:                          ; key
  45.     mov  eax,2                  ; just read it and ignore
  46.     mcall
  47.  
  48.     jmp  still
  49.  
  50.   button:                       ; button
  51.     mov  eax,17
  52.     mcall
  53.  
  54.     cmp  ah,1                   ; button id=1 ?
  55.     jnz  noclose
  56.     or   eax,-1                 ; close this program
  57.     mcall
  58.   noclose:
  59.  
  60.     cmp  ah,101
  61.     jnz  nochange
  62.     mov  al,byte [usecard]
  63.     cld
  64.     inc  al
  65.     and  al,3
  66.     cmp  al,0
  67.     jnz  nozer
  68.     mov  al,1
  69.   nozer:
  70.     mov  byte [usecard],al
  71.  
  72.     call drawusedcard
  73.  
  74.   nochange:
  75.  
  76.     cmp  byte [usecard],byte 1
  77.     jz   usesb16
  78.  
  79.     cmp  byte [usecard],byte 2
  80.     jnz  nousesb16II
  81.     jmp  usesb16II
  82.   nousesb16II:
  83.  
  84.     cmp  byte [usecard],byte 3
  85.     jnz  nousewss
  86.     jmp  usewss
  87.   nousewss:
  88.  
  89.  
  90.  
  91. ; SOUND BLASTER 16
  92.  
  93.  
  94.   usesb16:
  95.  
  96.  
  97.     cld
  98.  
  99.     mov  al,20
  100.     cmp  ah,al
  101.     jge  nomain
  102.  
  103.     mov  ecx,0
  104.     cmp  ah,12
  105.     jnz  nomain12
  106.     mov  ecx,3*16+3
  107.   nomain12:
  108.     cmp  ah,13
  109.     jnz  nomain13
  110.     mov  ecx,7*16+7
  111.   nomain13:
  112.     cmp  ah,14
  113.     jnz  nomain14
  114.     mov  ecx,11*16+11
  115.   nomain14:
  116.     cmp  ah,15
  117.     jnz  nomain15
  118.     mov  ecx,15*16+15
  119.   nomain15:
  120.  
  121.     mov  eax,25
  122.     mov  ebx,1
  123.     mcall
  124.  
  125.     jmp  still
  126.  
  127.   nomain:
  128.  
  129.     mov  al,30
  130.     cmp  ah,al
  131.     jge  nocd
  132.  
  133.     mov  ecx,0
  134.  
  135.     cmp  ah,22
  136.     jnz  nocd12
  137.     mov  ecx,3*16+3
  138.   nocd12:
  139.     cmp  ah,23
  140.     jnz  nocd13
  141.     mov  ecx,7*16+7
  142.   nocd13:
  143.     cmp  ah,24
  144.     jnz  nocd14
  145.     mov  ecx,11*16+11
  146.   nocd14:
  147.     cmp  ah,25
  148.     jnz  nocd15
  149.     mov  ecx,15*16+15
  150.   nocd15:
  151.  
  152.     mov  eax,25
  153.     mov  ebx,2
  154.     mcall
  155.  
  156.     jmp  still
  157.  
  158.   nocd:
  159.  
  160.  
  161.     jmp  still
  162.  
  163.  
  164.  
  165.  
  166. ; SOUND BLASTER 16 II
  167.  
  168.   usesb16II:
  169.  
  170.     cld
  171.  
  172.     mov  al,20
  173.     cmp  ah,al
  174.     jge  IIwnomain
  175.  
  176.     mov  ecx,0
  177.     cmp  ah,12
  178.     jnz  IIwnomain12
  179.     mov  ecx,50
  180.   IIwnomain12:
  181.     cmp  ah,13
  182.     jnz  IIwnomain13
  183.     mov  ecx,150
  184.   IIwnomain13:
  185.     cmp  ah,14
  186.     jnz  IIwnomain14
  187.     mov  ecx,200
  188.   IIwnomain14:
  189.     cmp  ah,15
  190.     jnz  IIwnomain15
  191.     mov  ecx,255
  192.   IIwnomain15:
  193.  
  194.     mov  eax,28
  195.     mov  ebx,1
  196.     mcall
  197.  
  198.     jmp  still
  199.  
  200.   IIwnomain:
  201.  
  202.     mov  al,30
  203.     cmp  ah,al
  204.     jge  IIwnocd
  205.  
  206.     mov  ecx,0
  207.  
  208.     cmp  ah,22
  209.     jnz  IIwnocd12
  210.     mov  ecx,50
  211.   IIwnocd12:
  212.     cmp  ah,23
  213.     jnz  IIwnocd13
  214.     mov  ecx,150
  215.   IIwnocd13:
  216.     cmp  ah,24
  217.     jnz  IIwnocd14
  218.     mov  ecx,200
  219.   IIwnocd14:
  220.     cmp  ah,25
  221.     jnz  IIwnocd15
  222.     mov  ecx,255
  223.   IIwnocd15:
  224.  
  225.     mov  eax,28
  226.     mov  ebx,2
  227.     mcall
  228.  
  229.     jmp  still
  230.  
  231.   IIwnocd:
  232.  
  233.  
  234.     jmp  still
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244. ; WINDOWS SOUND SYSTEM
  245.  
  246.   usewss:
  247.  
  248.     cld
  249.  
  250.     mov  al,20
  251.     cmp  ah,al
  252.     jge  wnomain
  253.  
  254.     mov  ecx,255
  255.     cmp  ah,12
  256.     jnz  wnomain12
  257.     mov  ecx,200
  258.   wnomain12:
  259.     cmp  ah,13
  260.     jnz  wnomain13
  261.     mov  ecx,150
  262.   wnomain13:
  263.     cmp  ah,14
  264.     jnz  wnomain14
  265.     mov  ecx,70
  266.   wnomain14:
  267.     cmp  ah,15
  268.     jnz  wnomain15
  269.     mov  ecx,0
  270.   wnomain15:
  271.  
  272.     mov  eax,27
  273.     mov  ebx,1
  274.     mcall
  275.  
  276.     jmp  still
  277.  
  278.   wnomain:
  279.  
  280.     mov  al,30
  281.     cmp  ah,al
  282.     jge  wnocd
  283.  
  284.     mov  ecx,255
  285.  
  286.     cmp  ah,22
  287.     jnz  wnocd12
  288.     mov  ecx,200
  289.   wnocd12:
  290.     cmp  ah,23
  291.     jnz  wnocd13
  292.     mov  ecx,150
  293.   wnocd13:
  294.     cmp  ah,24
  295.     jnz  wnocd14
  296.     mov  ecx,70
  297.   wnocd14:
  298.     cmp  ah,25
  299.     jnz  wnocd15
  300.     mov  ecx,0
  301.   wnocd15:
  302.  
  303.     mov  eax,27
  304.     mov  ebx,2
  305.     mcall
  306.  
  307.     jmp  still
  308.  
  309.   wnocd:
  310.  
  311.  
  312.     jmp  still
  313.  
  314.  
  315.  
  316.  
  317. ;   *********************************************
  318. ;   *******  WINDOW DEFINITIONS AND DRAW ********
  319. ;   *********************************************
  320.  
  321.  
  322. draw_window:
  323.  
  324.     mov  eax,12                    ; function 12:tell os about windowdraw
  325.     mov  ebx,1                     ; 1, start of draw
  326.     mcall
  327.  
  328.                                    ; DRAW WINDOW
  329.     mov  eax,0                     ; function 0 : define and draw window
  330.     mov  ebx,100*65536+195         ; [x start] *65536 + [x size]
  331.     mov  ecx,100*65536+140         ; [y start] *65536 + [y size]
  332.     mov  edx,[wcolor]              ; color of work area RRGGBB
  333.     mov  edi,title                 ; WINDOW LABEL
  334.     mcall
  335.  
  336.  
  337.     mov  edx,16                    ; button id
  338.     mov  ebx,10*65536
  339.  
  340.   newbut:
  341.  
  342.     push edx
  343.     push ebx
  344.  
  345.     mov  esi,[bcolor]
  346.  
  347.     mov  eax,8                     ; function 8 : define and draw button
  348.     mov  bx,22                     ; [x start] *65536 + [x size]
  349.     mov  ecx,35*65536+8            ; [y start] *65536 + [y size]
  350.     dec  edx
  351.     mcall
  352.     mov  bx,22                     ; [x start] *65536 + [x size]
  353.     mov  ecx,45*65536+8            ; [y start] *65536 + [y size]
  354.     dec  edx
  355.     mcall
  356.     mov  bx,22                     ; [x start] *65536 + [x size]
  357.     mov  ecx,55*65536+8            ; [y start] *65536 + [y size]
  358.     dec  edx
  359.     mcall
  360.     mov  bx,22                     ; [x start] *65536 + [x size]
  361.     mov  ecx,65*65536+8            ; [y start] *65536 + [y size]
  362.     dec  edx
  363.     mcall
  364.     mov  bx,22                     ; [x start] *65536 + [x size]
  365.     mov  ecx,75*65536+8            ; [y start] *65536 + [y size]
  366.     dec  edx
  367.     mcall
  368.  
  369.     pop  ebx
  370.     pop  edx
  371.  
  372.     add  ebx,30*65536
  373.     add  edx,10
  374.  
  375.     cmp  edx,16+6*10
  376.     jz   butdone
  377.  
  378.     jmp  newbut
  379.  
  380.   butdone:
  381.  
  382.  
  383.     mov  eax,4                     ; function 4 : write text to window
  384.     mov  ebx,10*65536+104          ; [x start] *65536 + [y start]
  385.     mov  ecx,0x00ffffff            ; color of text RRGGBB
  386.     mov  edx,text                  ; pointer to text beginning
  387.     mov  esi,29
  388.     mcall
  389.  
  390.     mov  eax,8                     ; function 8 : define and draw button
  391.     mov  ebx,(5)*65536+185         ; [x start] *65536 + [x size]
  392.     mov  ecx,120*65536+14          ; [y start] *65536 + [y size]
  393.     mov  edx,101                   ; button id
  394.     mov  esi,[bcolor]              ; button color RRGGBB
  395.     mcall
  396.  
  397.     call drawusedcard
  398.  
  399.     mov  eax,12                    ; function 12:tell os about windowdraw
  400.     mov  ebx,2                     ; 2, end of draw
  401.     mcall
  402.  
  403.     ret
  404.  
  405.  
  406. drawusedcard:
  407.  
  408.     pusha
  409.  
  410.     mov  eax,13
  411.     mov  ebx,14*65536+160
  412.     mov  ecx,123*65536+10
  413.     mov  edx,[bcolor]
  414.     mcall
  415.  
  416.     mov  eax,[usecard]
  417.     mov  edx,c3
  418.  
  419.     cmp  al,1
  420.     jnz  nosbc
  421.     mov  edx,c1
  422.   nosbc:
  423.     cmp  al,2
  424.     jnz  nosbcII
  425.     mov  edx,c2
  426.   nosbcII:
  427.     cmp  al,3
  428.     jnz  nowssc
  429.     mov  edx,c3
  430.   nowssc:
  431.  
  432.     mov  eax,4
  433.     mov  ebx,14*65536+123
  434.     mov  ecx,0x00ffffff
  435.     mov  esi,30
  436.     mcall
  437.  
  438.     popa
  439.  
  440.     ret
  441.  
  442.  
  443.  
  444. ; DATA AREA
  445.  
  446. bcolor  dd  0x5577c8
  447.  
  448. wcolor  dd  0x13000000
  449.  
  450.  
  451. text:
  452.     db 'MAIN  CD  WAVE MPU4 AUX1 AUX2'
  453.  
  454. c1  db 'SOUND BLASTER 16 - MIXER I    '
  455. c2  db 'SOUND BLASTER 16 - MIXER II   '
  456. c3  db 'WINDOWS SOUND SYSTEM          '
  457.  
  458.  
  459. usecard dd 0x1
  460.  
  461. title    db   'MIXER',0
  462.  
  463. I_END:
  464.  
  465.  
  466.  
  467.