浏览代码

add ioctl to get terminal dimensions

Phil 5 年之前
父节点
当前提交
31e17d4f7a
共有 1 个文件被更改,包括 28 次插入3 次删除
  1. 28 3
      dino.asm

+ 28 - 3
dino.asm

@@ -3,16 +3,41 @@ SYS_READ equ 3
 SYS_WRITE equ 4
 STDIN equ 0
 STDOUT equ 1
+SYS_IOCTL equ 54
+
+section .bss
+	sz RESW 4 ; 4 byte for window size
 
 section .text
 	global _start
 
 _start:
-	
+	; get windwo size	
+	mov eax, SYS_IOCTL	; syscall ioctl
+	mov ebx, STDOUT		; stdout for something?
+	mov ecx, 0x5413		; get windowsize command TIOCGWINSZ
+	mov edx, sz		; target struct
+	int 0x80		; call kernel
+
+	; print rows
+
+	mov ecx, [sz]
+	add ecx,'0'	
+
+	mov eax, SYS_WRITE
+	mov ebx, STDOUT
+	;mov ecx, [sz]
+	mov edx, 2
+	int 0x80
+
+	; print cols
+
+	;add [sz+2],'0'	
+
 	mov eax, SYS_WRITE
 	mov ebx, STDOUT
-	mov ecx, 1
-	mov edx, 0x03
+	mov ecx, [sz+2]
+	mov edx, 2
 	int 0x80
 
 exit: