On 05/17/2011 10:45 PM, Robert Terzi wrote:
I got a chance to do some testing of VX-8DR memory banks:
Bank names:
Bank Names start at 0x135A, two bytes of zeros, 16 bytes of label. The first two bytes are not length, so far I haven't seen them be anything but zero.
#seekto 0x135A; struct { u8 unknown1; char label[16]; } banknames[24];
Bank Linking Flag:
The flag bits for whether banks are linked are stored at offset 0x546-0x548. The flags are stored starting with bank 1 as the LSB for the 16 bit big endian word stored at 0x546. It looks like:
MSB LSB
0x546: Bank 16 Bank 9 0x547: Bank 8 Bank 1 0x548: Bank 24 Bank 17
Bank Memory Storage:
The list of memories for Bank 1 starts at 0x198a and contains 100 two byte entries by memory number, zero based, so the first memory is 0. Memory 999 is stored as 0x03 0xe6 (998 zero based) Unused slots are FF FF.
EAI is treated as Memory No. 1000, stored as 0x03e7
The "special memories", Weather 1 is 0x1800, Weather 2 is 0x1801 Marine 1 is 0x2800, 2 is 0x2801, ... , Marine 88 is 0x2838 Radio 1 VOA (1st shortwave) is 0x3000 ... Radio 88 is 0x3058
#seekto 0x198a; struct { u16 channel[100]; } bank_members[24];
Memory Bank In Use:
starting at 0x54a, there are two bytes for each memory bank that indicate whether the bank has anything in it. 0xFFFF if it isn't in use and 0 if it is. I don't know why a 16 bit value is used for something that could be a bit mask.
#seekto 0x54a; struct { u16 in_use; } bank_used[24];
Bank Sizes (or number of entries in each bank):
So far, I can't find any indication that there is a spot to count the number of entries used in each bank the way there is on the vx6 that Jon Hellan provided.
Doesn't have to be. The 0xffff values are enough.
Highest Bank Number in Use:
The oddest part that I found is there seems to be three separate places that seem to indicate the highest bank number in use. There also seem to be two copies of each of them. 0x650 through 0x6cf (128 bytes) seems to be almost, but not completely duplicated started at 0x6d0.
Note zero based bank number
At offset 0x654: ff ff ff ff - no banks are used. 00 00 00 00 - highest bank is Bank 1. 00 01 00 00 - highest bank is Bank 2. 00 17 00 00 - highest bank is Bank 24.
this is repeated 128 bytes later at 0x6d4.
I supposed this could also be the most recently used bank number.
I agree. On the VX-6, the beginning of the image is about current state.
Jon LA4RT