Rev 6582 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
6582 | nisargshah | 1 | ;;================================================================================================;; |
2 | console: ;////////////////////////////////////////////////////////////////////////////////////////;; |
||
3 | ;;------------------------------------------------------------------------------------------------;; |
||
4 | ;? Console-specific functions - initialization, clear screen, ;; |
||
5 | ;? .get_cmd - Takes user command as input from the console ;; |
||
6 | ;? .server_addr - Gets server address from user in the form address:port ;; |
||
7 | ;? .get_username/.get_pass - Takes username/password as input from the user ;; |
||
8 | ;;------------------------------------------------------------------------------------------------;; |
||
9 | ;> ;; |
||
10 | ;;------------------------------------------------------------------------------------------------;; |
||
11 | ;< none ;; |
||
12 | ;;================================================================================================;; |
||
13 | |||
14 | dd .init |
||
15 | dd .server_addr |
||
16 | dd .get_username |
||
17 | dd .get_cmd |
||
18 | dd .print |
||
19 | dd .set_flags |
||
20 | dd .list |
||
21 | dd .progress |
||
22 | dd .error |
||
23 | |||
24 | .init: |
||
25 | ; load console library |
||
26 | stdcall dll.Load, @IMPORT_CONSOLE |
||
27 | ; initialize console |
||
28 | invoke con_start, 1 |
||
29 | invoke con_init, 120, 43, 120, 300, str_title |
||
30 | invoke con_cls |
||
31 | ; Welcome user |
||
32 | invoke con_write_asciiz, str_welcome |
||
33 | ret |
||
34 | |||
35 | .server_addr: |
||
36 | mov [initial_login], 1 |
||
37 | invoke con_cls |
||
38 | invoke con_set_flags, 0x07 |
||
39 | ; ask for server addr |
||
40 | invoke con_write_asciiz, str_srv_addr |
||
41 | ; write prompt (in green color) |
||
42 | invoke con_set_flags, 0x0a |
||
43 | invoke con_write_asciiz, str_prompt |
||
44 | ; read string |
||
45 | invoke con_gets, param_server_addr, 256 |
||
46 | ; check for exit |
||
47 | test eax, eax |
||
48 | jz .exit |
||
49 | cmp byte [param_server_addr], 10 |
||
50 | jz .exit |
||
51 | |||
52 | .port: |
||
53 | invoke con_write_asciiz, str_port |
||
54 | invoke con_gets, param_port, 256 |
||
55 | |||
56 | ; read username |
||
57 | .get_username: |
||
58 | invoke con_set_flags, 0x0a |
||
59 | invoke con_write_asciiz, str_user |
||
60 | invoke con_gets, param_user, 256 |
||
61 | |||
62 | ; read password |
||
63 | .get_pass: |
||
64 | invoke con_write_asciiz, str_pass |
||
65 | invoke con_set_flags, 0x00 ; black text on black background for password |
||
66 | invoke con_gets, param_password, 256 |
||
67 | invoke con_set_flags, 0x0a |
||
68 | |||
69 | cmp [initial_login], 1 |
||
70 | jne arg_handler.copy_user |
||
71 | mov [initial_login], 0 |
||
72 | |||
73 | ; get initial path |
||
74 | .get_path: |
||
75 | invoke con_write_asciiz, str_path |
||
76 | invoke con_gets, param_path, 256 |
||
77 | invoke con_write_asciiz, str_newline |
||
78 | |||
79 | jmp arg_handler.connect |
||
80 | |||
81 | .get_cmd: |
||
82 | ; write prompt |
||
83 | invoke con_write_asciiz, str_prompt |
||
84 | ; read string |
||
85 | invoke con_gets, buf_cmd, 256 |
||
86 | |||
87 | ; print a newline and reset the color back to grey |
||
88 | invoke con_write_asciiz, str_newline |
||
89 | invoke con_set_flags, 0x07 |
||
90 | |||
91 | jmp wait_for_usercommand.parse_cmd |
||
92 | |||
93 | .print: |
||
94 | pushad |
||
95 | |||
96 | invoke con_write_asciiz, [esp+36] |
||
97 | mov esi, [esp+36] |
||
98 | mov ecx, -1 |
||
99 | @@: |
||
100 | inc ecx |
||
101 | lodsb |
||
102 | test al, al |
||
103 | jnz @b |
||
104 | ; write to log file |
||
105 | mov eax, [esp+36] |
||
106 | call write_to_file |
||
107 | |||
108 | @@: |
||
109 | popad |
||
110 | ret 4 |
||
111 | |||
112 | .set_flags: |
||
113 | invoke con_set_flags, [esp+4] |
||
114 | ret 4 |
||
115 | |||
116 | .list: |
||
117 | invoke con_write_asciiz, buf_buffer2 |
||
118 | jmp data_loop |
||
119 | |||
120 | .progress: ; edx = no. of bytes transferred |
||
121 | mov eax, edx |
||
122 | mov edi, str_bytes_done |
||
123 | call dword_ascii |
||
124 | mov byte[edi],0 |
||
125 | icall eax, interface_addr, interface.print, str_downloaded, str_bytes_done, str_bytes |
||
126 | ret |
||
127 | |||
128 | .error: |
||
129 | invoke con_getch2 |
||
130 | jmp .server_addr |
||
131 | |||
132 | .exit: |
||
133 | invoke con_exit, 1 |
||
134 | jmp exit |
||
135 | |||
136 | |||
137 | align 4 |
||
138 | @IMPORT_CONSOLE: |
||
139 | |||
140 | library console, 'console.obj' |
||
141 | |||
142 | import console, \ |
||
143 | con_start, 'START', \ |
||
144 | con_init, 'con_init', \ |
||
145 | con_write_asciiz, 'con_write_asciiz', \ |
||
146 | con_exit, 'con_exit', \ |
||
147 | con_gets, 'con_gets', \ |
||
148 | con_cls, 'con_cls', \ |
||
149 | con_getch2, 'con_getch2', \ |
||
150 | con_set_cursor_pos, 'con_set_cursor_pos', \ |
||
151 | con_write_string, 'con_write_string', \ |
||
152 | con_get_flags, 'con_get_flags', \ |
||
153 | con_set_flags, 'con_set_flags'> |