b'@_yfhu$2sƎO*hj0'3U\jy[?ң[\E\ՓկyMLNZӲZ}_.EZ5ZSgIi2kuo\iZkSI[շM?j5slzVrZ\BmCt,e=v֫zVtlZwzQܔ\i^;z~=??Y/tvݫ!r9a=598l; 5熮*猶"o;0: ZM9-qjVnr^^DpHHuTtMz0ou F į+<83˴{9mI$)4VR^>"뭇qN.2mrM-4)_ rql*rw< G翫p Z65pZ$_*2p&,a res ;5F<6 XTUqRa[4{dCfgŶ"Ix>*Aɼmɲd[)IvX`J6ip,)U!2njZtۺ X\F0)7-c'n_7$Q6qrgՍYlny\իn|B[B53T56f;dmzh5GJC'h!е b6S V|Up.) Lɸ{3jeWMyE86ܾ߃l`a>sRܛS| Trv݀y t{ڪvOYdcH.*>ɦl@&/B`@-OF~yE&%\/e¶D @˻$ķ}ϓOww;GM\;=gqVHv\kB (x HT ɋ_8){EtF>$_UHABۘA@]7lM˨LJ7ƅߞK0k݃In=ZCFn modalita' TSTHOST v1.43B 2 conversazione se non si e' connessi, eccezion fatta per la finestra monitor ove quanto digitato verra' trasmesso come pacchetto unproto. Per ogni finestra vi e' il suo buffer di revisione. TST segnala quando vi sono dati pronti per una determinata finestra facendo lampeggiare il nominativo corrispondente. All'atto della connessione la finestra associata passa automaticamente in modo conversazione se la connessione era un comando da noi digitato, altrimenti si attiva la modalita' pms con la quale il corrispondente remoto puo' depositare messaggi, richiedere file o visualizzare il contenuto delle directory. Nella modalita' pms e' pure prevista la possibilita' di chiamare il sysop per eseguire normale qso o lanciare programmi server esterni per l'esecuzione di funzioni non standard. La connessione che avviene su finestre PMS, puo' essere regolamentata da un programma esterno chiamato CON_FILT.EXE. Il programma supporta il riconoscimento di password standard a 5 lettere ed il formato con algoritmo md2. Il formato standard e' riconosciuto dinamicamente ed accetta richieste comprese tra 1 e 10 lettere, anche se normalmente lo standard ne usa 5. La lista unproto per bbs di tipo fbb e' supportata anche con bbs che richiedono la password di accesso, idem per il forward che puo' essere normale o compresso. E' pure possibile l'estrazione su file di messaggi che contengono codice 7plus, in formato forward fbb. Sono supportati sia server attivabili da remoto con l'invio di messaggi, sia PG per ampliare i comandi del PMS con applicazioni dedicate. Infine, sono supportati i macro comandi, che possono essere attivi come al solito su piu' di un canale senza limitazioni. La comunicazione host tra pc e tnc, avviene sotto un timeout di circa 3 secondi. Ossia se dopo una richiesta da parte di tsthost il tnc entro 3 secondi non manda i dati, il programma tenta la resincronizzazione, avvertendo con un messaggio di resync. La sincronizzazione avviene anche in caso di errori sulla porta seriale. Durante il sincronismo, tsthost visualizza il numero di tentativi eseguiti: Superato il valore di 300, il programma termina per errore di protocollo seriale. Se durante questa fase si desidera abbandonare il programma, premere ALT_X. TSTHOST v1.43B 3 Utilizzo del software in modalita' host (/H) --------------------------------------------- - Configurare in modo appropriato GKJBIOS o MBBIOS o equivalente. - Caricare il driver in memoria - Caricare TSTHOST con il comando TSTHOST /H /Cx /Bzzzz ove x e' la porta seriale, 1..8, zzzz e' il baudrate della porta, i valori ammessi sono 9600, 19200, 38400. Il parametro /H indica la modalita' host. NOTA: alla partenza vengono inviati i seguenti comandi al tnc: JHOST1, USERS NumeroDiCanali, Z 0, @U 0 Al termine del programma, e' possibile rimuovere il driver dalla memoria con il comando GKJBIOS U Esempio GKJBIOS TSTHOST /H /C1 /B19200 GKJBIOS U NOTA: al posto dei driver gkjbios o combios, e' possibile utilizzare driver di tipo FOSSIL, il riconoscimento e' automatico. Utilizzo del software con driver DRSI (/D) ------------------------------------------- Tale interfaccia e' permette di utilizzare driver host di emulazione che presentino i dati secondo questo standard, tipo DEDHOST.COM di BPQ o TNCTSR etc... - Installare il driver secondo le proprie esigenze e condizioni di lavoro - Caricare TSTHOST con il comando TSTHOST /D /Ixx ove /D indica l'uso di driver DRSI, e il numero che segue la I indica il vettore di interrupt usato dal driver, in DECIMALE. NOTA: alla partenza vengono inviati i seguenti comandi al tnc: JHOST1, USERS NumeroDiCanali, @U 0 TSTHOST v1.43B 4 Utilizzo del software con tnc in modo kiss o baycom (/K) --------------------------------------------------------- Predisporre il tnc in modo kiss manualmente oppure tramite i parametri a linee di comando del driver TFPCR/TFPCX. Il driver TFPCR usa normalmente l'interrupt 254 per la comunicazione, il driver TFPCX usa solitamente l'irq 253. - Caricare il driver TFPCX o TFPCR (tfpcx modem baycom) - Caricare TSTHOST con il comando TSTHOST /T /I254 ove /T indica l'uso di driver tfpcr/tfpcx, e il numero che segue la I indica il vettore di interrupt usato dal driver. NOTA: alla partenza vengono inviati i seguenti comandi al tnc: JHOST1, USERS NumeroDiCanali, @U 0 Esempio per modem baycom: TFPCX parametri di settaggio driver, vedi manuale tfpcx TSTHOST /T /I253 Esempio per modo tnc kiss TFPCR parametri di settaggio, vedi manuale tfpcr TSTHOST /T /I254 ATTENZIONE: La versione 3.30 della tfpcr da me provata andava in tilt su trasferimenti radio a 9600 baud g3ruh. Non appena si arrivava attorno ai 400-450 cps, segnalava un protocol error. Presumo non riesca a gestire correttamente la memoria ad alta velocita'. La verisione 2.10 e l'ultima release TFKISS non presentano tale problema. I suoni con il baycom, parametro /Sx ------------------------------------ In modalita' baycom alcuni driver, tipo tfpcx, velocizzano i timer di sistema usati da tsthost per riprodurre i suoni; il risultato e' che i suoni risultano distorti o inudibili. Per ovviare a questo inconveniente, e' possibile usare il parametro /SX all'avvio di tsthost, ove X e' un valore che puo' varaiare tra 1 e 1000, e rappresenta un valore di moltplicazione usato internamente da tsthost come allungamento dei tempi di suono. Valori approssimati sono S200 per baycom a 1200 baud, e S400 per baycom a 2400 baud, potete comunque variarlo a vostro piacimento. TSTHOST v1.43B 5 NOTA BENE: TstHost non puo' sapere se state usando un modem baycom o un tnc in kiss mode. Dato che in modo kiss non viene effettuata nessuna velociazzione, usare una fattore di moltipicazione S1000 significa far durare 1000 secondi un suono di 1 secondo! NON USATE QUESTO PARAMETRO SE NON NECESSARIO. Uso del software con due o piu' radio ------------------------------------- E' possibile utilizzare due o piu' interfacce radio con il programma. Allo scopo e' necessario utilizzare il driver TFPCX v2.10 che supporta fino ad 8 porte radio, con tnc di tipo modem, kiss o baycom. Queste vogliono essere solo due note di esempio, informazioni dettagliate sull'uso del driver sono fornite nel suo manuale. Essendo capace di gestire piu' porte radio, tale driver include un comando per definire quali canali assegnare ad ogni porta: il comando host e' @PO xxxxxxxxx. X accetta valori compresi tra 0 ed il numero di interfacce caricate, sequenzialmente, 0 e' la prima interfaccia caricata, 1 la seconda etc. Ogni x e' un canale, la prima x il canale 1, la seconda il canale due etc. Ma prestate attenzione al fatto che tsthost supporta un massimo di 8 canali. Il driver tfpcx v2.10 puo' naturalmente essere utilizzato anche con un solo tnc, baycom od altro, in questo caso pero' il comando @PO ovviamente non serve, dato che tutti i canali saranno assegnati alla singola porta. Ecco alcuni esempi: Abbiamo 2 tnc, collegati in com1 e com2, sono entrambi tnc classici e si suppone per semplicita' che siano gia' settati in modo KISS. La velocita'seriale tra pc e tnc e' di 19200 baud. Vogliamo assegnare al tnc collegato in com1 i canali da 1 a 4, gli altri, da 5 a 8 al tnc collegato in com2. TFPCX -PKISS1 -PKISS2 -B19200:19200 -CH8 TSTHOST /T /I253 In tsthost.cfg aggiungiamo l'istruzione PARAM 0 @PO 00001111 Ora abbiamo 2 tnc gia' in kiss e un modem baycom. Il modem baycom, operante a 1200 baud, e' collegato sulla com1, i tnc sulla com2 e com3; il tnc in com 2 usa 19200 baud in seriale, quello sulla com 3 usa l'irq 10 e 9600 baud in seriale. Vogliamo assegnare i canali 123 al baycom, 456 al tnc in com2, 78 al tnc in com3. TSTHOST v1.43B 6 TFPCX -PCOM1 -PKISS2 -PKISS3:03E8:10 -B1200:19200:9600 -CH8 TSTHOST /T /I253 In tsthost.cfg aggiungiamo l'istruzione PARAM 0 @PO 00011122 Questo ultimo esempio non ho potuto testarlo in quanto non possiedo modem baycom, grazie a chi vorra' fornirmi l'esito delle prove e delle modifiche del caso sul settaggio di tfpcx. Uso del soft su dischetti, parametro /ND ---------------------------------------- Tsthost e' pensato per un utilizzo si hard disk, ma, anche nulla vieta di usarlo su di un sistema a dischetti, con naturalmente le implicazioni del caso visto la poca capacita' degli stessi. TstHost dispone di un test interno, che viene eseguito ogni minuto, che accerta la quantita' di spazio disco disponibile. Se questa scende sotto i 500 Kbytes, tsth emette a video un messaggio di avvertimento. Su un sistema a dischetti, molto probabilmente avrete sempre uno spazio inferiore al minimo, quindi potrebbe risultare fastidioso il continuo uscire del messaggio di avvertimento. Il parametro /ND dice a tsth di NON effettuare questo controllo sullo spazio disco. Vorrei sottolineare che tsth esegue solo un controllo, e' a carico vostro mantenere il spazio a sufficienza affinche' tsth possa funzionare. Uso della memoria ----------------- TstHost utilizza la memoria in modo dinamico, ossia la memoria viene richiesta al sistema quando necessaria, e liberata quando non piu' richiesta. Tuttavia, parte di questa memoria e' sempre necessaria, ad esempio per il mantenimento dei buffer di ricezione, delle strutture dei canali etc. L'attuale richiesta di memoria da parte di tsthost, per un normale funzionamento, e' di circa 500 Kbyte e consente al programma di girare su tutti i tipi di pc che abbiano almeno 640k di memoria inseriti. Tuttavia, ulteriori richieste di memoria possono verificarsi: 1) TFPCX-TFPCR se usati richiedono ulteriori 64K 2) La lista unproto, in configurazione minima, richiede 24K 3) Il comando RUN, ed in genere qualsiasi applicazione SERVER che richieda lo shell al sistema operativo, necessitano di memoria sufficente per caricare COMMAND.COM e il programma da eseguire. TSTHOST v1.43B 7 4) La decodifica dei dati compressi per forward e ricezione unproto necessitano di altri 19K La memoria ESPANSA, comando /NOEMS ---------------------------------- TstHost e' in grado di rilevare automaticamente la presenza di un driver per memoria EMS, ed utilizza questo tipo di memoria per conservare la maggior parte dei dati. Questo consente di liberare circa 240Kbyte di memoria convenzionale. Nel caso il vostro pc non rispondesse correttamente all'utilizzo della memoria espansa, e' possibile disabilitarne l'uso con il comando /NOEMS, esempio: TSTHOST /H /B19200 /C1 /NOEMS La memoria ESTESA, comando /NOXMS --------------------------------- TstHost permette l'utilizzo della memoria ESTESA tramite l'uso di driver tipo HIMEM.SYS per la conservazione della maggior parte dei dati. Questo consente di liberare circa 210 kbyte di memoria, ma tenete presente che la gestione in XMS e' piu' lenta rispetto alla memoria convenzionale o ems. La priorita' di selezione per tsthost e' prima riempimento di EMS, poi XMS, quindi memoria convenzionale. Il parametro /NOXMS indica a tsthost di ignorare questo tipo di memoria. Esempio: TSTHOST /H /B19200 /C1 /NOXMS Riduzione dei buffer RX, comando /Rsize --------------------------------------- Nel caso non vi sia memoria sufficente nel sistema, per l'utilizzo delle varie applicazioni, e' possibile ridurne il consumo diminuendo la capacita' dei buffer di revisione dei canali. Normalmente vengono allocate 300 righe per ogni canale, ogni riga occupa 82 byte. Il comando /Rsize permette di specificare quante righe usare, da un minimo di 100 fino a 750. Ad esempio con TSTHOST /H ..... /R200 si ha un risparmio di: (300-200)x82x9=73800 byte, 73K. TSTHOST v1.43B 8 Il numero di canali, parametro /K --------------------------------- Questo parametro permette di specificare quanti canali usera' tsthost. Il suo uso e' da intendersi come riduzione dell'occupazione di memoria, per eprom vecchio tipo che accettano al massimo 4 canali..... E' possibile definire da 2 a 8 canali, 8 default: per esempio, per fornire 4 canali, aggiungere alla riga di lancio di tsthost il parametro /K4 La dimensione della lista unproto, parametro /U ----------------------------------------------- TstHost cerca sempre di settare la dimensione della lista unproto a 800 messaggi. Se avete problemi di memoria o per altre vostre esigenze, potete ridurre la dimensione usando questo parametro, che accetta valori tra 200 e 800. 800 e' il default: Per esempio, per settare la lista a 400 messaggi, aggiungere /U400 alla riga di lancio di TstHost. Modalita' VGA ------------- Tsthost supporta la visualizzazione a schermo standard 25 righe, oppure 43/50 righe per schede EGA/VGA. Per attivare questa opzione aggiungete al comando di lancio di tsthost il parametro /VGA Esempio: TSTHOST /H /B19200 /C3 /VGA TSTHOST v1.43B 9 Interfaccia estesa di richiesta dati, switch /V ----------------------------------------------- A partire dalla versione 1.41 TstHost provvede un nuovo ed efficente sistema per la richiesta di dati particolari sul funzionamento del sistema. La richiesta dei dati avviene tramite una chiamata al vettore di interrupt interno usato da tsthost. Questo interrupt e' per default 101, 65 HEX, ma puo' essere modificato in caso di esigenze particolari con lo switch di comando /V, che prevede il passaggio di un valore espresso in modalita' DECIMALE. Ad esempio: TSTHOST ... /V100 usera' il vettore 100, (64H) invece che il 101 NOTA: TSTHOST PREVEDE L'USO ESCLUSIVO DI QUESTO VETTORE. Vedi anche il file di sistema TSTHOST.IRQ Programmi, server, pg potranno interrogare questo interrupt per richiedere dati particolari al programma, sia generali che relativi ad un particolare TASK. I dati vengono restituiti in una struttura della forma qui' sotto rappresentata, che e' una area statica interna al programma tsthost. Per questo motivo, se tra due chiamate e' necessario mantenere le informazioni della chiamata precedente, tali info dovranno essere copiate in una area di memoria del programma chiamante, dato che saranno sovrascritte alla successiva chiamata del vettore. Il programma che desideri ottenere info, dovra' passare alla routine di interrupt il registro AX, con AH contenente 0, e AL contenente il canale per il quale si desidera ottenere le informazioni. Al ritorno dall'interrupt, in caso di errore AH sara' diverso da 0, mentre AL conterra' il numero di canali attivi in tsthost, normalmente 8, ma potrebbero essere meno se tsthost e' stato lanciato con il parametro /K. Allo stato attuale, l'unico errore possibile e' la richiesta dati di un canale non esistente. In caso di successo, AH sara' 0, AL conterra' ancora il numero di canali supportato da tsthost, ES:BX punteranno all'area statica in cui sono contenute le informazioni. NON DOVETE MAI E POI MAI SCRIVERE IN QUESTA AREA, POTETE SOLO LEGGERE. LA SCRITTURA IN QUESTA ZONA PORTERA' SICURAMENTE AD UN BLOCCO DEL SISTEMA. TSTHOST v1.43B 10 Ecco il formato della struttura di ritorno. Secondo le convenzioni C, ogni array di caratteri e' 0 terminato. struct info { // QUESTI VALORI SONO GLOBALI, NON DIPENDONO DAL CANALE //==================================================== unsigned char THVH; //Versione di tsthost, parte alta unsigned char THVL; //Versione di tsthost, parte bassa int MAXCHANNEL; //Numbero di canali gestiti da tsthost char DRVTYPE; //tipo di driver, 1 host, 0 tfpc, 2 drsi char PORT; //se host reale, numero di porta com unsigned int BAUDRATE;//se host reale, baudrate. int INTNO; //se tfpcx o tfpcr, irq usato dal driver char TstHostCall[10]; //callsign del sistema, con ssid char UListEnable; //se non 0, la lista unproto e' attiva. char Wpath[81]; //tsthost WorkDir char Upath[101]; //tsthost UserDir. In caso di multipath, i //percorsi sono separati da uno spazio char HomeBbs[10]; //callsign di homebbs char HomeAlias[10]; //homebbs alias call, null se indefinito // I SEGUENTI CAMPI SONO INVECE DIPENDENTI DAL CANALE //==================================================== int chstatus; //0 il canale e' sconnesso //1 connessione standard, ho connesso // io l'altro OM //2 connessione PMS, un utente ha // collegato il mio pms //3 PMS, home bbs mi ha collegato e sta // facendo fwd //4 PMS, io ho collegato homebbs per fare // fwd //5 UNPROTO, io ho collegato homebbs per // richiedere messaggi in unproto char SuppCall[10]; //se non vuoto, extra-callsign del canale // (comando AX PORT) char UserCall[10]; //call della stazione collegata, con ssid // I SEGUENTI CAMPI SONO VALIDI SOLO PER UTENTI CHE // HANNO COLLEGATO IL PMS, chstatus=2 o 3 //===================================================== char UIname[13]; //nome dell'utente long UILastConnTime; //in sec dal 1970, data ultima connessione long UILastMsgList; //in sec, data ultimo messaggio listato long UINbrConn; //numero di conn. effettuate dall'user long UIThisConnTime; //in secondi, data attuale di connessione unsigned int SysFlag; //attuale flag SYS dell'utente }; TSTHOST v1.43B 11 Interfaccia TSR per dati monitor, comando TSRMON ------------------------------------------------ Questa e' una interfaccia che permette ad un programma esterno a tsthost, di gestire i dati ricevuti sulla porta monitor: la funzione apre la strada a numerose possibilita..... un esempio potrebbe essere un programma esterno che monitorizzi le emissioni di un packet cluster, analizzi il log di stazione ed esegua le operazioni del caso, tipo cambio di frequenza della radio hf o altro..... Le applicazioni sono molteplici. Il gestore esterno puo' essere un device driver, o un tsr caricato prima di tsthost. Il gestore comunica con tsthost tramite un vettore di interrupt, e riceve da tsthost tutti i dati che transitano sulla porta monitor: questo significa che i dati ricevuti dal gestore saranno influenzati dal tipo di monitor aperto tramite il comando AX MONITOR di tsthost. Non sono invece influenti gli switch /T e /F del comando ax monitor, il gestore riceve sempre i dati nella forma originale. Da notare che il gestore NON sostituisce le funzioni interne di tsthost, che continueraano a funzionare normalmente, riceve solo una copia dei dati transitati. L'attivazione ed il coollegamento di un gestore esterno si effettuano con il comando TSRMON, che ha la seguente forma: TSRMON IRQVECT IrqVect e' il numero di interrupt, espresso in DECIMALE, che tsthost invoca per passare i dati all'interfaccia esterna. Per disabilitare una interfaccia precedentemente caricata, utilizzare 0 come valore per IRQVECT. Dato che tsthost non puo' conoscere come e' costruito il gestore, ne su quali interrupt lavora, non e' possibile stabilire nessun controllo sul numero di irq da voi specificato. USATE QUINDI IL COMANDO CON CAUTELA, non passate valori di gestori inesistenti, o con molta probabilita' manderete in crash il vostro PC! TstHost invochera' il gestore caricando i registri della CPU con specifici valori, e chiamando quindi l'interrupt specificato col comando TSRMON. Il gestore ricevera' i dati nella seguente forma: AH: sempre 0 AL: dovrebbe indicare il numero di canale, ma dato che al momento l'interfaccia prevede solo il monitor, anche questo sara' 0. BX: indichera' il tipo di pacchetto dati. Per il momento sono solo TSTHOST v1.43B 12 supportati i pacchetti monitor, quindi BX potra' avere come valori: 4 header senza dati, tipo i pacchetti di controllo RR, RNR e i pacchetti di connessione/sconnessione 5 header di un pacchetto dati, tipo i frame UI dei beacon e i frame I di colloquio tra due stazioni. Il pacchetto presenta solo l'header, i dati veri e propri verranno passati con il successivo pacchetto. 6 Dati di un precedente pacchetto di tipo 5. Sia il tipo 4 che il tipo 5 rappresentano l'header esattamente come viene visualizzata in monitor, quindi in forma gia' tradotta, tipo: fm IK1GKJ to BEACON ctl UI^ pid F0 SI: Indica quanti byte sono presenti nel pacchetto in esame, in pratica la dimensione. La massima dimensione che potrete ricevere e' di 256 byte. CX:DX nella forma segmento:offset, rappresentano l'indirizzo della area di memoria in cui sono contenuti i dati. ATTENZIONE, questa e' una area di SOLA LETTURA, non scrivete in questa zona, o probabilmente manderete in crash il pc. Ora alcuni semplici suggerimenti per la scrittura di un buon programma di interfaccia a questa funzione: - TstHost e' fermo durante l'elaborazione del vostro programma, quindi scrivete codice compatto e veloce, impiegate il minor tempo possibile. - NON USATE LO STACK di tsthost, utilizzate uno stack personale per la vostra applicazione. Lo stack di tsthost e' dimensionato per il suo utilizzo, e potreste saturarlo. - NON USATE allocazione dinamica nel far heap, potreste bloccare la memoria di tsthost. Se avete bisogno di memoria dinamica, riservate una zona di heap locale all'attivazione del tsr. - Non alterate i registri di tsthost, salvate i registri di tsthost nello stack o altra area opportuna prima di modificarli, e ripristinateli prima di uscire dal programma. - Ed infine, NON DOVETE ASSOLUTAMENTE SCRIVERE NELLA ZONA DI MEMORIA PUNTATA DA CX:DX, come detto prima quella e' una zona di sola lettura. TSTHOST v1.43B 13 Tasti chiave ------------ ALT F1 Invio automatico della password sulla finestra corrente ALT F2 Visualizza la lista MHEARD, (se il software del tnc lo ammette) ALT F3 Attiva il monitor (in finestra monitor, F9) ALT F4 Toglie il monitor ALT F5 Attiva il monitor per U frame ALT F6 Attiva visualizzazione lista unproto ALT F7 Attiva finestra selezione file per DIR ALT F8 Attiva lista messaggi PMS ALT F10 Spegne il lampeggio dell'indicatore nuova posta CONTROL ESC o F10 Passaggio da modo comando a modo conversazione PAGE UP Attiva modo revisione, Pagina su in modo revis PAGE DOWN Pagina giu in modo revisione SHIFT UP Una riga su in modo revisione SHIFT DOWN Una riga giu in modo revisione CTRL_PAGE_DOWN Esce dal modo revisione CTRL_HOME Inizio buffer revisione CTRL_END Fine buffer revisione ENTER Se in modo comando esegue il comando digitato. Se in modo conversazione trasmette il testo. In entrambi i modi, se la revisione e' attiva, la modalita' viene disattivata. CURSORE SU Richiama l'ultima riga digitata, fino a 10 CURSORE GIU Prossima riga nel buffer circolare tastiera. F1...F8 Cambio finestra attiva F9 Finestra Monitor CTRL-F1..F10 Definibili dall'utente. SHIFT-F1..F10 Definibili dall'utente. CTRL_BACKSPACE Cancella da cursore a parola precedente CTRL_LEFT Sposta cursore una parola a sinistra CTRL_RIGHT Sposta cursore una parola a destra HOME Cursore ad inizio riga END Cursore a fine riga BACKSPACE Cancella carattere a sinistra del cursore DELETE Cancella carattere sotto il cursore INSERT Attiva disattiva modo inserimento. ESCAPE Cancella riga corrente. TSTHOST v1.43B 14 Path dei files -------------- Non vi e' una directory di partenza obbligatoria per tsthost.exe, ma e' importante la struttura ad albero sottostante. Nella directory ove si trova tsthost.exe dovrete creare tre sottodirectory, una di nome PG, una di nome MAIL, una di nome USERS. Questa potrebbe essere una classica installazione: \TSTHOST |-PG |-MAIL |-USERS |-UPLOAD |-TSTHOST.EXE |-TSTHOST.DOC |-TSTHOST.PSW File di password automatica |-TSTHOST.CFG File di configurazione |-TSTHOST.ENT Testo di ingresso al pms |-???????.ENT Testo di ingresso selettivo al pms |-TSTHOST.HLP File di help per il pms |-TSTHOST.PGS File list descrizione server PG disponibili |-TSTHOST.SHD File di configurazione tnc per fine programma |-TSTHOST.SYS File password PMS accesso remoto pms |-TSTHOST.CRN File di comandi eseguito ogni ora. |-TSTHOST.IRQ Identificazione vettore IRQ, gestito da tsthost |-TSTHOST.USR Database utenti, gestito da tsthost |-TSTHOST.HBB File di routing automatico |-???????.ULS File lista unproto, creato/gestito da TSTH |-???????.CON File connessione per HomeBbs, creato dall'utente |-TSTHOST.IN File mail di import, per pg e server |-TSTHOST.LOG Lo crea TSTHOST se LOG=ON |-TSTHOST.DMS Database dei messaggi PMS, creato/gestito da TSTH |-TSTHOST.BID File bid usato da tsth, gestito da TSTH |-TSTHOST.EXT Estensioni di file, creato dall'utente |-TSTHOST.MAC File di definizione dei macro comandi |-TSTHOST.HRT File dei routing gerachici. |-DBFMSG.OLD Database messaggi vecchio, creato/gestito da TSTH |-Files del comando source (se ne create) Vediamo in dettaglio i vari files e directory: PG - Directory dei server E' un direttorio ove risiederanno i vari server del pms. Se tale directory non esiste non sara' possibile eseguire il comando PG da PMS. I server sono descritti piu' avanti nel manuale. TSTHOST v1.43B 15 MAIL - Directory dei messaggi E' un direttorio ove verranno depositati i file di posta del PMS, se tale directory non esiste non funzionera' correttamente la sezione di posta elettronica del pms. USERS - Directory utente E' il direttorio a disposizione per gli utenti. Questo percorso non e' necessario che sia creato qui', puo' essere un qualunque altro percorso nel vostro disco, basta che lo definiate con il comando USERDIR di tsthost. Tenete presente questo: alla partenza tsthost assume che USERS sia una directory situata sotto tsthost.exe, ma tale path puo' essere ridefinito usando il comando USERDIR. Quindi o create l'albero cosi' come e' proposto oppure non create la directory USERS ma usate il comando userdir per definirne uno altrove. Tale sistema si e' reso necessario in quanto se per default la directory users fosse la stessa di tsthost, un utente collegato al pms avrebbe accesso ai file di sistema, come quelli di password, con risultati indesiderati hi! Per quanto riguarda il pms, tale direttorio influenza i comandi W, YU, YD. UPLOAD - Directory di upload per pms In questa directory vengono depositati tutti i programmi che un utente del pms vi manda con la funzione YU. Dovete creare questa directory, altrimenti il comando YU del PMS non funziona. WORKDIR - Directory di lavoro standard Questo direttorio e' per default il direttorio ove si trova tsthost.exe. La sua influenza si estende ai comandi WRITEBUF, RECORD, SEND, YPUT, YREC, DIR. Il suo scopo e' quello di fornire la possibilita' di separare i files del programma da eventuali files di registrazione od altro. E' possibile cambiare tale direttorio con il comando WORKDIR PATH. Quando assieme ad uno dei menzionati comandi non viene passato un percorso o drive assieme al nome del file, tali comandi lavorano su questo direttorio, altrimenti lavorano sul path passato. Per esempio, supponiamo che io abbia dato il comando WORKDIR C:\TMP, (ovviamente C:\TMP ESISTE!), e voglia salvare il contenuto del buffer di ricezione in un file su disco. Se digito WR ALFA, il buffer verra' salvato in un file di nome ALFA in C:\TMP, ma digitando WR D:\TEXT\ALFA, il file verra' salvato nel percorso specificato. TSTHOST v1.43B 16 TSTHOST.IRQ - Detenzione interrupt interno Per la nuova interfaccia di richiesta dati, che interroga tsthost tramite un vettore di interrupt, si rende necessario informare i programmi che ne fanno uso di quale sia il vettore usato da tsthost. Questo file viene creato alla partenza di tsthost nella directory di tsthost.exe, e cancellato quando la sua esecuzione termina. Il suo scopo e' quello di informare eventuali server/pg che usano la nuova interfaccia ad irq di tsthost per ottenere informazioni estese, su quale sia il vettore di interrupt usato da tsthost. Al suo interno contiene un unica riga dal valore: TstHostInterruptVector=XX Dove XX e' un numero decimale che rappresenta il vettore di irq usato. E' un file molto importante per il corretto funzionamento dei server/pg, quindi non manipolatelo mai, e in particolar modo non settatelo come READ-ONLY. TSTHOST.USR - Users database Questo file di sistema, e' creato e gestito da tsthost nella directory di tsthost.exe. Al momento questo file e' usato solo per la registrazione del nome dell'utente e della data di ultima connessione. Questo e' il formato: struct UInfo { char call[7]; /* call dell'utente */ char name[13]; /* nome dell'utente */ long LastConnTime; /* in sec. dal 1970, data ultima conn */ long LastMsgList; /* data dell'ultimo messaggio listato */ long NbrConn; /* numero di connessioni effettuate */ long ThisConnTime; /* data di connessione attuale */ char PrivDir[31]; /* directory privata utente */ char reserved[61]; /* riserva per applicazioni future */ }; /* 128 byte ogni record */ TSTHOST v1.43B 17 TSTHOST.HBB - File di routing automatico Questo e' un semplice ascii file, a cura del sysop, che deve essere posto nella directory di tsthost.exe. Il suo scopo e' quello di fornire un routing automatico a quelli messaggi che ne sono sprovvisti, e che sono stati creati LOCALMENTE, tramite i vari S SR SC SP etc. Quando un nuovo messaggio viene generato, se il campo routing e' vuoto, viene ricercato in questo file, se esiste, una eventuale corrispondenza con il campo TO del messaggio. In questo caso il campo route del messaggio viene settato con quanto specificato in questo file. Se invece il messaggio e' provvisto di un proprio routing, tale routing NON VIENE ALTERATO. Il formato del file e' molto semplice, ogni riga errata viene ignorata, una riga valida ha la forma CALL @ BBS, dove sia CALL che BBS sono nominativi SENZA SSID. Se ad esempio nel mio file esiste la riga: IK1MSL @ IK1ZZZ Il messaggio SP IK1MSL @ IK1ABC non verra' manipolato, ma SP IK1MSL verra' automaticamente indirizzato su @IK1ZZZ TSTHOST.HRT - File dei routing gerachici. Cosa sono i routing gerachici? Sono estensione del routing che permettono un piu' dettagliato indirizzamento. Ad esempio, per il mio bbs di appoggio, IK1MSL, l'indirizzo gerachico e' IK1MSL.IPIE.ITA.EU: la parte .IPIE.ITA.EU e' l'indirizzo gerarchico del bbs. Lo scopo di questo file binario, e' quello di memorizzare tutti i routing gerachici dei messaggi che transitano sul bbs. Al momento di spaedire un file per un determinato route, se e' noto l'indirizzo gerarchico tsthost lo aggiungera' automaticamente al campo route, facilitando cosi' le cose al proprio bbs. Non e' necessaria normalmente nessuna manutenzione a questo file, che e' gestito interamente da tsthost, anche se sono previsti dei comandi per fissare manualmente dei routing gerachici. Come dicevo, questo e' un databse binario, con struttura ad albero binario: la prima entry e' la radice, i call lessicamente inferiori sono nei nodi di sinistra, gli altri in quelli di destra. Non sono ammesse chiavi doppie. TSTHOST v1.43B 18 Un call variabile viene automaticamente manipolato dal programma, che lo aggiorna in base alle informazioni ricevute durante la ricezione/invio di messaggi. Un call permanente e' fisso, e modificabile solo da tastiera. Per default, tutti i call sono variabili se non specificato diversamente call per call. Questa e' la struttura del record binario: struct hroute{ char type; 0=variabile, 1=permamente; char call[7]; callsign char hroute[35]; indirizzo gerarchico; long sx; nodo sinistro; long dx; nodo destro; } 51 bytes totali. TSTHOST.PSW - File di password automatica e' il file contenente le password per i sistemi che richiedono la password all'accesso o per il comando sys dei sysops. Nella prossima sezione del manuale e' descritto in dettaglio. TSTHOST.SYS - File di autorizzazione uso comando SYS E' un file simile al precedente. Il suo formato e': NOMINATIVO_SENZA_SSID FLAG PASSWORD Solo i call registrati in questo file possono eseguire il comando SYS. Ogni riga contiene un nominativo, senza ssid, seguito dal flag di autorizzazione e dalla password, che non deve superare i 255 caratteri alfanumerici contigui senza spazi. Esempio: IK1GKJ 3 aabbcc IK1MSL 1 8873mnhbkjAST Flag e' un campo a somma di bit: 1 significa che l'utente puo' accedere con YD, W, V ad ogni drive e percorso del sistema, ma puo' scrivere (YU) solo in USERDIR\UPLOAD. 2 come sopra, ma e' ammessa anche la scrittura in ogni disco di sistema. 4 l'utente puo' eseguire comandi remoti DOS. TSTHOST v1.43B 19 8 l'utente puo' eseguire yapp anche se lo yapp sul pms e' disabilitato, comando PYAPP OFF 16 l'utente ha accesso a tutti i messaggi da remoto, come se fosse collegato alla consolle del programma, inclusa la possibilita di editing dell'intestazione. (comando EM, FA, FR) 32 L'utente ha il permesso di eseguire lo shutdown remoto del sistema, accede quindi ai comandi /E? Nell'esempio sopra, IK1GKJ puo' leggere e scrivere ovunque nel sistema (1+2=3), IK1MSL puo' leggere in tutto il sistema ma scrivere solo nella dir UPLOAD TSTHOST.CFG - File di configurazione automatica e' il file di configurazione automatica di tsthost. E' un semplice file ascii, in cui e' contenuto un elenco di comandi; alla partenza tsthost cerca questo file, e se trovato lo esegue riga per riga, come se voi aveste introdotto i comandi da tastiera. Qualsiasi comando che voi digitate da tastiera puo' essere posto in questo file. TSTHOST.SHD - File di configurazione per fine programma e' identico a tsthost.cfg, solo che viene eseguito quando terminate il programma. ???????.ULS - File di lista unproto e' praticamente il contenuto della lista unproto. Quando attivate la lista, il programma legge questo file per ricaricare l'ultimo contenuto della lista. Quando chiudete la lista o terminate il programma, il contenuto della lista viene scritto in questo file. Se cancellate questo file, il programma richiedera' al bbs la lista partendo dal messaggio numero 1. L'estensione del file e' sempre ".ULS", il nome e' rappresentato dall callsign del vostro homebbs senza ssid. TSTHOST v1.43B 20 TSTHOST.ENT - Testo alla connessione PMS e' un semplice file di testo che viene inviato all'utente all'atto della connessione. Potete inserire qualunque cosa volete, cosi' come se non vi serve potete cancellarlo, non generera' nessun errore. ??????.ENT - Testo selettivo alla connessione PMS ????? rappresenta il call senza ssid dell'utente che ha connesso il pms. Se esiste un file con questo nome nella directory di tsthost.exe, verra' inviato qusto file invece del testo standard ed eventuale tsthost.ent. Il file, e' un semplice file ascii. E' possibile creare file vuoti, in tal modo nessun testo verra' inviato alla connessione se non il prompt del pms. TSTHOST.HLP - File di help per utenza pms anche questo e' un file di testo, che viene inviato all'utente del pms quando da' il comando di help (?). Potete editare quello da me proposto se avete delle idee migliori o pensate sia insufficente, ma se eliminate questo file il pms al comando di help rispondera' che non vi sono help disponibili. TSTHOST.PGS - Elenco dei server PG questo file non e' fornito col programma, dato che si riferisce alla sezione pg ed e' quindi strettamente personale. E' comunque un file di testo che contiene la descrizione degli eventuali server del pms, ammesso che ne abbiate. Quando l'utente da' il comando PG senza specificare un server al pms, se esiste questo file ne viene inviato il contenuto, altrimenti il pms rispondera' dicendo che non vi sono server disponibili. TSTHOST.LOG - Elenco delle connessioni E' un file creato da tsthost se il comando LOG e' ad ON, e contiene l'elenco data/ora delle connessioni TSTHOST v1.43B 21 FILE DI SOURCE Sono files simili a tsthost.cfg, che vengono eseguiti con il comando SOURCE filename, possono servire per crearvi configurazioni particolari da attivare al momento. TSTHOST.CRN - File di esecuzione comandi orari E' un file di comandi eseguto, se presente, ogni ora. Il file, se necessita, deve essere messo nella stessa directory di tsthost.exe e viene creato con un semplice editor ascii dal sysop. NOTA: ogni comando puo' essere posto in questo file, tsthost non esegue alcun controllo, ma proprio per questo motivo evitate di mettere comandi che non hanno senso. Il formato e' molto semplice: - ogni riga che inizia con '#' e' un commento ed ignorata. - Ogni blocco orario inizia con il carattere * - In un blocco orario possono essere definite piu' ore nel formato * INIZIO-FINE - Ogni blocco orario e' seguito da uno o piu' comandi, uno per riga. - Il blocco comandi per quell'orario termina all'inizio di un nuovo blocco orario o alla fine del file. - Le righe nel file non devono superare gli 80 caratteri. Ad esempio * 11 <-- eseguiti solo alle 11 CMD1 CMD2 * 12-14 <-- eseguiti alle 12,13,14 CMD3 CMD4 * 00-23 <-- eseguiti ogni ora CMD5 TSTHOST v1.43B 22 TSTHOST.BID - File dei BID Questo e' un file molto importante, e non deve essere manipolato o cancellato. Il suo scopo e' quello di mantenere traccia dei bid ascoltati e del numero di bid usato da tsthost. Ma cosa sono i BID? In parole povere un bid e' una parola che identifica in modo univoco un messaggio. Ogni volta che viene creato un messaggio, sia da tsthost che da un bbs, viene assegnato al messaggio un bid univoco, in modo da evitare lo scambio di duplicati. Suppponiamo ad esempio che io forwardi al bbs il messaggio XX, che ha bid YY. Ok, poi cerco di mandarglielo ancora: il bbs trovera' che il BID YY e' gia' stato ricevuto, e quindi rifiutera' il messaggio dicendo no grazie, e' gia' in mio possesso. La stessa cosa esegue tsthost quando riceve un messaggio. I bid interni di tsthost sono numeri sequenziali formati da un numero + il vostro indicativo: 12345-IK1GKJ (1->2->3->..65535->1->2 etc.) Ora se voi cancellate o perdete questo file, vengono perse 2 cose: 1) Perdete l'elenco dei bid ascoltati, in questo caso esiste la possibilita' che vi vengano rimandati dei messaggi gia' in vostro possesso; possibilita' remota in quanto non puo' avvenire se il forward vi viene dato da un solo bbs. 2) Cosa grave, perdete l'ultimo numero di bid usato da tsthost per inviare i suoi messaggi. Supponiamo il vostro tsthost abbia creato localmente 10 messaggi, avra' usato i numeri di bid da 1 a 10. Con la distruzione di questo file, si dovra' ripartire da 1, ma il vostro bbs avra' gia' ricevuto i bid da 1 a 10, quindi fino a quando non tornerete a 11 rifiutera' i messaggi da voi inviati in forward. Allo scopo, e' appunto presente il comando NBID, da usare SOLO in caso di necessita' per variare manualente il numero di bid. Alla partenza di tsthost, se il file tsthost.bid non viene trovato, tsthost vi chiede se intendete crearlo (normale alla prima partenza). Inserite Y se volete la creazione (in caso aveste perso il file usate NBID), oppure N per uscire dal programma ed usare una copia di backup. TSTHOST.BID e' un file circolare di 3001 record. Ogni record e' lungo 13 byte, che sono i bid ascoltati (char[13]). Il record 1 e' un' eccezione, contiene 2 numeri (in rappresentazione letterale): il primo e' il prossimo bid che tsthost dovra' usare, l'altro il primo record da sovrascrivere nel file. TSTHOST v1.43B 23 TSTHOST.IN - File di import E' un file di testo, che tsthost cerca ogni minuto, e se trovato lo processa. Lo scopo di questo file e' quello di fornire a SERVER e PG la possibilita' di depositare sul mailbox posta per l'utente. Sostanzialmente, TSTHOST si aspetta di trovare in questo file una serie di comandi SP o SB, come se il messaggio venisse immesso da tastiera o dall'utente remoto. Attenzione che la sintassi di questo file e' molto rigida: viene per prima cosa ricercato un comando di tipo SP o SB, quindi la riga seguente sara' il titolo del messaggio, infine il contenuto del messaggio fino all'incontro di un /EX ad inizio riga. Esempio: SP IK1ABC @ IK1MSL < IK1BBB titolo del messaggio messaggio linea 1 messaggio linea 2 ..... /EX SB TUTTI @ ITA titolo del messaggio messaggio linea 1 messaggio linea 2 ..... /EX Il campo destinatario e' ovviamente obbligatorio, gli altri sono opzionali. Se non specificato un campo ROUTE (@) il messaggio non verra' inviato in forward. Se non specificato il campo FROM (<), verra' assunto per default il nominativo della stazione PMS. ATTENZIONE: la lunghezza delle linee non dovra' superare gli 80 caratteri. TSTHOST v1.43B 24 TSTHOST.DMS - Database dei messaggi PMS E' un file binario, ed e' gestito interamente da tsthost; non manipolatelo a meno che non siate sicuri di cosa state facendo. Sostanzialmente e' un database per lo smistamento dei messaggi pms contenuti nella directory MAIL. Il metodo piu' semplice per distruggere tutti i messaggi del pms consiste nel cancellare questo file, se presente, quindi occhio. Ecco la struttura del record per chi volesse scrivere server: struct dirmes { char type; /* tipo del messaggio BPT */ char status; /* stato del messaggio NFKYXH */ long number; /* numero del messaggio */ int da_year; /* data di creazione, anno */ char da_day; /* giorno */ char da_mon; /* mese */ unsigned char ti_min; /* orario di ricezione, minuti */ unsigned char ti_hour; /* ore */ unsigned char ti_hund; /* centesimi di secondo */ unsigned char ti_sec; /* secondi */ char to[7]; /* destinatario */ char route[7]; /* bbs di destinazione */ char from[7]; /* mittente del messaggio */ char title[61]; /* titolo del messaggio */ char frombbs; /* campo di bit: bit 0=1 se ricevuto in fwd, 0 se locale bit 6=1 se contiene la stringa /ACK bit 7=1 se contiene codice 7plus */ char startbbs[7]; /* bbs originario di partenza */ char bid[13]; /* bid or mid */ char rcvbbs[7]; /* bbs cui ricevo il messaggio */ char free[4]; /* reserved */ }; /* totale 128 byte */ I campi di tipo char[] seguono le convenzioni C, ossia devono terminare con lo 0 binario. Il messaggio e' decodificato usando il campo number, il relativo contenuto di testo si trova nella directory MAIL con il nome del file rappresentato dal valore di NUMBER ed estensione .MES. Il nome e' sempre di 8 caratteri, eventualmente aggiungere 0 a sinistra del numero. Attenzione al corretto riempimento dei campi della struttura, se per esempio il campo route non e' usato, deve comunque essere riempito, quindi *dirmes.route=0; I numeri sono sequenziali, quindi nel caso si desiderasse aggiungere con dei server un nuovo messaggio, sara' sufficente leggere l'ultimo record presente: il nuovo messaggio avra' come numero DIRMES.NUMBER+1. Se ad esempio l'ultimo numero era 3, il nuovo messaggio avra' numero 4, ed il relativo file dovra' essere posto in MAIL col nome di 00000004.MES. ATTENZIONE: NON MANIPOLATE TALE FILE MENTRE TSTHOST E' ATTIVO. TSTHOST v1.43B 25 TSTHOST.EXT - Estensioni per esecuzione automatica -------------------------------------------------- Quando date il comando DIR, il contenuto della directory e' visualizzato a schermo. Se a questo punto premete il tasto INVIO (RETURN, ENTER), su un nome di file, tsthost cerchera' una corrispondenza tra l'estensione del file selezionato e il contenuto del file tsthost.ext. Se tale corrispondenza non viene trovata, oppure il file tsthost.ext non esiste, la pressione del tasto invio viene ignorata. Se invece esiste una corrispondenza, il programma, memoria permettendo, eseguira' lo specifico programma dos definito per quella corrispondenza. E' possibile eseguire programmi .bat, .exe, .com. Il formato del file tsthost.ext e' semplice: -Ogni riga non deve superare gli 80 caratteri. Una riga per ext. -Una riga valida inizia con un . seguito dall'estensione e dalle istruzioni da eseguire per quella corrispondenza. Vi sono due caratteri che indicano a tsthost di effettuare una sostituzione nelle istruzioni definite con il nome del file su cui si era premuto return. 1) il carattere "&" Per il primo carattere & trovato, tsthost sostituisce il simbolo con il nome e percorso completo del file selezionato. Il programma dos viene chiamato dalla directory di tsthost. 2) il carattere "!" Per il primo carattere ! trovato, tsthost sostituisce il simbolo con il solo nome del file selezionato, si sposta quindi nel drive path dove si trova il file selezionato, ed esegue il comando dos. Al rientro verremo riportati nella directory di tsthost. Esempio: la directory correntemente visualizzata e' D:\BIN\, e il file selezionato e' MARCO.ARJ. 1) supponiamo di avere in tsthost.ext la riga: .ARJ C:\UTILITY\AVIEW & /K /J Alla pressione del tasto invio sul file marco.arj, sara' come se noi avessimo digitato RUN C:\UTILITY\AVIEW D:\BIN\MARCO.ARJ /K /J 2) supponiamo di avere in tsthost.ext la riga: .ARJ C:\UTILITY\AVIEW ! /K /J Tsthost eseguira': D: CD \BIN RUN C:\UTILITY\AVIEW MARCO.ARJ /K /J TSTHOST v1.43B 26 I MACRO COMANDI --------------- Definizione delle macro ----------------------- Innanzi tutto, cosa e' una macro? Una macro e' una sequenza di comandi che tsthost esegue automaticamente uno dietro l'altro in sequenza esattamente come se noi li avessimo digitati da tastiera. I comandi possono essere comandi di tsthost, oppure comandi privati macro, oppure dati da inviare al corrispondente. Abbiamo detto che i comandi vengono eseguiti in sequenza, uno dietro l'altro; questo significa che necessitano dei punti di interruzione, affinche i comandi precedenti vengano processati, altrimenti la macro potrebbe non produrre i risultati desiderati. Inoltre mentre noi abbiamo una certa capacita' di giudizio, tsthost nella esecuzione di macro e' molto stupido, quindi deve essere istruito passo passo sul cosa eseguire. Come si avvia una macro? Semplicemente digitandone il nome dalla modalita' comando di tsthost. Ogni qual volta voi digitate un comando che non e' tra quelli standard di tsthost, il programma cerchera' nel file tsthost.mac se esiste una macro con quel nome. Se la macro non esiste, oppure il file tsthost.mac non esiste, il comando verra' dichiarato invalido, classico messaggio di errore. Se la macro esiste, verra' eseguita, e a video per quel canale apparira' una M lampeggiante sulla riga di stato. Come si ferma una macro se si vuole interromperla? Il comando per interrompere una macro e' MABORT, ed ha effetto immediato: la macro viene annullata e il programma resta nello stato cui era arrivato per effetto dei comandi precedentemente eseguiti dalla macro. Le macro supportano quasi tutti i comandi interni di tsthost, piu' un subset di comandi specifici qui' sotto definiti. E' possibile inserire anche il nome di una altra macro come comando, in questo caso la nuova macro sostituira' quella corrente. NOTA: Ogni istruzione presente nella macro, sia essa un comando macro, tsthost o dato, se preceduto dal carattere +, verra' eseguio solo se il canale risulta connesso. Ad esempio SAY verra' sempre eseguito, ma +SAY verra' eseguito SOLO se il canale ha una connessione in corso. TSTHOST v1.43B 27 I parametri delle macro ----------------------- Le macro supportano ora il passaggio di parametri, fino ad un massimo di 8. Tali parametri sono identificati dai simboli %1...%8, che assumono il valore di quanto passato dalla riga di avvio macro. Ad esempio, se la macro di nome PIPPO, che al suo interno ha una riga del tipo: 10 SAY YGET %1 viene avviata con PIPPO MYPROG.ARJ, alla sua esecuzione la riga 10 verra' interpretata come 10 SAY YGET MYPROG.ARJ Se pero' al suo avviamento non vengono specificati i parametri richiesti nelle righe della macro, il valore di detti parametri restera' letterale. Questo significa che la macro PIPPO avviata con PIPPO senza parametri, non modifichera' la riga 10, che restera' esattamente 10 SAY YGET %1 Comandi macro specifici ----------------------- NOTA: i comandi possono essere dati sia in minuscolo che maiuscolo. Alcuni di questi comandi fanno riferimento a numeri di riga. Si, le macro sono numerate tipo il linguaggio basic, ne parleremo nella sezione del formato del file tsthost.mac. Ma annunciamo subito che se specificate un numero di riga che non esiste, non si produrra' un errore, ma semplicemente tsthost si posizionera' sul numero piu' alto immediatamente seguente il numero specificato. Questo porta a due cose: se il numero di riga e' piu' piccolo del piu' piccolo esistente, sara' come far ripartire la macro. Se il numero e' piu' grande del piu' grande esistente la macro terminera', in quanto raggiungeremo la fine della macro. * DELAY XX XX e' un numero che specifica quanti secondi deve attendere il programma prima di processare le prossime istruzioni. Questo e' un comando vitale per le connessioni. Abbiamo detto che le istruzioni vengono eseguite una dietro l'altra senza interruzioni. Se ad esempio diamo il comando di connessione e subito dopo il comando di registrazione di un file, il comando RECORD fallira', in quanto il programma ha inviato il comando di connessione al tnc, ma sicuramente non avra' ancora rilevato lo stato di connessione nel breve tempo intercorso per processare il comando record seguente. TSTHOST v1.43B 28 IMPORTANTE: inserire sempre un DELAY 0 o piu' dopo un comando CONNECT!!! * DISPLAY TEXT Semplicemente visualizza il messaggio TEXT sullo schermo. * IFYAPPACTIVE XX XX rappresenta il numero di linea cui saltera' il programma se durante l'elaborazione di questa istruzione trovera' attivo un trasferimento yapp sul canale della macro. * IFNOTYAPPACTIVE XX XX rappresenta il numero di linea cui saltera' il programma se durante l'elaborazione di questa istruzione NON sara' attivo un trasferimento yapp sul canale della macro. * IFYAPPERROR XX XX rappresenta il numero di linea cui saltera' il programma se l'ultimo trasferimento yapp e' terminato con errore. ATTENZIONE: l'uso di questa istruzione cancella automaticamente lo stato di errore, quindi non e' possibile usarla conseguentemente 2 volte. E' valida solo per l'ultimo trasferimento yapp effettuato. Potra' essere nuovamente usata dopo un nuovo trasferimento yapp. * IFNOTYAPPERROR XX XX rappresenta il numero di linea cui saltera' il programma se l'ultimo trasferimento yapp e' terminato correttamente senza errori. ATTENZIONE: l'uso di questa istruzione cancella automaticamente lo stato di errore, quindi non e' possibile usarla conseguentemente 2 volte. E' valida solo per l'ultimo trasferimento yapp effettuato. Potra' essere nuovamente usata dopo un nuovo trasferimento yapp. * IFFILESEND XX XX rappresenta il numero di linea cui saltera' il programma se durante l'elaborazione di questa istruzione trovera' attivo un trasferimento di file standard. (Non yapp) TSTHOST v1.43B 29 * IFNOTFILESEND XX XX rappresenta il numero di linea cui saltera' il programma se durante l'elaborazione di questa istruzione NON trovera' attivo un trasferimento di file standard. (Non yapp) * IFULSELECTED XX Salta alla riga numero XX se nella lista unproto vi sono messaggi marcati per la ricezione. * IFUNDEFPAR XX YYY Permette il salto alla riga specificata YYY se il parametro numero XX (da 1 a 8) non e' definito. Per esempio, la macro PIPPO, che al suo interno contiene: 10 IFUNDEFPAR 1 100 20 SAY YGET %1 se avviata con PIPPO MYPROG.ARJ eseguira' le righe 10 e 20, ma se avviata con PIPPO senza parametri, dopo l'elaborazione della riga 10 saltera' alla riga 100. * GOTO XX XX indica al programma di saltare al numero di riga specificato. * SAY DATI DATI DATI...... [CTRL-?] Indica al programma di inviare al corrispondente i dati seguenti. Questo e' l'unico comando che e' possibile usare per inviare direttamente dati alla stazione connessa. E' come essere alla tastiera in modalita' CONV. Un metodo alternativo e' quello di usare il comando tsthost interno SEND. Se una riga inizia esattamente con CTRL-? Ove ? e' una qualsiasi lettera alfabetica, tsthost inviera' il corrispondente carattere control. Ad esempio, la riga 10 SAY CTRL-Z mandera' il carattere ctrl-z (ascii 26) alla stazione connessa. Notate che non e' possibile specificare piu' caratteri control sulla stessa riga, e che mentre normalmente tsthost aggiunge il carattere CR ritorno a capo dopo ogni istruzione SAY, per le righe di tipo CTRL il CR finale NON e' aggiunto. TSTHOST v1.43B 30 * WAITSTRING TEMPO (NUMERO_RIGA) STRINGA DA ATTENDERE Questa e' la istruzione piu' complessa. Dice al programma di attendere per TEMPO secondi la ricezione di STRINGA DA ATTENDERE. Se entro tale tempo non viene ricevuta, si saltera' alla riga numero (NUMERO_RIGA), le parentesi sono OBBLIGATORIE, in caso contrario la macro prosegue sulla riga immediatamente seguente. Nel caso non sia necessario un salto per stringa non trovata, basta specificare come numero del salto quello della riga successiva. * WAITDISC [XX] Attende che il canale sia disconnesso. Se il canale e' connesso, non verranno elaborate le linee seguenti fino alla successiva disconnessione del canale. Se qualsiasi cosa segue waitdisc, esempio WAITDISC X, il programma attende fino a che TUTTI i canali siano sconnessi. * WAITCONN Attende che il canale sia connesso prima di continuare la macro. TSTHOST v1.43B 31 Il formato del file TstHost.mac ------------------------------- Anche questo file e' relativamente semplice nel formato, il complesso e' scrivere macro corrette hi. - Ogni riga non deve superare gli 80 caratteri - ogni riga vuota o che inizi con il carattere # e' ignorata. Una macro inizia con il suo nome, e puo' essere eseguita sul canale corrente, oppure avere associato uno specifico canale. Questo e' ovvio, visto che ad esempio, su un sistema multiporta, se devo connettere il mio bbs che e' attivabile sul canale 3, non posso sicuramente far partire la macro sul canale 5! La macro termina al rilevamento dell'inizio di una nuova macro oppure alla fine del file tsthost.mac Per definire un nome di macro, la riga nel file deve iniziare con il carattere due punti ":", seguito immediatamente dal nome della macro, non piu' lungo di 20 caratteri e dal numero opzionale che specifica il canale su cui verra' eseguita. Ecco un esempio: :PIPPO viene eseguita sul canale corrente :GIOVANNI 5 viene eseguita sul canale 5. Il numero di canale non puo' essere ovviamente maggiore del numero di canali attivi in tsthost. Nulla vieta di specificare una macro che possa essere eseguita sul canale monitor, ma ovviamente non e' possibile effettuare connessioni su tale canale. Ogni altra riga della macro inizia con un numero di riga, che praticamente e' una etichetta, seguito da uno spazio e dai comandi associati a quel numero di riga. Attenzione, non potete mettere numeri di riga fuori sequenza. I numeri devono essere in ordine crescente, tsthost non effettua l'ordinamento. Ad esempio: corretto errato 10 PIPPO 20 PIPPO 20 LUPO 18 LUPO E' possibile specificare numeri di riga dall'intervallo 1 a 32767. Lo 0 e' un numero privato interno, e non potete usarlo. Da 32768 in avanti sono considerati negativi e non vengono accettati. Praticamente una macro avra' questo formato: :NOME [CANALE OPZIONALE] 10 ISTRUZIONE 20 ISTRUZIONE .... ETC. TSTHOST v1.43B 32 Comandi TSTHOST non attivi nelle macro -------------------------------------- I seguenti comandi interni non sono richiamabili nella macro: DIR, ULIST LIST, in quanto aprono finestre video che richiedono una presenza attiva dell'operatore, cosa che rende inutile una macro. SOURCE, in quanto non e' possibile controllare a priori il contenuto di un file comandi. Comandi TSTHOST che richiedono un argomento specifico ----------------------------------------------------- I seguenti comandi richiedono, a differenza della digitazione da tastiera, un argomento specifico per essere attivati nelle macro: SEND, YPUT, in quanto se dati da soli aprono una finestra video che non e' nelle intenzioni della macro. RUN, perche' se dato da solo esegue una shell al dos da cui si esce solo con il comando exit, rendendo vano l'automatismo della macro e bloccando il pc fino al rientro dell'operatore. Esempi di macro --------------- :PIPPO 2 10 CONNECT IK1MSL-8 20 DELAY 2 25 RECORD POSTA 30 +SAY RM 35 +SAY KM 40 +SAY B Questa e' una macro veramente semplice. Connette il mio bbs sul canale 2, importante il delay alla riga 20 per riconoscere lo stato della connessione. Alla riga 25 apre un file di registrazione di nome POSTA, quindi spara sequenzialmente al bbs i comandi RM, lettura mia posta, KM, cancellazione mia posta, e disconnessione, quindi termina. Il bbs soddisfera' in sequenza i miei comandi, e alla disconnessione tsthost chiudera' automaticamente il file record. TSTHOST v1.43B 33 Ora una un po' piu' complessa. In questa macro, il mio bbs mi chiede una password di accesso, con il prompt PASSWORD?, inoltre il prompt standard del bbs e' IK1MSL BBS => >>Per le password vedere relativa sezione nel manuale<< :MSL 3 10 CONNECT IK1MSL-8 12 DELAY 2 14 +WAITSTRING 30 (1000) PASSWORD? 16 +PASSWORD 18 +WAITSTRING 30 (1000) IK1MSL BBS => # 40 +YD VARIE\PIPPO.ARJ 42 +WAITSTRING 30 (100) IK1MSL BBS => 44 +IFYAPPERROR 40 46 +GOTO 1000 # 100 +IFYAPPACTIVE 42 110 +SAY 120 +WAITSTRING 30 (1000) IK1MSL BBS => 130 +GOTO 44 # 1000 DISC Ok, la riga 10 connette il mio bbs sul canale 3, e attende il solito ritardino per il riconoscimento della connessione. Tutte le altre righe sono eseguite solo se il canale e' connesso, per effetto del + iniziale. 14: attendo per massimo 30 secondi la richiesta di password. Se non la ricevo puo' darsi che il bbs sia in manutenzione, quindi salto alla riga 1000, disconnetto ed esco. 16: ora invio la password richiesta. 18: ed attendo il prompt di risposta del bbs. Ancora, se dopo 30 secondi non ricevo il prompt, significa che qualche cosa e' andato male, quindi sconnetto e termino. 40: chiedo il download del file PIPPO.ARJ che si trova in VARIE\, usando il protocollo yapp. 42: attendo 30 secondi di ricevere il prompt del bbs, che mi arriva quando il transfer e' finito. 30 secondi sono pochini, ma non importa. 44: alla ricezione del prompt, se ho travto un errore richiedo nuovamente il file saltando alla riga 40 46: nessun errore, quindi riga 1000 dove disconnetto. TSTHOST v1.43B 34 100: per effetto della riga 42, arrivo qui' se entro 30 secondi non ricevo il prompt del bbs, quindi per prima cosa testo se il trasferimento yapp e' ancora attivo. Se e' attivo, non posso ricevere il prompt, e' ovvio, quindi chiedo nuovo tempo tornando alla riga 42. 110: qui' potrei aver ricevuto un errore di yapp. La versione 515c di fbb ha un grave baco sull'abort yapp. L'abort non rispetta il protocollo, quindi spesso perdo il prompt che mi invia fbb, dato che io sono ancora in attesa di abort ack che e' fuori sequenza. Per resincronizzarmi, invio al bbs una riga vuota, in modo da forzare l'invio di un nuovo prompt. 120: lo ricevo qui', attendendo per un massimo di 30 secondi. Se non lo ricevo, e' un errore grave, magari il bbs si e' bloccato, o altro, quindi sconnetto e termino la macro. 130: se invece lo ricevo, ok, ritorno alla riga 44 dove testo l'errore e cosi' via. Questa macro non e' perfetta. Ha l'inconveniente che se il protocollo yapp continua ad abortire, la macro non termina mai in quanto richiede nuovamente l'invio e cosi' via... Sicuramente pensandoci su potrete trovare una macro migliore hi. Ovviamente prompt, password, temporizzazioni ed altro sono solo esempi, trovate voi quelli piu' adatti per la vostra situazione. TSTHOST v1.43B 35 PASSWORD AUTOMATICA ------------------- Il file TSTHOST.PSW contiene le password da utilizzare col programma per i vari servizi. Il formato di questo file e' il seguente: CALL STRINGA_DI_RICERCA PASSWORD CALL e' il nominativo cui la password si riferisce, SENZA SSID La stringa di ricerca e' quanto vi viene richiesto per la password. La password non deve essere lunga piu' di 255 caratteri e deve essere composta da soli caratteri alfanumerici. ES: IK1MSL IK1MSL-8> abcdef IK1MSL Password? 123456 IK1GKJ IK1GKJ-8> ABCEDF Attenzione: maiuscole e minuscole non sono rilevanti nella stringa di ricerca, ma lo sono nella password. Per chiarire molteplici dubbi sull'uso delle password, ecco alcuni esempi. A sinistra il prompt del bbs, a destra come deve essere impostato tsthost.psw. Si suppone che la password sia ABCDEF IK1MSL-8> 11 22 33 44 55 [0123.... IK1MSL-8> ABCDEF Password? IK1MSL-8> 11 22 33 .... IK1MSL-8> ABCDEF IK1MSL-8> Password? 11 22 33 ..... Password? ABCDEF IK1MSL-8> Password ? 11 22 33 .... ? ABCDEF Avrete notato quindi che la stringa di ricerca e' sempre L'ULTIMA PAROLA O CARATTERE unico che precede la richiesta di password. Se il prompt del BBS e' Inserisci la tua password 11 22 33 44 In tsthost.psw mettete Inserisci la tua password ABCDEF Tsthost interpreta "Inserisci" come chiave di ricerca e "la" come password. Cio' e' ovviamente errato. Dovete inserire: password ABCDEF TSTHOST v1.43B 36 NOTA: se inserite al posto di CALL un asterisco "*", per quella riga il programma non testera' la corrispondenza tra il call connesso e il call della riga, ma testera' SOLO la corrispondenza tra prompt di password ricevuto e prompt trovato nel file. Se utilizzate questa capacita', assicuratevi di porre le righe * alla fine del file, per evitare confusioni. IMPORTANTE ---------- A parte le connessioni automatiche, quelle per la richiesta unproto e forward che hanno un protocollo particolare, ogni qualvolta date il comando PASSWORD o premete ALT-F1, tsthost ricerca la password nel file tsthost.psw abbinando per prima cosa il nominativo dichiarato nel file con il nominativo collegato al TASK in esecuzione. Ora, per collegamenti diretti non vi sono problemi. Ma cosa succede se io passo attraverso un nodo? Supponiamo io colleghi il nodo IK1GKJ-7, per tsthost questo nominativo e' quello collegato al task. Ora io do il comando al nodo per collegare il mio bbs, IK1MSL, e vengo regolarmente collegato. Il mio bbs richiedera' la password, io premo ALT-F1, ed ecco che tsthost mi segnala un errore. Perche'? Perche' per il mio tnc io sono collegato al IK1GKJ-7, non a IK1MSL, tale collegamento e' trasparente per il tnc essendo effettuato dal nodo. Quindi alla pressione di ALT-F1 tsth associera' IK1GKJ nella ricerca del nominativo-prompt in tsthost.psw, e non lo trovera'. La cosa e' risolvibile usando il comando PASword anziche' la pressione di ALT-F1. Il comando: PASSWORD IK1MSL Obblighera' tsth a cercare l'abbinamento usando il call passato anziche' quello della stazione connessa, ed ecco che tutto torna a funzionare correttamente. Per le chiamate piu' frequenti e' possibile definire tale comando in uno dei 20 tasti funzione programmabili, e sara' come premere alt-f1. TSTHOST v1.43B 37 Chiamate di FORWARD, lista UNPROTO, CANALE 8 (con eventuale invio di password automatica) ------------------------------------------------------------------ ATTENZIONE: In queste note, il canale 8 e' menzionato nel caso il programma abbia a disposizione tutti gli 8 canali. Nel caso abbiate variato il numero di canali tramite il comando /K, il canale forward-unproto e' l'ultimo canale disponibile. Se ad esempio avete lanciato tsthost con il parametro /K4, il canale 8 qui' menzionato e' da intendersi come canale 4. TstHost esegue la connessione al bbs master per il forward e per la lista unproto SEMPRE sul canale 8. Se tale canale e' occupato, la chiamata verra' effettuata non appena il canale si libera. Mentre per il fwd la chiamata avviene sempre, anche se non vi sono messaggi nel pms, in modo da permettere il reverse forward, la lista unproto viene richiesta solo se vi sono messaggi selezionati e se la lista e' attiva. NOTA: su sistemi multiporta con tfpcx, assicurarsi che il canale 8 sia associato alla porta su cui si trova il bbs master. Ancora, siccome e' possibile che avvenga la chiamata al bbs master mentre si e' gia' connessi a tale stazione su un'altro canale, sarebbe opportuno utilizzare il comando AX25 PORTCALL per settare un SSID univoco su tale canale. ???????.CON - File di connessione per HomeBbs --------------------------------------------- Questo file permette di definire esattamente il percorso di connessione che deve essere effettuato per raggiungere il proprio homebbs. Viene utilizzato per le connessioni automatiche durante il forward e richieste unproto. Deve esistere un file per ogni HomeBbs utilizzato, ed il suo nome e' il nome del bbs senza ssid con estensione.con. Ad esempio, se il proprio homebbs e' IK1MSL-8, dovra' esistere un file di nome IK1MSL.CON, posto nella directory di tsthost.exe. Le regole di scrittura sono le seguenti: - Una riga non puo' essere piu' lunga di 80 caratteri. - Ogni riga vuota o che inizi con # e' ignorata. - Le restanti righe devono iniziare con un comando valido. Attualmente, quattro sono i comandi supportati: TSTHOST v1.43B 38 - C, dice a tsthost che questo e' un comando di connessione. Il formato della riga e': C (CALL-SSID) COMANDO DI CONNESSIONE. Le parentesi sono obbligatorie, e CALL-SSID rappresenta il nominativo cui la connessione si riferisce. - S, cambia il prompt di risposta alla connessione, usato solo per passaggio attraverso nodi non standard. Normalmente, quasi tutti i nodi danno come risposta CONNECTED se connessione effettuata, oppure FAILURE o BUSY per connessione fallita. Tali messaggi sono gia' definiti internamente, e non necessitano di essere specificati. Ma alcuni nodi potrebbero rispndere con messaggi differenti: supponiamo il nodo risponda con CONNE per ok, ECHEC o OCCUP per fallimento. Il comando S CONNE ECHEC OCCUP dira' a tsthost di interpretare CONNE come CONNECTED, connessione ok, ECHEC come FAILURE, OCCUP come BUSY. TUTTI E 3 I PARAMETRI DEVONO ESSERE DEFINITI ATTENZIONE: una volta ridefiniti tali definizioni resteranno attive fino ad una nuova ridefinizione. - L COMANDO (VALORI), seplicemente manda quanto segue la lettera L al tnc, come comando. Utile per il settaggio di particolari parametri. Il settaggio avviene per il solo canale di connessione, e i valori modificati vengono ripristinati a quelli precedenti al termine della connessione. Comandi, e eventuali parametri devono essere espressi secondo il linguaggio WA8DED HOST. - $ PASSWORD PROMPT. se il vostro bbs all'accesso richiede una password, specificate qui' il prompt di richiesta del bbs. Tsth al riconoscimento di tale prompt inviera' automaticamente la password. Questo comando equivale al precedente HPASPROMPT. Per la specifica del prompt e la configurazione della password, leggere le relative sezioni. Ecco alcuni esempi di file di connessione, riferiti al mio homebbs IK1MSL-8, quindi IK1MSL.CON: #il bbs e' connesso direttamente, quindi: C (IK1MSL-8) C IK1MSL-8 | | | | | |--da qui' in avanti il comando da inviare per la | | connessione | |----------Nominativo della connessione |---------------Comando a tsthost. TSTHOST v1.43B 39 # il bbs e' raggiungibile direttamente via digipeaters C (IK1MSL-8) C IK1MSL-8 VIA IK1ABC IK1QWE #il bbs e' raggiungibile attraverso piu' nodi. #per prima cosa si collega il nodo IK1AAA-7 # C (IK1AAA-7) C IK1AAA-7 # #ora devo connettere il nodo IK1PIP-2, ma il nodo IK1AAA-7 usa #messaggi non standard, invia OCCUP invece di BUSY, quindi devo #informare il programma che l'avvenuto link con PIP-2 mi verra' #segnalato diversamente in caso di busy. Inoltre il comando di #connessione usato da IK1AAA-7 non e' C ma X. # S CONNECTED FAILURE OCCUP C (IK1PIP-2) X IK1PIP-2 # #Ora posso finalmente connettere il mio bbs IK1MSL-8, ma #attenzione, PIP-2 usa messaggi standard di conferma connessione, #quindi devo ridefinire correttamente i messaggi del nodo PIP #PIP non ascolta direttamente MSL, uso la stazione IK2DED come #digipeaters # S CONNECTED FAILURE BUSY C (IK1MSL-8) C IK1MSL-8 VIA IK2DED #Questo bbs e' raggiungibile direttamente, ma io uso un maxframe #di 3 per la connesione. Il bbs ha la password, il suo prompt di #richiesta e' PASSWORD? # L O 3 $ PASSWORD? C (IK1MSL-8) C IK1MSL-8 TSTHOST v1.43B 40 Protocollo di FORWARD --------------------- Il PMS ha la possibilita' di effettuare forward con un BBS master secondo lo standard MBL/RLI o compresso FBB. Qualsiasi BBS puo' connettersi ed inviare dati in forward, ma il PMS inviera' eventuali messaggi presenti nella sua coda di forward solo al bbs definito con il comando HOMEBBS. Per quanto riguarda il come viene effettuato il forward, lo schema e' molto semplice: vengono inviati al bbs master tutti quei messaggi che hanno una route specifica (campo @) e generati localmente. Se ricevuti in fwd da un altro bbs vengono inviati al bbs connesso solo se tale bbs e' diverso da quello da cui si e' ricevuto il messaggio, (campo rcvbbs). Eventuali messaggi depositati personali, saranno inviati in forward solo se il destinatario non li avra' gia' letti nel frattempo. Nella lista messaggi, una lettera L di fianco al tipo di messaggio indica che il messaggio e' stato ricevuto localmente, ossia immesso da un utente che si e' connesso al pms. Questo tipo di messaggio se ha il campo route impostato verra' inviato in forward al bbs master. Se tale lettera non esiste, significa che il messaggio e' pervenuto tramite una connessione da bbs, ed anche se ha un campo route impostato NON verra' riforwardato. NOTA BENE: Non dovete inserire parentesi quadre "[]" in TSTHOST.ENT, questo perche' le parentesi in questione vengono usate nel protocollo di forward per stabilire le caratteristiche della stazione. Voi potete sempre inviare messaggi al vostro Home Bbs, ma Home Bbs non vi mandera' mai nulla a meno che il sysop non vi abbia abilitato. Per ottenere il forward, contattate quindi il sysop del vostro bbs abituale, che dovra' (esempio per bbs tipo fbb): 1) Preparare un file forward tipo questo: # A IK1GKJ P B R B IK1GKJ F IK1GKJ C C IK1GKJ ---------- # Se desidero anche i bollettina @ ita ad esempio, il sysop dovra' inserire G ITA dopo F IK1GKJ 2) Inserire il vostro nominativo nel file BBS.SYS 3) Settare il vostro bbs di appoggio con il VOSTRO call. (cmd NH) TSTHOST v1.43B 41 Problemi su connessioni per UNPROTO e FORWARD --------------------------------------------- Il sistema con cui TstHost chiama per la ricezione forward o messaggi unproto e' molto semplice. Innanzi tutto viene effettuata la connessione, sempre sul canale 8, tramite HNode se presente, oppure direttamente. Una volta connessi, il bbs puo' inviare o la richiesta di password (se necessaria) oppure il SID, non importa in quale ordine, ma l'importante e' che il SID, quella stringa [FBB-ABFHM$] etc., venga ricevuta. Se questa non viene ricevuta, tsthost non va avanti, ma rimane in attesa di riceverla. Ancora, dato che il forward e unproto sono dispositivi automatici, il bbs non deve avere la paginazione attiva. Ricevuto quindi SID e/o PASSWORD, viene atteso il prompt del bbs per iniziare la sequenza di avvio per fwd o unproto. Per prompt del bbs si intende una linea che finisca con il carattere >, che e' il simbolo di prompt. Se il vostro homebbs nel testo di ingresso al bbs ha una o piu' righe che terminano con tale carattere, sicuramente tsthost non riuscira' ad andare avanti, e terminera' la connessione con un protocol error. Il carattere > non deve apparire come simbolo di fine riga, in quanto in questo caso assume carattere di prompt. Ad esempio se all'ingresso il vostro bbs vi da' una riga di questo tipo: CIAO MARIO, PER AIUTO DIGITA incapperete sicuramente in un protocol error, in quanto il simbolo > a fine riga manda in pallone il protocollo, ma ad esempio: CIAO MARIO, DIGITA PER AVERE AIUTO non dara' nessun problema. In un caso come questo, potete chiedere al sysop di abilitarvi come BBS, in modo che il testo di benvenuto non venga inviato e si passi subito al prompt (o password) una volta connessi. NOTA: se non riuscite a risolvere il problema, eseguite una sessione di fwd o unproto, quindi passate sul canale di fwd, date il comando WRITEBUF ABC, ed inviatemi come messaggio il file ABC cosi' creato in modo che possa analizzarlo. Un altro problema comune, usando forward fbb compresso, e' che quando il vostro homebbs deve mandarvi la posta, lui manda invece FF e segna il messaggio come forwardato. Questo e' un bug in fbb. Per risolverlo, collegate il vostro homebbs, e settate il bbs di appoggio con il vostro call, tramite il comando NH VOSTROCALL TSTHOST v1.43B 42 INTERFACCIA PMS --------------- Ogni canale del programma e' contemporaneamente un pms oppure un singolo canale di connessione. I canali non connessi sono sempre adibiti al pms, in modo che qualsiasi utente si connetta al sistema riceva il prompt del pms. Se la connessione pero' parte dalla consolle, ossia tramite un nostro comando CONNECT, allora l'interfaccia PMS viene automaticamente disabilitata ed il canale assume le caratteristiche di un normale qso packet. Eccezione a quanto detto e' rappresentata dai canali che risultano gia' connessi alla partenza di tsthost. In questo caso tali canali sono considerati non come pms, ma come connessioni normali da noi effettuate, questo perche' non e' possibile stabilire a priori se il canale e' connesso per una mia chiamata o per una chiamata del corrispondente. E' possibile cambiare la modalita' di un canale (PMS o NORMALE), con i comandi TALK (passa da PMS a normale conversazione, in seguito ad una chiamata dall'utente per esempio), e PMS (passa da modo conversazione a modo PMS). Non e' possibile eseguire cambi di modalita' se il task in questione non e' in stand-by, ossia se sta processando un comando utente (PMS->TALK), o se vi sono trasferimenti di file, YAPP SEND o RECORD aperti (TALK->PMS). Ancora non e' possibile passare in conversazione su una finestra pms, senza prima averla portata in modo TALK con l'apposito comando: ovvio, visto che non si fa qso su un pms. MAIL LAMPEGGIANTE A VIDEO ------------------------- Ogni volta arriva sul pms posta per voi, viene visualizzata a video la scritta lampeggiante MAIL. Per fermare il lampeggio, potete premere ALT-F10, oppure dare il comando LM da TASTIERA. Ho usato questa soluzione per 2 motivi: 1) Il database TSTHOST.DMS non e' in memoria, quindi tenere traccia della posta letta per spegnere la scritta costa tempo. Tenere in memoria il database cosa memoria, quindi questo e' il compromesso piu' valido. TSTHOST v1.43B 43 2) E' possibile che qualche PIRATA e non, si colleghi al vostro PMS per leggere e cancellare la vostra posta. Nel caso 1), cesserebbe il lampeggio, quindi non avreste notizia di arrivo posta se non andando a vedere anche i messaggi cancellati. Con questa soluzione il lampeggio continua sempre, e se lampeggia la posta e' arrivata. Se non la trovate...... DIRECTORY PRIVATA PER UTENTI PMS -------------------------------- Per ogni utente connesso al PMS e' possibile specificare una directory privata mediante il programma di utility MAINTUSR fornito con TtsHost. L'utente che alla connessione possiede una directory privata, potra' accedervi vedendola come un drive virtuale P:. L'utente potra' accedere anche ad eventuali directory sottostanti la directory specificata come PRIV, ma non a quelle superiori. Ad esempio, supponiamo esista il seguente albero di directory: C:\TSTDATA\PRIV\LEVEL1\LEVEL2 Si definisca C:\TSTDATA\PRIV la directory per IK1GKJ, C:\TSTHDATA\PRIV\LEVEL1 la directory per IK1MSL. IK1GKJ tramite il drive virtuale P: (es YD P:xxx) potra' accedere a C:\TSTDATA\PRIV, LEVEL1, LEVEL2. IK1MSL tramite il drive virtuale P: potra' accedere a C:\TSTDATA\PRIV\LEVEL1, LEVEL2. NOTA: benche' sia possibile (ma non raccomandato) utilizzare il programma MAINTUSR anche con tsthost attivo, un eventuale cambiamento di percorso della directory privata non avra' effetto per un utente gia' connesso fino alla sua disconnessione e prossima connessione. TSTHOST v1.43B 44 I SERVER -------- I server sono programmi di tipo EXE o COM che devono risiedere nella directory di tsthost.exe. Quando arriva sul vostro pms un messaggio personale che ha il campo TO impostato al nome di un server, (vedi comando SERVER), automaticamente viene fatta copia di tale messaggio su un file, e viene richiamato il relativo programma EXE o COM passandogli come argomento il nome del file appena copiato. Tale file e' nella forma classica di forward, ossia la sua prima riga conterra' SP NOMESERVER < MITTENTE, la riga seguente sara' il titolo, poi il contenuto del file fino al classico /EX finale. Il server potra' eseguire quello che riterra' opportuno, ma eventuali messaggi di risposta al mittente dovranno passare attraverso TSTHOST.IN. Al termine dell'esecuzione del server, il controllo ritornera' a tsthost, che cancellera' il messaggio copia, e porra' in stato K il messaggio originale. Ricordo che durante l'esecuzione del server tsthost e' fermo..... SERVER PG --------- I server PG sono programmi appositamente scritti per eseguire un qualche cosa di non previsto dal programma. Devono essere posti nella directory PG del sistema. Durante l'esecuzione del server, il programma e' inattivo, quindi tali programmi devono occupare il minimo tempo possibile di esecuzione. Lo schermo viene salvato, ma per evitare flash, non usare accessi diretti alla RAM video. Tsthost passa al server: argv[0] Drive\percorso\nomedelserver argv[1] Callsign dell'utente, con ssid argv[2] Livello di chiamata, 0 la prima volta, fino a 255 le altre argv[3...n] Quanto digitato dall'utente, ogni parola un argomento L'output del server, (printf(), puts()), se esiste, verra' inviato all'utente. Il server potra' tornare: 0 - L'output del server verra' inviato all'utente e tale utente sara' ricollegato all'interfaccia pms. 1 - L'output del server verra' inviato all'utente e il server verra' richiamato ancora. Livello incrementato. TSTHOST v1.43B 45 2 - L'output del server verra' interpretato come comando PMS, quindi l'utente sara' ricollegato all'interfaccia PMS. 3 - L'output del server verra' interpreato come comando PMS e il server verra' richiamato ancora. Livello incrementato. 4 - L'output del server verra' inviato all'utente e il server verra' chiamato ancora. Il livello NON e' incrementato. 128..255 - L'output del server verra' inviato all'utente e il server verra' chiamato ancora. Il valore del livello sara' posto al valore di uscita. NOTA per funzioni 2 e 3: L'output del server dovra' essere lungo al massimo 80 caratteri, che non inizino con avanzamenti di riga o ritorno carrello. Il server non dovra' MAI MAI tornare un comando PG. Come esempio, in C, un server di nome ECHO che rimanda al corrispondente quanto digitato fino a quando il corrispondente non invia "BYE" #include #include main(int argc, char **argv) { int i,mode; sscanf(argv[2],"%d",&mode); if(!stricmp(argv[3],"BYE") && mode) { printf("\nBest 73\n"); return 0; } printf("\nHallo %s, you have send:\n",argv[1]); for(i=3;i CALL Lista tutti i messaggi per call L< CALL Lista tutti i messaggi immessi da call LS STRINGA Lista tutti i messaggi contenenti STRINGA nel titolo LM Lista tutti i messaggi per me LN (FKHYX) Lista tutti i messaggi in stato N,F,K,H,Y,X LQ Lista tutti i messaggi non ancora forwardati. LP Lista tutti i messaggi personali LB Lista tutti i messaggi bollettino LT Lista tutti i messaggi traffic L'attivazione della finestra messaggi avviene dando l'apposito comando L. La finestra presentera' tutti i messaggi corrispondenti; sara' poi possibile spostarsi nella lista tramite i soliti tasti di movimento cursore: SU, GIU, INIZIO (HOME), FINE (END), PAGINA SU, PAGINA GIU. Il tasto ESCAPE provochera' l'abbandono della lista ed il ritorno alle normali condizioni di tsthost. In fase di lista messaggi, sara' possibile visualizzare, editare, cambiare di stato, etc. il messaggio al momento evidenziato tramite la pressione dei seguenti tasti: ALT-I Il piu' complesso, serve per cambiare l'intestazione header del messaggio. Potete variarne il titolo, destinazione, stato, tipo etc. Per spostarsi attraverso i campi usate il tasto TAB o RETURN. Per terminare l'operazione andate col cursore su e premete RETURN. Per annullare l'operazione premete il tasto ESCAPE. TSTHOST v1.43B 52 ALT-H Se il messaggio e' in stato H, verra' tolto dall'held, diventando N, in tutti gli altri casi verra' messo in stato di HELD, congelato, e visibile quindi solo dal sysop. ALT-K Cancella il messaggio selezionato, che viene posto in stato K. Non prevede altri cambi di stato. ALT-F I messaggi in stato N che non hanno routing vengono aggiunti alla lista di forward, ed inviati a HOMEBBS. In tutti gli altri casi, se il messaggio e' N verra' posto in F, altrimenti in N. RETURN Legge il messaggio selezionato CTRL-RETURN Legge il messaggio, ma con le RLINE espanse NOTA: Durante la fase di lettura, lo spostamento attraverso il messaggio e' possibile tramite i soliti tasti di direzione. Premendo il tasto ESCAPE si provochera' l'interruzione della lettura e il ritorno alla lista messaggi. ALT-E Edita il messaggio selezionato. ALT-R SEND REPLY, genera un messaggio di risposta per il mittente del messaggio selezionato CTRL-R Come ALT-R, ma inserisce nel messaggio di risposta il testo del messaggio originale. ALT-C SEND COPY, genera una copia del messaggio. ALT-M Mailcopy, per copiare o appendere il messaggio selezionato in un file. NOTA: ALT-R, CTRL-R, ALT-C, ALT-M aprono una ulteriore finestra video in cui sara' possibile inserire un nome di file il cui contenuto verra' aggiunto al nuovo messaggio. Potete semplicemente non inserire nulla, in questo caso nessun file verra' aggiunto, o specificare un nome di file esistente. Se il nome del file non contiene un percorso specifico, tale file verra' ricercato nella WORKDIR. Infine se non rammentate dove sia questo file, potete premere il tasto F2 per ottenere una seleziona tramite lista a video. Il comando ALT-C prevede anche l'immissione di un call di destinazione ed eventuale bbs di appoggio. Potete usare il tasto TAB o RETURN per spostarvi attraverso i campi. ESCAPE come al solito serve per annullare l'operazione. TSTHOST v1.43B 53 Durante la digitazione del testo del messaggio, l'editor interno consente ogni tipo di spostamento tramite l'uso dei tasti cursore soliti, e loro combinazione con il tasto CONTROL; l'editing avra' termine premendo F2, che salvera' il messaggio, oppure F8 che annullera' l'operazione. Al termine dell'operazione si rientrera' in fase di lista messaggi. * K Per praticita' di manipolazione, il comando di cancellazione messaggi e' disponibile anche direttamente da tastiera senza finestra video, ed accetta tutte le estensioni del comando L. * S CALL [@ ROUTE] [+FILENAME] * SP CALL [@ ROUTE] [+FILENAME] * SB CALL [@ ROUTE] [+FILENAME] * SR[R] NUMERO_MESS. [+FILENAME] * SC NUMERO_MESS. CALL [@ ROUTE] [+FILENAME] Il tipo P immette il messaggio come personale, il tipo B come bollettino. La differenza sta nel fatto che un messaggio personale e' visibile solo da chi lo ha immesso o dal destinatario, un bollettino e' visibile da tutti. Se il tipo P o B non e' direttamente specificato, il programma assegna automaticamente il tipo P per ogni nominativo valido, altrimenti il tipo B SR predispone automaticamente per rispondere al mittente del messaggio specificato come numero. Il titolo del messaggio sara' "Re:" piu' il titolo del messaggio originale. SRR come SR, ma inserisce copia di NUMERO_MESSAGGIO nell'editor. SC invia copia del messaggio numero # a CALL Durante questi comandi non e' possibile eseguire switch dei task, prima di poter tornare alla normalita' dovete terminare il messaggio. Se presente +FILENAME, al termine del messaggio, il contenuto di FILENAME verra' aggiunto al messaggio. Se in FILENAME non sono presenti path specifici, tale file verra' ricercato nella WORKDIR. TSTHOST v1.43B 54 I comandi PMS da TASTIERA ------------------------- * ACK [Y | N | H] Questo comando serve per abilitare o meno l'ack dei messaggi, che sostanzialmente e' una specie di cartolina con ricevuta di ritorno. Per ogni messaggio che arriva sul vostro sistema, con una riga contenente /ACK in prima colonna, non importa quale riga, verra' generato un messaggio che conferma l'avvenuta ricezione del mail. Detto messaggio verra' ritornato al mittente del mail contenente la richiesta di ACK. Y significa che l'ack e' abilitato, N disabilitato, H abilitato ma messo in stato di held in attesa di un vostro controllo. * BMail ON | OFF Stabilisce se nel testo beacon debba essere inviata anche la sezione MAIL FOR con l'indicazione della posta presente nel PMS. * BReak [CALL | ALL] text Invia text al nominativo specificato connesso sul PMS. Usando ALL al posto di un nominativo, text verra' inviato a tutte le stazioni connesse al PMS. * CH8RESEVERD ON | OFF Se on, il canale 8, (o l'ultimo canale disponibile se avete avviato tsthost con la limitazione di canali), puo' essere connesso solo da homebbs o halias. * ENdmessage nomefile | OFF Definisce un file di testo che verra' automaticamente aggiunto alla fine di ogni messaggio creato con i comandi S?/SR. Se in tali comandi esiste +FILENAME, prima verra' accodato FILENAME, quindi ENDMESAGE. Con OFF viene disabilitata la funzione. Se in filename non e' contenuto uno specifico path, il file verra' ricercato nella directory in cui si trova tsthost.exe * EXPORT N | F Permette di esportare su un file di testo i messaggi che normalmente verrebbero forwardati ad homebbs. Il formato di export su file e' quello standard MBL-RLI. EXPORT N non setta i messaggi esportati in stato F, permettendo quindi un forward verso homebbs, EXPORT F si. TSTHOST v1.43B 55 * FBbmode on | off Abilita (default) o disabilita il forward di tipo compresso FBB. Tale forward richiede circa 32kbyte per il compress dei dati durante la sua esecuzione. Se la memoria non e' disponibile, automaticamente tsthost passa al forward rli. * FREverse on | off Abilita (default) o disabilita il reverse forward. Con reverse forward disabilitato, tsthost chiamera' homebbs per il forward SOLO se vi sono dei messaggi da inviare nel pms. Se freverse e' abilitato, homebbs verra' chiamato anche se non vi sono messaggi da inviare nel pms. * FTIME 0...60 minuti Determina ogni quanti minuti il pms deve chiamare il bbs master per il forward. Valori inferiori a 5 disabilitano la chiamata, in questo caso il forward verra' effettuato solo quando chiamati dal bbs master * FWD Inizia immediatamente il forward con il bbs master. * HAlias CALL-SSID Definisce un ulteriore nominativo call-ssid che viene trattato come se fosse homebbs * HIeraddr TEXT | OFF E' un campo di massimo 23 caratteri, usato per definire il proprio indirizzo gerarchico, per esempio .IPIE.ITA.EU OFF disabilita la funzione. Questo campo, se presente, viene usato dal comando RLINE. * HOmebbs CALL-SSID Definisce chi e' il bbs cui inviare i messaggi del nostro pms, quelli che hanno una route (@) impostata. NOTA: l'SSID e' SIGNIFICATIVO, IK1MSL non e' la stessa cosa di IK1MSL-8. Esempio: HOMEBBS IK1MSL-8 TSTHOST v1.43B 56 NOTA: se cambiate homebbs e la lista unproto e' attiva, verra' chiusa la lista per il precedente homebbs e aperta una lista per il nuovo homebbs. * HROUTE CALL [/V | /P ROUTE] Il comando permette di settare (o visualizzare) il routing gerarchico di un determinato bbs. Dato nella forma HROUTE CALL verra' visualizzato il routing gerachico associato a detto call, se presente nel file TSTHOST.HRT. Dato nella forma HROUTE CALL /V (o /P) ROUTE settara' per detto call un routing variabile con /V (quindi aggiornabile automaticamente da tsthost), o permanente con /P. Se ROUTE non e' fornito, verra' creata una associazione in cui non saranno ammessi gerarchici per detto call. Se invece ROUTE e' fornito, allora a detto call sara' associato il gerarchico ROUTE. * LBHeld ON | OFF Ogni bollettino creato localmente verra' messo in stato HELD. Questo significa che solo il sysop o il mittente potra' accedere a questo messaggio. * LPHeld ON | OFF Come LBHELD, ma riferito ai personali. * MAIlcopy [numero... IK1GKJ @IK1GKJ ][filename] Appende a filename ogni combinazione valida dei messaggi specificati. Potete specificare una serie di numeri, < per indicare il mittente, > per il destinatario, @ per il routing oppure una combinazione di queste. L'ultimo parametro passato viene sempre inteso come il nome di file cui appendere i messaggi. Se nel nome del file non viene specificato un particolare percorso, il file viene registrato nella workdir. * MSGHEADER ON | OFF Abilita/disabilita l'header iniziale dei messaggi pms (TST HOST v..... LOCAL TIME ...) TSTHOST v1.43B 57 * NBID [numero_bid (1..65535)] Per assegnare un nuovo numero di sequenza ai bid interni di tsthost. NON USATE QUESTO COMANDO SE NON SIETE SICURI DI CIO' CHE FATE. Leggere la sezione TSTHOST.BID prima di usarlo. Se dato senza parametri semplicemente visualizza il prossimo bid interno nella sequenza. * PMS Il task corrente viene posto in modalita' PMS, ad esempio dopo che si era passati in conversazione per rispondere ad una chiamata dell'utente remoto. Non e' possibile passare in modo PMS se sono attivi sul canale trasferimenti di file. (yapp, record, send) * PYAPP [ON | OFF] Abilita o disabilita la funzione yapp sul PMS. * RIng [ON | OFF] Ring lavora in complemento al comando PMS T, dato dall'utente connesso quando ha bisogno di chiamare il sysop. ON rende il sysop disponibile (default), con OFF il sysop non e' disponibile. * RLine ON | OFF Se on, quando il vostro pms invia un messaggio in forward a homebbs, viene inserita anche la vostra RLINE. Se OFF no. ATTENZIONE: inserendo la vostra RLINE, diventate un bbs a tutti gli effetti, cio' significa che le repliche dirette (SR o SERVER) generate da altri bbs, verranno indirizzate a VOSTROCALL@VOSTROCALL, ora se il vostro homebbs o limitrofi non riconoscono @VOSTROCALL o non sanno dove indirizzarlo dato che non siete bbs regolarmente inseriti in fwd, la replica al vostro messaggio non vi arrivera' piu' con il rischio che finisca in capo al mondo. Se RLINE e' OFF (default), questo rischio non si corre in quanto la replica viene sempre smistata da homebbs che e' regolarmente inserito in rete. Alcuni server pero' richiedono una risposta diretta al corrispondente, dato che sono in grado di comunicare tra di loro, e quindi la rline e' necessaria... Vedete voi secondo le vostre esigenze. TSTHOST v1.43B 58 * SAvemsg +/-TOFIELD +/-@ROUTE +/-