сборка: гигиена (П5) — stale .rel, все тесты в make all, размерный регресс
- lib/Makefile: stale .rel удаляются сверкой списка модулей перед упаковкой; штамп build/.modules триггерит перелинковку при любом изменении состава исходников (при смене списка архив сносится — на exFAT гранулярность mtime грубая, сравнение времён ненадёжно) - top-level TESTS: все каталоги tests/ теперь собираются make all (43 программы; banktest переименован из banked.exe — конфликт имён с tests/banked); mdview2 добавлен в APPS - размерный регресс: toolchain/size_check.py сверяет _CODE всех программ с docs/size_baseline.tsv; make size-check / size-baseline - заголовки: контракт затенения SDCC задокументирован в docs/libc-headers.md; новый string.h (include_next + strlwr/strupr); из sprinter_compat.h убраны макросы min/max — конфликтовали с функциями из stdlib.h, и в Solid-C min/max тоже функции Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <sprinter.h>
|
||||
|
||||
/* crt0_banked.s reads this constant to know how many banks to load. */
|
||||
const uint8_t n_banks = 2;
|
||||
|
||||
void bank1_func(void) __banked;
|
||||
void bank2_func(void) __banked;
|
||||
void bank1_func2(uint16_t) __banked;
|
||||
|
||||
extern uint16_t bank1var;
|
||||
extern uint16_t bank2var;
|
||||
|
||||
extern uint8_t bank_pages[]; /* filled by crt0_banked.s */
|
||||
|
||||
int main(void)
|
||||
{
|
||||
bank1var = 1;
|
||||
bank2var = 2;
|
||||
puts("HOME: program start.");
|
||||
printf("HOME: window 3 phys page = 0x%02X\n", _io_page_w3);
|
||||
printf("HOME: bank_pages[1] = 0x%02X\n", bank_pages[1]);
|
||||
printf("HOME: bank_pages[2] = 0x%02X\n", bank_pages[2]);
|
||||
|
||||
bank1_func();
|
||||
bank2_func();
|
||||
bank1_func2(25);
|
||||
bank2_func();
|
||||
|
||||
puts("Press any key to exit...");
|
||||
(void)getchar();
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user