Icom ProMemEdit

It has been reported that this program does not work with the IC-746, IC-746Pro (IC-7400). Please do not attempt to use this program with these rigs. Sorry. It will hopefully in the future (Ekki, Oct. 2006)


This small program helps you to edit the 99 memories of your Icom 756Pro, 756Pro2, 746, 746Pro (IC-7400 in Europe) or IC-910 rig. On startup it reads the current memory contents and displays it. You can edit the frequency, name and other options and store the changed memories back to the rig. Furthermore you can save the complete memory set to a file, and copy it to a permanent file which holds as many memories as you want (and your PC provides disk space).


Version 0.7d 17. Sep. 2002

Debug Version (produces c:\icomdeb.txt)

Version 0.6d 02.Apr. 2002

Debug Version (produces c:\icomdeb.txt)

Version 0.4d 28.Mar. 2002

Debug Version (produces c:\icomdeb.txt)

Version 0.2 14.Mar. 2002

Debug Version (produces c:\icomdeb.txt)
First release

Installation and Setup

There is no fancy install program, you have to do it yourself.
Download the zipped file, unzip into any directory you like, double-click on the promemedit.exe file to run. If you like then make a link and drag it to your windows desktop.

To use the program you have to have a CI-V level converter (see http://www.plicht.de/ekki/civ for an explanation) connected to your rig and your PC. If this converter is working fine, just select the right serial port with the "COM" menu, select the proper baudrate with the "Baudrate" menu and select your rig ("Rig" menu). If you are using non-standard CI-V adresses with your rig, enter the proper adress in the small edit box marked CI-V adress. All these settings (port, baud, rig, adress) will be stored at program termination, so you have to do this only once.

Each time you change an option, the program tries to connect to the rig. If it is found, the green LED is lit and all memories are read and displayed.

Minimum Requirements

pme1.jpg - 30905 Bytes


When the program is started for the first time, select COM-Port, CI-V Baudrate and rig. If all is ok, the LED is lit green the program automatically reads the memory contents (99 memories, 2 scan edges plus Call channel for 746 and 746Pro) and displays them. If no connection is possible, a warning message pops up. After clicking "Ok" you can choose other setup options (port, baud, rig) and try again. Each time a setup option is changed, the program tries to connect to the rig.

The program displays two tables. The upper, called the "permanent file" is a copy of all memories received from the rig. The lower table, called "Rig" is an exact copy of the current memory contents of your rig. Each time a memory is read from the rig, it is checked if this frequency & name pair is present in the permanent file. If not it is added, if yes it is ignored and only added to the "Rig" table.

You can save each table (permanent and rig) to a separate file under it's current file name which is displayed above the table. Or save to another file ("Save As") or load an already present file ("Open"). The files are stored as plain ASCII Txt files, each item delimited by a semi-colon ';', one memory per line. This file type (aka CSV, "Comma Separated Values") is supported by many other programs like Excel and allows further processing. See at the end of this file for a description of the file format. Upon program start, the last used file for the permanent table is restored.

If you don't need the upper table (permanent file) you can hide it with the Menu option under "Actions".

Working with the tables

Once the tables are filled you can edit, sort and store the contents. Each row holds the following items:

pme2.jpg - 16821 Bytes
Nr Memory number in ascending order, more on that under "Sorting"
Freq The frequency, displayed with 2 or zero decimals depending on mode (0 for AM, FM, WFM, 2 for all other modes).
Name The memory name, max 10 characters.
Mode A drop-down selection allows to choose from all possible modes (AM, FM, LSB, LSB-D, USB, USB-D, CW, CW-r, RTTY, RTTY-r).
Filter The current filter setting. Filters are displayed as "Narrow", "Normal" and "Wide", corresponding to Fil1, Fil2 and Fil3 in the 756Pro, 756Pro2 and 746Pro rigs. This order (Fil1 bandwidth < fil2 < fil3 ) is the default icom setup. if you have choosen to select another order - tough... let me know of any better way to display this.
Sel A checkbox, representing the "Select" flag in each memory. Used for "Select Scan". Check/uncheck with mouse click.
Dup Only visible when used with a 746, 746Pro
A drop-down field, select "Simp", "DUP-", "DUP+" or "Split". Determines whether this memory is simplex, duplex or split channel.
TxFreq Only visible when used with a 746, 746Pro
The tx freq for duplex or split channels, empty otherwise. Can only be edited when a split channel. Duplex channels are calculated automatically.
RTo The currently selected Tx subtone (Repeater tone). Only valid when mode is FM. A drop-down selection lets you choose one of 50 tones. Select '(none)' if no subtone should be used.
TSq The currently selected Rx subtone (Tone squelch). Only valid when mode is FM. A drop-down selection lets you choose one of 50 tones. Select '(none)' if no subtone should be used.
Chg A checkbox which indicates if this entry (row) has been changed (edited) since read from the rig, and needs storing. When storing memories back to the rig, only those with the "changed" checkmark set are actually stored. Changes automatically to "checked" when you edit any of the other entries in the row.

Save, Save As, Open and Store to Rig

With these buttons you can save the tables to disk or store the rig table in the transceiver.

Save The table is stored without further questions in the currently selected file. The current filename is displayed above the table.
Save As You are prompted for a new filename, the table is stored under that filename. If you select an already existing file, you are asked if you weant to overwrite it.
Open You are prompted for a filename of the file to open. If the current table contents has been changed, you are prompted to save it first.
Actually you can select any file you like for opening, but please note that the results are unpredictable if the file is not one which has been previously saved by this application.
Store to Rig Available only for the Rig table.
Stores all memories, where the "changed" checkbox is checked, to the rig. This takes some seconds, depending on the CI-V baudrate you selected.
Again, only those rows marked with a check in the "changed" column are sent to the rig. If the upload for this memory was successful, the check mark is removed. If the rig reports an error, the check mark remains set after upload. Correct and try again.

Please don't change anything on the rig while the store is in progress, i.e. don't change frequency, mode, VFO etc. In other words: Please leave your fingers from the radio as long as memories are transferred...

A note for users of IC-746, IC-746Pro

The program displays duplex and split memories with the rx and tx freq separately. For calculation of the duplex (tx) frequency, one of three possible duplex offsets is used: one offset for HF, one for 50MHz and one for 144MHz. With Version 0.6d (02. Apr. 2002) these offsets are read (should be read :-) automatically. The option to tell the program the offsets is still available, but will go away as soon as automatic reading works reliably.

Navigating the tables

If the table (any) has the focus, a small rectangle is drawn around the currently selected cell, the current row has a little triangle in the leftmost column (Nr), the headers of row and column are printed bold.. You can move the selection with the arrow keys or by click on a cell with the mouse.

To edit a cell (Frequency and Name) hit enter, the current contents is highlighted. You can move the caret with the arrow keys, or type new text which replaces the highlighted portion. To end editing hit enter again, or select another cell with the mouse. Abandon edits with the ESC-key.

When entering/editing a frequency, you can enter digits and the decimal separator. This is usually the dot (.) in the US, or the comma (,) in most other countries. The decimal button on the numeric keypad on your keyboard supplies the correct one, depending on your Windows setup (locale). Do not enter the thousands separator, these are added automatically after you end editing, and removed before editing a frequency.

To change a selection from a drop-down box (mode, filter, subtones) select the cell, press the Space bar and select the new value with the arrow keys. Alternatively click on the cell with the mouse and select with mouse from the drop down menu.

To check/uncheck a checkbox, select the cell and hit the space bar, or click with the mouse on the checkbox.

Insert and Delete rows (memories)

Here the two tables behave slightly differently. As you cannot expand the number of memories in the rig, the "Rig" table is always kept at a constant length.

Insert and delete in the "File" table.

This works as expected, a hit on the "Ins" key on your keyboard inserts a new, empty row in the table. You can enter frequency, name etc. Similiarly when hitting the "Del" key, the current row is deleted, all others move up, the table is one entry shortened. Warning: There is no warning when hitting the DEL key, the current row is deleted without further question. No undo function!

Insert and delete in the "Rig" table.

In this table, INS and DEL behave different. When inserting a row (INS key) the program checks if there is an empty row somewhere below the current one. If yes, all rows from the current one to the first empty are moved down by one row, thus freeing an empty row where you inserted. In this way, entries further down in the table don't move, you can group your entries by functional or other preferences. This works as long as there are one or more empty memories between the groups. If no more empty lines are found below the position where you want to insert, an error message pops up, telling you that the table is full, even if there is space above the position...

An example:

Before insert, current position is row 8 pme3a.jpg - 28857 Bytes After first INS, the selected position is now empty, rows 8, 9 and 10 have moved down one, rows below that (12...) are unaffected. pme3b.jpg - 28558 Bytes After second insert, again only the block until the first empty line was moved down. pme3c.jpg - 28311 Bytes

Please note that the row numbers have been retained, i.e. row containing 147.33 kHz is row #8 before and after the inserts. This is helpful when undoing sorts, please see below for sorting.

Deleting rows

To delete a row, hit the DEL key. If the selected row is non empty (frequency <> zero) the row is cleared, the table is otherwise unaffected. If the row is empty (frequency=zero or empty) the row is removed, all rows below the current position up to the first empty row are moved up one row.


With one mouse click you can sort each table by each column, even multi sorts by several columns is possible.

To perform a sort by frequency, click on the column header, i.e. the text "Freq". The first mouse click will sort in ascending order, a second mouse click on an already sorted column will sort in descending order. A yellow triangle in the column header, pointing up or down shows the sort column and direction.

Empty rows are always sorted to the end of the table. Scan edges (P1, P2) and Call channel (746, 746Pro only) are never sorted and remain in their position at the end of the table.

To do multiple sorts, first click on the most significant sort column (e.g. Freq) once (ascending) or twice (descending), then press and hold the "Shift" key and click on the second sort column once or twice. Each column header now shows a yellow triangle, and if your eyes are really good you see a small "1" and "2" in the triangles, showing the sort significance of the columns.

A table sorted by frequency in ascending order pme4a.jpg - 13316 Bytes
A table sorted first by Name is ascending order, then by frequency in descending order pme4b.jpg - 21601 Bytes

Please note that the "Nr" column has been sorted along with the other columns, retaining the original numbering. Thus you can restore the original sort order by sorting by the number column. Just click on the "Nr" column header.

The original row numbers will be kept as long as it makes sense, they are renumbered (i.e. lost) when saving the table to disk or storing it in the rig.

Cut & Paste

Cut and paste operations are possible on individual cell contents only, not on whole rows. To easily copy and move rows, use drag & drop.

Drag & Drop

To move memories (rows) in a table or between the two tables, you can use "drag & drop" with the mouse, as known from most other Windows applications.

To use drag & drop, left click on any portion of the row you want to move or copy. Keep the mouse button pressed and move the mouse pointer to the position where you want to drop the row (insert it), then release the mouse button.

When the drag source and destination is within the same table, the drag & drop operation is considered a move, i.e. the source is deleted and inserted at the destination.

When the drag source is in a different table than the destination, the operation is considered a copy, i.e. the source remains unaffected in the originating table and a copy is inserted in the destination table.

Note: This is not drag & drop as known in OLE automation, i.e. drag & drop between this program and another application (e.g. Excel) is not possible. To import memories to another application, use the saved files on disk. Maybe OLE automation will be supported in a future version.

Immediate tuning

Double clicking on any cell of a row (in any table) tunes to that frequency and sets the mode and filter.

Other options

With a right click in each of the tables, you get a local popup menu. Here you can select:

In the "Action" menu there is currently only one option: Show or Hide the permanent file on the upper part of the window. You can size column width individually in each table, as well as row height. All values are stored at program termination and restored at startup. Also the current window size and position is remembered.

Known Issues

In this version, the program works fine for the IC-756Pro. Since Icom choose not to document the memory layout in the CI-V commands, I have to rely on testers to make this program work for the 756Pro2, 746 and 746Pro and IC-910 since I don't have these rigs. The memory layout is different between these rigs, so I have to do some experimenting. Your help is highly appreciated in verifying this.

Row Sizing

When you make the row size too small, it is possible that the caret (the vertical blinking bar which indicates the position where the next character goes) is not displayed. Adjust row height until you see it (at least 18 pixels for a .8 pitch font).

Cell Validation

Currently (V0.7) no validation on the cells contents is done. Don't enter anything else than numerals and the decimal separator (dot or comma) in the frequency cells, don't enter longer text than 10 chars in the name cell. Don't enter invalid chars in the name cell, refer to the Icom manual for valid chars. This will be improved in a future version.

Storing memories

During the development of this program I have loaded and stored the memories of my 756Pro maybe a hundred times or more. Only once it happened that the program hung on transfer and ran into a timeout (Rig not responding). No harm was done, only some memories were not transferred. Since this happened only once, I can not reproduce this, I have no idea where this came from.

Opening non suitable files

You can open any text file (in fact any file you like) with the open button. Currently (V0.7) there is no check on the file structure. Results are unpredictable when you try this, from funny contents to a total crash. A future version will correct that. Until then, make sure you only open files which have been saved by this application.

File format

The files are saved as plain ASCII text files, the values delimited by semicolons (;). This format is aka "CSV", comma separated values and recognized by many other programs (e.g. Excel).

Example of file contents:

1; 14.100,00;NCDxF 20m ;CW;Normal;0;Dup-;"";"";0;88,5;0;88,5;0;"";"";"";"";"";"";"";""
2; 18.110,00;NCDxF 17m ;CW;Normal;0;Dup+;"";"";0;88,5;0;88,5;0;"";"";"";"";"";"";"";""
3; 21.150,00;NCDxF 15m ;CW;Normal;0;Split;"";"";0;88,5;0;88,5;0;"";"";"";"";"";"";"";""
4; 24.930,00;NCDxF 12m ;CW;Normal;0;"";"";"";0;88,5;0;88,5;0;"";"";"";"";"";"";"";""
5; 28.200,00;NCDxF 10m ;CW;Normal;0;"";"";"";0;88,5;0;88,5;0;"";"";"";"";"";"";"";""
6; 10.144,00;DK0WCY ;CW;Normal;0;"";"";"";0;88,5;0;88,5;0;"";"";"";"";"";"";"";""
7; 28.208,60;EI0TEN ;CW;Normal;0;"";"";"";0;88,5;0;88,5;0;"";"";"";"";"";"";"";""

The sequence is the same as displayed in the tables, first line is column headers. Checkbox values are "1" when checked, "0" (zero) when unchecked. Fields are maintained in the file, even if they are not displayed with a certain rig (Dup, Ofs). Please note that this file format is likely to change in the future.


If you don't want the program on your disk anymore, just delete the exe file (promemedit.exe). To remove all traces you can manually delete the key


from the registry. But careful, if you have other software from me which uses these settings (e.g. CIV-Test) these programs will be affected.

Help files

You are looking at it, this is all you will get, sorry. If you have any questions or suggestions or even praise, don't hesitate to send an email to the author ep (at) plicht.de