Fin dai tempi della HP 48, la maggior parte dei programmatori preferisce scrivere i propri programmi per la propria calcolatrice grafica con l'ausilio del computer, perché è molto più comodo e veloce. Per fare questo è stato necessario superare un piccolo ostacolo, l'insieme dei caratteri della calcolatrice non è lo stesso di quello di un computer, che è ASCII. Per risolvere questo piccolo problema sono stati quindi scritti dei programmi per la calcolatrice che convertono un file di testo ASCII in un file binario della calcolatrice e viceversa. (si trovano molti programmi con il codice sorgente User RPL in formato ASCII su
www.hpcalc.org). Non entrerò nel dettaglio di questi programmi per la conversione, ma spiegherò semplicemente come usarli. In altre parole
grazie a questo articolo saremo in grado di scrivere un programma in formato ASCII, per esempio con il notepad di MS Windows, e convertirlo in un formato leggibile ed eseguibile dalla calcolatrice HP 50g (valido anche per HP 49g/49g+) e viceversa convertire un file prodotto dalla calcolatrice in un file ASCII.
Questo metodo è molto usato con l'emulatore EMU48 per testare velocemente i programmi.
In questo modo sarà possibile per esempio, scrivere un programma User RPL con l'emulatore EMU48 e convertirlo in formato ASCII, postare il programma su un forum, dove chi è interessato potrà copiarlo e salvarlo in un file di testo, inviarlo alla sua calcolatrice, tramite scheda SD, dove sarà convertito memorizzato ed infine eseguito.
La conversione è possibile anche tramite il software HP 50g, 49g+ and 48gii Calculator PC Connectivity Kit (leggere la guida), ma che, con i programmi che introdurrò, sarà del tutto superfluo installare perché sarà sufficiente avere una scheda SD, rendendo in questo modo semplice trasferire programmi sulla calcolatrice in maniera del tutto indipendente dal sistema operativo.
I programmi che ci servono sono quelli proposti in un lungo articolo di John H Meyers su comp.sys.hp48 (
http://groups.google.com/group/comp.sys.hp...e7ed90b3cf11c42), in formato ASCII ovviamente, prendiamo in considerazione questi due:
CODICE
@ 7-bit ascii string -> calc object
\<< \->STR 3 TRANSIO RCLF SIZE 3 >
#2F34Dh #3016Bh IFTE SYSEVAL + STR\-> \>> 'IN' STO
CODICE
@ Calc object -> 7-bit ascii string
\<< STD 64 STWS \->STR 3 TRANSIO RCLF SIZE 3 >
#2F34Fh #2FEC9h IFTE SYSEVAL \>> 'OUT' STO
Per chi vuole approfondire o usare anche gli altri programmi si legga l'articolo di John H Meyers per intero.
Come è possibile intuire alcune sequenze di caratteri rappresentano un carattere speciale della calcolatrice, per esempio la sequenza \-> rappresenta il carattere freccia [RS]+[0], oppure \<< e \>> rappresentano i caratteri delimitatori di programma [RS]+[+]. A fine articolo ho riportato una tabella con le sequenze dei caratteri più usati, la tabella completa si trova nell'appendice J dell'HP 50g AUR
www.hpcalc.org/details.php?id=7141.
Per portarli sulla calcolatrice all'inizio dobbiamo scriverli a mano, comunque è abbastanza intuitivo scrivere solo il primo, cioè IN, che serve a convertire una sequenza ASCII in un oggetto leggibile dalla calcolatrice; e quindi importare OUT con copia incolla, mostrando fin da subito un esempio. Quindi scriviamo sulla nostra HP 50g il programma IN e memorizziamolo nella omonima variabile (attenzione nel digitare esattamente le stringhe alfa-numeriche):
Ora importiamo il programma OUT, copiamo il testo dalla @ (sta a indicare che la riga è un commento) a STO compresi e incolliamolo nel notepad (o un altro editor ASCII), salviamo il file col nome per esempio di OUT.TXT, trasferiamolo sulla scheda SD e richiamiamolo sullo stack con RCL, otterremo la seguente schermata:
Ora avviamo il programma IN con il tasto funzione F1, e OUT sarà automaticamente convertito e memorizzato nella omonima variabile:
Mostriamo il contenuto di IN e OUT con RS+'nome della variabile', per far vedere che le differenze con la versione ASCII:
Se avessimo voluto usare l'emulatore EMU48, semplicemente, sempre dopo aver scritto manualmente e memorizzato 'IN', una volta copiato il testo ASCII di 'OUT', incolliamolo sullo stack con la funzione 'Paste Stack' di EMU48 che si trova nel menu EDIT:
La conversione con i programmi IN e OUT è molto semplice e comoda soprattutto per postare i programmi User RPL sui vari forum o via email...
Tuttavia per programmi più lunghi e complessi, da archiviare per esempio in
www.hpcalc.org, è utile usare i cosidetti “file transfer headers” ovvero “intestazioni per il trasferimento dei file”. Cioè al programma scritto in ASCII, si aggiunge una riga con dei caratteri che indicano alla calcolatrice il modo corretto di interpretare le sequenze ASCII: “%%HP: T(3)A(D)F(.);”. Il significato è il seguente:
T(3) "modo di traduzione 3" ("\<<" and "\>>" vengono interpretati come delimitatori di un programma...)
A(D) "angoli in gradi" (influisce solo sui vettori espressi in coordinate polari)
F(.) "segno di frazione" (indica che "." è il segno decimale nei numeri reali e la "," come segno di separazione per es. tra le coordinate di un vettore)
In questi articoli troverete ulteriori spiegazioni:
http://groups.google.com/group/comp.sys.hp...002d45b26cbcbdehttp://groups.google.com/group/comp.sys.hp...7650fb6ff0b9d76.
Per tradurre programmi ASCII con una riga di intestazione nel formato leggibile della calcolatrice, ci sono altri programmi proposti da John H Meyers sempre nel suo famoso articolo citato prima. Comunque ho trovato molto utile per questo scopo altri due programmi:
ASCII to Binary Converter
www.hpcalc.org/details.php?id=364849G+ ASCII on SD
www.hpcalc.org/details.php?id=6017Entrambi i pacchetti contegono la versione binaria e la versione codice sorgente dei vari programmi, a noi interessa installare i seguenti binari sulla calcolatrice (spero che chi legge sappia come fare):
ASCIIBIN.49 per il primo pacchetto;
TxtToObj e ObjToTxt per il secondo .
Memorizziamoli nelle variabili:
ASCIIBIN che rileva automaticamente se il file sullo stack della calolatrice è di tipo ASCII o binario e lo converte automaticamente nel formato alternativo;
TXTTOOBJ che converte un file in formato ASCII nel formato binario;
OBJTOTXT che fa l'opposto di TXTTOOBJ.
Facciamo un esempio, scarichiamo il programma Transfer Function Analysis da
www.hpcalc.org/details.php?id=2183. Il pacchetto contiene sia la versione binaria sia la versione ASCII del programma (è una directory con una serie di comandi). Ora la versione binaria è solo per la serie HP 48 quindi non è installabile sulla HP 50g, mentre possiamo portare la versione ASCII del programma convertirlo e memorizzarlo. Ora copiamo il file TFA.ASC nella scheda SD e richiamiamolo sullo stack, oppure con EMU48 trasciniamo col mouse lo stesso file sullo schermo sulla prima linea dello stack:
Ora o avviamo il programma ASCIIBIN (tasto F6 nel mio caso) oppure TXTTOOBJ, ottenendo la conversione desiderata:
Quindi possiamo memorizzare il programma Transfer Function Analysis per esempio nel nome di directory TFA, e il gioco è fatto:
Supponiamo ora di voler convertire un programma User RPL in formato ASCII, perchè per esempio vogliamo inserirlo in un forum. Dunque richiamiamo il contenuto del nostro programma sullo stack (nell'esempio è mostrato DIAGONALIZATION discusso qui
http://helpcalculator.forumfree.net/?t=40714015):
Convertiamo questo codice User RPL sia con OUT sia con ASCIIBIN (o OBJTOTXT), per far vedere cosa viene fuori:
Come si vede chiaramente, nel livello 2 dello stack è stato convertito con OUT mentre nel livello 1 ho utilizzato ASCIIBIN, infatti è presente la linea di intestazione. Ora, se si utilizza EMU48 è sufficiente usare la funzione Copy Stack nel menu EDIT per copiare una delle due versioni e incollarla dove si vuole:
Incollo qui le due versioni ASCII di DIAGONALIZATION:
CODICE
%%HP: T(3)A(R)F(.);
\<< DUP EGV DROP SWAP OVER * SWAP / EXPAND \>>
CODICE
\<< DUP EGV DROP SWAP OVER * SWAP / EXPAND \>>
Se invece vogliamo salvare DIAGONALIZATION direttamente con la calcolatrice, è sufficiente salvare il programma convertito in un file tipo DIAGONALIZATION.TXT e inviarlo alla scheda SD, in questo formato può essere aperto da un editor di testo qualsiasi su PC:
Questo articolo finisce qui, spero di essere stato chiaro. Avrei potuto essere molto più sintetico, ma non mi piace dare per scontato nulla, anche perchè questo articolo è rivolto principalmente ai nuovi utenti e a quelli poco avvezzi all'inglese.
SUPERGEMS
P.S. chi vuole può scaricare questo lungo articolo in formato PDF
www.box.net/shared/6x4705dmyhoppure OpenOffice.org
www.box.net/shared/o6puadmaey.
CODICE
Num Sym Description
--- --- -----------
128 \<) angle symbol
131 \v/ square root
132 \.S integral symbol
133 \GS Greek Sigma (\GSLIST)
135 \pi pi
136 \.d derivative symbol
137 \<= less or equal
138 \>= greater or equal
139 \=/ unequal
141 \-> right arrow (\->LIST, \-> a b c)
142 \<- left arrow (\<-local)
143 \|v down arrow (\|vMATCH)
144 \|^ up arrow (\|^MATCH)
156 \PI capital pi (\PILIST)
159 \oo infinity
171 \<< program delimiters
187 \>>
092 \\ backslash
Edited by supergems - 4/4/2016, 10:00