new memory and project layout
This commit is contained in:
@@ -2,7 +2,7 @@ TARGET := monitor
|
||||
BUILDDIR := build
|
||||
|
||||
METAL_C_SRCFILES := $(wildcard *.c)
|
||||
METAL_ASM_SRCFILES := $(wildcard *.asm)
|
||||
METAL_ASM_SRCFILES := boot.asm
|
||||
METAL_RELFILES := $(METAL_ASM_SRCFILES:%.asm=$(BUILDDIR)/metal/%.rel) \
|
||||
$(METAL_C_SRCFILES:%.c=$(BUILDDIR)/metal/%.rel)
|
||||
|
||||
@@ -14,12 +14,12 @@ METAL_CPPFLAGS := -I src -I $(BUILDDIR)/metal/generated --disable-warning 2
|
||||
METAL_BIN_SIZE := 32768
|
||||
METAL_RAM_SIZE := 16384
|
||||
METAL_IMAGE_SIZE := 65536
|
||||
MONITOR_BASE := 0xC000
|
||||
MONITOR_ROM_OFFSET := 128
|
||||
RESIDENT_BASE := 0xC000
|
||||
RESIDENT_ROM_OFFSET := 128
|
||||
|
||||
TINYBASIC_BASE := 0xD000
|
||||
TINYBASIC_BASE := 0x1000
|
||||
TINYBASIC_ROM_OFFSET := 4096
|
||||
TINYBASIC_SRC := tinybasic_sdas.asm
|
||||
TINYBASIC_SRC := apps/tinybasic.asm
|
||||
TINYBASIC_BUILD := $(BUILDDIR)/tinybasic
|
||||
|
||||
.DEFAULT_GOAL := metal
|
||||
@@ -36,9 +36,9 @@ metal: $(BUILDDIR)/metal/$(TARGET).ihx $(BUILDDIR)/metal/$(TARGET).bin $(BUILDDI
|
||||
END { \
|
||||
printf "\nMemory usage:\n"; \
|
||||
printf " ROM storage: %5u / %5u bytes (%5.1f%%)\n", stored, rom_capacity, 100 * stored / rom_capacity; \
|
||||
printf " Monitor linked: %5u bytes (%5u code/vector + %5u static data)\n", code + data, code, data; \
|
||||
printf " Resident BIOS+monitor: %5u bytes (%5u code/vector + %5u static data)\n", code + data, code, data; \
|
||||
}' $(BUILDDIR)/metal/$(TARGET).map
|
||||
@printf " Tiny BASIC: %5u bytes at D000\n" $$(wc -c < $(TINYBASIC_BUILD)/tinybasic.bin)
|
||||
@printf " Tiny BASIC: %5u ROM bytes at 1000\n" $$(wc -c < $(TINYBASIC_BUILD)/tinybasic.bin)
|
||||
|
||||
$(BUILDDIR)/metal/$(TARGET).ihx: $(METAL_RELFILES)
|
||||
@mkdir -p $(@D)
|
||||
@@ -48,11 +48,12 @@ $(BUILDDIR)/metal/$(TARGET).flat.bin: $(BUILDDIR)/metal/$(TARGET).ihx
|
||||
$(METAL_MAKEBIN) -s $(METAL_IMAGE_SIZE) $< $@
|
||||
|
||||
$(BUILDDIR)/metal/$(TARGET).prog.bin: $(BUILDDIR)/metal/$(TARGET).flat.bin $(TINYBASIC_BUILD)/tinybasic.bin
|
||||
@payload_end=$$(awk '$$1 == "DEF" && $$2 == "monitor_image_end" { print $$3 }' $(BUILDDIR)/metal/$(TARGET).noi); \
|
||||
payload_size=$$((payload_end - $(MONITOR_BASE))); \
|
||||
@payload_end=$$(awk '$$1 == "DEF" && $$2 == "resident_image_end" { print $$3 }' $(BUILDDIR)/metal/$(TARGET).noi); \
|
||||
payload_size=$$((payload_end - $(RESIDENT_BASE))); \
|
||||
test $$payload_size -gt 0; \
|
||||
test $$payload_size -le $$(( $(TINYBASIC_ROM_OFFSET) - $(RESIDENT_ROM_OFFSET) )); \
|
||||
dd if=$< of=$@ bs=1 count=$(TINYBASIC_ROM_OFFSET) status=none; \
|
||||
dd if=$< of=$@ bs=1 skip=$$(( $(MONITOR_BASE) )) seek=$(MONITOR_ROM_OFFSET) count=$$payload_size conv=notrunc status=none; \
|
||||
dd if=$< of=$@ bs=1 skip=$$(( $(RESIDENT_BASE) )) seek=$(RESIDENT_ROM_OFFSET) count=$$payload_size conv=notrunc status=none; \
|
||||
dd if=$(TINYBASIC_BUILD)/tinybasic.bin of=$@ bs=1 seek=$(TINYBASIC_ROM_OFFSET) conv=notrunc status=none
|
||||
|
||||
$(BUILDDIR)/metal/$(TARGET).bin: $(BUILDDIR)/metal/$(TARGET).flat.bin $(BUILDDIR)/metal/$(TARGET).prog.bin
|
||||
@@ -65,13 +66,11 @@ $(BUILDDIR)/metal/%.rel: %.c
|
||||
|
||||
$(BUILDDIR)/metal/%.rel: %.asm
|
||||
@mkdir -p $(@D)
|
||||
$(METAL_AS) -I$(BUILDDIR)/metal/generated -plosgff -o $@ $<
|
||||
|
||||
$(BUILDDIR)/metal/boot.rel: $(BUILDDIR)/metal/generated/tinybasic.inc
|
||||
$(METAL_AS) -Iinclude -I$(BUILDDIR)/metal/generated -plosgff -o $@ $<
|
||||
|
||||
$(TINYBASIC_BUILD)/tinybasic.rel: $(TINYBASIC_SRC)
|
||||
@mkdir -p $(@D)
|
||||
$(METAL_AS) -plosgff -o $@ $<
|
||||
$(METAL_AS) -Iinclude -plosgff -o $@ $<
|
||||
|
||||
$(TINYBASIC_BUILD)/tinybasic.ihx: $(TINYBASIC_BUILD)/tinybasic.rel
|
||||
sdldz80 -n -i -m -j $(basename $@) $<
|
||||
@@ -84,10 +83,6 @@ $(TINYBASIC_BUILD)/tinybasic.bin: $(TINYBASIC_BUILD)/tinybasic.flat.bin
|
||||
test $$tiny_size -gt 0; \
|
||||
dd if=$< of=$@ bs=1 skip=$$(( $(TINYBASIC_BASE) )) count=$$tiny_size status=none
|
||||
|
||||
$(BUILDDIR)/metal/generated/tinybasic.inc: $(TINYBASIC_BUILD)/tinybasic.ihx
|
||||
@mkdir -p $(@D)
|
||||
@awk '$$1 == "TINYBASIC0" { printf "TINYBASIC_SIZE = 0x%04X\n", $$5 }' $(TINYBASIC_BUILD)/tinybasic.map > $@
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILDDIR)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user