Compiling Assembler programs for CP/M
Let’s see an overview of assembler compilers and development environments to create programs for the CP/M operating system and in general for any machine with a Z80 microprocessor.
Let’s see an overview of assembler compilers and development environments to create programs for the CP/M operating system and in general for any machine with a Z80 microprocessor.
Recently, a lot has been heard about the COBOL language, due to the need of some States to update their computer systems and the difficulty in finding programmers with some experience in using this programming language. Not knowing the language, if not for “hearsay”, I thought to deepen its knowledge a little, more out of personal curiosity than anything else.
To pass the time I thought to brush up the programming in BASIC a little by writing a simple program for converting from decimal (or Arabic) to Roman numbers and vice versa. The program is portable enough to run on ZX Spectrum, Commodore 64, MSX home computers and on CP/M systems equipped with MBASIC interpreter.
Few days ago the new Eclipse 4.6 “Neon” was released and as usual when a new update is released, I started to build the target platform required to develop rich client applications (RCP). The unhappy surprise was that the delta pack file containing the plugins and binary launchers for all supported operating systems, is no more available from the downloads page. Few years ago one of the packages useful to build a target platform, the platform sdk, was removed from the downloads. Not a big problem, it can be extracted from the standard Eclipse SDK package removing the unnecessary features and plugins with a bit of work, then adding the delta pack to enable the multi platform export options. Today without the delta pack, this is not possible anymore.
Programs that use overlay code were very popular in the era of early home computer systems when the amount of memory was not much, and the ability to load portions of code only when necessary allowed to make programs much larger than the available memory.
With microcontrollers we are in a similar situation with sometimes very complex programs and a rather limited memory, just think for example to the management of the SD card file system or the internet access libraries, that can severely limit the memory available for the program itself, especially if they are to be used simultaneously.
The Parallax Propeller is a microcontroller with 32K of internal RAM memory and uses an external EEPROM to load the code to run at power up. Since only the first 32K of the EEPROM are used for the program it is possible to dedicate the exceeding space of larger memories for data storage. Fortunately with the GCC compiler and the standard tools it is also possible to store portions of the program code to be loaded when necessary.
When we started to use Eclipse Databinding framework we faced the problem of running JUnit tests against databinding-enabled classes. Databinding requires a default Realm to be defined and all classes must be run from within this realm. The Eclipse framework automatically initializes the default realm at application startup with a code that looks like the following (from Workbench.createAndRunWorkbench):