Sei sulla pagina 1di 8

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.hp48/msg/4e7ed90b3cf11c42), in
formato ASCII ovviamente, prendiamo in considerazione questi due:

@ 7-bit ascii string -> calc object


\<< \->STR 3 TRANSIO RCLF SIZE 3 >
#2F34Dh #3016Bh IFTE SYSEVAL + STR\-> \>> 'IN' STO

@ Calc object -> 7-bit ascii string


\<< STD 64 STWS \->STR 3 TRANSIO RCLF SIZE 3 >
#2F34Fh #2FEC9h IFTE SYSEVAL \>> 'OUT' STO

Come possibile intuire alcune sequenze di caratteri rappresentano un carattere speciale della
calcolatrice, per esempio \-> rappresenta , oppure \<< e \>> rappresentano e . 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 http://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.hp48/msg/6002d45b26cbcbde
http://groups.google.com/group/comp.sys.hp48/msg/87650fb6ff0b9d76
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


http://www.hpcalc.org/details.php?id=3648

49G+ ASCII on SD
http://www.hpcalc.org/details.php?id=6017

Entrambi 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


http://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):

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:

%%HP: T(3)A(R)F(.);
\<< DUP EGV DROP SWAP OVER * SWAP
/ EXPAND
\>>

\<< 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
Num Sym Description

128 \<) angle symbol


131 \v/ square root
132 \.S integral symbol
133 \GS Greek Sigma
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 \>> program delimiters
92 \\ backslash