Начал ковырять исходники 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
или
Код:
global _access
signat _access,8250
global _exit
signat _exit,4152 ; arg in DE
Выделенное жирным, HitechC v3.09 образца 1987 года не понимает от слова совсем.
Собственно, это не новость, я с этим столкнулся еще в ядре. Но там этого встречалось мало и я тупо взял и переписал по смыслу. А тут надо будет обдумать и как передаются параметры (v3.09 образца 1987 года не умеет никак кроме как по стеку, а в исходника мы видим размещение в регистрах, причем несколько вариантов в зависимости от числа в
signat), и как после С-компиляции сегменты в исполняемом бинаре лягут - надо чтобы в требуемом порядке.