/* w3probe.c — явная проба подхода A для --w3.
 *
 * main (W1/W2) зовёт функцию w3_show() в W3, которая печатает свой
 * собственный адрес (должен быть 0xC0xx) через printf.  Затем main
 * проверяет прямой вызов с возвратом и ЧИСТО выходит в DSS (return 0),
 * чтобы вернулось приглашение шелла. */

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

extern const uint8_t w3_sig;             /* rodata в W3            */
extern uint8_t w3_probe(uint8_t x);      /* код в W3, прямой вызов */
extern void    w3_show(void);            /* код в W3, зовёт printf */

int main(void)
{
    printf("HOME: main @ 0x%04X | w3_probe @ 0x%04X | w3_show @ 0x%04X\n",
           (unsigned)&main, (unsigned)&w3_probe, (unsigned)&w3_show);

    w3_show();                           /* W3-код печатает свой адрес */

    printf("HOME: w3_probe(0x42) = 0x%02X (expect 0xBD)\n",
           (unsigned)w3_probe(0x42));

    printf("HOME: done, exiting to DSS.\n");
    return 0;                            /* чистый выход → приглашение DSS */
}
