Попробовал снять все ограничения на использование символов КОИ-7 и КОИ-8 в комментариях и текстовых константах.
В приложении - последняя версия программного комплекта MACRO-11 ( включая компилятор MACRO V05.06r со снятыми ограничениями ).
Вид для печати
Попробовал снять все ограничения на использование символов КОИ-7 и КОИ-8 в комментариях и текстовых константах.
В приложении - последняя версия программного комплекта MACRO-11 ( включая компилятор MACRO V05.06r со снятыми ограничениями ).
SIPP патч для простоты :)
Поддержка 8бит в RT-11 V5.7 (SLP патчи для RMON.MAC и EDTG.MAC).
Поддержка включается определением conditional EIGH$T = 1 на этапе SYSGEN.
Патч тупо разрешает 8бит, хотя может правильнее запользовать PASAL$ бит в JSW, который правда отмечен как undocumented и используется для VENU$C=1.
В перспективе - добавка вопроса в SYSGEN на эту тему и правка KED/K52.
К слову в сорцах KED/K52 в коментариях отмечены места "change for 8bit", но там придется подумать - 8бит у них выполняет какую-то функцию. Тупо поправленный KED работает, но русский текст показывает в инверсном цвете :)
Раз уж есть тема по программированию, предлагаю сюда же свалить всякие хитрости какие кто пользует :)
Например такие:
Код:JSR Rx,@PC ;СОХРАНИТЬ Rx В СТЕКЕ, НЕ ТРОГАЯ PSW
MOV #160000,SP ;ПОЛНАЯ ОЧИСТКА ПАМЯТИ (56Kb)
MOV #4747,@#0 ;И ЧИСТЫЙ ОСТАНОВ БЕЗ ОШИБОК
CLR PC ;В КОНЦЕ
CALL @(SP)+ ;ВЫЗОВ СОПРОГРАММЫ
И я тоже добавлю - простой способ разворачивания цикла 2x:
1. Пусть есть цикл, выполняющийся N раз, типа:
mov N,r0
1$: cmd ! некая команда, например, clr(r1)+
sob r0,1$
2. Простой способ разворачивания того ж цикла в линейку:
mov N,r0
inc r0
asr r0
bcc 2$
1$: cmd
2$: cmd
sob r0,1$
Идея состоит в том, чтоб позаботиться о нечётном числе итераций до начала
цикла, и войти внутрь цикла в обход стандартного начала.
Задавали тут вопросы, решил сюда занести на всякий случай - вдруг кто не в курсе ;)
Что слово .WORD можно опускать и писать
вместоКод:123,456,LABEL
знают наверное все.Код:.WORD 123,456,LABEL
Но есть еще одна фича. Можно писать <имяинструкции> чтобы вписать
код [первой] инструкции в программу:
Ну а полезное практическое применение этому на мой взгляд одно - использованиеКод:010000 <MOV>
005000 <CLR>
понятных команд для очистки/установки нескольких признаков процессора одновременно (например <SEC>!<SEZ>, <CLV>!<CLZ>!<CLN>)...
Хотя еще пожалуй для создания таблиц дизассемблера может пригодится :)
Настройка экрана и запуск приложений
+ процедура gotoXY(x,y : integer); - для паскаля
+ процедура waitKEY; ожидания нажатия кнопочки - для паскаля
PASCALКод:
Устанавливает цвет курсора
8 цветов от 60 до 67 (третий параметр)
.TTYOUT #33
.TTYOUT #247
.TTYOUT #67
Цвет экрана
.TTYOUT #33
.TTYOUT #242
.TTYOUT #60
Цвет символов
.TTYOUT #33
.TTYOUT #241
.TTYOUT #67
Цвет знакоместа
.TTYOUT #33
.TTYOUT #240
.TTYOUT #60
Установка формата экрана
(61 - 80х24, 62 - 40х24, 63 - 20х24, 64 - 10х24)
.TTYOUT #33
.TTYOUT #246
.TTYOUT #61
Запускаем нужное приложение (на примере 'МЗ1:ДИГГЕР.САЖ')
.MCALL .CHAIN
MOV #^RMZ1,@#500
MOV #^RDIG,@#502
MOV #^RGER,@#504
MOV #^RSAV,@#506
.CHAIN
Вот вопрос такой родился - почему никто не пишет игры для УКНЦ?Код:
PROCEDURE WAITKEY;
VAR KEY ORIGIN 177560B: INTEGER;
BEGIN
REPEAT KEY:=0 UNTIL KEY>0
END;
Если завести глобальную переменную
INKEY ORIGIN 177562B: INTEGER;
там будет код последней нажатой клавиши
PROCEDURE gotoXY(X,Y: INTEGER);
BEGIN
WRITE(CHR(27),'Y',CHR(32+Y),CHR(32+X));
END;
Платформа жива - пока для неё делают игры :redface:
При использовании на УК-НЦ печати через EMТ ^O341, возникла ситуация, когда видимо буфер где-то там переполняется и при интенсивной печати часть символов не выводится. Наверное где-то есть флажок, переполнен буфер или нет. Где он?
Ну да, если буфер переполнен, то устанавливается бит C в PSW. Поэтому код должен быть таким:
Titus, а зачем такие сложности, можно же подцепить макробиблиотеку SYSMAC.SML (она вообще-то автоматом цепляется, если есть) и объявить макрос с помощью .MCALL .TTYOUT, а затем уже использовать этот макрос.Код:EMT ^O341
BCS .-2
Код:.TTYOUT #'A