- ; mov eax, 4
- ; mov ebx, 1
- ; mov ecx, [ebp-STR_PTR]
- ; add ecx, [ebp-CHAR_COUNT]
- ; mov edx, 1
- ; int 0x80
-
- ; check for newline
- mov eax, [ebp-STR_PTR]
- add eax, [ebp-CHAR_COUNT]
- cmp DWORD [eax], 0x0a
- jne _readLine_not_newline
- mov ebx, 0
- jmp _readLine_exit
- _readLine_not_newline:
-
- ; check for eof
- mov eax, [ebp-STR_PTR]
- add eax, [ebp-CHAR_COUNT]
- cmp DWORD [eax], 0x05
- jne _readLine_not_eof
- mov ebx, 1
- jmp _readLine_exit
- _readLine_not_eof:
+ jmp _repl_continue
+ _repl_cmd_incline_end:
+
+ ; g goes to first line =-=-=-=-=-=-=-=-=-=-=-=-=
+ mov eax, DWORD [ebp-CMDSTR]
+ cmp BYTE [eax], 'g'
+ jne _repl_cmd_jumptop_end
+
+ mov DWORD [cur_line], 0x00
+
+ jmp _repl_continue
+ _repl_cmd_jumptop_end:
+
+ ; G goes to last line =-=-=-=-=-=-=-=-=-=-=-=-=
+ mov eax, DWORD [ebp-CMDSTR]
+ cmp BYTE [eax], 'G'
+ jne _repl_cmd_jumpbot_end
+
+ mov eax, DWORD [buffer_lines]
+ sub eax, 1
+ mov DWORD [cur_line], eax
+
+ jmp _repl_continue
+ _repl_cmd_jumpbot_end:
+
+ ; c changes the current line =-=-=-=-=-=-=-=-=-=
+ mov eax, DWORD [ebp-CMDSTR]
+ cmp BYTE [eax], 'c'
+ jne _repl_cmd_change_end