hobot(05.03.2020)
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
hobot(05.03.2020)
Что я делаю не так? ) Запустил в системе под 7-ркой такой вод код(UKNCBTL) :
Код:! Apxивны дeл ЖД ! ЛAТ MUZ .MAC 19 09-Mar-1992 121 TEXP .MAC 36 23-Jan-2020 150 CLSTST.MAC 1 05-Mar-2020 212 < UNUSED > 1387 213 7 Files, 66 Blocks 1387 Free blocks L07>mac CLSTST L07>lin CLSTST L07>RU CLSTST r L07>TY CLSTST.MAC START: MOV #<33>, @#177566 MOV #'[, @#177566 MOV #'r, @#177566 CLR R0 EMT 350 .END START L07> ! Apxивный paздeл ЖД !
hobot(05.03.2020)
hobot(05.03.2020)
Шото вы ещё больше всё запутали, господа. Хобот, ты как истинный оператор ДВК и знаток Esc-последовательностей и хочешь нормальную реализацию GCLIB - бери её и тесть на предмет нормального переключения в граф. режим и нормального из него выхода. А по поводу граф. движка мне и самому интересно чего можно там закодить. Пока я в недоумении чешу репу, созерцая странные подпрограммы, работающие с теневым буфером. А мне бы пригодилось что-то вроде рисования спрайта, заданного константным массивом.
Впечатления от работы на асме двоякие. Удивило, что BICB не устанавливает флаг нуля. Долго не мог понять почему не работает BICB #^O17, 6(SP) - пока не поменял её на BICB 6(SP), #^O17
Но зато стало понятно, откуда растут уши у языка Си. Это в точности калька с команд PDP-11. Даже грустно как-то.
Вопрос: какая команда быстрее работает - BICB или BIC? В целом, работа со словами предположительно быстрее, чем с байтами, но лучше уточнить. Нигде в доках пока не нашёл времени исполнения разных команд.
В эмулятор Патрона вшита какая-то странная версия LIBR, которая не соответствует описанию, найденному в сети. Вызываю её так:
rt11.exe LIBR CGLIB CG001
rt11.exe LIBR CGLIB CG002
rt11.exe LIBR CGLIB CG003
...
Для пересоздания библиотеки ей надо передать ключик /C (очевидно - CREATE), иначе просто идёт добавление объектников в существующую библиотеку. Как передать ей сразу несколько файлов - пока не понял.
Другая найденная на просторах версия LIBR работает так, как и указано в документации. Вызываю её так:
rt11.exe RUN LIBR CGLIB=CG001,CG002,CG003,CG004,CG005,CG006
При попытке добавить ,CG007 либр кочевряжится (видимо, количество символов ограничено). С этой версией я не понял как добавлять в существующую библиотеку, она всегда пересоздаёт.
Обе версии ругаются матом на дублирование имени MAIN, хотя вроде бы делают то, что нужно.
?LIBR-W-Duplicate module name of .MAIN.
Это странно - никакого глобального символа MAIN в ассемблерном листинге нет.
Но, в целом, терпимо. Жить можно.
Это не глобальный символ, это название модуля. .TITLE надо добавить
- - - Добавлено - - -
Это что то странное. По логике, должно быть именно BICB #^O17, 6(SP) - сбросить младшие четыре бита в байте (или слове - в данном случае без разницы) по адресу 6(SP). И флаг N должен выставиться - только есть нюанс - для BICB - в байте 6(SP) получился полностью ноль, если в байте 7(SP) не ноль - всё равно выставится, а для BIC - только если получится полностью нулевое слово по адресу 6(SP).
А BICB 6(SP), #17 - это сбросить в байте, где лежит 17 те биты, которые установлены в байте, который хранится по адресу 6(SP)
Oleg N. Cher(06.03.2020)
??? с чего ты взял ???
Код:ОПИСАНИЕ МОДУЛЕЙ БИБЛИОТЕКИ TERPAS.OBJ ______________________________________ БИБЛИОТЕКА TURBO ФИРМЫ BUSINESS Universal. Описание процедур и функций библиотеки TURBO.OBJ V03.00 (расширение стандартной библиотеки PASCAL) Процедуры: CLRSCR - очистить от курсора до конца экрана CLREOL - очистить от курсора до конца строки GOTOXY(X,Y) - перемещение курсора в позицию X,Y COLORS(L,S,P) - установка цвета символа (L) ,экрана (S) ,зна- коместа (P); PUT8(N) - печать псевдографических символов N=240B-277B SBROS - применяется перед использованием оператора READ для сброса спецрежима , установленного функциями KEYPRESSED и READKEY, когда при на- жатии на клавишу на экране ничего не отобра- жается. Функции: KEYPRESSED - принимает значения TRUE и FALSE ,в зависимос- ти от того,была нажата клавиша (TRUE) или нет (FALSE); READKEY - выдает код нажатой клавиши; ENTER(L,U,X,Y) - используется для ввода чисел с контролем на допустимость значения . L - нижний предел, U - верхний предел .Режим ввода будет поддер- живаться пока вводимое число не будет вхо- дить в указанные рамки . Перед использованием применение процедуры SBROS не требуется .Если число не входит в интервал , то независимо от количества набранных символов происходит сти- рание первых восьми позиций и курсор переме- щается в позицию X,Y (кординаты курсора). Перед использованием процедур и функций данной библиотеки в на- чале программы необходимо описать их: PROCEDURE CLRSCR;EXTERNAL; PROCEDURE CLREOL;EXTERNAL; PROCEDURE GOTOXY(X,Y:INTEGER);EXTERNAL; PROCEDURE SBROS;EXTERNAL; PROCEDURE COLORS(L,S,P:INTEGER);EXTERNAL; PROCEDURE PUTB(N:INTEGER);EXTERNAL; FUNCTION KEYPRESSED:BOOLEAN;EXTERNAL; FUNCTION READKEY:INTEGER;EXTERNAL; FUNCTION ENTER(L,U:REAL;X,Y:INTEGER):REAL;EXTERNAL; Координаты курсора находятся в пределах : X=0-79, Y=0-23 .Нача- лом координат является верхний левый угол экрана (X=0,Y=0). При достижении 79-й позиции в строке происходит автоматический пере- ход в начало следующей строки. - 2 - Распределение цветов следующее: 0 - цвет фона (прозрачный); 1 - синий; 2 - красный; 3 - сиреневый; 4 - зеленый 5 - голубой; 6 - желтый; 7 - белый. Отзывы и предложения направляйте в фирму BUSINESS Universal по тел.470-29-46. ОСНОВНЫЕ ПРОЦЕДУРЫ ГРАФИЧЕСКОГО РЕЖИМА ДИСПЛЕЯ "УК-НЦ", НАПИСАННЫЕ НА ЯЗЫКЕ ПАСКАЛЬ. 1.OCH ........................... - очистка экрана 2.GRAF .......................... - переход в граф.режим 3.SIMV .......................... - переход в симв.режим 4.KOORD(X,Y:INTEGER) ............ - перевод координат в АЦЭ 5.ONE(C:INTEGER) ................ - перевод целого числа в АЦЭ 6.USTCOL(L,P,S:INTEGER) ......... - установка цвета символа, знакоместа,экрана 7.COLLIN(CL:INTEGER) ............ - установка цвета для прямой 8.COLKON(CK:INTEGER) ............ - установка цвета заполнения контура 9.ZAPR(X1,Y1,X2,Y2,CZ:INTEGER) - заполнение прямоугольной области ( левый нижний угол (X1,Y1), правый верхний угол (X2,Y2), цвет заполнения - CZ) 10.USTKUR(C1,C2:INTEGER) ......... - установка индексов цвета алфавитного курсора 11.ZAPOBL ........................ - заполнение области цветом, установленным в COLKON 12.PEROBL ........................ - перекрашивание области 13.TEKTOC(X,Y:INTEGER) ........... - установка координат текущей точки ( от которой рисуются линии и т.д. ) - 3 - 14.VECTOR(X,Y:INTEGER) ........... - рисование вектора (вектор рисуется от текущей точки до точки X,Y ) 15.TOCH(X,Y:INTEGER) ............. - рисование точки 16.PRAM(X1,Y1,X2,Y2,C:INTEGER) ... - нарисовать прямоугольник ( левый нижний угол (X1,Y1), правый верхний угол (X2,Y2), цвет рамки - C ). 17.OBN(X1,Y1,X2,Y2:INTEGER) ...... - очистка окна с символьными координатами 18.WIN(X1,Y1,X2,Y2,C:INTEGER) .... - прорисовка окна с символьными координатами Координаты находятся в пределах X=0-639, Y=0-263 . Началом отсчета координат является нижний левый угол экрана (X=0,Y=0). ОСНОВНЫЕ ПРОЦЕДУРЫ СИМВОЛЬНОГО РЕЖИМА ДИСПЛЕЯ "УК-НЦ", НАПИСАННЫЕ НА ЯЗЫКЕ ПАСКАЛЬ. 1.KUR(X,Y:INTEGER) .............. - установить курсор в позицию X,Y 2.RKL(VAR A:CHAR) ............... - считать символ без нажатия ВК 3.ZADER(T:INTEGER) .............. - задержка выполнения 4.PER(N:INTEGER) ................ - передача кода символа на дисплей (целесообразно применять для 8-битных кодов) 5.LPS(L,P,S:INTEGER) ............ - установка цвета сивола, знакоместа и экрана (L,P,S=48-55 или 60B-67B) 6.INV ........................... - включение инверсии символа 7.OTMINV ........................ - отмена инверсии символа 8.POD ........................... - включение подчеркивания символа 9.OTMPOD ........................ - выключение подчеркивания символа 10.SIZSCR(N:INTEGER) ............. - установка формата экрана (N=1 - 80x24, 2 - 40x24, 3 - 20x24, 4 - 10x24.) - 4 - 11.COPYS(Y1,X1,Y2,Y3,DL:INTEGER) - перенос строки экрана в самую нижнюю (верхнюю) строку,где: Y1 - номер строки; X1 - номер столбца; Y2 - 1 - верхняя строка, 0 - нижняя строка; Y3 - номер позиции для вывода; DL - кол-во позиций для вывода. * Длина нижней(верхней) строки 40 символов 12.COLCUR(C:INTEGER) ............. - установка цвета курсора (C=48-55 или 60B-67B) 13.CREWIN(X,Y,SX,SY,CB,CS,REV:INTEGER) - прорисовка окна в символьном режиме : X,Y - координаты верхнего левого угла, SX,SY - ширина по X и Y, CB - цвет рамки окна CB=48-55(60B-67B), CS - цвет символов в окне CS=48-55(60B-67B), REV - признак инверсии рамки (0-нет,1-есть).
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)