diff --git a/Kernel/platform/platform-rcbus-z8/Makefile b/Kernel/platform/platform-rcbus-z8/Makefile index 7006602b72..94d11fd632 100644 --- a/Kernel/platform/platform-rcbus-z8/Makefile +++ b/Kernel/platform/platform-rcbus-z8/Makefile @@ -47,7 +47,7 @@ clean: rm -f $(OBJS) $(JUNK) core *~ bootblock.bin bootblock fuzix.bin loader.tmp image: - $(CROSS_LD) -t -b -C 0x0100 -S 0xF000 -f CLDBbXSs -o fuzix.bin crt0.o devices.o main.o \ + $(CROSS_LD) -b -C 0x0100 -D 0x0100 -S 0xF000 -f CLDBbXSs -o fuzix.bin crt0.o devices.o main.o \ discard.o commonmem.o tricks.o rcbus-z8.o devtty.o \ ../../start.o ../../version.o ../../cpu-z8/lowlevel-z8.o \ ../../mm/bankfixed.o ../../timer.o ../../kdata.o ../../mm/memalloc_none.o \ diff --git a/Kernel/platform/platform-rcbus-z8/config.h b/Kernel/platform/platform-rcbus-z8/config.h index 150e77f397..bb01d2674c 100644 --- a/Kernel/platform/platform-rcbus-z8/config.h +++ b/Kernel/platform/platform-rcbus-z8/config.h @@ -18,6 +18,7 @@ #define MAP_SIZE 0x8000U #define CONFIG_TD_NUM 1 +#define CONFIG_TD_SD #define TD_SD_NUM 1 /* Read processes and big I/O direct into process space */ diff --git a/Kernel/platform/platform-rcbus-z8/kernel.def b/Kernel/platform/platform-rcbus-z8/kernel.def index 8b003a0c8c..f8cc1b575e 100644 --- a/Kernel/platform/platform-rcbus-z8/kernel.def +++ b/Kernel/platform/platform-rcbus-z8/kernel.def @@ -8,3 +8,7 @@ PROGBASE .equ 0x0000 PROGLOAD .equ 0x0100 CONFIG_SWAP .equ 1 + + +MAINBANK .equ 0x10 +INTBANK .equ 0x20 diff --git a/Kernel/platform/platform-rcbus-z8/main.c b/Kernel/platform/platform-rcbus-z8/main.c index 18267dd208..d02c170e82 100644 --- a/Kernel/platform/platform-rcbus-z8/main.c +++ b/Kernel/platform/platform-rcbus-z8/main.c @@ -22,4 +22,9 @@ void plt_interrupt(void) timer_interrupt(); } +void plt_reinterrupt(void) +{ + tty_pollirq(); +} + /* Nothing to do for the map of init */ diff --git a/Kernel/platform/platform-rcbus-z8/rcbus-z8.S b/Kernel/platform/platform-rcbus-z8/rcbus-z8.S index 88a10d25a2..de269b7fee 100644 --- a/Kernel/platform/platform-rcbus-z8/rcbus-z8.S +++ b/Kernel/platform/platform-rcbus-z8/rcbus-z8.S @@ -21,14 +21,17 @@ plt_interrupt_all: .export _int_disabled .export _mem_bank + .export istack_switched_sp .org 8 _int_disabled: .byte 0 _mem_bank: .byte 0 -_saved_bank: +_mem_saved_bank: .byte 0 +istack_switched_sp: + .word 0 .code @@ -115,6 +118,7 @@ map_proc_di: jr nz, map_notk or r15,r15 jr z, map_kernel +map_notk: push r3 lde r3,@rr14 ld _mem_bank,r3 @@ -157,12 +161,23 @@ outchw: ; ; Bitbang SPI : TODO ; - .export _z8_spi_tx -_z8_spi_tx: - ret - - .export _z8_spi_rx -_z8_spi_rx: + .export _sd_spi_tx_byte + .export _sd_spi_rx_byte + .export _sd_spi_tx_sector + .export _sd_spi_rx_sector + .export _sd_spi_lower_cs + .export _sd_spi_raise_cs + .export _sd_spi_fast + .export _sd_spi_slow + +_sd_spi_tx_byte: +_sd_spi_rx_byte: +_sd_spi_tx_sector: +_sd_spi_rx_sector: +_sd_spi_lower_cs: +_sd_spi_raise_cs: +_sd_spi_fast: +_sd_spi_slow: ret ; @@ -204,7 +219,7 @@ has_ch: .export _z8tty_put _z8tty_put: ld r3,#2 - call __garg2 + call __gargr2 ld 0xF0,r3 ret diff --git a/Kernel/platform/platform-rcbus-z8/tricks.S b/Kernel/platform/platform-rcbus-z8/tricks.S index dd94a6038f..b9457862d8 100644 --- a/Kernel/platform/platform-rcbus-z8/tricks.S +++ b/Kernel/platform/platform-rcbus-z8/tricks.S @@ -29,8 +29,8 @@ _plt_switchout: incw rr14 lde @rr14,r3 call map_proc_always - ld r14,#>__udata - ld r15,#<__udata + ld r14,#>_udata + ld r15,#<_udata ld r12,#>U_DATA_STASH ld r13,#__udata - ld r15,#<__udata + ld r14,#>_udata + ld r15,#<_udata ld r12,#>U_DATA_STASH ld r13,#badswitchmsg ld r15,#__udata - ld r15,#<__udata + ld r14,#>_udata + ld r15,#<_udata ld r12,#>U_DATA_STASH ld r13,#