Subversion Repositories Kolibri OS

Rev

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

Rev 485 Rev 551
1
; Originally written by Jarek Pelczar
1
; Originally written by Jarek Pelczar
2
include "lang.inc"
2
include "lang.inc"
3
include "..\..\..\macros.inc"
3
include "..\..\..\macros.inc"
4
 
4
 
5
WND_SIZE_X		= 320
5
WND_SIZE_X		= 320
6
WND_SIZE_Y		= 200
6
WND_SIZE_Y		= 200
7
 
7
 
8
MEOS_APP_START
8
MEOS_APP_START
9
CODE
9
CODE
10
    fninit
10
    fninit
11
    mov al,40
11
    mov al,40
12
    mov bl,101b
12
    mov bl,101b
13
    mcall
13
    mcall
14
    call init_palette
14
    call init_palette
15
    call init_texture
15
    call init_texture
16
    jmp .paint_window
16
    jmp .paint_window
17
.event_loop:
17
.event_loop:
18
    mov al,23
18
    mov al,23
19
    mov ebx,1
19
    mov ebx,1
20
    mcall
20
    mcall
21
    test eax,eax
21
    test eax,eax
22
    je .draw_screen
22
    je .draw_screen
23
    dec eax
23
    dec eax
24
    je .paint_window
24
    je .paint_window
25
 
25
 
26
    or  eax,-1
26
    or  eax,-1
27
    mcall
27
    mcall
28
 
28
 
29
.draw_screen:
29
.draw_screen:
30
    call blit_8_to_32
30
    call blit_8_to_32
31
    mov al,7
31
    mov al,7
32
    mov ebx,virtual_screen_32
32
    mov ebx,virtual_screen_32
33
    mov ecx,(WND_SIZE_X shl 16)+WND_SIZE_Y
33
    mov ecx,(WND_SIZE_X shl 16)+WND_SIZE_Y
34
    xor edx,edx
34
    xor edx,edx
35
    mcall
35
    mcall
36
    call rotate_pal
36
    call rotate_pal
37
    jmp .event_loop
37
    jmp .event_loop
38
 
38
 
39
.paint_window:
39
.paint_window:
40
    mov al,12
40
    mov al,12
41
    push eax
41
    push eax
42
    xor ebx,ebx
42
    xor ebx,ebx
43
    inc ebx
43
    inc ebx
44
    mcall
44
    mcall
45
 
45
 
46
    xor eax,eax
46
    xor eax,eax
47
    mov ebx,(100 shl 16)+(WND_SIZE_X+8)
47
    mov ebx,(100 shl 16)+(WND_SIZE_X+8)
48
    mov ecx,(100 shl 16)+(WND_SIZE_Y+25)
48
    mov ecx,(100 shl 16)+(WND_SIZE_Y+25)
49
    mov edx,0x33000000
49
    mov edx,0x34000000
50
    mov edi,title
50
    mov edi,title
51
    mcall
51
    mcall
52
 
52
 
53
    mov al,7
53
    mov al,7
54
    mov ebx,virtual_screen_32
54
    mov ebx,virtual_screen_32
55
    mov ecx,(WND_SIZE_X shl 16)+WND_SIZE_Y
55
    mov ecx,(WND_SIZE_X shl 16)+WND_SIZE_Y
56
    xor edx,edx
56
    xor edx,edx
57
    mcall
57
    mcall
58
 
58
 
59
    pop eax
59
    pop eax
60
    and ebx,2 ; bit 1 is set
60
    and ebx,2 ; bit 1 is set
61
    mcall
61
    mcall
62
 
62
 
63
    jmp .event_loop
63
    jmp .event_loop
64
 
64
 
65
init_palette:
65
init_palette:
66
    mov edi,_palette
66
    mov edi,_palette
67
    mov ecx,64
67
    mov ecx,64
68
    xor eax,eax
68
    xor eax,eax
69
.color1:
69
.color1:
70
    inc ah
70
    inc ah
71
    mov al,ah
71
    mov al,ah
72
    stosb
72
    stosb
73
    xor al,al
73
    xor al,al
74
    stosb
74
    stosb
75
    stosb
75
    stosb
76
    inc edi
76
    inc edi
77
    loop .color1
77
    loop .color1
78
    mov ecx,64
78
    mov ecx,64
79
    push ecx
79
    push ecx
80
    xor eax,eax
80
    xor eax,eax
81
.color2:
81
.color2:
82
    mov al,63
82
    mov al,63
83
    stosb
83
    stosb
84
    mov al,ah
84
    mov al,ah
85
    stosb
85
    stosb
86
    xor al,al
86
    xor al,al
87
    stosb
87
    stosb
88
    inc ah
88
    inc ah
89
    inc edi
89
    inc edi
90
    loop .color2
90
    loop .color2
91
    pop ecx
91
    pop ecx
92
    push ecx
92
    push ecx
93
    xor eax,eax
93
    xor eax,eax
94
.color3:
94
.color3:
95
    mov al,63
95
    mov al,63
96
    stosb
96
    stosb
97
    stosb
97
    stosb
98
    mov al,ah
98
    mov al,ah
99
    stosb
99
    stosb
100
    inc ah
100
    inc ah
101
    inc edi
101
    inc edi
102
    loop .color3
102
    loop .color3
103
    pop ecx
103
    pop ecx
104
    mov eax,0x003f3f3f
104
    mov eax,0x003f3f3f
105
    rep stosd
105
    rep stosd
106
    ret
106
    ret
107
 
107
 
108
init_texture:
108
init_texture:
109
    fldpi
109
    fldpi
110
    mov [_fpom16],180
110
    mov [_fpom16],180
111
    fidiv [_fpom16]
111
    fidiv [_fpom16]
112
    fstp [_st_rad]
112
    fstp [_st_rad]
113
    mov edi,virtual_screen_8
113
    mov edi,virtual_screen_8
114
    cdq
114
    cdq
115
.itex_vertical:
115
.itex_vertical:
116
    xor ecx,ecx
116
    xor ecx,ecx
117
    fld [_st_rad]
117
    fld [_st_rad]
118
    mov [_fpom16],5
118
    mov [_fpom16],5
119
    fimul [_fpom16]
119
    fimul [_fpom16]
120
    mov [_fpom16],dx
120
    mov [_fpom16],dx
121
    fimul [_fpom16]
121
    fimul [_fpom16]
122
    fsin
122
    fsin
123
    fmul [_multiplier]
123
    fmul [_multiplier]
124
    fstp [_fpom32]
124
    fstp [_fpom32]
125
.itex_horizontal:
125
.itex_horizontal:
126
    fld [_st_rad]
126
    fld [_st_rad]
127
    mov [_fpom16],3
127
    mov [_fpom16],3
128
    fimul [_fpom16]
128
    fimul [_fpom16]
129
    mov [_fpom16],cx
129
    mov [_fpom16],cx
130
    fimul [_fpom16]
130
    fimul [_fpom16]
131
    fsin
131
    fsin
132
    fmul [_multiplier]
132
    fmul [_multiplier]
133
    fadd [_fpom32]
133
    fadd [_fpom32]
134
    mov [_fpom16],127
134
    mov [_fpom16],127
135
    fiadd [_fpom16]
135
    fiadd [_fpom16]
136
    fistp [_fpom16]
136
    fistp [_fpom16]
137
    mov ax,[_fpom16]
137
    mov ax,[_fpom16]
138
    inc eax
138
    inc eax
139
    stosb
139
    stosb
140
    inc ecx
140
    inc ecx
141
    cmp ecx,WND_SIZE_X
141
    cmp ecx,WND_SIZE_X
142
    jne .itex_horizontal
142
    jne .itex_horizontal
143
    inc edx
143
    inc edx
144
    cmp edx,WND_SIZE_Y
144
    cmp edx,WND_SIZE_Y
145
    jne .itex_vertical
145
    jne .itex_vertical
146
    ret
146
    ret
147
 
147
 
148
rotate_pal:
148
rotate_pal:
149
    mov ebx,[_palette+4]
149
    mov ebx,[_palette+4]
150
    mov edi,_palette+4
150
    mov edi,_palette+4
151
    mov esi,_palette+8
151
    mov esi,_palette+8
152
    xor ecx,ecx
152
    xor ecx,ecx
153
    mov cl,255
153
    mov cl,255
154
;    cld
154
;    cld
155
    rep movsd
155
    rep movsd
156
    mov [_palette+1020],ebx
156
    mov [_palette+1020],ebx
157
    ret
157
    ret
158
 
158
 
159
include "graph8.inc"
159
include "graph8.inc"
160
 
160
 
161
DATA
161
DATA
162
  _multiplier	dd 63.5
162
  _multiplier	dd 63.5
163
 
163
 
164
  title          db 'Plasma',0
164
  title          db 'Plasma',0
165
 
165
 
166
UDATA
166
UDATA
167
  _fpom32		rd 1
167
  _fpom32		rd 1
168
  _fpom16		rw 1
168
  _fpom16		rw 1
169
  _st_rad		rd 1
169
  _st_rad		rd 1
170
  _palette:	rd 256
170
  _palette:	rd 256
171
 
171
 
172
  virtual_screen_8:
172
  virtual_screen_8:
173
   	rb WND_SIZE_X*WND_SIZE_Y
173
   	rb WND_SIZE_X*WND_SIZE_Y
174
 
174
 
175
  virtual_screen_32:
175
  virtual_screen_32:
176
   	rb WND_SIZE_X*WND_SIZE_Y*3
176
   	rb WND_SIZE_X*WND_SIZE_Y*3
177
 
177
 
178
MEOS_APP_END
178
MEOS_APP_END