Subversion Repositories Kolibri OS

Rev

Rev 6258 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6258 Rev 6890
1
;   à®á⮩ ¯à¨¬¥à ¯à®£à ¬¬ë ¤«ï KolibriOS
1
;   à®á⮩ ¯à¨¬¥à ¯à®£à ¬¬ë ¤«ï KolibriOS
2
;   ®§¢ã稢 ¥â ª®¤ ­ ¦ â®© ª« ¢¨è¨
2
;   ®§¢ã稢 ¥â ª®¤ ­ ¦ â®© ª« ¢¨è¨
3
;
3
;
4
;   Š®¬¯¨«¨à®¢ âì FASM'®¬
4
;   Š®¬¯¨«¨à®¢ âì FASM'®¬
5
;        Œ®¦­® ®âªàëâì example.asm ç¥à¥§ ¯à®£à ¬¬ã FASM (¥ñ ïà«ëª ¥áâì
5
;        Œ®¦­® ®âªàëâì example.asm ç¥à¥§ ¯à®£à ¬¬ã FASM (¥ñ ïà«ëª ¥áâì
6
;        ­  à ¡®ç¥¬ á⮫¥)
6
;        ­  à ¡®ç¥¬ á⮫¥)
7
;        € ¬®¦­® ¯à®áâ® ­ ¦ âì F9 ¢ Tinypad'¥. ‹®£ ª®¬¯¨«ï樨 
7
;        € ¬®¦­® ¯à®áâ® ­ ¦ âì F9 ¢ Tinypad'¥. ‹®£ ª®¬¯¨«ï樨 
8
;        ®â®¡à ¦ ¥âáï ­  ¤®áª¥ ®â« ¤ª¨ (¯à®£à ¬¬  BOARD)
8
;        ®â®¡à ¦ ¥âáï ­  ¤®áª¥ ®â« ¤ª¨ (¯à®£à ¬¬  BOARD)
9
;
9
;
10
;   —â® ¢ ¦­® §­ âì ¯à¨ ¯à®£à ¬¬¨à®¢ ­¨¨ ¯®¤ Š®«¨¡à¨:
10
;   —â® ¢ ¦­® §­ âì ¯à¨ ¯à®£à ¬¬¨à®¢ ­¨¨ ¯®¤ Š®«¨¡à¨:
11
;        ®¬¥à ä㭪樨 ¯®¬¥é ¥âáï ¢ ॣ¨áâà eax.
11
;        ®¬¥à ä㭪樨 ¯®¬¥é ¥âáï ¢ ॣ¨áâà eax.
12
;        ‚맮¢ á¨á⥬­®© ä㭪樨 ®áãé¥á⢫ï¥âáï ª®¬ ­¤®© "int 0x40".
12
;        ‚맮¢ á¨á⥬­®© ä㭪樨 ®áãé¥á⢫ï¥âáï ª®¬ ­¤®© "int 0x40".
13
;        ‚ᥠॣ¨áâàë, ªà®¬¥ ® 㪠§ ­­ëå ¢ ¢®§¢à é ¥¬®¬ §­ ç¥­¨¨,
13
;        ‚ᥠॣ¨áâàë, ªà®¬¥ ® 㪠§ ­­ëå ¢ ¢®§¢à é ¥¬®¬ §­ ç¥­¨¨,
14
;        ¢ª«îç ï ॣ¨áâà ä« £®¢ eflags, á®åà ­ïîâáï.
14
;        ¢ª«îç ï ॣ¨áâà ä« £®¢ eflags, á®åà ­ïîâáï.
15
;
15
;
16
;    à¨¬¥à:
16
;    à¨¬¥à:
17
;        mov eax, 1    ;”ã­ªæ¨ï 1 - ¯®áâ ¢¨âì â®çªã ¢ ®ª­¥
17
;        mov eax, 1    ;”ã­ªæ¨ï 1 - ¯®áâ ¢¨âì â®çªã ¢ ®ª­¥
18
;                      ;ᯨ᮪ á¨áä㭪権 á¬. ¢ DOCPACK - sysfuncr.txt
18
;                      ;ᯨ᮪ á¨áä㭪権 á¬. ¢ DOCPACK - sysfuncr.txt
19
;        mov ebx, 10   ; ª®®à¤¨­ â  x=10
19
;        mov ebx, 10   ; ª®®à¤¨­ â  x=10
20
;        mov ecx, 20   ; ª®®à¤¨­ â  y=10
20
;        mov ecx, 20   ; ª®®à¤¨­ â  y=10
21
;        mov edx, 0xFFFfff ;梥â â®çª¨
21
;        mov edx, 0xFFFfff ;梥â â®çª¨
22
;        int 0x40      ;¢ë§¢ âì äã­ªæ¨î
22
;        int 0x40      ;¢ë§¢ âì äã­ªæ¨î
23
;
23
;
24
;    ’®¦¥ á ¬®¥ á ¨á¯®«ì§®¢ ­¨¥¬ ¬ ªà®á :
24
;    ’®¦¥ á ¬®¥ á ¨á¯®«ì§®¢ ­¨¥¬ ¬ ªà®á :
25
;        mcall 1, 10, 20, 0xFFFfff
25
;        mcall 1, 10, 20, 0xFFFfff
26
;---------------------------------------------------------------------
26
;---------------------------------------------------------------------
27
 
27
 
28
  use32              ; ¢ª«îç¨âì 32-¡¨â­ë© ०¨¬  áᥬ¡«¥à 
28
  use32              ; ¢ª«îç¨âì 32-¡¨â­ë© ०¨¬  áᥬ¡«¥à 
29
  org    0x0         ;  ¤à¥á æ¨ï á ­ã«ï
29
  org    0           ;  ¤à¥á æ¨ï á ­ã«ï
30
 
30
 
31
  db     'MENUET01'  ; 8-¡ ©â­ë© ¨¤¥­â¨ä¨ª â®à MenuetOS
31
  db     'MENUET01'  ; 8-¡ ©â­ë© ¨¤¥­â¨ä¨ª â®à MenuetOS
32
  dd     0x01        ; ¢¥àá¨ï § £®«®¢ª  (¢á¥£¤  1)
32
  dd     1           ; ¢¥àá¨ï § £®«®¢ª  (¢á¥£¤  1)
33
  dd     START       ;  ¤à¥á ¯¥à¢®© ª®¬ ­¤ë
33
  dd     START       ;  ¤à¥á ¯¥à¢®© ª®¬ ­¤ë
34
  dd     I_END       ; à §¬¥à ¯à®£à ¬¬ë
34
  dd     I_END       ; à §¬¥à ¯à®£à ¬¬ë
35
  dd     0x1000      ; ª®«¨ç¥á⢮ ¯ ¬ïâ¨
35
  dd     MEM         ; ª®«¨ç¥á⢮ ¯ ¬ïâ¨
36
  dd     0x1000      ;  ¤à¥á ¢¥à設ë áâíª 
36
  dd     STACKTOP    ;  ¤à¥á ¢¥à設ë áâíª 
37
  dd     0x0         ;  ¤à¥á ¡ãä¥à  ¤«ï ¯ à ¬¥â஢
37
  dd     0           ;  ¤à¥á ¡ãä¥à  ¤«ï ¯ à ¬¥â஢
38
  dd     0x0         ; § à¥§¥à¢¨à®¢ ­®
38
  dd     0           ; § à¥§¥à¢¨à®¢ ­®
39
 
39
 
40
include "macros.inc" ; ¬ ªà®áë ®¡«¥£ç îâ ¦¨§­ì  áᥬ¡«¥à騪®¢!
40
include "macros.inc" ; ¬ ªà®áë ®¡«¥£ç îâ ¦¨§­ì  áᥬ¡«¥à騪®¢!
41
 
41
 
42
;---------------------------------------------------------------------
42
;---------------------------------------------------------------------
43
;---  €—€‹Ž Žƒ€ŒŒ›  ----------------------------------------------
43
;---  €—€‹Ž Žƒ€ŒŒ›  ----------------------------------------------
44
;---------------------------------------------------------------------
44
;---------------------------------------------------------------------
45
 
45
 
46
START:
46
START:
47
 
47
 
48
red:                    ; ¯¥à¥à¨á®¢ âì ®ª­®
48
red:                    ; ¯¥à¥à¨á®¢ âì ®ª­®
49
 
49
 
50
    call draw_window    ; ¢ë§ë¢ ¥¬ ¯à®æ¥¤ãàã ®âà¨á®¢ª¨ ®ª­ 
50
    call draw_window    ; ¢ë§ë¢ ¥¬ ¯à®æ¥¤ãàã ®âà¨á®¢ª¨ ®ª­ 
51
 
51
 
52
;---------------------------------------------------------------------
52
;---------------------------------------------------------------------
53
;---  –ˆŠ‹ Ž€Ž’Šˆ ‘Ž›’ˆ‰  ----------------------------------------
53
;---  –ˆŠ‹ Ž€Ž’Šˆ ‘Ž›’ˆ‰  ----------------------------------------
54
;---------------------------------------------------------------------
54
;---------------------------------------------------------------------
55
 
55
 
56
still:
56
still:
57
    mcall 10            ; äã­ªæ¨ï 10 - ¦¤ âì ᮡëâ¨ï
57
    mcall 10            ; äã­ªæ¨ï 10 - ¦¤ âì ᮡëâ¨ï
58
 
58
 
59
    cmp  eax,1          ; ¯¥à¥à¨á®¢ âì ®ª­® ?
59
    cmp  eax,1          ; ¯¥à¥à¨á®¢ âì ®ª­® ?
60
    je   red            ; ¥á«¨ ¤  - ­  ¬¥âªã red
60
    je   red            ; ¥á«¨ ¤  - ­  ¬¥âªã red
61
    cmp  eax,2          ; ­ ¦ â  ª« ¢¨è  ?
61
    cmp  eax,2          ; ­ ¦ â  ª« ¢¨è  ?
62
    je   key            ; ¥á«¨ ¤  - ­  key
62
    je   key            ; ¥á«¨ ¤  - ­  key
63
    cmp  eax,3          ; ­ ¦ â  ª­®¯ª  ?
63
    cmp  eax,3          ; ­ ¦ â  ª­®¯ª  ?
64
    je   button         ; ¥á«¨ ¤  - ­  button
64
    je   button         ; ¥á«¨ ¤  - ­  button
65
 
65
 
66
    jmp  still          ; ¥á«¨ ¤à㣮¥ ᮡë⨥ - ¢ ­ ç «® 横« 
66
    jmp  still          ; ¥á«¨ ¤à㣮¥ ᮡë⨥ - ¢ ­ ç «® 横« 
67
 
67
 
68
 
68
 
69
;---------------------------------------------------------------------
69
;---------------------------------------------------------------------
70
 
70
 
71
 
71
 
72
  key:                  ; ­ ¦ â  ª« ¢¨è  ­  ª« ¢¨ âãà¥
72
  key:                  ; ­ ¦ â  ª« ¢¨è  ­  ª« ¢¨ âãà¥
73
    mcall 2             ; äã­ªæ¨ï 2 - áç¨â âì ª®¤ ᨬ¢®«  (¢ ah)
73
    mcall 2             ; äã­ªæ¨ï 2 - áç¨â âì ª®¤ ᨬ¢®«  (¢ ah)
74
 
74
 
75
    mov  [Music+1], ah  ; § ¯¨á âì ª®¤ ᨬ¢®«  ª ª ª®¤ ­®âë
75
    mov  [Music+1], ah  ; § ¯¨á âì ª®¤ ᨬ¢®«  ª ª ª®¤ ­®âë
76
 
76
 
77
    ; äã­ªæ¨ï 55-55: á¨á⥬­ë© ¤¨­ ¬¨ª ("PlayNote")
77
    ; äã­ªæ¨ï 55-55: á¨á⥬­ë© ¤¨­ ¬¨ª ("PlayNote")
78
    ;   esi -  ¤à¥á ¬¥«®¤¨¨
78
    ;   esi -  ¤à¥á ¬¥«®¤¨¨
79
 
79
 
80
    ;   mov  eax,55
80
    ;   mov  eax,55
81
    ;   mov  ebx,eax
81
    ;   mov  ebx,eax
82
    ;   mov  esi,Music
82
    ;   mov  esi,Music
83
    ;   int  0x40
83
    ;   int  0x40
84
 
84
 
85
    ; ¨«¨ ª®à®âª®:
85
    ; ¨«¨ ª®à®âª®:
86
    mcall 55, eax, , , Music
86
    mcall 55, eax, , , Music
87
 
87
 
88
    jmp  still          ; ¢¥à­ãâìáï ª ­ ç «ã 横« 
88
    jmp  still          ; ¢¥à­ãâìáï ª ­ ç «ã 横« 
89
 
89
 
90
;---------------------------------------------------------------------
90
;---------------------------------------------------------------------
91
 
91
 
92
  button:
92
  button:
93
    mcall 17            ; 17 - ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
93
    mcall 17            ; 17 - ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
94
 
94
 
95
    cmp   ah, 1         ; ¥á«¨ … ­ ¦ â  ª­®¯ª  á ­®¬¥à®¬ 1,
95
    cmp   ah, 1         ; ¥á«¨ … ­ ¦ â  ª­®¯ª  á ­®¬¥à®¬ 1,
96
    jne   still         ;  ¢¥à­ãâìáï
96
    jne   still         ;  ¢¥à­ãâìáï
97
 
97
 
98
  .exit:
98
  .exit:
99
    mcall -1            ; ¨­ ç¥ ª®­¥æ ¯à®£à ¬¬ë
99
    mcall -1            ; ¨­ ç¥ ª®­¥æ ¯à®£à ¬¬ë
100
 
100
 
101
 
101
 
102
;---------------------------------------------------------------------
102
;---------------------------------------------------------------------
103
;---  Ž…„…‹…ˆ… ˆ Ž’ˆ‘Ž‚Š€ ŽŠ€  ----------------------------------
103
;---  Ž…„…‹…ˆ… ˆ Ž’ˆ‘Ž‚Š€ ŽŠ€  ----------------------------------
104
;---------------------------------------------------------------------
104
;---------------------------------------------------------------------
105
 
105
 
106
draw_window:
106
draw_window:
107
 
107
 
108
    mcall 12, 1       ; äã­ªæ¨ï 12: á®®¡é¨âì Ž‘ ® ­ ç «¥ ®âà¨á®¢ª¨
108
    mcall 12, 1       ; äã­ªæ¨ï 12: á®®¡é¨âì Ž‘ ® ­ ç «¥ ®âà¨á®¢ª¨
109
	
109
	
110
    mcall 48, 3, sc,sizeof.system_colors
110
    mcall 48, 3, sc,sizeof.system_colors
111
	
111
	
112
    ; ¤ «¥¥: á­ ç «  ¤«¨­­ë© ¢ à¨ ­â (§ ª®¬¬¥­â¨à®¢ ­­ë©)
112
    ; ¤ «¥¥: á­ ç «  ¤«¨­­ë© ¢ à¨ ­â (§ ª®¬¬¥­â¨à®¢ ­­ë©)
113
    ; § â¥¬ ª®à®âª¨©  ­ «®£ á ¨á¯®«ì§®¢ ­¨¥¬ ¬ ªà®á®¢
113
    ; § â¥¬ ª®à®âª¨©  ­ «®£ á ¨á¯®«ì§®¢ ­¨¥¬ ¬ ªà®á®¢
114
 
114
 
115
;   mov  eax,0                   ; äã­ªæ¨ï 0: ®¯à¥¤¥«¨âì ®ª­®
115
;   mov  eax,0                   ; äã­ªæ¨ï 0: ®¯à¥¤¥«¨âì ®ª­®
116
;   mov  ebx,200*65536+300       ; [x áâ àâ] *65536 + [x à §¬¥à]
116
;   mov  ebx,200*65536+300       ; [x áâ àâ] *65536 + [x à §¬¥à]
117
;   mov  ecx,200*65536+150       ; [y áâ àâ] *65536 + [y à §¬¥à]
117
;   mov  ecx,200*65536+150       ; [y áâ àâ] *65536 + [y à §¬¥à]
118
;   mov  edx, [sc.work]          ; 梥â ä®­ 
118
;   mov  edx, [sc.work]          ; 梥â ä®­ 
119
;   or   edx, 0x33000000         ; ¨ ⨯ ®ª­  3
119
;   or   edx, 0x33000000         ; ¨ ⨯ ®ª­  3
120
;   mov  edi,header              ; ‡€ƒŽ‹Ž‚ŽŠ ŽŠ€
120
;   mov  edi,header              ; ‡€ƒŽ‹Ž‚ŽŠ ŽŠ€
121
;   int  0x40
121
;   int  0x40
122
 
122
 
123
    mov   edx, [sc.work]         ; 梥â ä®­ 
123
    mov   edx, [sc.work]         ; 梥â ä®­ 
124
    or    edx, 0x33000000        ; ¨ ⨯ ®ª­  3
124
    or    edx, 0x33000000        ; ¨ ⨯ ®ª­  3
125
    mcall 0, <200,300>, <200,150>, , ,title
125
    mcall 0, <200,300>, <200,150>, , ,title
126
 
126
 
127
    ; ¢ë¢®¤ ⥪á⮢®© áâப¨
127
    ; ¢ë¢®¤ ⥪á⮢®© áâப¨
128
    mov   ecx, [sc.work_text]    ; 梥â ä®­ 
128
    mov   ecx, [sc.work_text]    ; 梥â ä®­ 
129
    or    ecx, 0x90000000        ; ¨ ⨯ áâப¨
129
    or    ecx, 0x90000000        ; ¨ ⨯ áâப¨
130
    mcall 4, <10, 20>, 0x90000000, message
130
    mcall 4, <10, 20>, , message
131
 
131
 
132
	
132
 
133
    mcall 12, 2                  ; äã­ªæ¨ï 12.2, § ª®­ç¨«¨ à¨á®¢ âì
133
    mcall 12, 2                  ; äã­ªæ¨ï 12.2, § ª®­ç¨«¨ à¨á®¢ âì
134
 
134
 
135
    ret                          ; ¢ë室¨¬ ¨§ ¯à®æ¥¤ãàë
135
    ret                          ; ¢ë室¨¬ ¨§ ¯à®æ¥¤ãàë
136
 
136
 
137
 
137
 
138
;---------------------------------------------------------------------
138
;---------------------------------------------------------------------
139
;---  „€›… Žƒ€ŒŒ›  ----------------------------------------------
139
;---  „€›… Žƒ€ŒŒ›  ----------------------------------------------
140
;---------------------------------------------------------------------
140
;---------------------------------------------------------------------
141
 
141
 
142
; ‚®â â ª ï ¢®â ª®à®âª ï "¬¥«®¤¨ï".
142
; ‚®â â ª ï ¢®â ª®à®âª ï "¬¥«®¤¨ï".
143
; ‚â®à®© ¡ ©â ¨§¬¥­ï¥âáï ­ ¦ â¨¥¬ ª« ¢¨èë
143
; ‚â®à®© ¡ ©â ¨§¬¥­ï¥âáï ­ ¦ â¨¥¬ ª« ¢¨èë
144
 
144
 
145
Music:
145
Music:
146
  db  0x90, 0x30, 0
146
  db  0x90, 0x30, 0
147
 
147
 
148
sc system_colors
148
sc system_colors
149
 
149
 
150
message db ' ¦¬¨â¥ «î¡ãî ª« ¢¨èã...',0
150
message db ' ¦¬¨â¥ «î¡ãî ª« ¢¨èã...',0
151
title db 'à¨¬¥à ¯à®£à ¬¬ë',0
151
title db 'à¨¬¥à ¯à®£à ¬¬ë',0
152
 
152
 
153
;---------------------------------------------------------------------
153
;---------------------------------------------------------------------
154
 
154
 
155
I_END:                           ; ¬¥âª  ª®­æ  ¯à®£à ¬¬ë
155
I_END:                  ; ¬¥âª  ª®­æ  ¯à®£à ¬¬ë
-
 
156
  rb 4096               ; ¯ ¬ïâì ¤«ï á⥪ 
-
 
157
align 16
-
 
158
STACKTOP:               ; ¬¥âª  ¢¥à設ë á⥪  (¯à¨ § ¯®«­¥­¨¨ á⥪
-
 
159
                        ; à áâ¥â ¢ áâ®à®­ã 㬥­ì襭¨ï  ¤à¥á®¢, ¯®â®¬ã
-
 
160
                        ; ¯ ¬ïâì ¤«ï ­¥£® ¢ ª®¤¥ ¯à®£à ¬¬ë ¢áâà¥ç ¥âáï
-
 
161
                        ; à ­ìè¥ ç¥¬ ¥£® ¢¥à設 )
-
 
162
MEM:                    ; ¬¥âª  㪠§ë¢ îé ï ­  ª®­¥æ ¯à®£à ¬¬ë ¯«îá
-
 
163
                        ; à §¬¥à ¨á¯®«ì§ã¥¬®© ¥î ®¯¥à â¨¢­®© ¯ ¬ïâ¨
-
 
164
; €¤à¥á ¬¥âª¨ MEM ¢á¥£¤  ¤®«¦¥­ ¡ëâì ¡®«ìè¥ ç¥¬  ¤à¥á ¬¥âª¨ I_END.
-
 
165
; Œ¥âª  STACKTOP ¤®«¦­  à á¯®« £ ¥âáï ¯®á«¥ ¬¥âª¨ I_END ¨ ¯¥à¥¤ ¬¥âª®©
-
 
166
;   MEM. STACKTOP ¬®¦¥â ­ å®¤¨âáï ¨ ¯¥à¥¤ I_END, ­® íâ® ­¥ ¯à ¢¨«ì­®.
-
 
167
; ˆ¬¥­  ¬¥â®ª ¬®£ãâ ¡ëâì á «î¡ë¬¨ ­ §¢ ­¨ï¬¨, £« ¢­®¥ ᮡ«î¤ âì
-
 
168
;   ¯à ¢¨«ì­ë© ¯®à冷ª ¨å à á¯®«®¦¥­¨ï.
156
169