Starting writing an ed implementation

This commit is contained in:
deadvey
2026-03-07 20:48:34 +00:00
parent 43d0a020f7
commit 7a9b82d57c
12 changed files with 126 additions and 83 deletions

View File

@@ -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