Hi HPMAN,
thank you a lot for the code - the compiler warnings are gone and now the program can save three blocks of demo data.

The save and load process has effect on all three save blocks of the card and there is no need to fill each block individually.
I have tested the program on my 2-slot MV2F board with the original SNK memory card, the NeoSaveMasta card and with a few 3rd party SRAM cards without any problems.
Already existing data saves from other games have fortunately not been corrupted with my save.
Here is a video of the current version:
And here is the code:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <task.h>
#include <input.h>
#include <DATlib.h>
#include <math.h>
#include <video.h>
#include <string.h>
#include "externs.h"
#include "fixData.h"
typedef struct bkp_ram_info{
WORD debug_dips;
BYTE stuff[254]; // 256 bytes backup block
} bkp_ram_info;
bkp_ram_info bkp_data;
BYTE p1,p2,ps;
typedef struct save_format{
char title[20]; // 1st block game title, stage number
BYTE data[44]; // 1st block 44 bytes data
BYTE data2[64]; // 2nd block 64 bytes data
BYTE data3[64]; // 3rd block 64 bytes data
}save_format;
save_format SAVE_FILE;
typedef struct load_format{
char title[20];
BYTE data[44];
BYTE data2[64];
BYTE data3[64];
}load_format;
load_format LOAD_FILE;
// memory card loop ///////////////////////////////////////////
void memory_card()
{
short i;
volMEMWORD(0x401ffe)=0x3456; // BG color
LSPCmode=0x900;
initGfx();
clearFixLayer();
clearSprites(1, 381);
palJobPut( 1, hypernoid_font_Palettes.palCount, hypernoid_font_Palettes.data); // fix layer palette
SCClose();
// fill save area with demo data
strcpy(SAVE_FILE.title, "DEMO-GAME-STAGE-01--"); // 1st block - 20 bytes char array
for(i=0; i<44; i++)
{
SAVE_FILE.data[i]=1; // 1st block - 44 bytes array
}
for(i=0; i<64; i++)
{
SAVE_FILE.data2[i]=2; // 2nd block - 64 bytes array
SAVE_FILE.data3[i]=3; // 3th block - 64 bytes array
}
do{
waitVBlank();
p1=volMEMBYTE(P1_CURRENT);
ps=volMEMBYTE(PS_CURRENT);
if(p1&JOY_A)
{
volMEMBYTE(0x10FDC4)=0x00; // CARD_COMMAND 0 = format card
__asm__ ("jsr 0xC00468 \n"); // call CARD routine
break;
}
if(p1&JOY_B)
{
volMEMDWORD(0x10FDC8)=(int)&SAVE_FILE; // BIOS_CARD_START must contain an adress to system RAM data
volMEMWORD(0x10FDCC)=0x0192; // BIOS_CARD_SIZE must contain the size of the save (normally 64 bytes)
volMEMWORD(0x10FDCE)=0x7777; // BIOS_CARD_FCB, contains Game NGH number
volMEMWORD(0x10FDD0)=0x0000; // BIOS_CARD_SUB must contain the game save number (16 max per game)
volMEMBYTE(0x10FDC4)=0x03; // CARD_COMMAND 3 = save data from system RAM into card RAM
__asm__ ("jsr 0xC00468 \n"); // call CARD routine
break; // exit loop
}
if(p1&JOY_C)
{
volMEMDWORD(0x10FDC8)=(int)&LOAD_FILE; // BIOS_CARD_START must contain an address where the save will be loaded
volMEMWORD(0x10FDCC)=0x0192; // BIOS_CARD_SIZE must contain the size of the save (normally 64 bytes)
volMEMWORD(0x10FDCE)=0x7777; // BIOS_CARD_FCB, contains Game NGH number
volMEMWORD(0x10FDD0)=0x0000; // BIOS_CARD_SUB must contain the game save number (16 max per game)
volMEMBYTE(0x10FDC4)=0x02; // CARD_COMMAND 2 = load saved data from card RAM into system RAM
__asm__ ("jsr 0xC00468 \n"); // call CARD routine
break; // exit loop
}
fixPrintf(27, 3,1,3,"VBL: %05d", DAT_frameCounter);
fixPrintf( 3, 3,1,3,"MEMORY CARD ACCESS");
fixPrintf( 3, 4,1,3,"----------------------------------");
if(volMEMWORD(0x800000)==65535)
{
fixPrintf( 3, 6,1,3,"CARD_INSERTED: NO");
}else{
fixPrintf( 3, 6,1,3,"CARD_INSERTED: YES ");
}
fixPrintf( 3, 7,1,3,"CARD_COMMAND: %04d", volMEMBYTE(0x10FDC4));
fixPrintf( 3, 8,1,3,"CARD_ANSWER : %04d", volMEMBYTE(0x10FDC6));
fixPrintf(22, 6,1,3,"CARD_ADD: %05d", volMEMWORD(0x800000)); // 0x800000 to 0xBFFFFF memory card adress range
fixPrintf(22, 7,1,3,"CARD_ERROR: %03d", volMEMBYTE(0xC0046E));
fixPrintf(22, 8,1,3,"CARD_SIZE: %04d", volMEMWORD(0x10FDCC));
fixPrintf( 3,10,1,3,"DATA SAVE AREA:");
fixPrintf( 3,20,1,3,"DATA LOAD AREA:");
// data save
fixPrintf( 3,12,1,3,"%c%c%c%c%c%c%c%c%c%c", SAVE_FILE.title[0], SAVE_FILE.title[1], SAVE_FILE.title[2], SAVE_FILE.title[3], SAVE_FILE.title[4], SAVE_FILE.title[5], SAVE_FILE.title[6], SAVE_FILE.title[7], SAVE_FILE.title[8], SAVE_FILE.title[9]);
fixPrintf( 3,13,1,3,"%c%c%c%c%c%c%c%c%c%c", SAVE_FILE.title[10], SAVE_FILE.title[11], SAVE_FILE.title[12], SAVE_FILE.title[13], SAVE_FILE.title[14], SAVE_FILE.title[15], SAVE_FILE.title[16], SAVE_FILE.title[17], SAVE_FILE.title[18], SAVE_FILE.title[19]);
fixPrintf( 3,14,1,3,"%d%d%d%d%d%d%d%d%d%d", SAVE_FILE.data[0], SAVE_FILE.data[1], SAVE_FILE.data[2], SAVE_FILE.data[3], SAVE_FILE.data[4], SAVE_FILE.data[5], SAVE_FILE.data[6], SAVE_FILE.data[7], SAVE_FILE.data[8], SAVE_FILE.data[9]);
fixPrintf( 3,15,1,3,"%d%d%d%d%d%d%d%d%d%d", SAVE_FILE.data[10], SAVE_FILE.data[11], SAVE_FILE.data[12], SAVE_FILE.data[13], SAVE_FILE.data[14], SAVE_FILE.data[15], SAVE_FILE.data[16], SAVE_FILE.data[17], SAVE_FILE.data[18], SAVE_FILE.data[19]);
fixPrintf( 3,16,1,3,"%d%d%d%d%d%d%d%d%d%d", SAVE_FILE.data[20], SAVE_FILE.data[21], SAVE_FILE.data[22], SAVE_FILE.data[23], SAVE_FILE.data[24], SAVE_FILE.data[25], SAVE_FILE.data[26], SAVE_FILE.data[27], SAVE_FILE.data[28], SAVE_FILE.data[29]);
fixPrintf( 3,17,1,3,"%d%d%d%d%d%d%d%d%d%d", SAVE_FILE.data[30], SAVE_FILE.data[31], SAVE_FILE.data[32], SAVE_FILE.data[33], SAVE_FILE.data[34], SAVE_FILE.data[35], SAVE_FILE.data[36], SAVE_FILE.data[37], SAVE_FILE.data[38], SAVE_FILE.data[39]);
fixPrintf( 3,18,1,3,"%d%d%d%d", SAVE_FILE.data[40], SAVE_FILE.data[41], SAVE_FILE.data[42], SAVE_FILE.data[43]);
fixPrintf(15,12,1,3,"%d%d%d%d%d%d%d%d%d%d", SAVE_FILE.data2[0], SAVE_FILE.data2[1], SAVE_FILE.data2[2], SAVE_FILE.data2[3], SAVE_FILE.data2[4], SAVE_FILE.data2[5], SAVE_FILE.data2[6], SAVE_FILE.data2[7], SAVE_FILE.data2[8], SAVE_FILE.data2[9]);
fixPrintf(15,13,1,3,"%d%d%d%d%d%d%d%d%d%d", SAVE_FILE.data2[10], SAVE_FILE.data2[11], SAVE_FILE.data2[12], SAVE_FILE.data2[13], SAVE_FILE.data2[14], SAVE_FILE.data2[15], SAVE_FILE.data2[16], SAVE_FILE.data2[17], SAVE_FILE.data2[18], SAVE_FILE.data2[19]);
fixPrintf(15,14,1,3,"%d%d%d%d%d%d%d%d%d%d", SAVE_FILE.data2[20], SAVE_FILE.data2[21], SAVE_FILE.data2[22], SAVE_FILE.data2[23], SAVE_FILE.data2[24], SAVE_FILE.data2[25], SAVE_FILE.data2[26], SAVE_FILE.data2[27], SAVE_FILE.data2[28], SAVE_FILE.data2[29]);
fixPrintf(15,15,1,3,"%d%d%d%d%d%d%d%d%d%d", SAVE_FILE.data2[30], SAVE_FILE.data2[31], SAVE_FILE.data2[32], SAVE_FILE.data2[33], SAVE_FILE.data2[34], SAVE_FILE.data2[35], SAVE_FILE.data2[36], SAVE_FILE.data2[37], SAVE_FILE.data2[38], SAVE_FILE.data2[39]);
fixPrintf(15,16,1,3,"%d%d%d%d%d%d%d%d%d%d", SAVE_FILE.data2[40], SAVE_FILE.data2[41], SAVE_FILE.data2[42], SAVE_FILE.data2[43], SAVE_FILE.data2[44], SAVE_FILE.data2[45], SAVE_FILE.data2[46], SAVE_FILE.data2[47], SAVE_FILE.data2[48], SAVE_FILE.data2[49]);
fixPrintf(15,17,1,3,"%d%d%d%d%d%d%d%d%d%d", SAVE_FILE.data2[50], SAVE_FILE.data2[51], SAVE_FILE.data2[52], SAVE_FILE.data2[53], SAVE_FILE.data2[54], SAVE_FILE.data2[55], SAVE_FILE.data2[56], SAVE_FILE.data2[57], SAVE_FILE.data2[58], SAVE_FILE.data2[59]);
fixPrintf(15,18,1,3,"%d%d%d%d", SAVE_FILE.data2[60], SAVE_FILE.data2[61], SAVE_FILE.data2[62], SAVE_FILE.data2[63]);
fixPrintf(27,12,1,3,"%d%d%d%d%d%d%d%d%d%d", SAVE_FILE.data3[0], SAVE_FILE.data3[1], SAVE_FILE.data3[2], SAVE_FILE.data3[3], SAVE_FILE.data3[4], SAVE_FILE.data3[5], SAVE_FILE.data3[6], SAVE_FILE.data3[7], SAVE_FILE.data3[8], SAVE_FILE.data3[9]);
fixPrintf(27,13,1,3,"%d%d%d%d%d%d%d%d%d%d", SAVE_FILE.data3[10], SAVE_FILE.data3[11], SAVE_FILE.data3[12], SAVE_FILE.data3[13], SAVE_FILE.data3[14], SAVE_FILE.data3[15], SAVE_FILE.data3[16], SAVE_FILE.data3[17], SAVE_FILE.data3[18], SAVE_FILE.data3[19]);
fixPrintf(27,14,1,3,"%d%d%d%d%d%d%d%d%d%d", SAVE_FILE.data3[20], SAVE_FILE.data3[21], SAVE_FILE.data3[22], SAVE_FILE.data3[23], SAVE_FILE.data3[24], SAVE_FILE.data3[25], SAVE_FILE.data3[26], SAVE_FILE.data3[27], SAVE_FILE.data3[28], SAVE_FILE.data3[29]);
fixPrintf(27,15,1,3,"%d%d%d%d%d%d%d%d%d%d", SAVE_FILE.data3[30], SAVE_FILE.data3[31], SAVE_FILE.data3[32], SAVE_FILE.data3[33], SAVE_FILE.data3[34], SAVE_FILE.data3[35], SAVE_FILE.data3[36], SAVE_FILE.data3[37], SAVE_FILE.data3[38], SAVE_FILE.data3[39]);
fixPrintf(27,16,1,3,"%d%d%d%d%d%d%d%d%d%d", SAVE_FILE.data3[40], SAVE_FILE.data3[41], SAVE_FILE.data3[42], SAVE_FILE.data3[43], SAVE_FILE.data3[44], SAVE_FILE.data3[45], SAVE_FILE.data3[46], SAVE_FILE.data3[47], SAVE_FILE.data3[48], SAVE_FILE.data3[49]);
fixPrintf(27,17,1,3,"%d%d%d%d%d%d%d%d%d%d", SAVE_FILE.data3[50], SAVE_FILE.data3[51], SAVE_FILE.data3[52], SAVE_FILE.data3[53], SAVE_FILE.data3[54], SAVE_FILE.data3[55], SAVE_FILE.data3[56], SAVE_FILE.data3[57], SAVE_FILE.data3[58], SAVE_FILE.data3[59]);
fixPrintf(27,18,1,3,"%d%d%d%d", SAVE_FILE.data3[60], SAVE_FILE.data3[61], SAVE_FILE.data3[62], SAVE_FILE.data3[63]);
// data load
fixPrintf( 3,22,1,3,"%c%c%c%c%c%c%c%c%c%c", LOAD_FILE.title[0], LOAD_FILE.title[1], LOAD_FILE.title[2], LOAD_FILE.title[3], LOAD_FILE.title[4], LOAD_FILE.title[5], LOAD_FILE.title[6], LOAD_FILE.title[7], LOAD_FILE.title[8], LOAD_FILE.title[9]);
fixPrintf( 3,23,1,3,"%c%c%c%c%c%c%c%c%c%c", LOAD_FILE.title[10], LOAD_FILE.title[11], LOAD_FILE.title[12], LOAD_FILE.title[13], LOAD_FILE.title[14], LOAD_FILE.title[15], LOAD_FILE.title[16], LOAD_FILE.title[17], LOAD_FILE.title[18], LOAD_FILE.title[19]);
fixPrintf( 3,24,1,3,"%d%d%d%d%d%d%d%d%d%d", LOAD_FILE.data[0], LOAD_FILE.data[1], LOAD_FILE.data[2], LOAD_FILE.data[3], LOAD_FILE.data[4], LOAD_FILE.data[5], LOAD_FILE.data[6], LOAD_FILE.data[7], LOAD_FILE.data[8], LOAD_FILE.data[9]);
fixPrintf( 3,25,1,3,"%d%d%d%d%d%d%d%d%d%d", LOAD_FILE.data[10], LOAD_FILE.data[11], LOAD_FILE.data[12], LOAD_FILE.data[13], LOAD_FILE.data[14], LOAD_FILE.data[15], LOAD_FILE.data[16], LOAD_FILE.data[17], LOAD_FILE.data[18], LOAD_FILE.data[19]);
fixPrintf( 3,26,1,3,"%d%d%d%d%d%d%d%d%d%d", LOAD_FILE.data[20], LOAD_FILE.data[21], LOAD_FILE.data[22], LOAD_FILE.data[23], LOAD_FILE.data[24], LOAD_FILE.data[25], LOAD_FILE.data[26], LOAD_FILE.data[27], LOAD_FILE.data[28], LOAD_FILE.data[29]);
fixPrintf( 3,27,1,3,"%d%d%d%d%d%d%d%d%d%d", LOAD_FILE.data[30], LOAD_FILE.data[31], LOAD_FILE.data[32], LOAD_FILE.data[33], LOAD_FILE.data[34], LOAD_FILE.data[35], LOAD_FILE.data[36], LOAD_FILE.data[37], LOAD_FILE.data[38], LOAD_FILE.data[39]);
fixPrintf( 3,28,1,3,"%d%d%d%d", LOAD_FILE.data[40], LOAD_FILE.data[41], LOAD_FILE.data[42], LOAD_FILE.data[43]);
fixPrintf(15,22,1,3,"%d%d%d%d%d%d%d%d%d%d", LOAD_FILE.data2[0], LOAD_FILE.data2[1], LOAD_FILE.data2[2], LOAD_FILE.data2[3], LOAD_FILE.data2[4], LOAD_FILE.data2[5], LOAD_FILE.data2[6], LOAD_FILE.data2[7], LOAD_FILE.data2[8], LOAD_FILE.data2[9]);
fixPrintf(15,23,1,3,"%d%d%d%d%d%d%d%d%d%d", LOAD_FILE.data2[10], LOAD_FILE.data2[11], LOAD_FILE.data2[12], LOAD_FILE.data2[13], LOAD_FILE.data2[14], LOAD_FILE.data2[15], LOAD_FILE.data2[16], LOAD_FILE.data2[17], LOAD_FILE.data2[18], LOAD_FILE.data2[19]);
fixPrintf(15,24,1,3,"%d%d%d%d%d%d%d%d%d%d", LOAD_FILE.data2[20], LOAD_FILE.data2[21], LOAD_FILE.data2[22], LOAD_FILE.data2[23], LOAD_FILE.data2[24], LOAD_FILE.data2[25], LOAD_FILE.data2[26], LOAD_FILE.data2[27], LOAD_FILE.data2[28], LOAD_FILE.data2[29]);
fixPrintf(15,25,1,3,"%d%d%d%d%d%d%d%d%d%d", LOAD_FILE.data2[30], LOAD_FILE.data2[31], LOAD_FILE.data2[32], LOAD_FILE.data2[33], LOAD_FILE.data2[34], LOAD_FILE.data2[35], LOAD_FILE.data2[36], LOAD_FILE.data2[37], LOAD_FILE.data2[38], LOAD_FILE.data2[39]);
fixPrintf(15,26,1,3,"%d%d%d%d%d%d%d%d%d%d", LOAD_FILE.data2[40], LOAD_FILE.data2[41], LOAD_FILE.data2[42], LOAD_FILE.data2[43], LOAD_FILE.data2[44], LOAD_FILE.data2[45], LOAD_FILE.data2[46], LOAD_FILE.data2[47], LOAD_FILE.data2[48], LOAD_FILE.data2[49]);
fixPrintf(15,27,1,3,"%d%d%d%d%d%d%d%d%d%d", LOAD_FILE.data2[50], LOAD_FILE.data2[51], LOAD_FILE.data2[52], LOAD_FILE.data2[53], LOAD_FILE.data2[54], LOAD_FILE.data2[55], LOAD_FILE.data2[56], LOAD_FILE.data2[57], LOAD_FILE.data2[58], LOAD_FILE.data2[59]);
fixPrintf(15,28,1,3,"%d%d%d%d", LOAD_FILE.data2[60], LOAD_FILE.data2[61], LOAD_FILE.data2[62], LOAD_FILE.data2[63]);
fixPrintf(27,22,1,3,"%d%d%d%d%d%d%d%d%d%d", LOAD_FILE.data3[0], LOAD_FILE.data3[1], LOAD_FILE.data3[2], LOAD_FILE.data3[3], LOAD_FILE.data3[4], LOAD_FILE.data3[5], LOAD_FILE.data3[6], LOAD_FILE.data3[7], LOAD_FILE.data3[8], LOAD_FILE.data3[9]);
fixPrintf(27,23,1,3,"%d%d%d%d%d%d%d%d%d%d", LOAD_FILE.data3[10], LOAD_FILE.data3[11], LOAD_FILE.data3[12], LOAD_FILE.data3[13], LOAD_FILE.data3[14], LOAD_FILE.data3[15], LOAD_FILE.data3[16], LOAD_FILE.data3[17], LOAD_FILE.data3[18], LOAD_FILE.data3[19]);
fixPrintf(27,24,1,3,"%d%d%d%d%d%d%d%d%d%d", LOAD_FILE.data3[20], LOAD_FILE.data3[21], LOAD_FILE.data3[22], LOAD_FILE.data3[23], LOAD_FILE.data3[24], LOAD_FILE.data3[25], LOAD_FILE.data3[26], LOAD_FILE.data3[27], LOAD_FILE.data3[28], LOAD_FILE.data3[29]);
fixPrintf(27,25,1,3,"%d%d%d%d%d%d%d%d%d%d", LOAD_FILE.data3[30], LOAD_FILE.data3[31], LOAD_FILE.data3[32], LOAD_FILE.data3[33], LOAD_FILE.data3[34], LOAD_FILE.data3[35], LOAD_FILE.data3[36], LOAD_FILE.data3[37], LOAD_FILE.data3[38], LOAD_FILE.data3[39]);
fixPrintf(27,26,1,3,"%d%d%d%d%d%d%d%d%d%d", LOAD_FILE.data3[40], LOAD_FILE.data3[41], LOAD_FILE.data3[42], LOAD_FILE.data3[43], LOAD_FILE.data3[44], LOAD_FILE.data3[45], LOAD_FILE.data3[46], LOAD_FILE.data3[47], LOAD_FILE.data3[48], LOAD_FILE.data3[49]);
fixPrintf(27,27,1,3,"%d%d%d%d%d%d%d%d%d%d", LOAD_FILE.data3[50], LOAD_FILE.data3[51], LOAD_FILE.data3[52], LOAD_FILE.data3[53], LOAD_FILE.data3[54], LOAD_FILE.data3[55], LOAD_FILE.data3[56], LOAD_FILE.data3[57], LOAD_FILE.data3[58], LOAD_FILE.data3[59]);
fixPrintf(27,28,1,3,"%d%d%d%d", LOAD_FILE.data3[60], LOAD_FILE.data3[61], LOAD_FILE.data3[62], LOAD_FILE.data3[63]);
SCClose();
}while(!(p1&JOY_D));
}
int main(void)
{
while(1)
{
memory_card();
}
}