Начал ковырять исходники LIBC.
Первая проблема которую предстоит решить в том, что компилятор прогеры Юзикс на самом то деле использовали какой-то более продвинутый, чем используемая мной сохранившаяся в PublicDomain HitechC CP/M-версия 3.09 образца 1987 года, не понимающая оператор asm("operand") в C-коде, или вот такие ассемблерные конструкции в ASM-коде:
илиКод:psect text,class=CODE psect strings,class=CODE psect const,class=CODE psect data,class=DATA psect bss,class=DATA psect _bssend,class=DATA
Выделенное жирным, HitechC v3.09 образца 1987 года не понимает от слова совсем.Код:global _access signat _access,8250 global _exit signat _exit,4152 ; arg in DE
Собственно, это не новость, я с этим столкнулся еще в ядре. Но там этого встречалось мало и я тупо взял и переписал по смыслу. А тут надо будет обдумать и как передаются параметры (v3.09 образца 1987 года не умеет никак кроме как по стеку, а в исходника мы видим размещение в регистрах, причем несколько вариантов в зависимости от числа в signat), и как после С-компиляции сегменты в исполняемом бинаре лягут - надо чтобы в требуемом порядке.![]()




Ответить с цитированием