lang-bootstrap/04a/in03

75 lines
842 B
Text
Raw Normal View History

2021-11-16 11:02:45 -05:00
I=8S
A=d3
?I!A:usage_error
; open input file
J=S
; argv[1] is at *(rsp+16)
J+=d16
J=8J
I=d0
syscall x2
J=A
?J<0:input_file_error
; open output file
J=S
; argv[2] is at *(rsp+24)
J+=d24
J=8J
I=x241
D=x1ed
syscall x2
J=A
?J<0:output_file_error
J=d0
syscall x3c
:usage_error
B=:usage_error_message
call :error
:usage_error_message
str Please provide an input and an output file.
xa
x0
:input_file_error
B=:input_file_error_message
!:error
:input_file_error_message
str Couldn't open input file.
xa
x0
:output_file_error
B=:output_file_error_message
!:error
:output_file_error_message
str Couldn't open output file.
xa
x0
:error
J=B
call :strlen
D=A
I=J
J=d2
syscall x1
J=d1
syscall x3c
:strlen
I=B
D=B
:strlen_loop
C=1I
?C=0:strlen_ret
I+=d1
!:strlen_loop
:strlen_ret
I-=D
A=I
return