update things
This commit is contained in:
parent
d1ac414c5e
commit
eac07282a6
5 changed files with 83 additions and 20 deletions
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
104
runtime/libc.s
104
runtime/libc.s
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue