X-Git-Url: https://git.danieliu.xyz/?p=sped.git;a=blobdiff_plain;f=sped.asm;h=213f3ea0806f7ee5abd2e999a49607b6604db72f;hp=d7dcb8de8a7a55ed4bddc4917be6192cc886f130;hb=7a7ed6ae81978b84911dab0b902e77ebb7e9b735;hpb=aab6303fb9c43a2d727774c25b3c50a4b1fcae8d diff --git a/sped.asm b/sped.asm index d7dcb8d..213f3ea 100644 --- a/sped.asm +++ b/sped.asm @@ -33,6 +33,7 @@ section .data section .bss buffer resb 4 buffer_lines resb 4 + buffer_filename resb 4 cur_line resb 4 section .text @@ -57,7 +58,10 @@ main: _main_existing: mov ebx, DWORD [ebp+_ARGV] add ebx, 4 ; first user arg is filename - push DWORD [ebx] + mov ebx, [ebx] + mov [buffer_filename], ebx + + push DWORD [buffer_filename] call readFile mov [buffer], eax @@ -235,6 +239,19 @@ repl: jmp _repl_continue _repl_cmd_change_end: + ; w writes file =-=-=-=-=-=-=-=-=-=-=-=-= + mov eax, DWORD [ebp-CMDSTR] + cmp BYTE [eax], 'w' + jne _repl_cmd_write_end + + push DWORD [buffer_filename] + push DWORD [buffer] + push DWORD [buffer_lines] + call writeFile + + jmp _repl_continue + _repl_cmd_write_end: + jmp _repl_invalid_cmd