HP 42S il miglior calcolatore di sempre

L'HP 42S mi ha accompagnato durante tutto il mio percorso universitario, ha disegnato di nascosto per me qualche grafico di funzione e con i suoi 7KB alfanumeici è anche riuscito a farmi tenere qualche appunto segreto.

L'ho acquistata il cinque dicembre del 1992, pagandola ben 229.000 lire, un anno prima di iniziare l'Università (all'incirca 200€ di adesso considerando l'inflazione (*) e fingendo che l'euro esistesse anche nel 1992...).

Ho rischiato di perderla verso il penultimo anno d'Università, ma il destino (e l'onestà di un mio collega) l'hanno riportata a me. Funziona ancora, e ultimamente ho scoperto che ha un "monitor" interno e la possibilità di impostare una modalità "VELOCE".

L' HP 42S  è abbastanza facile da usare, consente di usare tipi di dati misti (es matrici, numeri complessi, testo ascii, ecc) e fornisce tutto quello che serve per un ingegnere general-purpose (integrazioni numeriche, solver ecc).

L'unica cosa che manca è un derivatore di tipo numerico, ma qualcuno ci sta lavorando (vedi dopo).

C'è una nuova implementazione basata sul software open source Free42 (DM42) ma costa una enormità, più della HP Prime che è l'ultima versione di questa generazione di calcolatori.

Il progetto hardware è veramente raffinato, e il processore è in grado di operare nativamente con la precisione richiesta (e questo lo si vede dalla sua velocità di calcolo).

 

Microprocessore: il Saturn

La HP 42S utilizza un chip chiamato Saturn (a 1Mhz) che ragiona internamente a 4bit (nibble) ma ha registri a 64bit (qui trovate un manuale un po' elementare, scritto male ma che perlomeno elenca tutte le istruzioni del Saturn).

E' un chip comune a tutte le calcolatrici HP dell'epoca. Anche il sistema operativo della HP42S (64KB di ROM) è derivato dalle calcolatrici precedenti.

A un certo punto (nel 2003) l'HP implementò un emulatore del Saturn  con un chip ARMv4 poiché l'azienda fornitrice (Samsung) non poteva più produrlo con i suoi stabilimenti (!). Ovviamente anche l'ARMv4 uscì di produzione e quindi l'architettura Saturn è ufficialmente stata abbandonata intorno al 2015, quando è nata l'HP Prime che si può trovare intorno ai 150 € e contiene ancora il sistema RPN a logica polacca inversa, molto amato dagli  estimatori delle calcolatrici HP (me incluso).

Il Saturn indirizza 5 nibble (20bit) ed è basato su bus seriali a 4bit. Può quindi indirizzare fino a 512 KB di RAM "normale" o meglio 1 MB di nibbles

Architettura

A-D -- 4 registri generici a 64bit (registri GPR- General PuRpose che sono strutturati in modo sofisticato)

R0-R4 4 registri di appoggio su cui non è possibile eseguire calcoli (sempre a 64bit)

D0, D1 due registri puntatore a 20bit

RTSK -> “Return STacK",  Stack hardware da 8 posizioni a 20bit

 

L'architettura è "little endian" come gli x86 e il 6502, per cui i nibble meno significativi si trovano memorizzati prima di quelli più significativi.

Inoltre il calcolatore ragiona usando la logica BCD (decimali codificati in binario) la cui maggiore utilità è che è possibile usarli senza dover riconvertire tra binario e decimale e avere problemi di arrotondamento.

Il "Saturn" è in grado di ragione in BCD in modo nativo, e con 64bit può gestire una dozzina di cifre significative e una esponente di tre cifre (15 nibbles):

In tale schema un numero può avere un segno (S) una mantissa di 12 cifre (M) e tre di esponente (X)  con limite +/- 499. Un registro GPR può anche contenere un indirizzo (Address) di 20 bit

Linguaggio Macchina

Gli opcode sono a lunghezza variabile (tipicamente di 2 byte - 4 nibble). e l'architettura è vagamente basata su registri (non è possibile fare una operazione diretta RAM-to-RAM).

Lo stack hardware è una scelta aggressiva e un po' limitante, ma rende certamente il Saturn più veloce.

La mappa della memoria (a celle di 4bit) è del tipo

00000-1FFFF	ROM (64KB)
40000-4020c	display (unusual pixel mapping)
4020c-40xxx	status line
40304		CRC register
403F7-403FF	clock
50000-5FFFF	memory (8K repeated four times)
503f6, 2	length of the alpha register
502f8-5044F	alpha register
50450		flags
50084		key buffer head, tail 
50086		16 byte key buffer

 

Qui si trovano maggiori dettagli tecnici su questo punto, ma vaghi.

Come notate la RAM occupa uno spazio di indirizzamento di 32Kb e quindi  c'è anche chi ha trovato il modo di espandere la memoria a 32Kb.

 

Implementazioni Open Source

Per chi ama la HP42-S c'è una implementazione free molto bella chiamata Free42, che re-implementa tutte le funzioni senza emulazione, e di cui trovate le app per iPhone e Android gratuitamente.

 

Riferimenti

  1. Wikipedia ha un buon articolo sul Saturn
  2. https://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/articles.cgi?read=266
  3. ROM DUMP software (ma vi serve una introvabile HP48...)
 

(*) Su eBay si trova dai 200 € in su, generalmente usata.