export CROSS_LD=sdldz80
export CROSS_CC=sdcc
#export CROSS_CCOPTS=-c --std-sdcc99 --no-std-crt0 -mz80 -I$(ROOT_DIR)/cpu-z80 -I$(ROOT_DIR)/platform-$(TARGET) -I$(ROOT_DIR)/include --max-allocs-per-node 1000000 --opt-code-size --Werror --stack-auto --constseg CONST
-export CROSS_CCOPTS=-c --std-sdcc99 --no-std-crt0 -mz80 -I$(ROOT_DIR)/cpu-z80 -I$(ROOT_DIR)/platform-$(TARGET) -I$(ROOT_DIR)/include --max-allocs-per-node 30000 --opt-code-size --Werror --stack-auto --constseg CONST
+export CROSS_CCOPTS=-c --std-sdcc99 --no-std-crt0 -mz80 -I$(ROOT_DIR)/cpu-z80 -I$(ROOT_DIR)/platform-$(TARGET) -I$(ROOT_DIR)/include --max-allocs-per-node 200000 --opt-code-size --Werror --stack-auto --constseg CONST
+#export CROSS_CCOPTS=-c --std-sdcc99 --no-std-crt0 -mz80 -I$(ROOT_DIR)/cpu-z80 -I$(ROOT_DIR)/platform-$(TARGET) -I$(ROOT_DIR)/include --max-allocs-per-node 30000 --opt-code-size --Werror --stack-auto --constseg CONST
#export CROSS_CCOPTS+=--nostdlib --nostdinc -Isdcclib/include
export CROSS_CC_SEG2=--codeseg CODE2
export CROSS_CC_SEGDISC=--codeseg DISCARD
export CROSS_CC_FONT=--constseg FONT
+export CROSS_CC_VIDEO=--codeseg VIDEO
export ASOPTS=-plosff
export BINEXT = .rel
else ifeq ($(CPU),6502)
# be a linear chunk eg if you need to put the kernel in two non adjacent 16K
# chunks or compile it around a hole for videomemory or similar
#
+# VT and FONT are handled specially because they can be mapped more
+# freely and also because you often want to overlay part of the kernel
+# with the framebuffer when doing video output
+#
CDSRCS = start.c
C1SRCS = version.c kdata.c filesys.c
-C1SRCS += inode.c syscall_fs.c
-C2SRCS = devio.c process.c syscall_proc.c timer.c
+C1SRCS += inode.c syscall_fs.c process.c usermem.c timer.c
+C2SRCS = devio.c syscall_proc.c
C2SRCS += syscall_fs2.c syscall_other.c
C2SRCS += bank16k.c bank32k.c bankfixed.c single.c simple.c
-C2SRCS += vt.c tty.c devsys.c
-C2SRCS += mm.c swap.c usermem.c
-
-CFONTSRCS += font4x6.c font8x8.c
+C2SRCS += tty.c devsys.c
+C2SRCS += mm.c swap.c
+CVIDEOSRCS = vt.c
+CFONTSRCS = font4x6.c font8x8.c
ASRCS = lowlevel-$(CPU).s usermem_std-$(CPU).s
C1OBJS = $(C1SRCS:.c=$(BINEXT))
C2OBJS = $(C2SRCS:.c=$(BINEXT))
CFONTOBJS = $(CFONTSRCS:.c=$(BINEXT))
+CVIDEOOBJS = $(CVIDEOSRCS:.c=$(BINEXT))
AOBJS = $(ASRCS:.s=$(BINEXT))
-CSRCS = $(CDSRCS) $(C1SRCS) $(C2SRCS) $(CFONTSRCS)
-COBJS = $(CDOBJS) $(C1OBJS) $(C2OBJS) $(CFONTOBJS)
+CSRCS = $(CDSRCS) $(C1SRCS) $(C2SRCS) $(CFONTSRCS) $(CVIDEOSRCS)
+COBJS = $(CDOBJS) $(C1OBJS) $(C2OBJS) $(CFONTOBJS) $(CVIDEOOBJS)
OBJS = $(COBJS) $(AOBJS)
$(CFONTOBJS): %$(BINEXT): %.c
$(CROSS_CC) $(CROSS_CCOPTS) $(CROSS_CC_FONT) $<
+$(CVIDEOOBJS): %$(BINEXT): %.c
+ $(CROSS_CC) $(CROSS_CCOPTS) $(CROSS_CC_VIDEO) $<
+
$(AOBJS): %$(BINEXT): %.s
$(CROSS_AS) $(ASOPTS) -o $*$(BINEXT) $<