Subversion Repositories Kolibri OS

Rev

Rev 485 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;
  2. ;   Системная программа для установки повышенных (>60 Hz) частот обновления
  3. ;   экрана за счет снижения разрешения
  4. ;   (для переходов:  1024х768*60-->800х600*98
  5. ;                     800х600*60-->640х480*94)
  6. ;
  7. ;   Компилировать FASM'ом
  8. ;
  9. ;   !!!!!_Предупреждение_!!!!!:
  10. ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  11. ;! На текущий момент программа носит ЭКСПЕРИМЕНТАЛЬНЫЙ (!) характер, поэтому всегда   !
  12. ;! остается вероятность порчи оборудования (т.е. монитора). Особенно это касается всех!
  13. ;! тех, чей монитор не имеет защиты от перегрузок по частоте.                         !
  14. ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  15. ;    
  16. ;---------------------------------------------------------------------
  17.  
  18.   use32              ; включить 32-битный режим ассемблера
  19.   org    0x0         ; адресация с нуля
  20.  
  21.   db     'MENUET01'  ; 8-байтный идентификатор MenuetOS
  22.   dd     0x01        ; версия заголовка (всегда 1)
  23.   dd     START       ; адрес первой команды
  24.   dd     I_END       ; размер программы
  25.   dd     0x1000      ; количество памяти
  26.   dd     0x1000      ; адрес вершины стэка
  27.   dd     0x0         ; адрес буфера для параметров (не используется)
  28.   dd     0x0         ; зарезервировано
  29.  
  30. include '..\..\..\macros.inc' ; макросы облегчают жизнь ассемблерщиков!
  31.  
  32. ;---------------------------------------------------------------------
  33. ;---  НАЧАЛО ПРОГРАММЫ  ----------------------------------------------
  34. ;---------------------------------------------------------------------
  35.  
  36. START:
  37. ;       mcall 5,10
  38.         mov     ecx, 1
  39.         mov     edx, drvinfo
  40.         push    @f
  41.         jmp     call_driver
  42. @@:
  43. ;       jmp run_launcher
  44.  
  45.         mov     ecx, 2
  46.         push    @f
  47. call_driver:
  48.         mcall 21,13
  49.         ret
  50. @@:
  51. ;       cmp eax,-1
  52.         inc     eax
  53.        je   run_launcher
  54. ;       cmp  ecx,280
  55. ;       je  change_vrr
  56. ;       cmp  ecx,277
  57. ;       je  change_vrr
  58. ;       cmp  ecx,6
  59. ;       je  change_vrr
  60. ;       cmp  ecx,7
  61. ;       je  change_vrr
  62. ;       jmp  run_launcher
  63. change_vrr:
  64. ;       mov ax,cx
  65. ;       dec cx
  66. ;       shl cx,1
  67. ;       xor edx,edx
  68. ;       mov dx,[vidmode+ecx]
  69. ;       mov ebx,ecx
  70. ;       shl ebx,2
  71. ;       add ebx,ecx   ; ebx=ebx*5
  72. ;       shr ax,8
  73. ;       dec ax
  74. ;       shl ax,1
  75. ;       add ebx,eax
  76. ;       ror edx,16
  77. ;       mov dx,[_m1+ebx]
  78. ;       rol edx,16
  79.         ;mov eax,ecx
  80.         mov     eax, 10
  81.         cmp cx,277+3
  82.         je  yes_277
  83.         cmp cx,274+3
  84.         jne yes_280
  85.      yes_274:
  86.         add al,10
  87.      yes_277:
  88.         add al,10
  89.      yes_280:
  90.         mov     edx, [_m1+eax-2]
  91.         lea     dx, [ecx-3]
  92.         push    run_launcher
  93.         mov     ecx, 3
  94.         jmp     call_driver
  95. run_launcher:
  96.        mcall 70,launcher
  97.        mcall -1
  98. launcher:
  99.         dd      7
  100.         dd      0
  101.         dd      0
  102.         dd      0
  103.         dd      0
  104.         db      '/RD/1/LAUNCHER'
  105. I_END:                             ; метка конца программы
  106.         db      ?       ; system loader will zero all memory after program end
  107.                         ; this byte will be terminating zero for launcher string
  108. ; \begin{Serge}
  109.                         ; A you really believe it?
  110.                         ; ┴ырцхэ, ъЄю тхЁєхЄ, Єхяыю хьє эр ётхЄх!
  111. ; \end{Serge}
  112. drvinfo:   ; 512 bytes driver info area
  113. ; +0   - Full driver name
  114. ; +32  - Driver version
  115. ; +64  - Word List of support video modes (max 32 positions)
  116. ; +128 - 5 words list of support vertical rate to each present mode
  117.       org $+32
  118. drvver:
  119.       org $+32
  120. vidmode:
  121.       org $+64
  122. _m1:
  123.       org drvinfo+200h
  124.