75 lines
1021 B
ArmAsm
75 lines
1021 B
ArmAsm
#if ROM_LAYOUT_STD || (ROM_LAYOUT_M65 && SEGMENT_BASIC_0)
|
|
|
|
|
|
cmd_sys:
|
|
|
|
jsr basic_end_of_statement_check
|
|
bcc !+
|
|
|
|
// SYS requires an argument
|
|
jmp do_SYNTAX_error
|
|
|
|
!:
|
|
//
|
|
// 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
|
|
//
|
|
|
|
jsr basic_parse_line_number
|
|
|
|
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.
|
|
jsr USRPOK
|
|
|
|
jmp basic_execute_statement
|
|
|
|
|
|
//
|
|
// XXX Temporary ugly hack to support 'SYS PI*656'
|
|
//
|
|
|
|
cmd_sys_hack_str:
|
|
.byte $FF, $AC, $36, $35, $36, $00
|
|
|
|
|
|
#endif // ROM layout
|