Subversion Repositories Kolibri OS

Rev

Rev 31 | Rev 316 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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