Subversion Repositories Kolibri OS

Rev

Rev 521 | Rev 529 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;-------------------------------------------------------------------------
  2. ;
  3. ;    ” ©« ª®­ä¨£ãà æ¨¨
  4. ;
  5. ;
  6. ;     SPraid
  7. ;
  8. ;-------------------------------------------------------------------------
  9.  
  10. conf_file_loaded: db 0                  ; ä« £ § £à㧪¨ ª®­ä¨£ 
  11. conf_path_sect: db 'path',0
  12.  
  13. conf_fname db '/sys/sys.conf',0
  14.  
  15.  
  16.  
  17. proc set_kernel_conf
  18. locals
  19.   par db 30 dup(?)
  20. endl
  21.   pushad
  22.   ;[gui]
  23.   ;mouse_speed
  24.   lea eax,[par]
  25.   push eax
  26.   invoke ini.get_str,conf_fname, ugui, ugui_mouse_speed, eax,30, ugui_mouse_speed_def        
  27.   pop eax
  28.   stdcall strtoint,eax
  29.   push eax
  30.   pop edx
  31.   call _mouse_speed
  32.  
  33.   popad
  34.   ret
  35.  
  36.   ;mouse_delay
  37.   lea eax,[par]
  38.   push eax
  39.   invoke ini.get_str,conf_fname, ugui, ugui_mouse_delay, eax,30, ugui_mouse_delay_def
  40.   pop eax
  41.   stdcall strtoint,eax
  42.   push eax
  43.   pop edx
  44.   call _mouse_delay
  45.  
  46.   ;[dev]
  47.   ;sb16
  48.   lea eax,[par]
  49.   push eax
  50.   invoke ini.get_str,conf_fname, udev, udev_sb16, eax,30, udev_sb16_def
  51.   pop eax
  52.   stdcall strtoint,eax
  53.   push eax
  54.   pop ecx
  55.   call _sb16
  56.  
  57.   ;sound_dma
  58.   lea eax,[par]
  59.   push eax
  60.   invoke ini.get_str,conf_fname, udev, udev_sound_dma, eax,30, udev_sound_dma_def
  61.   pop eax
  62.   stdcall strtoint,eax
  63.   push eax
  64.   pop ecx
  65.   call _sound_dma  
  66.  
  67.  
  68.   ;midibase
  69.   lea eax,[par]
  70.   push eax
  71.   invoke ini.get_str,conf_fname, udev, udev_midibase, eax,30, udev_midibase_def
  72.   pop eax
  73.   stdcall strtoint,eax
  74.   push eax
  75.   pop ecx
  76.   call _midibase
  77.  
  78.  
  79.   popad
  80.   ret
  81. endp
  82.  
  83. ugui db 'gui',0
  84. ugui_mouse_speed db 'mouse_speed',0
  85. ugui_mouse_speed_def db '2',0
  86. ugui_mouse_delay db 'mouse_delay',0
  87. ugui_mouse_delay_def db '0x00A',0
  88.  
  89. udev db 'dev',0
  90. udev_sb16 db 'sb16',0
  91. udev_sb16_def db '0x220',0
  92. udev_sound_dma db 'sound_dma',0
  93. udev_sound_dma_def db '1',0
  94. udev_midibase db 'midibase',0
  95. udev_midibase_def db '0x320',0
  96.  
  97. proc set_network_conf
  98. locals
  99.   par db 30 dup(?)
  100. endl
  101.   pushad
  102.  
  103.   ;[net]
  104.   ;active
  105.   lea eax,[par]
  106.   invoke ini.get_int,conf_fname, unet, unet_active, 0
  107.   or eax,eax
  108.   jz .do_not_set_net
  109.   call _net_up  
  110.  
  111.   ;addr
  112.   lea eax,[par]
  113.   push eax
  114.   invoke ini.get_str,conf_fname, unet, unet_addr, eax,30, unet_def
  115.   pop eax
  116.   stdcall do_inet_adr,eax
  117.   push eax
  118.   pop ecx
  119.   call _net_addr
  120.  
  121.   ;mask
  122.   lea eax,[par]
  123.   push eax
  124.   invoke ini.get_str,conf_fname, unet, unet_mask, eax,30, unet_def
  125.   pop eax
  126.   stdcall do_inet_adr,eax
  127.   push eax
  128.   pop ecx
  129.   call _net_mask  
  130.  
  131.   ;gate
  132.   lea eax,[par]
  133.   push eax
  134.   invoke ini.get_str,conf_fname, unet, unet_gate, eax,30, unet_def
  135.   pop eax
  136.   stdcall do_inet_adr,eax
  137.   push eax
  138.   pop ecx
  139.   call _net_gate
  140. .do_not_set_net:
  141.   popad
  142.   ret
  143.  
  144.  
  145. endp
  146.  
  147. unet db 'net',0
  148. unet_active db 'active',0
  149. unet_addr db 'addr',0
  150. unet_mask db 'mask',0
  151. unet_gate db 'gate',0
  152. unet_def db 0
  153.  
  154. ; ª®­¢¥à祭¨¥ áâப¨ ¢ DWord ¢ eax (¯® ¢â®à®¬ã ᨬ¢®«ã ®¯à¥¤¥«ï¥â á¨á⥬ã áç¨á«¥­¨ï)
  155.      
  156. proc strtoint stdcall,strs
  157.   pushad
  158.  
  159.   mov eax,[strs]
  160.   inc eax
  161.   mov bl,[eax]
  162.   cmp bl,'x'
  163.   je .hex
  164.   cmp bl,'X'
  165.   je .hex
  166.   jmp .dec
  167. .hex:
  168.   inc eax
  169.   stdcall strtoint_hex,eax
  170.   jmp .exit
  171. .dec:
  172.   dec eax
  173.   stdcall strtoint_dec,eax
  174. .exit:
  175.   mov [esp+28],eax
  176.   popad
  177.   ret  
  178. endp
  179.  
  180. ; ª®­¢¥à祭¨¥ áâப¨ ¢ DWord ¢ eax ¤«ï ¤¥áïâ¨ç­®£®
  181. proc strtoint_dec stdcall,strs
  182.   pushad
  183.   xor edx,edx
  184.   ; ¯®¨áª ª®­æ 
  185.   mov esi,[strs]
  186. @@:
  187.   lodsb
  188.   or al,al
  189.   jnz @b
  190.   mov ebx,esi
  191.   mov esi,[strs]
  192.   dec ebx
  193.   sub ebx,esi
  194.   mov ecx,1
  195.  
  196. @@:
  197.   dec ebx
  198.   or ebx,ebx
  199.   jz @f
  200.   imul ecx,ecx,10  ; ¯®à冷ª
  201.   jmp @b
  202. @@:
  203.  
  204.  xchg ebx,ecx
  205.  
  206.  
  207.   xor ecx,ecx
  208.  
  209.  
  210. @@:  
  211.   xor eax,eax
  212.   lodsb
  213.   cmp al,0
  214.   je .eend
  215.  
  216.   sub al,30h
  217.   imul ebx
  218.   add ecx,eax
  219.   push ecx
  220.   xchg eax,ebx
  221.   mov ecx,10
  222.   div ecx
  223.   xchg eax,ebx
  224.   pop ecx
  225.   jmp @b
  226.  
  227. .eend:
  228.   mov [esp+28],ecx
  229.   popad
  230.   ret
  231. endp
  232.  
  233. ; ª®­¢¥à祭¨¥ áâப¨ ¢ DWord ¢ eax ¤«ï è¥á­ ¤æ â¨à¨ç­®£®
  234. proc strtoint_hex stdcall,strs
  235.   pushad
  236.   xor edx,edx
  237.  
  238.   mov esi,[strs]
  239.   mov ebx,1
  240.   add esi,1
  241.  
  242. @@:
  243.   lodsb
  244.   or al,al
  245.   jz @f
  246.   shl ebx,4
  247.   jmp @b
  248. @@:
  249.   xor ecx,ecx
  250.   mov esi,[strs]
  251.  
  252. @@:  
  253.   xor eax,eax
  254.   lodsb
  255.   cmp al,0
  256.   je .eend
  257.  
  258.   cmp al,'a'
  259.   jae .bm
  260.   cmp al,'A'
  261.   jae .bb
  262.   jmp .cc
  263. .bm:    ; 57h
  264.   sub al,57h
  265.   jmp .do
  266.  
  267. .bb:    ; 37h
  268.   sub al,37h
  269.   jmp .do
  270.  
  271. .cc:    ; 30h
  272.   sub al,30h
  273.  
  274. .do:  
  275.   imul ebx
  276.   add ecx,eax
  277.   shr ebx,4
  278.  
  279.   jmp @b
  280.  
  281. .eend:
  282.   mov [esp+28],ecx
  283.   popad
  284.   ret
  285. endp    
  286.  
  287.  
  288.  ; ¯à¥®¡à §®¢ âì  ¤à¥á ¢ â® çâ® ­ ¤ , ¥á«¨ ¯ãáâ® â® ¢¥à­ãâì 0
  289. proc do_inet_adr stdcall,strs
  290.   pushad
  291.  
  292.   mov esi,[strs]
  293.   mov ebx,0
  294. .next:
  295.   push esi
  296. @@:
  297.   lodsb
  298.   or al,al
  299.   jz @f
  300.   cmp al,'.'
  301.   jz @f
  302.   jmp @b
  303. @@:
  304.   mov cl, al
  305.   mov [esi-1],byte 0
  306.   ;pop eax
  307.   call strtoint_dec
  308.   rol eax,24
  309.   ror ebx,8
  310.   add ebx,eax
  311.   or cl,cl
  312.   jz @f
  313.   jmp .next
  314. @@:
  315.   mov [esp+28],ebx
  316.   popad
  317.   ret
  318. endp
  319.  
  320.  
  321. ; ãáâ ­®¢ª¨ ¨§ setup
  322.  
  323. _mouse_speed:
  324.     mov  eax,18
  325.     mov  ebx,19
  326.     mov  ecx,1
  327.     int 0x40
  328.  ret
  329.  
  330. _mouse_delay:
  331.     mov  eax,18
  332.     mov  ebx,19
  333.     mov  ecx,3
  334.     int 0x40
  335.  ret
  336.  
  337. _sb16:
  338.     mov  eax,21
  339.     mov  ebx,4
  340.     int 0x40
  341.  ret
  342.    
  343. _sound_dma:
  344.     mov  eax,21
  345.     mov  ebx,10
  346.     int 0x40
  347.  ret
  348.  
  349.  
  350. _midibase:
  351.     mov  eax,21
  352.     mov  ebx,1
  353.     int 0x40
  354.  ret
  355.  
  356. _net_addr:
  357.     mov eax,52
  358.     mov ebx,3
  359.     int 0x40
  360.  ret
  361.  
  362. _net_mask:
  363.     mov eax,52
  364.     mov ebx,12
  365.     int 0x40
  366.  ret
  367.  
  368. _net_gate:
  369.     mov eax,52
  370.     mov ebx,11
  371.     int 0x40
  372.  ret
  373.  
  374. _net_up:
  375.     mov eax,52
  376.     mov ebx,0
  377.     int 0x40
  378.     and eax,0xFFFFFF80
  379.     add eax,3
  380.     mov ecx,eax
  381.    
  382.     mov eax,52
  383.     mov ebx,2
  384.     int 0x40
  385.  ret