;LAST UPDATE: 12.09.2019 savelij
 
 
 
; создание таблицы смещений для автонастройки на адреса запуска
 
 
 
; инициализация переменной для генерации таблицы смещений
 
INIT_GETADR     MACRO NAME
 
NAME_DIGIT := 0
 
        IF MOMPASS = 1
 
NAME_DIGITMAX := NAME_DIGIT
 
        ENDIF
 
                ENDM
 
 
 
; генерация имени переменной для таблицы смещений
 
GETADR          MACRO NAME
 
$$dIgIt1 := CHARFROMSTR("\{NAME_DIGIT >> 12}",0)
 
$$dIgIt2 := CHARFROMSTR("\{NAME_DIGIT >> 8}",0)
 
$$dIgIt3 := CHARFROMSTR("\{NAME_DIGIT >> 4}",0)
 
$$dIgIt4 := CHARFROMSTR("\{NAME_DIGIT & 0X0F}",0)
 
$$dIgIt0 := "\{$$dIgIt1}\{$$dIgIt2}\{$$dIgIt3}\{$$dIgIt4}"
 
NAME_{$$dIgIt0} EQU $-2
 
NAME_DIGIT := NAME_DIGIT+1
 
        IF NAME_DIGITMAX < NAME_DIGIT
 
NAME_DIGITMAX := NAME_DIGITMAX + 1
 
        ENDIF
 
                ENDM
 
 
 
; генерация таблицы смещений
 
PUTADR          MACRO NAME
 
NAME_TMPDIGIT := 0
 
                REPT NAME_DIGITMAX
 
$$dIgIt1 := CHARFROMSTR("\{NAME_TMPDIGIT >> 12}",0)
 
$$dIgIt2 := CHARFROMSTR("\{NAME_TMPDIGIT >> 8}",0)
 
$$dIgIt3 := CHARFROMSTR("\{NAME_TMPDIGIT >> 4}",0)
 
$$dIgIt4 := CHARFROMSTR("\{NAME_TMPDIGIT & 0X0F}",0)
 
$$dIgIt0 := "\{$$dIgIt1}\{$$dIgIt2}\{$$dIgIt3}\{$$dIgIt4}"
 
                DW NAME_{$$dIgIt0}
 
NAME_TMPDIGIT := NAME_TMPDIGIT+1
 
                ENDM
 
                ENDM