Newsgroup: it.hobby.radioamatori
Titolo: non per uso commerciale ICOM PCR1000

NON DESIDERO CRITICHE.
Qulunque commento costruttivo è ben accetto.
Mi rendo conto che un PCR1000 è una radio di poche pretese, e per la
ricezione in HF uso di solito un Drake R4B o un TRIO 9R-59D entrambi
valvolari.
Scontento di quanto offre la casa ho cercato vari programmi di comando
dell'apparato in questione. Ne ho trovato di ottimi, FREEWARE senza
limitazioni, ed ho voluto in qualche modo dare anche io un contributo.
Il programma è senza pretese, ma vuole dimostrare che senza sistemi
operativi bruciarisorse è comunque possibile ottenere qualcosa.
Consideratelo un esperimento di programmazione.
Il codice sorgente deve essere compilato con il compilatore Microsoft 6.0 o
equivalente
Il codice puٍ essere eseguito anche con Qbasic nelle versioni che sopportano
le opzioni di OPEN COM........
Il codice non puٍ essere utilizzato per scopi commerciali.
Il codice puٍ essere copiato, distribuito o modificato a scopo
radioamatoriale con la sola restrizione di mantenere il nome e il nominativo
dell'autore (Alessandro Gorobey IW3RAB) all'interno del codice in modo che
venga stampato all'avvio del programma stesso.
La distribuzione del programma compilato e/o modificato deve contenere in
maniera integrale anche il presente messaggio compreso il codice sorgente
allegato di seguito.
Il codice è stato collaudato con boot da floppy su un 286 senza disco rigido
e con 512 MB di memoria. Funziona anche sotto NT, Pentium 900 MHz, 256 MB di
memoria senza alcun incremento di prestazioni.
The source must be compiled by Microsoft Basic version 6.0 or equivalent.
It also work with Quik basic of last versions (The version must support the
OPEN COM flags).
The source have no limitation of copy or use for non commercial use.
IT IS A SOURCE FREE CODE THAT MUST DISTRIBUTED IN THIS FORM.
No manual and no support for code.
No guarantee for it. No responsability of any damage direct or indirect.
Modify it as you like, and make a present of it.
Do not remove my name from code.
The compiled code work from floppy on a 80286. The PC can be diskless with
512 Kb of memory or less (KB, not MB).
CUT START ==========================
DECLARE SUB Tempo ()
DECLARE SUB SendAuto ()
DECLARE SUB Analisi ()
DECLARE SUB SendInit ()
DECLARE SUB Inizio ()
DECLARE SUB InizioSchermo ()
DECLARE SUB InStrip ()
DECLARE SUB VarPasso (x)
DECLARE SUB PrintPasso ()
DECLARE SUB PrintLED ()
DECLARE SUB PrintIfs ()
DECLARE SUB PrintVol ()
DECLARE SUB PrintMode ()
DECLARE SUB PrintSquel ()
DECLARE SUB PrintSign ()
DECLARE SUB PrintFreq ()
DECLARE SUB SendVsc ()
DECLARE SUB SendFreq ()
DECLARE SUB SendAcg ()
DECLARE SUB SendAtt ()
DECLARE SUB SendNbl ()
DECLARE SUB SendIfs ()
DECLARE SUB SendVol ()
DECLARE SUB SendSquel ()
COMMON SHARED grandi AS STRING
COMMON SHARED RxFreq AS LONG, MinFreq AS LONG, MaxFreq AS LONG, Passo AS
LONG
COMMON SHARED Mode AS INTEGER, Filter AS INTEGER
COMMON SHARED Vol AS INTEGER, Squel AS INTEGER, Sign AS INTEGER, Ifs AS
INTEGER
COMMON SHARED Att AS INTEGER, Nbl AS INTEGER
COMMON SHARED Acg AS INTEGER, Vsc AS INTEGER
COMMON SHARED FromR AS STRING
COMMON SHARED Rtmp AS STRING
DIM tmp AS STRING
DIM CMD AS INTEGER
DIM C AS INTEGER, L AS INTEGER, P AS INTEGER
'*************************************************
' Imposto i valori iniziali in ordine video
'*************************************************
MinFreq = 10000
RxFreq = 819000
MaxFreq = 1300000000
Passo = 9000
Filter = 2
Mode = 2
Nbl = 0
Att = 0
Acg = 0
Vsc = 0
Vol = 90
Squel = 60
Sign = 0
Ifs = 128
'*************************************************
'Tentativo di collegamento alla radio
'Vengono viasualizzate le risposte
'Imposto i valori di default
'*************************************************
CLS
PRINT "Alessandro Gorobey IW3RAB"
PRINT "PCR1KDOS v1.0 del 09/2000"
PRINT
PRINT "Inizio connessione ESC per interrompere"
PRINT
OPEN "COM2:9600,N,8,1,RB4096,TB4096,CD0,CS0,DS0,OP0" FOR RANDOM AS #1
FromR = ""
C = 0
WHILE C = 0
    IF NOT EOF(1) THEN
        Rtmp = INPUT$(LOC(1), #1)
        InStrip
        FromR = FromR + Rtmp
    END IF
    P = INSTR(FromR, "H100")
    IF P > 0 THEN
        L = LEN(FromR)
        FromR = MID$(FromR, P + 4, L - P - 3)
        P = 0
        I = I + 1
        PRINT I;
        IF I > 2 THEN C = 1
    END IF
    tmp$ = INKEY$
    IF tmp$ = CHR$(27) THEN
        CLOSE
        STOP 1
    ELSEIF tmp$ = "*" THEN
        C = 1
    END IF
WEND
'*************************************************
' La radio sta tasmettendo H100 quindi e' accesa
' Inizio programma reale
'*************************************************
Inizio
InizioSchermo
PrintFreq
PrintPasso
PrintMode
PrintIfs
PrintSquel
PrintVol
PrintSign
PrintLED
'*************************************************
' Spedisco i parametri di base
'*************************************************
SendInit
            Tempo
SendInit
            Tempo
SendFreq
            Tempo
SendAtt
            Tempo
SendAcg
            Tempo
SendNbl
            Tempo
SendVsc
            Tempo
SendIfs
            Tempo
SendVol
            Tempo
SendSquel
            Tempo
SendFreq
            Tempo
SendVol
            Tempo
'Pulisco il buffer di ingresso
IF NOT EOF(1) THEN
    Rtmp = INPUT$(LOC(1), #1)
    FromR = ""
    Rtmp = ""
END IF
SendAuto
            Tempo
'****************************************************
'Loop di analisi tasti e trasmissione verso la radio
'****************************************************
tmp$ = ""
DO
    tmp$ = INKEY$
    IF LEN(tmp$) = 1 THEN
        CMD = ASC(tmp$)
    ELSEIF LEN(tmp$) = 2 THEN
        CMD = ASC(MID$(tmp$, 2, 1)) + 1000
    ELSE
        CMD = 0
END IF
SELECT CASE CMD
CASE ASC("v"), 1079                 'riduce volume   END
    Vol = Vol - 3
    IF Vol < 0 THEN Vol = 0
    PrintVol
    SendVol
CASE ASC("V"), 1071                 'aumenta volume  HOME
    Vol = Vol + 3
    IF Vol > 255 THEN Vol = 255
    PrintVol
    SendVol
CASE 22                             'CTRL V volume medio
    Vol = 80
    PrintVol
    SendVol
CASE ASC("q"), 1081                 'riduce squelch  PGDOWN
    Squel = Squel - 3
    IF Squel < 0 THEN Squel = 0
    PrintSquel
    SendSquel
CASE ASC("Q"), 1073                 'aumenta squelch   PGUP
    Squel = Squel + 3
    IF Squel > 255 THEN Squel = 255
    PrintSquel
    SendSquel
CASE 17                             'CTRL Q squelch medio
    Squel = 60
    PrintSquel
    SendSquel
CASE ASC("i"), 1083                 'IFS down = DEL
    Ifs = Ifs - 4
    IF Ifs < 0 THEN Ifs = 0
    PrintIfs
    SendIfs
CASE ASC("I"), 1082                 'IFS up = INS
    Ifs = Ifs + 4
    IF Ifs > 255 THEN Ifs = 255
    PrintIfs
    SendIfs
CASE 9                              'CTRL i = center IFS
    Ifs = 128
    PrintIfs
    SendIfs
CASE ASC("T"), ASC("t"), 1063       'F5 = ATT
    IF Att = 0 THEN Att = 1 ELSE IF Att = 1 THEN Att = 0
    PrintLED
    SendAtt
CASE ASC("B"), ASC("b"), 1064       'F6 = NB
    IF Nbl = 0 THEN Nbl = 1 ELSE IF Nbl = 1 THEN Nbl = 0
    PrintLED
    SendNbl
CASE ASC("G"), ASC("g"), 1065       'F7 = ACG
    IF Acg = 0 THEN Acg = 1 ELSE IF Acg = 1 THEN Acg = 0
    PrintLED
    SendAcg
CASE ASC("S"), ASC("s"), 1066       'F8 = VSC
    IF Vsc = 0 THEN Vsc = 1 ELSE IF Vsc = 1 THEN Vsc = 0
    PrintLED
    SendVsc
CASE ASC("f")                       'f = filter down
    Filter = Filter - 1
    IF Filter < 0 THEN Filter = 4
    PrintMode
    SendFreq
CASE ASC("F"), 1062                 'F oppure F4 filter up
    Filter = Filter + 1
    IF Filter > 4 THEN Filter = 0
    PrintMode
    SendFreq
CASE 6                              'CTRL f
    SELECT CASE Mode
        CASE 0, 1, 3
            Filter = 0
        CASE 2
            Filter = 1
        CASE 5
            Filter = 2
        CASE 6
            Filter = 3
    END SELECT
    PrintMode
    SendFreq
CASE ASC("L"), ASC("l")             'l o L = LSB
    Mode = 0
    Filter = 0
    PrintMode
    SendFreq
CASE ASC("U"), ASC("u")             'u o U = USB
    Mode = 1
    Filter = 0
    PrintMode
    SendFreq
CASE ASC("A"), ASC("a")             'a o A = AM
    Mode = 2
    Filter = 1
    PrintMode
    SendFreq
CASE ASC("C"), ASC("c")             'c o C = CW
    Mode = 3
    Filter = 0
    PrintMode
    SendFreq
CASE ASC("N"), ASC("n")             'n o N = NFM
    Mode = 5
    Filter = 2
    PrintMode
    SendFreq
CASE ASC("W"), ASC("w")             'w o W = WFM
    Mode = 6
    Filter = 3
    PrintMode
    SendFreq
CASE 1061                           'F3 = recirculate Mode
    Mode = Mode + 1
    IF Mode = 4 THEN Mode = 5
    IF Mode > 6 THEN Mode = 0
    PrintMode
    SendFreq
CASE ASC("R"), ASC("r")             'Round freq
    RxFreq = INT(RxFreq / Passo) * Passo
    IF RxFreq < MinFreq THEN RxFreq = MinFreq
    PrintFreq
    SendFreq
CASE 1077                           'RIGHT Freq UP
    RxFreq = RxFreq + Passo
    IF RxFreq > MaxFreq THEN RxFreq = MaxFreq
    PrintFreq
    SendFreq
CASE 1116                           'CTRL RIGHT Freq UP
    RxFreq = RxFreq + Passo * 10
    IF RxFreq > MaxFreq THEN RxFreq = MaxFreq
    PrintFreq
    SendFreq
CASE 1157                           'ALT RIGHT Freq UP
    RxFreq = RxFreq + Passo * 100
    IF RxFreq > MaxFreq THEN RxFreq = MaxFreq
    PrintFreq
    SendFreq
CASE 1075                           'LEFT Freq DOWN
    RxFreq = RxFreq - Passo
    IF RxFreq < MinFreq THEN RxFreq = MinFreq
    PrintFreq
    SendFreq
CASE 1115                           'CTRL LEFT
    RxFreq = RxFreq - Passo * 10
    IF RxFreq < MinFreq THEN RxFreq = MinFreq
    PrintFreq
    SendFreq
CASE 1155                           'ALT LEFT
    RxFreq = RxFreq - Passo * 100
    IF RxFreq < MinFreq THEN RxFreq = MinFreq
    PrintFreq
    SendFreq
CASE 1072                           'UP increase step
    VarPasso (1)
    PrintPasso
CASE 1080                           'DOWN decrease step
    VarPasso (0)
    PrintPasso
CASE 1060                           'F2 Passo recilculate
    VarPasso (2)
    PrintPasso
END SELECT
'***********************************************
' Ricevo qualcosa dalla radio ?
'***********************************************
IF NOT EOF(1) THEN
    Rtmp = INPUT$(LOC(1), #1)
    InStrip
    FromR = FromR + Rtmp
'   Analisi
END IF
Analisi
'*************************************************
' FINE DEL LOOP PRINCIPALE CONTINUO
'*************************************************
LOOP WHILE CMD <> 1016              'ALT+Q to quit
'***********************************************
'Fine programma
'***********************************************
LOCATE 24, 1, 1
CLOSE
SUB Analisi STATIC
DIM P AS INTEGER, C AS INTEGER, L AS INTEGER, K AS INTEGER
'Scarto fino a quando non comincia per "I"
DO
    IF LEN(FromR) < 4 THEN EXIT SUB
    C = ASC(FromR)
    IF C <> ASC("I") THEN
        FromR = RIGHT$(FromR, LEN(FromR) - 1)
    ELSE
       EXIT DO
    END IF
LOOP
IF LEN(FromR) < 4 THEN EXIT SUB
IF LEFT$(FromR, 4) = "I004" THEN    'sqelch close
    LOCATE 8, 65, 0
    PRINT "ù"
    FromR = RIGHT$(FromR, LEN(FromR) - 4)
ELSEIF LEFT$(FromR, 4) = "I007" THEN    'sqelch open
    LOCATE 8, 65, 0
    PRINT "‏"
    FromR = RIGHT$(FromR, LEN(FromR) - 4)
ELSEIF LEFT$(FromR, 2) = "I1" THEN    'SIGNAL LEVEL
    Sign = VAL("&H" + MID$(FromR, 3, 2))
    PrintSign
    FromR = RIGHT$(FromR, LEN(FromR) - 4)
ELSEIF LEFT$(FromR, 2) = "I2" THEN    'SIGNAL CENTER
    'non mi interessa
    FromR = RIGHT$(FromR, LEN(FromR) - 4)
ELSEIF LEFT$(FromR, 2) = "I3" THEN    'TONE CONTROL
    'non  mi interessa
    FromR = RIGHT$(FromR, LEN(FromR) - 4)
END IF
'LOCATE 20, 5
'PRINT LEN(FromR), FromR
END SUB
SUB Inizio STATIC
grandi$ = grandi$ + "غككككغ"
grandi$ = grandi$ + "غ    غ"
grandi$ = grandi$ + "غ    غ"
grandi$ = grandi$ + "غ    غ"
grandi$ = grandi$ + "غــــغ"
grandi$ = grandi$ + "  ـغ  "
grandi$ = grandi$ + "   غ  "
grandi$ = grandi$ + "   غ  "
grandi$ = grandi$ + "   غ  "
grandi$ = grandi$ + "  ـغـ "
grandi$ = grandi$ + "كككككغ"
grandi$ = grandi$ + "     غ"
grandi$ = grandi$ + "غككككك"
grandi$ = grandi$ + "غ     "
grandi$ = grandi$ + "غـــــ"
grandi$ = grandi$ + "كككككغ"
grandi$ = grandi$ + "     غ"
grandi$ = grandi$ + " ككككغ"
grandi$ = grandi$ + "     غ"
grandi$ = grandi$ + "ـــــغ"
grandi$ = grandi$ + "غ    غ"
grandi$ = grandi$ + "غ    غ"
grandi$ = grandi$ + "غــــغ"
grandi$ = grandi$ + "     غ"
grandi$ = grandi$ + "     غ"
grandi$ = grandi$ + "غككككك"
grandi$ = grandi$ + "غ     "
grandi$ = grandi$ + "كككككغ"
grandi$ = grandi$ + "     غ"
grandi$ = grandi$ + "ـــــغ"
grandi$ = grandi$ + "غككككك"
grandi$ = grandi$ + "غ     "
grandi$ = grandi$ + "غككككغ"
grandi$ = grandi$ + "غ    غ"
grandi$ = grandi$ + "غــــغ"
grandi$ = grandi$ + "كككككغ"
grandi$ = grandi$ + "     غ"
grandi$ = grandi$ + "     غ"
grandi$ = grandi$ + "     غ"
grandi$ = grandi$ + "     غ"
grandi$ = grandi$ + "غككككغ"
grandi$ = grandi$ + "غ    غ"
grandi$ = grandi$ + "غككككغ"
grandi$ = grandi$ + "غ    غ"
grandi$ = grandi$ + "غــــغ"
grandi$ = grandi$ + "غككككغ"
grandi$ = grandi$ + "غ    غ"
grandi$ = grandi$ + "كككككغ"
grandi$ = grandi$ + "     غ"
grandi$ = grandi$ + "ـــــغ"
grandi$ = grandi$ + "      "
grandi$ = grandi$ + "      "
grandi$ = grandi$ + "      "
grandi$ = grandi$ + "      "
grandi$ = grandi$ + "      "
END SUB
SUB InizioSchermo STATIC
CLS
'Stampa maschera iniziale
PRINT
"ةحححححححححححححححححححححححححححححححححححححححححححححححححححححححححححححححححححححححححح
حححح»"
PRINT "؛
؛"
PRINT "؛
؛"
PRINT "؛
؛"
PRINT "؛
؛"
PRINT "؛                             ـ                        ـ
؛"
PRINT
"جححححححححثحححححثححححححثحححححثحححححثحححححثحححححثحححححححثحححححححثحححححححثحححح
حححح¹"
PRINT "؛        ؛     ؛      ؛     ؛     ؛     ؛     ؛       ؛       ؛
؛        ؛"
PRINT "؛  STEP  ؛ MOD ؛ FLTR ؛ ATT ؛ NBL ؛ ACG ؛ VSC ؛ IF SH ؛  VOL  ؛ SQLCH
؛        ؛"
PRINT
"جححححححححتحححححتححححححتحححححتحححححتحححححتحححححتحححححححتحححححححتحححححححتحححح
حححح¹"
PRINT "؛
؛"
PRINT "؛
؛"
PRINT "؛
؛"
PRINT "؛
؛"
PRINT "؛
؛"
PRINT "؛
؛"
PRINT "؛
؛"
PRINT "؛
؛"
PRINT "؛
؛"
PRINT "؛
؛"
PRINT "؛
؛"
PRINT "؛
؛"
PRINT
"بحححححححححححححححححححححححححححححححححححححححححححححححححححححححححححححححححححححححححح
حححح¼"
END SUB
' Toglie tutti i CR e LF
'
SUB InStrip STATIC
DIM CRLF AS INTEGER
DO
    CRLF = INSTR(Rtmp, CHR$(10))
    IF CRLF THEN
        Rtmp$ = LEFT$(Rtmp, CRLF - 1) + MID$(Rtmp$, CRLF + 1)
    END IF
LOOP WHILE CRLF
DO
    CRLF = INSTR(Rtmp$, CHR$(13))
    IF CRLF THEN
        Rtmp$ = LEFT$(Rtmp$, CRLF - 1) + MID$(Rtmp$, CRLF + 1)
    END IF
LOOP WHILE CRLF
END SUB
SUB PrintFreq STATIC
DIM a AS STRING
DIM num AS INTEGER      'numero da stampare b=blank
DIM x AS INTEGER        'coordinate video orrizzontale
DIM y AS INTEGER        'video verticale e puntatore stringa
DIM C AS INTEGER        'carattere da stampare
' trasformo la frequenza in una stringa con blank lunga 10
a$ = RTRIM$(LTRIM$(STR$(RxFreq)))
a$ = STRING$(10 - LEN(a$), " ") + a$
' stampo anche gli spazi per la cancellazione
' si comincia da destra e si saltano alcune posizioni
' a causa  dei punti separatori
x = 2
FOR num = 1 TO 10
    C = ASC(MID$(a$, num, 1))
    IF C = 32 THEN
       C = 10
    ELSE
       C = C - 48
    END IF
    FOR y = 0 TO 4
        LOCATE y + 2, x, 0
        PRINT MID$(grandi$, 1 + (C * 30) + (y * 6), 6)
    NEXT y
    x = x + 7
    IF num = 4 OR num = 7 THEN x = x + 4
NEXT num
END SUB
SUB PrintIfs STATIC
DIM I AS INTEGER, a AS STRING
I = CINT(((Ifs - 128) * 100 / 128))
a$ = RTRIM$(LTRIM$(STR$(ABS(I))))
a$ = STRING$(3 - LEN(a$), " ") + a$
SELECT CASE I
CASE 0
    a$ = "ٌ " + a$
CASE IS < 0
    a$ = "- " + a$
CASE IS > 0
    a$ = "+ " + a$
END SELECT
LOCATE 8, 49, 0
PRINT a$
END SUB
SUB PrintLED STATIC
'Accende i LED simulati
LOCATE 8, 25, 0
IF Att = 0 THEN PRINT "   " ELSE PRINT "‏‏‏"
LOCATE 8, 31, 0
IF Nbl = 0 THEN PRINT "   " ELSE PRINT "‏‏‏"
LOCATE 8, 37, 0
IF Acg = 0 THEN PRINT "   " ELSE PRINT "‏‏‏"
LOCATE 8, 43, 0
IF Vsc = 0 THEN PRINT "   " ELSE PRINT "‏‏‏"
END SUB
SUB PrintMode STATIC
'Stampa il modo di ricezione e filtro corrente
LOCATE 8, 12, 0
SELECT CASE Mode
CASE 0
    PRINT "LSB"
CASE 1
    PRINT "USB"
CASE 2
    PRINT "AM "
CASE 3
    PRINT "CW "
CASE 4
    PRINT "???"
CASE 5
    PRINT "NFM"
CASE 6
    PRINT "WFM"
END SELECT
LOCATE 8, 18, 0
SELECT CASE Filter
CASE 0
    PRINT "  3 "
CASE 1
    PRINT "  6 "
CASE 2
    PRINT " 15 "
CASE 3
    PRINT " 50 "
CASE 4
    PRINT " 230"
END SELECT
END SUB
SUB PrintPasso STATIC
'stampa il passo corrente
DIM a AS STRING
SELECT CASE Passo
    CASE IS < 999
        a$ = RTRIM$(LTRIM$(STR$(Passo))) + " H"
        a$ = STRING$(6 - LEN(a$), " ") + a$
    CASE 999 TO 99999
        a$ = RTRIM$(LTRIM$(STR$(Passo / 1000))) + " K"
        a$ = STRING$(6 - LEN(a$), " ") + a$
    CASE IS > 99999
        a$ = RTRIM$(LTRIM$(STR$(Passo / 1000000))) + " M"
        IF LEFT$(a$, 1) = "." THEN a$ = "0" + a$
        a$ = STRING$(6 - LEN(a$), " ") + a$
END SELECT
LOCATE 8, 3, 0
PRINT a$
END SUB
SUB PrintSign STATIC
DIM a AS STRING, b AS STRING
b$ = "R " + RTRIM$(LTRIM$(STR$(Sign)))
IF LEN(b$) < 5 THEN b$ = b$ + STRING$(5 - LEN(b$), " ")
SELECT CASE Sign
CASE 0 TO 63
        a$ = "S 0   "
CASE 64 TO 72
        a$ = "S 1   "
CASE 73 TO 76
        a$ = "S 2   "
CASE 77 TO 79
        a$ = "S 3   "
CASE 80 TO 88
        a$ = "S 4   "
CASE 89 TO 95
        a$ = "S 5   "
CASE 95 TO 105
        a$ = "S 6   "
CASE 106 TO 117
        a$ = "S 7   "
CASE 118 TO 130
        a$ = "S 8   "
CASE 131 TO 144
        a$ = "S 9   "
CASE 145 TO 165
        a$ = "S 9+10"
CASE 166 TO 176
        a$ = "S 9+20"
CASE 177 TO 183
        a$ = "S 9+30"
CASE 184 TO 188
        a$ = "S 9+40"
CASE 189 TO 200
        a$ = "S 9+50"
CASE 201 TO 210
        a$ = "S 9+60"
CASE IS > 211
        a$ = "OVLOAD"
END SELECT
LOCATE 8, 73, 0
PRINT a$
LOCATE 9, 73, 0
PRINT b$
END SUB
SUB PrintSquel STATIC
DIM a AS STRING
a$ = RTRIM$(LTRIM$(STR$(CINT(Squel * 100 / 255))))
a$ = STRING$(3 - LEN(a$), " ") + a$
LOCATE 8, 67, 0
PRINT a$
END SUB
SUB PrintVol STATIC
DIM a AS STRING
a$ = RTRIM$(LTRIM$(STR$(CINT(Vol * 100 / 255))))
a$ = STRING$(3 - LEN(a$), " ") + a$
LOCATE 8, 58, 0
PRINT a$
END SUB
SUB SendAcg STATIC
DIM a AS STRING
a$ = "J450" + HEX$(Acg) + CHR$(13) + CHR$(10)
PRINT #1, a$
END SUB
SUB SendAtt STATIC
DIM a  AS STRING
a$ = "J470" + HEX$(Att) + CHR$(13) + CHR$(10)
PRINT #1, a$
END SUB
SUB SendAuto STATIC
DIM a AS STRING
a$ = "G301" + CHR$(13) + CHR$(10)
PRINT #1, a$
END SUB
SUB SendFreq STATIC
DIM a AS STRING
a$ = RTRIM$(LTRIM$(STR$(RxFreq)))
a$ = STRING$(10 - LEN(a$), "0") + a$
a$ = "K0" + a$ + "0" + HEX$(Mode) + "0" + HEX$(Filter) + "00"
a$ = a$ + CHR$(13) + CHR$(10)
PRINT #1, a$
END SUB
SUB SendIfs STATIC
DIM a AS STRING
a$ = HEX$(Ifs)
IF LEN(a$) = 1 THEN a$ = "0" + a$
a$ = "J43" + a$ + CHR$(13) + CHR$(10)
PRINT #1, a$
END SUB
SUB SendInit STATIC
DIM a AS STRING
a$ = "H101" + CHR$(13) + CHR$(10)
PRINT #1, a$
a$ = "G300" + CHR$(13) + CHR$(10)
PRINT #1, a$
END SUB
SUB SendNbl STATIC
DIM a AS STRING
a$ = "J460" + HEX$(Nbl) + CHR$(13) + CHR$(10)
PRINT #1, a$
END SUB
SUB SendSquel STATIC
DIM a AS STRING
a$ = HEX$(Squel)
IF LEN(a$) = 1 THEN a$ = "0" + a$
a$ = "J41" + a$ + CHR$(13) + CHR$(10)
PRINT #1, a$
END SUB
SUB SendVol STATIC
DIM a AS STRING
a$ = HEX$(Vol)
IF LEN(a$) = 1 THEN a$ = "0" + a$
a$ = "J40" + a$ + CHR$(13) + CHR$(10)
PRINT #1, a$
END SUB
SUB SendVsc STATIC
DIM a AS STRING
a$ = "J500" + HEX$(Vsc) + CHR$(13) + CHR$(10)
PRINT #1, b$
END SUB
SUB Tempo STATIC
DIM t1 AS SINGLE, t2 AS SINGLE
t1 = TIMER
t1 = t1 + .3
DO
t2 = TIMER
LOOP WHILE t2 < t1
END SUB
SUB VarPasso (x) STATIC
IF x > 0 THEN
    SELECT CASE Passo
    CASE 1
        Passo = 10
    CASE 10
        Passo = 100
    CASE 100
        Passo = 1000
    CASE 1000
        Passo = 5000
    CASE 5000
        Passo = 9000
    CASE 9000
        Passo = 10000
    CASE 10000
        Passo = 12500
    CASE 12500
        Passo = 20000
    CASE 20000
        Passo = 25000
    CASE 25000
        Passo = 50000
    CASE 50000
        Passo = 100000
    CASE 100000
        Passo = 500000
    CASE 500000
        Passo = 1000000
    CASE 1000000
        IF x = 2 THEN Passo = 1
    END SELECT
ELSE
    SELECT CASE Passo
    CASE 10
        Passo = 1
    CASE 100
        Passo = 10
    CASE 1000
        Passo = 100
    CASE 5000
        Passo = 1000
    CASE 9000
        Passo = 5000
    CASE 10000
        Passo = 9000
    CASE 12500
        Passo = 10000
    CASE 20000
        Passo = 12500
    CASE 25000
        Passo = 20000
    CASE 50000
        Passo = 25000
    CASE 100000
        Passo = 50000
    CASE 500000
        Passo = 100000
    CASE 1000000
        Passo = 500000
    END SELECT
END IF
END SUB
CUT END ==========================

 wrote in message
news:9gb81f$dmj$1...@lacerta.tiscalinet.it...


 > Il codice può essere copiato, distribuito o modificato a scopo


Devo chiederti scusa, ma prima di adesso non ero a conoscenza di tutta la
trafile del tuo programma.



Le scuse sono bene accette, ma io volevo sapere dove si poteva arrivare a
partire dal mio codice.
Premetto che lo stesso codice era un esercizio di programmazione allo scopo
di poter usare un vecchio
inutilizzato.
Ho trovato anche altri programmi che permetto di sintonizzare le frequanze
senza usare il mouse, ma sono tutti portati ad essere utilizzati come
scanner, con tabelle di frequenze, database, ecc. Mi sembra che si stia
perdendo di vista la semplicità.
La pecca più grande del mio programma, che se avrò tempo cercherò di
correggere è la mancanza di input diretto della frequanza da tastiera, alla
stregua dei ricevitori professionali. Chissà se in futuro...
Se conosci un programma DOS che abbia anche questo si sarei grato se lo me
segnalassi.
Sono comunque cusrioso se sono state portate modifiche costruttive al codice
in oggetto.
Segnalamele se vuoi.
CIAO
iw3...@libero.it