Subversion Repositories Kolibri OS

Rev

Rev 1863 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1863 Rev 2076
Line 1... Line 1...
1
; --------------------------------------------------------
1
; --------------------------------------------------------
-
 
2
; KJ|ABuIIIA - ª« ¢¨ âãà­ë© â७ ¦ñà ¤«ï ®¯¥à æ¨®­­®© á¨áâ¥¬ë Š®«¨¡à¨.
-
 
3
;---------------------------------------------------------------------
2
; KJ|ABuIIIA  0.9
4
; version:	0.95
-
 
5
; last update:  19/08/2011
-
 
6
; changed by:   Marat Zakiyanov aka Mario79, aka Mario
-
 
7
; changes:      1) Checking for "rolled up" window
-
 
8
;               2) Code optimization
-
 
9
;               3) Clearing source
3
; --------------------------------------------------------
10
;---------------------------------------------------------------------
4
; Š« ¢¨ âãà­ë© â७ ¦ñà ¤«ï ®¯¥à æ¨®­­®© á¨áâ¥¬ë Š®«¨¡à¨.
-
 
5
;
11
; version:	0.90
6
;  §à ¡®â稪¨:
12
; last update:  24/07/2010
7
; - €­¤à¥© Œ¨å ©«®¢¨ç (Dron2004)
13
; changed by:   €­¤à¥© Œ¨å ©«®¢¨ç (Dron2004)
8
;
14
;
9
; ®á«¥¤­¨¥ ¨§¬¥­¥­¨ï ¢ ¨á室­®¬ ª®¤¥: 24.07.2010 21:15 GMT+6
15
; ®á«¥¤­¨¥ ¨§¬¥­¥­¨ï ¢ ¨á室­®¬ ª®¤¥: 24.07.2010 21:15 GMT+6
10
 
-
 
11
 
-
 
-
 
16
;---------------------------------------------------------------------
12
 use32
17
	use32
13
 org 0x0
18
	org 0x0
14
 
-
 
15
 ;‡ £®«®¢®ª
19
	;‡ £®«®¢®ª
16
 db 'MENUET01'
20
	db 'MENUET01'
17
 dd 0x01
21
	dd 0x01
18
 dd START
22
	dd START
-
 
23
	dd IM_END
19
 dd I_END
24
	dd I_END
20
 dd 0x10000
-
 
21
 dd 0x10000
25
	dd stacktop
22
 dd params
26
	dd params
23
 dd 0x0
27
	dd 0x0
24
 
-
 
-
 
28
;---------------------------------------------------------------------
-
 
29
include 'lang.inc'
-
 
30
include '../../../macros.inc'
-
 
31
;---------------------------------------------------------------------
25
;Š®¤ ¯à®£à ¬¬ë
32
;Š®¤ ¯à®£à ¬¬ë
26
START:
33
START:
-
 
34
;ˆ­¨æ¨ «¨§¨à㥬 ªãçã
27
 
35
	mcall	68,11
28
      ; call get_screen_params
36
;	call	get_screen_params
29
 
-
 
30
	mov eax, 0x0000001C
37
;	mov	eax,0x0000001C
31
	cmp eax, 0x0
38
;	cmp	eax,0x0
32
	je start_with_internal_text  ;  à ¬¥âàë ­¥ § ¤ ­ë
39
;	je	start_with_internal_text  ;  à ¬¥âàë ­¥ § ¤ ­ë
Line 33... Line 40...
33
 
40
 
34
	;  à ¬¥âà § ¤ ­! ëâ ¥¬áï í⨬ ¢®á¯®«ì§®¢ âìáï
41
;  à ¬¥âà § ¤ ­! ëâ ¥¬áï í⨬ ¢®á¯®«ì§®¢ âìáï
35
	; ¥®¡å®¤¨¬® ®¯à¥¤¥«¨âì à §¬¥à ä ©« ... ‚¯¥àñ¤!!!
42
; ¥®¡å®¤¨¬® ®¯à¥¤¥«¨âì à §¬¥à ä ©« ... ‚¯¥àñ¤!!!
36
	mov eax, 5
43
	mov	eax,5
Line 41... Line 48...
41
	mov [arg4], eax
48
	mov	[arg4],eax
42
	mov eax, filedatastruct
49
	mov	eax,filedatastruct
43
	mov [arg5], eax
50
	mov	[arg5],eax
44
	mov eax, [0x0000001C]
51
	mov	eax,[0x0000001C]
45
	mov [arg7], eax
52
	mov	[arg7],eax
46
 
-
 
47
	mov eax, 70;
-
 
48
	mov ebx, filestruct
53
	mcall	70,filestruct
49
	int 0x40
-
 
50
 
-
 
51
	cmp eax, 0
54
	test	eax,eax
52
	jne start_with_internal_text  ;Žè¨¡ª 
55
	jne	start_with_internal_text	;Žè¨¡ª 
53
 
-
 
54
	mov eax, dword [size]
56
	mov	eax, dword [size]
55
	mov [filesize], eax  ;⥯¥àì à §¬¥à ä ©«  ã ­ á ¢ filesize
57
	mov	[filesize], eax  ;⥯¥àì à §¬¥à ä ©«  ã ­ á ¢ filesize
56
 
-
 
57
	;ˆ­¨æ¨ «¨§¨à㥬 ªãçã
-
 
58
 
-
 
59
	mov eax, 68
-
 
60
	mov ebx, 11
-
 
61
	int 0x40
-
 
62
 
-
 
63
	cmp eax, 0x0
-
 
64
	je start_with_internal_text   ;Žè¨¡ª 
-
 
65
 
-
 
66
	;‚뤥«ï¥¬ ¡«®ª ¯ ¬ï⨠¯®¤ ä ©«
58
;‚뤥«ï¥¬ ¡«®ª ¯ ¬ï⨠¯®¤ ä ©«
67
	mov eax, 68
-
 
68
	mov ebx, 12
-
 
69
	mov ecx, [filesize]
59
	mov	ecx, [filesize]
70
	inc ecx  ;‚뤥«¨¬ ¤®¯®«­¨â¥«ì­® ®¤¨­ ¡ ©â ¤«ï ⮣®, çâ®¡ë ¤®¡ ¢¨âì 0xFF
60
	inc	ecx  ;‚뤥«¨¬ ¤®¯®«­¨â¥«ì­® ®¤¨­ ¡ ©â ¤«ï ⮣®, çâ®¡ë ¤®¡ ¢¨âì 0xFF
71
		 ;§ é¨â  ®â "¡¨âëå" KLA-ä ©«®¢
61
		 ;§ é¨â  ®â "¡¨âëå" KLA-ä ©«®¢
72
	int 0x40
62
	mcall	68,12
73
 
-
 
74
	mov [datastart], eax	;‚ ¯¥à¥¬¥­­®© „ â ‘â àâ ⥯¥àì ­ å®¤¨âáï 㪠§ â¥«ì
63
	mov	[datastart], eax	;‚ ¯¥à¥¬¥­­®© „ â ‘â àâ ⥯¥àì ­ å®¤¨âáï 㪠§ â¥«ì
75
 
-
 
76
	add eax, [filesize]
64
	add	eax, [filesize]
77
	mov bh, 0xFF
65
	mov	bh, 0xFF
78
	mov [eax], bh
66
	mov	[eax], bh
79
 
-
 
80
	;‘®¡á⢥­­®, áç¨â뢠¥¬ ä ©« ¢ ¯ ¬ïâì
67
;‘®¡á⢥­­®, áç¨â뢠¥¬ ä ©« ¢ ¯ ¬ïâì
81
	mov eax, 0x00
68
	xor	eax,eax
82
	mov [arg1], eax   ;®¬¥à ¯®¤ä㭪樨
69
	mov	[arg1],eax   ;®¬¥à ¯®¤ä㭪樨
83
	mov [arg2], eax   ;‘¬¥é¥­¨¥ ¢ ä ©«¥
70
	mov	[arg2],eax   ;‘¬¥é¥­¨¥ ¢ ä ©«¥
84
	mov [arg3], eax   ;‘â à訩 dword ᬥ饭¨ï
71
	mov	[arg3],eax   ;‘â à訩 dword ᬥ饭¨ï
85
	mov eax, [filesize]
72
	mov	eax,[filesize]
86
	mov [arg4], eax   ; §¬¥à ä ©« 
73
	mov	[arg4],eax   ; §¬¥à ä ©« 
87
	mov eax, [datastart]
74
	mov	eax,[datastart]
88
	mov [arg5], eax   ;“ª § â¥«ì ­  ¤ ­­ë¥
75
	mov	[arg5],eax   ;“ª § â¥«ì ­  ¤ ­­ë¥
89
	mov eax, par
76
	mov	eax,par
90
	mov [arg7], eax   ;“ª § â¥«ì ­  ASCIIZ-áâபã
77
	mov	[arg7],eax   ;“ª § â¥«ì ­  ASCIIZ-áâபã
91
 
-
 
92
	mov eax, 70
-
 
93
	mov ebx, filestruct
78
	mcall	70,filestruct
94
	int 0x40
-
 
95
 
-
 
96
	cmp eax, 0x0
79
	test	eax,eax
97
	jne start_with_internal_text   ;Žè¨¡ª 
-
 
98
 
-
 
99
	;mov edx, [datastart]
-
 
100
       jmp initialize_variables
80
	je	initialize_variables
101
 
-
 
102
start_with_internal_text:
81
start_with_internal_text:
103
	mov edx, string
82
	mov	edx, string
104
	mov [datastart], edx
83
	mov	[datastart], edx
105
	;mov edx, string         ; ˆá¯®«ì§ã¥¬ ¢áâ஥­­ë© ⥪áâ
84
;	mov	edx, string         ; ˆá¯®«ì§ã¥¬ ¢áâ஥­­ë© ⥪áâ
106
 
-
 
107
initialize_variables:
85
initialize_variables:
108
 
-
 
109
 
-
 
110
 
-
 
111
 
-
 
112
	mov edx, [datastart]
86
	mov	edx,[datastart]
113
	mov [currentsymb], edx	;  ç «ì­ ï ¨­¨æ¨ «¨§ æ¨ï ¯¥à¥¬¥­­ëå
87
	mov	[currentsymb],edx	;  ç «ì­ ï ¨­¨æ¨ «¨§ æ¨ï ¯¥à¥¬¥­­ëå
114
	mov [startline], edx
88
	mov	[startline],edx
115
	mov [lastsymb], edx
89
	mov	[lastsymb],edx
116
	mov [lessonstart], edx
90
	mov	[lessonstart],edx
117
 
-
 
118
	mov eax, 0x00000001
91
	xor	eax,eax
-
 
92
	inc	eax
119
	mov [currentline], eax
93
	mov	[currentline], eax
120
	call count_lines
94
	call	count_lines
-
 
95
;---------------------------------------------------------------------
-
 
96
redraw:
121
	call draw_window
97
	call	draw_window
122
 
-
 
123
 
-
 
-
 
98
;---------------------------------------------------------------------
124
;Žá­®¢­®© 横«
99
;Žá­®¢­®© 横«
125
event_wait:
100
event_wait:
126
	mov eax, 10
101
	mcall	10
127
	int 0x40
-
 
128
 
-
 
129
	cmp eax, 1  ;¥à¥à¨á®¢ª  ®ª­  ­ã¦­ 
102
	cmp	eax, 1  ;¥à¥à¨á®¢ª  ®ª­  ­ã¦­ 
130
	je redraw
103
	je	redraw
131
	cmp eax, 2  ;Š« ¢¨è  ­ ¦ â 
104
	cmp	eax, 2  ;Š« ¢¨è  ­ ¦ â 
132
	je key
105
	je	key
133
	cmp eax, 3  ;® ª­®¯ª¥ ¦¬ å­ã«¨
106
	cmp	eax, 3  ;® ª­®¯ª¥ ¦¬ å­ã«¨
134
	je button
107
	je	button
135
 
-
 
136
	jmp event_wait
-
 
137
 
-
 
138
redraw:
-
 
139
	call draw_window
-
 
140
	jmp event_wait
108
	jmp	event_wait
-
 
109
;---------------------------------------------------------------------
141
key:
110
key:
142
	mov eax, 2
-
 
143
	int 0x40    ;’¥¯¥àì ª®¤ ­ ¦ â®© ª« ¢¨è¨ ¢ ah
111
	mcall	2	;’¥¯¥àì ª®¤ ­ ¦ â®© ª« ¢¨è¨ ¢ ah
144
 
-
 
145
	push eax
112
	push	eax
146
 
-
 
147
	;‡ ¯ã᪠¥¬ áçñâ稪 ¢à¥¬¥­¨ ¤«ï ¯®á«¥¤ãî饣®
113
;‡ ¯ã᪠¥¬ áçñâ稪 ¢à¥¬¥­¨ ¤«ï ¯®á«¥¤ãî饣®
148
	; ®¯à¥¤¥«¥­¨ï ᪮à®á⨠­ ¡®à 
114
; ®¯à¥¤¥«¥­¨ï ᪮à®á⨠­ ¡®à 
149
 
-
 
150
	mov eax, [currentsymb]
115
	mov	eax, [currentsymb]
151
	cmp eax, [lessonstart]
116
	cmp	eax, [lessonstart]
152
	jne not_first_symbol
117
	jne	not_first_symbol
153
	cmp [mistakes], 0x00
118
	mov	eax,[mistakes]
-
 
119
	test	eax,eax
154
	jne not_first_symbol
120
	jne	not_first_symbol
155
 
-
 
156
	mov eax, 26
-
 
157
	mov ebx, 9
121
	mcall	26,9
158
	int 0x40
-
 
159
 
-
 
160
	mov [typestarttime], eax
122
	mov	[typestarttime], eax
161
 
-
 
162
not_first_symbol:
123
not_first_symbol:
163
 
-
 
164
	pop eax
124
	pop	eax
165
 
-
 
166
	;à®¢¥à塞, ­¥ § ª®­ç¨«áï «¨ ⥪áâ
125
;à®¢¥à塞, ­¥ § ª®­ç¨«áï «¨ ⥪áâ
167
	mov esi, [currentsymb]
126
	mov	esi, [currentsymb]
168
	mov al, byte [esi]
127
	mov	al, byte [esi]
169
	cmp al, 0xFF
128
	cmp	al, 0xFF
170
	je text_end
129
	je	text_end
171
	cmp al, 0xFE
130
	cmp	al, 0xFE
172
	je text_end
131
	je	text_end
173
 
-
 
174
	push ebx
132
	push	ebx
175
	mov ebx, [currentsymb]
133
	mov	ebx, [currentsymb]
176
	mov al, byte [ebx]
134
	mov	al, byte [ebx]
177
	pop ebx
135
	pop	ebx
178
 
-
 
179
	cmp al,0x00
136
	test	al,al
180
	jne not_new_line
137
	jne	not_new_line
181
	cmp ah, 0x0D
138
	cmp	ah, 0x0D
182
	je correct_key_nl
139
	je	correct_key_nl
183
	cmp ah, 0x20
140
	cmp	ah, 0x20
184
	je correct_key_nl
141
	je	correct_key_nl
185
	jmp not_this_key
142
	jmp	not_this_key
186
 
-
 
187
not_new_line:
-
 
188
	cmp ah, al
-
 
189
	jne not_this_key
143
;---------------------------------------------------------------------
190
	jmp correct_key
-
 
191
 
-
 
192
correct_key_nl:
144
correct_key_nl:
193
	mov eax, [currentsymb]
145
	mov	eax, [currentsymb]
194
	inc eax
146
	inc	eax
195
	mov [startline], eax
147
	mov	[startline], eax
196
 
-
 
197
	mov eax, [currentsymb]
148
	mov	eax, [currentsymb]
198
	inc eax
149
	inc	eax
199
	mov [currentsymb], eax
150
	mov	[currentsymb], eax
200
	mov [lastsymb], eax
151
	mov	[lastsymb], eax
201
 
-
 
202
	mov eax, [currentline]
152
	mov	eax, [currentline]
203
	inc eax
153
	inc	eax
204
	mov [currentline], eax
154
	mov	[currentline], eax
205
 
-
 
206
	mov eax, [symbtyped]	 ;“¢¥«¨ç¨¬ ç¨á«® ¢¢¥¤ñ­­ëå ᨬ¢®«®¢ ­  1
155
	mov	eax, [symbtyped]	 ;“¢¥«¨ç¨¬ ç¨á«® ¢¢¥¤ñ­­ëå ᨬ¢®«®¢ ­  1
207
	inc eax
156
	inc	eax
208
	mov [symbtyped], eax
157
	mov	[symbtyped], eax
209
	call count_speed
158
	call	count_speed
210
	;call draw_speed
159
;	call	draw_speed
211
 
160
	jmp	redraw
-
 
161
;---------------------------------------------------------------------
212
	call draw_window
162
not_new_line:
-
 
163
	cmp	ah, al
213
	jmp event_wait
164
	jne	not_this_key
214
 
-
 
215
 
-
 
216
correct_key:
165
correct_key:
217
	mov eax, [currentsymb]
166
	mov	eax, [currentsymb]
218
	inc eax
167
	inc	eax
219
	mov [currentsymb], eax
168
	mov	[currentsymb], eax
220
	mov [lastsymb], eax
169
	mov	[lastsymb], eax
221
 
-
 
222
	mov eax, [symbtyped]	 ;“¢¥«¨ç¨¬ ç¨á«® ¢¢¥¤ñ­­ëå ᨬ¢®«®¢ ­  1
170
	mov	eax, [symbtyped]	 ;“¢¥«¨ç¨¬ ç¨á«® ¢¢¥¤ñ­­ëå ᨬ¢®«®¢ ­  1
223
	inc eax
171
	inc	eax
224
	mov [symbtyped], eax
172
	mov	[symbtyped], eax
225
	call count_speed
173
	call	count_speed
226
	;call draw_speed
174
;	call	draw_speed
227
 
-
 
228
	call redraw_2_symbols
175
	call	redraw_2_symbols
229
	jmp event_wait
176
	jmp	event_wait
230
 
-
 
-
 
177
;---------------------------------------------------------------------
231
not_this_key:
178
not_this_key:
232
 
-
 
233
	mov esi, [mistakes]
179
	mov	esi, [mistakes]
234
	inc esi
180
	inc	esi
235
	mov [mistakes], esi
181
	mov	[mistakes], esi
236
	call redraw_mistakes
182
	call	redraw_mistakes
237
	jmp event_wait
183
	jmp	event_wait
238
 
-
 
-
 
184
;---------------------------------------------------------------------
239
text_end:
185
text_end:
240
 
-
 
241
	; /// à¥¯ïâáâ¢ã¥â ¬¨£ ­¨î ®ª­  ¯® ®ª®­ç ­¨¨ ãப 
186
; /// à¥¯ïâáâ¢ã¥â ¬¨£ ­¨î ®ª­  ¯® ®ª®­ç ­¨¨ ãப 
242
	; ¯à¨ ­ ¦ â¨¨ ª« ¢¨è
187
; ¯à¨ ­ ¦ â¨¨ ª« ¢¨è
243
	mov esi, [startline]
188
	mov	esi, [startline]
244
	cmp esi, lessoncomplete
189
	cmp	esi, lessoncomplete
245
	je text_end_already_shown
190
	je	text_end_already_shown
246
	; ///////////////////////////
191
	; ///////////////////////////
247
 
-
 
248
 
-
 
249
	call speed_to_string
192
	call	speed_to_string
250
 
-
 
251
	mov esi, lessoncomplete
193
	mov	esi, lessoncomplete
252
	mov [startline], esi
194
	mov	[startline], esi
253
 
-
 
254
	mov esi, lessoncompleteend
195
	mov	esi, lessoncompleteend
255
	dec esi
196
	dec	esi
256
	mov [currentsymb], esi
197
	mov	[currentsymb], esi
257
 
-
 
258
	call draw_window
198
	call	draw_window
259
text_end_already_shown:
199
text_end_already_shown:
260
	jmp event_wait
200
	jmp	event_wait
261
 
-
 
-
 
201
;---------------------------------------------------------------------
262
button:
202
button:
263
	mov eax, 17
-
 
264
	int 0x40     ;ˆ¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨ ¢®§¢à éñ­ ¢ ah
203
	mcall	17	;ˆ¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨ ¢®§¢à éñ­ ¢ ah
265
 
-
 
266
	cmp ah, 1    ;íâ® ª­®¯ª  § ªàëâ¨ï
204
	cmp	ah, 1    ;íâ® ª­®¯ª  § ªàëâ¨ï
267
	jne no_close
205
	jne	no_close
268
	mov eax, -1
206
	mcall	-1
269
	int 0x40
-
 
270
no_close:
207
no_close:
271
	;à®¢¥à塞 ®áâ «ì­ë¥ ª­®¯ª¨
208
;à®¢¥à塞 ®áâ «ì­ë¥ ª­®¯ª¨
272
	cmp ah, 0x02
209
	cmp	ah, 0x02
273
	jne no_button_2
210
	jne	no_button_2
274
	; ¦ â  ª­®¯ª  2
211
; ¦ â  ª­®¯ª  2
-
 
212
;---------------------------------------------------------------------
275
	; Ž—…œ ‘’€˜›‰ ŠŽ„
213
; Ž—…œ ‘’€˜›‰ ŠŽ„
-
 
214
;---------------------------------------------------------------------
276
	xor eax, eax
215
	xor	eax, eax
277
 
-
 
278
	mov [mistakes], 0x0
216
	mov	[mistakes], 0x0
279
 
-
 
280
	mov esi, [lastsymb]
217
	mov	esi, [lastsymb]
281
	mov al, [esi]
218
	mov	al, [esi]
282
	;ã¦­® ¯à®¢¥à¨âì, çâ® §  ᨬ¢®« ¡ë« ¯®á«¥¤­¨¬. …᫨ 0xFF -
219
;ã¦­® ¯à®¢¥à¨âì, çâ® §  ᨬ¢®« ¡ë« ¯®á«¥¤­¨¬. …᫨ 0xFF -
283
	;’¥ªáâ ª®­ç¨«áï, ­ã¦­® ­ ç âì ¢áñ á­ ç « 
220
;’¥ªáâ ª®­ç¨«áï, ­ã¦­® ­ ç âì ¢áñ á­ ç « 
284
	cmp al, 0xFF
221
	cmp	al, 0xFF
285
	je start_1st_lesson
222
	je	start_1st_lesson
286
 
-
 
287
	cmp al, 0xFE ; Œë ¯à®è«¨ ¯à®è«ë© ãப?
223
	cmp	al, 0xFE ; Œë ¯à®è«¨ ¯à®è«ë© ãப?
288
	jne not_completed_previous
224
	jne	not_completed_previous
289
 
-
 
290
init_level_after_fe:
225
init_level_after_fe:
291
	;…¦¥«¨ ¤ , â® ¯à®¢¥à¨¬, ­¥ ¯®¯ « «¨ á«ãç ©­® á«¥¤ãî騬 ᨬ¢®«®¬ 0xFF
226
;…¦¥«¨ ¤ , â® ¯à®¢¥à¨¬, ­¥ ¯®¯ « «¨ á«ãç ©­® á«¥¤ãî騬 ᨬ¢®«®¬ 0xFF
292
	inc esi
227
	inc	esi
293
	mov al, [esi]
228
	mov	al, [esi]
294
	cmp al, 0xFF
229
	cmp	al, 0xFF
295
	je start_1st_lesson
-
 
296
	;…¦¥«¨ ­¥â - íâ® ¨ ¥áâì á«¥¤ãî騩 ãப
230
;…¦¥«¨ ­¥â - íâ® ¨ ¥áâì á«¥¤ãî騩 ãப
297
	jmp set_lesson_start_from_esi
231
	jne	set_lesson_start_from_esi
-
 
232
start_1st_lesson:
-
 
233
	mov	esi, [datastart]
-
 
234
set_lesson_start_from_esi:
-
 
235
	mov	[startline], esi
-
 
236
	mov	[currentsymb], esi
-
 
237
	mov	[lastsymb], esi
-
 
238
	mov	[lessonstart], esi
-
 
239
	xor	eax,eax
-
 
240
	jmp	no_button_3.2
298
 
241
;	inc	eax
-
 
242
;	mov	[currentline], eax
-
 
243
;	call	count_lines
-
 
244
;	call	reset_speed_counters
-
 
245
;	jmp	redraw
-
 
246
;---------------------------------------------------------------------
299
not_completed_previous:
247
not_completed_previous:
300
	inc esi
248
	inc	esi
301
	mov al, [esi]
249
	mov	al, [esi]
302
	cmp al, 0xFF
250
	cmp	al, 0xFF
303
	je start_1st_lesson
251
	je	start_1st_lesson
304
	cmp al, 0xFE
252
	cmp	al, 0xFE
305
	je init_level_after_fe
253
	je	init_level_after_fe
306
	jmp not_completed_previous
254
	jmp	not_completed_previous
307
 
-
 
308
start_1st_lesson:
-
 
309
	mov esi, [datastart]
-
 
310
set_lesson_start_from_esi:
255
;---------------------------------------------------------------------
311
	mov [startline], esi
-
 
312
	mov [currentsymb], esi
-
 
313
	mov [lastsymb], esi
-
 
314
	mov [lessonstart], esi
-
 
315
 
-
 
316
	;CC
-
 
317
	mov eax, 0x00000001
-
 
318
	mov [currentline], eax
-
 
319
	call count_lines
-
 
320
	;CC
-
 
321
 
-
 
322
	call reset_speed_counters
-
 
323
 
-
 
324
	call draw_window
-
 
325
	jmp event_wait
-
 
326
	; ŠŽ…– ‘’€˜ŽƒŽ ŠŽ„€
256
; ŠŽ…– ‘’€˜ŽƒŽ ŠŽ„€
327
 
-
 
-
 
257
;---------------------------------------------------------------------
328
no_button_2:
258
no_button_2:
329
	cmp ah, 0x03
259
	cmp	ah,0x03
330
	jne no_button_3
260
	jne	no_button_3
331
 
-
 
332
	;¥à¥§ ¯ã᪠ã஢­ï
261
;¥à¥§ ¯ã᪠ã஢­ï
333
	mov edx, [lessonstart]
262
	mov	edx,[lessonstart]
-
 
263
	jmp	no_button_3.1
334
	mov [currentsymb], edx
264
;	mov	[currentsymb],edx
335
	mov [startline], edx
265
;	mov	[startline],edx
336
	mov [lastsymb], edx
266
;	mov	[lastsymb],edx
337
 
-
 
338
	mov eax, 0x00000001
267
;	xor	eax,eax
339
	mov [currentline], eax
268
;	mov	[mistakes],eax
340
 
269
;	inc	eax
341
	mov [mistakes], 0
270
;	mov	[currentline],eax
342
 
-
 
343
	call reset_speed_counters
271
;	call	reset_speed_counters
344
 
-
 
345
	call count_lines
272
;	call	count_lines
346
	call draw_window
-
 
347
 
-
 
348
	jmp event_wait
273
;	jmp	redraw
349
 
-
 
-
 
274
;---------------------------------------------------------------------
350
no_button_3:
275
no_button_3:
351
	cmp ah, 0x04
276
	cmp	ah,0x04
352
	jne no_button_4
277
	jne	event_wait
353
 
-
 
354
	;¥à¥§ ¯ã᪠ªãàá  ã¯à ¦­¥­¨©
278
;¥à¥§ ¯ã᪠ªãàá  ã¯à ¦­¥­¨©
355
 
-
 
356
	mov edx, [datastart]
279
	mov	edx,[datastart]
357
 
-
 
358
	mov [lessonstart], edx
280
	mov	[lessonstart],edx
-
 
281
.1:
359
	mov [currentsymb], edx
282
	mov	[currentsymb],edx
360
	mov [startline], edx
283
	mov	[startline],edx
361
	mov [lastsymb], edx
284
	mov	[lastsymb],edx
-
 
285
	xor	eax,eax
-
 
286
	mov	[mistakes],eax
362
 
287
.2:
363
	mov eax, 0x00000001
288
	inc	eax
364
	mov [currentline], eax
289
	mov	[currentline],eax
365
 
-
 
366
	mov [mistakes], 0
-
 
367
 
-
 
368
 
-
 
369
	call reset_speed_counters
290
	call	reset_speed_counters
370
 
-
 
371
	call count_lines
291
	call	count_lines
372
	call draw_window
-
 
373
 
-
 
374
	jmp event_wait
292
	jmp	redraw
375
 
-
 
376
 
-
 
377
no_button_4:
-
 
-
 
293
;---------------------------------------------------------------------
378
	;ˆ ¢®§¢à é ¥¬áï ª ®¦¨¤ ­¨î ᮡëâ¨ï
294
;®«ã稬 ⥪ã騥 ¯ à ¬¥âàë ®ª­ 
379
	jmp event_wait
295
get_window_param:
-
 
296
	mcall	9,procinfo,-1
380
 
297
	ret
-
 
298
;---------------------------------------------------------------------
381
;"‘¥à¤æ¥" ¯à®£à ¬¬ë - äã­ªæ¨ï à¨á®¢ ­¨ï ®ª­  (¢áñ ®áâ «ì­®¥ - âã«®¢¨é¥ †-)) )
299
;"‘¥à¤æ¥" ¯à®£à ¬¬ë - äã­ªæ¨ï à¨á®¢ ­¨ï ®ª­  (¢áñ ®áâ «ì­®¥ - âã«®¢¨é¥ †-)) )
382
draw_window:
300
draw_window:
383
	mov eax, 12   ;‘®®¡é ¥¬ á¨á⥬¥ ® á®áâ®ï­¨¨ ¯¥à¥à¨á®¢ª¨ ®ª­ 
-
 
384
	mov ebx, 1    ; ç «® ¯¥à¥à¨á®¢ª¨
-
 
385
	int 0x40
301
	mcall	12,1
386
 
-
 
387
 
-
 
388
	mov ax,  [areawidth]   ;â® ¯¥à¢ë© ¢ë§®¢ draw_window?
302
	mov	ax,[areawidth]   ;â® ¯¥à¢ë© ¢ë§®¢ draw_window?
389
	cmp ax, 0x0
303
	test	ax,ax
390
	jne dw_not_first_call
304
	jne	.dw_not_first_call
391
	call get_screen_params	  ;®«ãç ¥¬ ¯ à ¬¥âàë íªà ­  - è¨à¨­ã ¨ ¢ëá®âã
305
	call	get_screen_params	  ;®«ãç ¥¬ ¯ à ¬¥âàë íªà ­  - è¨à¨­ã ¨ ¢ëá®âã
392
 
-
 
393
dw_not_first_call:
306
.dw_not_first_call:
394
	xor eax, eax
307
;¢ ebx - X ¨ è¨à¨­ 
395
	mov ax, [windowx]
308
	mov	bx,[windowx]
396
	mov ecx, 65536
-
 
397
	mul ecx
309
	shl	ebx,16
398
	add eax, 780
310
	mov	bx,780
399
	mov ebx, eax  ;¢ ebx - X ¨ è¨à¨­ 
-
 
400
 
-
 
401
	;mov ebx, 10*65536+780
311
;	mov	ebx,10*65536+780
402
 
-
 
403
	xor eax, eax
312
;¢ ecx - Y ¨ ¢ëá®â 
404
	mov ax, [windowy]
313
	mov	cx, [windowy]
405
	mov ecx, 65536
314
	shl	ecx,16
406
	mul ecx
315
	mov	cx,580
407
	add eax, 580
316
;	mov	ecx,10*65536+580
408
	mov ecx, eax  ;¢ ecx - Y ¨ ¢ëá®â 
317
	xor	esi,esi
409
 
-
 
410
 
-
 
411
	;mov ecx, 10*65536+580       ;Y ¨ ¢ëá®â 
318
;Ž¯à¥¤¥«¨âì ¨ ¢ë¢¥á⨠®ª­®
412
	mov edx, 0x33CCCCCC	     ;[⨯ ®ª­ ][梥â à ¡®ç¥© ®¡« áâ¨]
319
	mcall	0,,,0x33CCCCCC,,text
413
	mov edi, text
320
	call	get_window_param
414
	mov eax, 0		     ;Ž¯à¥¤¥«¨âì ¨ ¢ë¢¥á⨠®ª­®
321
	mov	eax,[procinfo+70] ;status of window
415
	int 0x40
322
	test	eax,100b
416
 
-
 
417
 
323
	jne	.end
418
; à¨á㥬 ª­®¯ªã ‘‹…„“ž™ˆ‰ “ŽŠ ¨ ⥪áâ ­  ­¥©
324
; à¨á㥬 ª­®¯ªã ‘‹…„“ž™ˆ‰ “ŽŠ ¨ ⥪áâ ­  ­¥©
419
	mov eax, 8
-
 
420
	mov ebx, 295*65536+145
-
 
421
	mov ecx, 8*65536+18
-
 
422
	mov edx, 0x00000002
-
 
423
	mov esi, 0x0099CC99
325
	mcall	8,<295,145>,<8,18>,2,0x0099CC99
424
	int 0x40
-
 
425
 
-
 
426
	mov eax, 4
-
 
427
	mov ebx,310*65536+14
-
 
428
	mov ecx, 0x80000000
-
 
429
	mov edx, buttontext
-
 
430
	int 0x40
-
 
431
 
-
 
432
; à¨á㥬 ª­®¯ªã Ž‚’Žˆ’œ “€†…ˆ…
326
; à¨á㥬 ª­®¯ªã Ž‚’Žˆ’œ “€†…ˆ…
433
	mov eax, 8
-
 
434
	mov ebx, 450*65536+145
-
 
435
	mov ecx, 8*65536+18
-
 
436
	mov edx, 0x00000003
-
 
437
	mov esi, 0x00CC9999
327
	mcall	,<450,145>,,3,0x00CC9999
438
	int 0x40
-
 
439
 
-
 
440
	mov eax, 4
-
 
441
	mov ebx,465*65536+14
-
 
442
	mov ecx, 0x80000000
-
 
443
	mov edx, retrybuttontext
-
 
444
	int 0x40
-
 
445
 
-
 
446
; à¨á㥬 ª­®¯ªã €—€’œ Š“‘ ‡€Ž‚Ž
328
; à¨á㥬 ª­®¯ªã €—€’œ Š“‘ ‡€Ž‚Ž
447
	mov eax, 8
-
 
448
	mov ebx, 605*65536+145
329
	mcall	,<605,145>,,4,0x00DD7777
449
	mov ecx, 8*65536+18
330
;‚뢮¤¨¬ ⥪áâ ­  ª­®¯ª å
450
	mov edx, 0x00000004
331
	mcall	4,<310,14>,0x80000000,buttontext
451
	mov esi, 0x00DD7777
-
 
452
	int 0x40
-
 
453
 
-
 
454
	mov eax, 4
-
 
455
	mov ebx, 626*65536+14
332
	mcall	,<465,14>,,retrybuttontext	
456
	mov ecx, 0x80000000
-
 
457
	mov edx, restartbuttontext
333
	mcall	,<626,14>,,restartbuttontext
458
	int 0x40
-
 
459
 
-
 
460
;  à¨á㥬 «®£®â¨¯
334
;  à¨á㥬 «®£®â¨¯
461
	mov eax, 65
335
	xor	ebp,ebp
462
	mov ebx, logo
-
 
463
	mov ecx, 32*65536+12
-
 
464
	mov edx, 12*65536+12
-
 
465
	mov esi, 1
-
 
466
	mov edi, green_text
336
	mcall	65,logo,<32,12>,<12,12>,1,green_text
467
	mov ebp, 0
-
 
468
	int 0x40
-
 
469
 
-
 
470
;®«ã稬 ⥪ã騥 ¯ à ¬¥âàë ®ª­ 
337
;®«ã稬 ⥪ã騥 ¯ à ¬¥âàë ®ª­ 
471
	mov eax, 9
-
 
472
	mov ebx, kbbuffer
338
	call	get_window_param
473
	mov ecx, -1
-
 
474
	int 0x40
-
 
475
 
-
 
476
	add ebx, 0x2A
339
	add	ebx,0x2A
477
	mov eax, [ebx]
340
	mov	eax,[ebx]
478
	mov [windowwidth], eax
341
	mov	[windowwidth], eax
479
 
-
 
480
	mov ebx, kbbuffer
342
	mov	ebx,procinfo
481
	add ebx, 0x2E
343
	add	ebx,0x2E
482
	mov eax, [ebx]
344
	mov	eax,[ebx]
483
	mov [windowheight], eax
345
	mov	[windowheight], eax
484
 
-
 
485
draw_error_count:
346
;draw_error_count:
486
	;  à¨á㥬 ­ ¤¯¨áì "Ž˜ˆŽŠ"
347
;  à¨á㥬 ­ ¤¯¨áì "Ž˜ˆŽŠ"
487
	mov eax, 4
-
 
488
	mov ebx, 60*65536+15
-
 
489
	mov ecx, 0x80AA0000
-
 
490
	mov edx, mistakestext
348
	mcall	4,<60,15>,0x80AA0000,mistakestext
491
	int 0x40
-
 
492
 
-
 
493
	; ‚뢥¤¥¬ ç¨á«® ®è¨¡®ª
349
; ‚뢥¤¥¬ ç¨á«® ®è¨¡®ª
494
	mov eax, 47
-
 
495
	mov ebx, 10000000000001000000000000000000b
350
	mcall	47,0x80040000,[mistakes],<105,15>,0x00AA0000
496
	mov ecx, [mistakes]
-
 
497
	mov edx, 105*65536+15
-
 
498
	mov esi, 0x00AA0000
-
 
499
	int 0x40
-
 
500
 
-
 
501
draw_line_number:
351
;draw_line_number:
502
	;  à¨á㥬 ­ ¤¯¨áì "‘âப        ¨§"
352
;  à¨á㥬 ­ ¤¯¨áì "‘âப        ¨§"
503
	mov eax, 4
-
 
504
	mov ebx, 140*65536+15
-
 
505
	mov ecx, 0x8000AA00
-
 
506
	mov edx, lineistext
353
	mcall	4,<140,15>,0x8000AA00,lineistext
507
	int 0x40
-
 
508
 
-
 
509
	;‚뢥¤¥¬ ­®¬¥à ⥪ã饩 áâப¨
354
;‚뢥¤¥¬ ­®¬¥à ⥪ã饩 áâப¨
510
	mov eax, 47
-
 
511
	mov ebx, 10000000000001000000000000000000b
355
	mcall	47,80040000,[currentline],<195,15>,0x0000AA00
512
	mov ecx, [currentline]
-
 
513
	mov edx, 195*65536+15
-
 
514
	mov esi, 0x0000AA00
-
 
515
	int 0x40
-
 
516
 
-
 
517
	;‚뢥¤¥¬ ⥪ãéãî áâபã
356
;‚뢥¤¥¬ ⥪ãéãî áâபã
518
	mov eax, 47
-
 
519
	mov ebx, 10000000000001000000000000000000b
-
 
520
	mov ecx, [linecount]
357
	mcall	,,[linecount],<252,15>,
521
	mov edx, 252*65536+15
358
;‚뢥á⨠ࠡ®ç¨© ⥪áâ
522
	mov esi, 0x0000AA00
359
	call	draw_text
523
	int 0x40
360
.end:
524
 
-
 
525
 
361
	mcall	12,2
526
 
362
	ret
-
 
363
;---------------------------------------------------------------------
527
draw_text_prepare:
364
draw_text:
528
	;®¤£®â®¢ª  ª ¢ë¢®¤ã ⥪áâ 
365
;®¤£®â®¢ª  ª ¢ë¢®¤ã ⥪áâ 
529
	mov edx, 40		; ç «ì­®¥ ¯®«®¦¥­¨¥ ¢ë¢®¤¨¬®£® ⥪áâ  ¯® ¢¥à⨪ «¨
366
	mov	edx,40		; ç «ì­®¥ ¯®«®¦¥­¨¥ ¢ë¢®¤¨¬®£® ⥪áâ  ¯® ¢¥à⨪ «¨
530
 
-
 
531
	mov esi, [startline]
367
	mov	esi,[startline]
532
	dec esi 		;’ ª ­ ¤® (á¬. *1 ­¨¦¥)!
368
	dec	esi 		;’ ª ­ ¤® (á¬. *1 ­¨¦¥)!
533
	mov ebx, esi		;’¥¯¥àì ¢ edx - ­ ç «® ¢ë¢®¤¨¬®© áâப¨
369
	mov	ebx,esi		;’¥¯¥àì ¢ edx - ­ ç «® ¢ë¢®¤¨¬®© áâப¨
534
 
-
 
535
 
-
 
536
draw_text:
370
.start:
537
 
-
 
538
 
-
 
539
	; à é¨¢ ¥¬ 㪠§ â¥«ì ­  ⥪ã騩 ᨬ¢®« ­  ¥¤¨­¨æã
371
; à é¨¢ ¥¬ 㪠§ â¥«ì ­  ⥪ã騩 ᨬ¢®« ­  ¥¤¨­¨æã
540
	inc ebx 	  ;(*1)
372
	inc	ebx 	  ;(*1)
541
 
-
 
542
draw_text_without_inc:
373
.draw_text_without_inc:
543
	;®á¬®âਬ, ­¥ ¢ë室¨â «¨ ⥪áâ §  £à ­¨æã ®ª­ 
374
;®á¬®âਬ,­¥ ¢ë室¨â «¨ ⥪áâ §  £à ­¨æã ®ª­ 
544
	mov esi, [windowheight] ;’¥¯¥àì ¢ esi à §¬¥à ®ª­ 
375
	mov	esi,[windowheight] ;’¥¯¥àì ¢ esi à §¬¥à ®ª­ 
545
	mov eax, edx
376
	mov	eax,edx
546
	and eax,0x0000FFFF
377
	and	eax,0x0000FFFF
547
	add eax, 64
378
	add	eax,64
548
	cmp eax, esi
379
	cmp	eax,esi
549
	ja end_draw_text     ;Œë ¢ë室¨¬ §  ¯à¥¤¥«ë ®ª­ . ¥à¥áâ ñ¬ à¨á®¢ âì.
380
	ja	end_draw_text     ;Œë ¢ë室¨¬ §  ¯à¥¤¥«ë ®ª­ . ¥à¥áâ ñ¬ à¨á®¢ âì.
550
 
-
 
551
	;ãáâ ­®¢¨¬ ¯®«®¦¥­¨¥ ¯® £®à¨§®­â «¨ (+18 ª ⥪ã饩 ¯®§¨æ¨¨)
381
;ãáâ ­®¢¨¬ ¯®«®¦¥­¨¥ ¯® £®à¨§®­â «¨ (+18 ª ⥪ã饩 ¯®§¨æ¨¨)
552
	mov esi, 18*65536
382
	mov	esi,18*65536
553
 
-
 
554
	add edx, esi
383
	add	edx,esi
555
 
-
 
556
	; ¯®á¬®âਬ, ­¥ ¢ë襫 «¨ ⥪áâ §  £à ­¨æã ¯® £®à¨§®­â «¨
384
; ¯®á¬®âਬ, ­¥ ¢ë襫 «¨ ⥪áâ §  £à ­¨æã ¯® £®à¨§®­â «¨
557
	; ¥á«¨ ¢ë襫 - ­¥ à¨á㥬 íâ®â ªã᮪
385
; ¥á«¨ ¢ë襫 - ­¥ à¨á㥬 íâ®â ªã᮪
558
	mov esi, [windowwidth] ;’¥¯¥àì ¢ esi à §¬¥à ®ª­ 
386
	mov	esi,[windowwidth] ;’¥¯¥àì ¢ esi à §¬¥à ®ª­ 
559
	shl esi, 16
387
	shl	esi,16
560
	mov eax, edx
388
	mov	eax,edx
561
	and eax,0xFFFF0000
389
	and	eax,0xFFFF0000
562
	add eax, 40*65536
390
	add	eax,40*65536
563
	cmp eax, esi
391
	cmp	eax,esi
564
	jna horizontal_check_ok     ;…᫨ eax>est, â® ¬ë ¢ë室¨¬ §  ¯à¥¤¥«ë ®ª­ .
392
	jna	.horizontal_check_ok     ;…᫨ eax>est, â® ¬ë ¢ë室¨¬ §  ¯à¥¤¥«ë ®ª­ .
565
 
-
 
566
skip_line_end_step:
393
.skip_line_end_step:
567
 
-
 
568
	mov ah, byte [ebx]
394
	mov	ah,byte [ebx]
569
 
-
 
570
	cmp ah, 0x00
395
	cmp	ah,0x00
571
	je end_line_to_next_line
396
	je	.end_line_to_next_line
572
	cmp ah, 0xFE
397
	cmp	ah,0xFE
573
	je end_draw_text
398
	je	end_draw_text
574
	cmp ah, 0xFF
399
	cmp	ah,0xFF
575
	je end_draw_text
400
	je	end_draw_text
576
 
-
 
577
	inc ebx
401
	inc	ebx
578
 
-
 
579
	jmp skip_line_end_step
402
	jmp	.skip_line_end_step
580
 
-
 
581
end_line_to_next_line:
403
;-------------------------------------------
582
	;jmp end_line_to_next_line
404
.end_line_to_next_line:
583
	and edx, 0x0000FFFF
405
	and	edx,0x0000FFFF
584
	jmp draw_text_without_inc
406
	jmp	.draw_text_without_inc
585
 
-
 
-
 
407
;-------------------------------------------
586
horizontal_check_ok:
408
.horizontal_check_ok:
587
 
-
 
588
	;à®¢¥à¨¬, ­¥ § ª®­ç¨«áï «¨ ãப
409
;à®¢¥à¨¬, ­¥ § ª®­ç¨«áï «¨ ãப
589
	mov esi, [startline]
410
	mov	esi, [startline]
590
	cmp esi, lessoncomplete
411
	cmp	esi, lessoncomplete
591
	jne in_process
412
	jne	.in_process
592
 
-
 
593
	;…᫨ § ª®­ç¨«áï, ⥪á⠢뢮¤¨âì ­ã¦­® ‡…‹…›Œ –‚…’ŽŒ
413
;…᫨ § ª®­ç¨«áï, ⥪á⠢뢮¤¨âì ­ã¦­® ‡…‹…›Œ –‚…’ŽŒ
594
	mov edi, green_text
414
	mov	edi, green_text
595
	jmp color_set_sucessful
415
	jmp	.color_set_sucessful
596
 
-
 
-
 
416
;--------------------------------------------
597
in_process:
417
.in_process:
598
	cmp ebx, [currentsymb]	  ; ¨áã¥âáï ⥪ã騩 ­ ¡¨à ¥¬ë© ᨬ¢®«?
418
	cmp	ebx, [currentsymb]	  ; ¨áã¥âáï ⥪ã騩 ­ ¡¨à ¥¬ë© ᨬ¢®«?
599
	je red			  ; ’ ª â®ç­®!
419
	je	.red			  ; ’ ª â®ç­®!
600
 
-
 
601
	ja black		  ; ¥â, ¨áã¥âáï â®, çâ® ¬ë ¥éñ ­¥ ­ ¡à «¨
420
	ja	.black		  ; ¥â, ¨áã¥âáï â®, çâ® ¬ë ¥éñ ­¥ ­ ¡à «¨
602
 
-
 
603
 
-
 
604
	mov edi, gray_text	 ; ¥â, à¨áã¥âáï â®, çâ® ¬ë 㦥 ­ ¡à «¨
421
	mov	edi, gray_text	 ; ¥â, à¨áã¥âáï â®, çâ® ¬ë 㦥 ­ ¡à «¨
605
	jmp color_set_sucessful
422
	jmp	.color_set_sucessful
606
 
-
 
-
 
423
;--------------------------------------------
607
red:
424
.red:
608
	mov edi, red_text
425
	mov	edi, red_text
609
	jmp color_set_sucessful
426
	jmp	.color_set_sucessful
610
 
-
 
-
 
427
;---------------------------------------------
611
black:
428
.black:
612
	mov edi, black_text	 ;˜à¨äâ ¨ 梥â
429
	mov	edi, black_text	 ;˜à¨äâ ¨ 梥â
613
 
-
 
614
color_set_sucessful:
430
.color_set_sucessful:
615
	xor esi,esi
431
	xor	esi,esi
616
	movzx si, byte [ebx]
432
	movzx	si, byte [ebx]
617
	cmp si, 0x0000
433
	cmp	si, 0x0000
618
	jne continue_drawing
434
	jne	.continue_drawing
619
	call increase_y;
435
;	call	increase_y;
-
 
436
; “¢¥«¨ç¨¬ ¢¥à⨪ «ì­ãî ª®®à¤¨­ â㠢뢮¤  ¡ãª¢,
-
 
437
; ¥á«¨ ª®­ç¨« áì áâப  (¢áâà¥â¨«áï ¡ ©â 0x00)
-
 
438
	and	edx,0x0000FFFF
-
 
439
	add	edx, 33
620
	jmp continue_text_proc
440
	jmp	.continue_text_proc
621
 
-
 
-
 
441
;----------------------------------------------
622
continue_drawing:
442
.continue_drawing:
623
 
-
 
624
	cmp si, 0x00FF
443
	cmp	si, 0x00FF
625
	je end_draw_text
444
	je	end_draw_text
626
	cmp si, 0x00FE
445
	cmp	si, 0x00FE
627
	je end_draw_text
446
	je	end_draw_text
628
 
-
 
629
 
-
 
630
	;¨á㥬 ¡ãª¢ã á ¯®¬®éìî Ž‹œ˜ŽƒŽ èà¨äâ 
447
;¨á㥬 ¡ãª¢ã á ¯®¬®éìî Ž‹œ˜ŽƒŽ èà¨äâ 
631
	push ebx
448
	push	ebx
632
	push edx
449
	push	edx
633
 
-
 
634
	movzx eax, byte [ebx]
450
	movzx	eax, byte [ebx]
635
	mov ecx, 64
451
	shl	eax,6
636
	mul ecx
-
 
637
	add eax, big_font
452
	add	eax, big_font
638
	mov ebx, eax
453
	mov	ebx, eax
639
 
-
 
640
	pop edx
454
	pop	edx
641
 
-
 
642
	mov ecx, 16*65536+32
455
	mov	ecx, 16*65536+32
643
 
-
 
644
	; ‚ edx «¥¦¨â ª®®à¤¨­ â 
456
; ‚ edx «¥¦¨â ª®®à¤¨­ â 
645
 
-
 
646
	mov esi, 1
457
	mov	esi, 1
647
 
-
 
648
	; ‚ edi «¥¦¨â 㪠§ â¥«ì ­  ¯ «¨âàã (梥â èà¨äâ )
458
; ‚ edi «¥¦¨â 㪠§ â¥«ì ­  ¯ «¨âàã (梥â èà¨äâ )
649
 
-
 
650
	mov ebp, 0
459
	xor	ebp,ebp
651
 
-
 
652
	mov eax, 65
460
	mcall	65
653
 
-
 
654
	int 0x40
-
 
655
 
-
 
656
	pop ebx
461
	pop	ebx
657
	;  í⮬ ®âà¨á®¢ª  ¡ãª¢ë § ¢¥à襭 
462
;  í⮬ ®âà¨á®¢ª  ¡ãª¢ë § ¢¥à襭 
658
continue_text_proc:
463
.continue_text_proc:
659
	;inc edi
464
;	inc	edi
660
	jmp draw_text
465
	jmp	.start
661
 
-
 
662
end_draw_text:
466
end_draw_text:
663
 
-
 
664
	mov eax, 12   ;‚­®¢ì á®®¡é ¥¬ ® á®áâ®ï­¨¨ ¯¥à¥à¨á®¢ª¨ ®­ 
-
 
665
	mov ebx, 2   ;, ­® ­  íâ®â à § - ® ª®­æ¥ ¯¥à¥à¨á®¢ª¨
-
 
666
	int 0x40
-
 
667
 
-
 
668
	ret
467
	ret
669
 
-
 
670
increase_y:
-
 
671
	; “¢¥«¨ç¨¬ ¢¥à⨪ «ì­ãî ª®®à¤¨­ â㠢뢮¤  ¡ãª¢,
-
 
672
	; ¥á«¨ ª®­ç¨« áì áâப  (¢áâà¥â¨«áï ¡ ©â 0x00)
468
;---------------------------------------------------------------------
673
	and edx,0x0000FFFF
-
 
674
	add edx, 33
-
 
675
 
-
 
676
	ret
-
 
677
 
-
 
678
;Ž–…„“€ ……ˆ‘Ž‚Šˆ „‚“• ‘ˆŒ‚Ž‹Ž‚ („€› ŒˆˆŒˆ‡ˆŽ‚€’œ Œˆƒ€ˆ…)
469
;Ž–…„“€ ……ˆ‘Ž‚Šˆ „‚“• ‘ˆŒ‚Ž‹Ž‚ („€› ŒˆˆŒˆ‡ˆŽ‚€’œ Œˆƒ€ˆ…)
679
redraw_2_symbols:
470
redraw_2_symbols:
680
 
-
 
681
	;à®¢¥à¨¬, ­¥ ¢ë©¤¥¬ «¨ ¬ë ¯à¨ à¨á®¢ ­ ¨¨ §  £à ­¨æã ¤®¯ãá⨬®©
471
;à®¢¥à¨¬, ­¥ ¢ë©¤¥¬ «¨ ¬ë ¯à¨ à¨á®¢ ­ ¨¨ §  £à ­¨æã ¤®¯ãá⨬®©
682
	;®¡« á⨠¢­ãâਠ®ª­ . …᫨ ¢ë©¤¥¬ - áªà®««¨¬ áâப㠯® £®à¨§®­â «¨
472
;®¡« á⨠¢­ãâਠ®ª­ . …᫨ ¢ë©¤¥¬ - áªà®««¨¬ áâப㠯® £®à¨§®­â «¨
683
	mov esi, [windowwidth] ;’¥¯¥àì ¢ esi à §¬¥à ®ª­ 
473
	mov	esi, [windowwidth] ;’¥¯¥àì ¢ esi à §¬¥à ®ª­ 
684
 
-
 
685
	mov eax, [currentsymb]
474
	mov	eax, [currentsymb]
686
	sub eax, [startline]
475
	sub	eax, [startline]
687
 
-
 
688
	mov ecx, 18
476
	mov	ecx, 18
689
 
-
 
690
	mul ecx
477
	mul	ecx
691
 
-
 
692
	add eax, 20
478
	add	eax, 20
693
 
-
 
694
	add eax, 20
479
	add	eax, 20
695
 
-
 
696
	add eax, 40
480
	add	eax, 40
697
 
-
 
698
	cmp eax, esi
481
	cmp	eax, esi
699
	jna r2s_horizontal_check_ok	;…᫨ eax>est, â® ¬ë ¢ë室¨¬ §  ¯à¥¤¥«ë ®ª­ .
482
	jna	r2s_horizontal_check_ok	;…᫨ eax>est, â® ¬ë ¢ë室¨¬ §  ¯à¥¤¥«ë ®ª­ .
700
 
-
 
701
	;ˆâ ª, ¬ë ¢ë室¨¬ §  £à ­¨æë ®ª­ ... â® ¯«®å®...
483
;ˆâ ª, ¬ë ¢ë室¨¬ §  £à ­¨æë ®ª­ ... â® ¯«®å®...
702
	;‘âப㠯ਤñâáï áªà®««¨âì...
484
;‘âப㠯ਤñâáï áªà®««¨âì...
703
 
-
 
704
	mov eax, [currentsymb]
485
	mov	eax, [currentsymb]
705
	dec eax
486
	dec	eax
706
	mov [startline], eax
487
	mov	[startline], eax
707
	call draw_window
488
	call	draw_window
708
	jmp return_from_redraw_2_symbols
489
	jmp	return_from_redraw_2_symbols
709
 
-
 
-
 
490
;---------------------------------------------------------------------
710
r2s_horizontal_check_ok:
491
r2s_horizontal_check_ok:
711
 
-
 
712
	;¨á㥬 …„›„“™“ž ‘…“ž ¡ãª¢ã á ¯®¬®éìî Ž‹œ˜ŽƒŽ èà¨äâ 
492
;¨á㥬 …„›„“™“ž ‘…“ž ¡ãª¢ã á ¯®¬®éìî Ž‹œ˜ŽƒŽ èà¨äâ 
713
 
-
 
714
	mov ebx, [currentsymb]
493
	mov	ebx, [currentsymb]
715
	dec ebx
494
	dec	ebx
716
 
-
 
717
	movzx eax, byte [ebx]
495
	movzx	eax, byte [ebx]
718
	mov ecx, 64
496
	shl	eax,6
719
 
-
 
720
	mul ecx
-
 
721
 
-
 
722
	add eax, big_font
497
	add	eax, big_font
723
 
-
 
724
	mov ebx, eax
498
	mov	ebx, eax
725
 
-
 
726
 
-
 
727
	mov ecx, 16*65536+32
499
	mov	ecx, 16*65536+32
728
 
-
 
729
	mov eax, [currentsymb]
500
	mov	eax, [currentsymb]
730
	sub eax, [startline]
501
	sub	eax, [startline]
731
	dec eax
502
	dec	eax
732
	mov esi, 18
503
	imul	eax,18
733
	mul esi
-
 
734
	add eax, 18
504
	add	eax, 18
735
	mov esi, 65536
-
 
736
	mul esi
505
	shl	eax,16
737
	add eax, 40
506
	add	eax, 40
738
 
-
 
739
	mov edx, eax
507
	mov	edx, eax
740
 
-
 
741
 
-
 
742
	mov esi, 1
508
	xor	ebp,ebp
743
 
-
 
744
	mov edi, gray_text
509
	mcall	65,,,,1,gray_text
745
 
-
 
746
	mov ebp, 0
-
 
747
 
-
 
748
	mov eax, 65
-
 
749
 
-
 
750
	int 0x40
-
 
751
 
-
 
752
 
-
 
753
	;¨á㥬 ’…Š“™“ž “Š‚“
510
;¨á㥬 ’…Š“™“ž “Š‚“
754
 
-
 
755
 
-
 
756
	mov ebx, [currentsymb]
511
	mov	ebx, [currentsymb]
757
 
-
 
758
	movzx eax, byte [ebx]
512
	movzx	eax, byte [ebx]
759
	mov ecx, 64
513
	shl	eax,6
760
	mul ecx
-
 
761
	add eax, big_font
514
	add	eax, big_font
762
 
-
 
763
	mov ebx, eax
515
	mov	ebx, eax
764
 
-
 
765
	mov ecx, 16*65536+32
516
	mov	ecx, 16*65536+32
766
 
-
 
767
	mov eax, [currentsymb]
517
	mov	eax, [currentsymb]
768
	sub eax, [startline]
518
	sub	eax, [startline]
769
	mov esi, 18
519
	imul	eax,18
770
	mul esi
-
 
771
	add eax, 18
520
	add	eax, 18
772
	mov esi, 65536
-
 
773
	mul esi
521
	shl	eax,16
774
	add eax, 40
522
	add	eax, 40
775
 
-
 
776
	mov edx, eax
523
	mov	edx, eax
777
 
-
 
778
	mov esi, 1
-
 
779
 
-
 
780
	mov edi, red_text
524
	mcall	65,,,,1,red_text
781
 
-
 
782
	mov eax, 65
-
 
783
 
-
 
784
	int 0x40
-
 
785
 
-
 
786
 
-
 
787
return_from_redraw_2_symbols:
525
return_from_redraw_2_symbols:
788
 
-
 
789
	ret
526
	ret
790
 
-
 
-
 
527
;---------------------------------------------------------------------
791
redraw_mistakes:
528
redraw_mistakes:
792
	;‡ ªà á¨¬ ¯àאַ㣮«ì­¨ª
529
;‡ ªà á¨¬ ¯àאַ㣮«ì­¨ª
793
	mov eax, 13
-
 
794
	mov ebx, 59*65536+75
-
 
795
	mov ecx, 14*65536+10
-
 
796
	mov edx, 0x00CCCCCC
530
	mcall	13,<59,75>,<14,10>,0x00CCCCCC
797
	int 0x40
-
 
798
 
-
 
799
	;  à¨á㥬 ­ ¤¯¨áì "Ž˜ˆŽŠ"
531
;  à¨á㥬 ­ ¤¯¨áì "Ž˜ˆŽŠ"
800
	mov eax, 4
-
 
801
	mov ebx, 60*65536+15
-
 
802
	mov ecx, 0x80AA0000
-
 
803
	mov edx, mistakestext
532
	mcall	4,<60,15>,0x80AA0000,mistakestext
804
	int 0x40
-
 
805
 
-
 
806
	; ‚뢥¤¥¬ ç¨á«® ®è¨¡®ª
533
; ‚뢥¤¥¬ ç¨á«® ®è¨¡®ª
807
	mov eax, 47
-
 
808
	mov ebx, 10000000000001000000000000000000b
534
	mcall	47,0x80040000,[mistakes],<105,15>,0x00AA0000
809
	mov ecx, [mistakes]
-
 
810
	mov edx, 105*65536+15
-
 
811
	mov esi, 0x00AA0000
-
 
812
	int 0x40
-
 
813
 
-
 
814
	ret
535
	ret
815
 
-
 
-
 
536
;---------------------------------------------------------------------
816
count_lines:
537
count_lines:
817
	xor ecx, ecx		; ‚ ecx - áçñâ稪 áâப
538
	xor	ecx, ecx		; ‚ ecx - áçñâ稪 áâப
818
	inc ecx 		; “ ­ á 1 áâப 
539
	inc	ecx 		; “ ­ á 1 áâப 
819
 
-
 
820
 
-
 
821
	;  ç¨­ ¥¬ à §¡®à...
540
;  ç¨­ ¥¬ à §¡®à...
822
	mov eax, [startline]
541
	mov	eax, [startline]
823
	dec eax
542
	dec	eax
824
 
-
 
825
cl_next_step:
543
cl_next_step:
826
	inc eax
544
	inc	eax
827
	mov bh, [eax]
545
	mov	bh, [eax]
828
 
-
 
829
	cmp bh, 0x00
546
	cmp	bh, 0x00
830
	jne cl_not_new_line
547
	jne	cl_not_new_line
831
	inc ecx
548
	inc	ecx
832
	jmp cl_next_step
549
	jmp	cl_next_step
833
 
-
 
-
 
550
;---------------------------------------------------------------------
834
cl_not_new_line:
551
cl_not_new_line:
835
	cmp bh, 0xFE
552
	cmp	bh, 0xFE
836
	je cl_end
553
	je	cl_end
837
	cmp bh, 0xFF
554
	cmp	bh, 0xFF
838
	je cl_end
555
	je	cl_end
839
	jmp cl_next_step
556
	jmp	cl_next_step
840
 
-
 
-
 
557
;---------------------------------------------------------------------
841
cl_end:
558
cl_end:
842
	mov [linecount], ecx
559
	mov	[linecount],ecx
843
	ret
560
	ret
844
 
-
 
-
 
561
;---------------------------------------------------------------------
845
reset_speed_counters:
562
reset_speed_counters:
846
	mov eax, 0x00000000
563
	xor	eax,eax
847
 
-
 
848
	mov [symbtyped], eax
564
	mov	[symbtyped],eax
849
	mov [typestarttime], eax
565
	mov	[typestarttime],eax
850
	mov [currenttime], eax
566
	mov	[currenttime],eax
851
	mov [typingspeed], eax
567
	mov	[typingspeed],eax
852
 
-
 
853
	ret
568
	ret
854
 
-
 
-
 
569
;---------------------------------------------------------------------
855
count_speed:
570
count_speed:
856
	mov eax, 26
-
 
857
	mov ebx, 9
571
	mcall	26,9
858
	int 0x40
-
 
859
 
-
 
860
	mov [currenttime], eax
572
	mov	[currenttime], eax
861
 
-
 
862
	mov ebx, [typestarttime]
573
	mov	ebx, [typestarttime]
863
 
-
 
864
	sub eax, ebx   ;’¥¯¥àì ¢ eax - ç¨á«® ¯à®è¥¤è¨å ¤®«¥© ᥪ㭤
574
	sub	eax, ebx   ;’¥¯¥àì ¢ eax - ç¨á«® ¯à®è¥¤è¨å ¤®«¥© ᥪ㭤
865
 
-
 
866
 
-
 
867
	mov ecx, [symbtyped]
575
	mov	ecx, [symbtyped]
868
	cmp ecx, 0x00
576
	cmp	ecx, 0x00
869
	jne cs_all_ok
577
	jne	cs_all_ok
870
	inc ecx
578
	inc	ecx
871
 
-
 
872
cs_all_ok:
579
cs_all_ok:
873
	xor edx, edx;
580
	xor	edx, edx;
874
 
-
 
875
	div ecx  ;’¥¯¥àì ¢ eax - á।­ïï ¯ ã§  ¬¥¦¤ã ᨬ¢®« ¬¨
581
	div	ecx  ;’¥¯¥àì ¢ eax - á।­ïï ¯ ã§  ¬¥¦¤ã ᨬ¢®« ¬¨
876
 
-
 
877
	mov ecx, eax
582
	mov	ecx, eax
878
	cmp ecx, 0x00
583
	cmp	ecx, 0x00
879
	jne cs_all_ok_2
584
	jne	cs_all_ok_2
880
	inc ecx
585
	inc	ecx
881
 
-
 
882
cs_all_ok_2:
586
cs_all_ok_2:
883
 
-
 
884
	xor edx, edx
587
	xor	edx, edx
885
	mov eax, 6000
588
	mov	eax, 6000
886
 
-
 
887
	div ecx
589
	div	ecx
888
 
-
 
889
	mov [typingspeed], eax ;‚®â ¨ ¢áñ. ‚ [typingspeed] - á।­ïï ᪮à®áâì ­ ¡®à 
590
	mov	[typingspeed], eax ;‚®â ¨ ¢áñ. ‚ [typingspeed] - á।­ïï ᪮à®áâì ­ ¡®à 
890
 
-
 
891
 
-
 
892
	ret
591
	ret
893
 
-
 
-
 
592
;---------------------------------------------------------------------
894
speed_to_string:
593
speed_to_string:
895
	; à¥®¡à §ã¥â ç¨á«® ¢ áâப㠨 § ¯¨á뢠¥â ¯®  ¤à¥¬ã ¯¥à¥¬¥­­®© speedbytes § ¤®¬ ­ ¯¥àñ¤
594
; à¥®¡à §ã¥â ç¨á«® ¢ áâப㠨 § ¯¨á뢠¥â ¯®  ¤à¥¬ã ¯¥à¥¬¥­­®© speedbytes § ¤®¬ ­ ¯¥àñ¤
896
	xor edx, edx
595
	xor	edx, edx
897
	mov eax, [typingspeed]
596
	mov	eax, [typingspeed]
898
 
-
 
899
	mov ecx, 10
597
	mov	ecx, 10
900
 
-
 
901
	div ecx
598
	div	ecx
902
 
-
 
903
	add dl, 30h
599
	add	dl, 30h
904
	mov [speedbytes + 3], dl
600
	mov	[speedbytes + 3], dl
905
 
-
 
906
	xor edx, edx
601
	xor	edx, edx
907
	div ecx
602
	div	ecx
908
	add dl, 30h
603
	add	dl, 30h
909
	mov [speedbytes + 2], dl
604
	mov	[speedbytes + 2], dl
910
 
-
 
911
	xor edx, edx
605
	xor	edx, edx
912
	div ecx
606
	div	ecx
913
	add dl, 30h
607
	add	dl, 30h
914
	mov [speedbytes + 1], dl
608
	mov	[speedbytes + 1], dl
915
 
-
 
916
	xor edx, edx
609
	xor	edx, edx
917
	div ecx
610
	div	ecx
918
 
-
 
919
	cmp dl, 0x00
611
	cmp	dl, 0x00
920
	je sts_move_space
612
	je	sts_move_space
921
 
-
 
922
	add dl, 30h
613
	add	dl, 30h
923
	mov [speedbytes], dl
614
	mov	[speedbytes], dl
924
	jmp sts_end
615
	jmp	sts_end
-
 
616
;---------------------------------------------------------------------
925
    sts_move_space:
617
sts_move_space:
926
	mov [speedbytes], 0x20
618
	mov	[speedbytes], 0x20
927
 
-
 
928
    sts_end:
619
sts_end:
929
 
-
 
930
	ret
620
	ret
931
 
-
 
-
 
621
;---------------------------------------------------------------------
932
get_screen_params:
622
get_screen_params:
933
 
-
 
934
	mov eax, 14
623
	mcall	14
935
	int 0x40
-
 
936
	mov [areaheight], ax
624
	mov	[areaheight], ax
937
 
-
 
938
	push ax
625
	push	ax
939
 
-
 
940
	shr eax, 16
626
	shr	eax, 16
941
	mov [areawidth],ax
627
	mov	[areawidth],ax
942
 
-
 
943
	;‚ ax ¯® ¯à¥¦­¥¬ã ­ å®¤¨âáï è¨à¨­  ®ª­ . ‚®á¯®«ì§ã¥¬áï í⨬
628
;‚ ax ¯® ¯à¥¦­¥¬ã ­ å®¤¨âáï è¨à¨­  ®ª­ . ‚®á¯®«ì§ã¥¬áï í⨬
944
	sub ax, 780   ;‚ëç⥬ ­ ç «ì­ë© à §¬¥à ®ª­ 
629
	sub	ax, 780   ;‚ëç⥬ ­ ç «ì­ë© à §¬¥à ®ª­ 
945
	shr ax, 1
630
	shr	ax, 1
946
 
-
 
947
	mov [windowx], ax
631
	mov	[windowx], ax
948
 
-
 
949
 
-
 
950
	; ¥à¥å®¤¨¬ ª ¢ëá®â¥
632
; ¥à¥å®¤¨¬ ª ¢ëá®â¥
951
	xor ax, ax
633
	xor	ax, ax
952
	pop ax		; ‚ë⮫ª­¥¬ ¨§ á⥪  §­ ç¥­¨¥ ¢ëá®âë
634
	pop	ax		; ‚ë⮫ª­¥¬ ¨§ á⥪  §­ ç¥­¨¥ ¢ëá®âë
953
 
-
 
954
	sub ax, 580
635
	sub	ax, 580
955
	shr ax, 1
636
	shr	ax, 1
956
	mov [windowy], ax
637
	mov	[windowy], ax
957
 
-
 
958
 
-
 
959
	ret
638
	ret
960
 
-
 
961
 
-
 
962
 
-
 
963
 
-
 
-
 
639
;---------------------------------------------------------------------
964
;draw_speed:
640
;draw_speed:
965
 
-
 
966
	;‡ ªà á¨¬ ¯àאַ㣮«ì­¨ª
641
;‡ ªà á¨¬ ¯àאַ㣮«ì­¨ª
967
;        mov eax, 13
-
 
968
;        mov ebx, 59*65536+340
-
 
969
;        mov ecx, 29*65536+10
-
 
970
;        mov edx, 0x00CCCCCC
642
;	mcall	13,<59,340>,<29,10>,0x00CCCCCC
971
;        int 0x40
-
 
972
 
-
 
973
	;  à¨á㥬 ­ ¤¯¨áì "‘ª®à®áâì ­ ¡®à  (§­ ª®¢ ¢ ¬¨­ãâã):"
643
;  à¨á㥬 ­ ¤¯¨áì "‘ª®à®áâì ­ ¡®à  (§­ ª®¢ ¢ ¬¨­ãâã):"
974
;        mov eax, 4
-
 
975
;        mov ebx, 60*65536+30
-
 
976
;        mov ecx, 0x80008800
644
;	mcall	4,<60,30>,0x80008800,speedtext
977
;        mov edx, speedtext
-
 
978
;        int 0x40
-
 
979
 
-
 
980
	; ‚뢥¤¥¬ ç¨á«®
645
; ‚뢥¤¥¬ ç¨á«®
981
;        mov eax, 47
-
 
982
;        mov ebx, 10000000000001000000000000000000b
646
;	mcall	47,0x80040000,[typingspeed],<305,30>,0x00008800
983
;        mov ecx, [typingspeed]
-
 
984
;        mov edx, 305*65536+30
-
 
985
;        mov esi, 0x00008800
-
 
986
;        int 0x40
-
 
987
 
-
 
988
;        ret
647
;	ret
989
 
-
 
990
;¥áãàáë )
-
 
991
datastart dd 0x0       ; €¤à¥á ¢ ¯ ¬ïâ¨, ¯® ª®â®à®¬ã ­ å®¤ïâáï ¤ ­­ë¥ ¤«ï ­ ¡®à 
-
 
992
currentsymb dd 0x0     ; ’¥ªã騩 ᨬ¢®«
-
 
993
startline dd 0x0       ;  ç «® ¯¥à¢®© ¢¨¤¨¬®© áâப¨
648
;---------------------------------------------------------------------
994
lessonstart dd 0x0
-
 
995
lastsymb dd 0x0        ; ‘¨¬¢®« ¢ ¯ ¬ïâ¨, ­ ¡à ­­ë© ¯®á«¥¤­¨¬
-
 
996
mistakes dd 0x0        ; Š®«¨ç¥á⢮ ®è¨¡®ª
-
 
997
 
-
 
998
areawidth dw 0x0
-
 
999
areaheight dw 0x0
-
 
1000
windowx dw 0x0
-
 
1001
windowy dw 0x0
-
 
1002
 
-
 
1003
linecount dd 0x00
649
include 'data.inc'
1004
currentline dd 0x00
-
 
1005
 
-
 
1006
symbtyped dd 0x0
-
 
1007
typestarttime dd 0x0
-
 
1008
currenttime dd 0x0
-
 
1009
typingspeed dd 0x0
-
 
1010
 
-
 
1011
windowwidth dd 0x00
-
 
1012
windowheight dd 0x00
-
 
1013
 
-
 
1014
text db 'Š« ¢¨ âãà­ë© â७ ¦ñà -ŠJ|A‚u|||A- 0.9',0
650
;---------------------------------------------------------------------
1015
buttontext db '‘«¥¤ãî饥 ã¯à ¦­¥­¨¥', 0
-
 
1016
retrybuttontext db '®¢â®à¨âì ã¯à ¦­¥­¨¥', 0
-
 
1017
restartbuttontext db ' ç âì ªãàá § ­®¢®', 0
-
 
1018
 
-
 
1019
speedtext db '‘ª®à®áâì ­ ¡®à  (§­ ª®¢ ¢ ¬¨­ãâã):',0
-
 
1020
mistakestext db 'Ž˜ˆŽŠ:', 0
-
 
1021
lessoncomplete db '“¯à ¦­¥­¨¥ § ¢¥à襭®!',0x00
-
 
1022
db '‘।­ïï ᪮à®áâì ­ ¡®à : '
-
 
1023
speedbytes db 0x30,0x30,0x30,0x30
-
 
1024
db ' §­./¬¨­.', 0xFE, 0xFF
-
 
1025
lessoncompleteend:
-
 
1026
 
-
 
1027
lineistext db '‘’ŽŠ€        ˆ‡', 0
-
 
1028
 
-
 
1029
kbbuffer db 1024 DUP (0x00)
-
 
1030
filestruct:	 ;‘âàãªâãà  ¤ ­­ëå ¤«ï ¢ë§®¢  ä㭪樨 70
-
 
1031
arg1 dd 0x0
-
 
1032
arg2 dd 0x0
-
 
1033
arg3 dd 0x0
-
 
1034
arg4 dd 0x0
-
 
1035
arg5 dd 0x0
-
 
1036
arg6 db 0x0
-
 
1037
arg7 dd 0x0
651
IM_END:
1038
 
-
 
1039
filedatastruct:   ;€âਡãâë ¨ ¤ ­­ë¥ ä ©« 
652
;---------------------------------------------------------------------
1040
attrib dd 0x0
-
 
1041
fntype db 0x0
-
 
1042
db 0x0
-
 
1043
db 0x0
-
 
1044
db 0x0
-
 
1045
dd 0x0	;+8
-
 
1046
dd 0x0	;+12
-
 
1047
dd 0x0	;+16
-
 
1048
dd 0x0	;+20
-
 
1049
dd 0x0	;+24
-
 
1050
dd 0x0	;+28
-
 
1051
size  dq 0x0  ;+32
-
 
1052
;size2 dd 0x0  ;+36
-
 
1053
 
-
 
1054
filesize dd 0x0
-
 
1055
 
-
 
1056
par:
653
par:
2812
I_END:
663
I_END:
2813
664