📄 change.asm
字号:
tax
lda rate_set_in_per_tax_status+1,x
pha
lda rate_set_in_per_tax_status,x
pha
rts
;====================================================
bound_set_in_per_tax_status0:
lda <KeyNo
cmp #DownKey
bne ?if_up_key_in
?up_or_down_in_personal_tax:
lda person_select
eor #0ffh
sta person_select
jmp __personal_tax_set_display
?if_up_key_in:
cmp #UpKey
bne ??ac_key_if
jsr dec_which_item
bra ?up_or_down_in_personal_tax
??ac_key_if:
cmp #ac_key
beq ?ac_key_in_in_per_tax_status0
jmp jmplmain
?ac_key_in_in_per_tax_status0:
ac_key_in_in_per_tax_status0:
lda which_item
cmp #08h
bne ?not_the_last_key_enable
jmp jmplmain
?not_the_last_key_enable:
lda #01h
sta input_status
jsr input_bit_to_dec_hexflag
jmp hs_disp_only_0
bound_set_in_per_tax_status1:
lda <KeyNo
cmp #EnterKey
beq ?if_new_bound_process
cmp #ac_key
beq ac_key_in_in_per_tax_status0
jmp data_input_in_length
?if_new_bound_process:
stz input_status
jsr jsr_fin
jsr push_fac_to_hs_data_stack
jsr copy_fac_to_arg
lda which_item
sta person_tax_n
beq only_compare_up_bound
cmp #07h
beq only_compare_down_bound
sta person_tax_n
inc person_tax_n
jsr look_for_class_tab1_to_fac
jsr jsr_sub
jsr fac_if_minus
beq bound_input_error_process
lda fac_exp
beq bound_input_error_process
dec person_tax_n
only_compare_down_bound:
dec person_tax_n
jsr pop_arg_from_hs_data_stack
jsr push_arg_to_hs_data_stack
jsr look_for_class_tab1_to_fac
jsr jsr_sub
jsr fac_if_minus
bne bound_input_error_process
inc person_tax_n
write_class_tab1:
jsr pop_fac_from_hs_data_stack
jsr write_fac_to_class_tab1
lda person_tax_n
cmp #07h
bne ?not_the_last_in_per_rate_tax_1
inc person_tax_n
jsr write_fac_to_class_tab1
?not_the_last_in_per_rate_tax_1:
jmp up_or_down_in_per_rate_tax_1
only_compare_up_bound:
inc person_tax_n
jsr look_for_class_tab1_to_fac
jsr jsr_sub
jsr fac_if_minus
beq bound_input_error_process
lda fac_exp
beq bound_input_error_process
dec person_tax_n
bra write_class_tab1
bound_input_error_process:
jsr pop_fac_from_hs_data_stack
; lda which_item
; sta person_tax_n
; jsr look_for_class_tab1_to_fac
lda #04h
sta <oy
jsr clear_textbuffor_sub_prog
stz CurX
lda #02h
sta Cury
lprint input_error_in_personal_tax_message
jsr delay_0d5s
jmp tload_0
;==========================================
rate_set_in_per_tax_status0:
lda <KeyNo
cmp #DownKey
bne if_up_key_in_per_rate_set
?up_or_down_in_per_rate_tax:
jsr add_which_item
?up_or_down_in_per_rate_tax_1:
up_or_down_in_per_rate_tax_1:
lda person_select
eor #0ffh
sta person_select
jmp __personal_tax_set_display
if_up_key_in_per_rate_set:
cmp #UpKey
bne ??if_ac_key_in_per_rate_tax
bra up_or_down_in_per_rate_tax_1
??if_ac_key_in_per_rate_tax:
cmp #ac_key
beq ?ac_key_in_in_per_tax_rate_status0
jmp jmplmain
?ac_key_in_in_per_tax_rate_status0:
ac_key_in_in_per_tax_rate_status0:
lda #01h
sta input_status
jmp hs_disp_only_0
rate_set_in_per_tax_status1:
lda <KeyNo
cmp #EnterKey
beq ?if_new_rate_process
cmp #ac_key
beq ac_key_in_in_per_tax_rate_status0
jmp data_input_in_length
?if_new_rate_process:
stz input_status
jsr jsr_fin
lda #>tab_0d01
tay
lda #<tab_0d01
jsr copy_tab_to_arg
jsr ljsr_mul
jsr push_fac_to_hs_data_stack
lda fac_exp
beq rate_input_error_process
lda #>tab_1d0
tay
lda #<tab_1d0
jsr copy_tab_to_arg
jsr jsr_sub
jsr fac_if_minus
bne rate_input_error_process
lda fac_exp
beq rate_input_error_process
jsr pop_arg_from_hs_data_stack
jsr push_arg_to_hs_data_stack
lda which_item
sta person_tax_n
beq only_compare_up_rate
cmp #08h
beq only_compare_down_rate
sta person_tax_n
inc person_tax_n
?he:
jsr look_for_class_tab2_to_fac
jsr jsr_sub
jsr fac_if_minus
beq rate_input_error_process
lda fac_exp
beq rate_input_error_process
dec person_tax_n
only_compare_down_rate:
dec person_tax_n
jsr pop_arg_from_hs_data_stack
jsr push_arg_to_hs_data_stack
jsr look_for_class_tab2_to_fac
jsr jsr_sub
jsr fac_if_minus
bne rate_input_error_process
inc person_tax_n
write_class_tab2:
jsr pop_fac_from_hs_data_stack
jsr write_fac_to_class_tab2
jsr add_which_item
jmp up_or_down_in_per_rate_tax_1
only_compare_up_rate:
inc person_tax_n
jsr look_for_class_tab2_to_fac
jsr jsr_sub
jsr fac_if_minus
beq rate_input_error_process
lda fac_exp
beq rate_input_error_process
dec person_tax_n
bra write_class_tab2
rate_input_error_process:
jmp bound_input_error_process
; jsr pop_fac_from_hs_data_stack
; lda which_item
; sta person_tax_n
; jsr look_for_class_tab2_to_fac
; jmp jmplmain
;====================================================
RetMenu_personal_tax:
jmp TLoad_0
personal_tax_cnt_process:
jsr if_personal_tax_key
bpl ?is_personal_tax_key
jmp jmplmain
?is_personal_tax_key:
lda <KeyNo
cmp #EscKey
beq RetMenu_personal_tax
lda input_status
asl
tax
lda personal_tax_input_status+1,x
pha
lda personal_tax_input_status,x
pha
rts
;====================================================
personal_tax_input_status_0:
lda <KeyNo
cmp #EnterKey
beq ?11111
cmp #ac_key ;即AC键
beq ?11112
jmp data_input_in_length
?11112:
jmp hs_disp_only_0
?11111:
jsr jsr_fin
lda #>person_tax_income
tay
lda #<person_tax_income
jsr copy_fac_to_data
count_personal_tax_pay_basic:
jsr copy_fac_to_arg
jsr clear_fac
lda #>person_tax_month
tay
lda #<person_tax_month
jsr copy_fac_to_data
lda #>person_tax_area
tay
lda #<person_tax_area
jsr copy_fac_to_data
stz person_tax_n
;================================
lda #>personal_tax_sub
tay
lda #<personal_tax_sub
jsr copy_data_to_fac
jsr jsr_sub
bbr7 <fac_sgn,?count_continue_in_pay_personal
jmp personal_tax_disp_result
?count_continue_in_pay_personal:
lda #>person_tax_remain
tay
lda #<person_tax_remain
jsr copy_fac_to_data
;================================
pay_personal_count_loop:
lda #>person_tax_remain
tay
lda #<person_tax_remain
jsr copy_data_to_arg
lda #>person_tax_area
tay
lda #<person_tax_area
jsr copy_data_to_fac
jsr ljsr
dw SciBank
dw FaddT_S-1
jsr copy_fac_to_arg
jsr look_for_class_tab1_to_fac
jsr jsr_sub
bbs7 <fac_sgn,?the_last_cnt_in_pay_personal
;=====================================================
jsr look_for_class_tab1_to_arg
lda #>person_tax_area
tay
lda #<person_tax_area
jsr copy_data_to_fac
jsr jsr_sub
jsr push_fac_to_hs_data_stack
;=====================================
lda #>person_tax_remain
tay
lda #<person_tax_remain
jsr copy_data_to_arg
jsr jsr_sub
lda #>person_tax_remain
tay
lda #<person_tax_remain
jsr copy_fac_to_data
;=====================================
jsr pop_fac_from_hs_data_stack
jsr look_for_class_tab2_to_arg
jsr ljsr_mul
jsr person_tax_month_add_fac
jsr look_for_class_tab1_to_fac
lda #>person_tax_area
tay
lda #<person_tax_area
jsr copy_fac_to_data
inc person_tax_n
lda person_tax_n
cmp #08h
bne pay_personal_count_loop
bra large_data_do_in_pay_personal
;================================
?the_last_cnt_in_pay_personal:
lda #>person_tax_remain
tay
lda #<person_tax_remain
jsr copy_data_to_fac
jsr look_for_class_tab2_to_arg
jsr ljsr_mul
jsr person_tax_month_add_fac
personal_tax_disp_result:
lda #01h
sta input_status
jsr jsrlcls
LPrint personal_tax_all
LPrint need_to_pay_tax
lda #>person_tax_month
tay
lda #<person_tax_month
jmp copy_fac_to_display_and_ret
large_data_do_in_pay_personal:
lda #>person_tax_remain
tay
lda #<person_tax_remain
jsr copy_data_to_fac
jsr look_for_class_tab2_to_arg
jsr ljsr_mul
jsr person_tax_month_add_fac
bra personal_tax_disp_result
personal_tax_input_status_1:
lda <KeyNo
cmp #EnterKey
beq ?21111
cmp #ac_key
beq ?21112
jmp jmplmain
?21112:
stz input_status
jmp personal_tax_cnt_init
?21111:
lda #02h
sta input_status
jsr jsrlcls
LPrint personal_tax_all
LPrint after_tax_income
lda #>person_tax_income
tay
lda #<person_tax_income
jsr copy_data_to_arg
lda #>person_tax_month
tay
lda #<person_tax_month
jsr copy_data_to_fac
jsr jsr_sub
jmp stat_disp_result
personal_tax_input_status_2:
lda <KeyNo
cmp #EnterKey
beq ?21111
cmp #ac_key
beq ?21112
jmp jmplmain
?21112:
stz input_status
jmp personal_tax_cnt_init
?21111:
lda #01h
sta input_status
lda #>person_tax_income
tay
lda #<person_tax_income
jsr copy_data_to_fac
jmp count_personal_tax_pay_basic
;====================================================
RetMenu_personal_tax_month:
jmp TLoad_0
;==========================================================
personal_tax_month_process:
jsr if_personal_tax_key
bpl ?is_personal_tax_key
jmp jmplmain
?is_personal_tax_key:
stz float_bit
stz hs_flag
lda <KeyNo
cmp #EscKey
beq RetMenu_personal_tax_month
cmp #ac_key
bne not_ac_do_in_personal_tax_month
jmp hs_disp_only_0
not_ac_do_in_personal_tax_month:
cmp #EnterKey
beq enter_in_personal_tax_month
jmp if_digit_input_in_tax_new_rate
enter_in_personal_tax_month:
lda input_status
beq RetMenu_personal_tax_month
jsr jsr_fin
lda #>personal_tax_sub
tay
lda #<personal_tax_sub
jsr copy_fac_to_data
lsetscreen_to_ds0 1
lprint setting_string
jsr call_lupdatescreen
stz data_lengthh
lda #6 ;;6个数据
sta data_lengthl
lda #>personal_tax_sub
sta <flash_pointer_sh
lda #<personal_tax_sub
sta <flash_pointer_sl
lda #>personal_tax_data_default
sta <flash_pointer_dh
lda #<personal_tax_data_default
sta <flash_pointer_dl
lda #<change_ds0bank
sta <flash_object_drr
jsr ljsr
dw biosbank
dw copy_ram_data_to_flash-1
jmp RetMenu_personal_tax_month
;====================================================
RetMenu_personal_tax_recover_process:
jmp TLoad_0
;==========================================================
personal_tax_recover_process:
lda <KeyNo
cmp #EscKey
beq RetMenu_personal_tax_recover_process
cmp #YKey
beq recover_personal_default_value
cmp #NKey
beq RetMenu_personal_tax_recover_process
cmp #EnterKey
beq recover_personal_default_value
jmp jmplmain
recover_personal_default_value:
;; lda #96
;; sta data_lengthl
;; stz data_lengthh
;;
;; lda #<ds0bank
;; sta <flash_source_drr
;; lda #<change_ds0bank
;; sta <flash_object_drr
;; lda #>default_personal_tax_data
;; sta <flash_pointer_sh
;; lda #<default_personal_tax_data
;; sta <flash_pointer_sl
;;
;; lda #>personal_tax_data1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -