Я не очень понял про многотерминальные системы. Есть ли какой-то другой более правильный способ опроса клавиатуры в RT-11? (с ожиданием нажатия, и без).
Вид для печати
Я не очень понял про многотерминальные системы. Есть ли какой-то другой более правильный способ опроса клавиатуры в RT-11? (с ожиданием нажатия, и без).
Хобот, лови для Паскаля. Спасибо Никите и Alex_K
- - - Добавлено - - -Код:VAR crtflg: INTEGER;
PROCEDURE CrtInit;
BEGIN /*$C
.TITLE CRT001
MOV @#^O177560, crtflg
BIC #^O100, @#^O177560
*/
END {CrtInit};
PROCEDURE CrtQuit;
BEGIN /*$C
MOV crtflg, @#^O177560
*/
END {CrtQuit};
/*------------------------------- Cut here --------------------------------*/
FUNCTION GetKey : INTEGER;
BEGIN /*$C
.TITLE CRT002
.GLOBL RETKEY
CLR R1
TSTB @#^O177560 ; is char?
BPL RETN$ ; no char => return 0
RETKEY: MOVB @#^O177562, R1 ; A key code
CMPB R1, #^O33
BNE RETN$
ESCKEY: TSTB @#^O177560
BPL ESCKEY
MOVB @#^O177562, R1 ; char => low byte
BIS #^O15400, R1 ; ^O33 => high byte
RETN$: MOV R1, 12(SP) ; return result
*/
END {GetKey};
/*------------------------------- Cut here --------------------------------*/
FUNCTION WaitKey : INTEGER;
BEGIN /*$C
.TITLE CRT003
WTKEY$: TSTB @#^O177560 ; Ready?
BPL WTKEY$ ; No!
JMP RETKEY
*/
END {WaitKey};
CrtInit нужен чтобы переключить ввод с эха на опрос процедурами GetKey и WaitKey. CrtQuit возвращает ввод обратно - его надо вызывать перед выходом в ОС. Можно было бы попробовать вставить эти вызовы прямо в процедуры опроса. Но если WaitKey ещё как-то будет работать, то GetKey нет - потому что в процессе работы программы ввод будет хапать то ОС (с выводом эха), то сама GetKey. Поэтому только такой механизм.
У кого-нить есть OMSI Pascal, запатченный под возможность использовать в идентах символ "_"?
У кого-нить есть линкер и Macro-11, запатченные под иденты длиннее 6 символов? Это вообще возможно?
При генерации RT-11 можно указать такую опцию, как "многотерминальная поддержка". Это для случая, когда к одному компьютеру подключено более одного терминала и эта опция обеспечивает поддержку этих терминалов на уровне системы. Возможность для программистов, чтобы всё было более-менее единообразно. Система поддерживает многотерминальные версии макрокоманд, кольцевой буфер терминала, отработку Ctrl/S, Ctrl/Q Ctrl/O стандартным образом.
Только я вот знаю только одну программу, которая пользуется этим функционалом - многотерминальный бэйсик. Он позволят на конфигурации без диспетчера памяти посадить за терминалы, как я видел, 4-х студентов, обеспечив им бэйсик ...
Имеет ли смысл многотерминальная поддержка на УКНЦ смысл? С первого взгляда не имеет, но кто его знает - вполне может возникнуть желание подцепить терминал на С2 и(или) на переделанный сетевой адаптер(токовая петля 20 ма, использовалось на УКНЦ входящих в комплект СВД ВУЗ, кои, как утверждалось, даже экспортировались в ГДР). :)
Я видел распечатку исходников многотерминального Паскаля для RT-11, на данный момент - распечатка передана на хранение в музей истории МИЭТа.
Со скан-кОдами клавиатуры для Паскаля, что то никто даже не проявил интерес, я ожидал, конечно, что такая возможность (буде реализованной) пригодилась бы всем сочувствующим, не только мне https://zx-pk.ru/threads/20444-pasca...=1#post1053516 - вопрос\запрос висит по ссылке с исходником
Ответ нет на оба вопроса, ибо RADIX50. 3 символа помещаются в 16 bit integer, 6 символов - 32 бита (2 слова).
Пользуйте GNU binutils (asm, linker, etc). Но там нет Pascal. И нет MACRO11 библиотеки (смотрю доку на RT11)
Я делаю себе C функции или макросы препроцессора с asm вставками и EMT), инструкции макросов не такие мощные в GNU as, как в MACRO11.
В теории можно сделать конвертор из формата файлов OBJ в Files11 в *.o (a.out) для target=pdp11-dec-aout
Продолжаю изучать добытый @shattered софт.
Решил глянуть, что же там за
PAS1.LZS unknown pascal
Смотрим листинг
В шапке есть этот вариант и похоже именно его @form патчил на предмет правильногоКод:РАБОТАЕМ С АРХИВОМ: DK:PAS1.LZS [ 85] 13-26-88
ПОЛНЫЙ КАТАЛОГ АРХИВА
Метод 'LZS', версия V02.01, буфер сжатия: 4096, общий каталог: НЕТ
---------- ---------- -------- --------- ------- -------------------
Имя файла блоков дата <байтов> сжатие адрес в архиве
---------- ---------- -------- --------- ------- -------------------
PAS1.SAV [ 52] 01-11-81 18996 29% [ 0]+ 16
PAS1.OBJ [ 91] 28-09-85 24182 48% [ 37]+ 84
---------- ---------- -------- --------- ------- -------------------
2 143 43520 41 % 85
HD7>RU PAS1 TEST,TT:=TEST
TEST P A S C A L 13- -88 PAGE 1
ДВК "ЭЛЕКТРОНИКА НЦ 8020/2,3,4"
LINE STMT LEVEL NEST SOURCE STATEMENT
1 PROGRAM TEST;
2 BEGIN
3 1 1 1 WRITELN('Ok');
4 2 1 1 END.
ERRORS DETECTED: 0
FREE MEMORY: 9861 WORDS
ERRORS DETECTED: 0
FREE MEMORY: 9861 WORDS
HD7>MAC TEST
HD7>LIN TEST,PAS1
HD7>RU TEST
Ok
заголовка и современного календаря.
Идём дальше, по описанию есть ещё один архив
PASCAL.LZS unknown pascal
И вот с ним не всё однозначно,
программа транслятор с таким заголовком так же есть в шапке темы и
в архиве, но тот же тест в самом конце отказался запускаться, наверное
я просто не в курсе какой то специфики???
Смотрим листинг:
Код:РАБОТАЕМ С АРХИВОМ: DK:PASCAL.LZS [ 323] 13-26-88
ПОЛНЫЙ КАТАЛОГ АРХИВА
Метод 'LZS', версия V02.01, буфер сжатия: 4096, общий каталог: НЕТ
---------- ---------- -------- --------- ------- -------------------
Имя файла блоков дата <байтов> сжатие адрес в архиве
---------- ---------- -------- --------- ------- -------------------
PASFOR.SAV [ 40] 29-04-92 12675 38% [ 0]+ 16
PASIMP.SAV [ 36] 29-04-92 12612 32% [ 24]+ 420
PASIMP.PAS [ 42] 29-04-92 7643 65% [ 49]+ 248
STRING.PAS [ 6] 29-04-92 1134 64% [ 64]+ 228
ERROR.PAS [ 2] 29-04-92 0586 43% [ 66]+ 354
CSI.PAS [ 10] 29-04-92 2477 52% [ 67]+ 444
INTRPT.PAS [ 3] 29-04-92 0692 55% [ 72]+ 378
PASPRF.PAS [ 21] 29-04-92 3716 66% [ 74]+ 62
PCL.PAS [ 27] 29-04-92 5973 57% [ 81]+ 210
PDROMA.PAS [ 1] 29-04-92 0246 52% [ 93]+ 56
PDHANO.PAS [ 1] 29-04-92 0284 45% [ 93]+ 318
PDRAND.PAS [ 1] 29-04-92 0246 52% [ 94]+ 106
PDGRAF.PAS [ 1] 29-04-92 0284 45% [ 94]+ 368
PDBIOR.PAS [ 17] 29-04-92 2778 69% [ 95]+ 156
HYPHEN.PAS [ 7] 29-04-92 1468 59% [ 100]+ 390
VOC.PAS [ 24] 29-04-92 4334 65% [ 103]+ 338
PAS4.OBJ [ 5] 29-04-92 1520 41% [ 112]+ 80
VOCE.PAS [ 16] 29-04-92 3166 62% [ 115]+ 80
PAS7.OBJ [ 5] 29-04-92 1318 49% [ 121]+ 190
PAS9.OBJ [ 5] 29-04-92 1492 42% [ 123]+ 500
PASB.OBJ [ 7] 29-04-92 2336 35% [ 126]+ 472
PAS0.OBJ [ 5] 29-04-92 1398 46% [ 131]+ 264
PAS1.OBJ [ 4] 29-04-92 1200 42% [ 134]+ 142
PAS2.OBJ [ 7] 29-04-92 2073 43% [ 136]+ 334
PAS3.OBJ [ 5] 29-04-92 1668 35% [ 140]+ 376
PAS5.OBJ [ 6] 29-04-92 1930 37% [ 144]+ 12
PAS8.OBJ [ 4] 29-04-92 1108 46% [ 147]+ 422
PAS6.OBJ [ 5] 29-04-92 1546 40% [ 150]+ 10
PASA.OBJ [ 7] 29-04-92 2170 40% [ 153]+ 36
EXAM1.TXT [ 1] 29-04-92 0235 55% [ 157]+ 174
EXAM2.TXT [ 1] 29-04-92 0167 68% [ 157]+ 426
PASNHD.OBJ [ 84] 29-04-92 26163 40% [ 158]+ 98
PASFPP.OBJ [ 74] 29-04-92 22916 40% [ 209]+ 166
PASFPP.SAV [ 58] 29-04-92 20975 30% [ 254]+ 58
PASPRF.OBJ [ 9] 29-04-92 2897 37% [ 295]+ 58
PASFOR.PAS [ 75] 29-04-92 10929 72% [ 300]+ 412
---------- ---------- -------- --------- ------- -------------------
36 622 165376 48 % 323
HD7>RU PASFPP TEST,TT:=TEST
TEST P A S C A L/RAFOS 13- -88 9:25 V1-564 PAGE 1
SM-3/SM-4 MINICOMPUTERS
LINE STMT LEVEL NEST SOURCE STATEMENT
1 PROGRAM TEST;
2 BEGIN
3 1 1 1 WRITELN('Ok');
4 2 1 1 END.
ERRORS DETECTED: 0
FREE MEMORY: 8895 WORDS
ERRORS DETECTED: 0
FREE MEMORY: 8895 WORDS
HD7>MAC TEST
HD7>LIN TEST,PASFPP
HD7>RU TEST
?FATAL ERROR: RESERVED INSTRUCTION TRAP
PROGRAM COUNTER: 1476
HD7>
PASFPP.SAV - название файла намекает, что это транслятор OMSI (а листинг, что его переделали шаловливые советские ручки) и то, что транслятор будет выдавать код с поддержкой FPP (а OTS должны FPP инициализировать - отсюда прерывание по резервной инструкции, ибо на ДВК FPP - это редкость редкая)
- - - Добавлено - - -
Посмотреть, что по адресу 1474 или выложить программу - могу проверить на J11