IRU24_102.ASM
Voici le listing du logiciel de
gestion de la logique RU24. Les commentaires sont généralement explicites
(il vaut mieux en
assembleur !)
Si vous avez des questions, j'ai peut-être les réponses à f5rhy@qsl.net
Bonne chance ! retour au sommaire
* * *
; Logique intercom FZ7UHC/FRU24(RU256)
;
; Tous droits et de reproduction reserves.
; Copyright (c)1993-1998 Philippe Martorell, F5RHY & Georges Zanotto, F5DFN.
; CONSTANTES REGISTRES
ADATA EQU $0000
BDATA EQU $0001
CDATA EQU $0002
DDATA EQU $0003
ADDR EQU $0004
BDDR EQU $0005
CDDR EQU $0006
SBRR EQU $000D
SCR1 EQU $000E
SCR2 EQU $000F
SCISR EQU $0010
SCIDR EQU $0011
TCR EQU $0012
TSR EQU $0013
TRH EQU $0018
TRL EQU $0019
ATRH EQU $001A
ATRL EQU $001B
; Variables RAM
ORG $0050
ETAT DB 0 ; mot d'etat general ;b7=1 ->opration intercom en cours
;b6=1 ->intercom valide TX
;b5=1 ->frequence 23cmRX a programmer
;b4=1 -># a ete recu en 1ere position
;b3=1 ->'Z' ne doit pas etre emis
RX23HH DB 0 ; Reception: argument 4
RX23HL DB 0 ; Reception: argument 3
TX23HH DB 0 ; Emission: argument 4
TX23HL DB 0 ; Emission: argument 3
TR23LH DB 0 ; Emission & reception: argument 2
TR23LL DB 0 ; Emission & reception: argument 1
ETVI23 DB 0 ; etat de la voie intercom 23cm
ETVI2M DB 0 ; etat de la voie intercom 2m
ETVI70 DB 0 ; etat de la voie intercom 70cm
TMPTX DB 0 ; Caractere a transmettre sur le SCI
INTER0 DB 0 ; Logement des codes DTMF de la voie intercom
INTER1 DB 0
INTER2 DB 0
INTER3 DB 0
INTER4 DB 0
INTER5 DB 0
TELEC0 DB 0 ; Logement des codes DTMF de la voie telecom
TELEC1 DB 0
TELEC2 DB 0
TELEC3 DB 0
TELEC4 DB 0
TELEC5 DB 0
INTERC DB 0 ; Compteur de codes intercom recus
TELECC DB 0 ; Compteur de codes telecom recus
INTERX DB INTER0 ; Index intercom
TELECX DB TELEC0 ; Index telecom
TIMER DB 0 ; Stocke TRH pour la telegraphie
CPTLO DB 0 ; compteur de passage pour le trait telegraphique
CPTLO1 DB 0 ; compteur local auxiliaire
CPTLO2 DB 0 ; compteur local auxiliaire
CPTLO3 DB 0 ; compteur local auxiliaire
CPTLO4 DB 0 ; compteru local auxiliaire
CPT01 DB 0 ; compteurs de temps
CPT02 DB 0
OCTCMP1 DB 0 ; octets de comparaison pour les codes intercom
OCTCMP2 DB 0
DECAL DB 0 ; compteur d'offset de programmation
MAP DB 0 ; mot VHF a programmer
TMP DB 0 ; mot temporaire de mise en forme
ORG $0160 ; Mots de comparaison VHF
VHFCMP
DW $445A ; Canal 0
DW $4475 ; Canal 1
DW $45AA ; Canal 2
DW $4512 ; Canal 3
DW $4525 ; Canal 4
DW $4537 ; Canal 5
DW $455A ; Canal 6
DW $4562 ; Canal 7
DW $4575 ; Canal 8
DW $4587 ; Canal 9
DW $46AA ; Canal 10
DW $47AA ; Canal 11
DW $52AA ; Canal 12
DW $5212 ; Canal 13
DW $5225 ; Canal 14
DW $5237 ; Canal 15
DW $525A ; Canal 16
DW $5262 ; Canal 17
DW $53AA ; Canal 18
DW $5312 ; Canal 19
DW $5325 ; Canal 20
DW $5337 ; Canal 21
DW $535A ; Canal 22
DW $5362 ; Canal 23
DW $5375 ; Canal 24
DW $5387 ; Canal 25
DW $54AA ; Canal 26
DW $5412 ; Canal 27
DW $5425 ; Canal 28
DW $5437 ; Canal 29
DW $545A ; Canal 30
DW $5462 ; Canal 31
DW $5475 ; Canal 32
DW $5487 ; Canal 33
DW $55AA ; Canal 34
DW $5512 ; Canal 35
DW $5525 ; Canal 36
DW $5537 ; Canal 37
DW $555A ; Canal 38
DW $5562 ; Canal 39
DW $5575 ; Canal 40
DW $5587 ; Canal 41
DW $56AA ; Canal 42
DW $5612 ; Canal 43
DW $5625 ; Canal 44
DW $5637 ; Canal 45
DW $565A ; Canal 46
DW $5662 ; Canal 47
DW $5675 ; Canal 48
DW $5687 ; Canal 49
DW $57AA ; Canal 50
DW $5712 ; Canal 51
DW $5725 ; Canal 52
DW $5737 ; Canal 53
DW $575A ; Canal 54
DW $5762 ; Canal 55
DW $5775 ; Canal 56
DW $5787 ; Canal 57
ORG $0200
VHFPRG
DB $00 ; C0:144.450
DB $01 ; C1:144.475
DB $02 ; C2:144.500
DB $03 ; C3:144.5125
DB $04 ; C4:144.525
DB $05 ; C5:144.5375
DB $06 ; C6:144.550
DB $07 ; C7:144.5625
DB $08 ; C8:144.575
DB $09 ; C9:144.5875
DB $0A ; C10:144.600
DB $0B ; C11:144.700
DB $0C ; C12:145.200
DB $0D ; C13:145.2125
DB $0E ; C14:145.225
DB $0F ; C15:145.2375
DB $10 ; C16:145.250
DB $11 ; C17:145.2625
DB $12 ; C18:145.300
DB $13 ; C19:145.3125
DB $94 ; C20:145.325 RELAIS
DB $15 ; C21:145.3375
DB $96 ; C22:145.350 RELAIS
DB $17 ; C23:145.3625
DB $98 ; C24:145.375 RELAIS
DB $19 ; C25:145.3875
DB $9A ; C26:145.400 RELAIS
DB $1B ; C27:145.4125
DB $9C ; C28:145.425 RELAIS
DB $1D ; C29:145.4375
DB $1E ; C30:145.450
DB $1F ; C31:145.4625
DB $20 ; C32:145.475
DB $21 ; C33:145.4875
DB $22 ; C34:145.500
DB $23 ; C35:145.5125
DB $24 ; C36:145.525
DB $25 ; C37:145.5375
DB $26 ; C38:145.550
DB $27 ; C39:145.5625
DB $28 ; C40:145.575
DB $29 ; C41:145.5875
DB $AA ; C42:145.600 RELAIS
DB $AB ; C43:145.6125 RELAIS
DB $AC ; C44:145.625 RELAIS
DB $AD ; C45:145.6375 RELAIS
DB $AE ; C46:145.650 RELAIS
DB $AF ; C47:145.6625 RELAIS
DB $B0 ; C48:145.675 RELAIS
DB $B1 ; C49:145.6875 RELAIS
DB $B2 ; C50:145.700 RELAIS
DB $B3 ; C51:145.7125 RELAIS
DB $B4 ; C52:145.725 RELAIS
DB $B5 ; C53:145.7375 RELAIS
DB $B6 ; C54:145.750 RELAIS
DB $B7 ; C55:145.7625 RELAIS
DB $B8 ; C56:145.775 RELAIS
DB $B9 ; C57:145.7875 RELAIS
UHFLST1 ;Ici, la sequence de programmation suit
;la chaine de comparaison
DW $15AA ;C0 : 1291.500 S
DW $C915
DW $C915
DW $0000
DW $00FF
DW $1525 ;C1 : 1291.525 S
DW $C915
DW $C915
DW $2500
DW $00FF
DW $155A ;C2 : 1291.550 S
DW $C915
DW $C915
DW $5000
DW $00FF
DW $1575 ;C3 : 1291.575 S
DW $C915
DW $C915
DW $7500
DW $00FF
DW $16AA ;C4 : 1291.600 S
DW $C916
DW $C916
DW $0000
DW $00FF
DW $1625 ;C5 : 1291.625 S
DW $C916
DW $C916
DW $2500
DW $00FF
DW $165A ;C6 : 1291.650 S
DW $C916
DW $C916
DW $5000
DW $00FF
DW $1675 ;C7 : 1291.675 S
DW $C916
DW $C916
DW $7500
DW $00FF
DW $17AA ;C8 : 1291.700 S
DW $C917
DW $C917
DW $0000
DW $00FF
DW $1725 ;C9 : 1291.725 S
DW $C917
DW $C917
DW $2500
DW $00FF
DW $175A ;C10 : 1291.750 S
DW $C917
DW $C917
DW $5000
DW $00FF
DW $1775 ;C11 : 1291.775 S
DW $C917
DW $C917
DW $7500
DW $00FF
DW $18AA ;C12 : 1291.800 S
DW $C918
DW $C918
DW $0000
DW $00FF
DW $1825 ;C13 : 1291.825 S
DW $C918
DW $C918
DW $2500
DW $00FF
DW $185A ;C14 : 1291.850 S
DW $C918
DW $C918
DW $5000
DW $00FF
DW $1875 ;C15 : 1291.875 S
DW $C918
DW $C918
DW $7500
DW $00FF
DW $19AA ;C16 : 1291.900 S
DW $C919
DW $C919
DW $0000
DW $00FF
DW $1925 ;C17 : 1291.925 S
DW $C919
DW $C919
DW $2500
DW $00FF
DW $195A ;C18 : 1291.950 S
DW $C919
DW $C919
DW $5000
DW $00FF
ORG $0300
UHFLST2
DW $1975 ;C19 : 1291.975 S
DW $C919
DW $C919
DW $7500
DW $00FF
DW $75AA ;C20 : 1297.500 S
DW $C975
DW $C975
DW $0000
DW $00FF
DW $7525 ;C21 : 1297.525 S
DW $C975
DW $C975
DW $2500
DW $00FF
DW $755A ;C22 : 1297.550 S
DW $C975
DW $C975
DW $5000
DW $00FF
DW $7575 ;C23 : 1297.575 S
DW $C975
DW $C975
DW $7500
DW $00FF
DW $7475 ;C24 : 1297.475 R (RM19) ;v1.01 1997.600 est inutile, remplace par RM19 omis en
v1.00
DW $C974
DW $C914
DW $7500
DW $01FF
DW $7625 ;C25 : 1297.625 S
DW $C976
DW $C976
DW $2500
DW $00FF
DW $765A ;C26 : 1297.650 S
DW $C976
DW $C976
DW $5000
DW $00FF
DW $7675 ;C27 : 1297.675 S
DW $C976
DW $C976
DW $7500
DW $00FF
DW $77AA ;C28 : 1297.700 S
DW $C977
DW $C977
DW $0000
DW $00FF
DW $7725 ;C29 : 1297.725 S
DW $C977
DW $C977
DW $2500
DW $00FF
DW $775A ;C30 : 1297.750 S
DW $C977
DW $C977
DW $5000
DW $00FF
DW $7775 ;C31 : 1297.775 S
DW $C977
DW $C977
DW $7500
DW $00FF
DW $78AA ;C32 : 1297.800 S
DW $C978
DW $C978
DW $0000
DW $00FF
DW $7825 ;C33 : 1297.825 S
DW $C978
DW $C978
DW $2500
DW $00FF
DW $785A ;C34 : 1297.850 S
DW $C978
DW $C978
DW $5000
DW $00FF
DW $7875 ;C35 : 1297.875 S
DW $C978
DW $C978
DW $7500
DW $00FF
DW $79AA ;C36 : 1297.900 S
DW $C979
DW $C979
DW $0000
DW $00FF
DW $7925 ;C37 : 1297.925 S
DW $C979
DW $C979
DW $2500
DW $00FF
DW $795A ;C38 : 1297.950 S
DW $C979
DW $C979
DW $5000
DW $00FF
DW $7975 ;C39 : 1297.975 S
DW $C979
DW $C979
DW $7500
DW $00FF
DW $7AAA ;C40 : 1297.000 R (RM0)
DW $C970
DW $C910
DW $0000
DW $01FF
DW $7A25 ;C41 : 1297.025 R (RM1)
DW $C970
DW $C917
DW $2500
DW $01FF
DW $7A5A ;C42 : 1297.050 R (RM2)
DW $C970
DW $C910
DW $5000
DW $01FF
DW $7A75 ;C43 : 1297.075 R (RM3)
DW $C970
DW $C910
DW $7500
DW $01FF
ORG $0400
UHFLST3
DW $71AA ;C44 : 1297.100 R (RM4)
DW $C971
DW $C911
DW $0000
DW $01FF
DW $7125 ;C45 : 1297.125 R (RM5)
DW $C971
DW $C911
DW $2500
DW $01FF
DW $715A ;C46 : 1297.150 R (RM6)
DW $C971
DW $C911
DW $5000
DW $01FF
DW $7175 ;C47 : 1297.175 R (RM7)
DW $C971
DW $C911
DW $7500
DW $01FF
DW $72AA ;C48 : 1297.200 R (RM8)
DW $C972
DW $C912
DW $0000
DW $01FF
DW $7225 ;C49 : 1297.225 R (RM9)
DW $C972
DW $C912
DW $2500
DW $01FF
DW $725A ;C50 : 1297.250 R (RM10)
DW $C972
DW $C912
DW $5000
DW $01FF
DW $7275 ;C51 : 1297.275 R (RM11)
DW $C972
DW $C912
DW $7500
DW $01FF
DW $73AA ;C52 : 1297.300 R (RM12)
DW $C973
DW $C913
DW $0000
DW $01FF
DW $7325 ;C53 : 1297.325 R (RM13)
DW $C973
DW $C913
DW $2500
DW $01FF
DW $735A ;C54 : 1297.350 R (RM14)
DW $C973
DW $C913
DW $5000
DW $01FF
DW $7375 ;C55 : 1297.375 R (RM15)
DW $C973
DW $C913
DW $7500
DW $01FF
DW $74AA ;C56 : 1297.400 R (RM16)
DW $C974
DW $C914
DW $0000
DW $01FF
DW $7425 ;C57 : 1297.425 R (RM17)
DW $C974
DW $C914
DW $2500
DW $01FF
DW $745A ;C58 : 1297.450 R (RM18)
DW $C974
DW $C914
DW $5000
DW $01FF
DW $22AA ;C59 : 1242.200 R (RS8) ;RS8 ajoute en v1.01
DW $C422 ;RS 8 shift 28MHz: RX 1242.200 TX 1270.200
DW $C702
DW $0000
DW $01FF
ORG $0500 ;origine du programme principal
DEBUT
CLRA ;Init du timer
STA TCR ;Pas de fonction Capture/compare
;Init des ports
STA ADDR ;Port A en entre (decodeurs DTMF)
LDA #$FF
STA BDDR ;Port B en sortie (TRX VHF)
LDA #$73
STA CDDR ;Port C: 7 E Slection DTMF
; 6 S Forcage relais
; 5 S Validation en TX des intercoms UHF 70cm
; 4 S Selection it UHF: RU11=0/RU3=1
; 3 E Squelch VHF
; 2 E Squelch 23cm
; 1 S Signal telegraphique
; 0 S Activation RX des intercoms UHF 70cm
CLRA
STA ADATA
STA BDATA
STA CDATA
LDA #$18
STA SCR1 ; Init de l'interface SCI (intercom CAT 23cm)
CLRA ; M=1 (9bits pour 2 bits de stop)
STA SCR2 ; Aucune interruption autorisee sur le SCI
LDA #$31
STA SBRR ; Init de la vitesse de transmission: 4808 bauds. (Osc= 4MHz)
CLRA
STA $000A ; Aucune interruption autorisee sur le SPI
JSR WAIT100
JSR WAIT100
JSR WAIT100
CLRA
STA TMPTX ; Mise en service du CAT du FT912 (00:00:00:00/00)
JSR SNDCAT ;
JSR SNDCAT ;
JSR SNDCAT ;
JSR SNDCAT ;
JSR SNDCAT ;
JSR WAIT100 ;Attente 100ms
JSR WAIT100
JSR WAIT100
JSR WAIT100
JSR PROG23 ; Programme la frequence de veille 23cm
JSR WAIT100 ; attente 100ms
CLRA ; Bascule le FT912 en Hi-Pwr (00:00:00:00/F8)
STA TMPTX
JSR SNDCAT
JSR SNDCAT
JSR SNDCAT
JSR SNDCAT
LDA #$F8
STA TMPTX
JSR SNDCAT
JSR WAIT100 ;attente 100ms
LDX #ETAT
CLR ,X
LOOPINITRAM
INCX
CLR ,X
CPX #TMP
BNE LOOPINITRAM
CLI ; Autorisation des interruptions externes (DTMF)
BSET 6,CDATA ; Forcage
JSR TRAIT ; La logique intercom est prete
JSR TRAIT ; Passage de "OK"
JSR TRAIT
JSR ESPACE
JSR TRAIT
JSR POINT
JSR TRAIT
BCLR 6,CDATA ; Fin de forcage
MAIN ; Boucle principale
BRSET 7,DDATA,RU24O ; Va a RU24O si le relais est ouvert !!!NIVEAU
JSR PROG23
BCLR 1,ETVI23 ; RAZ depassement temps 23cm (relais ferme)
BCLR 7,ETVI23
BCLR 7,ETVI2M ; Reinit de tous les intercoms (RAM)
BCLR 7,ETVI70
BCLR 7,ETAT
BCLR 6,ETAT
BCLR 7,BDATA
BCLR 0,CDATA ; Reinit de tous les intercoms (Hard)
BCLR 6,CDATA ; Devalidation incoditionnelle du forcage
BRCLR 2,CDATA,MAIN ; Va a MAIN si le squelch 23cm est ferme !!!NIVEAU
SQ23O ; Le squelch 23cm est ouvert.
BRSET 0,ETVI23,MAIN ; Retourne a MAIN si l'intercom 23cm est interdit
BRSET 0,ETAT,MAIN ; Retourne a MAIN si l'intercom est interdit
BRSET 1,ETVI23,MAIN ; Retourne a MAIN si l'intercom 23 a depasse 10mn
BRSET 7,DDATA,MAIN ; continue si le relais est toujours ferme !!!NIVEAU
JSR VAL23
BSET 6,CDATA ; Valide le bit de forcage RU24
LDA #$FF
STA CPT01
LDA #18
STA CPT02
LDA TRH
DECA
STA CPTLO1
SQ23O1
LDA TRH ;Temps de parole limite a 18x255x0.13s # 9.9mn
CMP CPTLO1
BNE TESTSQ23
DEC CPT01
BNE TESTSQ23
DEC CPT02
BNE TESTSQ23
JSR POINT
JSR POINT
JSR POINT
JSR POINT
JSR ESPACE
JSR POINT
JSR POINT
BCLR 6,CDATA ; Devalide le forcage
JSR RAZINTER
JMP MAIN
TESTSQ23
BRSET 2,CDATA,SQ23O1 ; Le squelch est toujours ouvert: retour a SQ2301 et decompte du
temps
BCLR 6,CDATA ; Devalide de forcage
BRA MAIN
RU24O
BRCLR 7,DDATA,MAIN ;Si le relais est ferme, on revient a MAIN
BCLR 6,CDATA ;Arret inconditionnel du forcage
LDA INTERC
BEQ NODTMF ;Pas de codes intercom recus: on passe a la suite
JSR ANAPROG ;Sinon, on va au sous-programme analyse et programmation de l'intercom
NODTMF
BRCLR 7,ETVI2M,NOIT2M ; Si l'intercom 2m n'est pas valide, on passe ce qui suit
; Intecom 2m valide
LOOPTX2M
BRSET 2,DDATA,SQRELFER ; Si le squelch relais est ferme: RX sur le TRX VHF
BRCLR 6,ETAT,SQRELFER
BSET 6,BDATA ; Active le PTT VHF
BRSET 7,DDATA,LOOPTX2M ; tant que le relais et son squelch sont ouverts: TX VHF
SQRELFER
BCLR 6,BDATA ; Desactive le PTT VHF
BRCLR 3,CDATA,RU24O ; Si le squelch VHF est ferme, on reboucle !!!NIVEAU
BSET 6,CDATA ; Le squelch VHF est ouvert: on active le forcage
LDA #$FF
STA CPT01
LDA #$13
STA CPT02
LDA TRH
DECA
STA CPTLO1
SQ2MO1
LDA TRH
CMP CPTLO1
BNE TESTSQ2M
DEC CPTLO1
DEC CPT01
BNE TESTSQ2M
DEC CPTLO1
DEC CPT02 ;Si est a 0 ici, c'est que la voie intercom n'est pas
LDA CPT02
CMP #$02 ; Si on est a 1 mn de la fin
BNE TESTSUIV ; on previent l'utilisateur de la coupure imminente !
JSR ALERTE ;
TESTSUIV
LDA CPT02
BNE TESTSQ2M ;passee en emission depuis 10mn
JSR POINT
JSR POINT
JSR POINT
JSR POINT
JSR ESPACE
JSR POINT
JSR POINT
BCLR 6,CDATA ;devalide le forcage
JSR RAZINTER
JMP MAIN
TESTSQ2M
BRCLR 2,DDATA,RU24O ; le squelch relais est ouvert: retour a RU24O
BRSET 3,CDATA,SQ2MO1 ; le squelch VHF est toujours ouvert: reour en boucle
; et decompte du temps
JSR ATT1S ;v1.01
JSR POINT
JSR POINT ;passge de 'V' 1s apres la retombee du squelch VHF
JSR POINT
JSR TRAIT
BCLR 6,CDATA ;Fin du forcage
JMP RU24O
NOIT2M ; Pas d'intercom 2m, peut-etre intercom 23cm ??
BRSET 7,ETVI23,SUIT ; Si l'intercom 23cm n'est pas valide, on passe ce qui suit
JMP NOIT23 ; (bidouille)
SUIT ;INTERCOM 23cm VALIDE
BRSET 2,DDATA,SQRELFE2 ; Si le squelch relais est ferme: RX sur le FT912
BRCLR 6,ETAT,SQRELFE2 ; si l'emission n'est pas validee: pareil !
SEI ; Interdication des interruptions pendant la
LDA TX23HH ; sequence de programmation
STA TMPTX
JSR SNDCAT ; programmation de la frequnce d'emission sur le CAT
LDA TX23HL ; (HH:HL:LH:LL/01)
STA TMPTX
JSR SNDCAT
LDA TR23LH
STA TMPTX
JSR SNDCAT
LDA TR23LL
STA TMPTX
JSR SNDCAT
LDA #$01
STA TMPTX
JSR SNDCAT ; fin de la programmation de la frequence
BSET 5,ETAT ; indique que la frequance rx est a programmer
JSR WAIT100 ;attente 100ms
SNDTXCAT
CLRA
STA TMPTX
JSR SNDCAT
JSR SNDCAT
JSR SNDCAT
JSR SNDCAT
LDA #$08
STA TMPTX
JSR SNDCAT ; passage en emission
JSR WAIT100 ; attente 100ms
JSR WAIT100
CLI ; autorisation des interruptions
LOOPTX23
BRSET 2,DDATA,SQRELFE2 ; si squelch ferme: on arrete la transmission.
BRSET 7,DDATA,SNDTXCAT ; tant que le relais est ouvert, on retransmet.
SQRELFE2
BRCLR 5,ETAT,SKIPRX
SEI ; masquage des interruptions pendant la sequence de programmation
CLRA
STA TMPTX
JSR SNDCAT
JSR SNDCAT
JSR SNDCAT
JSR SNDCAT ; passage en mode reception
LDA #$88
STA TMPTX
JSR SNDCAT
JSR WAIT100 ;attente 100ms
LDA RX23HH
STA TMPTX
JSR SNDCAT
LDA RX23HL
STA TMPTX
JSR SNDCAT
LDA TR23LH
STA TMPTX ; reprogrammation de la frequence reception
JSR SNDCAT
LDA TR23LL
STA TMPTX
JSR SNDCAT
LDA #$01
STA TMPTX
JSR SNDCAT
JSR WAIT100 ;attente 100ms
BCLR 5,ETAT
CLI ;autorisation des interruptions
SKIPRX
BRSET 2,CDATA,SUITE ; Si le squelch 23cm est ferme, on reboucle a RU24O
JMP RU24O ; (bidouille)
SUITE
BSET 6,CDATA ; le squelch 23cm est ouvert: forcage
LDA #$FF
STA CPT01
LDA #$13
STA CPT02
LDA TRH
DECA
STA CPTLO1
SQ23O2
LDA TRH
CMP CPTLO1
BNE TESTS23
DEC CPTLO1
DEC CPT01
BNE TESTS23
DEC CPTLO1
DEC CPT02
LDA CPT02
CMP #$02
BNE TESTSUIV23
JSR ALERTE
TESTSUIV23
LDA CPT02
BNE TESTS23 ;si on est a 0 ici, c'est qu'on n'est pas passe en
JSR POINT ;emission intercom depuis 10mn
JSR POINT
JSR POINT
JSR POINT
JSR ESPACE
JSR POINT
JSR POINT
BCLR 6,CDATA ;Fin du forcage
BSET 1,ETVI23 ;indique un depassement temps
JSR PROG23 ;reprogramme la voie 23cm sur sa frequence de veille
JMP MAIN ;retourne a la boucle principale
TESTS23 ;test de squelch 23cm
BRSET 2,DDATA,SUI ;si le squelch relais est ouvert, retour a RU24O
JMP RU24O ; (bidouille)
SUI
BRSET 2,CDATA,SQ23O2 ; le squelch 23cm est toujours ouvert: retour a SQ23O2
; et decompte du temps
JSR ATT1S ; v1.01 passage de 'U' 1 seconde
JSR POINT ; apres la retombee du squelch 23cm
JSR POINT
JSR TRAIT
BCLR 6,CDATA ; arret du forcage
JMP RU24O ; retour a RU24O
NOIT23 ;pas d'intercom23cm, peut-etre une interconnexon 70cm ?
BRCLR 7,ETVI70,NOIT70
LOOPTX70
BRSET 2,DDATA,SQRELFER0 ; Si le squelch relais est ferme: pas d'activation TX
BRCLR 6,ETAT,SQRELFER0 ; sur la voie 70cm
BSET 5,CDATA ;v1.02 : activation du bit 5 de cdata comme un ptt
BRSET 7,DDATA,LOOPTX70 ;s l'intercom 70cm est valid TX
SQRELFER0
BCLR 5,CDATA
JMP RU24O
NOIT70 ;aucun intercom actif
BRCLR 2,CDATA,SU
JSR VAL23
SU
JMP RU24O
PROG23
LDA #$C9
STA RX23HH
STA TX23HH
LDA #$76 ; Mise en memoire des arguments CAT de cette voie
STA TX23HL
STA RX23HL
CLRA
STA TR23LH
STA TR23LL
CLRA ; Force le RX
STA TMPTX
JSR SNDCAT
JSR SNDCAT
JSR SNDCAT
JSR SNDCAT
LDA #$88 ; (00:00:00:00/88)
STA TMPTX
JSR SNDCAT
JSR WAIT100 ;attente 100ms
LDA #$C9 ; Programmation de la frequence de veille 1297.600
STA TMPTX ; (C9:16:00:00/01)
JSR SNDCAT
LDA #$76
STA TMPTX
JSR SNDCAT
CLRA
STA TMPTX
JSR SNDCAT
JSR SNDCAT
LDA #$01
STA TMPTX
JSR SNDCAT
;ici, wait100 est appele par le programme principal
RTS
DTMFIRQ ; Sous programme d'acquisition des codes DTMF (IRQ Externe)
; ---------------------------------------------------------
; JSR POINT
; JSR ESPACE
; LDA INTERC
; INCA
; STA CPTLO4
;LBLTST
; JSR POINT
; DEC CPTLO4
; BNE LBLTST
BRSET 7,CDATA,INTERCOM ; C'est un code telcommande qui a ete recu !
JMP TELECOM
INTERCOM
LDA INTERC ; Si le compteur de codes intercom est a 0
CMP #$0
BNE LBL00 ; Il faut initialiser l'index
LDX #INTER0 ; sur la premiere case (INTER0)
STX INTERX
LBL00
LDX INTERX
LDA INTERC
CMP #$04 ; 4 codes intercom ont deja ete recus: erreur !
BEQ INTEERR
LDA INTERC ; Incrementation du compteur codes intercom
INCA
STA INTERC
LDA ADATA ; Lecture et mise en forme code DTMF
AND #$0F ; On garde la partie 1248 du mot
STA TMP ; stockage temporaire avant mise en forme
BRCLR 0,TMP,IBIT1
BSET 7,TMP
IBIT1
BRCLR 1,TMP,IBIT2
BSET 6,TMP
IBIT2
BRCLR 2,TMP,IBIT3
BSET 5,TMP
IBIT3
BRCLR 3,TMP,IFIN
BSET 4,TMP
IFIN
LDA TMP
AND #$F0
RORA
RORA ;Mise en forme terminee
RORA
RORA
AND #$0F
STA ,X ; Mise en place du code dans la case correspondante
CMP #$0C ; v1.01 systeme de coupure des PTT des la reception de #0
BNE NODIESE ; memorisation de la reception du # si c'est le premier
LDA INTERC ; code DTMF recu sur une ouverture de squelch
CMP #$01 ;
BNE NODIESE
BSET 4,ETAT ; bit 4 de etat a 1=1er code = #
BRA SKIPNOZERO
NODIESE
LDA INTERC ; v1.01
CMP #$02
BNE NOZERO
LDA ,X
CMP #$0A
BNE NOZERO
BRCLR 4,ETAT,NOZERO
JSR STOPPTT
NOZERO
BCLR 4,ETAT ; v1.01 RAZ du flag '# en position 1'
SKIPNOZERO
INCX ; Incrmentation de l'index de case
STX INTERX
JMP FINIRQ ; retour au programme principal
INTEERR ; Erreur: 4 codes maxi par ouverture de squelch !!
LDX #INTER0 ; RAZ de l'index et du compteur intercom
STX INTERX
CLR INTERC
ATTFSQ ; Attente de fermeture du squelch relais
BRCLR 2,DDATA,ATTFSQ ; avant de passer l'erreur. !!!NIVEAU
JSR POINT
JSR POINT
JSR POINT
JSR POINT
JSR ESPACE
JSR POINT
JSR POINT
JMP FINIRQ
TELECOM ; Acquisition telecommande
LDA TELECC ; Si aucun code n'a ete recu auparavant, il faut initialier
BNE LBL01 ; l'index des cases telecom (TELEC0)
LDX TELEC0
STX TELECX
LBL01
LDX TELECX
LDA TELECC ; Incrementation du compteur de codes telecom
INCA
STA TELECC
LDA ADATA
AND #$F0
STA TMP
BRCLR 7,TMP,TBIT6
BSET 0,TMP
TBIT6
BRCLR 6,TMP,TBIT5
BSET 1,TMP ;Miroir
TBIT5
BRCLR 5,TMP,TBIT4
BSET 2,TMP
TBIT4
BRCLR 4,TMP,TFIN
BSET 3,TMP
TFIN
LDA TMP
AND #$0F ;fin de la mise en forme
STA ,X
INCX ;stockage et increment de l'index telecom
STX TELECX
LDA TELECC
CMP #$04
BNE LBLSU
JSR ANATEL
LBLSU
JSR TRAIT ; Accuse reception du digit de telecom
FINIRQ ;attente du retour a 1 de la broche IRQ (connecte a PD5)
BRCLR 5,DDATA,FINIRQ
RTI
; Fin du sous programme d'interruption
;-------------------------------------
ANAPROG ; sous programme d'analyse et de programmation intercom
;------------------------------------------------------
BRCLR 2,DDATA,ANAPROG ;Attente de la retombee du squelch relais
BSET 6,CDATA ;v1.01 Forcage empechant le passage du K
JSR ATT1S ;v1.01 attente 1s avant accuse reception
LDA INTERC
CMP #$04
BEQ TEST4
JMP TEST2
TEST4
LDA INTER0
CMP #3 ;v 1.01 dtecteur de boucle
BEQ TESTBOUCL
LDA INTER0
CMP #1
BEQ PRG23I ; debut du code par 1 =>23cm ou itx RU11R
LDA INTER0
CMP #$0A
BEQ PRGRU3 ; debut du code intercom=0 => 70cm
LDA INTER0
CMP #4 ; debut du code par 4 =>2m
BEQ PRGVHF
LDA INTER0
CMP #5 ; debut du code par 5 =>2m
BEQ PRGVHF
LDA INTER0
CMP #7
BEQ PRG23I ; debut du code par 7 =>23cm
LDA INTER0
CMP #2
BEQ PRG23I ; v1.01 mise a jour pour rs8 (debut du code par 2)
JMP ERROR
PRG23I
JMP PRG23
ERRORI
JMP ERROR
TESTBOUCL ; v1.01 si on entend 3200, on rinitialise intercom !!
LDA INTER1
CMP #2
BNE ERRORI
LDA INTER2
CMP #$0A
BNE ERRORI
CMP #$0A
BNE ERRORI
JMP RAZINTER
PRGRU3
BRCLR 6,ETAT,OK70 ; n'effectue la programmation que si aucune operation
CLR INTERC ; intercom est en cours
BCLR 6,CDATA ; v1.01 stop forcage
RTS ; reinit du nb de codes intercom et rts
OK70
BSET 3,ETAT ;v1.01 reset intercom avant programmation
JSR RAZINTER
LDA INTER1
CMP #$0A
BNE ERRORI
LDA INTER2
CMP #7
BNE ERRORI
LDA INTER3
CMP #5
BNE ERRORI
BSET 7,ETVI70 ; intercom 70 cm actif
BSET 4,CDATA ; mise a 1 de l'indicateur de selection UHF
BSET 0,CDATA ; valide la sortie intercom 70cm actif
CLR INTERC ;RAZ du nb de codes intercom recus
JSR POINT
JSR TRAIT
JSR POINT
BCLR 6,CDATA
RTS
PRGVHF
JSR ESPACE
BRCLR 6,ETAT,OK2M ; autorise la programmation 2m uniquement si aucune
CLR INTERC ; op intercom est en cours
BCLR 6,CDATA
RTS ; et retour au PP
OK2M
BSET 3,ETAT ; v1.01 raz de l'intercom avant programmation
JSR RAZINTER
CLR DECAL ; mise a 0 du decalage programmation
LDA INTER0
ROLA
ROLA
ROLA
ROLA
AND #$F0
ORA INTER1
STA OCTCMP1 ; mise en forme des mots de comparaison
LDA INTER2
ROLA
ROLA
ROLA
ROLA
AND #$F0
ORA INTER3
STA OCTCMP2
CLRX ;init de l'index pour une prg indxd 8bits offset
LOOPCMP
LDA DECAL
CMP #$49 ; detection d'erreur: 58 canaux VHF maxi !!!
BEQ ERROR
LDA VHFCMP,X
CMP OCTCMP1 ; comparaison de la premiere partie de la combinaison
BEQ T2
INCX
INCX
INC DECAL
BRA LOOPCMP
T2
INCX
LDA VHFCMP,X
CMP OCTCMP2
BEQ PROGVOK ; les deux comparaisons sont OK => programmation !
INCX
INC DECAL
BRA LOOPCMP
PROGVOK
CLRX ;reinit du registre d'index.
PRGLOOP
LDA DECAL ; decrementation de l'offset jusqu'a ce que X pointe
BEQ PRGVEFF ; le mot de programmation
DEC DECAL
INCX
BRA PRGLOOP
PRGVEFF
LDA VHFPRG,X ; A correspond au mot de programmation
STA MAP
BCLR 0,BDATA
BRCLR 0,MAP,VBIT1
BSET 0,BDATA
VBIT1
BCLR 1,BDATA
BRCLR 1,MAP,VBIT2
BSET 1,BDATA
VBIT2
BCLR 2,BDATA
BRCLR 2,MAP,VBIT3
BSET 2,BDATA
VBIT3
BCLR 3,BDATA
BRCLR 3,MAP,VBIT4
BSET 3,BDATA
VBIT4
BCLR 4,BDATA
BRCLR 4,MAP,VBIT5
BSET 4,BDATA
VBIT5
BCLR 5,BDATA
BRCLR 5,MAP,VFINPRG
BSET 5,BDATA
VFINPRG
CLR INTERC ; remise a zero du nombre de codes intercom recus
BSET 7,ETVI2M ;signale une operation intercom en cours sur 2m
BSET 7,ETAT ; signale une operation intercom en cours
BSET 7,BDATA
LDA VHFPRG,X
AND #$80
CMP #$80
BEQ RELAIS2M
JSR POINT
JSR POINT ; passe 's'
JSR POINT
BCLR 6,CDATA
RTS
RELAIS2M
JSR POINT
JSR TRAIT
JSR POINT
BCLR 6,CDATA
RTS
ERROR ;erreur de canal
CLR INTERC ;raz du nb de codes intercom recus
JSR POINT
JSR POINT
JSR POINT
JSR POINT
JSR ESPACE
JSR POINT
JSR POINT
BCLR 6,CDATA
RTS
PRG23 ;analyse et programmation des canaux 23cm
BRCLR 6,ETAT,OK23 ; programmation 23cm si aucun intercom n'est valide
CLR INTERC ; reinit du nb de codes recus
BCLR 6,CDATA
RTS ; et reour au pp
OK23
BSET 3,ETAT ; v1.01 RAZ INTERCOM AVANT NOUVELLE PROGRAMMATION
JSR RAZINTER
LDA INTER1 ; v1.01 interconnexion RU11R ?
CMP #$8
BNE NORU11
LDA INTER2
CMP #$7
BNE NORU11
LDA INTER3
CMP #$5
BNE NORU11
JMP PRGRU11
NORU11
LDA INTER0
ROLA
ROLA
ROLA
ROLA
AND #$F0
ORA INTER1
STA OCTCMP1
LDA INTER2
ROLA ;mise en forme des mots de comparaison
ROLA
ROLA
ROLA
AND #$F0
ORA INTER3
STA OCTCMP2
CLRX
PG23LOOP1
CMPX #$FF
BNE PG23LOP1
JMP PG23TEST2
PG23LOP1
LDA UHFLST1,X
CMP OCTCMP1 ;comparaison
BNE NXT23
INCX
LDA UHFLST1,X
CMP OCTCMP2
BEQ PRG23OK
NXT23
INCX
CMPX #$FF
BEQ PG23LOOP1
LDA UHFLST1,X
CMP #$FF ;detection de la donnee suivante (separee par $FF)
BNE NXT23
INCX
BRA PG23LOOP1
PRG23OK
INCX
LDA UHFLST1,X
STA RX23HH
INCX
LDA UHFLST1,X
STA RX23HL
INCX
LDA UHFLST1,X
STA TX23HH ;recuperation des donnees CAT
INCX
LDA UHFLST1,X
STA TX23HL ;la programmation CAT effective se fait en RU24O
INCX
LDA UHFLST1,X
STA TR23LH
INCX
LDA UHFLST1,X
STA TR23LL
BSET 7,ETVI23 ; operation intercom 23cm en cours
BSET 7,ETAT ; operation intercom en cours
BSET 5,ETAT ;indique que la frequence RX est a programmer
CLR INTERC ; raz du nb de codes intercom recus
INCX
LDA UHFLST1,X
AND #$01
CMP #$01
BEQ RELAIS23
JSR POINT
JSR POINT
JSR POINT
BCLR 6,CDATA
RTS
RELAIS23
JSR POINT
JSR TRAIT
JSR POINT
BCLR 6,CDATA
RTS
PG23TEST2
CLRX
PG23LOOP2
CMPX #$FF
BNE PG23LOP2
JMP PG23TEST3
PG23LOP2
LDA UHFLST2,X
CMP OCTCMP1 ;comparaison
BNE NXT232
INCX
LDA UHFLST2,X
CMP OCTCMP2
BEQ PRG23OK2
NXT232
INCX
CMPX #$FF
BEQ PG23LOOP2
LDA UHFLST2,X
CMP #$FF ;detection de la donnee suivante (separee par $FF)
BNE NXT232
INCX
BRA PG23LOOP2
PRG23OK2
INCX
LDA UHFLST2,X
STA RX23HH
INCX
LDA UHFLST2,X
STA RX23HL
INCX
LDA UHFLST2,X
STA TX23HH ;recuperation des donnees CAT
INCX
LDA UHFLST2,X
STA TX23HL ;la programmation CAT effective se fait en RU24O
INCX
LDA UHFLST2,X
STA TR23LH
INCX
LDA UHFLST2,X
STA TR23LL
BSET 7,ETVI23 ; operation intercom 23cm en cours
BSET 7,ETAT ;operation inntercom en cours
BSET 5,ETAT ; indique que la frequence RX est a programmer
CLR INTERC ; raz du nb de codes intercom recus
INCX
LDA UHFLST2,X
AND #$01
CMP #$01
BEQ RELAIS232
JSR POINT
JSR POINT
JSR POINT
BCLR 6,CDATA
RTS
RELAIS232
JSR POINT
JSR TRAIT
JSR POINT
BCLR 6,CDATA
RTS
PG23TEST3
CLRX
PG23LOOP3
CMPX #$FF
BNE PG23LOP3
JMP ERROR
PG23LOP3
LDA UHFLST3,X
CMP OCTCMP1 ;comparaison
BNE NXT233
INCX
LDA UHFLST3,X
CMP OCTCMP2
BEQ PRG23OK3
NXT233
INCX
CMPX #$FF
BEQ PG23LOOP3
LDA UHFLST3,X
CMP #$FF ;detection de la donnee suivante (separee par $FF)
BNE NXT233
INCX
BRA PG23LOOP3
PRG23OK3
INCX
LDA UHFLST3,X
STA RX23HH
INCX
LDA UHFLST3,X
STA RX23HL
INCX
LDA UHFLST3,X
STA TX23HH ;recuperation des donnees CAT
INCX
LDA UHFLST3,X
STA TX23HL ;la programmation CAT effective se fait en RU24O
INCX
LDA UHFLST3,X
STA TR23LH
INCX
LDA UHFLST3,X
STA TR23LL
BSET 7,ETVI23 ; operation intercom 23cm en cours
BSET 7,ETAT ;operation intercom en cours
BSET 5,ETAT ;indique que la frequence rx est a programmer
CLR INTERC ; raz du nb de codes intercom recus
INCX
LDA UHFLST3,X
AND #$01
CMP #$01
BEQ RELAIS233
JSR POINT
JSR POINT
JSR POINT
BCLR 6,CDATA
RTS
RELAIS233
JSR POINT
JSR TRAIT
JSR POINT
BCLR 6,CDATA
RTS
TEST2
LDA INTERC
CMP #$02
BNE TEST1
LDA INTER0
CMP #$0C ; le caractere 1 sur 2 est il un '#'
BEQ SUTST2
JMP RETOURPP
SUTST2
LDA INTER1
CMP #$0A
BEQ RAZINTER
LDA INTER1
CMP #$04
BEQ RAZINTER
JMP ERRORJ ;si le caractere suivant n'est pas 0 => erreur.
RAZINTER
BCLR 7,ETVI70
BCLR 7,ETVI23
BCLR 7,ETVI2M
BCLR 7,ETAT
BCLR 6,ETAT
BCLR 6,BDATA ;PTT VHF off (0 logique)
BCLR 7,BDATA ;tx vhf off (0 logique)
BCLR 0,CDATA ;raz intercom 70cm v1.01
BCLR 5,CDATA ;raz validation "TX" 70cm v1.01
LDA #$C9
STA TX23HH
STA RX23HH
LDA #$76
STA TX23HL
STA RX23HL
CLR TR23LH
CLR TR23LL
JSR PROG23 ;reprogrammation de la frequence de veille 23cm
BRSET 3,ETAT,NOZ ;v1.01 reset intercom a chaque analyse valide sans 'Z'
JSR TRAIT
JSR TRAIT
JSR POINT
JSR POINT
NOZ ;v1.01
BCLR 3,ETAT ;v1.01
CLR INTERC
BCLR 6,CDATA
RTS
TEST1
BRCLR 6,ETAT,TEST1SU
BCLR 6,CDATA
RTS
TEST1SU
LDA INTERC
CMP #$01
BNE ERRORJ
CLR INTERC
LDA INTER0
CMP #$0B ; le caractere est-il un '*'
BNE RETOURPP
BRCLR 7,ETAT,val23 ; si aucun intercom est actif: erreur !
BSET 6,ETAT ; validation en emission de l'intercom
JSR TRAIT
JSR ESPACE
JSR TRAIT
JSR POINT
JSR POINT
JSR TRAIT
BCLR 6,CDATA
RTS
VAL23
BSET 7,ETAT ; valide la frequence de veille 23cm en intercom par defaut
BSET 6,ETAT ; valide l'intercom en emission
BSET 7,ETVI23 ;valide la voie 23cm
BCLR 6,CDATA
RTS
RETOURPP
BCLR 6,CDATA
RTS
ERRORJ
JMP ERROR
PRGRU11 ;programmation de l'interconnexion RU11R v1.01
BCLR 4,CDATA ; sous programme appele a partir de 23cm
BSET 7,ETVI70;Signale une opration intercom 70cm en cours
BSET 0,CDATA
JSR POINT
JSR TRAIT
JSR POINT
BCLR 6,CDATA
RTS
RTS
ANATEL ; Sous-programme d'analyse des codes de telcommande
;--------------------------------------------------
SEI ; interdit les interuptions DTMF
CLR TELECC
LDA TELEC0
CMP #$02
BEQ INTOFF
CMP #$05
BEQ VHFONOFF
CMP #$04
BEQ V23ONOFF
CMP #$07
BNE NXT1
JMP RU3ONOFF
NXT1
CMP #$09
BNE TELERR
JMP RESETLOG
TELERR ; Erreur !!!
JSR POINT
JSR ESPACE
JSR POINT
JSR TRAIT
JSR POINT
JSR ESPACE
JSR POINT
JSR TRAIT
JSR POINT
CLI
RTS
INTONOFF
LDA TELEC1
CMP #$06
BNE TELERR
LDA TELEC2
CMP #$01
BNE TELERR
LDA TELEC3
CMP #$0A
BEQ INTOFF
CMP #$01
BEQ INTON
JMP TELERR
INTOFF
BSET 0,ETAT ; 2610 interdit l'intercom general
CLI
RTS
INTON
BCLR 0,ETAT ; 2611 autorise l'intercom
CLI
RTS
VHFONOFF
LDA TELEC1
CMP #$02
BNE TELERR
LDA TELEC2
CMP #$03
BNE TELERR
LDA TELEC3
CMP #$0A
BEQ VHFOFF
CMP #$01
BEQ VHFON
JMP TELERR
VHFOFF
BSET 0,ETVI2M ; 5230 interdit l'intercom VHF
CLI
RTS
VHFON
BCLR 0,ETVI2M ; 5231 autorise l'intercom VHF
CLI
RTS
V23ONOFF
LDA TELEC1
CMP #$0A
BNE TELERR
LDA TELEC2
CMP #$05
BNE TELERR
LDA TELEC3
CMP #$0A
BEQ V23OFF
CMP #$01
BEQ V23ON
JMP TELERR
V23OFF ; 4050 interdit l'intercom 23cm
BSET 0,ETVI23
CLI
RTS
V23ON ; 4051 autorise l'intercom 23cm
BCLR 0,ETVI23
CLI
RTS
RU3ONOFF
LDA TELEC1
CMP #$01
BEQ NXT2
JMP TELERR
NXT2
LDA TELEC2
CMP #$02
BEQ NXT3
JMP TELERR
NXT3
LDA TELEC3
CMP #$05
BEQ RU3OFF
CMP #$06
BEQ RU3ON
JMP TELERR
RU3OFF ; 7125 interdit l'interconnexion RU3
BSET 0,ETVI70
CLI
RTS
RU3ON ; 7126 autorise l'interconnexion RU3
BCLR 0,ETVI70
CLI
RTS
RESETLOG
LDA TELEC1 ; 9120 reinitialise la logique
CMP #$01
BEQ NXT4
JMP TELERR
NXT4
LDA TELEC2
CMP #$02
BEQ NXT5
JMP TELERR
NXT5
LDA TELEC3
CMP #$0A
BEQ NXT6
JMP TELERR
NXT6
CLI
RSP
JMP DEBUT
SNDCAT ; Sous-programme de transmission CAT
;-----------------------------------
SEI
LDA TMPTX ; Appel du caractere a transmettre
STA SCIDR ; Logement dans le registre de donnees du SCI
BSET 3,SCR2 ; Dmarrage de la transmission
BSET 6,SCR1 ; Gnration du premier bit de stop
TESTTC
LDA SCISR
AND #$40
CMP #$40
BNE TESTTC
BCLR 3,SCR2
CLI
RTS
; Fin du sous programme CAT
;---------------------------
WAIT100 ;temporisation avant une nouvelle trame CAT
LDA #$34
STA CPTLO2
LOOPWT1 ; Temporisation avant la prochaine transmission (env 100ms)
LDA #$FF
STA CPTLO3
LOOPWT0
NOP
NOP
NOP
NOP
DEC CPTLO3
BNE LOOPWT0
DEC CPTLO2
BNE LOOPWT1
RTS
;---------------------------------------------;
; Sous programmes de generation telegraphique ;
;---------------------------------------------;
POINT ; Point: 1 revolution de timer, soit
LDA TRH ; 65536x2æs=0.13s + 1 silence equivalent
SUB #$69
STA TIMER
BSET 1,CDATA
LBL02
LDA TRH
CMP TIMER
BNE LBL02
BCLR 1,CDATA
LDA TRH
SUB #$69
STA TIMER
LBL03
LDA TRH
CMP TIMER
BNE LBL03
RTS
TRAIT ; Trait: 3 revolutions de timer,
CLRA ; soit 3x65536x2æs=0.39s + 1 silence
STA CPTLO ; equivalent a la longeur d'un point
LBL04X
LDA TRH
SUB #$69
STA TIMER
BSET 1,CDATA
LBL04
LDA TRH
CMP TIMER
BNE LBL04
LDA CPTLO
INCA
STA CPTLO
CMP #$03
BNE LBL04X
BCLR 1,CDATA
LDA TRH
SUB #$69
STA TIMER
LBL05
LDA TRH
CMP TIMER
BNE LBL05
RTS
ESPACE ; Espace: silence pendant 2 revolutions de timer
CLRA
STA CPTLO
LBL06X
LDA TRH ; (2x0.13s, soit la duree de 2 points)
SUB #$69
STA TIMER
LBL06
LDA TRH
CMP TIMER
BNE LBL06
LDA CPTLO
INCA
STA CPTLO
CMP #$03
BNE LBL06X
RTS
ALERTE ;coupure imminente de l'intercom 23cm
JSR TRAIT
JSR ESPACE
JSR ESPACE
JSR TRAIT
JSR ESPACE
JSR ESPACE
JSR TRAIT
JSR ESPACE
JSR ESPACE
JSR TRAIT
JSR ESPACE
JSR ESPACE
JSR TRAIT
RTS
STOPPTT ;v 1.01 fermeture des PTT intercom des la reception de #0
BCLR 6,BDATA ;arret du PTT VHF
CLRA
STA TMPTX
JSR SNDCAT
JSR SNDCAT
JSR SNDCAT
JSR SNDCAT
LDA #$88 ;passage en mode reception sur le FT912
STA TMPTX
JSR SNDCAT
BCLR 4,ETAT ; raz du flag '# en position 1'
ATTRETSQU ;attente de retombee du squelch relais
BRCLR 2,DDATA,ATTRETSQU
RTS
ATT1S ;v1.01 attente tempo 1s
SEI ; interdit les interruptions pendant l'attente
LDA #$0A ; 10 passages pour une attente de 1,3s environ
STA CPTLO
ATT1SL1
LDA TRH
STA TIMER
DEC TIMER
ATT1SL2
LDA TRH
CMP TIMER
BNE ATT1SL2
DEC CPTLO
BEQ FINATT1S
BRA ATT1SL1
FINATT1S
CLI
RTS
ORG $1FDF
DW $C0 ; Option register: RAM0=1;RAM1=1;IRQ actif sur un front descendant
ORG $1FF4 ; vecteurs
DW DEBUT ; interruption SPI
DW DEBUT ; interruption SCI
DW DEBUT ; interruption TIMER
DW DTMFIRQ ; interrruption externe (DTMF)
DW DEBUT ; SWI
DW DEBUT ; reset
END