This tool can read the contents of the HCX namely:
To do this in the expert mode gpsdaemon.exe /e, then select 'Garmin Interface' tab
1. Uncheck option 'Close port',
2. Click on 'Unit ID' to start the USB connection
3. In 'Packet ID' enter '60', which stands for read (not published by Garmin)
4 Check 'Send Data' and enter '2'
5. Enter the data at the end, the first byte is the region of ID (eg 03 - Basemap), for the memory region that you want to read. Then enter (e.g. 03 on position 1)
5. Click Send.
If there is something to read, the bytes in the window will appear and you can see what is stored in the region. The Basemap is quite long, so stop the transfer with "packet receiver > deactivate" you know already the card ID on the first bytes.
Task: Find the area ID of the eTrex Vista that includes the Marine POI.
In the 60's this is 31.
The device sends 16 bytes after the string "GARMIN Americas Marine POI", if this is implemented in Vista, probably in another region ID.
The region are IDs in hexadecimal to enter 09, 0A..10..1F, 20,...FF.
The region of IDs are the same practically for all devices:
A few well-known are:
03 base map
05 boot block
0A card memory
0C loader (not readable, is used as a cache for flashing the firmware.)
0D serial number of the unit and other
0E firmware so device software
2E - 29 FF - s unknown
31 IMG Americas.Marine.POI at the 60/76 CSx
F5 chip firmware etrex MTK
F6 chip firmware SiRF 60/76C(S)x
To write to a region, you need a 60-byte header (very nice how-to in the D005900A of the marine POI) (e.g. with a hex editor) before the data in the position 0x32 which is the region ID, and the length of data to write twice as a 4-byte words once in 2C-30 (length + 0A) and a second time at 38 to 3B length without offset, Low bytes first. Then rename such as irgendwas.rgn and start irgendwas.rgn with updater.exe.
It's pretty much fool-proof, but you should not write anything in the boot block region 5. It's like the BIOS on a PC.