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
- Wikipedia ha un buon articolo sul Saturn
- https://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/articles.cgi?read=266
- ROM DUMP software (ma vi serve una introvabile HP48...)
(*) Su eBay si trova dai 200 € in su, generalmente usata.