diff --git a/app.mk b/app.mk index 3a2472d..3b59957 100644 --- a/app.mk +++ b/app.mk @@ -51,7 +51,12 @@ CC_FLAGS += $(EXTRA_FLAGS) all: $(EXAMPLE).exe -$(EXAMPLE).exe: $(SOURCES) $(MKEXE) $(LIB) +# runtime/*.s (crt0-семейство, bank.s, heap.s) собираются per-build +# внутри sprinter-cc — без этой зависимости их правка не перелинкует +# уже собранный exe (кусало: фикс bank.s не подхватился). +RUNTIME_DEPS := $(wildcard $(PROJ_ROOT)/runtime/*.s) + +$(EXAMPLE).exe: $(SOURCES) $(MKEXE) $(LIB) $(RUNTIME_DEPS) $(SPRINTER_CC) $(CC_FLAGS) -o $@ $(SOURCES) $(MKEXE): diff --git a/docs/size_baseline.tsv b/docs/size_baseline.tsv index cbb9018..f7fb61a 100644 --- a/docs/size_baseline.tsv +++ b/docs/size_baseline.tsv @@ -2,10 +2,10 @@ argv 3431 assrtest 3847 attrprob 4091 -banked 1040 -bankedbg 1051 -banklocl 4816 -banktest 3751 +banked 1056 +bankedbg 1067 +banklocl 4832 +banktest 3767 bios_text 4470 cat 915 conio 4634 @@ -29,7 +29,7 @@ mdview 19122 mdview2 27029 mem_test 4558 mouse 4394 -openenv 6111 +openenv 6127 ptime 5896 rt_test 4103 seek 4177 diff --git a/runtime/bank.s b/runtime/bank.s index 1aa1d5e..c94bebe 100644 --- a/runtime/bank.s +++ b/runtime/bank.s @@ -64,7 +64,11 @@ ___sdcc_bjump_ehl:: jp (hl) ; tail-jump to callee ;; Per-bank physical page table. Index = bank id (1-based; [0] is unused). -;; Filled at startup by crt0_banked.s. - .area _DATA +;; Filled at startup by crt0_banked.s ДО gsinit, а gsinit зануляет +;; _DATA (с 2026-07-04) — поэтому таблица живёт в _CODE (RAM на +;; Sprinter, всегда замаплен: это же нужно и трамплину выше). +;; Регрессия «bank_pages[]=0 → трамплин прыгает в мусор» была именно +;; из-за .area _DATA здесь. + .area _CODE _bank_pages:: .ds 16