{"id":298,"date":"2017-02-13T23:10:21","date_gmt":"2017-02-13T22:10:21","guid":{"rendered":"http:\/\/www.aemfoto.it\/wp\/?p=298"},"modified":"2019-11-12T21:09:07","modified_gmt":"2019-11-12T20:09:07","slug":"emulatore-compustar","status":"publish","type":"post","link":"https:\/\/www.aemfoto.it\/wp\/2017\/02\/13\/emulatore-compustar\/","title":{"rendered":"Emulatore Compustar"},"content":{"rendered":"<p><strong>Aggiornamento 6 Dicembre 2017<\/strong>: Nuova versione, 1.09!<br \/>\n<strong>Aggiornamento 27 Dicembre 2018<\/strong>: Nuova versione, 1.10!<br \/>\n<strong>Aggiornamento 12 Novembre 2019<\/strong>: Nuova versione, 1.11!<\/p>\n<p>Non vi \u00e8 mai capitato di voler fare un progetto&#8230; ma non abbastanza per inziare a farlo&#8230; e poi qualcosa vi fa venire in mente di nuovo quel progetto, ma siete pigri per cui non fate nulla. E alla fine capita qualcosa che vi fa capire che \u00e8 giunto il momento.<\/p>\n<p>Questo \u00e8 quello che mi \u00e8 capitato con l&#8217;emulatore del compustar.<\/p>\n<p>Volevo scrive un emulatore software di qualcosa vintage ma allo stesso tempo non troppo complesso, perch\u00e8 volevo divertirmi e non iniziare un progetto software troppo grosso.<\/p>\n<p>Poi volevo imparare ad usare bene tutte le funzioni del Compustar che abbiamo al &#8220;Osservatorio Citt\u00e0 di Legnano&#8221; (<a href=\"http:\/\/www.antareslegnano.org\" target=\"_blank\" rel=\"noopener noreferrer\">qui il link<\/a>), ma il tempo che potevo passare in osservatorio era piuttosto limitato e la documentazione disponibile era incompleta.<\/p>\n<p>E poi, nel 2009, sono arrivate le nuove EPROM di Tom Sorbel e io ho dovuto installarle (smanetto con i computer, quindi so fare tutto, no?).<\/p>\n<p>Nel fare questo aggiornamento mi sono accorto che non avevamo nessuna documentazione tecnica del Compustar, non avevamo lo schema elettrico, una lista parti&#8230; niente. E se mai avessi dovuto aggiustare qualcosa, non avevo neanche idea di come avrebbe dovuto funzionare. E non riesci a capirlo quando, per l&#8217;appunto, non funziona.<\/p>\n<p>Ho quindi iniziato un lungo (e a suo modo divertente) lavoro di reverse engineering del software e dell&#8217;hardware del Compustar, cercando di capire come le differenti parti del circuito lavoravano in base a come il software le pilotava. Approfondir\u00f2 in un futuro articolo i dettagli di come il Compustar funzioni internamente. Per ora voglio solamente dire che sono rimasto impressionato do come \u00e8 stato progettato. E&#8217; veramente un capolavoro, viste le limitazioni che il progettista originale (che \u00e8, suppongo, Mike Simmons, visto che il suo nome si trova all&#8217;interno del programma) ha dovuto affrontare nel 1986. Una su tutte: la RAM era particolarmente costosa, al tempo, e l&#8217;intero programma del Compustar gira in 256 <strong>bytes<\/strong> di RAM!!<\/p>\n<p>Questo lavoro mi ha fatto scoprire qualche bug (veramente pochi, in realt\u00e0, per un software che presumibilmente \u00e8 stato scritto in assembler) e mi ha fatto allo stesso tempo pensare a miglioramenti che potrebbero venire fatti e a qualche altra idea. Di conseguenza era d&#8217;obbligo sviluppare un emulatore per capire fino in fondo i dettagli del funzionamento del software e provare eventuali modifiche che avrei voluto fare. Ma anche questo sar\u00e0 oggetto di un futuro post.<\/p>\n<p>La prima versione dell&#8217;emulatore era venuta pronta nel 2013, ma non era rifinita come mi sarebbe piaciuta, ed in pi\u00f9 non la consideravo utile in senso generale per cui (sono pigro, non dimenticatevelo) non l&#8217;avevo pubblicata da nessuna parte.<\/p>\n<p>La decisione, l&#8217;anno scorso, di creare, con Marco, questo nuovo sito per pubblicare un po&#8217; delle cose che abbiamo realizzato mi ha fatto cambiare idea per cui, alla fine, eccolo qui.<\/p>\n<h3>Cos&#8217;\u00e8 il Compustar (per chi non lo sapesse&#8230;)<\/h3>\n<p>Sfortunatamente in internet non ci sono molte informazioni su cosa sia il Compustar. E&#8217; un computer dedicato realizzato dalla Celestron nel 1986 (credo) per automatizzare i telescopi da 11 e 14 pollici. Era molto avanzato per il 1986, ed \u00e8 ancora perfettamente utilizzabile al giorno d&#8217;oggi. Gli mancano i calcoli per la Luna e per i pianeti, ma il catalogo oggetti \u00e8 piuttosto completo. Ed \u00e8 molto facile da usare.<\/p>\n<p>Se volete giocare con l&#8217;emulatore, inziate premendo il tasto BEGIN e seguite le istruzioni inserendo un&#8217;ora (suggerisco notturna!), una data (scegliendo un anno prima del 2000: il Compustar non funziona nel 21esimo secolo!) e le vostre coordinate geografiche (che potete anche inventare). Il telescopio inizier\u00e0 un movimento verso la stella di riferimento (REF) 11 (la Polare). Premete di nuovo ENTER e il telescopio si muover\u00e0 ancora verso una stella di allineamento scelta in base alle coordinate e alla data inserita. Premente ENTER un ultima volta e la procedura di allineamento verr\u00e0 completata. Ora, per prova, potrete far andare il telescopio su qualche altro oggetto, M81, per esempio: premete SLEW, poi M (per Messier), poi 81 e infine ENTER. Udirete un beep e il telescopio inizier\u00e0 a muoversi verso le coordinate di M81 dopo aver visualizzato alcune informazioni sull&#8217;oggetto stesso.<\/p>\n<h3>Il programma<\/h3>\n<p>La finestra principale del software \u00e8 molto simile al Compustar stesso. I bottoni si possono premere cliccandoci sopra con il mouse o utilizzando la tastiera (se vi fermate con il mouse sopra uno dei quadrati bianchi un tooltip vi dir\u00e0 quale \u00e8 il tasto corrispondente).<\/p>\n<p><a href=\"http:\/\/www.aemfoto.it\/wp\/wp-content\/uploads\/2017\/02\/Compustar-Emulator.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" class=\"size-full wp-image-284 alignleft\" src=\"http:\/\/www.aemfoto.it\/wp\/wp-content\/uploads\/2017\/02\/Compustar-Emulator-Small.png\" alt=\"\" width=\"400\" height=\"334\" srcset=\"https:\/\/www.aemfoto.it\/wp\/wp-content\/uploads\/2017\/02\/Compustar-Emulator-Small.png 400w, https:\/\/www.aemfoto.it\/wp\/wp-content\/uploads\/2017\/02\/Compustar-Emulator-Small-300x251.png 300w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/><\/a><\/p>\n<p>Il men\u00f9 <strong>View<\/strong> vi permetter\u00e0 di cambiare le condizioni di &#8220;Low battery&#8221; e &#8220;Daylight&#8221; (condizioni che sono semplicemente indicate da una etichetta sul display del Compustar) e di abilitare e visualizzare entrambe i joystick (cliccate e trascinate la grossa palla gialla per spostare il joystick, mentre i due triangoli bianchi sono i due bottoni del joystick stesso).<\/p>\n<p><a href=\"http:\/\/www.aemfoto.it\/wp\/wp-content\/uploads\/2017\/02\/Joystick.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" class=\"size-thumbnail wp-image-290 alignright\" src=\"http:\/\/www.aemfoto.it\/wp\/wp-content\/uploads\/2017\/02\/Joystick-small-150x121.png\" alt=\"\" width=\"150\" height=\"121\" \/><\/a>Questo men\u00f9 vi visualizzer\u00e0 anche tutte le funzioni di &#8220;debugging&#8221; presenti nell&#8217;emulatore, funzioni che, se c&#8217;\u00e8 abbastanza richiesta, descriver\u00f2 in un futuro post. Tenete presente che sono piuttosto complesse e richiedono una conoscenza approfondita del processore 8051 utilizzato nel Compustar.<\/p>\n<p>Il men\u00f9 <strong>Options<\/strong> vi permette di selezionare (ed esegire) un firmware custom e di cambiare alcuni dettagli dell&#8217;emulazione (per esempio, come emulare la porta seriale del Compustar).<\/p>\n<p>I men\u00f9 <strong>File<\/strong> e <strong>About<\/strong> sono semplicemente quello che dicono di essere.<\/p>\n<div style=\"clear: both;\"><\/div>\n<p>&nbsp;<\/p>\n<p>Potete scaricare il programma di installazione dell&#8217;emulatore qui, sono qualcosa meno di 2 Megabytes.<\/p>\n<p><a href=\"https:\/\/www.aemfoto.it\/wp\/wp-content\/uploads\/2017\/02\/Compustar-Emulator-1.11-Setup.exe\"><img loading=\"lazy\" class=\"alignnone wp-image-497 size-full\" src=\"https:\/\/www.aemfoto.it\/wp\/wp-content\/uploads\/2017\/02\/Download-CompustarEmulator-v1.11.png\" alt=\"\" width=\"200\" height=\"70\" \/><\/a><\/p>\n<h3>Versioni<\/h3>\n<h4>v 1.01, 27 Ottobre 2013<\/h4>\n<ul>\n<li>Corretto: La finestra di &#8220;Add Breakpoints&#8221; a cui mancavano alcuni valori di default<\/li>\n<li>Corretto: cambio di bit nella schermata di &#8220;Memory\/SFR&#8221; che non funzionava<\/li>\n<li>Aggiunto: Breakpoints sulla lettura della memoria programma<\/li>\n<li>Portato il numero di breakpoint a 8 per tipo (erano 4 per tipo)<\/li>\n<li>Aggiuto supporto tastiera per l&#8217;utilizzo del Compustar (i tasti 0-9, pi\u00f9 &#8216;.&#8217;, &#8216;-&#8216;, &#8216;s&#8217;, ESC, BACKSPACE e ENTER)<\/li>\n<li>I file delle Eprom vengono ricaricati al reset del Compustar.<\/li>\n<\/ul>\n<h4>v 1.02, 28 Ottobre 2013<\/h4>\n<ul>\n<li>Aggiunta la possibilit\u00e0 di ricaricare i file delle Eprom al reset del Compustar SOLO se questi sono cambiati<\/li>\n<\/ul>\n<h4>v 1.03, 9 Dicembre 2013<\/h4>\n<ul>\n<li>Corretto: la posizione della finestra principale viene salvata quando l&#8217;emulatore termina<\/li>\n<li>Corretto un Run time error se il file list non era valido<\/li>\n<li>Eliminato il bordo bianco attorno ai bottoni (che non doveva esserci) su Windows 7<\/li>\n<li>Aggiunta una finestra (sperimentale) per vedere le fasi dei motori. Essendo sperimentale non viene visualizzata dal men\u00f9 di &#8220;Show All&#8221;<\/li>\n<\/ul>\n<h4>v 1.04, 12 Aprile 2014<\/h4>\n<ul>\n<li>Le descrizioni della configurazione dell&#8217;emulazione della porta seriale nel men\u00f9 &#8220;Settings&#8221; \u00e8 stata modificata per renderla pi\u00f9 leggibile.<\/li>\n<li>La finestra del Terminale per l&#8217;emulazione seriale \u00e8 ora ridimensionabile e il testo di output pu\u00f2 essere selezionato e copiato<\/li>\n<li>Fixato un Run time error quando si eliminava un breakpoint senza aver caricato un file di list<\/li>\n<li>Fixato: l&#8217;ESC non chiudeva la finestra di &#8220;Aggiungi Breakpoint&#8221;<\/li>\n<li>Aggiunta la possibilit\u00e0 di caricare un file di descrizione per colorare e descrivere le celle di RAM<\/li>\n<li>L&#8217;emulazione della tensione di batteria non \u00e8 pi\u00f9 fatta con un valore fisso, ma con un valore casuale all&#8217;interno dell&#8217;intervallo di funzionamento normale o di &#8220;batteria scarica&#8221;<\/li>\n<\/ul>\n<h4>v 1.05, 18 Maggio 2014<\/h4>\n<ul>\n<li>Aggiunta l&#8217;emulazione di una RAM non volatile o di un DS1643 nello zoccolo &#8220;D&#8221; (indirizzi 0x2000-0x3FFF)<\/li>\n<li>Corretto: I file delle Eprom non venivano ricaricati se il reset veniva fatto usando il bottone della toolbar nella finestra del codice.<\/li>\n<\/ul>\n<h4>v 1.06, 13 Agosto 2014<\/h4>\n<ul>\n<li>Il contatore del tempo di funzionamento \u00e8 ora a 64 bit, per cui non ricomincia da zero dopo poco pi\u00f9 di 4200 secondi<\/li>\n<li>Corretta anche l&#8217;emulazione del DS1643 che ora emula anche il suo tempo di avvio, iniziando a funzionare dopo 35ms.<\/li>\n<\/ul>\n<h4>v 1.07, 28 Ottobre 2014<\/h4>\n<ul>\n<li>Cambiato il modo di generare la tensione emulata della batteria. Dovrebbe ora essere meno &#8220;ballerina&#8221;<\/li>\n<\/ul>\n<h4>v 1.08, 27 Gennaio 2017<\/h4>\n<ul>\n<li>Aggiunto il men\u00f9 di &#8220;About&#8221;<\/li>\n<li>Le impostazioni vengono ora salvate in HKCU\\SOFTWARE\\A&amp;M\\CompustarEmulator<\/li>\n<li>Aggiunto il supporto per il list file dell&#8217;assemblatore ASEM-51.<\/li>\n<\/ul>\n<h4>v 1.09, 6 Dicembre 2017<\/h4>\n<ul>\n<li>Aggiunta emulazione nel terminale per l&#8217;ingresso che assumo sia connesso all&#8217;input di &#8220;Carrier Detect&#8221; (visto che il Compustar ha un connettore DB-9 pre-standard)<\/li>\n<li>Migliorata l&#8217;emulazione dei pin di I\/O<\/li>\n<li>Corretto un errore che non permetteva di mettere breakpoint ad indirizzi &gt;= 0x8000<\/li>\n<li>Corretta una &#8220;race condition&#8221; nella routine di tramissione sulla porta seriale<\/li>\n<li>Migliorata l&#8217;emulazione dell&#8217;hardware quando il jumper A15 e la dimensione della EPROM codice non sono corrispondenti<\/li>\n<li>Corretta la dimensione di un buffer che poteva portare alla corruzione della memoria cache della EPROM codice<\/li>\n<\/ul>\n<h4>v 1.10, 27 Dicembre 2018<\/h4>\n<ul>\n<li>Aggiunta una finestra per poter vedere l&#8217;utilizzo di CPU da parte dei vari interrupt del processore (ISR profiler)<\/li>\n<li>Corretto un errore nello stato interno del core quando si verificava un errore caricando i file contenente l&#8217;immagine delle EPROM<\/li>\n<li>Aggiunta l&#8217;emulazione della seriale per l&#8217;uscita dati per la cupola. I dati vengono trasmessi alla velocit\u00e0 reale di 1709 bps, con la possibilit\u00e0 di utilizzare la velocit\u00e0 standard di 2400bps nel caso l&#8217;hardware della seriale non funzioni correttamente.<\/li>\n<li>Data e ora vengono per l&#8217;emulazione DS1643 vengono ora salvati in UT. Questo potrebbe causare un&#8217;errata ora nel caso fossero stati salvati con una versione precedente dell&#8217;emulatore, ma da ora in poi non cambieranno al cambio di ora legale\/solare.<\/li>\n<li>Aggiunta la possibilit\u00e0 di lasciar intravedere i led e i display che non sono accesi (&#8220;Ghosted Display&#8221;).<\/li>\n<li>Le opzioni &#8220;spuntabili&#8221; ( \u201cGhosted display\u201d, \u201cMute audio\u201d e \u201cSticky Buttoms\u201d) rimangono memorizzate quando si chiude il programma.<\/li>\n<\/ul>\n<h4>v 1.11, 12 Novembre 2019<\/h4>\n<ul>\n<li>Aggiunta la visualizzazione della durata &#8220;totale&#8221; di una ISR (che tiene conto anche del tempo in cui la ISR viene interrotta da ISR a priorit\u00e0 pi\u00f9 alte)<\/li>\n<li>Aggiunto bottone di azzeramento statistiche ISR<\/li>\n<li>Corretta l&#8217;emulazione delle istruzioni MOVX @Rx,A and MOVX A,@Rx che non era corretta al 100%<\/li>\n<li>Aggiunta l&#8217;emulazione del tempo di conversione dell&#8217;ADC (208\u00b5S)<\/li>\n<li>Aggiunta la possibilit\u00e0 di generare un breakpoint software, tramite l&#8217;opcode 0xA5 (che non \u00e8 definito nell&#8217;8032). Pu\u00f2 venire disabilitato ponendo HKCU\\Software\\A&amp;M\\CompustarEmulator\\HWOptions\\SWI (DWORD) a 0<\/li>\n<li>Aggiunto il supporto per la porta per la cupola, che \u00e8 cambiata nei firmware 1.81+<\/li>\n<li>Aggiunta la possibilit\u00e0 di definire come riconoscere la fine di una ISR, nella finestra di &#8220;ISR profiling&#8221;<\/li>\n<li>Le etichette definite nel sorgente assembler per il programma (CODE) possono essere usate nella finestra di &#8220;Add Breakpoint&#8221; (solo per l&#8217;assembler ASEM51)<\/li>\n<li>Aggiunto il supporto per emulare la luminosit\u00e0 del display<\/li>\n<li>Corretta una &#8220;race condition&#8221; che poteva capitare quando si chiudeva la porta seriale del terminale o della cupola.<\/li>\n<li>Corretta la generazione dei suoni, che presentavano un click periodico.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p><strong>Aggiornamento 6 Dicembre 2017<\/strong>: Nuova versione, 1.09!<br \/> <strong>Aggiornamento 27 Dicembre 2018<\/strong>: Nuova versione, 1.10!<br \/> <strong>Aggiornamento 12 Novembre 2019<\/strong>: Nuova versione, 1.11!<\/p>\n<p>Non vi \u00e8 mai capitato di voler fare un progetto&#8230; ma non abbastanza per inziare a farlo&#8230; e poi qualcosa vi fa venire in mente di nuovo quel progetto, ma siete pigri &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/www.aemfoto.it\/wp\/2017\/02\/13\/emulatore-compustar\/\">Continua a leggere<\/a><\/p>\n","protected":false},"author":3,"featured_media":284,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[5,3],"tags":[20],"language":[14],"_links":{"self":[{"href":"https:\/\/www.aemfoto.it\/wp\/wp-json\/wp\/v2\/posts\/298"}],"collection":[{"href":"https:\/\/www.aemfoto.it\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.aemfoto.it\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.aemfoto.it\/wp\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.aemfoto.it\/wp\/wp-json\/wp\/v2\/comments?post=298"}],"version-history":[{"count":14,"href":"https:\/\/www.aemfoto.it\/wp\/wp-json\/wp\/v2\/posts\/298\/revisions"}],"predecessor-version":[{"id":933,"href":"https:\/\/www.aemfoto.it\/wp\/wp-json\/wp\/v2\/posts\/298\/revisions\/933"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.aemfoto.it\/wp\/wp-json\/wp\/v2\/media\/284"}],"wp:attachment":[{"href":"https:\/\/www.aemfoto.it\/wp\/wp-json\/wp\/v2\/media?parent=298"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.aemfoto.it\/wp\/wp-json\/wp\/v2\/categories?post=298"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.aemfoto.it\/wp\/wp-json\/wp\/v2\/tags?post=298"},{"taxonomy":"language","embeddable":true,"href":"https:\/\/www.aemfoto.it\/wp\/wp-json\/wp\/v2\/language?post=298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}