update things

This commit is contained in:
Nishi 2026-08-04 20:27:51 +09:00
commit eac07282a6
5 changed files with 83 additions and 20 deletions

View file

@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.11) cmake_minimum_required(VERSION 3.11)
project(68ksbc) project(micro68)
add_executable(m68kmake tools/m68kmake.c) add_executable(m68kmake tools/m68kmake.c)
@ -8,8 +8,8 @@ list(REMOVE_ITEM SRCS ${CMAKE_CURRENT_SOURCE_DIR}/src/musashi/m68k_in.c ${CMAKE_
find_package(SDL2) find_package(SDL2)
add_executable(68ksbc ${SRCS}) add_executable(micro68 ${SRCS})
target_link_libraries(68ksbc PRIVATE m SDL2::SDL2) target_link_libraries(micro68 PRIVATE m SDL2::SDL2)
macro(runtime NAME) macro(runtime NAME)
add_custom_command( add_custom_command(

View file

@ -66,11 +66,13 @@ vector_table:
init: init:
move.w #$2700,sr move.w #$2700,sr
; Copy DATA
lea _DATA_START,a0 lea _DATA_START,a0
lea _DATA_END,a1 lea _DATA_END,a1
lea _DATA_LOAD,a2 lea _DATA_LOAD,a2
jsr copy jsr copy
; Clear BSS
lea _BSS_START,a0 lea _BSS_START,a0
lea _BSS_END,a1 lea _BSS_END,a1
jsr clear jsr clear

View file

@ -1,26 +1,13 @@
section CODE section CODE
public _memset
;; ;;
;; string.h ;; string.h
;; ;;
public _memcpy
; memset: public _memset
; 4(sp): dst public _strcat
; 8(sp): value public _strcpy
; 12(sp): int public _strlen
_memset:
move.l 4(sp),a0
move.l 8(sp),d0
move.l 12(sp),d1
.loop:
cmpi #0,d1
beq.s .done
move.b d0,(a0)+
sub #1,d1
bra.s .loop
.done:
rts
; memcpy: ; memcpy:
; 4(sp): dst ; 4(sp): dst
@ -29,21 +16,92 @@ _memset:
_memcpy: _memcpy:
move.l 4(sp),a0 move.l 4(sp),a0
move.l 8(sp),a1 move.l 8(sp),a1
move.l 12(sp),d1 move.l 12(sp),d0
.loop: .loop:
cmpi #0,d1 cmpi.l #0,d0
beq.s .done beq.s .done
move.b (a1)+,(a0)+ move.b (a1)+,(a0)+
sub #1,d1 sub.l #1,d0
bra.s .loop
.done:
move.l 4(sp),d0
rts
; memset:
; 4(sp): dst
; 8(sp): value
; 12(sp): int
_memset:
move.l 4(sp),a0
move.l 8(sp),d0
move.l 12(sp),d0
.loop:
cmpi.l #0,d0
beq.s .done
move.b d0,(a0)+
sub.l #1,d0
bra.s .loop
.done:
move.l 4(sp),d0
rts
; strcat:
; 4(sp): dst
; 8(sp): src
_strcat:
move.l 4(sp),a0
move.l 8(sp),a1
.loop_incr:
move.b (a0),d0
cmpi.b #0,d0
beq.s .loop_copy
add.l #1,a0
bra.s .loop_incr
.loop_copy:
move.b (a1),d0
cmpi.b #0,d0
beq.s .done
move.b (a1)+,(a0)+
bra.s .loop_copy
.done:
move.b #0,(a0)
move.l 4(sp),d0
rts
; strcpy:
; 4(sp): dst
; 8(sp): src
_strcpy:
move.l 4(sp),a0
move.l 8(sp),a1
.loop:
move.b (a1),d0
cmpi.b #0,d0
beq.s .done
move.b (a1)+,(a0)+
bra.s .loop
.done:
move.b #0,(a0)
move.l 4(sp),d0
rts
; strlen:
; 4(sp): src
_strlen:
move.l 4(sp),a0
move.l #0,d0
.loop:
move.b (a0)+,d1
cmpi.b #0,d1
beq.s .done
add.l #1,d0
bra.s .loop bra.s .loop
.done: .done:
rts rts
;; ;;
;; 32-bit div/mod: taken from vc.lib ;; 32-bit div/mod: taken from vc.lib
;; ;;
public __divu public __divu
public __divs public __divs
public __modu public __modu

View file

@ -3,7 +3,10 @@
#include <stddef.h> #include <stddef.h>
void memset(void* dst, int data, int sz); void* memcpy(void* dst, const void* src, int sz);
void memcpy(void* dst, void* src, int sz); void* memset(void* dst, int data, int sz);
char* strcat(char* dst, const char* src);
int strlen(const char* src);
char* strcpy(char* dst, const char* src);
#endif #endif

View file

@ -142,7 +142,7 @@ int main(int argc, char** argv){
ww = w * 4; ww = w * 4;
wh = h * 4; wh = h * 4;
if((window = SDL_CreateWindow("68K SBC (LCD)", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, ww, wh, 0)) == NULL){ if((window = SDL_CreateWindow("Micro68 (LCD)", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, ww, wh, 0)) == NULL){
fprintf(stderr, "SDL2 window creation failure\n"); fprintf(stderr, "SDL2 window creation failure\n");
st = 1; st = 1;