implement SYS command.
This commit is contained in:
1 parent
0d891bb06a
commit
8ecd10d5cd
4 files changed
+42
-2
No files matched your search
@@ -126,6 +126,12 @@
|
|||||||
.alias screen_scroll_disable $0292
|
.alias screen_scroll_disable $0292
|
||||||
.alias pal_or_ntsc $02A6
|
.alias pal_or_ntsc $02A6
|
||||||
|
|
||||||
|
;; Registers for SYS call
|
||||||
|
.alias sys_reg_a $30c
|
||||||
|
.alias sys_reg_x $30d
|
||||||
|
.alias sys_reg_y $30e
|
||||||
|
.alias sys_reg_p $30f
|
||||||
|
.alias sys_jmp $310
|
||||||
|
|
||||||
;; BASIC uses some extra bytes for memory access under ROMs located at $2A7 onwards
|
;; BASIC uses some extra bytes for memory access under ROMs located at $2A7 onwards
|
||||||
;; IRQs are disabled when doing such accesses, and a default NMI handler only increments
|
;; IRQs are disabled when doing such accesses, and a default NMI handler only increments
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
cmd_sys:
|
||||||
|
|
||||||
|
jsr basic_end_of_statement_check
|
||||||
|
bcc +
|
||||||
|
|
||||||
|
;; SYS requires an argument
|
||||||
|
ldx #10
|
||||||
|
jmp do_basic_error
|
||||||
|
|
||||||
|
*
|
||||||
|
jsr basic_parse_line_number
|
||||||
|
|
||||||
|
;; setup call
|
||||||
|
lda #$4c ;JMP
|
||||||
|
sta sys_jmp
|
||||||
|
lda basic_line_number+0
|
||||||
|
sta sys_jmp+1
|
||||||
|
lda basic_line_number+1
|
||||||
|
sta sys_jmp+2
|
||||||
|
|
||||||
|
;; Setup the register values
|
||||||
|
lda sys_reg_p
|
||||||
|
pha
|
||||||
|
lda sys_reg_a
|
||||||
|
ldx sys_reg_x
|
||||||
|
ldy sys_reg_y
|
||||||
|
plp
|
||||||
|
|
||||||
|
;; Call the routine.
|
||||||
|
jsr sys_jmp
|
||||||
|
|
||||||
|
jmp basic_run_next_statement
|
||||||
@@ -29,7 +29,6 @@ cmd_printhash:
|
|||||||
cmd_print:
|
cmd_print:
|
||||||
cmd_cont:
|
cmd_cont:
|
||||||
cmd_cmd:
|
cmd_cmd:
|
||||||
cmd_sys:
|
|
||||||
cmd_open:
|
cmd_open:
|
||||||
|
|
||||||
;; $A0-$AF
|
;; $A0-$AF
|
||||||
|
|||||||
@@ -59,6 +59,9 @@ injest_number:
|
|||||||
;; Set sign to negative
|
;; Set sign to negative
|
||||||
lda #$ff
|
lda #$ff
|
||||||
sta basic_fac1_sign
|
sta basic_fac1_sign
|
||||||
|
|
||||||
|
;; Skip over the minus sign
|
||||||
|
jsr basic_consume_character
|
||||||
|
|
||||||
ij_not_minus:
|
ij_not_minus:
|
||||||
|
|
||||||
@@ -68,7 +71,7 @@ ij_loop1:
|
|||||||
lda (basic_current_statement_ptr),y
|
lda (basic_current_statement_ptr),y
|
||||||
cmp #$30
|
cmp #$30
|
||||||
bcc ij_not_a_digit
|
bcc ij_not_a_digit
|
||||||
cmp #$39
|
cmp #$3a
|
||||||
bcs ij_not_a_digit
|
bcs ij_not_a_digit
|
||||||
|
|
||||||
;; It is a digit
|
;; It is a digit
|
||||||
|
|||||||
Reference in new issue
Block a user