implemented 'GO' BASIC command, started work on native MEGA65 mode

This commit is contained in:
FeralChild64 committed 2020-08-07 22:03:31 +02:00
1 parent 6eb78f9bb4
commit b235db4cd0
7 files changed
+238 -19

No files matched your search

+8
View File
@@ -51,3 +51,11 @@
#endif
.label filename_any = KERNAL().filename_any
#if ROM_LAYOUT_M65
.label M65_JMODE64 = KERNAL().M65_JMODE64
.label M65_JMODE65 = KERNAL().M65_JMODE65
.label M65_JISMODE65 = KERNAL().M65_JISMODE65
.label M65_JSLOW = KERNAL().M65_JSLOW
.label M65_JFAST = KERNAL().M65_JFAST
#endif
@@ -51,8 +51,6 @@ cmd_tab:
nop
cmd_spc:
nop
cmd_go:
nop
// Unimplemented tokens
@@ -3,6 +3,61 @@
// #LAYOUT# * * #IGNORE
cmd_go:
jsr fetch_character_skip_spaces
cmp #$A4 // 'TO' keyword
beq cmd_goto
#if !ROM_LAYOUT_M65
// FALLTROUGH
cmd_go_syntax_error:
jmp do_SYNTAX_error
#else
dew TXTPTR // unconsume character
// Fetch mode
jsr fetch_uint8
cmp #64
bne !+
// If in native mode - switch to C64 compatibilty
jsr M65_JISMODE65
bne cmd_go_rts
jsr helper_ask_if_sure
bcs cmd_go_rts
jmp M65_JMODE64
!:
cmp #65
bne !+
// If in C64 compatibility mode - switch to native mode
jsr M65_JISMODE65
beq cmd_go_rts
jsr helper_ask_if_sure
bcs cmd_go_rts
jmp M65_JMODE65
!:
jmp do_ILLEGAL_QUANTITY_error
cmd_go_rts:
rts
#endif
cmd_run:
// RUN clears all variables
@@ -27,7 +82,11 @@ cmd_goto:
// GOTO requires line number
jsr fetch_line_number
#if !ROM_LAYOUT_M65
bcs cmd_go_syntax_error
#else
bcs_16 do_SYNTAX_error
#endif
// Check for direct mode
@@ -9,8 +9,18 @@
.const command_01_list = List().add(
#if CONFIG_MB_MEGA_65
M65_JSLOW,
M65_JFAST,
#else
cmd_slow,
cmd_fast,
#endif
cmd_old,
// NOTE! These commands are temporarily placed here, they should be a part of list 02!
+1 -17
View File
@@ -5,23 +5,7 @@
#if CONFIG_MB_MEGA_65
// Command implementation for Mega65
// XXX - I think there are some bit-set instructions in 65CE02...
cmd_slow:
lda #$40
skip_2_bytes_trash_nvz
// FALLTROUGH
cmd_fast:
lda #$41
sta CPU_D6510
rts
// For Mega65 Kernal routines are called directly
#elif CONFIG_MB_ULTIMATE_64