added way to detect MEGA65 from the BASIC

This commit is contained in:
FeralChild64 committed 2020-09-03 20:28:38 +02:00
1 parent 2338bd8a98
commit a974b4a763
4 files changed
+121

No files matched your search

+11
View File
@@ -5,6 +5,13 @@
cmd_if:
#if ROM_LAYOUT_M65
jsr helper_if_mega65
bcc cmd_if_true
#endif
// Calculate expression
jsr FRMEVL
@@ -14,6 +21,10 @@ cmd_if:
lda FAC1_exponent
beq_16 cmd_rem
// FALLTROUGH
cmd_if_true:
// Condition fulfilled - look for GOTO or THEN
jsr fetch_character_skip_spaces
@@ -0,0 +1,52 @@
// #LAYOUT# M65 BASIC_0 #TAKE
// #LAYOUT# * * #IGNORE
#if CONFIG_MEMORY_MODEL_38K
helper_if_mega65:
// Injest all spaces
ldy #$00
!:
lda (TXTPTR), Y
cmp #$20
bne !+
inw TXTPTR
bra !-
!:
// Check for MEGA65 untokenized keyword
ldy #$05
!:
lda (TXTPTR), Y
cmp str_mega65, Y
bne_16 helper_if_mega65_fail
dey
bpl !-
// Increment TXTPTR by 6
clc
lda TXTPTR+0
adc #$06
sta TXTPTR+0
bcc !+
inc TXTPTR+1
!:
// Report successful check
clc
rts
helper_if_mega65_fail:
sec
rts
str_mega65:
.byte $4D, $45, $47, $41, $36, $35
#endif
@@ -0,0 +1,54 @@
// #LAYOUT# M65 BASIC_0 #TAKE-HIGH
// #LAYOUT# * * #IGNORE
// This has to go $E000 or above - routine below banks out the main BASIC ROM!
#if CONFIG_MEMORY_MODEL_46K || CONFIG_MEMORY_MODEL_50K
helper_if_mega65:
// Unmap BASIC lower ROM
lda #$26
sta CPU_R6510
// Injest all spaces
ldy #$00
!:
lda (TXTPTR), Y
cmp #$20
bne !+
inw TXTPTR
bra !-
!:
// Check for MEGA65 untokenized keyword
ldy #$05
!:
lda (TXTPTR), Y
cmp str_mega65, Y
bne_16 remap_BASIC_sec_rts
dey
bpl !-
// Increment TXTPTR by 6
clc
lda TXTPTR+0
adc #$06
sta TXTPTR+0
bcc !+
inc TXTPTR+1
!:
// Report successful check
jmp remap_BASIC_clc_rts
str_mega65:
.byte $4D, $45, $47, $41, $36, $35
#endif