#include #include #include /* crt0_banked.s reads this constant to know how many banks to load. */ const uint8_t n_banks = 2; void bank1_func(int x) __banked; void bank2_func(int x) __banked; extern uint8_t bank_pages[]; /* filled by crt0_banked.s */ static void show_w3(const char *who) { puts(who); hex8(_io_page_w3); /* current physical page mapped in window 3 */ putchar('\n'); } int main(void) { puts("HOME: program start."); #ifdef DEBUG_RT printf("HOME: w2_self_allocated = %u\n", w2_self_allocated); #endif show_w3("HOME: window 3 phys page = "); puts("HOME: bank_pages[1] (BANK1 phys) = "); hex8(bank_pages[1]); putchar('\n'); puts("HOME: bank_pages[2] (BANK2 phys) = "); hex8(bank_pages[2]); putchar('\n'); puts("HOME: calling bank1_func(42)..."); bank1_func(42); show_w3("HOME: back, window 3 phys = "); puts("HOME: calling bank2_func(123)..."); bank2_func(123); show_w3("HOME: back, window 3 phys = "); puts("HOME: done."); puts("Press any key to exit..."); (void)getchar(); return 0; }