Важная информация

User Tag List

Страница 28 из 35 ПерваяПервая ... 242526272829303132 ... ПоследняяПоследняя
Показано с 271 по 280 из 342

Тема: PASCAL + MACRO11 (УКНЦ-ДВК).

  1. #271

    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    374
    Поблагодарили
    311 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Кстати, в этом же справочнике я пытался найти как впихнуть в строку символы с произвольным кодом. В OMSI это сделать нельзя.
    с этого места расшифруй пожалуйста - что такое "впихнуть с произвольным кодом в строку"
    - что такое "произвольный"
    - что ты называешь строкой?
    одномерный массив CHAR, переменную типа STRING из Фортрановской SYSLIB или аргумент оператора WRITE \ WRITELN ???
    Последний раз редактировалось hobot; 07.04.2021 в 01:49.
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

  2. #271
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #272

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,717
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну смотри. В строке WRITE('Stroka') есть шесть символов с кодами ASCII, т.е. коды эти могут быть от 32 (пробел) до 127 (какая-нить зюка). Как ты сам выяснил, можно в строку пихать переход на новую строку: WRITE('S1
    S2'); и табуляцию. Это управляющие коды. И, например, XDev тебе этак запросто их добавить в строку не даст. OMSI Pascal разрешает.

    А мы интересуемся вообще добавлять в эту строку любые произвольные управляющие коды, т.е. ниже 32 и выше 127. Чего OMSI Pascal не позволяет по стандарту (набор символов ASCII находится быть в диапазоне 32..127; выше может находиться псевдографика или русские символы. Ниже - управляющие коды. Но они разные на разных машинах. Поэтому стандарт тупо рубит их использование).

    Выводить символы с произвольным кодом всё-таки можно - через WRITE(CHR(код)), но Никита спрашивал как их в строку упихнуть. А, получается, что никак нельзя. Но, возможно, в OMSI Pascal 2 что-то такое и можно.

    - - - Добавлено - - -

    P.S. Под строкой я в данном контексте подразумеваю строчный литерал, взятый в апострофы.

  4. #273

    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    374
    Поблагодарили
    311 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    OMSI Pascal разрешает.
    транслятор проверяет только синтаксис и тип данных
    позволяет скорее редактор местный текстовый - который единственно правильный для работы
    с исходниками может оказаться в некоторых случаях...

    тип "СТРОКА" - одна из возможных реализаций для OMSI PASCAL
    Код:
    CONST   STRINGMAX=100;
    
    TYPE    STRING=RECORD
               LEN: 0..STRINGMAX;
               CH: PACKED ARRAY[1..STRINGMAX] OF CHAR
               END;
    
    FUNCTION LEN(VAR S:STRING):INTEGER;
    BEGIN   LEN:= S.LEN
    END;
    
    PROCEDURE CLEAR(VAR S:STRING);
    VAR     I: INTEGER;
    BEGIN   S.LEN:=0;
            FOR I:=1 TO STRINGMAX DO S.CH[I]:=' '
    END;
    
    PROCEDURE CONCATENATE(VAR S:STRING; VAR T:STRING);
    VAR     I,J: INTEGER;
    BEGIN
            IF S.LEN+T.LEN>STRINGMAX
               THEN J:=STRINGMAX-S.LEN (* OVERFLOW *)
               ELSE J:=T.LEN;
            FOR I:=1 TO J DO S.CH[S.LEN+I]:=T.CH[I];
            S.LEN:=S.LEN+J;
    END;
    
    FUNCTION SEARCH(VAR S,T:STRING; START:INTEGER):INTEGER;
    VAR     I,J: 0..STRINGMAX;
            UNEQ: BOOLEAN;
    BEGIN
            IF START<1 THEN START:=1;
            IF (START+T.LEN>S.LEN+1) OR (T.LEN=0)
               THEN SEARCH:=0
               ELSE BEGIN
                  I:=START-1;
                  REPEAT
                     I:=I+1; J:=0;
                     REPEAT
                        J:=J+1;
                        UNEQ:=T.CH[J]<>S.CH[I+J-1];
                     UNTIL UNEQ OR (J=T.LEN);
                  UNTIL (NOT UNEQ) OR (I=S.LEN-T.LEN+1);
                  IF UNEQ
                     THEN SEARCH:=0
                     ELSE SEARCH:=I;
                  END;
    END;
    
    PROCEDURE READSTRING(VAR F:TEXT; VAR S:STRING);
    BEGIN
            CLEAR(S);
            WITH S DO
               WHILE (NOT EOLN(F)) AND (LEN<STRINGMAX) DO BEGIN
                  LEN:=LEN+1;
                  READ(F,CH[LEN]);
                  END;
            READLN(F);
    END;
    
    PROCEDURE WRITESTRING(VAR F:TEXT; VAR S:STRING);
    BEGIN   WRITE(F,S.CH:S.LEN)
    END;
    
    PROCEDURE SUBSTRING(VAR T:STRING; VAR S:STRING; START,SPAN:INTEGER);
    VAR     I: INTEGER;
    BEGIN
            IF SPAN<0 THEN BEGIN SPAN:= -SPAN; START:=START-SPAN END;
            IF START<1 THEN BEGIN SPAN:=SPAN+START-1; START:=1 END;
            IF START+SPAN>S.LEN+1 THEN SPAN:=S.LEN-START+1;
            IF SPAN<=0
               THEN CLEAR(T)
               ELSE BEGIN
                  FOR I:=1 TO SPAN DO T.CH[I]:=S.CH[START+I-1];
                  FOR I:=SPAN+1 TO STRINGMAX DO T.CH[I]:=' ';
                  T.LEN:=SPAN;
                  END;
    END;
    
    PROCEDURE DELETE(VAR S:STRING; START,SPAN:INTEGER);
    VAR     I,LIMIT: INTEGER;
    BEGIN
            IF SPAN<0 THEN BEGIN SPAN:=-SPAN; START:=START-SPAN END;
            LIMIT:=START+SPAN;
            IF START<1 THEN START:=1;
            IF LIMIT>S.LEN+1 THEN LIMIT:=S.LEN+1;
            SPAN:=LIMIT-START;
            IF SPAN>0 THEN BEGIN
               FOR I:=0 TO S.LEN-LIMIT DO S.CH[START+I]:=S.CH[LIMIT+I];
               FOR I:=S.LEN-SPAN+1 TO S.LEN DO S.CH[I]:=' ';
               S.LEN:=S.LEN-SPAN;
               END;
    END;
    
    PROCEDURE INSERT(VAR S:STRING;VAR T:STRING; P:INTEGER);
    VAR     I,J: INTEGER;
    BEGIN
            IF T.LEN>0 THEN
               IF (P>0) AND (P<=S.LEN+1)
                  THEN BEGIN
                     IF S.LEN+T.LEN<=STRINGMAX
                        THEN S.LEN:=S.LEN+T.LEN
                        ELSE S.LEN:=STRINGMAX (* OVERFLOW *) ;
                     FOR I:=S.LEN DOWNTO P+T.LEN DO S.CH[I]:=S.CH[I-T.LEN];
                     IF S.LEN<P+T.LEN
                        THEN J:=S.LEN
                        ELSE J:=P+T.LEN-1;
                     FOR I:=P TO J DO S.CH[I]:=T.CH[I-P+1];
                     END
                  ELSE (* ERROR: NON-CONTIGUOUS STRING *)
    END;
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

  5. #274

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,717
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну я ж тебе сказал, что под строкой понимаю литерал, т.е. строковую константу. И пихать мы хотели не на уровне зюк, которые редактор может исказить, а на уровне кодов. В ТурбоПаскаль можно, в Дельфи можно. В OMSI походу нельзя.

    Про строчные операции я не спрашивал. И под конкатенацией тоже подразумевал конкатенацию литералов, т.е. на уровне констант. Сможешь объявить строку с кодами в секции CONST - будет тебе респект. Но что-то я в этом сильно сомневаюсь.

    Да оно не особо мешает, на то и стандарт. Сначала придумывали стандарты, потом - как их обходить)

  6. #275

    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    374
    Поблагодарили
    311 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Сможешь объявить строку с кодами в секции CONST - будет тебе респект.
    это несбыточно... такое "низя!!!", не надо меня на слабо тянуть заведомо несбыточными хотелками...
    я подразумевал то что написал... подходит не подходит под "ваши там запросы" - это не мне решать и не моя проблема, а вот информативность данной темы не флудом, а обсуждением и добавление ещё одной шпаргалки я с удовольствием (как видишь) ...
    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Про строчные операции я не спрашивал.
    а я на твой вопрос и не отвечал, я просто уточнил твою терминологию, ибо мудрённо вы программисты вещаете...

    Кстати сейчас занят "пофиксить" и "пере \ до укомплектовать" образ дискеты по Паскалю... что бы побольше полезностей на 1-ой дискете...позже отпишусь...тут кстати кто то уже для себя поставку полностью пересобрал по паскалю...было обсуждение помнится...

    По поводу твоей последней ссылки на какой-то там справочник - хочешь конкретно с ОМСИ работать - надо ДОКи по нему и читать - тогда вопросов не будет ни по УТИЛИТАМ, ни по коду, ни по отладке...

    а как тебе вот такой пример?

    Код:
    BEGIN
    
            WRITELN('СТРОКА 1               :');
            WRITELN('СТРОКА 2',':':14);
            WRITELN('':20,'ПРИВЕТ!!!');
    
            WRITELN('^C ');
    END.
    
    
    
    
    
    
    
    
    
    
    
    
    
    
     Exit? Y
    
    HD7>PASDWK TRISTR=TRISTR
    
    ERRORS DETECTED:  0
    FREE MEMORY: 10120  WORDS
    
    HD7>MAC TRISTR
    
    HD7>LIN TRISTR,PASDWK
    
    HD7>RU TRISTR
    СТРОКА 1                :
    СТРОКА 2             :
                       ПРИВЕТ!!!
    
    
    HD7>
    в начале исходник в редакторе ;-)
    в конце протокол выполнения, и вставленный символ виден только в редакторе,
    если вывести на дисплей системной командой файл исходника - там "как бы пусто"

    Код:
    HD7>TY TRISTR.PAS
    PROGRAM TROSTROKI;
    BEGIN
    
            WRITELN('СТРОКА 1               :');
            WRITELN('СТРОКА 2',':':14);
            WRITELN('':20,'ПРИВЕТ!!!');
    
            WRITELN(' ');
    END.
    
    
    HD7>
    а в супер функциональном NYS.SAV(он же EDIK.SAV)
    как видим "оно ест" ))) И чито ви скажите на это уважаемый ?

    Код:
    BEGIN
    
            WRITELN('СТРОКА 1               :');
            WRITELN('СТРОКА 2',':':14);
            WRITELN('':20,'ПРИВЕТ!!!');
    
            WRITELN('^C ');
    END.
    
    
    
    
    
    
    
    
    
    
    
    
    
    
     Exit? Y
    это опять просто информация по теме, а не ответ и не попытка что то где то притянуть
    под "воссоздание" исходника -
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

  7. #276

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,717
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну мало ли чего ест ваш Эдик ;-) Я как раз против таких подходов, потом можно проблем отгребсти.

  8. #277

    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    374
    Поблагодарили
    311 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Ну мало ли чего ест ваш Эдик ;-) Я как раз против таких подходов, потом можно проблем отгребсти.
    все твои проблемы за пределами аутентичной среды, а следовательно тут их обсуждать не корректно и противопоказано, как и прочие всякие ЗЫКС-мейкеры и ДЖАВА... Тут только правильное, аутентичное, с замечательным функционалом, продуманное, человеческое ПО, в реальном времени ;-)

    Потихоньку - помаленьку буду компоновать fix. сборник по ПАСКАЛЮ,
    пока так (как пишет тов. Хунта ) для затравочки

    Код:
    Image  :   PASCAL.DSK
    
    Format :   DSK : RT-11
    Size   :   800 Kb
    
    Volume ID: RT11A
    Owner    : 
    
    File       Blocks    Date       Bytes
    ---------- ------ ----------- ----------
    PASDOC.TXT     2  07-Apr-2021      1'024
    PASDOC.FCU   220  07-Apr-2021    112'640
    PASFPP.FCU    76  07-Apr-2021     38'912
    PASFPP.TXT     2  07-Apr-2021      1'024
    PASDWK.FCU    70  07-Apr-2021     35'840
    PASDWK.TXT     2  07-Apr-2021      1'024
    PASY2K.FCU    85  07-Apr-2021     43'520
    PASY2K.TXT     2  07-Apr-2021      1'024
    < UNUSED >  1127                 577'024
    ---------- ------ ----------- ----------
     8 Files, 459 Blocks
     1127 Free blocks
    PASDOC.TXT :
    Код:
    List contents of archive: PASDOC.FCU
    Fcu v2.03. Shurick inc. Dec 23 1994.
     7-Apr-89. List contents of archive PASDOC.FCU
    
        Name          Date      Original  Compressed        ratio
     PASCAL.LST     7-Apr-89       176      61.742           35%
     PASUSE.LST     7-Apr-89       161      54.234           34%
     PASCAL.LAN     7-Apr-89       181      66.477           37%
     PASCAL.RUK     7-Apr-89       112      37.195           33%
          4 Files,  630 blocks.
    
    АРХИВ СОДЕРЖИТ ОПИСАНИЕ ЯЗЫКА, РУКОВОДСТВО
    ПО ПРОГРАММИРОВАНИЮ И ОТЛАДКЕ ПРОГРАММ НА
    ЯЗЫКЕ ПАСКАЛЬ.
    
    archive.pdp-11.org.ru
    PASFPP.TXT :

    Код:
    Create new archive: PASFPP.FCU
    archiving:
    61%          PASFPP.SAV 59      07-Apr-89
    54%          PASFPP.OBJ 74      07-Apr-89
    Length of archive: 76 block(s), ratio: 57%
    
    PASFPP.FCU    76  07-Apr-2021
    
    List contents of archive: PASFPP.FCU
    Fcu v2.03. Shurick inc. Dec 23 1994.
     7-Apr-89. List contents of archive PASFPP.FCU
    
        Name          Date      Original  Compressed        ratio
     PASFPP.SAV     7-Apr-89        59      36.113           61%
     PASFPP.OBJ     7-Apr-89        74      39.797           54%
          2 Files,  133 blocks.
    
    АРХИВ СОДЕРЖИТ ОДИН ИЗ ВАРИАНТОВ 
    ТРАНСЛЯТОРА ПАСКАЛЯ И БИБЛИОТЕКИ
    
    archive.pdp-11.org.ru
    Последний раз редактировалось hobot; 07.04.2021 в 07:02.
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

    Этот пользователь поблагодарил hobot за это полезное сообщение:

    Oleg N. Cher(07.04.2021)

  9. #278

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,051
    Спасибо Благодарностей отдано 
    1,142
    Спасибо Благодарностей получено 
    1,473
    Поблагодарили
    525 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ребят, а что с русским языком в этом Паскале? есть версия с поддержкой КОИ-8 или только КОИ-7 ?

  10. #279

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,509
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    есть версия с поддержкой КОИ-8
    Вторая версия (под RSX) послала...

    - - - Добавлено - - -

    Технически, я думаю, можно попробовать хакнуть

  11. #280

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,051
    Спасибо Благодарностей отдано 
    1,142
    Спасибо Благодарностей получено 
    1,473
    Поблагодарили
    525 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Нашёл вот такую интересную ссылку:



    Что позволяет предположить, что есть утилита OMSI Improver, которая умеет оптимизировать выхлоп после OMSI Pascal, да ещё и весьма неслабо. Это что-то вроде peephole-оптимизатора, заменяющего по встроенному набору правил последовательности асм-инструкций на такие же по функциональности, но более компактные. Мне конечно интересно было бы увидеть эту утилиту, если она найдётся.

    Пока я только предположу, что она умеет оптимизировать несколько вызовов Write в один.
    В документации написано что она делает -
    The utility program IMP decrases the size of the object code produced by Pascal-1 by replacing branch/jump combinations with sigle branches when possible.
    То есть, если идёт подряд BEQ xxxx / JMP yyyy (3 слова) - если yyyy отстоит недалеко, то это заменяется на BNE yyyy (1 слово).
    Такая конструкция встречается в каждом IF, FOR, WHILE.

    - - - Updated - - -

    Вообще в этом Паскале IF, WHILE - относительно лёгкие, а вот FOR довольно громоздкий:
    Код:
    	FOR I:=1 TO 10 DO BEGIN
    	    WRITELN;
    	END;
    Код:
    ; 	FOR I:=1 TO 10 DO BEGIN
    	MOV 	%5,-(6)
    	ADD	#xxxx,%0
    	MOV 	#1,-(6)
    	MOV 	#10,-(6)
    	MOV 	2(6),@4(6)
    L1:
    	CMP 	@4(6),(6)
    	BLE	.+6
    	JMP	L2
    ; 	    WRITELN;
    	JSR	%7,$B36
    ; 	END;
    	INC 	@4(6)
    	JMP	L1
    L2:
    	ADD	#6,%6
    L0:
    Итого - 19-21 слов на обеспечение цикла FOR (на два слова меньше если переменная объявлена первой).
    Последний раз редактировалось nzeemin; 07.04.2021 в 21:13.

    Этот пользователь поблагодарил nzeemin за это полезное сообщение:

    Oleg N. Cher(07.04.2021)

Страница 28 из 35 ПерваяПервая ... 242526272829303132 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. "Исходники" Turbo Pascal нужны кому ?
    от esl в разделе Программирование
    Ответов: 2
    Последнее: 19.10.2018, 11:33
  2. Продам МС5310 блок дисководов к УКНЦ+КМД УКНЦ
    от Mad Killer/PG в разделе Барахолка (архив)
    Ответов: 7
    Последнее: 19.03.2012, 11:27
  3. в розыске дисковая версия Pascal.
    от goblinish в разделе Программирование
    Ответов: 18
    Последнее: 16.08.2011, 16:30
  4. Pascal
    от Andrew771 в разделе Программирование
    Ответов: 22
    Последнее: 24.05.2011, 21:20
  5. Скопировать/вставить из/в HiSoft Pascal в эмуляторе
    от kit в разделе Программирование
    Ответов: 1
    Последнее: 05.02.2010, 15:35

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •