-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathXINAGA_FileIO.c
96 lines (81 loc) · 1.82 KB
/
XINAGA_FileIO.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include "Xinaga.h"
#if defined(__C64__)
#include <cbm.h>
#endif
#if defined(__APPLE2__)
#include <apple2.h>
//#pragma code-name (push, "LOWCODE")
#endif
#if defined (__NES__)
#pragma code-name (push, "XINAGA_FILEIO")
#pragma rodata-name (push, "XINAGA_FILEIO")
//#pragma data-name (push, "XRAM")
//#pragma bss-name (push, "XRAM")
#endif
void DiskSave(char filename[], int source, int length)
{
#if defined (__C64__)
//Append the save and replace prefix
char name[16];
sprintf(name, "@0:%s", filename);
cbm_k_setlfs(0, 8, 0);
cbm_k_setnam(name);
cbm_k_open();
cbm_k_save(source, source + length - 1);
cbm_k_close(0);
//cbm_k_clall;
#endif
#if defined(__APPLE2__)
FILE* filepointer = fopen(filename, "wb"); //Write Binary
fwrite((int*)source, length, 1, filepointer);
fclose(filepointer);
#endif
#if defined(__NES__)
filename;
source;
length;
#endif
#if defined (MSX)
filename;
source;
length;
#endif
#if defined (__ATARI__)
filename;
source;
length;
#endif
}
void DiskLoad(char filename[], int dest)
{
#if defined(__C64__)
cbm_k_setlfs(0, 8, 0);
cbm_k_setnam(filename);
cbm_k_open();
cbm_k_load(0, dest);
cbm_k_close(0);
//cbm_k_clall;
#endif
#if defined(__APPLE2__)
FILE* filepointer;
int length;
filepointer = fopen(filename, "rb"); //Read Binary
fseek(filepointer, 0, SEEK_END); // Seek our pointer to end of file
length = ftell(filepointer); // Now the pointer is at the length of the file
fseek(filepointer, 0, SEEK_SET); //Move the pointer back to the beginning
fread((int*)dest, length, 1, filepointer); //Copy the entire length to our destination
fclose(filepointer);
#endif
#if defined(__NES__)
filename;
dest;
#endif
#if defined(MSX)
filename;
dest;
#endif
#if defined (__ATARI__)
filename;
dest;
#endif
}