Если есть аргумент, то заносит его в R0, т.е. выполняется команда MOV R0,ARG. Затем выполняется этот код:
, т.е. заносит выводимый символ в очередь вывода, а если не удалось занести, то тупо ждет.Код:EMT ^O341
BCS .-2
Вид для печати
Еще дополнительный вопрос - есть ли всякие тесты, позволяющие протестировать правильность выполнения команд процессора?
Либо добавить в заголовок файла,
для принудительного подключения библиотеки, или вообще свой макрос соорудить.Код:.ENABL LC, MCL
Макрос-PIPEC выкидывает в стоп и 1000+исп или 0+исп - не продолжат выполнения программы (вопрос (без шуток), что такое хранится по адресу, который чистим?
я не программер - просьба не издеваться :rolleyes_std:)
Код:
.MACRO .PIPEC
CLR @#54
HALT
.ENDM
pascal - честная очистка экрана
+ прилепил документацию по макро-11 из архиваКод:
PROCEDURE CLS;
VAR
RA ORIGIN 176640B: INTEGER;
RD ORIGIN 176642B: INTEGER;
BEGIN
WRITE(CHR(12));
FOR RA:=100000B TO 151177B DO RD:=0;
END;
Лучшая документация на ассемблер (если не считать родного описания) наверное книга Сингера (есть на сайте UKNC & PDP11). Вообще полезное чтиво - книга для начинающих программистов, только вот с заданиями из нее частенько современные опытные программисты бы не справились :)
---------- Post added at 13:42 ---------- Previous post was at 13:39 ----------
Чистится указатель на данные RMON ;)
HALT кстати не сработает в mapped мониторах и прога выпадет по трапу :)
Впрочем для УКНЦ это не существенно :)
---------- Post added at 13:47 ---------- Previous post was at 13:42 ----------
Для честных PDP-11 есть XXDP - там куча всяких тестов. Для УКНЦ можно попробовать тест 11/03, только придется драйвер писать с которого грузитья :)
К солву, на УКНЦ находил неверно работающую команду из эмулируемых - не то MUL не то DIV...
---------- Post added at 13:49 ---------- Previous post was at 13:47 ----------
MOV R0,ARG это с точностью до наоборот ;)
Это на интеле порядок аргументов обратный :)
---------- Post added at 13:51 ---------- Previous post was at 13:49 ----------
Вместо кучи .TTYOUT наверное проще один .PRINT использовать :)
Собственно есть такая замечательная дока: RT-11 System Macro Library Manual :)Код:.PRINT #TEXT1 ;БЕЗ <CR><LF>
.PRINT #TEXT2 ;<CR><LF> В КОНЦЕ
TEXT1: .ASCII /TEXT/<200>
TEXT2: .ASCIZ /TEXT/