preparation for a couple of new BASIC commands
This commit is contained in:
1 parent
97131d8d55
commit
e74fd4140a
13 files changed
+195
-24
No files matched your search
@@ -3,7 +3,7 @@
|
||||
// #LAYOUT# * * #IGNORE
|
||||
|
||||
//
|
||||
// Jumptable for all known BASIC commands
|
||||
// Jumptable for BASIC V2 dialect commands
|
||||
//
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
// #LAYOUT# STD * #TAKE
|
||||
// #LAYOUT# * BASIC_0 #TAKE
|
||||
// #LAYOUT# * * #IGNORE
|
||||
|
||||
//
|
||||
// Jumptable for BASIC commands with tokens prefixed by $CC
|
||||
//
|
||||
|
||||
|
||||
.const command_CC_list = List().add(
|
||||
|
||||
cmd_merge,
|
||||
|
||||
cmd_bload,
|
||||
cmd_bsave,
|
||||
cmd_bverify
|
||||
)
|
||||
|
||||
|
||||
#if !HAS_OPCODES_65C02
|
||||
|
||||
|
||||
command_CC_jumptable_lo:
|
||||
|
||||
put_jumptable_lo(command_CC_list)
|
||||
|
||||
|
||||
command_CC_jumptable_hi:
|
||||
|
||||
put_jumptable_hi(command_CC_list)
|
||||
|
||||
|
||||
#else // HAS_OPCODES_65C02
|
||||
|
||||
|
||||
__before_command_CC_jumptable:
|
||||
|
||||
.if (mod(*, $2) == 1) { brk } // align code so that vector never crosses page boundary
|
||||
|
||||
command_CC_jumptable:
|
||||
|
||||
put_jumptable(command_CC_list)
|
||||
|
||||
// Make sure routine size is always the same - build system limitation
|
||||
|
||||
.if (__before_command_CC_jumptable == command_CC_jumptable) { brk }
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,8 @@
|
||||
// #LAYOUT# STD * #TAKE
|
||||
// #LAYOUT# * BASIC_0 #TAKE
|
||||
// #LAYOUT# * * #IGNORE
|
||||
|
||||
|
||||
cmd_bload:
|
||||
|
||||
jmp do_NOT_IMPLEMENTED_error // XXX implement the command
|
||||
@@ -0,0 +1,8 @@
|
||||
// #LAYOUT# STD * #TAKE
|
||||
// #LAYOUT# * BASIC_0 #TAKE
|
||||
// #LAYOUT# * * #IGNORE
|
||||
|
||||
|
||||
cmd_bsave:
|
||||
|
||||
jmp do_NOT_IMPLEMENTED_error // XXX implement the command
|
||||
@@ -0,0 +1,8 @@
|
||||
// #LAYOUT# STD * #TAKE
|
||||
// #LAYOUT# * BASIC_0 #TAKE
|
||||
// #LAYOUT# * * #IGNORE
|
||||
|
||||
|
||||
cmd_bverify:
|
||||
|
||||
jmp do_NOT_IMPLEMENTED_error // XXX implement the command
|
||||
@@ -0,0 +1,8 @@
|
||||
// #LAYOUT# STD * #TAKE
|
||||
// #LAYOUT# * BASIC_0 #TAKE
|
||||
// #LAYOUT# * * #IGNORE
|
||||
|
||||
|
||||
cmd_merge:
|
||||
|
||||
jmp do_NOT_IMPLEMENTED_error // XXX implement the command
|
||||
@@ -0,0 +1,46 @@
|
||||
// #LAYOUT# STD * #TAKE
|
||||
// #LAYOUT# * BASIC_0 #TAKE
|
||||
// #LAYOUT# * * #IGNORE
|
||||
|
||||
//
|
||||
// Jumptable for BASIC commands with tokens prefixed by $CD
|
||||
//
|
||||
|
||||
|
||||
.const command_CD_list = List().add(
|
||||
|
||||
cmd_slow,
|
||||
cmd_fast
|
||||
)
|
||||
|
||||
|
||||
#if !HAS_OPCODES_65C02
|
||||
|
||||
|
||||
command_CD_jumptable_lo:
|
||||
|
||||
put_jumptable_lo(command_CD_list)
|
||||
|
||||
|
||||
command_CD_jumptable_hi:
|
||||
|
||||
put_jumptable_hi(command_CD_list)
|
||||
|
||||
|
||||
#else // HAS_OPCODES_65C02
|
||||
|
||||
|
||||
__before_command_CD_jumptable:
|
||||
|
||||
.if (mod(*, $2) == 1) { brk } // align code so that vector never crosses page boundary
|
||||
|
||||
command_CD_jumptable:
|
||||
|
||||
put_jumptable(command_CD_list)
|
||||
|
||||
// Make sure routine size is always the same - build system limitation
|
||||
|
||||
.if (__before_command_CD_jumptable == command_CD_jumptable) { brk }
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,8 @@
|
||||
// #LAYOUT# STD * #TAKE
|
||||
// #LAYOUT# * BASIC_0 #TAKE
|
||||
// #LAYOUT# * * #IGNORE
|
||||
|
||||
|
||||
cmd_fast:
|
||||
|
||||
jmp do_NOT_IMPLEMENTED_error // XXX implement the command
|
||||
@@ -0,0 +1,8 @@
|
||||
// #LAYOUT# STD * #TAKE
|
||||
// #LAYOUT# * BASIC_0 #TAKE
|
||||
// #LAYOUT# * * #IGNORE
|
||||
|
||||
|
||||
cmd_slow:
|
||||
|
||||
jmp do_NOT_IMPLEMENTED_error // XXX implement the command
|
||||
@@ -3,7 +3,7 @@
|
||||
// #LAYOUT# * * #IGNORE
|
||||
|
||||
//
|
||||
// Jumptable for all known BASIC functions
|
||||
// Jumptable for BASIC V2 dialect functions
|
||||
//
|
||||
|
||||
|
||||
|
||||
+33
-14
@@ -33,18 +33,7 @@
|
||||
// message that the $2C method would result in.
|
||||
|
||||
|
||||
// XXX consider reworking the two errors below to reuse '$E6' mechanism
|
||||
|
||||
|
||||
do_NOT_IMPLEMENTED_error:
|
||||
|
||||
ldx #IDX__EV7_28
|
||||
bpl do_basic_error // branch always
|
||||
|
||||
do_MEMORY_CORRUPT_error:
|
||||
|
||||
ldx #IDX__EOR_2A
|
||||
bpl do_basic_error // branch always
|
||||
// Error messages reported by KERNAL
|
||||
|
||||
do_kernal_error: // .A = KERNAL error code, also almost matches BASIC error codes
|
||||
|
||||
@@ -52,9 +41,39 @@ do_kernal_error: // .A = KERNAL error code, also almost ma
|
||||
|
||||
tax
|
||||
dex
|
||||
bpl do_basic_error
|
||||
bpl do_basic_error // branch always
|
||||
|
||||
// FALLTROUGN
|
||||
// Error messages specific to OpenROMs BASIC dialect
|
||||
|
||||
do_MEMORY_CORRUPT_error:
|
||||
.byte $E6
|
||||
|
||||
// Error messages compatible with CBM BASIC V7 dialect
|
||||
|
||||
do_FILE_READ_error:
|
||||
.byte $E6
|
||||
do_NOT_IMPLEMENTED_error:
|
||||
.byte $E6
|
||||
do_UNRESOLVED_REFERENCE_error:
|
||||
.byte $E6
|
||||
do_LINE_NUMBER_TOO_LARGE_error:
|
||||
.byte $E6
|
||||
do_BEND_NOT_FOUND_error:
|
||||
.byte $E6
|
||||
do_BAD_DISK_error:
|
||||
.byte $E6
|
||||
do_NO_GRAPHICS_AREA_error:
|
||||
.byte $E6
|
||||
do_DIRECT_MODE_ONLY_error:
|
||||
.byte $E6
|
||||
do_LOOP_WITHOUT_DO_error:
|
||||
.byte $E6
|
||||
do_LOOP_NOT_FOUND_error:
|
||||
.byte $E6
|
||||
do_CANT_RESUME_error:
|
||||
.byte $E6
|
||||
|
||||
// Error messages compatible with CBM BASIC V2 dialect
|
||||
|
||||
do_BREAK_error:
|
||||
.byte $E6
|
||||
|
||||
Reference in new issue
Block a user