; Константы и структуры данных для основного модуля и оверлея

; регистры AY
Y.CLKA=0
Y.CLKB=2
Y.CLKC=4
Y.NOIS=6
Y.MIXR=7
Y.AMPA=10
Y.AMPB=11
Y.AMPC=12
Y.PERD=13
Y.VPCK=15

AYLEN=16        ; длина области данных регистров AY
CHPLN=70        ; длина области данных канала

RMPAL1 = 5400   ; палитра рокмонитора
SEPAL1 = 6000   ; палитра редактора сэмплов
NPAGE = 114     ; регистр страниц.

E36BLP = 300    ; блок параметров емт 36
D10BUF = 300    ; текстовый буфер, где формируется 10чное число. 6 байтов
STACKH = 600    ; вершина стека
SAMCBP = 600    ; буфер блока параметров канала для редактора сэмплов, такой же как у плеера.
SAMAYB = SAMCBP + CHPLN ; буфер регистров AY для редактора сэмплов

; буфер параметров меню копирование и транспонирование BFCPTR
; порядок менять нельзя, т.к. я не совсем разобрался с функцией, в которой
; всё это используется, там сейчас числа вместо переменных
B.TRPT = 0      ; транспонирование, номер раздела
B.TRST = 2      ; транспонирование, число полутонов
B.TRFN = 4      ; транспонирование, номер первой ноты
B.TRLN = 6      ; транспонирование, номер последней ноты
B.CCHS = 10     ; копирование, каналы источника
B.CPTS = 12     ; копирование, номер раздела источника
B.CFNS = 14     ; копирование, номер первой ноты источника
B.CLNS = 16     ; копирование, номер последней ноты источника
B.CCHD = 20     ; копирование, каналы приёмника
B.CPTD = 22     ; копирование, номер раздела приёмника
B.CFND = 24     ; копирование, номер первой ноты приёмника
B.TRCH = 26     ; транспонирование, каналы

; структура блока параметров канала проигрывателя
; для проигрывателя блок параметров отличается от скомпилированного модуля
L.TMPT=0        ; (1) счётчик тиков = темп
L.TPSV=1        ; (1) текущий фрагмент громкости в сэмпле
L.TPSN=2        ; (1) текущий фрагмент шума в сэмпле
L.TPST=3        ; (1) текущий фрагмент тона в сэмпле
L.ASMP=4        ; (2) адрес текущего сэмпла
L.BCYV=6        ; (1) начальный фрагмент зацикливания громкости в сэмпле
L.ECYV=7        ; (1) конечный фрагмент зацикливания громкости в сэмпле
L.BCYN=10       ; (1) начальный фрагмент зацикливания шума в сэмпле
L.ECYN=11       ; (1) конечный фрагмент зацикливания шума в сэмпле
L.BCYT=12       ; (1) начальный фрагмент зацикливания тона в сэмпле
L.ECYT=13       ; (1) конечный фрагмент зацикливания тона в сэмпле
L.TSLV=14       ; (1) длительность звучания текущего фрагмента громкости
L.FLCV=15       ; (1) свободно / флаг плавного изменения громкости
L.DVLV=16       ; (2) приращение при плавном изменении громкости
L.CVLV=20       ; (2) текущее значение громкости в ст.байте
L.TSLN=22       ; (1) длительность звучания текущего фрагмента шума
L.FLCN=23       ; (1) свободно / флаг плавного изменения шума
L.DVLN=24       ; (2) приращение при плавном изменении шума
L.CVLN=26       ; (2) текущее значение шума в ст.байте
L.TSLT=30       ; (1) длительность звучания текущего фрагмента тона
L.FLCT=31       ; (1) флаг плавной смены тона
L.DVLT=32       ; (4) приращение при плавном изменении тона
L.CVLT=36       ; (4) текущее значение тона в ст.слове
L.PAUS=42       ; (1) флаг: 0 - нота, ^0 - пауза
L.NOTN=43       ; (1) номер текущей ноты
L.RVLV=44       ; (2) конечное значение громкости в ст.байте
L.RVLN=46       ; (2) конечное значение шума в ст.байте
L.RVLT=50       ; (2) конечное значение тона
L.ACHN=52       ; (2) адрес в голосе текущего раздела
L.BCHN=54       ; (2) начальный адрес текущего раздела
L.VPER=56       ; (1) период волнового пакета
L.VVAL=57       ; (1) приращение громкости
L.L1FR=60       ; (2) текущая длительность звучания фрагмента
L.ATTR=62       ; (1) атрибут ноты
; константы в блоках параметров канала, у каждого канала - своя константа
L.CNMT=63       ; (1) 1,2,4      ; маска тона в миксере, ; адрес регистра тона - потому что ячеек не хватает
L.CNMN=64       ; (1) 10,20,40   ; маска шума в миксере
L.CNOA=65       ; (1) 10,11,12   ; адрес регистра амплитуды
L.NDLT=66       ; (1) длительность звучания фрагмента
L.VPFM=67       ; (1) форма волнового пакета


; структура блока параметров канала компилируемого модуля
P.TMPT=0        ; (1) счётчик тиков = темп
P.TPSV=1        ; (1) текущий фрагмент громкости в сэмпле
P.TPSN=2        ; (1) текущий фрагмент шума в сэмпле
P.TPST=3        ; (1) текущий фрагмент тона в сэмпле
P.ASMP=4        ; (2) адрес текущего сэмпла
P.BCYV=6        ; (1) начальный фрагмент зацикливания громкости в сэмпле
P.BCYN=7        ; (1) начальный фрагмент зацикливания шума в сэмпле
P.BCYT=10       ; (1) начальный фрагмент зацикливания тона в сэмпле
P.ECYV=11       ; (1) конечный фрагмент зацикливания громкости в сэмпле
P.ECYN=12       ; (1) конечный фрагмент зацикливания шума в сэмпле
P.ECYT=13       ; (1) конечный фрагмент зацикливания тона в сэмпле
P.TSLV=14       ; (1) длительность звучания текущего фрагмента громкости
P.TSLN=15       ; (1) длительность звучания текущего фрагмента шума
P.DVLV=16       ; (2) приращение при плавном изменении громкости
P.CVLV=20       ; (2) текущее значение громкости в ст.байте
P.RVLV=22       ; (2) конечное значение громкости в ст.байте
P.DVLN=24       ; (2) приращение при плавном изменении шума
P.CVLN=26       ; (2) текущее значение шума в ст.байте
P.RVLN=30       ; (2) конечное значение шума в ст.байте
P.DVLT=32       ; (4) приращение при плавном изменении тона
P.CVLT=36       ; (4) текущее значение тона в ст.слове
P.PAUS=42       ; (1) флаг: 0 - нота, ^0 - пауза
P.NOTN=43       ; (1) номер текущей ноты
P.TSLT=44       ; (1) длительность звучания текущего фрагмента тона
P.VPFM=45       ; (1) форма волнового пакета
P.NDLT=46       ; (1) длительность звучания первого фрагмента
P.VOLP=47       ; (1) признак волпака (<0 - волпак, >=0 - нет)
P.RVLT=50       ; (2) конечное значение тона
P.ACHN=52       ; (2) адрес в голосе текущего паттерна
P.ENCN=54       ; (1) текущее количество пустых нот
P.ENNR=55       ; (1) количество пустых нот
P.VPER=56       ; (1) период волнового пакета
P.VVAL=57       ; (1) приращение громкости
P.L1FR=60       ; (2) текущая длительность звучания первого фрагмента
; константы в блоках параметров канала, у каждого канала - своя константа
P.CNOC=62       ; (1) 0,2,4  ; адрес регистра тона
P.CNMT=63       ; (1) 1,2,4  ; маска тона в миксере
P.CNMN=64       ; (1) 10,20,40   ; маска шума в миксере
P.CNOA=65       ; (1) 10,11,12   ; адрес регистра амплитуды
; если сместить константы в конец, начинаются необъяснимые искажения звука. почему, так и не выяснено.
