include 'cdecl.inc'
format ELF
extrn SDL_Init
extrn SDL_SetVideoMode
extrn SDL_PollEvent
extrn SDL_Quit
;video settings
SDL_INIT_VIDEO equ 0x00000020
SDL_FULLSCREEN equ 0x80000000
;event settings
SDL_KEYDOWN equ 2
SDL_MOUSEBUTTONDOWN equ 5
;programm settings
SCREEN_WIDTH equ 800
SCREEN_HEIGHT equ 600
SCREEN_BPP equ 24
struc SDL_keysym
{
.scancode db 0
.sym dd 0
.mod dd 0
.unicode dd 0
}
struc SDL_KeyboardEvent
{
.type db 0
.which db 0
.state db 0
.keysym SDL_keysym
}
struc SDL_Event
{
.type db 0
union SDL_KeyboardEvent
.empty db 0,0,0
}
section '.text' executable
public _start
_start:
ccall SDL_Init,SDL_INIT_VIDEO
ccall SDL_SetVideoMode, SCREEN_WIDTH , SCREEN_HEIGHT , SCREEN_BPP , SDL_FULLSCREEN
;try to make while loop
while_run:
while_polleEvent:
ccall SDL_PollEvent, event
cmp eax, 0
je while_polleEventquit
cmp byte [event.type], SDL_KEYDOWN
jne while_polleEvent
mov byte [run], 0
jmp while_polleEvent
while_polleEventquit:
; if run != 1 quit
cmp byte [run], 1
je while_run
ccall SDL_Quit, 0
mov eax, 1
xor ebx, ebx
int 80h
section '.data' writeable
event SDL_Event
run db 1Compile with lines:
fasm sdl.asm sdl.o
ld -dynamic-linker /lib/ld-linux.so.2 sdl.o /usr/lib/libSDL.so -o sdl
Dowload Source