Files
open-roms/src/basic/basic_commands/cmd_sys.s
T
2020-08-19 22:51:33 +02:00

97 lines
1.3 KiB
ArmAsm

// #LAYOUT# STD * #TAKE
// #LAYOUT# * BASIC_0 #TAKE
// #LAYOUT# * * #IGNORE
#if ROM_LAYOUT_M65
cmd_nsys:
// NSYS requires an argument
jsr is_end_of_statement
bcs_16 do_SYNTAX_error
bra cmd_sys_nsys_common
#endif
cmd_sys:
// SYS requires an argument
jsr is_end_of_statement
bcs_16 do_SYNTAX_error
#if ROM_LAYOUT_M65
// Make sure we are in C64 compatibility mode
jsr M65_ISMODE65
bcs cmd_sys_nsys_common
jsr M65_MODE64
// FALLTROUGH
cmd_sys_nsys_common:
#endif
//
// XXX Temporary ugly hack to support 'SYS PI*656'
//
ldy #$00
cmd_sys_hack_loop:
lda (TXTPTR), y
cmp cmd_sys_hack_str, y
bne cmd_sys_hack_not_needed
lda (TXTPTR), y
beq cmd_sys_hack_apply
iny
bne cmd_sys_hack_loop // branch always
cmd_sys_hack_apply:
lda #<2060
sta LINNUM+0
lda #>2060
sta LINNUM+1
bne cmd_sys_setup_call // always jumps
cmd_sys_hack_not_needed:
//
// XXX End of hack
//
lda #IDX__EV2_0B // 'SYNTAX ERROR'
jsr fetch_uint16
bcs_16 do_SYNTAX_error
cmd_sys_setup_call:
lda #$4C // JMP opcode
sta USRPOK
lda LINNUM+0
sta USRADD+0
lda LINNUM+1
sta USRADD+1
// Setup the register values
lda SPREG
pha
ldy SYREG
ldx SXREG
lda SAREG
plp
// Call the routine.
jmp USRPOK
//
// XXX Temporary ugly hack to support 'SYS PI*656'
//
cmd_sys_hack_str:
.byte $FF, $AC, $36, $35, $36, $00