Writing software, mainly radio engineering tools for my professional activities, is one of my other time consuming activities apart from ham radio. My programming career started in the early 80's with BASIC and via high level languages such as Pascalc en C and with certain degree of fanaticism in whatever I'm doing, I finally ended up creating software in assembly. To move with times it has been a sneaking intention for quite some time to rewrite my present software and develop new applications for a Windows environment. As a die-hard DOS assembly programmer, used to have full control, the obvious choice would be to learn writing Windows software using the assembly language. However time constraints and a tremendous learning curve involved in mastering raw Win32 API's kept me from doing so for quite some time. But in August 2004 I finally started using MASM32 assembler in combination with the excellent RadAsm IDE. Of great help while learning Windows assembly are the many online tutorials, including the famous Iczelion's Win32 tutorials. On this page a few samples of software created while learning to master Win32 assembly. Some of these programs are available as free downloads from the download page. |
|
My first Win32Asm project was a new version of LosCalc the software that I've been using over the years to design radio links in the frequency range between 20 MHz and 57 GHz. This Windows version includes: Terrain Profile Analysis, General Terrain and (Multiple-) knife-edge diffraction calculations, Ground based Multipath Reflection Analysis, Link Budget and Availability Calculations (including the effects of precipitation, atmospheric absorption and multi-path attenuation), Multi-Hop Performance and Interference Analysis. Meteorological parameters required to compute precipitation and atmospheric absorption are obtained from integrated ITU digital maps. |
|
![]() |
|
Among the basic parameters required in LosCalc are the geographical coördinates for each site of the link. These are usually taken from topographical maps with a scale of at least 1:25.000. To make life a bit easier I created RdLatLon, a utility to convert between X/Y coördinates in pixels of Dutch digital maps, Dutch RD and WGS84 coördinates. RdLatLon includes a data base with the boundaries and size in pixels of all 302 digital 1:25.000 digital maps covering The Netherlands. |
|
![]() |
|
Although I have the intention to include a graphical viewer in a future version of RdLatLon, the current version is still used in conjunction with a separate graphical viewer to obtain the X/Y coördinates in pixels and site elevation from the digital maps. It's also possible to convert known RD or WGS coördinates to X/Y pixel coördinates to find a location on the map. The coördinates converted by RdLatLon as well as terrain elevation and tower/building height can be stored in a data file. LosCalc has the option to import location data from RdLatLon files. |
|
SunClock is a simple program showing local time for a maximum of 500 cities stored in a customizeable database. SunClock also displays sunrise, transit and sunset times, sun elevation and azimuth angles as well as civil, nautical and astronomical twilight for the selected city in real time using system time and date or for any other selected date. |
|
![]() |
|
SunClock also includes the option to print these parameters in a tabular form for each day of the current or the selected month. |
|
Radio amateurs use the Maidenhead Locator System as an alternative to the classical latitude/longitude coordinate system to indicate their position. It divides the world up into grid squares, identified by a four-character or six-character grid square locator, enabling radio amateurs to pass on their position during a contact to fellow hams fairly accurately using only 6 digits. |
|
![]() |
WWLoc is a simple utility to convert a pair of classical latitude/longitude coordinates to a Maidenhead (WW or Worlde Wide) Locator Square. Conversely, it's also possible to determine the centre latitude/longitude coordinates for a given 2, 4 or 6 digit Locator Square. Since it was created using Win32 assembly it's a tiny program of only 9.5 KB. Installation is quite simple, just copy the executable to a directory of your own choice and create a short cut. Nothing is written into the Windows registry, so just deleting the executable and short cut will completely remove WWLoc from your system. |
Almost directly after my comeback on the ham bands in 1996, I created a small program to keep track of the WW locator squares worked and confirmed. The first version of HamLoc was a DOS program written in assembly language and I used it for more than 8 years. Although it fully met my requirements and functioned without any problem using various operating systems including Win95, Win98 and Windows XP, the time came to create a more contemporary version for Windows XP when getting more familiar with Win32Asm programming. |
|
![]() |
|
![]() |
HamLoc Version 4.00 is basically a database for radio amateurs to keep track of worked and confirmed WW (Maidenhead) Locator squares for 12 different frequency bands. As shown on above screen shot, Worked/Confirmed squares can be displayed as an overlay on a world map. Worked minor squares are shown in yellow and confirmed squares in green. |
Worked and confirmed squares can be imported from ADIF log files and/or entered/edited manually using the Remote Locator Window. Although the program accepts remote locators with either 2, 4 or 6 characters (e.g. JO, JO22 or JO22ID), setting or changing the status of a minor square requires a designator of at least 4 characters (eg. JO22 or JO22ID). A minor square with all frequency bands unchecked will be automatically removed from the data base. One of the features is a "Needed Squares" dialog showing the missing minor squares in a given major square and for a given frequency band. |
![]() |
Note 1 : This application requires a screen resolution of at least 1024x768 pixels, it will not run if the screen resolution is less than that. |
|
As a derivative of HamLoc with an almost identical user interface, HamBeacon Version 3.00 is a Ham Radio Beacon Data Base capable of storing the parameters of a maximum of up to 5000 radio beacons in 15 different HF/VHF/UHF and SHF frequency bands. It also includes a visual NCDXF beacon tracker. |
|
As shown on above screen shot the locations of all beacons in the selected frequency band will be displayed on a world map. When hovering with the cursor over a beacon, its callsign, locator and frequency as well as the great circle bearings and distance from your own locator are shown in the status bar. A left mouse click will freeze the display and show the great circle path on the map in addition to the parameters shown in the status bar. A subsequent right mouse click will restore the display of all beacons. Beacons can be added to and deleted from the database or modified by means of a Database Editor accessible with a right click on a beacon or from the main menu (right screen shot). HamBeacon also includes the option to print a list of beacons in a selected band including distances and bearings to and from your own locator. |
|
Hambeacon Version 3.00 also includes a visual NCDXF beacon tracker showing the great circle path, bearing and distance to the sequential NCDXF beacons in real time. |
|
Note : This application requires a screen resolution of at least 1024x768 pixels, it will not run if the screen resolution is less than that. |
|
MiniMuf-3 is a simplified prediction program to determine the maximal usable frequency (MUF) along an HF propagation path. The model, first published in 1978 by R. B. Rose, J. N. Martin, and P. H. Levine of the Naval Ocean Systems Center, is based on a large number of oblique ionograms from a wide variety of sounding paths. Given the date, transmitter and receiver locations, and the sunspot number, hourly MUF values can be obtained. I've used MiniMuf-3 for many years until more sophisticated software and hardware became available suitable for personal use (for example IONCAP/VOACAP). While still using MiniMuf-3, various versions were created using successively Q-Basic, Turbo-Pascal, Turbo-C. The last but one version was created using DOS assembly. Improvements mainly involved the user interface preserving the original algorithm as published in 1978. Although outdated these days by more sophisticated prediction models I created this Windows XP version to practise Win32Asm programming. Being already familiar with the model itself I could concentrate on those aspects making Win32Asm different from DOS assembly, like using 32 bits rather than 16 bits registers and addressing and to familiarize myself with the Windows application programming interface (API) set needed to write applications for Windows. |
|
![]() |
|
Intermodulation is the undesired combining of several signals in a nonlinear device, producing new, unwanted frequencies which can cause interference in nearby receivers. Most intermodulation occurs in a transmitter's nonlinear power amplifier with the next most common mixing point being the front end of a receiver. Intermodulation can also be produced in rusty or corroded tower joints, guy wires or any nearby metallic object acting as a nonlinear "rectifier" device. Intermodulation may cause severe interference problems on shared communication sites. One of the basic measures to avoid intermodulation interference is a proper choice of frequencies. InterMod Version 4.00 is a tool capable of analysing a combination of up to 15 transmitting and receiving frequencies to identify combinations having the potential to cause harmfull interference. |
|
![]() |
|
Intermod has the option to select the lowest and highest order products to be analysed and to include even order and out-of-band products (harmonics) if required. Above screen shot shows the results of an analysis of 9 simplex frequencies in the aeronautical VHF band. Out of 33102 combinations checked, 54 potential products were identified namely 8 3rd order, 8 5th order and 38 7th order products. Combinations identified need to be analysed further to calculate predicted interference levels and to determine whether or not harmful interference will occur. |
|