Files
open-roms/c64/basic/commands/command_jumptable.s
T
2020-06-06 23:10:45 +02:00

200 lines
2.7 KiB
ArmAsm

// #LAYOUT# STD * #TAKE
// #LAYOUT# * BASIC_0 #TAKE
// #LAYOUT# * * #IGNORE
//
// Jumptable for all known BASIC commands and functions
//
// XXX use separate jumptables for 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