From df29c3db3c0203f4a12a3de8482b87a617a614ed Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Thu, 12 Jul 2018 15:09:58 +0100 Subject: [PATCH] trs80m1: switch to external buffers This is a minimal 'make it work' job. --- Kernel/platform-trs80m1/Makefile | 12 ++++++++++-- Kernel/platform-trs80m1/crt0.s | 21 --------------------- Kernel/platform-trs80m1/discard.c | 1 + Kernel/platform-trs80m1/fuzix.lnk | 1 + Kernel/platform-trs80m1/main.c | 2 -- 5 files changed, 12 insertions(+), 25 deletions(-) diff --git a/Kernel/platform-trs80m1/Makefile b/Kernel/platform-trs80m1/Makefile index bb2e99d2..9a937ad2 100644 --- a/Kernel/platform-trs80m1/Makefile +++ b/Kernel/platform-trs80m1/Makefile @@ -1,15 +1,20 @@ -CSRCS = devlpr.c devtty.c devfd.c devfd3.c devhd.c devgfx.c +CSRCS = devlpr.c devtty.c devgfx.c CSRCS += devices.c main.c devstringy.c devinput.c DISCARD_CSRCS = discard.c devhd_discard.c ASRCS = trs80.s trs80-bank.s crt0.s vtsupport.s ASRCS += tricks.s commonmem.s floppy.s floppy3.s stringy.s +# buffers.c must be in CODE2, direct users are more convenient there as +# the asm helpers then can avoid another switch +C2SRCS = buffers.c devfd.c devfd3.c devhd.c + COBJS = $(CSRCS:.c=.rel) +C2OBJS = $(C2SRCS:.c=.rel) AOBJS = $(ASRCS:.s=.rel) DISCARD_COBJS = $(DISCARD_CSRCS:.c=.rel) -OBJS = $(COBJS) $(AOBJS) $(DISCARD_COBJS) $(DOBJS) +OBJS = $(COBJS) $(C2OBJS) $(AOBJS) $(DISCARD_COBJS) $(DOBJS) CROSS_CCOPTS += -I../dev/ @@ -20,6 +25,9 @@ all: $(OBJS) trs80load.bin $(COBJS): %.rel: %.c $(CROSS_CC) $(CROSS_CCOPTS) $(CROSS_CC_SEG1) -c $< +$(C2OBJS): %.rel: %.c + $(CROSS_CC) $(CROSS_CCOPTS) $(CROSS_CC_SEG2) -c $< + $(AOBJS): %.rel: %.s $(CROSS_AS) $(ASOPTS) $< diff --git a/Kernel/platform-trs80m1/crt0.s b/Kernel/platform-trs80m1/crt0.s index 19b4a382..3722ae87 100644 --- a/Kernel/platform-trs80m1/crt0.s +++ b/Kernel/platform-trs80m1/crt0.s @@ -20,7 +20,6 @@ .area _GSINIT .area _GSFINAL .area _DATA - .area _BUFFERS .area _INITIALIZER ; Buffers must be directly before discard as they will ; expand over it @@ -32,16 +31,10 @@ .globl _vtinit .globl s__DATA .globl l__DATA - .globl s__BUFFERS - .globl l__BUFFERS .globl s__COMMONMEM .globl l__COMMONMEM .globl s__INITIALIZER .globl kstack_top - .globl bufend - - ; exports - .globl _discard_size ; startup code .area _BOOT @@ -62,17 +55,6 @@ start: ld bc, #l__DATA - 1 ld (hl), #0 ldir -; Zero buffers area - ld hl, #s__BUFFERS - ld de, #s__BUFFERS + 1 - ld bc, #l__BUFFERS - 1 - ld (hl), #0 - ldir - ld hl,#0x8000 - ld de,#bufend - or a - sbc hl,de - ld (_discard_size),hl ; We pass A into init_eatly holding the mapper type call init_early call init_hardware @@ -86,9 +68,6 @@ start: stop: halt jr stop - .area _DATA -_discard_size: - .dw 0 .area _STUBS stubs: diff --git a/Kernel/platform-trs80m1/discard.c b/Kernel/platform-trs80m1/discard.c index b90bbcb2..4e999c40 100644 --- a/Kernel/platform-trs80m1/discard.c +++ b/Kernel/platform-trs80m1/discard.c @@ -10,6 +10,7 @@ void device_init(void) { + bufsetup(); #ifdef CONFIG_RTC /* Time of day clock */ inittod(); diff --git a/Kernel/platform-trs80m1/fuzix.lnk b/Kernel/platform-trs80m1/fuzix.lnk index 5129c12d..0c4157dc 100644 --- a/Kernel/platform-trs80m1/fuzix.lnk +++ b/Kernel/platform-trs80m1/fuzix.lnk @@ -30,6 +30,7 @@ platform-trs80m1/devgfx.rel platform-trs80m1/devstringy.rel platform-trs80m1/stringy.rel platform-trs80m1/devices.rel +platform-trs80m1/buffers.rel devio.rel filesys.rel process.rel diff --git a/Kernel/platform-trs80m1/main.c b/Kernel/platform-trs80m1/main.c index 72d93612..ec229efc 100644 --- a/Kernel/platform-trs80m1/main.c +++ b/Kernel/platform-trs80m1/main.c @@ -10,8 +10,6 @@ uint16_t ramtop = PROGTOP; uint8_t trs80_model; uint8_t vtattr_cap; -struct blkbuf *bufpool_end = bufpool + NBUFS; - /* * Called when there is no work to do. On the models without serial * interrupts we poll here so that the normal case of idling while -- 2.34.1