Subversion Repositories Kolibri OS

Rev

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

Rev 197 Rev 485
Line 4... Line 4...
4
;
4
;
5
;   Compile with FASM for Menuet
5
;   Compile with FASM for Menuet
6
;
6
;
7
;
7
;
Line 8... Line 8...
8
 
8
 
Line 9... Line 9...
9
include 'macros.inc'
9
include '..\..\..\macros.inc'
10
 
10
 
11
memsize = 1000h
11
memsize = 1000h
Line 16... Line 16...
16
version equ ' 1.1 '
16
version equ ' 1.1 '
Line 17... Line 17...
17
  
17
  
Line 18... Line 18...
18
               use32              ; ¢ª«îç¨âì 32-¡¨â­ë© ०¨¬  áᥬ¡«¥à 
18
               use32              ; ¢ª«îç¨âì 32-¡¨â­ë© ०¨¬  áᥬ¡«¥à 
19
 
19
 
20
               db     'MENUET01'              ; 8 byte id
20
               db     'MENUET01'              ; 8 byte id
21
               dd     0x01                    ; header version
21
               dd     0x01                    ; title version
22
               dd     START                   ; start of code
22
               dd     START                   ; start of code
23
               dd     I_END                   ; size of image
23
               dd     I_END                   ; size of image
24
               dd     memsize                 ; memory for app
24
               dd     memsize                 ; memory for app
Line 41... Line 41...
41
drawwindow:	
41
drawwindow:	
42
      mov  eax,48
42
      mov  eax,48
43
      mov  ebx,3
43
      mov  ebx,3
44
      mov  ecx,sc
44
      mov  ecx,sc
45
      mov  edx,sizeof.system_colors
45
      mov  edx,sizeof.system_colors
46
      int  0x40
46
      mcall
Line 47... Line 47...
47
 
47
 
48
      mov	eax, 12
48
      mov	eax, 12
49
	mov	ebx, 1 ; start redraw
49
	mov	ebx, 1 ; start redraw
Line 50... Line 50...
50
	int	0x40
50
	mcall
51
 
51
 
52
	mov	eax, 0 ; window
52
	mov	eax, 0 ; window
53
	mov	ebx, 100 shl 16 + 300
53
	mov	ebx, 100 shl 16 + 300
54
	mov	ecx, 100 shl 16 + 90
54
	mov	ecx, 100 shl 16 + 90
55
	mov   edx, [sc.work]
55
	mov   edx, [sc.work]
56
      or    edx, 0x13000000
56
      or    edx, 0x13000000
Line 57... Line 57...
57
	mov	edi, header
57
	mov	edi, title
58
	int	0x40
58
	mcall
59
 
59
 
60
	mov	eax, 4
60
	mov	eax, 4
61
	mov	ebx, 17 shl 16 + 30
61
	mov	ebx, 17 shl 16 + 30
62
      mov   ecx, [sc.work_text]
62
      mov   ecx, [sc.work_text]
Line 63... Line 63...
63
	mov	edx, msg_nb
63
	mov	edx, msg_nb
64
	mov	esi, 14
64
	mov	esi, 14
65
	int	0x40
65
	mcall
66
	
66
	
67
	mov	ebx, 105 shl 16 + 30
67
	mov	ebx, 105 shl 16 + 30
Line 68... Line 68...
68
	mov	edx, [nb_name]
68
	mov	edx, [nb_name]
69
	movzx	esi, byte[edx]
69
	movzx	esi, byte[edx]
70
	inc	edx
70
	inc	edx
71
	int	0x40
71
	mcall
Line 72... Line 72...
72
	
72
	
73
	mov	ebx, 17 shl 16 + 40
73
	mov	ebx, 17 shl 16 + 40
74
	mov	edx, msg_stat
74
	mov	edx, msg_stat
75
	mov	esi, 8
75
	mov	esi, 8
76
	int	0x40
76
	mcall
77
	
77
	
78
	mov	ebx, 102 shl 16 + 50
78
	mov	ebx, 102 shl 16 + 50
79
	mov	edx, msg_divs
79
	mov	edx, msg_divs
80
	mov	esi, 32
80
	mov	esi, 32
81
	int	0x40
81
	mcall
82
	mov	ebx, 17 shl 16 + 62
82
	mov	ebx, 17 shl 16 + 62
Line 83... Line 83...
83
	mov	edx, msg_hdd
83
	mov	edx, msg_hdd
84
	mov	esi, 10
84
	mov	esi, 10
85
	int	0x40
85
	mcall
86
	mov	ebx, 17 shl 16 + 72
86
	mov	ebx, 17 shl 16 + 72
87
	mov	edx, msg_sgd
87
	mov	edx, msg_sgd
88
	int	0x40
88
	mcall
89
	
89
	
90
	call	get_divs
90
	call	get_divs
91
	mov	eax, 47
91
	mov	eax, 47
92
	mov	ebx, 0x30000
92
	mov	ebx, 0x30000
Line 93... Line 93...
93
	mov	ecx, [val_hdd]
93
	mov	ecx, [val_hdd]
94
	mov	edx, 8
94
	mov	edx, 8
95
	shl	edx, cl
95
	shl	edx, cl
96
	mov	ecx, edx
96
	mov	ecx, edx
97
	mov	edx, 80 shl 16 + 62
97
	mov	edx, 80 shl 16 + 62
98
	mov	esi, [sc.work_text]
98
	mov	esi, [sc.work_text]
Line 99... Line 99...
99
	int	0x40
99
	mcall
100
	
100
	
101
	mov	ecx, [val_sgd]
101
	mov	ecx, [val_sgd]
Line 117... Line 117...
117
	mov	edx, msg_dis
117
	mov	edx, msg_dis
118
	dec	al
118
	dec	al
119
	jz	@f
119
	jz	@f
120
	mov	edx, msg_en
120
	mov	edx, msg_en
121
@@:	mov	eax, 4
121
@@:	mov	eax, 4
122
	int	0x40
122
	mcall
Line 123... Line 123...
123
 
123
 
124
	; ‘®§¤ ñ¬ ª­®¯ªã
124
	; ‘®§¤ ñ¬ ª­®¯ªã
125
	mov	ecx, 27 shl 16 + 20
125
	mov	ecx, 27 shl 16 + 20
126
	mov	eax, 8
126
	mov	eax, 8
127
	mov	ebx, 220 shl 16 + 70
127
	mov	ebx, 220 shl 16 + 70
128
	mov	esi, [sc.work_button]
128
	mov	esi, [sc.work_button]
129
	mov	edx, 2
129
	mov	edx, 2
Line 130... Line 130...
130
	int	0x40
130
	mcall
131
	
131
	
132
	; ˆ ¥éñ 14 ;)
132
	; ˆ ¥éñ 14 ;)
133
	mov	edi, 7
133
	mov	edi, 7
134
	mov	ecx, 60 shl 16 + 10
134
	mov	ecx, 60 shl 16 + 10
135
	mov	eax, 8
135
	mov	eax, 8
Line 136... Line 136...
136
	mov	ebx, 105 shl 16 + 25
136
	mov	ebx, 105 shl 16 + 25
137
	mov	edx, 3
137
	mov	edx, 3
138
	
138
	
139
@@:	int	0x40
139
@@:	mcall
140
	inc	edx
140
	inc	edx
Line 141... Line 141...
141
	add	ebx, 27 shl 16 
141
	add	ebx, 27 shl 16 
142
	dec	edi
142
	dec	edi
143
	jnz	@b
143
	jnz	@b
144
 
144
 
145
	add	ecx, 12 shl 16 
145
	add	ecx, 12 shl 16 
146
	mov	ebx, 105 shl 16 + 25
146
	mov	ebx, 105 shl 16 + 25
147
	mov	edi, 7
147
	mov	edi, 7
148
@@:	int	0x40
148
@@:	mcall
Line 149... Line 149...
149
	inc	edx
149
	inc	edx
150
	add	ebx, 27 shl 16 
150
	add	ebx, 27 shl 16 
151
	dec	edi
151
	dec	edi
Line 152... Line 152...
152
	jnz	@b
152
	jnz	@b
153
	
153
	
154
end_dr:	mov	eax, 12
154
end_dr:	mov	eax, 12
Line 155... Line 155...
155
	mov	ebx, 2 ; end redraw
155
	mov	ebx, 2 ; end redraw
156
	int	0x40
156
	mcall
Line 157... Line 157...
157
 
157
 
158
; Wait for event ...
158
; Wait for event ...
159
	mov	eax, 10
159
	mov	eax, 10
160
	int	0x40
160
	mcall
161
	
161
	
162
	cmp	al, 3
162
	cmp	al, 3
163
	jne	not_bt
163
	jne	not_bt
164
	
164
	
165
	mov	eax, 17			; get id
165
	mov	eax, 17			; get id
166
	int	0x40
166
	mcall
167
	cmp	ah, 1
167
	cmp	ah, 1
Line 198... Line 198...
198
 
198
 
199
	
199
	
200
not_bt:	cmp	al, 2
200
not_bt:	cmp	al, 2
201
	jne	drawwindow
201
	jne	drawwindow
202
	mov	eax, 2			; ¯®ª  ª« ¢  ­¥ ¯®¤¤¥à¦¨¢ ¥âáï - ç¨â ¥¬ ¨ § ¡ë¢ ¥¬
202
	mov	eax, 2			; ¯®ª  ª« ¢  ­¥ ¯®¤¤¥à¦¨¢ ¥âáï - ç¨â ¥¬ ¨ § ¡ë¢ ¥¬
203
	int	0x40
203
	mcall
204
	jmp	drawwindow	
204
	jmp	drawwindow	
205
;--------------------------------------------------------------------------
205
;--------------------------------------------------------------------------
206
bus_num:	db	2	; ®¬¥à 設ë
206
bus_num:	db	2	; ®¬¥à 設ë
Line 352... Line 352...
352
	mov	bl, 6
352
	mov	bl, 6
353
	xor	cl, cl
353
	xor	cl, cl
354
nbus:	mov	bh, [bus_num]
354
nbus:	mov	bh, [bus_num]
355
ndevfn:	mov	ch, [devfn]
355
ndevfn:	mov	ch, [devfn]
356
	mov	eax, 62
356
	mov	eax, 62
357
	int	0x40
357
	mcall
358
	cmp	eax, 0xffffffff
358
	cmp	eax, 0xffffffff
359
	je	bd_next
359
	je	bd_next
360
	;---------
360
	;---------
361
	mov	esi, bd_table_end - bd_table - 12
361
	mov	esi, bd_table_end - bd_table - 12
362
@@:	cmp	eax, [bd_table + esi]
362
@@:	cmp	eax, [bd_table + esi]
Line 396... Line 396...
396
	mov	bh, [bus_num]
396
	mov	bh, [bus_num]
397
	mov	bl, 4
397
	mov	bl, 4
398
	mov	ch, [devfn]
398
	mov	ch, [devfn]
399
	mov	cl, al
399
	mov	cl, al
400
	mov	eax, 62
400
	mov	eax, 62
401
	int	0x40
401
	mcall
402
	pop	edx
402
	pop	edx
403
	and	al, dh
403
	and	al, dh
404
	jnz	@f
404
	jnz	@f
405
	lodsw
405
	lodsw
406
	test	al, al
406
	test	al, al
Line 424... Line 424...
424
	mov	bh, [bus_num]
424
	mov	bh, [bus_num]
425
	mov	bl, 4
425
	mov	bl, 4
426
	mov	ch, [devfn]
426
	mov	ch, [devfn]
427
	mov	cl, al
427
	mov	cl, al
428
	mov	eax, 62
428
	mov	eax, 62
429
	int	0x40
429
	mcall
430
	mov	bl, 8
430
	mov	bl, 8
431
	test	edi, edi
431
	test	edi, edi
432
	jz	@f
432
	jz	@f
433
	or	al, dl
433
	or	al, dl
434
	mov	dl, al
434
	mov	dl, al
435
	mov	eax, 62
435
	mov	eax, 62
436
	int	0x40
436
	mcall
437
	jmp	bd_ss_nxt
437
	jmp	bd_ss_nxt
438
@@:	not	dl
438
@@:	not	dl
439
	and	al, dl
439
	and	al, dl
440
	mov	dl, al
440
	mov	dl, al
441
	mov	eax, 62
441
	mov	eax, 62
442
	int	0x40	
442
	mcall	
443
	jmp	bd_ss_nxt
443
	jmp	bd_ss_nxt
444
bd_ss_end:
444
bd_ss_end:
445
	ret
445
	ret
446
;------- nForce 2 -----------
446
;------- nForce 2 -----------
447
set_stat_nforce2:
447
set_stat_nforce2:
Line 450... Line 450...
450
	mov	bh, [bus_num]
450
	mov	bh, [bus_num]
451
	mov	bl, 4
451
	mov	bl, 4
452
	mov	ch, [devfn]
452
	mov	ch, [devfn]
453
	mov	cl, 0x6f
453
	mov	cl, 0x6f
454
	mov	eax, 62
454
	mov	eax, 62
455
	int	0x40
455
	mcall
456
	and	al, 0x1F
456
	and	al, 0x1F
457
	mov	dl, al
457
	mov	dl, al
458
	mov	bl, 8
458
	mov	bl, 8
459
	mov	eax, 62
459
	mov	eax, 62
460
	int	0x40
460
	mcall
461
	pop	eax
461
	pop	eax
462
	test	eax, eax
462
	test	eax, eax
463
	jz	@f
463
	jz	@f
464
	or	dl, 0x10
464
	or	dl, 0x10
465
	mov	eax, 62
465
	mov	eax, 62
466
	int	0x40
466
	mcall
467
	ret
467
	ret
468
@@:	and	dl, 0xef
468
@@:	and	dl, 0xef
469
	mov	eax, 62
469
	mov	eax, 62
470
	int	0x40
470
	mcall
471
	ret
471
	ret
472
;--------------------------------------------------------------------------
472
;--------------------------------------------------------------------------
473
;                        x8    x16   x32    x64  x128  x256  x512
473
;                        x8    x16   x32    x64  x128  x256  x512
474
div_hdd:	db	0x23, 0x27, 0x2B, 0x2F, 0x63, 0x67, 0x6B ; Halt Disconnect Divisor
474
div_hdd:	db	0x23, 0x27, 0x2B, 0x2F, 0x63, 0x67, 0x6B ; Halt Disconnect Divisor
475
div_sgd:	db	0x12, 0x52, 0x92, 0xD2, 0x12, 0x52, 0x92 ; Stop Grand Divisor
475
div_sgd:	db	0x12, 0x52, 0x92, 0xD2, 0x12, 0x52, 0x92 ; Stop Grand Divisor
Line 489... Line 489...
489
; IN : ESI - hdd (0 = x8, 1 = x16 ..)
489
; IN : ESI - hdd (0 = x8, 1 = x16 ..)
490
;      EDI - sgd (0 = x8, 1 = x16 ..)
490
;      EDI - sgd (0 = x8, 1 = x16 ..)
491
	mov	eax, 68
491
	mov	eax, 68
492
	mov	ebx, 3
492
	mov	ebx, 3
493
	mov	edx, 0xC001001b
493
	mov	edx, 0xC001001b
494
	int	0x40
494
	mcall
495
	mov	al, [div_hdd + esi]
495
	mov	al, [div_hdd + esi]
496
	mov	ah, [div_sgd + edi]
496
	mov	ah, [div_sgd + edi]
497
	and	eax, 0xFFFBFFFF
497
	and	eax, 0xFFFBFFFF
498
	cmp	edi, 3
498
	cmp	edi, 3
499
	jle	@f
499
	jle	@f
500
	or	eax, 0x40000
500
	or	eax, 0x40000
501
@@:	mov	edi, eax
501
@@:	mov	edi, eax
502
	mov	esi, ebx
502
	mov	esi, ebx
503
	mov	eax, 68
503
	mov	eax, 68
504
	mov	ebx, 4
504
	mov	ebx, 4
505
	int	0x40
505
	mcall
506
	ret
506
	ret
Line 507... Line 507...
507
 
507
 
508
get_divs:
508
get_divs:
509
; OUT : val_hdd - hdd (0 = x8, 1 = x16 ..)
509
; OUT : val_hdd - hdd (0 = x8, 1 = x16 ..)
510
;       val_sgd - sgd ...
510
;       val_sgd - sgd ...
511
	mov	eax, 68
511
	mov	eax, 68
512
	mov	ebx, 3
512
	mov	ebx, 3
513
	mov	edx, 0xC001001b
513
	mov	edx, 0xC001001b
514
	int	0x40
514
	mcall
515
	mov	ecx, 7
515
	mov	ecx, 7
516
@@:	cmp	[div_hdd + ecx - 1], al
516
@@:	cmp	[div_hdd + ecx - 1], al
517
	je	@f
517
	je	@f
518
	loop	@b
518
	loop	@b
Line 547... Line 547...
547
;******************************************************************************
547
;******************************************************************************
Line 548... Line 548...
548
 
548
 
Line 549... Line 549...
549
 
549
 
Line 550... Line 550...
550
;--------------------------------------------------------------------------
550
;--------------------------------------------------------------------------
551
 
551
 
552
header	db appname,version,0
552
title	db appname,version,0
553
 
553