Subversion Repositories Kolibri OS

Rev

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