User Tag List

Показано с 1 по 10 из 154

Тема: Программирование для ПК 11/16 «Союз-Неон»

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #10

    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,724
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    406
    Поблагодарили
    257 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Процедура перевода цвета из отдельных значений red, green, blue в 16-битный цвет Союз-Неона:

    Код:
    ; input:    R1 = pointer to red,green,blue bytes (0..63)
    ; output:   R2 = 16-bit combined colour
    
    ConvertColour:
            PUSH R1
            PUSH R3
            PUSH R4
            CLR R2              ; combined colour
            CLR R3              ; index in the bits table
            MOV #6,R4           ; process 6 bits
    1:          RORB (R1)+      ; get a red bit
                BCC 2
                    BIS BitsRed(R3),R2
    2:          RORB (R1)+      ; get a green bit
                BCC 3
                    BIS BitsGreen(R3),R2
    3:          RORB (R1)       ; get a blue bit
                BCC 4
                    BIS BitsBlue(R3),R2
    4:          SUB #2,R1       ; set pointer back to red
                TST (R3)+       ; next bit in the table
            SOB R4,1
            POP R4
            POP R3
            POP R1
            RET
    ; strange RGB bit mapping
    BitsRed:    .WORD  0, 10, 20, 2000, 4000, 10000
    BitsGreen:  .WORD 40,100,200,20000,40000,100000
    BitsBlue:   .WORD  0,  1,  2,    4,  400,  1000
    Можно оптимизировать эту процедуру по скорости или по размеру, но так наглядней - понятен принцип кодирования цвета.

    Использование процедуры показано ниже. Допустим, у нас 256-цветный режим (1 байт на точку), в R0 лежит номер цвета в палитре. Тогда, получив с помощью процедуры ConvertColour закодированный цвет в R2, мы должны положить его старший байт в одно место в палитре, а младший байт - в другое, на 256 байт дальше. Такое неудобное (для программиста) устройство палитр в Союз-Неоне.

    Код:
            MOV #RGB,R1                 ; pointer to RGB values
            CALL ConvertColour
            MOVB R2,Palette+256.(R0)    ; save low byte
            SWAB R2
            MOVB R2,Palette(R0)         ; save high byte
    
    RGB:    .BYTE 37.,29.,11.
    Последний раз редактировалось Manwe; 07.09.2020 в 13:15.
    manwe.pdp-11.ru

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

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

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

Похожие темы

  1. Эмулятор Союз-Неон ПК-11/16 - EmuStudio
    от Titus в разделе Эмуляторы отечественных компьютеров
    Ответов: 335
    Последнее: 01.04.2024, 11:33
  2. Ответов: 0
    Последнее: 17.01.2015, 21:02
  3. ПК-11 'Союз-Неон'
    от Keeper в разделе ДВК, УКНЦ
    Ответов: 12
    Последнее: 16.10.2013, 05:07

Ваши права

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