revert 74e387ade4
revert revert 5451101f75
revert save state to file in C attempt
This commit is contained in:
parent
74e387ade4
commit
4a2cebdd7a
|
|
@ -2,6 +2,7 @@
|
||||||
"makefile.makefilePath": "",
|
"makefile.makefilePath": "",
|
||||||
"files.associations": {
|
"files.associations": {
|
||||||
"platform-nspire.h": "c",
|
"platform-nspire.h": "c",
|
||||||
"*.inc": "c"
|
"*.inc": "c",
|
||||||
|
"stdint.h": "c"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -396,8 +396,10 @@ save_state:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
mov r0, saved_state_cpu_status
|
ldr r0, =saved_state_cpu_status
|
||||||
str r1, saved_state_cpu_cpsr
|
ldr r1, =saved_state_cpu_cpsr
|
||||||
|
sub r2, r9, #s_SIZE
|
||||||
|
|
||||||
bl write_save_state
|
bl write_save_state
|
||||||
|
|
||||||
ldr lr, saved_state_cpu_status+56 // subroutine return
|
ldr lr, saved_state_cpu_status+56 // subroutine return
|
||||||
|
|
|
||||||
|
|
@ -4,22 +4,27 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
|
||||||
#define s_SIZE 0x4600;
|
#define s_SIZE 0x4600
|
||||||
|
|
||||||
void write_save_state(uint32_t saved_state_cpu_status_addr, uint32_t saved_state_cpu_cpsr);
|
const size_t cpu_status_size = (15 * sizeof(uint16_t));
|
||||||
|
|
||||||
void write_save_state(uint32_t saved_state_cpu_status_addr, uint32_t saved_state_cpu_cpsr){
|
void write_save_state(uint8_t* saved_state_cpu_status_addr, uint8_t* saved_state_cpu_cpsr, void* state_ds_addr);
|
||||||
size_t lenght = s_SIZE;
|
|
||||||
|
|
||||||
size_t data_size = s_SIZE + sizeof(uint32_t);
|
void write_save_state(uint8_t* saved_state_cpu_status_addr, uint8_t* saved_state_cpu_cpsr, void* state_ds_addr){
|
||||||
uint32_t *data = malloc(data_size);
|
size_t data_size = cpu_status_size + sizeof(uint8_t) + s_SIZE;
|
||||||
|
uint8_t *data = malloc(data_size);
|
||||||
|
uint8_t *data_start = data;
|
||||||
|
|
||||||
|
|
||||||
memcpy(data, saved_state_cpu_status_addr, lenght);
|
memcpy(data, state_ds_addr, s_SIZE);
|
||||||
|
data += s_SIZE;
|
||||||
|
|
||||||
data[data_size-1] = saved_state_cpu_cpsr;
|
memcpy(data, saved_state_cpu_status_addr, cpu_status_size);
|
||||||
|
data += cpu_status_size;
|
||||||
|
|
||||||
|
memcpy(data, saved_state_cpu_cpsr, 1);
|
||||||
|
|
||||||
FILE* savefile = fopen("/documents/ndless/test.tns", "wb");
|
FILE* savefile = fopen("/documents/ndless/test.tns", "wb");
|
||||||
fwrite(data, data_size, 1, savefile);
|
fwrite(data_start, data_size, 1, savefile);
|
||||||
fclose(savefile);
|
fclose(savefile);
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue