added fetching TI$ variable, does not fully work yet
This commit is contained in:
1 parent
080ea5dab5
commit
cd44ba2358
10 files changed
+196
-36
No files matched your search
@@ -0,0 +1,16 @@
|
|||||||
|
// #LAYOUT# STD * #TAKE
|
||||||
|
// #LAYOUT# * BASIC_0 #TAKE
|
||||||
|
// #LAYOUT# * * #IGNORE
|
||||||
|
|
||||||
|
//
|
||||||
|
// Table to TI$ special variable support
|
||||||
|
//
|
||||||
|
|
||||||
|
table_TI_hi:
|
||||||
|
|
||||||
|
.byte $36 // 10 hours = 3600000 ticks
|
||||||
|
.byte $05 // 1 hour = 360000 ticks
|
||||||
|
.byte $00 // 10 minutes = 30000 ticks
|
||||||
|
.byte $00 // 1 minute = 3000 ticks
|
||||||
|
.byte $00 // 10 seconds = 500 ticks
|
||||||
|
.byte $00 // 1 second = 50 ticks
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
// #LAYOUT# STD * #TAKE
|
||||||
|
// #LAYOUT# * BASIC_0 #TAKE
|
||||||
|
// #LAYOUT# * * #IGNORE
|
||||||
|
|
||||||
|
//
|
||||||
|
// Table to TI$ special variable support
|
||||||
|
//
|
||||||
|
|
||||||
|
table_TI_lo:
|
||||||
|
|
||||||
|
.byte $80 // 10 hours = 3600000 ticks
|
||||||
|
.byte $40 // 1 hour = 360000 ticks
|
||||||
|
.byte $30 // 10 minutes = 30000 ticks
|
||||||
|
.byte $B8 // 1 minute = 3000 ticks
|
||||||
|
.byte $F4 // 10 seconds = 500 ticks
|
||||||
|
.byte $32 // 1 second = 50 ticks
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
// #LAYOUT# STD * #TAKE
|
||||||
|
// #LAYOUT# * BASIC_0 #TAKE
|
||||||
|
// #LAYOUT# * * #IGNORE
|
||||||
|
|
||||||
|
//
|
||||||
|
// Table to TI$ special variable support
|
||||||
|
//
|
||||||
|
|
||||||
|
table_TI_mid:
|
||||||
|
|
||||||
|
.byte $EE // 10 hours = 3600000 ticks
|
||||||
|
.byte $7E // 1 hour = 360000 ticks
|
||||||
|
.byte $75 // 10 minutes = 30000 ticks
|
||||||
|
.byte $0B // 1 minute = 3000 ticks
|
||||||
|
.byte $01 // 10 seconds = 500 ticks
|
||||||
|
.byte $00 // 1 second = 50 ticks
|
||||||
@@ -134,38 +134,8 @@ cmd_let_assign_string:
|
|||||||
|
|
||||||
// Copy the string descriptor to DSCPNT
|
// Copy the string descriptor to DSCPNT
|
||||||
|
|
||||||
#if CONFIG_MEMORY_MODEL_60K
|
|
||||||
|
|
||||||
ldx #<VARPNT
|
|
||||||
|
|
||||||
ldy #$00
|
|
||||||
jsr peek_under_roms
|
|
||||||
sta DSCPNT+0
|
|
||||||
iny
|
|
||||||
jsr peek_under_roms
|
|
||||||
sta DSCPNT+1
|
|
||||||
iny
|
|
||||||
jsr peek_under_roms
|
|
||||||
sta DSCPNT+2
|
|
||||||
|
|
||||||
#elif CONFIG_MEMORY_MODEL_46K || CONFIG_MEMORY_MODEL_50K
|
|
||||||
|
|
||||||
jsr helper_let_strdesccpy
|
jsr helper_let_strdesccpy
|
||||||
|
|
||||||
#else // CONFIG_MEMORY_MODEL_38K
|
|
||||||
|
|
||||||
ldy #$00
|
|
||||||
lda (VARPNT), y
|
|
||||||
sta DSCPNT+0
|
|
||||||
iny
|
|
||||||
lda (VARPNT), y
|
|
||||||
sta DSCPNT+1
|
|
||||||
iny
|
|
||||||
lda (VARPNT), y
|
|
||||||
sta DSCPNT+2
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// First special case - check if the new string has size 0
|
// First special case - check if the new string has size 0
|
||||||
|
|
||||||
lda __FAC1+0
|
lda __FAC1+0
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
// #LAYOUT# STD * #TAKE
|
||||||
|
// #LAYOUT# * BASIC_0 #TAKE
|
||||||
|
// #LAYOUT# * * #IGNORE
|
||||||
|
|
||||||
|
//
|
||||||
|
// Helper routine to copy string descriptor, for LET command and TI$ variable support
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
#if CONFIG_MEMORY_MODEL_38K
|
||||||
|
|
||||||
|
helper_let_strdesccpy:
|
||||||
|
|
||||||
|
ldy #$00
|
||||||
|
lda (VARPNT), y
|
||||||
|
sta DSCPNT+0
|
||||||
|
iny
|
||||||
|
lda (VARPNT), y
|
||||||
|
sta DSCPNT+1
|
||||||
|
iny
|
||||||
|
lda (VARPNT), y
|
||||||
|
sta DSCPNT+2
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
// This has to go $E000 or above - routines below banks out the main BASIC ROM!
|
// This has to go $E000 or above - routines below banks out the main BASIC ROM!
|
||||||
|
|
||||||
//
|
//
|
||||||
// Helper routine to copy string descriptor, for LET command
|
// Helper routine to copy string descriptor, for LET command and TI$ variable support
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
// #LAYOUT# STD * #TAKE
|
||||||
|
// #LAYOUT# * BASIC_0 #TAKE
|
||||||
|
// #LAYOUT# * * #IGNORE
|
||||||
|
|
||||||
|
//
|
||||||
|
// Helper routine to copy string descriptor, for LET command and TI$ variable support
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
#if CONFIG_MEMORY_MODEL_60K
|
||||||
|
|
||||||
|
helper_let_strdesccpy:
|
||||||
|
|
||||||
|
ldx #<VARPNT
|
||||||
|
|
||||||
|
ldy #$00
|
||||||
|
jsr peek_under_roms
|
||||||
|
sta DSCPNT+0
|
||||||
|
iny
|
||||||
|
jsr peek_under_roms
|
||||||
|
sta DSCPNT+1
|
||||||
|
iny
|
||||||
|
jsr peek_under_roms
|
||||||
|
sta DSCPNT+2
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -9,12 +9,12 @@
|
|||||||
|
|
||||||
fetch_variable:
|
fetch_variable:
|
||||||
|
|
||||||
// Fetch variable name
|
// Set default second character and variable type
|
||||||
|
|
||||||
lda #$00
|
lda #$00
|
||||||
sta VARNAM+1
|
sta VARNAM+1
|
||||||
|
|
||||||
// Fetch the first character
|
// Fetch the first character of variable name
|
||||||
|
|
||||||
jsr fetch_character_skip_spaces
|
jsr fetch_character_skip_spaces
|
||||||
jsr is_AZ
|
jsr is_AZ
|
||||||
@@ -79,10 +79,16 @@ fetch_variable_type_integer:
|
|||||||
ora #$80
|
ora #$80
|
||||||
sta VARNAM+0
|
sta VARNAM+0
|
||||||
|
|
||||||
|
lda #$00
|
||||||
|
skip_2_bytes_trash_nvz
|
||||||
|
|
||||||
// FALLTROUGH
|
// FALLTROUGH
|
||||||
|
|
||||||
fetch_variable_type_string:
|
fetch_variable_type_string:
|
||||||
|
|
||||||
|
lda #$80
|
||||||
|
sta VALTYP
|
||||||
|
|
||||||
lda VARNAM+1
|
lda VARNAM+1
|
||||||
ora #$80
|
ora #$80
|
||||||
sta VARNAM+1
|
sta VARNAM+1
|
||||||
@@ -172,7 +178,7 @@ fetch_variable_find_addr_loop:
|
|||||||
|
|
||||||
fetch_variable_adjust_VARPNT:
|
fetch_variable_adjust_VARPNT:
|
||||||
|
|
||||||
// Adjust VARPNT to point just after variable name (XXX is it needed?) and quit
|
// Adjust VARPNT to point just after variable name and quit
|
||||||
|
|
||||||
#if !HAS_OPCODES_65CE02
|
#if !HAS_OPCODES_65CE02
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,90 @@
|
|||||||
// #LAYOUT# * * #IGNORE
|
// #LAYOUT# * * #IGNORE
|
||||||
|
|
||||||
|
|
||||||
|
// XXX test this
|
||||||
|
|
||||||
|
|
||||||
fetch_variable_TI_string:
|
fetch_variable_TI_string:
|
||||||
|
|
||||||
// XXX implement this
|
// Alocate memory for 6-byte temporary string, copy the string descriptor
|
||||||
|
|
||||||
jmp do_NOT_IMPLEMENTED_error
|
lda #$06
|
||||||
|
jsr tmpstr_alloc
|
||||||
|
jsr helper_let_strdesccpy
|
||||||
|
|
||||||
|
// Fetch the time in a safe way, store it in temporary area
|
||||||
|
|
||||||
|
jsr JRDTIM
|
||||||
|
|
||||||
|
sty INDEX+0
|
||||||
|
stx INDEX+1
|
||||||
|
sta INDEX+2
|
||||||
|
|
||||||
|
// Now calculate the digits, starting from the most important one
|
||||||
|
|
||||||
|
#if CONFIG_MEMORY_MODEL_60K
|
||||||
|
ldx #<DSCPNT+1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
ldy #$00
|
||||||
|
|
||||||
|
// FALLTROUGH
|
||||||
|
|
||||||
|
fetch_variable_TI_string_loop:
|
||||||
|
|
||||||
|
// Set the initial digit value ('0')
|
||||||
|
|
||||||
|
lda #$30
|
||||||
|
sta INDEX+3
|
||||||
|
|
||||||
|
// Compare the counter with value from table
|
||||||
|
!:
|
||||||
|
lda INDEX+2
|
||||||
|
cmp table_TI_hi, y
|
||||||
|
bcc fetch_variable_TI_string_got_digit
|
||||||
|
lda INDEX+1
|
||||||
|
cmp table_TI_mid, y
|
||||||
|
bcc fetch_variable_TI_string_got_digit
|
||||||
|
lda INDEX+0
|
||||||
|
cmp table_TI_lo, y
|
||||||
|
bcc fetch_variable_TI_string_got_digit
|
||||||
|
|
||||||
|
// Increment digit and subtract the table value from the counter
|
||||||
|
|
||||||
|
inc INDEX+3
|
||||||
|
|
||||||
|
sec
|
||||||
|
lda INDEX+0
|
||||||
|
sbc table_TI_lo, y
|
||||||
|
sta INDEX+0
|
||||||
|
lda INDEX+1
|
||||||
|
sbc table_TI_mid, y
|
||||||
|
sta INDEX+1
|
||||||
|
lda INDEX+2
|
||||||
|
sbc table_TI_hi, y
|
||||||
|
sta INDEX+2
|
||||||
|
|
||||||
|
bcs !- // branch always
|
||||||
|
|
||||||
|
fetch_variable_TI_string_got_digit:
|
||||||
|
|
||||||
|
// Copy digit to the string
|
||||||
|
|
||||||
|
lda INDEX+3
|
||||||
|
|
||||||
|
#if CONFIG_MEMORY_MODEL_60K
|
||||||
|
jsr poke_under_roms
|
||||||
|
#else // CONFIG_MEMORY_MODEL_38K || CONFIG_MEMORY_MODEL_50K || CONFIG_MEMORY_MODEL_60K
|
||||||
|
sta (DSCPNT+1), y
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Next iteration
|
||||||
|
|
||||||
|
iny
|
||||||
|
cpy #$06
|
||||||
|
bne fetch_variable_TI_string_loop
|
||||||
|
|
||||||
|
// Return success
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
File renamed without changes.
Reference in new issue
Block a user