Name: GetRAMBam
Address: G0$5000

Function: Creates a copy of Wheels' expansion RAM's 'BAM'.

Pass: Nothing.

Uses: Expansion RAM's BAM homespace at $5025-44 and workspace at $5045-64. RAM BAM's checksum at $5024.

Return: .Y = $FF.

Destroyed: .A & .Y

Synopsis: First of all, it copies 32 bytes from $5025-44 to $5045-64. I assume that the 32-byte buffer at $5025-44 contains the Wheels' expansion RAM BAM (referred to as 'homespace') and a copy is made on $5045-64 (referred to as 'workspace') for further operations. That way, if something goofs up, $5045-64 is trashed, but the original BAM for the Wheels' expansion RAM is largely untouched at $5025-44. Any application that needs to modify Wheels' expansion RAM makeup needs to call this routine first to ensure that they are working off of a copy of the RAM BAM.

Secondly, the routine creates a checksum byte value (stored at $5024), computing the entire memory range from $5025-$5105. This entire memory range is swapped in/out along with the entire Group 0 module from Wheels' expansion RAM. Still unclear is the purpose of the checksum value.

See Also: PutRAMBam.

EOF