LowMemory

The first 64 sectors of memory in the player (each sector 512 bytes).

Record structure

FileTable FileEntries
Sector0F Sector0F
FATTable FATTable
uint8[4096] Pattern
uint8[4096] Filler

Field descriptions

FileDetails

The details for each song stored on the player.

Sector0F

A sector that appears to store general information about the player.

FATTable

The file block allocation table.

Pattern

This is a seemingly constant, though unusual, pattern through this area of memory. At a first glance, it appears just to be a sequential count from 1 to 0x0DFF (in little endian form), that has been shifted left by 6 bits (ie: the first 6 bits essentially discarded). The last term in the sequence being a terminating 0x0FFF. However, this does not work at the sector 35 to sector 36 transition, where there is a large discontinuity in the values. This is a binary dump of the area:
0111110001000010011111001000001001111100110000100111110100000010
0111110101000010011111011000001001111101110000100111111000000010
0111111001000010011111101000001001111110110000100111111100000010
0111111101000010011111111000001001111111110000100000000000000011
[sector changes here]
0000000001000011000000001000001100000000110000110000000100000011
0000000101000011000000011000001100000001110000110000001000000011
0000001001000011000000101000001100000010110000110000001100000011
0000001101000011000000111000001100000011110000110000010000000011

Filler

This area was though to be filled with 0x0FF. However, now there appears to be a whole lot of 0x055's in there as well (despite nothing being actually downloaded to the player, but Nex Manager was used several times). All the same, it doesn't appear to be very important.

Record declaration

C
typedef struct NEXLOWMEMORYTAG {
  FILETABLE FileTable;
  SECTOR0F  Sector0F;
  FATTABLE  FATTable;
  uint8     Pattern[4096];
  uint8     Filler[4096];
} NEXLOWMEMORY;

Pascal
TNEXLowMemory = packed record
  FileTable : TFileTable;
  Sector0F  : TSector0F;
  FATTable  : TFATTable;
  Pattern   : array[0..4095] of uint8;
  Filler    : array[0..4095] of uint8;
end;