Удалось скомпилять простую программку, работает вроде, печатает что надо.
Заглянув дебагером эмулятора обнаружил DIV и использование остатка деления, все верно скомпиляло.
Но однако! Пока допетрил как все собрать ... жжуть.test.c
Код:extern int rt11_print(int i, const char* ptr); int inline rt11_print(int i, const char* ptr) { asm ("mov 4(sp), r0"); asm ("add $48, r0"); asm ("emt 0341"); asm ("bcs .-2"); asm ("mov 6(sp), r0"); asm ("emt 0351"); } const char* txt_msg1 = " - Hello, world!"; void main() { for (int i=20; i<30; i++) { int j = i%10; rt11_print(j, txt_msg1); } }[свернуть]
Хорошо в стартовом посте ссылка на hello где есть pdp11-aout.ld и crt0lda.s из которого надо crt0lda.o ассемблировать.
Кстати упростил его, пашет
Иначе вот ни в жизнь бы не догадался как скомпилить хоть что-нибудьcrt0lda.s
Код:; .text .GLOBAL _main .GLOBAL start start: mov $01000, sp jsr pc, _main emt 0350 .GLOBAL ___main ___main: rts pc .end[свернуть]
Вдруг кто тоже будет долго допетривать как под виндой собрать хеллоуворлд, а make берет вот под виндой и.. не пашет пушто его нету
1) путь на \bin в PATH
2) взять c гитхаба в стартовом посте файлы: pdp11-aout.ld, crt0lda.s, crt0lda.o (можно и упрощенный crt0lda.s выше привел)
2) если модифицировали crt0lda.s, то его скомпилять надо pdp11-aout-as crt0lda.s -o crt0lda.o (один раз достаточно сделать)
3) батником ниже компиляется тестовый файл: build.bat test
build.bat
Код:set PATH=.\bin pdp11-aout-gcc -mbm2 -msoft-float -c -o %1.o %1.c pdp11-aout-ld --entry 01000 -T pdp11-aout.ld %1.o -o %1.out bin2load -a -f %1.out -o %1.lda -b 01000 del /f %1.sav lda2sav.exe -o %1.sav %1.lda[свернуть]
Вообщем хорошо что есть рабочий GCC. (а то я пробовал DECUS C для УКНЦ - вот там адъ и погибель, там настоящий Керниган и Ричи стайл, про анси не слышали, только самый трушный С, только хардкор)





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