Firebird 6502
A simple 8bit computer
Firebird is a simple 8 bit computer, based on a 6502 CPU, running at 1MHz. It has been designed in 2021 specifically to act as a clock generator within the CBM 8032 AV project. The initial hardware design already supported the addition of a sound card, work on it stared in summer 2024, see bottom of this page!
Development Diary
21-02-04 first draft and tests of firmware using the CBM 8032 almost done: boot loader, display, initialisation of the VIA, ACIA, etc... front panel ordered at Schaeffer. Display panel PCB ordered. All parts for CPU board and power supply board ordered. Start to work on layout for CPU board.
21-02-19 I guess I am going to test the complete system on the breadboard. Yesterday first successful run of a program. It now can write its name. Cute.
21-02-21 Struggling with bus timing and/or signal level issues.
21-03-05 Found a really embarrassing logical error in my address decoding, which will probably explain the issues above... Will rip it all apart and redo with the new -hopefully correct- version. Start working on PCB design. Still aiming to get the machine into a 180mm x 65mm x 280mm enclosure. And having tons of ideas what to do with it once it is running fine.
21-03-10 CPU board is running 100% as expected, basic operating system is doing its job, and bidirectional data transfer between a Max patch and FiBi is also working flawless. Time to start working on the final print board.
21-03-27 Building a lot of helper tools for this project. More work at the beginning, but so far paid of every single time, makes the process faster: A tool for data transfer from and to Firebird, a wait timer calculator for the Clock Generator software, a general purpose HEX - DEC - binary converter with some nice additions, and a tool to assemble program data and format for transfer to EPROM.
21-04-23 First serious attempt to design the PCB for the CPU board. A lot of details nailed down in the last four weeks, including adding a hardware key repeat function and solved a bus timing issue using a slower older 74LSxxx series chip in one place. Glad I bought a good logic analyser. It is absolutely fascinating to see that the breadboard version of this computer now just runs, and I am actually already using it to generate clock signals. Things move slower than I would want, but they are moving.
21-04-28 Spent the last days doing the circuit board routings manually in KiCad. Never done this before, so it took a while, but I am confident it is going to be good. Also correct 3D footprints of all parts now :-).
21-05-02 Still finding little things to improve / mistakes. Also making sure everything fits well together mechanically, connectors from CPU board to DAC board and to power supply need to be aligned, the big bus header connecting the boards needs to be in the right place, and such things more. Found an issue that would have drained the RAM backup battery faster than necessary. Solved it.
21-05-09 The six circuit boards which constitute the basic machine, from left to right: IO board, power supply board, CPU board, display board, button board. Not started yet is the development of the DAC / filter / (and potentially speech-synthesis) board, which is not necessary for its primary function as clock generator, but will be done eventually to allow me to develop sound routines for the CBM 8032 AV project on it.
21-07-24 Connections on the back for communication with the CBM 8032 computers and a serial port for interfacing with a MacBook.
21-07-25 Self-test routine, notifies about memory corruption and other critical conditions.
From left to right: I/O board, power supply, CPU board, display board. Still missing is the audio DAC board and potentially a graphics / CRT control board, which will both sit on top of the CPU board.
Firebird in action as clock generator on stage of the CBM 8032 AV performance.
July 2024: Towards a sound generating unit
I finally started to work on the missing DAC board, which now also comes with a SPO256-AL2 speech synthesis chip.
Left: Anlog output control, filters. Center: speech synthesis VCO, volume control, Top: speech synthsis chip. Right: control logic and digital to analog converters.
The hidden beauty of the traces. Routed by hand not by algorithm, of course.
July 24th 2024: Slightly wrong and outdated schematic of the sound card.
July 28th 2024: This is going to be manufactured. :-)
August 14 2024: First tests with the new DAC board. Some minor mistakes but so far things look good. It needs 35mA on the 9V and -9V rails, and the tiny voltage regulators get a bit too warm for my taste - I will need to add some cooling, and I made a studid error with one non-inverting op-amp stage, which I fixed. I also designed the power connector 180° shifted (duh!!!) The rest so far is doing well. I did not test the speech synthesis yet, this is due tomorrow. Speech chip is not in socket in the photo above. They are obsolete and hard to find. I want to make sure it all runs fine before adding it. Also I need to rewrite some of the Kernal code now, to initialise the computer correctly with the DAC board present.
August 16 2024: Speech synthesis works and is a lot of fun! Came across a few more minor issues, and decided to re-do the board. Found a way to reduce the signal to noise ratio from the speech synthesis by at least 10dB and by doing so now have a better method to mute the synthesis without clicks as a nice side effect.
November 12 2024: Towards integrating Firebrid into my studio setup. This is the electronics of a Eurorack modular breakout box, allowing to route the audio outputs including speech synthesis into a modular environment. It provides four individual outputs that can be assigned to sounds, and also trigger inputs and outputs. The sound synthesis software has been updated to enable the new routing feature and to detect the presence of the breakout box.
Firebrid now has a rudimentary debugger, allowing to use the BRK instruction to display CPU register states and to continue afterwards. The 'note input' interrupt routine has been updated to respond to a single pseudo MIDI Control Change message, which can be used to modify synthesis whilst running.