Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
1547 Asper 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
; A unvwater demo
3
; Programmed by Octavio Vega Fernandez
4
; http://octavio.vega.fernandez.googlepages.com/CV4.HTM
5
; Converted to KolibriOS, By Asper
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7
 
8
use32
9344 Doczom 9
        org     0x0
1547 Asper 10
 
9344 Doczom 11
        ;db      'MENUET00'      ; 8 byte id
12
        ;dd      38              ; required os
13
        ;dd      STARTAPP        ; program start
14
        ;dd      I_END           ; program image size
15
        ;dd      0x100000        ; required amount of memory
16
        ;dd      0x00000000      ; reserved=no extended header
1547 Asper 17
 
9344 Doczom 18
        db     'MENUET01'
19
        dd     1
20
        dd     STARTAPP
21
        dd     I_END
22
        dd     MEM
23
        dd     STACKTOP
24
        dd     0
25
        dd     0
26
 
27
;macro start_draw_window x,y,xsize,ysize,areacolor,caption;,capsize
28
;{
29
;        mov     eax, 12                 ; function 12:tell os about windowdraw
30
;        mov     ebx, 1                  ; 1, start of draw
31
;        int     0x40
32
;        ; DRAW WINDOW
33
;        mov     eax, 48                 ; function 48.4 : get skin height
34
;        mov     ebx, 4
35
;        int     0x40
36
;        push    eax
37
;        lea     ecx, [y*65536+ysize+eax]; [y start] *65536 + [y size] + [skin_height]
38
;        xor     eax, eax                ; function 0 : define and draw window
39
;        mov     ebx, x*65536+xsize      ; [x start] *65536 + [x size]
40
;        mov     edx, areacolor          ; color of work area RRGGBB
41
;        ;mov     esi, 0x00334455        ; color of grab bar  RRGGBB
42
;        mov     edi, caption;0x00ddeeff          ; color of frames    RRGGBB
43
;        int     0x40
44
;        pop     eax
45
;}
46
;
47
;macro end_draw_window
48
;{
49
;        mov     eax, 12                 ; end of redraw
50
;        mov     ebx, 2
51
;        int     0x40
52
;}
53
 
1728 clevermous 54
include "aspapi.inc"
1547 Asper 55
SCREEN_WIDTH   equ    100h
56
SCREEN_HEIGHT  equ    100h
57
 
58
 
59
STARTAPP:
60
 
9344 Doczom 61
  mov  eax, 18    ;Get CPU speed
1547 Asper 62
  mov  ebx, 5
63
  int  0x40
64
  shr  eax, 28
65
  mov  dword [delay], eax
66
 
67
init_palette:
68
  mov  edi, Paleta
69
  ;xor  eax, eax
70
  mov  eax, 0x40
71
@@:
72
  stosd
73
  inc  al
74
  jnz  @b
75
 
76
MAIN:
77
l1:
78
  xor  esi, esi
79
l11:
80
  xor  ebx, ebx
81
  mov  edx, 303h
82
  sub  esi, 101h
83
l2:
84
  and  esi, 0xFFFF ;esi=si
85
  add  bl,  [esi+img]
86
  adc  bh,  ah
87
  inc  esi
88
  dec  dh
89
  jnz  l2
90
 
91
  mov  dh, 3
92
  add  esi, 100h-3
93
  dec  dl
94
  jnz  l2
95
  sub  esi, 1ffh
96
  and  esi, 0xFFFF ;esi=si
97
 
98
  mov  al, [img+esi]
99
  sub  bx, ax
100
  shl  ax, 2
101
  sub  bx, ax
102
  shr  bx, 2
103
 
104
  mov  ax, bx
105
  shr  ax, 7
106
  sub  bx, ax
107
  mov  [img+esi], bl
108
  inc  si
109
  jnz  l11
110
 
9344 Doczom 111
  call  copy_buffer_to_video
1547 Asper 112
 
113
 
114
still:
9344 Doczom 115
        mov     eax, 11             ; Test if there is an event in the queue.
116
        int     0x40
1547 Asper 117
 
9344 Doczom 118
        cmp     al,1                  ; redraw request ?
119
        jz      red
120
        cmp     al,2                  ; key in buffer ?
121
        jz      key
122
        cmp     al,3                  ; button in buffer ?
123
        jz      button
1547 Asper 124
 
9344 Doczom 125
        jmp     MAIN
1547 Asper 126
 
127
red:
9344 Doczom 128
        call    draw_window
129
        jmp     MAIN
1547 Asper 130
 
131
 
132
key:
9344 Doczom 133
        mov     eax, 2
134
        int     0x40
135
        cmp     ah, 27              ; Test Esc in ASCII
136
        je      close_app
137
        jmp     MAIN
1547 Asper 138
 
139
button:
9344 Doczom 140
        mov     eax, 17             ; Get pressed button code
141
        int     0x40
142
        cmp     ah, 1               ; Test x button
143
        je      close_app
144
        jmp     MAIN
1547 Asper 145
 
146
draw_window:
9344 Doczom 147
        start_draw_window 100,70,SCREEN_WIDTH+9,SCREEN_HEIGHT+4,0x54224466,labelt;, 14;labellen-labelt
148
        mov     dword [skin_h], eax
149
        end_draw_window
1547 Asper 150
ret
151
 
152
 
153
fail:
9344 Doczom 154
        ; Type something here.
1547 Asper 155
close_app:
9344 Doczom 156
        mov     eax, -1  ; close this program
157
        int     0x40
1547 Asper 158
 
159
 
160
 
161
copy_buffer_to_video:
9344 Doczom 162
        pusha
1547 Asper 163
    ;    mov     eax, 18 ;@WAITVSYNC();
164
    ;    mov     ebx, 14
165
    ;    int     0x40
9344 Doczom 166
        mov     eax, 5  ;delay
167
        mov     ebx, dword [delay]
168
        int     0x40
1547 Asper 169
 
9344 Doczom 170
        mov     eax, dword [skin_h]
171
        lea     edx, [5*65536+eax]
1547 Asper 172
 
9344 Doczom 173
        mov     eax, 65
174
        mov     ebx, img
175
        mov     ecx, SCREEN_WIDTH*65536+SCREEN_HEIGHT ;ecx = w*65536+h
1547 Asper 176
       ; mov     edx, 5*65536+25 ;edx = x*65536+y
9344 Doczom 177
        mov     esi, 8
178
        mov     edi, Paleta
179
        xor     ebp, ebp
180
        int     0x40
181
        popa
1547 Asper 182
ret
183
 
184
; DATA AREA
185
 
186
; Application Title
9344 Doczom 187
labelt   db   'UnvWater demo',0
188
delay    dd   0
189
skin_h   dd   25 ; Skin height.
1547 Asper 190
 
191
I_END:
9344 Doczom 192
Paleta   rb 1024
193
img      db 1
194
         rb 10000h
1547 Asper 195
 
9344 Doczom 196
         rb 256
197
STACKTOP:
198
MEM: