📄 tf9925h.src
字号:
LD PROG_FLAG,EA ; exit program memory,LAC & ringer set
LD VIEW_TIMER,EA ; stop view timer
;
BITR VIEW_FLAG.EEP_VIEW ; exit viewing mode
BITR VIEW_FLAG.CID_VIEW ; exit viewing CID if any
BITR VIEW_FLAG.REDIAL_VIEW ; exit viewing dialed call mode
BITR VIEW_FLAG.END_OF_LIST
BITR VIEW_FLAGH.VIEWTMR_ON ; clr. view timer on flag
; BITR VIEW_FLAGH.LAC_RDY ; disable to change LAC
BITR VIEW_FLAGH.PAGE_BRA
;
BITR OPER_FG.PREDIAL
BITR OPER_FG.DEL_MEM
BITR OPER_FG.CID_TO_MEM
BITR OPER_FGH.DELETE ; reset delete flag
;
BITR DISP_FLAG.ERALL ; reset delete all flag
BITR DISP_FLAG.SWITCH_PAGE ; reset switch page flag
BITR RNGVOLPORT.RING_VOL
;
SMB 0
BITR STSFG1H.DOT_BLINK ; disable blink LCD cursor
BITR MODEFGH.MEM_DIAL ; quit memory dial at TALK mode if any
LD A,TXFG
AND A,#0011B ; stop timeout check
LD TXFG,A
BTSF MODEFG.TALK_MODE
JPS ON_TLKLED ; steady on TALK led & stop blink
RET
;
;**************************************************************
; Init. key routine ( start timer, on back led & keytone )
;**************************************************************
INIT_UPKEY:
INIT_DNKEY:
SMB 1
BITR OPER_FG.CID_TO_MEM
INIT_MEMKEY:
SMB 1
BITR DISP_FLAG.ERALL ; reset delete all flag
BITR OPER_FGH.DELETE ; reset delete flag
;
INIT_PROGKEY:
INIT_DELKEY:
SMB 1
LD EA,#200 ; start 20 sec. memory program timer
LD VIEW_TIMER,EA
BITS VIEW_FLAGH.VIEWTMR_ON ; set flag to indicate timer on
INIT_KEY:
CALLS ON_BACKLED ; on BACK led for 10 sec.
BTST MODEFG.TALK_MODE
JR INIT_KEY1
CALLS GEN_KEYTONE
RET
INIT_KEY1:
CALLS KEYTONE
RET
;
;*****************************
; Generate key tone for 50ms
;*****************************
GEN_KEYTONE:
SMB 1
LD EA,KYTONE_BUF
SMB 0
DECS EA
JPS SKIP_KYTONE
;
GEN_KEYTONE1:
BTSF TXFG.TXEN ; during tx data, delay emit tone
JR GEN_KEYTONE
;
CALL MUTE_COMBO
BITR RNGVOLPORT.RING_VOL
;
; LD EA,#TN1250
LD EA,#TN1600
CALL BEEP_START ; on buzzer 1.67KHz
;
LD EA,#50/2
CALLS WAIT_DELAY
;
CALL BEEP_STOP
SKIP_KYTONE:
RET
;
;************************************
; Beep tone generate routine (@10ms)
;************************************
BEEP_CHK:
BTST CHK_FLAG.BUZZER_ON
RET
;
BTST TIME_FLAGH.T10MS
RET
BITR TIME_FLAGH.T10MS
;
BTST CHK_FLAGH.PAGING
JPS BEEP_CHK1
;
BTST PAGE_PTR.0 ; page tone off ?
JPS BEEP_CHK1 ; no
;
LD EA,PAGE_PULSE ; page tone
DECS EA
LD PAGE_PULSE,EA ; @10m
DECS EA
RET
;
LD EA,PAGE_PTR
ADS EA,#1
LD PAGE_PTR,EA
TONE_RELOAD:
CALLS GET_PAGE_WIDTH
LD HL,#END_OF_PAGE
CPSE EA,HL
JPS SET_PAGE_ON ; 2001-10-23
LD EA,#0
LD PAGE_PTR,EA
LD EA,PAGE_CNT
DECS EA
LD PAGE_CNT,EA
DECS EA
JPS TONE_RELOAD
STOP_PAGE:
BITR CHK_FLAGH.PAGING ; tone finish
BITR RNGVOLPORT.RING_VOL
CALLS OFF_TLKLED ; off led & stop blink
CALLS OFF_INT_ICON
JPS BEEP_END
;
;------------------
; buzzer on reload
;------------------
BEEP_CHK1:
LD EA,TONE_TIME
DECS EA
LD TONE_TIME,EA
ADS EA,#0FFH ; tone time arrived ?
JR BEEP_RELOAD ; yes
BEEP_QUIT:
RET
;
BEEP_RELOAD:
LD EA,TONE_PTR
CALLS GET_TN_TIME ; Z = 0 (on/off) , 1 (dual)
LD EA,TONE_CYCLE
DECS EA
LD TONE_CYCLE,EA ; end of beep tone pattern ?
ADS EA,#0FFH
JPS BEEP_END2
;
BTSF CHK_FLAGH.PAGING ; disable tone reload for paging
JPS BEEP_QUIT
;
BTST TONE_CYCLE.0 ; 1: enable tone output
JPS BEEP_RELOAD1
;
LD EA,TONE_PTR
CPSE A,#1
JR BEEP_RELOAD3
; LD EA,#TN1250 ; on key tone 1.25khz
LD EA,#TN1600
JR BEEP_RELOAD2
BEEP_RELOAD3:
LD EA,#TN1600 ; on buzzer 1 khz
CPSE Z,#0
LD EA,#TN2000 ; on buzzer 2 khz
BEEP_RELOAD2:
CALL BEEP_START
RET
;
BEEP_RELOAD1:
LD A,Z
ADS A,#0FH
JPS BEEP_STOP
;
LD EA,#TN1600 ; on buzzer 1 khz
CALL BEEP_START
RET
;
BEEP_END2:
BTST CHK_FLAGH.PAGING
JPS BEEP_END1
LD EA,PAGE_PULSE
DECS EA
LD PAGE_PULSE,EA ; end of page pulse ? (@60ms)
DECS EA
JPS SET_PAGE_TN
LD EA,PAGE_PTR
ADS EA,#1
LD PAGE_PTR,EA
CALLS GET_PAGE_WIDTH
JR BEEP_STOP
BEEP_END:
BEEP_END1:
BITR CHK_FLAG.BUZZER_ON
BEEP_STOP:
SMB 15
LD EA,#01101000B ; timer mode:fx = 4.000MHz
; |______________ disable timer/counter 0
LD TMOD0,EA
;
BITR TOE0
; BITS BUZZERPORT.BUZZER_OUT
SMB 0
RET
;
;************************************
; Generate beep tone
; set TC0 clock frequency output
; i/p : EA - output signal frequency
;*************************************
BEEP_START:
SMB 15
LD TREF0,EA
;
LD EA,#01101100B ; timer mode:fx = 4.000MHz
; | |
; |_|________________ 110: Select fx/16 = 250KHz
LD TMOD0,EA
;
BITR BUZZERPORT.BUZZER_OUT
BITS TOE0
SMB 0
RET
;
;*****************************************
; Get page tone width
; i/p : PAGE_PTR - page pattern pointer
; o/p : PAGE_PULSE, EA - tone width
;*****************************************
GET_PAGE_WIDTH:
LD EA,PAGE_PTR
ADS EA,#(PAGE_TBL&0FFH)
CALL LODCODE
LD PAGE_PULSE,EA
RET
;
;*********************************************
; Key tone generation
; o/p : TONE_CYCLE = 2 (single 1Khz beep tone)
;*********************************************
KEYTONE:
SMB 1
LD EA,KYTONE_BUF
SMB 0
DECS EA
JPS KEYTONE3 ; disable key tone
;
BEEP_TONE:
LD Z,#1
KEYTONE1:
LD EA,#2
LD TONE_CYCLE,EA ; single beep tone
BITR RNGVOLPORT.RING_VOL
KEYTONE2:
LD E,#0
LD A,Z
LD TONE_PTR,EA
LD EA,#1
LD TONE_TIME,EA
LD A,#16-10/2
LD T10MS_BUF,A
BITS CHK_FLAG.BUZZER_ON
KEYTONE3:
RET
;
;**********************************************
; Error tone generation
; o/p : TONE_CYCLE = 4 (double 1kHz beep tone)
;**********************************************
ERROR_TONE:
SMB 0
LD Z,#2
LD EA,#2*2 ; double beep tone
LD TONE_CYCLE,EA
BITR RNGVOLPORT.RING_VOL
JPS KEYTONE2
;
;***************************
; Confirm tone generation
;***************************
CONFIRM_TONE:
SMB 0
LD Z,#3
JPS KEYTONE1
;
;**********************************
; Ring tone generation (1Khz/2Khz)
; o/p : TONE_CYCLE = 2
;**********************************
DUAL_TONE:
RING_TONE:
LD Z,#4 ; ring tone type
LD EA,#3*1
LD TONE_CYCLE,EA
;
LD A,#16-10/2
LD T10MS_BUF,A
BITS TIME_FLAGH.T10MS
JPS KEYTONE2
;
;**********************************
; Page tone generation (1Khz/2Khz)
; o/p : TONE_CYCLE = 2+1
;**********************************
PAGE_29_TONE:
LD EA,#29
LD PAGE_CNT,EA ; 29 page tone ( 1 min )
JR PAGE_TONE1
;
PAGE_1TONE:
LD EA,#1
LD PAGE_CNT,EA ; 1 page tone
;
PAGE_TONE1:
BITS RNGVOLPORT.RING_VOL
BITS CHK_FLAGH.PAGING
LD EA,#0
LD PAGE_PTR,EA
CALLS GET_PAGE_WIDTH ; get page pulse width
;
SET_PAGE_ON:
LD EA,#TN2000 ; on buzzer 2 khz
CALL BEEP_START
;
SET_PAGE_TN:
LD Z,#5 ; page tone type
LD EA,#2+1
LD TONE_CYCLE,EA
LD A,#16-10/2
LD T10MS_BUF,A
BITS TIME_FLAGH.T10MS
JPS KEYTONE2
;
;************************************
; Low battery tone generation (1khz)
;************************************
LOWBAT_TONE:
LD Z,#6
JPS KEYTONE1
;
;**************************************
; Out of range tone generation (1Khz)
;**************************************
OUTRNG_TONE:
LD Z,#7 ; one 230ms beep tone
JPS KEYTONE1
;
;
;*************************************************
; Get tone on/off time (0) or dual tone tone (1)
; i/p : A - tone kind
; O/P : TONE_TIME - tone time counter (@10ms)
; : Z - tone type (0:on/off type; 1:dual type)
;*************************************************
GET_TN_TIME:
DECS EA ; fix bug of fetch table
ADS EA,EA
ADS EA,#TN_TIME_TBL&0FFH
LD WX,EA
CALL LODCODE
LD TONE_TIME,EA
;
INCS WX
LD EA,WX
CALL LODCODE
LD Z,A
RET
;
;*****************************
; Mute / Unmute check routine
;*********************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -