flat assembler
Message board for the users of flat assembler.

flat assembler > Linux > Trying to make Linux GUI executables

Author
Thread Post new topic Reply to topic
ProMiNick



Joined: 24 Mar 2012
Posts: 159
Location: Russian Federation, Sochi
Can anyone share fasm sources of Linux GUI based on different graphic *so (glut,xlib,..)? (maybe glut & xlib of them is enough, because others are appendix over xlib?)

or maybe so:

Can anyone compile examples from source and than share link to binaries?
http://rus-linux.net/MyLDP/BOOKS/Linux-tools/GUI_01.html
I will disassemle them and than place here fasm sources

thanks in advance.

_________________
I don`t like to refer by "you" to one person.
My soul requires acronim "thou" instead.


Last edited by ProMiNick on 29 Apr 2018, 23:41; edited 1 time in total
Post 22 Apr 2018, 21:49
View user's profile Send private message Send e-mail Reply with quote
ProMiNick



Joined: 24 Mar 2012
Posts: 159
Location: Russian Federation, Sochi
This is not work GUI example but ideas around of it
Code:
format ELF executable 3 entry start include 'format\format.inc' include 'FUNDAMENTALS\MACROS\struct.inc' include 'ABI\LINUX\x86\import.inc' include 'ABI\x86\proc.inc' struct _Xdisplay ext_data dd ? free_funcs dd ? fd dd ? conn_checker dd ? proto_major_version dd ? proto_minor_version dd ? vendor dd ? resource_base dd ? resource_mask dd ? resource_id dd ? resource_shift dd ? resource_alloc dd ? byte_order dd ? bitmap_unit dd ? bitmap_pad dd ? bitmap_bit_order dd ? nformats dd ? pixmap_format dd ? vnumber dd ? release dd ? headqEvent dd ? tailqEvent dd ? qEventlen dd ? last_request_read dd ? request dd ? last_req dd ? buffer dd ? bufptr dd ? bufmax dd ? max_request_size dd ? XrmHashBucketRec dd ? synchandler dd ? display_name dd ? default_screen dd ? nscreens dd ? screens dd ? motion_buffer dd ? flags dd ? min_keycode dd ? max_keycode dd ? keysyms dd ? modifiermap dd ? keysyms_per_keycode dd ? xdefaults dd ? scratch_buffer dd ? scratch_length dd ? ext_number dd ? ext_procs dd ? event_vec dd ? wire_vec dd ? lock_meaning dd ? lock dd ? async_handlers dd ? bigreq_size dd ? lock_fns dd ? idlist_alloc dd ? ;things above this line should not move, for binary compatibility key_bindings dd ? cursor_font dd ? atoms dd ? mode_switch dd ? num_lock dd ? context_db dd ? error_vec dd ? defaultCCCs dd ? clientCmaps dd ? perVisualIntensityMaps dd ? im_filters dd ? qfree dd ? next_event_serial_num dd ? flushes dd ? im_fd_info dd ? im_fd_length dd ? conn_watchers dd ? watcher_count dd ? filedes dd ? savedsynchandler dd ? resource_max dd ? xcmisc_opcode dd ? xkb_info dd ? trans_conn dd ? ends interpreter '/lib/ld-linux.so.2' needed 'libX11.so.6' needed 'libc.so.6' import libX11.XOpendisplay,'XOpendisplay',\ libX11.XCreateSimpleWindow,'XCreateSimpleWindow',\ libX11.XSelectInput,'XSelectInput',\ libX11.XMapWindow,'XMapWindow',\ libX11.XNextEvent,'XNextEvent',\ libX11.XFillRectangle,'XFillRectangle',\ libX11.XDrawString,'XDrawString',\ libX11.XClosedisplay,'XClosedisplay',\ \; libc.getenv,'getenv',\ libc.printf,'printf',\ libc.exit,'exit' segment readable executable start: xor eax,eax; cinvoke libc.getenv, envstr cinvoke libX11.XOpendisplay, eax mov [displ],eax test eax,eax ; jnz @F ; @@: virtual at eax _eax _Xdisplay end virtual mov edx,[_eax.default_screen] mov ecx,[_eax.nscreens] lea edx,[edx*4+edx] shl edx,4 add edx,ecx mov ebx,[edx+34h] ;WhitePixel mov ecx,[edx+38h] ;BlackPixel mov eax,[edx+8h] ;RootWindow cinvoke libX11.XCreateSimpleWindow, [displ],eax,10,10,200,200,1,ecx,ebx mov [hwnd],eax invoke libX11.XSelectInput, [displ],eax,$8001 ; ExposureMask | KeyPressMask = $8001 call [libX11.XMapWindow] ;, [displ],[hwnd] already in stack add esp,12 ;restore stack for libX11.XSelectInput ; jmp @f ; nop @B: cinvoke libX11.XNextEvent,[displ],XEvent cmp [XEvent],2 ; KeyPress jnz @F cmp [XEvent],$C ; Expose jnz @B mov ebx,[edx+2Ch] ;DefaultGC cinvoke libX11.XFillRectangle, [displ],[hwnd], ebx, 20, 20, 10, 10 cinvoke libX11.XDrawString, [displ],[hwnd], ebx, 50, 50, msg, msgsize @F: cinvoke libX11.XClosedisplay, [displ] cinvoke libc.exit segment readable writeable msg db 'Hello world!',0 msgsize = $-msg ;envstr db 'DISPLAY',0 displ dd ? hwnd dd ? XEvent dd ?

previously i replace display with displ in too many places. fixed. (in source & in archive)
now it looks like it should work. still not tested. I have only x64 Linux VM for now. Soon download x32, & will make fixies if they needed.


Description: output of fasmg (not tested yet)
Download
Filename: Xlib.zip
Filesize: 699 Bytes
Downloaded: 30 Time(s)


_________________
I don`t like to refer by "you" to one person.
My soul requires acronim "thou" instead.
Post 29 Apr 2018, 23:40
View user's profile Send private message Send e-mail Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  


< Last Thread | Next Thread >

Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Copyright © 2004-2018, Tomasz Grysztar.

Powered by rwasa.