/* w3big.c — проба --w3 в режиме big.
 * big: код 0x8100 (W2), свапаемые банки в W1 (трамплины), W3 свободно под
 * резидент.  Проверяем сосуществование: W1-банк (трамплин) + W3-резидент
 * (прямой вызов) в одной программе. */

#include <stdio.h>
#include <stdint.h>
#include <sprinter.h>

/* crt0_banked читает это ДО gsinit — только `const`. */
const uint8_t n_banks = 1;

void bigbank_func(void) __banked;        /* W1-банк, трамплин  */
extern uint8_t w3_probe(uint8_t x);      /* W3-резидент, прямо */
extern void    w3_show(void);

int main(void)
{
    printf("BIG : main @ 0x%04X | W1=%02X W2=%02X W3=%02X\n",
           (unsigned)&main, _io_page_w1, _io_page_w2, _io_page_w3);
    bigbank_func();                      /* W1 через трамплин  */
    w3_show();                           /* W3 напрямую        */
    printf("BIG : w3_probe(0x42)=0x%02X (expect 0xBD), exit to DSS.\n",
           (unsigned)w3_probe(0x42));
    return 0;
}
