Subversion Repositories Kolibri OS

Rev

Rev 502 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
31 halyavin 1
;
451 heavyiron 2
;   Системная программа для установки повышенных (>60 Hz) частот обновления
3
;   экрана за счет снижения разрешения
502 heavyiron 4
;   (для переходов:  1024х768*60-->800х600*98
5
;                     800х600*60-->640х480*94)
31 halyavin 6
;
7
;   Компилировать FASM'ом
8
;
451 heavyiron 9
;   !!!!!_Предупреждение_!!!!!:
10
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
11
;! На текущий момент программа носит ЭКСПЕРИМЕНТАЛЬНЫЙ (!) характер, поэтому всегда   !
12
;! остается вероятность порчи оборудования (т.е. монитора). Особенно это касается всех!
13
;! тех, чей монитор не имеет защиты от перегрузок по частоте.                         !
14
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15
;
31 halyavin 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
 
485 heavyiron 30
include '..\..\..\macros.inc' ; макросы облегчают жизнь ассемблерщиков!
31 halyavin 31
 
32
;---------------------------------------------------------------------
33
;---  НАЧАЛО ПРОГРАММЫ  ----------------------------------------------
34
;---------------------------------------------------------------------
35
 
36
START:
37
;       mcall 5,10
143 diamond 38
        mov     ecx, 1
39
        mov     edx, drvinfo
40
        push    @f
41
        jmp     call_driver
42
@@:
31 halyavin 43
;       jmp run_launcher
44
 
143 diamond 45
        mov     ecx, 2
46
        push    @f
47
call_driver:
48
        mcall 21,13
49
        ret
50
@@:
51
;       cmp eax,-1
52
        inc     eax
31 halyavin 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
143 diamond 80
        mov     eax, 10
81
        cmp cx,277+3
82
        je  yes_277
83
        cmp cx,274+3
84
        jne yes_280
31 halyavin 85
     yes_274:
86
        add al,10
87
     yes_277:
88
        add al,10
89
     yes_280:
143 diamond 90
        mov     edx, [_m1+eax-2]
91
        lea     dx, [ecx-3]
92
        push    run_launcher
93
        mov     ecx, 3
94
        jmp     call_driver
31 halyavin 95
run_launcher:
143 diamond 96
       mcall 70,launcher
31 halyavin 97
       mcall -1
143 diamond 98
launcher:
99
        dd      7
100
        dd      0
101
        dd      0
102
        dd      0
103
        dd      0
529 spraid 104
        db      '/sys/LAUNCHER'
143 diamond 105
I_END:                             ; метка конца программы
106
        db      ?       ; system loader will zero all memory after program end
107
                        ; this byte will be terminating zero for launcher string
248 serge 108
; \begin{Serge}
109
                        ; A you really believe it?
110
                        ; ┴ырцхэ, ъЄю тхЁєхЄ, Єхяыю хьє эр ётхЄх!
111
; \end{Serge}
31 halyavin 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