added savedisp and restoredisp syscalls

This commit is contained in:
IniKiwi 2022-08-15 14:59:30 +02:00
parent 05d9596915
commit aa10c69a0b
3 changed files with 16 additions and 0 deletions

View File

@ -12,5 +12,7 @@ int syscall_handle(cpu_status_t* status, uint32_t origin){
else if(id == 0xacd) syscall_malloc(status);
else if(id == 0x90f) syscall_getkey(status);
else if(id == 0x028) syscall_bdisp_putdisp_dd(status);
else if(id == 0x813) syscall_save_disp(status);
else if(id == 0x814) syscall_restore_disp(status);
status->pc = status->pr;
}

View File

@ -7,6 +7,8 @@ int syscall_handle(cpu_status_t* status, uint32_t origin);
void syscall_bdisp_allclr_ddvram(cpu_status_t* status);
void syscall_bdisp_putdisp_dd(cpu_status_t* status);
void syscall_get_vram_address(cpu_status_t* status);
void syscall_save_disp(cpu_status_t* status);
void syscall_restore_disp(cpu_status_t* status);
void syscall_locate(cpu_status_t* status);
void syscall_print(cpu_status_t* status);

View File

@ -12,4 +12,16 @@ void syscall_bdisp_putdisp_dd(cpu_status_t* status){
void syscall_get_vram_address(cpu_status_t* status){
status->r[0]=0x01100000;
}
void syscall_save_disp(cpu_status_t* status){
if(status->r[4] == 1) memcpy(status->saved_disps[0],status->vram,1024);
if(status->r[4] == 5) memcpy(status->saved_disps[1],status->vram,1024);
if(status->r[4] == 6) memcpy(status->saved_disps[2],status->vram,1024);
}
void syscall_restore_disp(cpu_status_t* status){
if(status->r[4] == 1) memcpy(status->vram ,status->saved_disps[0],1024);
if(status->r[4] == 5) memcpy(status->vram ,status->saved_disps[1],1024);
if(status->r[4] == 6) memcpy(status->vram ,status->saved_disps[2],1024);
}