?? pager 原代碼.txt
字號(hào):
;;;*********************************************************************
;;***********************************************************************
;;
;; PROJECT : POSCAGE NUMERIC PAGER
;;
;; CUSTOMER : stardard
;;
;; MCU : AR5030
;;
;; ROM/RAM : 32K 8000H-FFFFH / 1K 60H-45F
;;
;; RF BAND : 100MHz,200MHz
;;
;; PROGRAMMER : Morrise hsu
;;
;; PERIPHERAL :
;;
;; DATE : 1999.06.27
;;
;; VERSION : V1.0A
;;
;;**************************************************************************
.CHIP R65c02
.PL 1000
.LINKLIST
.SYNTAX 6502
.SYMBOLS
.MACLIST ON
.INCLUDE 5030.INC
.INCLUDE VAR.INC
.INCLUDE CONT.INC
.INCLUDE MACRO.INC
;******************************************
;******************************************
ORG $8000h
.CODE
.INCLUDE font1.INC
.INCLUDE display.inc
reset:
jsr delay
jsr delay
nop
nop
nop
cld ;clear decimal
sei ;disable int
ldx #stack_ini ;initial stack to 003fh - 0100h
txs
;====================================
jsr init_port
jsr initial_timer
jsr init_int
jsr initial_clk_gen
jsr init_bfd
jsr clr_lcd
;;init lcd,dec ctr1,volt,lcd flag,screen flag,burn code flag
lda dummy1
cmp #5ah
bne new_clear
lda dummy2
cmp #a5h
bne new_clear
mrmb batlow_f ;;after reset detect battery low again
;; lda #btlot1
stz batlow_cnt
jsr clr_func
bra reset1
new_clear
jsr clr_ram
jsr init_dummy
jsr init_ram_value
reset1
jsr check_eep
jsr init_lcd
jsr chk_scr_op
jsr enable_int
jsr power_on_test
bcc reset2
jmp prog_mode_start
reset2:
;; lda com1
;; cmp #05 ;;check if enter write default or not
;; bne reset3
;; stz dummy1 ;;new eeprom
;; stz dummy2
;; bra reset ;reinitialize
reset3:
jsr check_eep_err
; jsr fill_eep ;;using the test
jsr init_decoder
motor_off
msmb stand_by
bra main1
;;*****************************************
;;stand_by=1,system to enter stand by mode
;;stand_by=0,system out of stand by mode
;;*****************************************
main:
jsr chk_bat_low
cpu_halt
main1
mbbr r_decoder,decoder_ok
mrmb r_decoder
jsr reset_decoder
jsr trun_on_decoder2
decoder_ok:
mbbr f_msg,main2
jmp read_msg ;;have new message
main2:
jsr ck_alarm_time
jsr chk_auto_onff
jsr unread_tone
jsr chk_bat_low
mbbr stand_by,check_new_key
mbbr auto_onff,main3
jmp entry_off
main3:
mbbr rd_lcd,main
jsr stand_by_screen
;; jsr dsp_msg_no
jsr show_up_digit
jsr lcd_dr
bra main
check_new_key:
;;check new key in
lda #16
sta light_cnt
mbbr f_newkey,no_key
mbbs f_anykey,esc_func
main4
mrmb f_newkey
stz cnt_05s
bbr read,key_code,read_key
bbr select,key_code,sel_key
bbr func,key_code,func_key
no_key:
lda cnt_05s
cmp #16d ;check function screen timeout
beq esc_func
mbbr rd_lcd,main
mbbr read_mode,no_key1
jsr ck_system_icon
no_key1:
jsr lcd_dr
bra main
;; mbbr read_mode,main
jsr dsp_msg_no
jsr show_up_digit
bra main
;;*************************************
esc_func:
jsr clr_func
jsr stand_by_screen
jsr show_up_digit
jsr lcd_dr
jmp main
;;*************************************
entry_func:
dot_icon_off
mrmb scren ;clr func screen flag
msmb entry ;set entry flag
lda funcnt
entry_func1:
asl A
tax
jmp (func_addr,x)
;;**********************************
;;func:
;;bit0:function screen
;;bit1:entry function
;;bit2:read msg mode
;;bit3:read msg function
;;*************************************
read_key:
mbbs scren,esc_func
mbbs entry,esc_func
mbbs read_mode,read_key1
jmp read_msg ;;jmp read mode
read_key1:
jmp for_read
sel_key:
mbbs read_mode,ck_msg_func
mbbs scren,entry_func
mbbs entry,entry_func
bra esc_func
ck_msg_func:
jmp ck_msg_func0
func_key:
mbbs read_mode,msg_func
mbbs adjust,adj_mode ;check entry adj func
mbbs scren,func_sel1 ;check enter function select
msmb scren
stz funcnt
;;************************************
;;************************************
;;select enter function
;;index by x register
;;scren flag:for function screen select
;;entry flag: for entry function
;;************************************
func_sel:
lda funcnt
cmp #05
beq ck_tone_item ;check tone func scr
cmp #03
beq ck_auto_item
cmp #02
beq ck_clrall_item
func_ck:
lda funcnt
asl A
tax
lda func_table,x ;get table start address
sta string_headl
inx
lda func_table,x
sta string_headh
mrmb china_char ;clr china ver
jsr disp_str
mbbs read_mode,don't_clr_icon
jsr clr_icon_buf
jsr clr_up_digit
don't_clr_icon:
jsr ck_func_icon
lda funcnt
cmp #01
beq chk_dot_icon
lda funcnt
sec
sbc #8
bcs chk_dot_icon
dot_icon_on
chk_dot_icon
jsr lcd_dr
jmp main
func_sel1:
inc funcnt
lda funcnt
cmp #08h
bne func_sel
stz funcnt
jmp esc_func
;;*************************************
adj_mode:
lda funcnt
asl A
tax
jmp (adj_table,x)
;;***********************************
;;************************************
ck_tone_item:
mbbs tone_mode,func_ck
inc funcnt
bra func_ck
ck_auto_item:
mbbr auto_op,func_ck ;;enable auto option
inc funcnt
bra func_ck
ck_clrall_item:
lda msg_no
bne func_ck
inc funcnt
bra func_sel
;;***********************************
;;read mode function:
;;delet,protect and unprotect function
;;***********************************
msg_func:
msmb msgfunc
inc funcnt
lda funcnt
cmp #9
beq ck_protect_msg
cmp #11
beq msg_func2
cmp #10
bne msg_func1
msg_func2:
lda #08
sta funcnt
msg_func1:
jsr ck_unprotect_msg
jmp func_ck ;display function name
ck_protect_msg:
ldx msg_inx
lda msg_stat_start,x
sta tempa
bbr6 tempa,msg_func1 ;check lock icon
inc funcnt
bra msg_func1
;;***********************************
;;***********************************
func_addr:
dw entry_alert
dw entry_off
dw entry_clrall
dw entry_auto
dw entry_alarm
dw entry_tone
dw entry_time
dw entry_date
adj_table:
dw adj_alert
dw adj_off
dw adj_clrall
dw adj_auto
dw adj_alarm
dw adj_tone
dw adj_time
dw adj_date
;;************* function screen table *************
func_table:
dw alert_sel_table
dw off_table
dw clr_all
dw auto_table
dw alarm_table
dw tone_table
dw time_table
dw date_table
dw delete_table ;;8
dw protect_table ;;9
dw unprotect_table ;;10
;;******************************
;;function entry point
;;******************************
esc_alert_sel:
jmp esc_func
entry_alert:
mbbs adjust,esc_alert_sel
msmb adjust ;enter adjust
entry_alert1:
jsr clr_icon_buf
mbbs motor_mode,act_motor
mbbs mute_mode,act_mute
lda #12
jsr get_song_ptr1
jsr play_music2
show_tone_scr:
msmb tone_mode
tone_icon_on
lda #.LOW.tone_scr ;get tone of character start address
sta string_headl
lda #.HIGH.tone_scr
sta string_headh
jsr disp_str
jsr lcd_dr
lda song_no
inc A
bin_bcd
cpy #0
beq show_tone_scr1
sty dsp_buf+8
sta dsp_buf+9
smb7 dsp_buf+8
smb7 dsp_buf+9
; jsr set_flh_bit
jsr lcd_dr
jmp main
show_tone_scr1:
sta dsp_buf+8
; jsr set_flh_bit
smb7 dsp_buf+8
jsr lcd_dr
jmp main
act_motor:
lda #.LOW.motor_scr ;get tone of character start address
sta string_headl
lda #.HIGH.motor_scr
sta string_headh
jsr disp_str
jsr set_flh_bit
jsr lcd_dr
motor_icon_on
; msmb f_motor
lda #14
jsr get_song_ptr1
jsr play_music2
jmp main
act_mute:
lda #.LOW.mute_scr ;get tone of character start address
sta string_headl
lda #.HIGH.mute_scr
sta string_headh
jsr disp_str
jsr set_flh_bit
jsr lcd_dr
jsr clr_icon_buf
jmp main
;;********************************
;;entry adjust auto function
;;********************************
entry_off:
msmb sys_off
mrmb auto_onff
msmb stand_by
disable int_msg
disable int_ant
clr int_msg
jsr trun_off_decoder
jsr clr_func
jsr show_watch_c
jsr show_off_scr
jsr ck_alarm_icon
jsr lcd_dr
jsr show_up_digit
off_halt:
mbbs f_alarm,off_halt1
msmb stand_by
off_halt1:
jsr chk_bat_low
cpu_halt
jsr chk_bat_low
jsr ck_alarm_time
jsr chk_auto_onff
mbbs auto_onff,trun_on_pager
mbbr stand_by,checkoff_new_key
mbbr rd_lcd,off_halt
off_halt2:
mrmb f_anykey
mrmb f_alarm
mrmb music_ply
disable int_tempo
flh_alm_off
buzzer_out_off
motor_off
jsr ck_alarm_icon
jsr show_watch_c
jsr show_off_scr
jsr lcd_dr
;; jsr show_up_digit
bra off_halt
;;==================================
checkoff_new_key:
mbbr f_newkey,off_no_key
mbbs f_anykey,off_halt2
bbr read,key_code,trun_on_pager
off_no_key:
mbbr rd_lcd,off_halt
jsr lcd_dr
bra off_halt
;;;==================================
trun_on_pager:
mrmb auto_onff
jsr power_on_test
bcc trun_on_pager1 ;;check manual program mode
jmp prog_mode_start
trun_on_pager1
jsr init_decoder
jsr init_pll
trun_on_pager2:
motor_off
mrmb sys_off
enable int_msg
enable int_ant
jsr show_up_digit
msmb stand_by
jmp main
;;;***********************************
;;;show off screen at page off
show_off_scr:
lda #FONT_LE
sta dsp_buf7
lda #FONT_O
sta dsp_buf8
lda #FONT_F
sta dsp_buf9
sta dsp_buf10
lda #FONT_RE
sta dsp_buf11
rts
;;********************************
;;delete all message funcion
;;Don't delete message when it is
;;unreaded and locked
;;********************************
adj_clrall
entry_clrall:
ldy #0
entry_clrall1:
lda msg_stat_start,y
and #11000010b
cmp #10000000b
bne entry_clrall2
lda msg_type_start,y
and #0fh
sta max_num
lda #00
sta msg_type_start,y
sta msg_stat_start,y
jsr adj_clr_pager ;using x index reagist
lda msg_no
beq entry_clrall2
dec msg_no
entry_clrall2
iny
cpy #12
bne entry_clrall1
jmp esc_func
;;********************************
;;entry adjust auto function
;;shift:bit7 as entry auto flag cycle
;;********************************
entry_auto:
mbbs adjust,auto_onff_chk
msmb adjust
entry_auto3:
lda #.LOW.auto_on_scr ;get tone of character start address
mbbs auto_en,entry_auto1
lda #.LOW.auto_off_scr
entry_auto1:
sta string_headl
lda #.HIGH.auto_on_scr
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -