0,0 → 1,159 |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
; A unvwater demo |
; Programmed by Octavio Vega Fernandez |
; http://octavio.vega.fernandez.googlepages.com/CV4.HTM |
; Converted to KolibriOS, By Asper |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
|
use32 |
org 0x0 |
|
db 'MENUET00' ; 8 byte id |
dd 38 ; required os |
dd STARTAPP ; program start |
dd I_END ; program image size |
dd 0x100000 ; required amount of memory |
dd 0x00000000 ; reserved=no extended header |
|
include "aspAPI.inc" |
SCREEN_WIDTH equ 100h |
SCREEN_HEIGHT equ 100h |
|
|
STARTAPP: |
|
mov eax, 18 ;Get CPU speed |
mov ebx, 5 |
int 0x40 |
shr eax, 28 |
mov dword [delay], eax |
|
init_palette: |
mov edi, Paleta |
;xor eax, eax |
mov eax, 0x40 |
@@: |
stosd |
inc al |
jnz @b |
|
MAIN: |
l1: |
xor esi, esi |
l11: |
xor ebx, ebx |
mov edx, 303h |
sub esi, 101h |
l2: |
and esi, 0xFFFF ;esi=si |
add bl, [esi+img] |
adc bh, ah |
inc esi |
dec dh |
jnz l2 |
|
mov dh, 3 |
add esi, 100h-3 |
dec dl |
jnz l2 |
sub esi, 1ffh |
and esi, 0xFFFF ;esi=si |
|
mov al, [img+esi] |
sub bx, ax |
shl ax, 2 |
sub bx, ax |
shr bx, 2 |
|
mov ax, bx |
shr ax, 7 |
sub bx, ax |
mov [img+esi], bl |
inc si |
jnz l11 |
|
call copy_buffer_to_video |
|
|
still: |
mov eax, 11 ; Test if there is an event in the queue. |
int 0x40 |
|
cmp al,1 ; redraw request ? |
jz red |
cmp al,2 ; key in buffer ? |
jz key |
cmp al,3 ; button in buffer ? |
jz button |
|
jmp MAIN |
|
red: |
call draw_window |
jmp MAIN |
|
|
key: |
mov eax, 2 |
int 0x40 |
cmp ah, 27 ; Test Esc in ASCII |
je close_app |
jmp MAIN |
|
button: |
mov eax, 17 ; Get pressed button code |
int 0x40 |
cmp ah, 1 ; Test x button |
je close_app |
jmp MAIN |
|
draw_window: |
start_draw_window 100,70,SCREEN_WIDTH+10,SCREEN_HEIGHT+5,0x14224466,labelt;, 14;labellen-labelt |
mov dword [skin_h], eax |
end_draw_window |
ret |
|
|
fail: |
; Type something here. |
close_app: |
mov eax, -1 ; close this program |
int 0x40 |
|
|
|
copy_buffer_to_video: |
pusha |
; mov eax, 18 ;@WAITVSYNC(); |
; mov ebx, 14 |
; int 0x40 |
mov eax, 5 ;delay |
mov ebx, dword [delay] |
int 0x40 |
|
mov eax, dword [skin_h] |
lea edx, [5*65536+eax] |
|
mov eax, 65 |
mov ebx, img |
mov ecx, SCREEN_WIDTH*65536+SCREEN_HEIGHT ;ecx = w*65536+h |
; mov edx, 5*65536+25 ;edx = x*65536+y |
mov esi, 8 |
mov edi, Paleta |
xor ebp, ebp |
int 0x40 |
popa |
ret |
|
; DATA AREA |
|
; Application Title |
labelt db 'UnvWater demo',0 |
delay dd 0 |
skin_h dd 25 ; Skin height. |
|
I_END: |
Paleta rb 1024 |
img db 1 |
rb 10000h |
|
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |