Starting writing an ed implementation
This commit is contained in:
@@ -842,14 +842,14 @@ do_break:
|
||||
do_call:
|
||||
call get_token
|
||||
cmp ax, NUMBER
|
||||
je .is_number
|
||||
je .check_is_number
|
||||
|
||||
mov ax, 0
|
||||
mov byte al, [token]
|
||||
call get_var
|
||||
jmp .execute_call
|
||||
|
||||
.is_number:
|
||||
.check_is_number:
|
||||
mov si, token
|
||||
call string_cast_to_int
|
||||
|
||||
@@ -1325,7 +1325,7 @@ do_for:
|
||||
cmp ax, NUMBER
|
||||
jne .error
|
||||
|
||||
.second_is_number:
|
||||
.second_check_is_number:
|
||||
mov si, token ; Get target number
|
||||
call string_cast_to_int
|
||||
jmp .continue2
|
||||
@@ -1625,7 +1625,7 @@ do_if:
|
||||
je .equals_char
|
||||
|
||||
mov byte al, [token]
|
||||
call is_letter
|
||||
call check_is_letter
|
||||
jc .equals_var
|
||||
|
||||
mov si, token ; Otherwise it's, eg 'X = 1' (a number)
|
||||
@@ -1711,7 +1711,7 @@ do_if:
|
||||
.greater:
|
||||
call get_token ; Greater than a variable or number?
|
||||
mov byte al, [token]
|
||||
call is_letter
|
||||
call check_is_letter
|
||||
jc .greater_var
|
||||
|
||||
mov si, token ; Must be a number here...
|
||||
@@ -1736,7 +1736,7 @@ do_if:
|
||||
.less:
|
||||
call get_token
|
||||
mov byte al, [token]
|
||||
call is_letter
|
||||
call check_is_letter
|
||||
jc .less_var
|
||||
|
||||
mov si, token
|
||||
@@ -2636,7 +2636,7 @@ do_peekint:
|
||||
cmp ax, NUMBER
|
||||
jne .error
|
||||
|
||||
.address_is_number:
|
||||
.address_check_is_number:
|
||||
mov si, token
|
||||
call string_cast_to_int
|
||||
jmp .load_data
|
||||
@@ -3770,14 +3770,14 @@ do_string:
|
||||
call get_token ; Now there should be a number
|
||||
|
||||
cmp ax, NUMBER
|
||||
je .third_is_number
|
||||
je .third_check_is_number
|
||||
|
||||
cmp ax, VARIABLE
|
||||
je .third_is_variable
|
||||
|
||||
jmp .error
|
||||
|
||||
.third_is_number:
|
||||
.third_check_is_number:
|
||||
mov si, token
|
||||
call string_cast_to_int
|
||||
jmp .got_number
|
||||
@@ -3984,7 +3984,7 @@ get_token:
|
||||
cmp al, ' '
|
||||
je .newline
|
||||
|
||||
call is_number
|
||||
call check_is_number
|
||||
jc get_number_token
|
||||
|
||||
cmp al, '"'
|
||||
@@ -4030,7 +4030,7 @@ get_number_token:
|
||||
je .done
|
||||
cmp al, ' '
|
||||
je .done
|
||||
call is_number
|
||||
call check_is_number
|
||||
jc .fine
|
||||
|
||||
mov si, err_char_in_num
|
||||
@@ -4153,7 +4153,7 @@ get_string_token:
|
||||
|
||||
.is_not_string:
|
||||
mov byte al, [token]
|
||||
call is_letter
|
||||
call check_is_letter
|
||||
jc .is_var
|
||||
|
||||
mov ax, UNKNOWN
|
||||
@@ -4164,37 +4164,6 @@ get_string_token:
|
||||
ret
|
||||
|
||||
|
||||
; ------------------------------------------------------------------
|
||||
; Set carry flag if AL contains ASCII number
|
||||
|
||||
is_number:
|
||||
cmp al, 48
|
||||
jl .not_number
|
||||
cmp al, 57
|
||||
jg .not_number
|
||||
stc
|
||||
ret
|
||||
.not_number:
|
||||
clc
|
||||
ret
|
||||
|
||||
|
||||
; ------------------------------------------------------------------
|
||||
; Set carry flag if AL contains ASCII letter
|
||||
|
||||
is_letter:
|
||||
cmp al, 65
|
||||
jl .not_letter
|
||||
cmp al, 90
|
||||
jg .not_letter
|
||||
stc
|
||||
ret
|
||||
|
||||
.not_letter:
|
||||
clc
|
||||
ret
|
||||
|
||||
|
||||
; ------------------------------------------------------------------
|
||||
; Print error message and quit out
|
||||
|
||||
|
||||
Reference in New Issue
Block a user