IPB

Здравствуйте, гость ( Вход | Регистрация )

> Программирование под AZБК, методики использования возможностей AZБК
SuperMax
сообщение 3.11.2023, 16:33
Сообщение #1


Администратор
*****

Группа: Root Admin
Сообщений: 6 341
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



Работа с палитрами

документация по палитрам тут

оба регистра доступны по записи и чтению, сохранение палитры осуществляется по записи в 177236
пример изменения дефолтной палитры RGB
Код

SetPal1:        mov     #177234,R0
                mov     #177236,R1

                mov     #256.,(R0)   ; адрес палитры
                mov     #10,(R1)    ; значение палитры - был черный фон - теперь темно-синий

                inc     (R0)
                mov     #15446,(R1)     ; значение палитры - был синий - стал - зеленый

                inc     (R0)
                mov     #77454,(R1)     ; значение палитры - был зеленый - стал желтый

                inc     (R0)
                mov     #46614,(R1)     ; значение палитры - был красный - стал коричневый
                return


загрузка палитры 256 цветов
Код

                mov        #177234,R0      ; установка палитры
                mov        #177236,R1
                mov        #newpal,R2
                mov        #256.,R3
                clr        R4
$rp0:            mov        R4,(R0)
                mov        (R2)+,(R1)
                inc        R4
                sob        R3,$rp0


newpal - метка массива палитры 256 цветов (256 слов)





--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
SuperMax
сообщение 14.2.2024, 18:21
Сообщение #2


Администратор
*****

Группа: Root Admin
Сообщений: 6 341
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



Особенности программирования под AZБК

постараюсь подсветить моменты, которые могут быть не особо заметны, но важны

1. Включение/Выключение кадрового таймера 60Гц

правильное включение

Код

bic     #4,@#177346         ; 60Гц таймер!
bis     #10,@#177346        ; пуск таймера 60Гц безусловный (дабы не делать ветвлений в заисимости от машины)

те я явно гашу бит 2 ибо он может остаться от какой-то другой программы которая включала 48Гц таймер
те я задаю что мы хотим включить таймер 60Гц и следующим BIS-ом его включаем

правильное выключение
Код

bic     #10,@#177346        ; тормозим таймер




2. Пример входа/выхода из программы

один из способов - сохранение регистров которые мы будем крутить - в стеке
Код

mov     @#177230,-(SP)
mov     @#177232,-(SP)
mov     @#177324,-(SP)
mov     @#177326,-(SP)
mov     @#100, -(SP)        ; сохраняем старые перехватчики
mov     @#102, -(SP)
mov     @#177340, -(SP)     ; сохраним настройки памяти
mov     @#177342, -(SP)
mov     @#177344, -(SP)
mov     @#177352, -(SP)
mov     @#177346, -(SP)


пояснение - вот это mov @#177352, -(SP) обеспечивает сохранение последней конфигурации памяти БК11М записанной в 177716

теперь мы хотим использовать память в окне 120000-137777
соответственно правильная последовательность действий
Код

mov     #14020,@#177716    ; отключим оперативку в верхнем окне в БК11М
bis     #6000,@#177340  ; дополнительно включим окна 120 130
bic     #6000,@#177342  ; выключм R/O если оно там было


поясню - #14020,@#177716 командует БК11М что ей надо отключить окно 1 и подключить внешнее ПЗУ, которого фактически нет и окно получается свободным для подключения туда оперативки AZБК
и вот только после этого мы явно активируем окна 120 130 !

такой подход обеспечит использование этого окна на абсолютно любой БК - вне зависимости от доработки окна 1

Если ПО работает со скролами - надо сбросить их на первоначальное значение или вообще вернуть их из стека если сохранение было
(это будет полезно для программ под RT11 тк там вертикальный скрол возможен в консоли)
Код

clr     @#177250            ; сбросим скролы на начальное значение
clr     @#177252            ; сбросим скролы на начальное значение


пример возврата из стека настроек
Код

; возврат настроек
mov     (SP)+,@#177346
mov     (SP)+,@#177716
mov     (SP)+,@#177344
mov     (SP)+,@#177342
mov     (SP)+,@#177340
mov     (SP)+,@#102
mov     (SP)+,@#100
mov     (SP)+,@#177326
mov     (SP)+,@#177324
mov     (SP)+,@#177232
mov     (SP)+,@#177230
JMP     @#100000





--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 22.6.2025, 5:15