?? pager 原代碼.txt
字號:
tempo_end:
stz cnt_05s
tempo_end2:
lda #16
sta light_cnt
pop_all
rti
tempo_end1:
lda #14d
sta cnt_05s
bra tempo_end2
cnt_motor:
inc_addr song_ptr1,song_ptr
lda (song_ptr) ;get tempo of value
beq cnt_motor1
sta tb_d
bra tempo_end
cnt_motor1:
dec song_repeat
beq motor_end
jsr get_song_ptr
enable int_tempo
bra cnt_motor
motor_end:
motor_off
disable int_tempo
bra tempo_end
alarm_again:
lda #03
jsr get_song_ptr1
bra play_data1
;**********************************
clr_dspbuf:
jsr clr_icon_buf
clr_dspbuf1:
ldx #0
lda #space
clr_buf1:
sta dsp_buf,x
inx
cpx #14
bne clr_buf1
rts
;;********* check func of icon display *************
ck_func_icon:
lda funcnt
cmp #00 ;alert function
beq ck_func_icon1
cmp #02 ;delete function
beq ck_func_icon5
cmp #04 ;alarm func
beq ck_func_icon2
cmp #05 ;tone func
beq ck_func_icon3 ;time func
cmp #06
beq ck_func_icon4
ck_read_icon:
rts
ck_func_icon1:
flh_motor_icon
flh_tone_icon
rts
ck_func_icon2:
flh_alm_icon
rts
ck_func_icon3:
flh_tone_icon
rts
ck_func_icon4:
flh_time_icon
rts
ck_func_icon5:
flh_del_icon
rts
;;===================================
;enable int
enable_int:
lda #00000101b ;enable the watch and scankey
sta int_en0
lda #00000110b ;enable battery fail int and ant range
sta int_en1
cli ; enable int flag of 6502
rts
;;*************************************
;; check alarm time
;;*************************************
ck_alarm_time:
lda sec
bne ck_alm_end
mbbs f_alarm,ck_alm_end
stz mp2 ;high byte to zero
bbr7 alm_h1,ck_alm2
ldx #01 ;as alarm number
lda #alm_h1
ck_alarm_time1
sta mp1
jsr comp_alm_time
bcc ck_alm2
rts
ck_alm2:
bbr7 alm_h2,ck_alm3
ldx #02
lda #alm_h2
sta mp1
jsr comp_alm_time
bcc ck_alm3
rts
ck_alm3:
bbr7 alm_h2,ck_alm_end
ldx #03
lda #alm_h3
sta mp1
jsr comp_alm_time
ck_alm_end
rts
;;*************************************
;; compare alarm time subroutine
;;*************************************
comp_alm_time:
lda (mp1)
and #01111111b ;mask alarm on/off bit
cmp hour
bne comp_alm_end
inc mp1
lda (mp1)
cmp min
bne comp_alm_end
lda #.LOW.alarm_scr ;get tone of character start address
sta string_headl
lda #.HIGH.alarm_scr
sta string_headh
jsr disp_str
stx dsp_buf8 ;show alarm number
jsr clr_func
flh_alm_icon
jsr lcd_dr
lda #03
jsr get_song_ptr1
jsr play_music2
mrmb stand_by
msmb f_alarm
msmb f_anykey
sec
rts
comp_alm_end
clc
rts
;;***********************************
;;trun off the decoder
trun_off_decoder:
lda dec_ctr2
and #01111111b
sta dec_ctr2
rts
trun_on_decoder1:
lda dec_ctr2
ora #10000000b
sta dec_ctr2
rts
;;***********************************
trun_on_decoder:
lda #01
sta red_co
lda #0eh
sta rea_addr
lda #addr_buf
sta mp1
stz mp2
jsr read_eeprom
lda addr_buf+1
lsr A
lsr A
lsr A
lsr A
sta lock_onff
lda #01111111b
and addr1_ctr0
sta addr1_ctr0
lda #01111111b
and addr2_ctr0
sta addr2_ctr0
lda #01111111b
and addr3_ctr0
sta addr3_ctr0
lda #01111111b
and addr4_ctr0
sta addr4_ctr0
lda #80h
bbs0 addr_buf+1,en_addr1
lda #00h
en_addr1:
ora addr1_ctr0
sta addr1_ctr0
lda #80h
bbs1 addr_buf+1,en_addr2
lda #00h
en_addr2:
ora addr2_ctr0
sta addr2_ctr0
lda #80h
bbs2 addr_buf+1,en_addr3
lda #00h
en_addr3:
ora addr3_ctr0
sta addr3_ctr0
lda #80h
bbs3 addr_buf+1,en_addr4
lda #00h
en_addr4:
ora addr4_ctr0
sta addr4_ctr0
mrmb ver_f
bbr7 addr_buf,sel_mid
msmb ver_f
sel_mid:
mrmb m_id
bbr6 addr_buf,sel_mid_end
msmb m_id
sel_mid_end:
;;trun on the decoder
lda addr_buf
and #00111111b
ora #11000000b
sta dec_ctr2
rts
;;***********************************
;;reset decoder
reset_decoder:
lda #00111111b
and dec_ctr2
sta dec_ctr2
nop
nop
nop
nop
nop
;; lda #40h
;; sta dec_ctr2
rts
;;**********************************
trun_on_decoder2:
nop
nop
lda #c0h
ora dec_ctr2
sta dec_ctr2
rts
;;*****************************************
;;initial decoder from eeprom
;;76.8khz,two consecutive uncorredtable
;;codeword to call temination
;;*****************************************
init_decoder:
jsr reset_decoder
jsr fill_addr
jsr fill_lock
jsr fill_re1_re3
; jsr fill_var
jsr trun_on_decoder
enable int_msg
enable int_ant
rts
;;****** read re1 and re3 data *******
fill_re1_re3:
lda #01
sta red_co
lda #10h
sta rea_addr
lda #addr_buf
sta mp1
stz mp2
jsr read_eeprom
lda addr_buf
sta re1_ctr
lda addr_buf+1
sta re3_ctr
rts
;;****** fill the decoder ************
init_lcd:
lda #01
sta red_co
lda #0fh
sta rea_addr
lda #addr_buf
sta mp1
stz mp2
jsr read_eeprom
lda addr_buf
and #11111100b
sta dec_ctr1
;;check auto option
mrmb auto_op ;enable auto option
bbr0 addr_buf,sel_auto_op
msmb auto_op ;;disable auto option
sel_auto_op:
mrmb btlot
bbr1 addr_buf,sel_btlot
msmb btlot
sel_btlot:
;;init lcd frame rate and selR(resistor)
stz lcd_bus
lda addr_buf+1
lsr A
lsr A
lsr A
ora #80h
sta lcd_ctl
;;init operating voltage
;;bit6=>1:low_load,0:high load
;;bit0,1:select operating voltage
;;The option of 2.5v is not available in AR50P31
;;The default ck100 set to 1(100khz)
;;The ck100 is freqency of oscillation clock in the convert
lda addr_buf+1
asl A
asl A
asl A
asl A ;;getting the LDST
and #01000000b
sta temp
lda addr_buf+1 ;;getting the operating voltage
and #00000011b
ora temp
ora #80h ;;setting the ck100 to 100khz
sta volt_ctl
mrmb ma7x_lcd
mrmb lcd1
;; mrmb manual
;; bbr2 addr_buf+1,sel_lcd0
;; msmb manual
sel_lcd0:
bbr4 addr_buf+1,sel_lcd1
msmb ma7x_lcd
sel_lcd1:
bbr5 addr_buf+1,sel_scr
msmb lcd1
sel_scr:
bbr6 addr_buf+1,init_lcd_end
msmb scr_f
init_lcd_end:
;; msmb ma7x_lcd ;;for test
;; mrmb lcd1
rts
;;;******* fill pocsag address *******
fill_addr:
lda #00h
sta addr1_ctr2
sta addr1_ctr1
lda #80h
sta addr1_ctr0
jsr fill_addr1
jsr fill_addr2
jsr fill_addr3
jsr fill_addr4
rts
;;*********** fill lock value ***********
swap_lock_num:
; swap alock1
; sta alock1
; swap alock2
; sta alock2
; swap block1
; sta block1
; swap block2
; sta block2
; swap clock1
; sta clock1
; swap clock2
; sta clock2
; swap dlock1
; sta dlock1
; swap dlock2
; sta dlock2
; rts
fill_lock:
lda #04
sta red_co
lda #08h
sta rea_addr
lda #alock1
sta mp1
stz mp2
jsr read_eeprom
; jsr swap_lock_num
stz lock_num1
stz lock_num2
lda #alock1
sta mp1
jsr chk_lock_num
sta lock_num1
lda #block1
sta mp1
jsr chk_lock_num
swap
ora lock_num1
sta lock_num1
lda #clock1
sta mp1
jsr chk_lock_num
sta lock_num2
lda #dlock1
sta mp1
jsr chk_lock_num
swap
ora lock_num2
sta lock_num2
lda #alock1
sta mp1
lda lock_num1
and #0fh
jsr lock_mode
lda #block1
sta mp1
lda lock_num1
shift_right
jsr lock_mode
lda #clock1
sta mp1
lda lock_num2
and #0fh
jsr lock_mode
lda #dlock1
sta mp1
lda lock_num2
shift_right
jsr lock_mode
rts
lock_mode:
cmp #04
beq lock_mode4
cmp #03d
beq lock_mode3 ;;lock 3 digit
cmp #02d
beq lock_mode2 ;;lock 2 digit
cmp #01d
beq lock_mode1 ;;lock 1 digit
rts
lock_mode4:
lda (mp1)
swap
sta (mp1)
inc mp1
lda (mp1)
swap
sta (mp1)
rts
lock_mode3:
lda (mp1)
and #0fh
sta tempa
inc mp1
lda (mp1)
and #f0h
ora tempa
dec mp1
sta (mp1)
rts
lock_mode2:
inc mp1
lda (mp1)
swap
dec mp1
sta (mp1)
rts
lock_mode1:
inc mp1
lda (mp1)
and #0fh
dec mp1
sta (mp1)
rts
;;************ check lock number **********
chk_lock_num:
stz temp
mrmb t_flag
chk_lock_num1:
lda (mp1)
and #0fh
cmp #0ah
beq chk_lock_num2
inc temp
chk_lock_num2
lda (mp1)
lsr A
lsr A
lsr A
lsr A
cmp #0ah
beq chk_lock_num3
inc temp
chk_lock_num3:
mbbr t_flag,chk_lock_num4
lda temp
rts
chk_lock_num4:
inc mp1
msmb t_flag
bra chk_lock_num1
;;******** fill lock on/off and main ID *********
;fill_var:
; lda #01
; sta red_co
; lda #0ch
; sta rea_addr
; lda #lock_onff
; sta mp1
; stz mp2
; jsr read_eeprom
; mrmb ver_f
; bbr1 m_id,fill_var_end
; msmb ver_f
;fill_var_end:
; rts
;;*********
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -