197 lines
2.6 KiB
ArmAsm
197 lines
2.6 KiB
ArmAsm
// #LAYOUT# STD * #TAKE
|
|
// #LAYOUT# * BASIC_0 #TAKE
|
|
// #LAYOUT# * * #IGNORE
|
|
|
|
//
|
|
// Jumptable for all known BASIC commands and functions
|
|
//
|
|
|
|
|
|
.const command_list = List().add(
|
|
|
|
// $80 - $8F
|
|
|
|
cmd_end,
|
|
cmd_for,
|
|
cmd_next,
|
|
cmd_data,
|
|
cmd_inputhash,
|
|
cmd_input,
|
|
cmd_dim,
|
|
cmd_read,
|
|
cmd_let,
|
|
cmd_goto,
|
|
cmd_run,
|
|
cmd_if,
|
|
cmd_restore,
|
|
cmd_gosub,
|
|
cmd_return,
|
|
cmd_rem,
|
|
|
|
// $90-$9F
|
|
|
|
cmd_stop,
|
|
cmd_on,
|
|
cmd_wait,
|
|
cmd_load,
|
|
cmd_save,
|
|
cmd_verify,
|
|
cmd_def,
|
|
cmd_poke,
|
|
cmd_printhash,
|
|
cmd_print,
|
|
cmd_cont,
|
|
cmd_list,
|
|
cmd_clr,
|
|
cmd_cmd,
|
|
cmd_sys,
|
|
cmd_open,
|
|
|
|
// $A0-$AF
|
|
|
|
cmd_close,
|
|
cmd_get,
|
|
cmd_new,
|
|
cmd_tab,
|
|
cmd_to,
|
|
cmd_fn,
|
|
cmd_spc,
|
|
cmd_then,
|
|
cmd_not,
|
|
cmd_step,
|
|
cmd_plus,
|
|
cmd_minus,
|
|
cmd_mult,
|
|
cmd_div,
|
|
cmd_exponent,
|
|
cmd_and,
|
|
|
|
// $B0-$BF
|
|
|
|
cmd_or,
|
|
cmd_greater,
|
|
cmd_equal,
|
|
cmd_less,
|
|
cmd_sgn,
|
|
cmd_int,
|
|
cmd_abs,
|
|
cmd_usr,
|
|
cmd_fre,
|
|
cmd_pos,
|
|
cmd_sqr,
|
|
cmd_rnd,
|
|
cmd_log,
|
|
cmd_exp,
|
|
cmd_cos,
|
|
cmd_sin,
|
|
|
|
// $C0-$CF
|
|
|
|
cmd_tan,
|
|
cmd_atn,
|
|
cmd_peek,
|
|
cmd_len,
|
|
cmd_str,
|
|
cmd_val,
|
|
cmd_asc,
|
|
cmd_chr,
|
|
cmd_left,
|
|
cmd_right,
|
|
cmd_mid,
|
|
cmd_go,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
|
|
// $D0-$DF
|
|
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
|
|
// $E0-$EF
|
|
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
|
|
// $F0-$FF
|
|
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented,
|
|
cmd_unimplemented
|
|
)
|
|
|
|
|
|
|
|
#if !HAS_OPCODES_65C02
|
|
|
|
|
|
command_jumptable_lo:
|
|
|
|
put_jumptable_lo(command_list)
|
|
|
|
|
|
command_jumptable_hi:
|
|
|
|
put_jumptable_hi(command_list)
|
|
|
|
|
|
#else // HAS_OPCODES_65C02
|
|
|
|
|
|
__before_command_jumptable:
|
|
|
|
.if (mod(*, $2) == 1) { brk } // align code so that vector never crosses page boundary
|
|
|
|
command_jumptable:
|
|
|
|
put_jumptable(command_list)
|
|
|
|
// Make sure routine size is always the same - build system limitation
|
|
|
|
.if (__before_command_jumptable == command_jumptable) { brk }
|
|
|
|
|
|
#endif
|