make injest_number work from current basic statement pointer
This commit is contained in:
1 parent
7c960fd6b4
commit
3bdfa8f834
2 files changed
+20
-11
No files matched your search
@@ -78,9 +78,18 @@ rsl_l1: lda $0200,x
|
|||||||
sta tokenise_work2
|
sta tokenise_work2
|
||||||
lda #$00
|
lda #$00
|
||||||
sta tokenise_work1
|
sta tokenise_work1
|
||||||
|
|
||||||
|
;; Try to read linne number
|
||||||
|
lda #<$0200
|
||||||
|
sta basic_current_statement_ptr+0
|
||||||
|
lda #>$0200
|
||||||
|
sta basic_current_statement_ptr+1
|
||||||
jsr injest_number
|
jsr injest_number
|
||||||
|
|
||||||
|
;; Copy offset of first position after number back out
|
||||||
|
lda basic_current_statement_ptr+0
|
||||||
|
sta tokenise_work1
|
||||||
|
|
||||||
;; Check if the number is a valid line number
|
;; Check if the number is a valid line number
|
||||||
;; i.e., 16 bits, no exponent, no decimal
|
;; i.e., 16 bits, no exponent, no decimal
|
||||||
lda basic_fac1_mantissa+2
|
lda basic_fac1_mantissa+2
|
||||||
|
|||||||
+10
-10
@@ -1,6 +1,6 @@
|
|||||||
;; Parse a number from the input buffer at $0200+tokenise_work1
|
;; Parse a number from the input buffer at (basic_current_statement_ptr)
|
||||||
;; Result is put into FAC1.
|
;; Result is put into FAC1.
|
||||||
;; tokenise_work1 is updated with first position after the number.
|
;; basic_current_statement_ptr is updated with first position after the number.
|
||||||
|
|
||||||
;; XXX - Remember decimal position and exponent, and apply them
|
;; XXX - Remember decimal position and exponent, and apply them
|
||||||
;; after to produce normalised floating point number.
|
;; after to produce normalised floating point number.
|
||||||
@@ -51,8 +51,8 @@ injest_number:
|
|||||||
;; Check if leading char is a - sign
|
;; Check if leading char is a - sign
|
||||||
;; Note: the - will have been tokenised to $AB
|
;; Note: the - will have been tokenised to $AB
|
||||||
;; XXX - implement
|
;; XXX - implement
|
||||||
ldx tokenise_work1
|
ldy #$00
|
||||||
lda $0200,x
|
lda (basic_current_statement_ptr),y
|
||||||
cmp #$AB
|
cmp #$AB
|
||||||
bne ij_not_minus
|
bne ij_not_minus
|
||||||
|
|
||||||
@@ -63,9 +63,9 @@ injest_number:
|
|||||||
ij_not_minus:
|
ij_not_minus:
|
||||||
|
|
||||||
|
|
||||||
ij_loop1:
|
ij_loop1:
|
||||||
ldx tokenise_work1
|
ldy #$00
|
||||||
lda $0200,x
|
lda (basic_current_statement_ptr),y
|
||||||
cmp #$30
|
cmp #$30
|
||||||
bcc ij_not_a_digit
|
bcc ij_not_a_digit
|
||||||
cmp #$39
|
cmp #$39
|
||||||
@@ -102,8 +102,8 @@ ij_accept_precision:
|
|||||||
bne ij_consider_next_digit
|
bne ij_consider_next_digit
|
||||||
|
|
||||||
;; Get digit
|
;; Get digit
|
||||||
ldx tokenise_work1
|
ldy #$00
|
||||||
lda $0200,x
|
lda (basic_current_statement_ptr),y
|
||||||
sec
|
sec
|
||||||
sbc #$30
|
sbc #$30
|
||||||
|
|
||||||
@@ -131,7 +131,7 @@ ij_loop2:
|
|||||||
|
|
||||||
ij_consider_next_digit:
|
ij_consider_next_digit:
|
||||||
;; Consider next digit
|
;; Consider next digit
|
||||||
inc tokenise_work1
|
jsr basic_consume_character
|
||||||
jmp ij_loop1
|
jmp ij_loop1
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|||||||
Reference in new issue
Block a user