;******************************************************************************

;          

;    R T X   F M   4 3 2   M h z   Y T 3 M V   M A T J A Z   V I D M A R

;          

;******************************************************************************

; Menu' # 1 = CH              -> Canali da 0 a 255. Il CH 0 disabilita la funzione  dell'encoder

; Menu' # 2 = F xxx.xxx     -> Step da 25 Khz. Dopo 40 step continui, gli steps diventano da 1 Mhz

; Menu' # 3 = S xxx.xxx     -> Step da 5 Khz

; Menu' # 4 = t xxx.xxx      -> Frequenza di trasmissione a step di 5 Khz. Dopo 10 steps continui, gli steps diventano da 100 Khz

; Menu' # 5 = VOLUME   -> Regolazione volume

; Menu' # 6 = SQELCH    -> Regolazione squelch

;******************************************************************************

;    I1KFH Sergio Brovero - 13100 Vercelli

;******************************************************************************

ORG  0

                        JP  INIT_PRG

            DEFM ' *** RTX FM 432 Mhz YT3MV Matjaz Vidmar ***'

            DEFM ' Software modificato da I1KFH Sergio Brovero ***'

INIT_PRG:      LD   SP,3FFFH

; init 8255

                        LD   A,81H

            LD   (PIO_CNT),A

                        LD   A,(0007)

LD   (PORT_A),A

LD   A,00

LD   (PORT_B),A

LD   A,00

LD   (PORT_C),A

; init CTC 8253

LD   A,36H         ;counter 0,R/L tutto,square wave gen.,binary

LD   (CTC_CNT),A

LD   A,74H         ;counter 1, R/L 16 bits, rate gen.,binary

LD   (CTC_CNT),A

LD   A,0B4H         ;counter 2, R/L 16 bits, rate gen.,binary

LD   (CTC_CNT),A

; 2500000/4000 = 625 Hz (riferimento PLL)

LD   A,0A0H        ;lsb

LD   (CTR0),A

LD   A,0FH          ;msb

LD   (CTR0),A

 

                        XOR  A

                        LD   (ENC_FLG),A

                        LD   (DIS_COUNT),A

                        LD   (KEY_COUNT),A

LD   IX,DIS_BUF    ;display buffer pointer

LD   IY,3800H

PUSH IX

LD   B,08

; scrittura in DIS_BUF di tutti  -_

LOOP_I:         LD   (IX+00),92H

INC  IX

DJNZ LOOP_I

 

POP  IX            ;IX -> DIS_BUF

                        LD   HL,1500

                        LD   (DELAY_KEY),HL

DEL_FUN_IN:  LD   A,(PORT_C)

AND  06            ;mask pulsanti

CP   06            ;function ?

JP   NZ,INIT_WARM

                        LD   B,08

L_D1:              CALL DISPLAY

                        DJNZ L_D1

                        LD   BC,0000

                        LD   HL,(DELAY_KEY)

                        DEC  HL

                        LD   (DELAY_KEY),HL

                        AND  A

                        SBC  HL,BC         ;timer iniz. per tenere premuto il tasto function

JR   NZ,DEL_FUN_IN

; setup

LD   (IX+00),00

LD   (IX+01),0DAH  ;S

LD   (IX+02),0F2H  ;E

LD   (IX+03),0F0H  ;T

LD   (IX+04),00

LD   (IX+05),0E2H  ;F

LD   (IX+06),0A0H  ;R

LD   (IX+07),00

 

LD   (IX+10H),01   ;init canale # 1

LD   (IX+11H),03   ;init volume = 3

LD   (IX+12H),05   ;init squelch = 5

LD   (IX+13H),00

                        LD   HL,1000

                        LD   (DELAY_KEY),HL

LD   (IX+15H),00

; scrittura iniziale dei canali con 435 Mhz.

; scittura per 1024 volte da 3800H a 3BFFH con 058H,1BH,058H,1BH,......

; ogni canale occupa 4 byte : 2 in rx e 2 in tx. Ogni canale viene scritto

; con 1B58H=7000d: questo perche' ogni Mhz corrisponde a 200d: quindi

; 200 * 35 = 7000 = 1B58H.

LD   B,00

LD   DE,0004

PUSH IY

WR_435:         PUSH BC

                        LD   B,08

L_D2:              CALL DISPLAY

                        DJNZ L_D2

                        POP  BC

LD   (IY+00),058H  ;canale in rx

LD   (IY+01),1BH

LD   (IY+02),058H  ;canale in tx

LD   (IY+03),1BH

ADD  IY,DE

DJNZ WR_435

POP  IY            ;IY = 3800H

 

INIT_WARM: LD   A,(IX+15H)

; main loop

MAIN_LOOP: CALL WHAT_FUNCT    ;what function

LD   A,(IX+15H)

INC  A

CP   10H

JR   C,INC_FUNC

LD   A,00

INC_FUNC:   LD   (IX+15H),A

JR   MAIN_LOOP

;=============================================================================

; routine: U S C I T A    F R E Q U E N Z A    P E R    P L L

;=============================================================================

; Sull'input SI (pin 14 del PLL) c'e' una frequenza di riferimanto di

; 625 Hz che e' data dall'oscillatore a quarzo.

; Si deve fare in modo che sull'input CI (pin 3 del PLL) ci sia la stessa

; frequenza (625 Hz) usando un divisore interno programmabile

OUT_F_PLL:  PUSH BC

                        PUSH DE

                        LD   DE,3880H

                        ADD  HL,DE

LD   BC,0C000H

ADD  HL,BC         ;HL-> freq. relativa al canale selez. -4000H

LD   A,L

LD   L,H

SUB  H

JR   NC,L_8FH

DEC  H

DEC  L

INC  A

JR   Z,L_93H

L_8FH:            CP   80H           ;80H -> 1.6 Mhz

JR   C,L_96H

L_93H:            INC  L

SUB  80H

L_96H:            LD   C,A

ADD  A,H

LD   H,A

LD   A,80H

ADD  A,L

SUB  C

LD   L,A

 

LD   B,0FFH

L_A0H:           LD   A,(PORT_C)

AND  08            ;mask 129/128

JR   NZ,L_A9H      ;NZ = 129

DJNZ L_A0H

 

L_A9H:           LD   B,0FFH

L_ABH:           LD   A,(PORT_C)

AND  08            ;mask 129/128

JR   Z,L_B4H       ;Z = 128

DJNZ L_ABH

L_B4H:           LD   A,H

LD   (CTR1),A

                        LD   A,0

LD   (CTR1),A

LD   A,L

LD   (CTR2),A

                        LD   A,2

LD   (CTR2),A

                        POP  DE

POP  BC

RET

;=============================================================================

; routine: D I S P L A Y

;=============================================================================

; rinfresco display

DISPLAY:       PUSH BC

PUSH AF

                        PUSH HL

LD   A,0FFH  ;XOR  A    ;0FFH con il display invertito !!!!!!!!!

LD   (PORT_A),A    ;spegnimento dei segmenti

                        LD   HL,DIS_BUF

                        LD   A,(DIS_COUNT)

                        LD   C,A

                        ADD  A,L

                        LD   L,A

                        LD   A,C

                        INC  A

                        CP   08

                        JR   NZ,DIS_CS

                        XOR  A

DIS_CS:          LD   (DIS_COUNT),A

SLA  C

SLA  C

SLA  C

SLA  C

                        LD   A,C

LD   (PORT_C),A    ;catodo

                        LD   A,(HL)    ;dato da mandare sui display

                        CPL       ;             CPL   !!!!!!!!!!!!!!!!!!!!!!!!

LD   (PORT_A),A

                        POP  HL

POP  AF

POP  BC

                        RET

;=============================================================================

; routine: V I S U A L I Z Z .   D E L L A    F R E Q U E N Z A

;=============================================================================

DIS_FREQ:     LD   (IX+00),00

LD   (IX+01),00

PUSH BC

PUSH DE

; visualizzazione della frequenza in centinaia di Mhz

LD   (IX+02),0CCH  ;4

; visualizzazione della frequenza in decine di Mhz

LD   BC,0F830H

LD   DE,NUM_TAB-1

L_112H:          INC  DE

ADD  HL,BC

JR   C,L_112H

LD   BC,07D0H      ;2000

ADD  HL,BC

LD   A,(DE)

LD   (IX+03),A

; visualizzazione della frequenza in unita' di Mhz

LD   BC,0FF38H

LD   DE,NUM_TAB-1

L_124H:          INC  DE

ADD  HL,BC

JR   C,L_124H

LD   BC,00C8H      ;200

ADD  HL,BC

LD   A,(DE)

ADD  A,01          ;accensione punto decimale

LD   (IX+04),A

; visualizzazione della frequenza in centinaia di Khz

LD   BC,0FFECH

LD   DE,NUM_TAB-1

L_138H:          INC  DE

ADD  HL,BC

JR   C,L_138H

LD   BC,14H         ;20

ADD  HL,BC

LD   A,(DE)

LD   (IX+05),A

; visualizzazione della frequenza in decine di Khz e in unita' di Khz

LD   BC,0FFFEH

LD   DE,NUM_TAB-1

L_155H:          INC  DE

ADD  HL,BC

JR   C,L_155H

LD   BC,0002H

ADD  HL,BC

LD   A,(DE)

LD   (IX+06),A

LD   DE,NUM_TAB

LD   B,H

LD   C,L

ADD  HL,HL

ADD  HL,HL

ADD  HL,BC

ADD  HL,DE

LD   A,(HL)

LD   (IX+07),A

POP  DE

POP  BC

RET

;=============================================================================

; routine:

;=============================================================================

L_180:             LD   (IX+00),00

LD   (IX+01),00

LD   (IX+02),00

LD   (IX+03),00

LD   (IX+04),00

LD   HL,NUM_TAB-1

L_197H:          INC  HL

SUB  64H

JR   NC,L_197H

ADD  A,64H

LD   H,(HL)

LD   (IX+05),H

LD   HL,NUM_TAB-1

L_1A5H:         INC  HL

SUB  0AH

JR   NC,L_1A5H

ADD  A,0AH

LD   H,(HL)

LD   (IX+06),H

LD   HL,NUM_TAB

ADD  A,L

LD   L,A

LD   H,(HL)

LD   (IX+07),H

RET

;=============================================================================

; routine: USCITA FREQ. PER IL PLL, USCITA SQUELCH, USCITA VOLUME

;=============================================================================

OUT_F_S_V:  PUSH DE

PUSH HL

PUSH AF

LD   H,00

LD   L,(IX+10H)    ;# del canale

ADD  HL,HL

ADD  HL,HL

EX   DE,HL         ;DE -> # del canale * 4

; si testa se si e' in rx o in tx.

; Se si e' in tx la microistr. ADD HL,DE e' la somma della frequenza

; del canale con 0.

; Se si e' in rx la microistr. ADD HL,DE e' la somma della frequenza

; del canale con FBACH: cioe' la frequenza del canale meno il valore

; della media frequenza che e' di 5.5375 Mhz.

LD   HL,0000

LD   A,(PORT_C)

AND  01            ;test + 12V TX

JR   NZ,CH_TX      ;NZ -> +12V TX

LD   HL,0FBACH

JR   CH_RX

CH_TX:          INC  DE            ;puntatore buffer canale in trasmissione

INC  DE

CH_RX:          ADD  IY,DE

LD   E,(IY+00)

LD   D,(IY+01)     ;DE -> valore della freq. relativa al canale

; FBACH + 1B58H =     H (nel caso canale # 0 in rx)

; 0 + 1B58H = 1B58H (nel caso canale # 0 in tx)

ADD  HL,DE

PUSH HL

PUSH AF

CALL OUT_F_PLL    ;uscita frequenza per il PLL

POP  AF

POP  HL 

; uscita volume e squelch

                        LD   A,(IX+11H)    ;valore del volume

AND  07            ;mask

LD   (IX+11H),A

RLCA

RLCA

RLCA

LD   D,A

LD   A,(IX+12H)    ;valore dello squelch

AND  07            ;mask

LD   (IX+12H),A

OR   D

LD   (PORT_B),A    ;out volume e squelch

POP  AF

POP  HL

POP  DE

RET

;=============================================================================

; routine: A T T E S A    D I    U N    T A S T O    ( 1.6 mS )           

;=============================================================================

WAIT_KEY:   PUSH HL

            PUSH BC

WAIT_KEY1: PUSH IY

CALL OUT_F_S_V

POP  IY

                        CALL DISPLAY

LD   A,(PORT_C)

AND  01            ;mask +12 V TX

CP   (IX+16H)

JR   Z,RD_ENC

LD   (IX+16H),A

LD   A,00

JP   WAIT_KEYEX

; lettura encoder per la sintonia. Se siamo sul canale 0 la sintonia si puo'

; solo fare con i pulsanti up/down

RD_ENC:        LD   A,(NUM_CAN)

                        AND  A                      ; canale 0 ?

                        JR   Z,RD_KEY

                        LD   A,(ENCODER)   ;lettura fasi

                        AND  03                     ;mask fasi

                        LD   B,A                     ;save fasi in B

                        LD   A,(ENC_FLG)

                        AND  A                      ;test flag fasi=00

                        JR   Z,FASI_00

                        LD   A,B                     ;restore fasi

                        CP   01                       ;test fase up

                        JR   NZ,FASE_DW

                        XOR  A

                        LD   (ENC_FLG),A    ;reset flag fasi=00

                        LD   A,01                    ;simulazione pulsante up premuto

                        JR   WAIT_KEYEX

FASE_DW:     CP   02                       ;test fase down

JR   NZ,RD_KEY

                        XOR  A

                        LD   (ENC_FLG),A    ;reset flag fasi=00

                        LD   A,02                    ;simulazione pulsante down premuto

                        JR   WAIT_KEYEX

FASI_00:        LD   A,B                     ;restore fasi

                        CP   00                       ;test se fasi=00

                        JR   NZ,RD_KEY

                        LD   A,01

                        LD   (ENC_FLG),A    ;set flag fasi=00

; lettura tasti: in uscita il reg A contiene l'input dei tasti

RD_KEY:        LD   A,(PORT_C)

AND  06            ;mask pulsanti

JR   NZ,RD_KEY1    ;NZ -> function

LD   (IX+13H),00

                        LD   HL,0002

                        LD   (DELAY_KEY),HL

                        XOR  A

                        LD  (KEY_COUNT),A          ;reset KEY_COUNT

JR   WAIT_KEY1

RD_KEY1:      P   (IX+13H)      ;function

JR   Z,RD_KEY2

                        LD   HL,0002

                        LD   (DELAY_KEY),HL

LD   (IX+13H),A

JR   WAIT_KEY1

RD_KEY2:      LD   BC,0000

                        LD   HL,(DELAY_KEY)

                        DEC  HL

                        LD   (DELAY_KEY),HL

                        AND  A

                        SBC  HL,BC

JP   NZ,WAIT_KEY1

                        CP         6                    ;tasto function premuto ?

                        JR          Z,DELAY_F

                        LD   HL,200    ;velocita' avanzamento tasti up e down

                        LD   (DELAY_KEY),HL

                        LD   HL,KEY_COUNT

                        INC  (HL)

                        JR   WAIT_KEYEX

DELAY_F:      LD   HL,200    ;velocita' avanzamento tasto function

LD   (DELAY_KEY),HL

WAIT_KEYEX: POP  BC

POP  HL

                        RET

;=============================================================================

; routine: W H A T   F U N C T I O N

;=============================================================================

; step da 25 KHz

WHAT_FUNCT:  CP   0;0 = passi da 25 Khz

JP   NZ,S_S

S_F_NK:        LD   H,00

LD   L,(IX+10H)

ADD  HL,HL

ADD  HL,HL

EX   DE,HL

                        LD  A,(PORT_C)

                        AND  01                     ;mask +12VTX

                        JR   Z,F_RX    ;NZ = +12VTX

                        INC  DE                     ;puntamento al buffer trasmissione

                        INC  DE

F_RX:              PUSH IY

ADD  IY,DE

LD   L,(IY+00)

LD   H,(IY+01)

POP  IY

PUSH HL

PUSH AF

CALL DIS_FREQ      ;visualizzazione della frequenza

POP  AF

POP  HL

LD   (IX+00),0E2H  ;F

CALL WAIT_KEY

CP   00

JR   Z,S_F_NK           ;Z = nessun tasto premuto

                        PUSH AF                   ;save tasto premuto

                        LD  A,(PORT_C)

                        AND  01                     ;mask +12VTX

                        JR   Z,S_F_WK          ;NZ = +12VTX

                        POP  AF

                        JR   S_F_NK

S_F_WK:        POP  AF                     ;restore tasto premuto

CP   00

JR   Z,S_F_NK

CP   06

RET  Z

CP   02            ;2 = tasto down premuto

JR   Z,S_F_DW

                        LD  A,(KEY_COUNT)

                        CP   41                        ;e' passato 1 MHz ?

                        JR  C,S_F_INC

                        LD   BC,200        ;200= 1 MHz

                        JR  S_F1

S_F_INC:       LD   BC,5          ;5 = 25 KHz

                        JR  S_F1

S_F_DW:        LD  A,(KEY_COUNT)

                        CP   41                       ;e' passato 1 MHz ?

                        JR  C,S_F_DEC

                        LD   BC,65536-200  ; = 1 MHz

                        JR  S_F1

S_F_DEC:       LD   BC,65536-5    ; = 25 KHz

S_F1:              LD   H,00

LD   L,(IX+10H)

ADD  HL,HL

ADD  HL,HL

EX   DE,HL

PUSH IY

ADD  IY,DE

LD   L,(IY+00)

LD   H,(IY+01)

ADD  HL,BC

LD   (IY+00),L

LD   (IY+01),H

                        LD   L,(IY+02)

LD   H,(IY+03)

ADD  HL,BC

LD   (IY+02),L

LD   (IY+03),H

POP  IY

JP   S_F_NK

; step da 5 KHz

S_S:                CP   1;1 = passi da 5 Khz

JP   NZ,TX_FREQ

S_S_NK:        LD   H,00

LD   L,(IX+10H)    ;# del canale

ADD  HL,HL

ADD  HL,HL

EX   DE,HL         ;DE = # del canale * 4

                        LD         A,(PORT_C)

                        AND  01                     ;mask +12VTX

                        JR   Z,S_RX    ;NZ = +12VTX

                        INC  DE                     ;puntamento al buffer trasmissione

                        INC  DE

S_RX:             PUSH IY

ADD  IY,DE         ;puntamento al buffer del canale

LD   L,(IY+00)

LD   H,(IY+01)     ;HL=valore della freq. relativa al canale

POP  IY            ;IY=puntatore buffer canali

PUSH HL

PUSH AF

CALL DIS_FREQ      ;visualizzazione della frequenza

POP  AF

POP  HL

LD   (IX+00),0DAH   ;S

CALL WAIT_KEY

CP   00

JR   Z,S_S_NK

                        PUSH AF                   ;save tasto premuto

                        LD  A,(PORT_C)

AND  01                     ;mask +12VTX

                        JR   Z,S_S_WK          ;NZ = +12VTX

                        POP  AF

                        JR   S_S_NK

S_S_WK:        POP  AF                     ;restore tasto premuto

CP   06

RET  Z

CP   02            ;2 = tasto down premuto

JR   Z,S_S_DEC

LD   BC,0001       ;1 = 5 KHz

                        JR  S_S_MOD

S_S_DEC:       LD   BC,65536-1    ; = 5 KHz

S_S_MOD:     LD   H,00

LD   L,(IX+10H)    ;# del canale

ADD  HL,HL

ADD  HL,HL

EX   DE,HL         ;DE = # del canale * 4

PUSH IY            ;IY = puntatore buffer canale

ADD  IY,DE

LD   L,(IY+00)

LD   H,(IY+01)     ;HL = valore della freq. relativa al canale

; questa operazione serve ad incrementare di 1 step la frequenza (con BC=0001)

; oppure a decrementare di 1 la frequenza (con BC=FFFFH) infatti sommando

; FFFFH e' come sottrarre 1

ADD  HL,BC

LD   (IY+00),L

LD   (IY+01),H

                        LD   L,(IY+02)

LD   H,(IY+03)

ADD  HL,BC

LD   (IY+02),L

LD   (IY+03),H

POP  IY

JP   S_S_NK

; frequenza di trasmissione

TX_FREQ:      CP   2;2 = frequenza di trasmissione

JR   NZ,CHANNEL

TX_FREQ_NK:  LD   H,00

LD   L,(IX+10H)    ;# del canale

ADD  HL,HL

ADD  HL,HL

EX   DE,HL         ;DE = # del canale * 4

                        INC  DE

                        INC  DE                     ;DE = buffer del tx

                        PUSH IY

ADD  IY,DE         ;puntamento al buffer del canale

LD   L,(IY+00)

LD   H,(IY+01)     ;HL=valore della freq. relativa al canale

POP  IY            ;IY=puntatore buffer canali

PUSH HL

PUSH AF

CALL DIS_FREQ      ;visualizzazione della frequenza

POP  AF

POP  HL

LD   (IX+00),0F0H     ;t

CALL WAIT_KEY

CP   00

JR   Z,TX_FREQ_NK            ;0 = nessun tasto schiacciato

CP   06

RET  Z            ;0 = tasto function premuto

CP   02            ;2 = tasto down premuto

JR   Z,TX_FREQ_DW

                        LD  A,(KEY_COUNT)

                        CP   11

                        JR  C,INC_S

                        LD   BC,20         ;20 = 100 KHz

                        JR  TX_FREQ1

INC_S:            LD   BC,0001       ;1 = 5 KHz

                        JR  TX_FREQ1

TX_FREQ_DW:  LD    A,(KEY_COUNT)

                        CP   11

                        JR          C,DEC_S

                        LD   BC,65536-20   ; = 100 KHz

                        JR  TX_FREQ1

DEC_S:           LD   BC,65536-1    ; = 5 KHz

TX_FREQ1:    LD   H,00

LD   L,(IX+10H)    ;# del canale

ADD  HL,HL

ADD  HL,HL

EX   DE,HL         ;DE = # del canale * 4

PUSH IY            ;IY = puntatore buffer canale

ADD  IY,DE

                        LD   L,(IY+02)

LD   H,(IY+03)

ADD  HL,BC

LD   (IY+02),L

LD   (IY+03),H

POP  IY

JR   TX_FREQ_NK

; canale

CHANNEL:    CP   5;5 = canale #

JR   NZ,VOLUME

L_425H:          LD   A,(IX+10H)

PUSH HL

PUSH AF

CALL L_180

POP  AF

POP  HL

LD   (IX+01),72H   ;C

LD   (IX+02),0ECH  ;H

L_431H:          CALL WAIT_KEY

CP   00

JR   Z,L_431H

CP   06

RET  Z

INC  (IX+10H)

CP   02

JR   NZ,L_448H

DEC  (IX+10H)

DEC  (IX+10H)

L_448H:      JR   L_425H

; volume

VOLUME:      CP   3;3 = volume

JR   NZ,SQUELCH

L_44EH:          LD   A,(IX+11H)    ;(default=3)

PUSH HL

PUSH AF

CALL L_180

POP  AF

POP  HL

LD   (IX+00),7CH   ;V

LD   (IX+01),7EH   ;O

LD   (IX+02),70H   ;L

LD   (IX+03),7CH   ;U

LD   (IX+04),6EH   ;M

LD   (IX+05),0F2H  ;E

LD   (IX+06),00

L_46EH:          CALL WAIT_KEY

CP   00

JR   Z,L_46EH

CP   06

RET  Z

                        INC  (IX+11H)

CP   02

LD   A,(IX+11H)

JR   NZ,L_484H

DEC  A

DEC  A

L_484H:          CP   80H

JR   C,L_48AH

LD   A,00

L_48AH:         CP   08

JR   C,L_490H

LD   A,07

L_490H:          LD   (IX+11H),A

JR   L_44EH

; squelch

SQUELCH:     CP   4;4 = squelch

JR   NZ,WF_EXIT

L_499H:          LD   A,(IX+12H)

PUSH HL

PUSH AF

CALL L_180

POP  AF

POP  HL

LD   (IX+00),0DAH  ;S

LD   (IX+01),0CEH  ;Q

LD   (IX+02),0F2H  ;E

LD   (IX+03),70H   ;L

LD   (IX+04),72H   ;C

LD   (IX+05),0ECH  ;H

LD   (IX+06),00

L_4B9H:         CALL WAIT_KEY

CP   00

JR   Z,L_4B9H

CP   06

RET  Z

INC  (IX+12H)

CP   02

LD   A,(IX+12H)

JR   NZ,L_4CFH

DEC  A

DEC  A

L_4CFH:         CP   80H

JR   C,L_4D5H

LD   A,00

L_4D5H:         CP   08

JR   C,L_4DBH

LD   A,07

L_4DBH:         LD   (IX+12H),A

JR   L_499H

RET

WF_EXIT:      RET

;************

ORG  700H

NUM_TAB:    DEFB 7EH           ;0

DEFB 0CH           ;1

DEFB 0B6H          ;2

DEFB 9EH           ;3

DEFB 0CCH          ;4

DEFB 0DAH          ;5

DEFB 0FAH          ;6

DEFB 0EH           ;7

DEFB 0FEH          ;8

DEFB 0DEH          ;9

;************

ORG  3800H         ;RAM

ORG  3E00H

DIS_BUF:       DEFS 8;display buffer

DEFS 8

NUM_CAN:   DEFS 1    ;IX+10H   numero del canale

DEFS 1    ;IX+11H   valore del volume

DEFS 1    ;IX+12H   valore dello squelch

DEFS 1    ;IX+13H

DEFS 1    ;IX+14H

 

DEFS 1    ;IX+15H   contatore di function

;0 = passi da 25 Khz

;1 = passi da 5 Khz

;2 = frequenza di trasmissione

;3 = volume

;4 = squelch

;5 = canale #

DEFS 1    ;IX+16H

                        ORG  3E30H

KEY_COUNT: DEFS 1         ;counter delle volte che i pulsanti sono premuti

ENC_FLG:      DEFS 1           ;0=l'encoder e' in attesa delle fasi=00

                                   ;1=l'encoder ha ricevuto le fasi=00 e si deve testare

                                   ;se l'impulso e' up o down

DIS_COUNT:  DEFS 1

DELAY_KEY: DEFS 2          ;tempo che i pulsanti devono essere premuti

;************

; SEG G = BIT 7           A

; SEG B = BIT 2          -----

; SEG C = BIT 3      F |     | B

; SEG D = BIT 4         |  G  |

; SEG E = BIT 5          -----

; SEG F = BIT 6       E |     | C

; SEG A = BIT 1          |     |

; DP    = BIT 0             -----

;                                     D

;*************

ENCODER:    EQU  2000H   ;encoder per la sintonia

PORT_A:        EQU  2800H

PORT_B:        EQU  2801H

PORT_C:        EQU  2802H

PIO_CNT:      EQU  2803H

CTR0:             EQU  3000H

CTR1:             EQU  3001H

CTR2:             EQU  3002H

CTC_CNT:     EQU  3003H

                 END