Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
31 halyavin 1
;
2
;   Пример программы для MenuetOS
3
;   озвучивает код нажатой клавиши ;)
4
;
5
;   Компилировать FASM'ом
6
;
7
;   См. также:
8
;     template.asm  -  пример простейшей программы (новый!)
9
;     rb.asm        -  контекстное меню рабочего стола
10
;     example2.asm  -  пример меню и дополнительных окон
11
;     example3.asm  -  пример меню, реализованного по-другому
12
;---------------------------------------------------------------------
13
 
14
  use32              ; включить 32-битный режим ассемблера
15
  org    0x0         ; адресация с нуля
16
 
17
  db     'MENUET01'  ; 8-байтный идентификатор MenuetOS
18
  dd     0x01        ; версия заголовка (всегда 1)
19
  dd     START       ; адрес первой команды
20
  dd     I_END       ; размер программы
21
  dd     0x1000      ; количество памяти
22
  dd     0x1000      ; адрес вершины стэка
23
  dd     0x0         ; адрес буфера для параметров (не используется)
24
  dd     0x0         ; зарезервировано
25
 
26
include 'lang.inc'
27
include 'macros.inc' ; макросы облегчают жизнь ассемблерщиков!
28
 
29
;---------------------------------------------------------------------
30
;---  НАЧАЛО ПРОГРАММЫ  ----------------------------------------------
31
;---------------------------------------------------------------------
32
 
33
START:
34
;       mcall 5,10
35
       mcall 21,13,1,drvinfo
36
;       jmp run_launcher
37
 
38
       mcall 21,13,2
39
       cmp eax,-1
40
       je   run_launcher
41
;       cmp  ecx,280
42
;       je  change_vrr
43
;       cmp  ecx,277
44
;       je  change_vrr
45
;       cmp  ecx,6
46
;       je  change_vrr
47
;       cmp  ecx,7
48
;       je  change_vrr
49
;       jmp  run_launcher
50
change_vrr:
51
;       mov ax,cx
52
;       dec cx
53
;       shl cx,1
54
;       xor edx,edx
55
;       mov dx,[vidmode+ecx]
56
;       mov ebx,ecx
57
;       shl ebx,2
58
;       add ebx,ecx   ; ebx=ebx*5
59
;       shr ax,8
60
;       dec ax
61
;       shl ax,1
62
;       add ebx,eax
63
;       ror edx,16
64
;       mov dx,[_m1+ebx]
65
;       rol edx,16
66
        ;mov eax,ecx
67
        xor eax,eax
68
        sub ecx,3
69
        mov dx,cx
70
        cmp cx,274
71
        je yes_274
72
        cmp cx,277
73
        je yes_277
74
        jmp yes_280
75
     yes_274:
76
        add al,10
77
     yes_277:
78
        add al,10
79
     yes_280:
80
        add al,10
81
        ror edx,16
82
        mov dx,[_m1+eax]
83
        rol edx,16
84
;       mov dx,bx
85
;       shl edx,16
86
;       mov  dx,cx
87
       mcall 21,13,3
88
;       mcall 5,300
89
run_launcher:
90
       mcall 19,launcher,0
91
;       mcall 33,text,drvinfo,512,0
92
       mcall -1
93
launcher db  'LAUNCHER   '
94
;text      db  'TEXT       '
95
drvinfo:   ; 512 bytes driver info area
96
; +0   - Full driver name
97
; +32  - Driver version
98
; +64  - Word List of support video modes (max 32 positions)
99
; +128 - 5 words list of support vertical rate to each present mode
100
      org $+32
101
drvver:
102
      org $+32
103
vidmode:
104
      org $+64
105
_m1:
106
      org drvinfo+200h
107
 
108
I_END:                             ; метка конца программы