Удаление в знак протеста против действий MM
Вид для печати
Удаление в знак протеста против действий MM
Я сложил в одну кучу все, что касается ПП на УКНЦ.
Там последний PRUN для упрощения запуска на ПП и несколько простых программ (некоторые собраны, некоторые только в исходниках):
- KBFIX - исправление "залипания" клавиш дополнительной клавиатуры в режиме ДКЛ /у кого хоть раз залипла девятка в K52 после часа работы, тот поймет ;)/
- NOALF - еще одна затычка - отключение клавиши АЛФ нафиг - кто как, а я частенько в нее попадал вместо shift :)
- PPCP - пример программы которую можно запускать как в RT-11 так и на ПП
- PPTEST - пример программы для ПП которая после выполнения сама себя выгружает
Ну и IOSCAN в комплекте содержит вариант для ПП.
Вроде бы есть документация "Работа с внешними устройствами". Там подробно объяснено, что сначала надо запросить блок памяти, получив его адрес. А уже затем загрузить в ОЗУ ПП и дать команду на выполнение. В примере грузится строго по адресу 30000. А если мы запускаем из-под RT-11 и до этого уже что-то загрузили, то всё будет потёрто.
По поводу подпрограммы посылки адреса блока параметров по каналу К2: после посылки четырех байтов надо обязательно дождаться установки флага готовности, это свидетельствуют о том, что блок параметров обработан процессом канала К2 и выполнен.
Что-то в качестве примера:
Код:BLK: .WORD 0,32,0,0,0
BLK0: .WORD BLK,-1
CHAN2: MOV #BLK0,R0
MOV #5,R1
BR 2$
1$: MOVB (R0)+,@#176676
2$: TSTB @#176674
BPL 2$
SOB R1,1$
RETURN
START: MOV #777,AA
MOVB #1,BLK+1
MOV #<$END-$BEGIN>,BLK+6
CALL CHAN2
TSTB BLK
BEQ 1$
.PRINT #WARN
.EXIT
1$: MOVB #20,BLK+1
MOV #$BEGIN,BLK+6
MOV #<$END-$BEGIN>,BLK+10
CALL CHAN2
MOVB #30,BLK+1
CALL CHAN2
AA: BR .
MOVB #2,BLK+1
CALL CHAN2
.EXIT
$BEGIN:
...............
MOV #AA/2,@#177010
MOV #NOP,@#177014
RETURN
$END:
WARN: .ASCIZ /?SCAN-F-No memory for load/
Удаление в знак протеста против действий MM
доброе утро.
есть ли возможность так организовать печать в программе на терминал при которой: очищается экран, печатаются строки с информацией, печатаются строки с информацией на том же месте ?????
Что то типа такого, насколько мне не изменяет память
Но если выводимая строка статуса может быть разной длины - нужно учесть это и затирать хвост предыдущего вывода
Код:.PSECT CODE
;....
.PRINT #Mess
;....
.PSECT DATA
Mess: .ASCII /Message/<15><200>
Можно использовать коды управления терминалом типа VT52.
Курсор в верхний левый угол: <033>H
Очистить экран ниже курсора: <033>J
Очистить строку после курсора: <033>K ( если чистить сразу весь экран - очищать отдельные строки уже не надо и наоборот ).
Программа, выводящая строки на экран таким способом - может выглядеть так:
Код:;
.MCall .Print, .Exit
START:
Mov #75., R2
2$:
.Print #Scr
Clr R0
1$: SOB R0, 1$
IncB Byte1
IncB Byte2
IncB Byte3
IncB Byte4
SOB R2, 2$
.Exit
Scr: .ASCII <33>/H/<33>/J/<12>/Str1: /
Byte1: .ASCII /0/<15><12><12>
.ASCII /Str2: /
Byte2: .ASCII /0/<15><12><12><12><12>
.ASCII /Str3: /
Byte3: .ASCII /0/<15><12><12><12><12><12><12><12><12><12><12>
.ASCII /Str4: /
Byte4: .ASCIZ /0/
.End START
;
А, да .PRINT, а не .TTYOUT, поправил :)