Low level programming

C++ & assemblers

I started programming at the lowest level – assembler. But first I had to write this assembler. I didn't use a text editor or compiler. I learned the machine codes of the Intel 8080 processor and byte by byte I created a working assembler. Then there was a macro assembler and a few versions of cross assemblers for various processors available at the turn of the 70s and 80s, such as SCMP, Z-80, 6809 or 8086.

My last project programmed in assembler was a temperature controller. That was the end of the 90s. Gradually, C compilers became more and more effective and required much less time to achieve the intended result. Although I gave up using assemblers, I realize that in specific hardware cases they can be a better solution.

Also at the end of the 90s, I programmed a few versions of weighing processors in C. Besides, first I had to develop a schematic diagram and a PCB. These were both stand-alone designs and those that worked with a PC. The idea was to dynamically measure the axle loads of a vehicle to check whether the permissible load transferred by the vehicle to the road had been exceeded.

While working for Inventia, I worked with colleagues who designed telemetry modules. My cooperation involved writing code fragments for communicating with the outside world.

I have recently become interested in cheap and versatile Arduino systems. In most cases, this has freed me from having to design PCBs. Of course, my experience with C/C++ is very useful.

Arduino modules have many advantages. There is a whole range of processors with different performance, different memory resources and a whole range of interfaces. The available libraries support different communication protocols starting from RS-232, through 1-wire, I2C, ending with Wi-Fi. In addition to processors, there are various interfaces available both for measuring physical quantities and for communication. The whole thing allows for faster and cheaper design of ready-made solutions.

As an aside, I was forced to master 3D printing (I have my own printer). I design elements using FreeCAD. Currently in version 1.0.