Retrocomputing con 4$: Z80-MBC un mini sistema su breadboard
Ciao a tutti,
vi propongo una cosetta che ho fatto circa un anno fa, giusto perché mi "stuzzicava" l'idea..., e che potrebbe essere inserita nella categoria del... "famolo strano"...
Si tratta di un mini "retro-sistema" con 4 IC (versione base con Basic e Forth) con uno Z80 CMOS, una Ram statica da 128KB e un Atmega32A che funge da generatore di clock a 4MHz per lo Z80, emulatore "universale" di I/O e da EPROM.
Il tutto mi è costato circa 4$ di integrati (cercando "in giro"):
* Z80 CPU CMOS (Z84C00) 4Mhz o maggiore ($1.16)
* Atmega32A ($1.70)
* TC551001-70 (128kB SRAM) ($1.10)
* 74HC00 ($0.25)
totale: $4.21
avendo già le due breadboard e il convertitore seriale-USB.
Il filo usato per la breadboard l'ho recuperato da cavi lan rotti. La RAM da 128kB è usata solo per i primi 64kB essendo questo lo spazio d'indirizzamento dello Z80, e l'ho scelta solo perché costava meno di una 64KB...
Lato Atmega32A ho usato Arduino come IDE.
Nel video seguente si vede la versione base su breadboard:
E qui la versione completa su PCB con il CP/M 2.2 installato su due "Virtual Disk" realizzati sulla "patch area" con un paio di EEPROM 24LC1025 (il PCB è stato realizzato da Bill Westfield, l'attuare "maintainer" di Optiboot, il bootloader di Arduino):
Ovviamente non poteva mancare qualche espansione... e così ho realizzato un "modulo" aggiuntivo per 16 GPIO bidirezionali, naturalmente su breadboard.
Nel video seguente una demo del "modulo" in questione, con un programma rigorosamente scritto in Basic:
Nella foto seguente l'intero "sistema" su breadboard (con "modulo" GPIO e "modulo "Virtual Disk"):
Come in ogni "development enviroment" che si rispetti, non potevano mancare anche un cross-assembler e un cross-C, con annessa modalità per poter compilare e caricare sul "target" con un solo comando, in stile "Arduinico" (ma utilizzando SDCC come compilatore C e TASM come asembler).
Nel video seguente un esempio di compilazione, caricamento sul target ed esecuzione (sul target) di un semplice programma "blink led" scritto in C con SDCC:
Infine l'ultimo "upgrade" che ho realizzato, la versione QP/M (un CP/M "enhanced" dell'epoca) con gestione del file timestamping tramite RTC:
Tutti dettagli per la realizzazione (schemi, PCB e SW vari) sono qui.
Al solito rimango a disposizione per chiarimenti ed info.
Saluti
vi propongo una cosetta che ho fatto circa un anno fa, giusto perché mi "stuzzicava" l'idea..., e che potrebbe essere inserita nella categoria del... "famolo strano"...
Si tratta di un mini "retro-sistema" con 4 IC (versione base con Basic e Forth) con uno Z80 CMOS, una Ram statica da 128KB e un Atmega32A che funge da generatore di clock a 4MHz per lo Z80, emulatore "universale" di I/O e da EPROM.
Il tutto mi è costato circa 4$ di integrati (cercando "in giro"):
* Z80 CPU CMOS (Z84C00) 4Mhz o maggiore ($1.16)
* Atmega32A ($1.70)
* TC551001-70 (128kB SRAM) ($1.10)
* 74HC00 ($0.25)
totale: $4.21
avendo già le due breadboard e il convertitore seriale-USB.
Il filo usato per la breadboard l'ho recuperato da cavi lan rotti. La RAM da 128kB è usata solo per i primi 64kB essendo questo lo spazio d'indirizzamento dello Z80, e l'ho scelta solo perché costava meno di una 64KB...
Lato Atmega32A ho usato Arduino come IDE.
Nel video seguente si vede la versione base su breadboard:
E qui la versione completa su PCB con il CP/M 2.2 installato su due "Virtual Disk" realizzati sulla "patch area" con un paio di EEPROM 24LC1025 (il PCB è stato realizzato da Bill Westfield, l'attuare "maintainer" di Optiboot, il bootloader di Arduino):
Ovviamente non poteva mancare qualche espansione... e così ho realizzato un "modulo" aggiuntivo per 16 GPIO bidirezionali, naturalmente su breadboard.
Nel video seguente una demo del "modulo" in questione, con un programma rigorosamente scritto in Basic:
Nella foto seguente l'intero "sistema" su breadboard (con "modulo" GPIO e "modulo "Virtual Disk"):
Come in ogni "development enviroment" che si rispetti, non potevano mancare anche un cross-assembler e un cross-C, con annessa modalità per poter compilare e caricare sul "target" con un solo comando, in stile "Arduinico" (ma utilizzando SDCC come compilatore C e TASM come asembler).
Nel video seguente un esempio di compilazione, caricamento sul target ed esecuzione (sul target) di un semplice programma "blink led" scritto in C con SDCC:
Infine l'ultimo "upgrade" che ho realizzato, la versione QP/M (un CP/M "enhanced" dell'epoca) con gestione del file timestamping tramite RTC:
Tutti dettagli per la realizzazione (schemi, PCB e SW vari) sono qui.
Al solito rimango a disposizione per chiarimenti ed info.
Saluti
