Posts

We Have a PCB Now!

Image
Flash News: my new hardware partner is a professional in the field of electronics. In less than two weeks, he produced a PCB design for the Z79Forth reference board in Kicad 6. The Gerber files will be sent to JLCPCB today. And they're giving me a wonderful potion 'Cause I cannot contain my emotion " Genesis, "Supper's Ready" (from "Foxtrot", 1972).
Some Thoughts on Version Control Commit Policies This blog is dedicated to the product making of Z79Forth as a kit, which it makes it primarily a hardware thing. However, in practice, the output of the project is actually 80% software. Today, I committed to Subversion a massive change which I call the "RTC release." This is quite a complex change that includes fixes for mundane things (>IN not being updated systematically as it should be) and major features, like the NMI interrupt handler and optional support for an RTC chip at a reduced CPU clock rate (1/4th of the standard bus frequency). In a professional context (i.e. in the context of team based development), I did observe that the trend was to commit every small change at the earliest possible opportunity and, possibly through some GitLab enforced policy, have them reviewed by peer developers. Whatever the company policy is, I found that the quality of the reviews before accepting a branch merge was lacking. Usually
 Vanitas vanitatum et omnia vanitas In normal times I (a confirmed atheist) would never venture to quote the bible, especially not in Latin. My preferred hardware partner, volunteer for PCB design of Z79Forth 2.1 in Kicad, officially resigned from the kit project as of Monday last. Stated reasons were lack of leisure time and family duties. This is unfortunate and unexpected, obviously. One of the many US Marine Corp motto goes: "Improvise, adapt, overcome." And so will I eventually. The fact remains that Jean-Marc's contribution be will be dearly missed. So it goes, as Kurt Vonnegut would have it...
First Steps with Programmable Logic Let's say you need a five bit binary counter and do not happen to have one in store. What would you do? I did have a few Atmel/Microchip GALs which I never had a chance to put to good use up until now. The WinCUPL syntax for specifying a design is a bit odd and it takes some time to get used to when you are coming from a software background. But it can be done, perstistence beeing, as often, the mother of all virtues. I spent quite some time figuring out what the proper equations should be but I eventually found out. The ATF22V10C has registered outputs, which means they can be used for counting purposes or as shift registers. The magic incantations happen to be as follows: q4.d = q4 $ (q3 & q2 & q1 & q0); q3.d = q3 $ (q2 & q1 & q0); q2.d = q2 $ (q1 & q0); q1.d = q1 $ q0; q0.d = !q0; The beauty of the design is simply outstanding!
The Sum of Many Hopes Very few things in life are as rewarding as engineering can be. That is especially true from a hardware perspective. About three years ago, I bought a double Europe format prototyping board and, essentially, I had a whole world of potential creativity ahead of me. I restricted the field to a project that I had in mind for quite a long time (more than thirty years): put an actual 6809 processor to work. As often in life, your own personal evolution is guided by role models--people who inspire you to go above and beyond. Many of my former teachers are part of my personal history. Before I began my associate degree in EE I was already engaged in hardware experimentation. In other words, by reading amateur electronics publications, I already knew way more than I was supposed to when I entered the field as a student. That helped quite a bit with the academic curriculum. I remember this particular test in embedded software. I had spent countless hours in the lab develop
Schematics 2.2 are finalized. I will add no new features to it. Compared to the 2.1 implementation, it will add: a jumper based USB/RS232 multiplexer. interrupt driven serial communications. Both HW and SW flow control will be supported. a simplified (and fixed) JK flip-flop based CPU clock generator with possible support for clock stretching via signals provided over an extension connector. a divide by three circuit in the ACIA clock generation path. Serial communications will be either at 38400 or 115200 bps. simplified CompactFlash connectivity over an inexpensive ATA/CF adapter. All I need to do now is to thoroughly verify the thing, come up with a realistic and detailed enough bill of material and send the outcome to Jean-Marc for an initial PCB batch. I am still missing components (IC sockets, resistor networks, straps, headers and capacitors) that will eventually be needed for the first PCB trials. Stay tuned!  
 To choose is to renounce this was the input I got very early on when I approached my hardware partner (Jean-Marc) about the possibility of building a kit on the basis of the Z79Forth prototype. The message is something one might hear in church but, in his mind, this took a particular meaning. It took me a while to realize the extent to which he was right, as a seasoned hardware designer himself. At some particular point in time, I decided that it did not have to be so and I could have serial communications either on USB or on RS232. I made this a reality by the end of last year by resorting to a jumper based multiplexer. This was rewarding by itself and I remain proud of the result as an integrator. The additional required hardware is minimal: a pair of 10 K resistors. five 1 muF capacitors (ceramic un-polarized). four dual-throw jumper based switches. one Max 232 integrated circuit. a ten pin Intel DTK compatible header. Jean-Marc's opinion remains valid nonetheless. He also sugg