User Tag List

Страница 2 из 14 ПерваяПервая 123456 ... ПоследняяПоследняя
Показано с 11 по 20 из 140

Тема: Реконструкция CGLIB для использования из OMSI Pascal

  1. #11

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    361
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Чем Вы так красиво .OBJ расковыряли?)
    С помощью LIBR.SAV вытягивал отдельные модули командой LIBR/EXT. А объектники в MACRO-11 переводились программой DECOBJ.SAV.

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

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Ещё вопрос по MACRO-11: как оформить подпрограммы, чтобы при линковке из объектника подключались только нужные? (сейчас у меня подключаются тупо все).
    Это надо каждую подпрограмму оформить в виде отдельного объектного файла, а потом собрать их всех в библиотеку. Как раз CGLIB.OBJ является не объектным файлом, а библиотекой.

    Эти 2 пользователя(ей) поблагодарили Alex_K за это полезное сообщение:

    nzeemin(03.04.2021), Oleg N. Cher(04.03.2020)

  2. #12

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

    По умолчанию

    А умеет ли MACRO-11 создавать несколько объектных файлов (или библиотеку) из одного ассемблерного исходника? Или нужно этот исходник для начала порезать на кусочки по подпрограммам?

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Обычно передаём на вывод вот такую строку, и затем ставим задержку чтобы ПП очистил экран, заполнив его новыми цветами.
    Дурацкий вопрос из разряда "а шо если засунуть пальцы в розетку": а шо будет, если не поставить эту задержку?

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

    Я к чему спросил. InitGraph и CloseGraph пихают Esc-последовательности, но не используют задержек.

  3. #13

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    361
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    А умеет ли MACRO-11 создавать несколько объектных файлов (или библиотеку) из одного ассемблерного исходника? Или нужно этот исходник для начала порезать на кусочки по подпрограммам?
    Библиотеку создаёт программа LIBR.SAV, потому придётся порезать по кусочкам.

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

    Oleg N. Cher(04.03.2020)

  4. #14

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

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    А умеет ли MACRO-11 создавать несколько объектных файлов (или библиотеку) из одного ассемблерного исходника? Или нужно этот исходник для начала порезать на кусочки по подпрограммам?
    MACRO создаёт один .OBJ файл, из одного или нескольких текстовых исходников.

    а шо будет, если не поставить эту задержку?
    Если сразу начать рисовать на экране после команды его очистки - то ПП будет стирать экран пока ЦП что-то рисует, может просто стереться часть того что вы пытаетесь нарисовать.

  5. #15

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

    По умолчанию

    ОК. А каким кодом ждём ПП?

    Видимо, я порежу Паскаль-исходник на кусочки по процедурам и буду их компилировать и ассемблировать уже по кусочкам. Думаю, что с этим разберусь. Гораздо хуже всё с палитрами обстоит. Чёрная магия, никто не знает как это сделать.

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

    Кстати, я уже столкнулся с тем, что ПП затирает часть изображения, сформированного ЦП. Так что да, всё верно. Но тогда непонятно почему автор CGLIB, явно системщик со стажем, не ждёт ПП в конце процедур InitGraph/CloseGraph. Или этого не требуется в данном случае?

  6. #16

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    361
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Гораздо хуже всё с палитрами обстоит. Чёрная магия, никто не знает как это сделать.
    Ну не такая и чёрная. Читайте литературу, всё описано.
    Маленький пример. Числа по умолчанию восьмеричные, R0 - адрес в ОЗУ ЦП, R1 - адрес в ОЗУ ПП, R2 - кол-во слов (2 байта) для обмена.
    Код:
    ; Сохранить старый регистр
            MOV     #2470,R0
            MOV     #SVPAL,R1
            MOV     #2,R2
            CALL    RDPP
    
    
    ; Установить новый
            MOV     #2470,R0
            MOV     #NEWPAL,R1
            MOV     #2,R2
            CALL    WRPP
    
    
    ; Восстановить старый
            MOV     #2470,R0
            MOV     #SVPAL,R1
            MOV     #2,R2
            CALL    WRPP
    
    
    RDPP:   MOV     #10*400,BLK
            MOV     R0,BLK+4
            MOV     R1,BLK+6
            MOV     R2,BLK+10
            CALL    CHAN2
            RETURN
    
    WRPP:   MOV     #20*400,BLK
            MOV     R0,BLK+4
            MOV     R1,BLK+6
            MOV     R2,BLK+10
            CALL    CHAN2
            RETURN
    
    CHAN2:  MOV     #BUF0,R0
            MOV     #5,R1
            MTPS    #200
            BR      2$
    1$:     MOVB    (R0)+,@#176676
    2$:     TSTB    @#176674
            BPL     2$
            SOB     R1,1$
            MTPS    #0
            RETURN
    
    BLK:    .WORD   10*400,32,0,0,0
    BUF0:   .WORD   BLK,-1
    
    SVPAL:  .BLKW   2
    NEWPAL: .WORD   ^B1110111011001100, ^B1010101010001000

    Эти 2 пользователя(ей) поблагодарили Alex_K за это полезное сообщение:

    nzeemin(04.03.2020), Oleg N. Cher(04.03.2020)

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

  8. #17

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

    По умолчанию

    Alex_K, весьма ценный пост, спасибо.

    Родил такую процедуру установки цветов палитры:

    Код:
    /*$C
    PALET:
        MOV     #BUF0, R0
        MOV     #5, R1
        MTPS    #^O200
        BR      2$
    1$: MOVB    (R0)+,@#^O176676
    2$: TSTB    @#^O176674
        BPL     2$
        SOB     R1, 1$
        MTPS    #0
        RETURN
    BLK:    .WORD   ^O20*^O400,^O32,^O2470,NEWPAL,2
    BUF0:   .WORD   BLK,-1
    NEWPAL: .WORD   ^B1110111011001100, ^B1010101010001000
    */
    PROCEDURE SetPalette (c0, c1, c2, c3: INTEGER);
    BEGIN /*$C
        MOVB    8(SP), NEWPAL
        MOVB    6(SP), NEWPAL+1
        MOVB    4(SP), NEWPAL+2
        MOVB    2(SP), NEWPAL+3
        CALL    PALET
    */
    END {SetPalette};
    Трудности:

    1. перепутанный RGB/GRB (нужно ориентироваться на GRB, т.к. таких машинок сильно больше?)
    2. я так понимаю, цвета 1..7 с низкой яркостью не очень пользуется спросом на УКНЦ?
    3. процедура понимает на входе значения типа #11, #33, #FF. нужно превращать 1 в #11, т.е. размножить младший полубайт на старший. Подскажите, как закодировать. На Z80 я бы скопировал его в другой регистр, сдвинул бы влево на тетраду и наложил бы по OR

  9. #18

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    361
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    3. процедура понимает на входе значения типа #11, #33, #FF. нужно превращать 1 в #11, т.е. размножить младший полубайт на старший. Подскажите, как закодировать. На Z80 я бы скопировал его в другой регистр, сдвинул бы влево на тетраду и наложил бы по OR
    В техническом описании описана структура регистра управления цветом, страница 46. Надо, чтобы чётная и нечётная тетрады были одинаковыми, т.к. вы не используете план 0.
    Например пусть у нас будут яркие цвета чёрный (00), зелёный (01), красный (10), жёлтый (11). Соответственно:
    2470: 1010 1010 1000 1000
    2472: 1110 1110 1100 1100

    Да, и не забудьте восстановить старое значение при выходе.

  10. #19

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

    По умолчанию

    Ну, я и сейчас не уверен, что выход обратно в текстмод RT-11 у меня сделан правильно. Но учту, спасибо.

    Норм, если я вместо запоминания палитры и её восстановления после перехода в текстовый режим просто выведу?
    Код:
            .BYTE	33,246,61		; 80x24 mode
    	.BYTE	33,240,60		; Цвет символа
    	.BYTE	33,241,61		; Цвет знакоместа
    	.BYTE	33,242,61		; Цвет фона
    	.BYTE	14			; Clear screen
    	.BYTE	0
    Да, после вывода этих кодов надо ждать ПП или не надо?

  11. #20

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    361
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Норм, если я вместо запоминания палитры и её восстановления после перехода в текстовый режим просто выведу?
    Регистры управления цветом не восстановятся.

Страница 2 из 14 ПерваяПервая 123456 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Turbo Pascal для msx/msx2
    от Оззя в разделе MSX
    Ответов: 4
    Последнее: 23.02.2020, 23:59
  2. Ответов: 7
    Последнее: 12.12.2019, 04:12
  3. Turbo Pascal 4 и CP/M 3 для Корвета
    от litwr в разделе Корвет
    Ответов: 10
    Последнее: 26.11.2019, 04:19
  4. Язык PL/M. Возможность использования.
    от James DiGreze в разделе Программирование
    Ответов: 18
    Последнее: 15.01.2006, 12:19

Ваши права

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