Browse Source

Add exit on enter press

Yann Weber 5 years ago
parent
commit
cd05d15207
1 changed files with 31 additions and 42 deletions
  1. 31
    42
      wtfstopw.asm

+ 31
- 42
wtfstopw.asm View File

147
 mov rdx, rcx
147
 mov rdx, rcx
148
 syscall
148
 syscall
149
 
149
 
150
-sleep:
151
-mov rax, 35
152
-mov rdi, ts_sleep
153
-mov rsi, 0
150
+; Attempt to read from stdin
151
+; if something read, enter has been pressed
152
+mov rax, 0
153
+mov rdi, 0
154
+mov rsi, buf
155
+mov rdx, 1
154
 syscall
156
 syscall
155
-jmp print_time
157
+cmp rax, 0
158
+jge flush_stdin ; flush stdin and exit
159
+
160
+sleep:
161
+	mov rax, 35
162
+	mov rdi, ts_sleep
163
+	mov rsi, 0
164
+	syscall
165
+
166
+jmp print_time ; main loop
167
+
168
+flush_stdin:
169
+	mov rax, 0
170
+	mov rdi, 0
171
+	mov rsi, buf
172
+	mov rdx, 1
173
+	syscall
174
+	cmp rax, 0
175
+	je newline
176
+	jg flush_stdin
156
 
177
 
157
 exit:
178
 exit:
158
 	mov rax, 60 ; sys_exit
179
 	mov rax, 60 ; sys_exit
163
 	mov rdi, 1 ; failure
184
 	mov rdi, 1 ; failure
164
 	syscall
185
 	syscall
165
 
186
 
166
-
167
-dumprax:
168
-	push rax
169
-	loopdump:
170
-		push rax
171
-		mov rbx, rax
172
-		and rbx, 0x0F
173
-		cmp bl, 0xA
174
-		jge hexdigit
175
-		add bl, 0x30
176
-		jmp loopcont
177
-		hexdigit:
178
-		sub bl, 10
179
-		add bl, 0x41
180
-		loopcont:
181
-dbg:
182
-		mov byte [digit], bl
183
-		mov rax, 1
184
-		mov rdi, 1
185
-		mov rsi, digit
186
-		mov rdx, 1
187
-		syscall
188
-	pop rax
189
-	mov rdi, 10
190
-	xor rdx, rdx
191
-	mov rsi, rax
192
-	div rdi
193
-	cmp rax, 10
194
-	jge loopdump
195
-
196
-	mov al, 10
197
-	mov al, [digit]
187
+newline:
198
 	mov rax, 1
188
 	mov rax, 1
199
 	mov rdi, 1
189
 	mov rdi, 1
200
 	mov rsi, nl
190
 	mov rsi, nl
201
 	mov rdx, 1
191
 	mov rdx, 1
202
 	syscall
192
 	syscall
193
+	jmp exit
203
 
194
 
204
-	pop rax
205
-ret
206
 
195
 
207
 section .data
196
 section .data
208
-foobar: ISTRUC timespec
197
+
209
 ts_start:
198
 ts_start:
210
 	tv_start_s dq 0
199
 	tv_start_s dq 0
211
 	tv_start_us dq 0
200
 	tv_start_us dq 0
215
 msglen: equ $ - msg
204
 msglen: equ $ - msg
216
 
205
 
217
 hours: db "000000000"
206
 hours: db "000000000"
218
-timestr: db ":00:00.0000", 0x0D
207
+timestr: db ":00:00.0000    ", 0x0D
219
 timestrlen: equ $ - timestr
208
 timestrlen: equ $ - timestr
220
 
209
 
221
-digit: db "0"
222
 nl: db 10
210
 nl: db 10
211
+buf: db 0
223
 
212
 
224
 ts_cur:
213
 ts_cur:
225
 	tv_cur_s dq 0
214
 	tv_cur_s dq 0

Loading…
Cancel
Save