Совершенно справедливый вопрос, этот call - рукотворный, он из самописного модуля crt0cpm.s (которым я меняю штатный crt0.rel)
Просто как оказалось, в современном SDCC в области инита за каким-то хреном сначала зачем-то всегда идет поле в 5 кодов 0FFh, а уже затем код инициализации. Когда я это поле в 5 кодов 0FFh стал пропускать, все стало инициализироваться как надо и работает как надо, т.е. можно считать, что катомизация для CP/M есть.
Массивы пока не использую (пример пока что простейший - с одним printf, тоже самописным - небольшим). ORG имеется - в crt0cpm.s (в ассеблерном модуле) перво-наперво делается "org 0x100" - это нормально, все CP/M-овские программы имеют стартовый адрес 100h. Но даже если и из-за него, 100h это 256байт, а не 4кб.
Откуда же эти 4к оверхеда?Весь мой код (как ассемблерный, так и С-шныий) я в бинарнике вижу (и в отладчике прошагал), он весь в начале файла - 3 сотни байт. За ним идет 4кб какого-то мусора и уже затем в конце файла код инициализации переменных (в моем примере это всего десяток байт). Общий размер файла бинарника 4,3кб. Отчего такое может быть?





Весь мой код (как ассемблерный, так и С-шныий) я в бинарнике вижу (и в отладчике прошагал), он весь в начале файла - 3 сотни байт. За ним идет 4кб какого-то мусора и уже затем в конце файла код инициализации переменных (в моем примере это всего десяток байт). Общий размер файла бинарника 4,3кб. Отчего такое может быть?
Ответить с цитированием