Post

Translate

Joyce, l'emulatore Amstrad PCW: installazione e modifiche al codice per il supporto alla tastiera italiana del Macbook Pro

Immagine
Questo post descrive la procedura per compilare ed installare l'emulatore Joyce di Amstrad PCW su MacOS e una mia patch al codice sorgente per utilizzare la tastiera italiana del Macbook Pro. La documentazione dell'emulatore spiega come personalizzare il layout della tastiera, tuttavia questo va fatto a CP/M già avviato, tramite il comando PCKEY. Ho trovato questo metodo di difficile applicazione, considerando anche che non riuscivo a digitare caratteri basilari come i due punti! Ho quindi deciso di procedere con la via "facile", modificando direttamente il codice Joyce che gestisce la corrispondenza tra la tastiera del PC e quella del sistema emulato. Le modifiche, che si applicano alla versione 2.2.12, l'ho scritte senza badare molto alla forma e senza cercare alternative meno invasive ad una mappatura dei tasti hardcoded nel codice stesso, per cui non è certo un bel esempio di programmazione! Joyce permette l'emulazione dei PCW serie 8000, 9000 e ...

Retro-restoring Amstrad PCW 8512

Immagine
Il PCW 8512 (e il suo fratello minore 8256) è un computer ad 8 bit prodotto dalla Amstrad a partire dal 1985. Concepito principalmente come sistema di video-scrittura, poteva essere utilizzato anche come un computer general purpose basato sul sistema operativo CP/M. La CPU Il microprocessore utilizzato è il famoso Zilog Z80 con clock a 4MHz, mentre la RAM è di 512K. La cosa interessante di questo sistema è che è sprovvisto di ROM, per cui il sistema operativo ed il BIOS vengono caricati dal disco. All'avvio il controller della stampante invia delle istruzioni alla CPU che non fanno altro che scrivere dall'indirizzo 0x0000 il vero codice di bootstrap. Quest'ultimo a suo volta caricherà dal disco A il bootstrap del sistema operativo. Lo Storage Il sistema ha due dischi da 3'' (non 3.5''!!) che è lo stesso formato usato dal CPC 6128 e dal   Sinclair Spectrum +3 . Il drive A è a singola densità e singola faccia, per cui, con 40 tracce...

Valore minimo di una costante intera in PHP

In PHP il minimo intero a 64 bit vale esattamente -9223372036854775808 (costante PHP_INT_MIN), che equivale a -2^63 o anche 1 << 63. La sua rappresentazione binaria è la seguente: 1000000000000000000000000000000000000000000000000000000000000000 L'intero più grande è 9223372036854775807 (costante PHP_INT_MAX) equivalente a 2^63-1 o anche 1 << 63 - 1. Questa è la sua rappresentazione binaria: 0111111111111111111111111111111111111111111111111111111111111111 Detto questo, la seguente assegnazione dovrebbe create una variable di tipo int , pari al valore specificato: $x = -9223372036854775808; Invece $x sarà un  double , anziché un  int . Infatti il risultato di: var_dump($x); Sarà: double(-9.2233720368548E+18) La costante intera assegnata a $x è stata convertita in double , perché? La motivazione sta nel fatto che l'operatore unario "-" è applicato subito dopo che la costante intera è stata letta. Dato che la costa...