Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5662 → Rev 5663

/programs/network/vncc/vncc.asm
1,6 → 1,6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;
;; Copyright (C) KolibriOS team 2010-2013. All rights reserved. ;;
;; Copyright (C) KolibriOS team 2010-2015. All rights reserved. ;;
;; Distributed under terms of the GNU General Public License ;;
;; ;;
;; vncc.asm - VNC client for KolibriOS ;;
17,7 → 17,6
__DEBUG__ = 1
__DEBUG_LEVEL__ = 1
 
STRLEN = 64 ; password and server max length
xpos = 4 ; coordinates of image
ypos = 22 ;
 
27,7 → 26,7
 
org 0x0
 
db 'MENUET01' ; 8 byte id
db "MENUET01" ; 8 byte id
dd 0x01 ; header version
dd START ; start of code
dd I_END ; size of image
36,18 → 35,40
dd 0x0 , 0x0 ; I_Param , I_Path
 
 
include '../../macros.inc'
include '../../debug-fdo.inc'
include '../../proc32.inc'
include '../../dll.inc'
include '../../struct.inc'
include '../../network.inc'
include "../../macros.inc"
include "../../debug-fdo.inc"
include "../../proc32.inc"
include "../../dll.inc"
include "../../struct.inc"
include "../../develop/libraries/box_lib/trunk/box_lib.mac"
include "../../network.inc"
 
include 'structs.inc'
include 'logon.inc'
include 'raw.inc'
include 'thread.inc'
struct pixel_format
bpp db ?
depth db ?
big_endian db ?
true_color db ?
red_max dw ?
green_max dw ?
blue_max dw ?
red_shift db ?
green_shift db ?
blue_shift db ?
padding rb 3
ends
 
struct framebuffer
width dw ?
height dw ?
pixelformat pixel_format
name_length dd ?
name rb 256
ends
 
include "logon.inc"
include "raw.inc"
include "thread.inc"
 
START:
 
mcall 68, 11 ; init heap
57,13 → 78,13
test eax, eax
jnz exit
 
call red_logon
call logon
 
mcall 40, 0 ; no events
mcall 40, 0 ; disable all events
mcall 67, 0, 0, 0, 0 ; resize the window (hide it)
mcall 51, 1, thread_start, thread_stack
 
DEBUGF 1,'Thread created: %u\n', eax
DEBUGF 1,"Thread created: %u\n", eax
 
@@:
mcall 5, 10
70,9 → 91,8
cmp byte [thread_ready], 0
je @r
 
mcall 40, 100111b ; mouse, button, key, redraw
mcall 40, EVM_MOUSE + EVM_MOUSE_FILTER + EVM_KEY + EVM_REDRAW + EVM_BUTTON
 
 
mov edx, dword [screen]
movzx esi, dx
shr edx, 16
81,25 → 101,21
mcall 67, 10, 10 ; resize the window
 
mainloop:
mcall 23, 50 ; wait for event, 0,5s timeout
mcall 10 ; wait for event
 
dec eax
jz redraw
 
dec eax
jz key
 
dec eax
jz button
 
sub eax, 3
jz mouse
 
jmp mainloop
 
key:
 
DEBUGF 1,'Sending key event\n'
; DEBUGF 1,"Sending key event\n"
 
mcall 2
mov byte [keyevent.key+3], ah
109,7 → 125,7
 
mouse:
 
DEBUGF 1,'Sending mouse event\n'
; DEBUGF 1,"Sending mouse event\n"
 
mcall 37, 1 ; get mouse pos
sub eax, xpos shl 16 + ypos
121,7 → 137,7
mcall 37, 2 ; get mouse buttons
test al, 00000010b ; test if right button was pressed (bit 1 in kolibri)
jz @f
add al, 00000010b ; in RFB protocol it is bit 2, so if we add bit 2 again, we'll get bit 3 and bit 1 will remain the same
add al, 00000010b ; in RFB protocol it is bit 2, so if we add bit 2 again, we"ll get bit 3 and bit 1 will remain the same
@@:
mov [pointerevent.mask],al
 
130,7 → 146,7
 
redraw:
 
DEBUGF 1,'Drawing window\n'
; DEBUGF 1,"Drawing window\n"
 
mcall 12, 1
 
148,25 → 164,23
jmp mainloop
 
drawbuffer:
 
mcall 7, framebuffer_data, dword[screen], 0
ret
 
 
button:
mcall 17 ; get id
 
exit:
DEBUGF 1, 'Closing time!\n'
DEBUGF 1, "Closing time!\n"
mcall close, [socketnum]
mcall -1
 
no_rfb:
DEBUGF 1, 'This is no vnc server!\n'
DEBUGF 1, "This is no vnc server!\n"
jmp exit
 
invalid_security:
DEBUGF 1, 'Security error: %s\n', receive_buffer+5
DEBUGF 1, "Security error: %s\n", receive_buffer+5
jmp exit
 
 
174,12 → 188,12
 
include_debug_strings ; ALWAYS present in data section
 
handshake db 'RFB 003.003', 10
shared db 0
handshake db "RFB 003.003", 10
ClientInit db 0 ; not shared
beep db 0x85,0x25,0x85,0x40,0
 
pixel_format32 db 0 ; setPixelformat
rb 3 ; padding
db 0, 0, 0 ; padding
.bpp db 32 ; bits per pixel
.depth db 32 ; depth
.big_endian db 0 ; big-endian flag
190,10 → 204,10
.red_shif db 0 ; red-shift
.green_shift db 8 ; green-shift
.blue_shift db 16 ; blue-shift
rb 3 ; padding
db 0, 0, 0 ; padding
 
pixel_format16 db 0 ; setPixelformat
rb 3 ; padding
db 0, 0, 0 ; padding
.bpp db 16 ; bits per pixel
.depth db 15 ; depth
.big_endian db 0 ; big-endian flag
204,10 → 218,10
.red_shif db 0 ; red-shift
.green_shift db 5 ; green-shift
.blue_shift db 10 ; blue-shift
rb 3 ; padding
db 0, 0, 0 ; padding
 
pixel_format8 db 0 ; setPixelformat
rb 3 ; padding
db 0, 0, 0 ; padding
.bpp db 8 ; bits per pixel
.depth db 6 ; depth
.big_endian db 0 ; big-endian flag
218,13 → 232,14
.red_shif db 0 ; red-shift
.green_shift db 2 ; green-shift
.blue_shift db 4 ; blue-shift
rb 3 ; padding
db 0, 0, 0 ; padding
 
encodings db 2 ; setEncodings
rb 1 ; padding
db 1,0 ; number of encodings
db 0 ; padding
db 0, 1 ; number of encodings
db 0,0,0,0 ; raw encoding (DWORD, Big endian order)
db 1,0,0,0 ; Copyrect encoding
; db 1, 0, 0, 0 ; Copyrect encoding
; db
 
fbur db 3 ; frame buffer update request
.inc db 0 ; incremental
251,41 → 266,65
rb 10
 
thread_ready db 0
mouse_dd dd ?
 
URLbox edit_box 200, 25, 16, 0xffffff, 0x6f9480, 0, 0, 0, 65535, serveraddr, mouse_dd, ed_focus, 0, 0
 
; import
align 4
@IMPORT:
 
library network, 'network.obj'
library network, "network.obj",\
box_lib, "box_lib.obj",\
archiver, "archiver.obj"
 
import network, \
getaddrinfo, 'getaddrinfo', \
freeaddrinfo, 'freeaddrinfo', \
inet_ntoa, 'inet_ntoa'
getaddrinfo, "getaddrinfo", \
freeaddrinfo, "freeaddrinfo", \
inet_ntoa, "inet_ntoa"
 
name db 'VNC client', 0
import box_lib,\
edit_box_draw, "edit_box",\
edit_box_key, "edit_box_key",\
edit_box_mouse, "edit_box_mouse",\
scrollbar_v_draw, "scrollbar_v_draw",\
scrollbar_v_mouse, "scrollbar_v_mouse",\
scrollbar_h_draw, "scrollbar_h_draw",\
scrollbar_h_mouse, "scrollbar_h_mouse"
 
import archiver,\
deflate_unpack, "deflate_unpack"
 
name db "VNC client "
name.dash db 0, " "
 
I_END:
 
servername rb 64+1
 
socketnum dd ?
datapointer dd ?
rectangles dw ?
 
frame:
rectangle:
.width dw ?
.height dw ?
.x dw ?
.y dw ?
 
screen:
screen: ; Remote screen resolution
.height dw ?
.width dw ?
 
serveraddr rb 65536
receive_buffer rb 5*1024*1024 ; 5 mb buffer for received data (incoming frbupdate etc)
framebuffer_data rb 1024*768*3 ; framebuffer
framebuffer_data rb 1024*1024*3 ; framebuffer
 
 
rb 0x1000
thread_stack:
 
rb 0x1000
 
IM_END: