Files
open-roms/src/basic/engine/end_of_statement_check.s
T

50 lines
729 B
ArmAsm

// #LAYOUT# STD * #TAKE
// #LAYOUT# * BASIC_0 #TAKE
// #LAYOUT# * * #IGNORE
//
// Check for end of statement, sets Carry if so. Injests all spaces.
//
end_of_statement_check:
// XXX consider optimized version for 46K/56K memory models
ldy #$00
#if CONFIG_MEMORY_MODEL_60K
ldx #<TXTPTR
jsr peek_under_roms
#elif CONFIG_MEMORY_MODEL_46K || CONFIG_MEMORY_MODEL_50K
jsr peek_under_roms_via_TXTPTR
#else // CONFIG_MEMORY_MODEL_38K
lda (TXTPTR),y
#endif
// Injest any spaces
cmp #$20
bne !+
#if !HAS_OPCODES_65CE02
jsr consume_character
#else
inw TXTPTR
#endif
jmp end_of_statement_check
!:
cmp #$00
beq !+
cmp #$3A
beq !+
// Not end of statement
clc
rts
!:
// End of statement
sec
rts